^q^
This commit is contained in:
parent
eb76f6814a
commit
01e41d0f17
|
@ -16,13 +16,13 @@ class File(object):
|
|||
thumb = None
|
||||
|
||||
def __init__(self, type, url, title, referer, p=0, multi_post=False):
|
||||
id_ = re.find('videos/([0-9a-zA-Z_-]+)', referer, err='no video id')
|
||||
self.type = type
|
||||
self.url = LazyUrl(referer, lambda _: url, self)
|
||||
ext = os.path.splitext(url.split('?')[0])[1]
|
||||
if ext.lower() == '.php':
|
||||
ext = '.mp4'
|
||||
if type == 'video':
|
||||
id_ = re.find('videos/([0-9a-zA-Z_-]+)', referer, err='no video id')
|
||||
self.filename = format_filename(title, id_, ext) #4287
|
||||
elif type == 'image':
|
||||
name = '{}_p{}'.format(clean_title(title), p) if multi_post else p
|
||||
|
|
|
@ -103,7 +103,12 @@ def get_info(url, soup=None, cw=None):
|
|||
if button:
|
||||
print('decompose button')
|
||||
button.decompose()
|
||||
catch = desc.find('span', id='catchphrase-body').text.strip()
|
||||
catch = desc.find('span', id='catchphrase-body')
|
||||
if catch is None: #4445
|
||||
print_('no catch')
|
||||
catch = ''
|
||||
else:
|
||||
catch = catch.text.strip()
|
||||
intro = desc.find('p', id='introduction')
|
||||
if intro is None: #4262
|
||||
print_('no intro')
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#coding:utf8
|
||||
import downloader
|
||||
import requests
|
||||
from utils import Soup, Downloader, LazyUrl, urljoin, try_n, get_outdir, clean_title
|
||||
import ree as re
|
||||
import os
|
||||
|
@ -47,27 +46,27 @@ class Downloader_luscious(Downloader):
|
|||
return url
|
||||
|
||||
def read(self):
|
||||
url = fix_url(self.url)
|
||||
for try_ in range(8):
|
||||
try:
|
||||
html = requests.get(url).text
|
||||
html = downloader.read_html(self.url)
|
||||
break
|
||||
except Exception as e:
|
||||
print(e)
|
||||
e_ = e
|
||||
self.print_error(e)
|
||||
self.print_('retry...')
|
||||
else:
|
||||
raise
|
||||
raise e_
|
||||
soup = Soup(html)
|
||||
title = clean_title(get_title(soup))
|
||||
|
||||
self.title = tr_(u'읽는 중... {}').format(title)
|
||||
|
||||
if '/videos/' in url:
|
||||
video = get_video(url, soup)
|
||||
if '/videos/' in self.url:
|
||||
video = get_video(self.url, soup)
|
||||
imgs = [video]
|
||||
self.setIcon(video.thumb)
|
||||
else:
|
||||
imgs = get_imgs(url, soup, self.cw)
|
||||
imgs = get_imgs(self.url, soup, self.cw)
|
||||
|
||||
dir = os.path.join(get_outdir(self.type), title)
|
||||
names = {}
|
||||
|
@ -89,18 +88,13 @@ class Downloader_luscious(Downloader):
|
|||
|
||||
|
||||
def update(cw, title, imgs):
|
||||
s = u'{} {} ({})'.format(tr_(u'읽는 중...'), title, len(imgs))
|
||||
s = u'{} {} - {}'.format(tr_(u'읽는 중...'), title, len(imgs))
|
||||
if cw is not None:
|
||||
cw.setTitle(s)
|
||||
else:
|
||||
print(s)
|
||||
|
||||
def fix_url(url):
|
||||
url = re.sub(r'[^./]+\.luscious', 'legacy.luscious', url)
|
||||
return url
|
||||
|
||||
def get_imgs(url, soup=None, cw=None):
|
||||
url = fix_url(url)
|
||||
if soup is None:
|
||||
html = downloader.read_html(url)
|
||||
soup = Soup(html)
|
||||
|
@ -143,4 +137,4 @@ def get_video(url, soup):
|
|||
|
||||
|
||||
def get_title(soup):
|
||||
return soup.find('h2').text.strip()
|
||||
return soup.find('h1').text.strip()
|
||||
|
|
|
@ -93,11 +93,10 @@ def get_artist(soup):
|
|||
if artist:
|
||||
return artist.text.strip()
|
||||
else:
|
||||
artist = re.find(r'"author" *: *(".+?")', soup.html)
|
||||
artist = re.find(r'"author" *: *(".*?")', soup.html) # 4389
|
||||
if artist:
|
||||
return json.loads(artist)
|
||||
else:
|
||||
return 'N/A'
|
||||
artist = json.loads(artist)
|
||||
return artist or None
|
||||
|
||||
|
||||
def get_pages(soup, url):
|
||||
|
|
|
@ -14,7 +14,6 @@ from ratelimit import limits, sleep_and_retry
|
|||
class Downloader_wayback_machine(Downloader):
|
||||
type = 'waybackmachine'
|
||||
URLS = ['archive.org', 'web.archive.org']
|
||||
icon = 'https://archive.org/offshoot_assets/favicon.ico'
|
||||
display_name = 'Wayback Machine'
|
||||
|
||||
def read(self):
|
||||
|
|
|
@ -5,6 +5,9 @@ from constants import try_n
|
|||
import ree as re
|
||||
from m3u8_tools import playlist2stream
|
||||
from translator import tr_
|
||||
import json
|
||||
from timee import sleep
|
||||
from ratelimit import limits, sleep_and_retry
|
||||
CHANNEL_PATTERN = r'/(profiles|[^/]*channels)/([0-9a-zA-Z_]+)'
|
||||
|
||||
|
||||
|
@ -19,26 +22,39 @@ class Video(object):
|
|||
_url = None
|
||||
|
||||
def __init__(self, url_page):
|
||||
url_page = Downloader_xvideo.fix_url(url_page)
|
||||
self.url = LazyUrl(url_page, self.get, self)
|
||||
|
||||
@try_n(4)
|
||||
def get(self, url_page):
|
||||
if not self._url:
|
||||
id = get_id(url_page)
|
||||
html = downloader.read_html(url_page)
|
||||
soup = Soup(html)
|
||||
self.title = html_unescape(soup.find('title').text).replace('- XVIDEOS.COM', '').strip()
|
||||
url = re.find(r'''.setVideoHLS\(['"](.+?)['"]\)''', html)
|
||||
ext = get_ext(url)
|
||||
if ext.lower() == '.m3u8':
|
||||
url = playlist2stream(url, n_thread=5)
|
||||
url_thumb = soup.find('meta', {'property': 'og:image'}).attrs['content']
|
||||
self.thumb = BytesIO()
|
||||
downloader.download(url_thumb, buffer=self.thumb)
|
||||
self.filename = format_filename(self.title, id, '.mp4')
|
||||
self._url= url
|
||||
self._get(url_page)
|
||||
return self._url
|
||||
|
||||
@try_n(4)
|
||||
@sleep_and_retry
|
||||
@limits(1, 2)
|
||||
def _get(self, url_page):
|
||||
id = get_id(url_page)
|
||||
html = downloader.read_html(url_page)
|
||||
soup = Soup(html)
|
||||
self.title = html_unescape(soup.find('title').text).replace('- XVIDEOS.COM', '').strip()
|
||||
url = re.find(r'''.setVideoHLS\(['"](.+?)['"]\)''', html) or re.find(r'''.setVideoUrlLow\(['"](.+?)['"]\)''', html) #https://www.xvideos.com/video65390539/party_night
|
||||
if not url:
|
||||
raise Exception('no video url')
|
||||
ext = get_ext(url)
|
||||
if ext.lower() == '.m3u8':
|
||||
url = playlist2stream(url, n_thread=5)
|
||||
self.url_thumb = soup.find('meta', {'property': 'og:image'}).attrs['content']
|
||||
self.filename = format_filename(self.title, id, '.mp4')
|
||||
self._url= url
|
||||
|
||||
@property
|
||||
def thumb(self):
|
||||
self.url()
|
||||
f = BytesIO()
|
||||
downloader.download(self.url_thumb, buffer=f)
|
||||
return f
|
||||
|
||||
|
||||
|
||||
@Downloader.register
|
||||
|
@ -57,6 +73,7 @@ class Downloader_xvideo(Downloader):
|
|||
@classmethod
|
||||
def fix_url(cls, url):
|
||||
url = re.sub(r'[^/]*xvideos[0-9]*\.[^/]+', 'www.xvideos.com', url).replace('http://', 'https://')
|
||||
url = url.replace('/THUMBNUM/', '/')
|
||||
return url
|
||||
|
||||
@classmethod
|
||||
|
@ -77,9 +94,9 @@ class Downloader_xvideo(Downloader):
|
|||
video = Video(self.url)
|
||||
video.url()
|
||||
self.title = video.title
|
||||
self.urls.append(video.url)
|
||||
|
||||
self.setIcon(video.thumb)
|
||||
self.urls.append(video.url)
|
||||
|
||||
|
||||
def read_channel(url_page, cw=None):
|
||||
|
@ -95,38 +112,41 @@ def read_channel(url_page, cw=None):
|
|||
info['username'] = username
|
||||
session = Session()
|
||||
urls = []
|
||||
urls_set = set()
|
||||
ids = set()
|
||||
for p in range(100):
|
||||
url_api = urljoin(url_page, '/{}/{}/videos/best/{}'.format(header, username, p))
|
||||
print(url_api)
|
||||
r = session.post(url_api, data='main_cats=false')
|
||||
soup = Soup(r.text)
|
||||
thumbs = soup.findAll('div', class_='thumb-block')
|
||||
if not thumbs:
|
||||
print_(url_api)
|
||||
r = session.post(url_api)
|
||||
data = json.loads(r.text)
|
||||
|
||||
videos = data['videos']
|
||||
if not videos:
|
||||
print_('empty')
|
||||
break
|
||||
for thumb in thumbs:
|
||||
info['name'] = thumb.find('span', class_='name').text.strip()
|
||||
href = thumb.find('a')['href']
|
||||
href = urljoin(url_page, href)
|
||||
if href in urls_set:
|
||||
print_('duplicate: {}'.format(href))
|
||||
|
||||
for video in videos:
|
||||
id_ = video['id']
|
||||
if id_ in ids:
|
||||
print_('duplicate: {}'.format(id_))
|
||||
continue
|
||||
urls_set.add(href)
|
||||
urls.append(href)
|
||||
ids.add(id_)
|
||||
info['name'] = video['pn']
|
||||
urls.append(urljoin(url_page, video['u']))
|
||||
|
||||
if len(urls) >= max_pid:
|
||||
break
|
||||
|
||||
n = data['nb_videos']
|
||||
|
||||
s = '{} {} - {}'.format(tr_('읽는 중...'), info['name'], len(urls))
|
||||
if cw:
|
||||
if not cw.alive:
|
||||
return
|
||||
cw.setTitle(s)
|
||||
else:
|
||||
print(s)
|
||||
if len(ids) >= n:
|
||||
break
|
||||
sleep(1, cw)
|
||||
if not urls:
|
||||
raise Exception('no videos')
|
||||
info['urls'] = urls[:max_pid]
|
||||
return info
|
||||
|
||||
|
|
|
@ -0,0 +1,295 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
{head}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p align="right"><br></p>
|
||||
<h1 align="center">How to use</h1>
|
||||
<p align="right">{date}</p>
|
||||
<br>
|
||||
|
||||
<h3>Supported sites</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/KurtBestor/Hitomi-Downloader#supported-sites">https://github.com/KurtBestor/Hitomi-Downloader#supported-sites</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Address bar</h3>
|
||||
<ul>
|
||||
<li>Type some URLs into the address bar and click the Download button to download</li>
|
||||
<li>Examples:<br>
|
||||
https://hitomi.la/galleries/123.html<br>
|
||||
https://hitomi.la/reader/123.html<br>
|
||||
https://e-hentai.org/g/123/356dfa74ce/<br>
|
||||
https://e-hentai.org/s/600e752112/123-4<br>
|
||||
https://hiyobi.me/reader/123<br>
|
||||
123<br>
|
||||
<br>
|
||||
https://www.pixiv.net/users/11<br>
|
||||
https://www.pixiv.net/member_illust.php?id=11<br>
|
||||
https://pixiv.me/pixiv<br>
|
||||
pixiv_11<br>
|
||||
<br>
|
||||
https://twitter.com/TensorFlow<br>
|
||||
@TensorFlow<br>
|
||||
<br>
|
||||
https://www.instagram.com/user_name<br>
|
||||
insta_user_name<br>
|
||||
<br>
|
||||
https://username.deviantart.com<br>
|
||||
deviant_username
|
||||
</li>
|
||||
<li>Examples for multiple URLs:<br>
|
||||
123, 125, 126<br>
|
||||
123 125 126
|
||||
</li>
|
||||
<li>Numbers not in Hitomi.la are automatically converted to E(x)Hentai URL.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Save</h3>
|
||||
<ul>
|
||||
<li>Save the preferences and tasks currently added.</li>
|
||||
<li>File - Save</li>
|
||||
<li>[Ctrl + S] key</li>
|
||||
</ul>
|
||||
|
||||
<h3>Searcher</h3>
|
||||
<ul>
|
||||
<li>Search galleries</li>
|
||||
<li>Menu - Searcher...</li>
|
||||
<li>[Ctrl + F] key</li>
|
||||
</ul>
|
||||
|
||||
<h3>Downloader tasks</h3>
|
||||
<ul>
|
||||
<li>Open the first file:<br>
|
||||
Mouse right-click → [Open the first file]<br>
|
||||
Click thumbnail<br>
|
||||
Double-click<br>
|
||||
[Enter] key
|
||||
</li>
|
||||
<li>Remove multiple tasks:<br>
|
||||
Select multiple tasks → [Del] key
|
||||
</li>
|
||||
<li>Delete multiple files:<br>
|
||||
Select multiple tasks → Mouse right-click → [Delete files]<br>
|
||||
Select multiple tasks → [Shift] + [Del] key
|
||||
</li>
|
||||
<li>Remove all complete tasks:<br>
|
||||
Mouse right-click → [Remove all complete tasks]<br>
|
||||
Remove all complete tasks which are not locked.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Task colors</h3>
|
||||
<ul>
|
||||
<li>Light gray: Wating or Reading</li>
|
||||
<li>Dark gray: Downloading</li>
|
||||
<li>Green: Downloaded completely</li>
|
||||
<li>Orange: Downloaded incompletely</li>
|
||||
<li> Red: Fail or Invalid</li>
|
||||
</ul>
|
||||
|
||||
<h3>Change the order of tasks</h3>
|
||||
<ul>
|
||||
<li>Drag and drop with the mouse wheel button to change the order.</li>
|
||||
<li>Following commands are also working: [Ctrl + ↑], [Ctrl + ↓], [Ctrl + Home], [Ctrl + End].</li>
|
||||
</ul>
|
||||
|
||||
<h3>Filtering the List of tasks</h3>
|
||||
<ul>
|
||||
<li>Click the filter icon at the bottom left of the downloader window and type.</li>
|
||||
<li>Only tasks with a title that contains that word are visible.</li>
|
||||
<li>You can also filter by type, such as "type:youtube".</li>
|
||||
<li>If you type "dup:", you will see only duplicate tasks.</li>
|
||||
<li>Type "rem:" to see only the tasks that have been deleted from the physical storage.</li>
|
||||
<li>You can filter by tags such as "tag:glasses".</li>
|
||||
<li>You can filter by comments, such as "comment:xxxx".</li>
|
||||
<li>Type "bad:" to show only incomplete tasks.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Searcher 검색 목록 필터링</h3>
|
||||
<ul>
|
||||
<li>Searcher 좌측 하단의 필터 모양 아이콘을 클릭하고 내용 입력</li>
|
||||
<li>해당 문자가 포함된 제목, 작가, 그룹, 태그, 언어를 가진 갤러리만 보입니다.</li>
|
||||
<li>"title:A" 를 입력하면 A라는 문자가 포함된 제목을 가진 갤러리만 보입니다.</li>
|
||||
<li>"artist:A", "group:A", "tag:A", "lang:A" 과 같이 필터링 할 수도 있습니다.</li>
|
||||
<li>"p<100" 을 입력하면 100 페이지 미만인 갤러리만 보입니다.</li>
|
||||
<li>"p>100" 을 입력하면 100 페이지 초과인 갤러리만 보입니다.</li>
|
||||
<li>"done:o" 를 입력하면 이미 다운로드한 갤러리만 보입니다.</li>
|
||||
<li>"done:x" 를 입력하면 아직 다운로드하지 않은 갤러리만 보입니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>페이지 지정 다운로드</h3>
|
||||
<ul>
|
||||
<p><img src=":/icons/down_menu" /></p>
|
||||
<li>지정한 페이지만 다운로드합니다.</li>
|
||||
<li>Examples:<br>
|
||||
~ 100 → 앞 100 페이지<br>
|
||||
-100 ~ → 뒤 100 페이지<br>
|
||||
1, 10 ~ 20, -1 → 첫 페이지, 10 ~ 20 페이지, 마지막 페이지</li>
|
||||
</ul>
|
||||
|
||||
<h3>선택 화 다운로드</h3>
|
||||
<ul>
|
||||
<p><img src=":/icons/down_menu_chapter" /></p>
|
||||
<li>선택한 화만 다운로드합니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>환경 설정</h3>
|
||||
<ul>
|
||||
<li>옵션 → 설정 (Preferences...)</li>
|
||||
</ul>
|
||||
|
||||
<h3>스레드</h3>
|
||||
<ul>
|
||||
<li>한 작업 당 동시 다운로드 수.</li>
|
||||
<li>컴퓨터 사양이나 인터넷 상태가 좋지 않다면 갯수를 좀 더 내립니다.</li>
|
||||
<li>어떻게 설정해야 할지 잘 모르겠으면 그대로 두면 됩니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>간단 검색 - 검색어</h3>
|
||||
<ul>
|
||||
<li>구글 검색하듯이 검색하면 됩니다.</li>
|
||||
<li>예시 :<br>
|
||||
maid<br>
|
||||
maid glasses korean<br>
|
||||
maid -schoolgirl<br>
|
||||
maid n/a<br>
|
||||
maid (korean + n/a)</li>
|
||||
</ul>
|
||||
|
||||
<h3>고급 검색 - 제목 (Title)</h3>
|
||||
<ul>
|
||||
<li>예시 :<br>
|
||||
maid<br>
|
||||
maid -schoolgirl<br>
|
||||
maid glasses</li>
|
||||
</ul>
|
||||
|
||||
<h3>고급 검색 - 작가 (Artists)</h3>
|
||||
<ul>
|
||||
<li>예시 :<br>
|
||||
sekiya asami<br>
|
||||
sekiya asami + amezawa koma</li>
|
||||
</ul>
|
||||
|
||||
<h3>고급 검색 - 캐릭터 (Characters)</h3>
|
||||
<ul>
|
||||
<li>예시 :<br>
|
||||
chino kafuu<br>
|
||||
chino kafuu + kokoa hoto<br>
|
||||
hino kafuu, kokoa hoto</li>
|
||||
</ul>
|
||||
|
||||
<h3>고급 검색 - 태그 (Tags)</h3>
|
||||
<ul>
|
||||
<li>예시 :<br>
|
||||
female:maid<br>
|
||||
female:maid, -female:schoolgirl uniform</li>
|
||||
</ul>
|
||||
|
||||
<h3>Searcher 목록</h3>
|
||||
<ul>
|
||||
<li>여러 갤러리 다운로드 :<br>
|
||||
여러 개 선택 → 마우스 우클릭 → [다운로드]<br>
|
||||
여러 개 선택 → [Enter] key</li>
|
||||
|
||||
<li>갤러리 정보 보기 :<br>
|
||||
마우스 우 클릭 → 갤러리 정보...<br>
|
||||
Click thumbnail</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>검색 중 중단</h3>
|
||||
<ul>
|
||||
<li>검색 버튼 한번 더 클릭</li>
|
||||
</ul>
|
||||
|
||||
<h3>파일이 제대로 다운로드 되지 않는 경우 (체크섬 오프로드 문제)</h3>
|
||||
<ul>
|
||||
<li>권장 (속도 떨어짐) :<br>
|
||||
스레드 갯수를 낮게 조절합니다.</li>
|
||||
<li>비권장 (속도 떨어지지 않음, 보안 문제 발생 가능) :<br>
|
||||
제어판 → 시스템 → 하드웨어 → 장치관리자 → 네트워크 어댑터 → 무슨무슨 컨트롤러 → 우클릭 후 속성 → 고급 탭 → 무슨무슨 오프로드를 모두 '사용 안 함'으로 설정 → 확인<br>
|
||||
조금 기다리면 인터넷이 다시 연결됩니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Searcher 검색 데이터 업데이트</h3>
|
||||
<ul>
|
||||
<li>Searcher - 메뉴 - 데이터 다운로드...</li>
|
||||
<li>데이터를 다시 다운로드할 때마다 서버에서 최신 데이터를 가져옵니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>스크립트</h3>
|
||||
<ul>
|
||||
<li>메뉴 - 스크립트 가져오기...</li>
|
||||
<li>파이썬 스크립트를 실행합니다.</li>
|
||||
<li>다운로드 스크립트를 직접 만들어 추가하는 등 다양한 작업을 할 수 있습니다.</li>
|
||||
<li>스크립트 파일 (*.hds) 은 텍스트에디터(메모장 등)로 수정할 수 있습니다.</li>
|
||||
<li>스크립트 파일들을 프로그램에 드래그 & 드랍해서 실행시킬 수도 있습니다.</li>
|
||||
<li>실행파일 경로에 scripts 폴더 만들고 스크립트 파일 (*.hds) 넣으면 시작할 때 자동으로 실행합니다.</li>
|
||||
<li>스크립트 다운로드 :<br>
|
||||
<a href="https://github.com/KurtBestor/Hitomi-Downloader/wiki/Scripts">https://github.com/KurtBestor/Hitomi-Downloader/wiki/Scripts</a></li>
|
||||
<li>스크립트 작성 방법 :<br>
|
||||
<a href="https://github.com/KurtBestor/Hitomi-Downloader/wiki/How-to-write-a-script">https://github.com/KurtBestor/Hitomi-Downloader/wiki/How-to-write-a-script</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>DPI 우회</h3>
|
||||
<ul>
|
||||
<li>옵션 - 설정 - 고급 설정 - DPI 우회</li>
|
||||
<li><a href="https://github.com/ValdikSS/GoodbyeDPI">GoodbyeDPI</a>를 이용해서 DPI 차단 / 우회를 합니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Load cookies</h3>
|
||||
<ul>
|
||||
<li>Options - Preferences - Advanced Setting - Cookies - Load...</li>
|
||||
<li>Cookies exported from browser extensions can be loaded. (Netscape HTTP Cookie File)</li>
|
||||
<li>Using these cookies, Hitomi Downloader can access login-required pages.</li>
|
||||
<li>Chrome extension: <a href="https://chrome.google.com/webstore/detail/cookiestxt/njabckikapfpffapmjgojcnbfjonfjfg">cookies.txt</a>, <a href="https://chrome.google.com/webstore/detail/get-cookiestxt/bgaddhkoddajcdgocldbbfleckgcbcid">Get cookies.txt</a></li>
|
||||
<li>Firefox extension: <a href="https://addons.mozilla.org/en-US/firefox/addon/cookies-txt/">cookies.txt</a>
|
||||
<li>Expired cookies are shown in gray.</li>
|
||||
</ul>
|
||||
|
||||
<h3>크롬 확장 프로그램</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/KurtBestor/Hitomi-Downloader/wiki/Chrome-Extension">Hitomi Downloader</a></li>
|
||||
<li>기능:<br>
|
||||
확장프로그램이 필요한 사이트의 다운로드<br>
|
||||
쿠key 업데이트
|
||||
</ul>
|
||||
|
||||
<h3>Save</h3>
|
||||
<ul>
|
||||
<li>Save & Quit :<br>
|
||||
Quit with saving settings and currently added lists</li>
|
||||
<li>Quit :<br>
|
||||
Quit without saving</li>
|
||||
<li>When launching the app, it starts with the most recent saved state.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Shortcuts</h3>
|
||||
<ul>
|
||||
<li>Alt + D : 주소바 ↔ 작업 목록 전환</li>
|
||||
<li>Ctrl + 1 ~ 7 : 작업에 태그 표시</li>
|
||||
<li>Ctrl + Tab : 도구창 숨기기</li>
|
||||
<li>Ctrl + - / + : 썸네일 크기 조절</li>
|
||||
<li>Ctrl + 스크롤 : 썸네일 크기 조절</li>
|
||||
<li>Space : 그룹 열고 닫기</li>
|
||||
</ul>
|
||||
|
||||
<h3>Feedback</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/KurtBestor/Hitomi-Downloader/issues">https://github.com/KurtBestor/Hitomi-Downloader/issues</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Etc.</h3>
|
||||
<ul>
|
||||
<li>Please use the downloaded files for personal use only.</li>
|
||||
<li>Please look for further updates at Help - About - Bottom button.</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,295 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
{head}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p align="right"><br></p>
|
||||
<h1 align="center">사용법</h1>
|
||||
<p align="right">{date}</p>
|
||||
<br>
|
||||
|
||||
<h3>지원 사이트</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/KurtBestor/Hitomi-Downloader#supported-sites">https://github.com/KurtBestor/Hitomi-Downloader#supported-sites</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>주소 바</h3>
|
||||
<ul>
|
||||
<li>주소를 입력하고 다운로드 버튼을 눌러 다운로드 합니다.</li>
|
||||
<li>예시:<br>
|
||||
https://hitomi.la/galleries/123.html<br>
|
||||
https://hitomi.la/reader/123.html<br>
|
||||
https://e-hentai.org/g/123/356dfa74ce/<br>
|
||||
https://e-hentai.org/s/600e752112/123-4<br>
|
||||
https://hiyobi.me/reader/123<br>
|
||||
123<br>
|
||||
<br>
|
||||
https://www.pixiv.net/users/11<br>
|
||||
https://www.pixiv.net/member_illust.php?id=11<br>
|
||||
https://pixiv.me/pixiv<br>
|
||||
pixiv_11<br>
|
||||
<br>
|
||||
https://twitter.com/TensorFlow<br>
|
||||
@TensorFlow<br>
|
||||
<br>
|
||||
https://www.instagram.com/user_name<br>
|
||||
insta_user_name<br>
|
||||
<br>
|
||||
https://username.deviantart.com<br>
|
||||
deviant_username
|
||||
</li>
|
||||
<li>여러 주소 추가 예시:<br>
|
||||
123, 125, 126<br>
|
||||
123 125 126
|
||||
</li>
|
||||
<li>히토미에 없는 번호는 자동으로 E(x)Hentai 주소로 변환됩니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>저장</h3>
|
||||
<ul>
|
||||
<li>설정과 현재 추가된 목록을 저장</li>
|
||||
<li>파일 - 저장</li>
|
||||
<li>[Ctrl + S] 키</li>
|
||||
</ul>
|
||||
|
||||
<h3>검색기</h3>
|
||||
<ul>
|
||||
<li>갤러리를 검색</li>
|
||||
<li>메뉴 - 검색기...</li>
|
||||
<li>[Ctrl + F] 키</li>
|
||||
</ul>
|
||||
|
||||
<h3>다운로더 작업</h3>
|
||||
<ul>
|
||||
<li>첫 번째 이미지 열기:<br>
|
||||
마우스 우 클릭 → [첫 번째 파일 열기]<br>
|
||||
섬네일 클릭<br>
|
||||
더블클릭<br>
|
||||
[Enter] 키
|
||||
</li>
|
||||
<li>여러 작업 제거:<br>
|
||||
여러 작업 선택 → [Del] 키
|
||||
</li>
|
||||
<li>여러 파일 삭제:<br>
|
||||
여러 작업 선택 → 마우스 우 클릭 → [파일 삭제]<br>
|
||||
여러 작업 선택 → [Shift] + [Del] 키
|
||||
</li>
|
||||
<li>완료된 작업 모두 제거:<br>
|
||||
마우스 우 클릭 → [완료된 작업 모두 제거]<br>
|
||||
잠기지 않은 모든 완료된 작업을 목록에서 제거합니다.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>다운로더 작업 색</h3>
|
||||
<ul>
|
||||
<li>밝은 회색: 대기 중 or 읽는 중</li>
|
||||
<li>어두운 회색: 다운로드 중</li>
|
||||
<li>초록색: 다운로드를 성공적으로 마침</li>
|
||||
<li>주황색: 다운로드는 완료했지만 완전하지 않음</li>
|
||||
<li> 빨간색: 실패 or 잘못된 입력</li>
|
||||
</ul>
|
||||
|
||||
<h3>다운로더 작업 목록 순서 변경</h3>
|
||||
<ul>
|
||||
<li>마우스 휠버튼으로 드래그&드롭 하면 순서를 바꿀 수 있습니다.</li>
|
||||
<li>[Ctrl + ↑], [Ctrl + ↓], [Ctrl + Home], [Ctrl + End] 키로 옮길 수도 있습니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>다운로더 작업 목록 필터링</h3>
|
||||
<ul>
|
||||
<li>다운로더 창 좌측 하단의 필터 아이콘을 클릭하고 입력</li>
|
||||
<li>해당 문자가 포함된 제목을 가진 작업만 보입니다.</li>
|
||||
<li>"type:youtube" 와 같이 타입으로 필터링 할 수도 있습니다.</li>
|
||||
<li>"dup:" 를 입력하면 중복된 작업만 보이고,</li>
|
||||
<li>"rem:" 를 입력하면 실제 파일이 삭제된 작업만 보입니다.</li>
|
||||
<li>"tag:glasses" 와 같이 태그로 필터링 할 수 있습니다.</li>
|
||||
<li>"comment:xxx" 와 같이 코멘트로 필터링 할 수 있습니다.</li>
|
||||
<li>"bad:" 를 입력하면 불완전한 작업만 보입니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>검색기 검색 목록 필터링</h3>
|
||||
<ul>
|
||||
<li>검색기 좌측 하단의 필터 모양 아이콘을 클릭하고 내용 입력</li>
|
||||
<li>해당 문자가 포함된 제목, 작가, 그룹, 태그, 언어를 가진 갤러리만 보입니다.</li>
|
||||
<li>"title:A" 를 입력하면 A라는 문자가 포함된 제목을 가진 갤러리만 보입니다.</li>
|
||||
<li>"artist:A", "group:A", "tag:A", "lang:A" 과 같이 필터링 할 수도 있습니다.</li>
|
||||
<li>"p<100" 을 입력하면 100 페이지 미만인 갤러리만 보입니다.</li>
|
||||
<li>"p>100" 을 입력하면 100 페이지 초과인 갤러리만 보입니다.</li>
|
||||
<li>"done:o" 를 입력하면 이미 다운로드한 갤러리만 보입니다.</li>
|
||||
<li>"done:x" 를 입력하면 아직 다운로드하지 않은 갤러리만 보입니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>페이지 지정 다운로드</h3>
|
||||
<ul>
|
||||
<p><img src=":/icons/down_menu" /></p>
|
||||
<li>지정한 페이지만 다운로드합니다.</li>
|
||||
<li>예시:<br>
|
||||
~ 100 → 앞 100 페이지<br>
|
||||
-100 ~ → 뒤 100 페이지<br>
|
||||
1, 10 ~ 20, -1 → 첫 페이지, 10 ~ 20 페이지, 마지막 페이지</li>
|
||||
</ul>
|
||||
|
||||
<h3>선택 화 다운로드</h3>
|
||||
<ul>
|
||||
<p><img src=":/icons/down_menu_chapter" /></p>
|
||||
<li>선택한 화만 다운로드합니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>환경 설정</h3>
|
||||
<ul>
|
||||
<li>옵션 → 설정 (Preferences...)</li>
|
||||
</ul>
|
||||
|
||||
<h3>스레드</h3>
|
||||
<ul>
|
||||
<li>한 작업 당 동시 다운로드 수.</li>
|
||||
<li>컴퓨터 사양이나 인터넷 상태가 좋지 않다면 갯수를 좀 더 내립니다.</li>
|
||||
<li>어떻게 설정해야 할지 잘 모르겠으면 그대로 두면 됩니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>간단 검색 - 검색어</h3>
|
||||
<ul>
|
||||
<li>구글 검색하듯이 검색하면 됩니다.</li>
|
||||
<li>예시 :<br>
|
||||
maid<br>
|
||||
maid glasses korean<br>
|
||||
maid -schoolgirl<br>
|
||||
maid n/a<br>
|
||||
maid (korean + n/a)</li>
|
||||
</ul>
|
||||
|
||||
<h3>고급 검색 - 제목 (Title)</h3>
|
||||
<ul>
|
||||
<li>예시 :<br>
|
||||
maid<br>
|
||||
maid -schoolgirl<br>
|
||||
maid glasses</li>
|
||||
</ul>
|
||||
|
||||
<h3>고급 검색 - 작가 (Artists)</h3>
|
||||
<ul>
|
||||
<li>예시 :<br>
|
||||
sekiya asami<br>
|
||||
sekiya asami + amezawa koma</li>
|
||||
</ul>
|
||||
|
||||
<h3>고급 검색 - 캐릭터 (Characters)</h3>
|
||||
<ul>
|
||||
<li>예시 :<br>
|
||||
chino kafuu<br>
|
||||
chino kafuu + kokoa hoto<br>
|
||||
hino kafuu, kokoa hoto</li>
|
||||
</ul>
|
||||
|
||||
<h3>고급 검색 - 태그 (Tags)</h3>
|
||||
<ul>
|
||||
<li>예시 :<br>
|
||||
female:maid<br>
|
||||
female:maid, -female:schoolgirl uniform</li>
|
||||
</ul>
|
||||
|
||||
<h3>검색기 목록</h3>
|
||||
<ul>
|
||||
<li>여러 갤러리 다운로드 :<br>
|
||||
여러 개 선택 → 마우스 우클릭 → [다운로드]<br>
|
||||
여러 개 선택 → [Enter] 키</li>
|
||||
|
||||
<li>갤러리 정보 보기 :<br>
|
||||
마우스 우 클릭 → 갤러리 정보...<br>
|
||||
섬네일 클릭</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>검색 중 중단</h3>
|
||||
<ul>
|
||||
<li>검색 버튼 한번 더 클릭</li>
|
||||
</ul>
|
||||
|
||||
<h3>파일이 제대로 다운로드 되지 않는 경우 (체크섬 오프로드 문제)</h3>
|
||||
<ul>
|
||||
<li>권장 (속도 떨어짐) :<br>
|
||||
스레드 갯수를 낮게 조절합니다.</li>
|
||||
<li>비권장 (속도 떨어지지 않음, 보안 문제 발생 가능) :<br>
|
||||
제어판 → 시스템 → 하드웨어 → 장치관리자 → 네트워크 어댑터 → 무슨무슨 컨트롤러 → 우클릭 후 속성 → 고급 탭 → 무슨무슨 오프로드를 모두 '사용 안 함'으로 설정 → 확인<br>
|
||||
조금 기다리면 인터넷이 다시 연결됩니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>검색기 검색 데이터 업데이트</h3>
|
||||
<ul>
|
||||
<li>검색기 - 메뉴 - 데이터 다운로드...</li>
|
||||
<li>데이터를 다시 다운로드할 때마다 서버에서 최신 데이터를 가져옵니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>스크립트</h3>
|
||||
<ul>
|
||||
<li>메뉴 - 스크립트 가져오기...</li>
|
||||
<li>파이썬 스크립트를 실행합니다.</li>
|
||||
<li>다운로드 스크립트를 직접 만들어 추가하는 등 다양한 작업을 할 수 있습니다.</li>
|
||||
<li>스크립트 파일 (*.hds) 은 텍스트에디터(메모장 등)로 수정할 수 있습니다.</li>
|
||||
<li>스크립트 파일들을 프로그램에 드래그 & 드랍해서 실행시킬 수도 있습니다.</li>
|
||||
<li>실행파일 경로에 scripts 폴더 만들고 스크립트 파일 (*.hds) 넣으면 시작할 때 자동으로 실행합니다.</li>
|
||||
<li>스크립트 다운로드 :<br>
|
||||
<a href="https://github.com/KurtBestor/Hitomi-Downloader/wiki/Scripts">https://github.com/KurtBestor/Hitomi-Downloader/wiki/Scripts</a></li>
|
||||
<li>스크립트 작성 방법 :<br>
|
||||
<a href="https://github.com/KurtBestor/Hitomi-Downloader/wiki/How-to-write-a-script">https://github.com/KurtBestor/Hitomi-Downloader/wiki/How-to-write-a-script</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>DPI 우회</h3>
|
||||
<ul>
|
||||
<li>옵션 - 설정 - 고급 설정 - DPI 우회</li>
|
||||
<li><a href="https://github.com/ValdikSS/GoodbyeDPI">GoodbyeDPI</a>를 이용해서 DPI 차단 / 우회를 합니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>쿠키 불러오기</h3>
|
||||
<ul>
|
||||
<li>옵션 - 설정 - 고급 설정 - 쿠키 - 불러오기...</li>
|
||||
<li>브라우저 확장프로그램에서 추출한 쿠키를 불러올 수 있습니다. (Netscape HTTP Cookie File)</li>
|
||||
<li>이 쿠키를 이용해서 로그인이 필요한 페이지에 접근할 수 있습니다.</li>
|
||||
<li>크롬 확장프로그램: <a href="https://chrome.google.com/webstore/detail/cookiestxt/njabckikapfpffapmjgojcnbfjonfjfg">cookies.txt</a>, <a href="https://chrome.google.com/webstore/detail/get-cookiestxt/bgaddhkoddajcdgocldbbfleckgcbcid">Get cookies.txt</a></li>
|
||||
<li>파이어폭스 확장프로그램: <a href="https://addons.mozilla.org/en-US/firefox/addon/cookies-txt/">cookies.txt</a>
|
||||
<li>만료된 쿠키는 회색으로 표시됩니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>크롬 확장 프로그램</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/KurtBestor/Hitomi-Downloader/wiki/Chrome-Extension">Hitomi Downloader</a></li>
|
||||
<li>기능:<br>
|
||||
확장프로그램이 필요한 사이트의 다운로드<br>
|
||||
쿠키 업데이트
|
||||
</ul>
|
||||
|
||||
<h3>종료</h3>
|
||||
<ul>
|
||||
<li>저장 & 종료 :<br>
|
||||
설정과 현재 추가된 목록을 저장하고 종료</li>
|
||||
<li>종료 :<br>
|
||||
저장하지 않고 종료</li>
|
||||
<li>다시 켤 때, 가장 최근에 저장한 상태로 시작합니다.</li>
|
||||
</ul>
|
||||
|
||||
<h3>기타 단축키</h3>
|
||||
<ul>
|
||||
<li>Alt + D : 주소바 ↔ 작업 목록 전환</li>
|
||||
<li>Ctrl + 1 ~ 7 : 작업에 태그 표시</li>
|
||||
<li>Ctrl + Tab : 도구창 숨기기</li>
|
||||
<li>Ctrl + - / + : 썸네일 크기 조절</li>
|
||||
<li>Ctrl + 스크롤 : 썸네일 크기 조절</li>
|
||||
<li>Space : 그룹 열고 닫기</li>
|
||||
</ul>
|
||||
|
||||
<h3>피드백</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/KurtBestor/Hitomi-Downloader/issues">https://github.com/KurtBestor/Hitomi-Downloader/issues</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>기타</h3>
|
||||
<ul>
|
||||
<li>다운로드한 파일들은 개인 소장 용도로만 사용해 주세요.</li>
|
||||
<li>자세한 업데이트 사항은 도움말 - 정보 - 우측하단 버튼을 눌러 확인해 주세요.</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue