kone
소미소프트

소미소프트

히토미 다운로더용 케모노 다운로드 스크립트

08/08/2025, 17:39:36
유틸
19646 views · 20 likes

얼마전 케모노 주소가 변경되면서 기존 히토미 다운로더 개발자의 케모노용 스크립트가 동작하지 않길래 간단하게 수정해봄

원 개발자가 바쁜지 히토미 다운로더 업데이트가 좀 늦는감이 있는데 어쩔수 있나 목마른놈이 우물 파야지



aHR0cHM6Ly9raW8uYWMvYy9ib2JNTmdFTExETnZiWVlSY19JUEdi



키오에 파일 두개 업로드 했는데, 두개는 같은거고 브라우저나 안티바이러스가 의심파일이라며 다운로드 거절하는 경우가 있어서 두개 올림


변경점은 hds용 시그니쳐 삭제, 케모노 cr 도메인 추가 끝


귀찮으면 아래 코드 복사해서 플러그인 추가 해도 됨




#coding: utf8
#title: Kemono.Party 추가
#title_en: Add Kemono.Party
#comment: https://kemono.party
#author: Kurt Bestor


import downloader
from utils import Downloader, Session, Soup, LazyUrl, urljoin, get_ext, clean_title, get_print, print_error
import clf2
from translator import tr_
from ratelimit import limits, sleep_and_retry



class Image:

    def __init__(self, url, referer, p):
        self._url = url
        self._p = p
        self.url = LazyUrl(referer, self.get, self)

    @sleep_and_retry
    @limits(1, 5)
    def get(self, _):
        ext = get_ext(self._url) or downloader.get_ext(self._url)
        self.filename = '{:04}{}'.format(self._p, ext)
        return self._url


@Downloader.register
class Downloader_kemonoparty(Downloader):
    type = 'kemono.party'
    URLS = ['kemono.party', 'kemono.su', 'kemono.cr']
    icon = 'base64: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'
    display_name = 'Kemono.Party'
    MAX_CORE = 4

    def read(self):
        self.session = Session()

        info = read_info(self.url, self.session, self.cw)

        type_ = info['type']
        if type_ == 'post':
            for img in info['imgs']:
                self.urls.append(img.url)
            self.title = info['title']
        else:
            raise NotImplementedError(type_)


def read_info(url, session, cw):
    print_ = get_print(cw)
    info = {}
    if '/post/' in url:
        type_ = 'post'
    else:
        raise NotImplementedError('Not a post')
    info['type'] = type_
    res = clf2.solve(url, session=session, cw=cw)

    soup = Soup(res['html'])
    info_ = read_post(url, soup, cw)

    info['imgs'] = info_['imgs']
    tail = ' (kemono.party_{}_{})'.format(type_, info_['id'])
    info['title'] = '{}{}'.format(clean_title(info_['title'], allow_dot=True, n=-len(tail)), tail)
    return info


def read_post(url, soup, cw):
    print_ = get_print(cw)
    info = {}
    info['title'] = soup.find('h1').text
    info['id'] = soup.find('meta', {'name': 'id'})['content']
    
    imgs = []

    # Downloads
    for item in soup.findAll('li', class_='post__attachment'):
        href = urljoin(url, item.find('a')['href'])
        img = Image(href, url, len(imgs))
        imgs.append(img)

    # Files
    files = soup.find('div', class_='post__files')
    if files:
        for item in files.findChildren(recursive=False):
            if 'href' in item.attrs:
                a = item
            else:
                a = item.find('a')
            href = urljoin(url, a['href'])

            # Imgur
            if 'imgur.com/' in href:
                print_('Imgur: {}'.format(href))
                try:
                    from extractor import imgur_downloader
                    for img in imgur_downloader.get_imgs(href):
                        img = Image(img, href, len(imgs))
                        imgs.append(img)
                except Exception as e:
                    print_(print_error(e))
                continue

            img = Image(href, url, len(imgs))
            imgs.append(img)

    # Content
    content = soup.find('div', class_='post__content')
    if content:
        for img in content.findAll('img'):
            src = urljoin(url, img['src'])
            img = Image(src, url, len(imgs))
            imgs.append(img)

    info['imgs'] = imgs
    return info


messageBox(u'{}: Kemono.Party'.format(tr_(u'사이트를 추가했습니다')))
20
18 comments
08/08/25 Edited 08/08/25
와 감사합니다. 일일이 하나씩 받고있었는데
08/08/25
url 형식만 바뀐겨?
케모노꺼까지 와우
08/09/25
호옥쉬 coo로 시작하는 비슷한 사이트도 만들어줄수있어?
08/09/25
그쪽은 개발자 공식 스크립트는 없는거같은데 아래에 누가 올려준 스크립트쓰셈
08/10/25
이거 히토미 다운로더 이와라도 다운 가능했었던가?
08/29/25
ㅇㅇ 근데 쿠기 파일 같은거 수동으로 넣어주고 했었었음 로그인 안하면 제한걸려서 그랬던가
08/29/25
놓쳤는데 연장가능? ㅠ
08/30/25
위에 소스코드 복사해서 탐색기에서 빈 텍스트 파일 만들고 붙여넣기 한다음 저장 kemono.py 로 이름 바꾸기
09/09/25
복붙하고 py로 하고 적용했는데 invalid오류뜸.... dns우회해도 안되고...머가문제지
09/10/25
방금 다시 테스트해봄 잘됨 플러그인에 다른 기존 스크립트랑 충돌나는건지 확인해보고 스크립트 빼고 몇번 껏다 켯다해보고 다시 추가해보셈
09/16/25
원래 한 작가 전체작품도 다운가능하지 않았음? 하나씩은 다운되는데 전체는 invalid 뜨네 오류인가.....?
09/16/25
다운로더 원제작자가 아니라 다른사람꺼 쓰신듯 난 원제작자꺼 살짝 수정한거라 원래 기능엔 변함이없음
09/16/25
해결은 못했는데 비슷하게는 했습니당 감사합니다
09/17/25
어떻게 해결함?
09/17/25 Edited 09/17/25
09/20/25
감사감사 CR 도메인때문에 못하고있었는데 덕분에 해결함
12/05/25 Edited 12/05/25
혹시 discord에서 이미지 다운하는 스크립트도 제작 부탁드릴수있을까요 post에서는 정상 작동하는데 discord에서는 안되네요 ㅠㅠ 어떻게 한번 해보려고 이래저래 수정해서 읽기까지는 되는데 결국 이미지 파일 못찾고 끝나네요 ㅠㅠ
RPG MV 치트 플러그인 개조 버전 v2.1
유틸
4HHHH
07/19/25 21905 30
[노모이미지파일만] 카바씨네의 즐거운 투병 생활UC
유틸
미스터장
07/17/25 9169 23
goodbyedpi
유틸
unkown453645
07/15/25 6332 23
로케일 에뮬
유틸
unkown453645
07/15/25 4960 15
드래곤 콩키스타 스탠딩 일러스트 가슴 흔들림 모드 번역
유틸
미스터장
07/11/25 11511 49
다키스트 세일 기념 NSFW 스킨/모드
유틸
삐뉴
07/11/25 8369 27
한여름의 절정 캐릭터 공유2
유틸
mola245
07/10/25 11315 30
한여름의 절정 공홈에서 퍼온 캐릭터카드
유틸
ㅇㅇ
07/05/25 8099 15
[2026-01-11] 히토미 다운로더 코네용
유틸
kts
07/03/25 22690 66
Sexbound(스타바운드)통팩 V0.2 ,Lustiest Lair 1.6 메가-커스텀 팩(2025.09.30까지)
유틸
파에톤1호팬
07/02/25 15300 24
[업뎃] base64 자동 복호화 1.4.15
유틸
arcjay
07/01/25 18764 35
[복구]+@ 시니시스타 2 모드 모음(1.07)
유틸
sims9876
06/29/25 38316 39
[업뎃] base64 자동복호화
유틸
arcjay
06/15/25 16464 29
[유틸] [노모] 비밀 노출 -배덕의 달콤함에 물든 마나카- 노모패치 v1.0.0.6
유틸
Ghost
06/15/25 14354 15
업뎃) 스텔라블레이드 릴리 누드모드
유틸
konekat
06/14/25 18603 65
[업뎃알림] 오토소미
유틸
김머시기
06/12/25 11201 34
야식메뉴판 업뎃해옴 - 2.0.0
유틸
qqoro
06/12/25 13895 70
RPGMVP 파일을 포토샵으로 열고 수정하고 저장하장!!!!!!!!!!!!!!!!
유틸
moomin
06/12/25 5085 17
코네 유저 메모 및 차단 스크립트
유틸
글쓴이
06/11/25 6503 17
[노모패치] 졸린 유대감 ver.1.2.1
유틸
77777
06/10/25 10325 29
시니시스타 2 모드 모음
유틸
sims9876
06/09/25 12602 33
시니시스타2 알몸폭유모드
유틸
ㅇㅇ
06/08/25 13674 37
히토미 다운로더용 kone 이미지 일괄 다운로드 스크립트
유틸
글쓴이
06/08/25 7740 31
메스가키 새여동생♡낮져밤져 유혹섹활 AI노모
유틸
물크스
06/08/25 10011 77
(긴급!)유니티 제미니 AI 자동번역 딜레이 대폭수정및 검열회피(반드시 새로 받아야함)
유틸
알탕
06/05/25 15559 33
유니티 (AutoTranslator) 제미니 AI번역기 무료 API 다중추가 삽입및 번역 재시도 기능 추가
유틸
알탕
06/04/25 9373 23
[업뎃] Auto Somi 자동 국룰입력/복호화/다운로드/미리보기 등
유틸
김머시기
06/04/25 15183 53
(수정) 유니티 자동번역기(autotranslator) 제미니 ai (Gemini) 번역하기 풀세트
유틸
알탕
06/02/25 38585 87
[업뎃] Auto 소미 XSS보안 업데이트
유틸
김머시기
05/27/25 11534 52
코네 미리보기 / 갤러리 뷰
유틸
mowajelly
05/25/25 8636 23