fix: get everything to working state
parent
8bdaaed839
commit
8d9c02f66f
|
@ -1 +0,0 @@
|
|||
vn-ki@this.1316:1557033979
|
|
@ -10,35 +10,40 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
class BaseDownloader:
|
||||
def __init__(self, source, path, force, options=None):
|
||||
logger.info(path)
|
||||
|
||||
self.url = source.stream_url
|
||||
self.referer = source.referer
|
||||
self.path = path
|
||||
|
||||
def __init__(self, options=None):
|
||||
if options is None:
|
||||
options = {}
|
||||
self.options = options
|
||||
|
||||
util.make_dir(path.rsplit('/', 1)[0])
|
||||
|
||||
self.chunksize = 16384
|
||||
|
||||
def check_if_exists(self):
|
||||
# Added Referer Header as kwik needd it.
|
||||
r = session.get_session().get(
|
||||
self.url, headers={'referer': self.referer}, stream=True)
|
||||
|
||||
self.total_size = int(r.headers['Content-length'])
|
||||
if os.path.exists(path):
|
||||
if abs(os.stat(path).st_size - self.total_size) < 10 and not force:
|
||||
if os.path.exists(self.path):
|
||||
if abs(os.stat(self.path).st_size - self.total_size) < 10 \
|
||||
and not self.option['force']:
|
||||
logger.warning('File already downloaded. Skipping download.')
|
||||
return
|
||||
else:
|
||||
os.remove(path)
|
||||
os.remove(self.path)
|
||||
|
||||
def download(self):
|
||||
def download(self, url, path, options=None):
|
||||
self.pre_process()
|
||||
self.url = url
|
||||
logger.info(path)
|
||||
|
||||
# TODO: Use pathlib. Break into functions
|
||||
self.path = path
|
||||
util.make_dir(path.rsplit('/', 1)[0])
|
||||
|
||||
if options is not None:
|
||||
self.options = {**options, **self.options}
|
||||
|
||||
self.check_if_exists()
|
||||
|
||||
self.start_time = time.time()
|
||||
self.downloaded = 0
|
||||
|
|
|
@ -7,12 +7,11 @@ from requests.adapters import HTTPAdapter
|
|||
from requests.packages.urllib3.util.retry import Retry
|
||||
import tempfile
|
||||
|
||||
from anime_downloader import downloader
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
file = tempfile.mktemp()
|
||||
requests_cache.install_cache('anime_downloader', expires_after=300, location=file)
|
||||
requests_cache.install_cache('anime_downloader', expires_after=300)
|
||||
|
||||
_session = requests_cache.CachedSession()
|
||||
|
||||
|
@ -51,7 +50,7 @@ def get_session(custom_session=None):
|
|||
return _session
|
||||
|
||||
|
||||
class DownloaderSession:
|
||||
class _DownloaderSession:
|
||||
external_downloaders = {
|
||||
"aria2": {
|
||||
"executable": "aria2c",
|
||||
|
@ -65,8 +64,9 @@ class DownloaderSession:
|
|||
"_disable_ssl_additional": ["--check-certificate", "false"],
|
||||
},
|
||||
}
|
||||
_cache = {}
|
||||
|
||||
def __init__(self, disable_ssl=False):
|
||||
def __init__(self):
|
||||
# TODO: Figure out a way to do disable_ssl elgantly
|
||||
# Disablining ssl check should be in session and not in
|
||||
# donwloader because it's a session wise option
|
||||
|
@ -75,6 +75,23 @@ class DownloaderSession:
|
|||
pass
|
||||
|
||||
def __getitem__(self, key):
|
||||
if key == 'http':
|
||||
return downloader.get_downloader('http')()
|
||||
return self.down
|
||||
# HACK: Because of circular dependency
|
||||
from anime_downloader import downloader
|
||||
# HACK: This has to obtained like this because this variable is
|
||||
# set inside dl. There should be a persistant data store throughout
|
||||
# the app instead.
|
||||
disable_ssl = get_session().verify
|
||||
if key not in self._cache:
|
||||
if key == 'http':
|
||||
self._cache[key] = downloader.get_downloader('http')()
|
||||
if disable_ssl:
|
||||
if '_disable_ssl_additional' in self.external_downloaders[key]:
|
||||
self.external_downloaders[key]['cmd_opts'] = {
|
||||
**self.external_downloaders[key]['cmd_opts'],
|
||||
**self.external_downloaders[key]['_disable_ssl_additional']
|
||||
}
|
||||
self._cache[key] = downloader.get_downloader('ext')(
|
||||
options=self.external_downloaders[key])
|
||||
return self._cache[key]
|
||||
|
||||
DownloaderSession = _DownloaderSession()
|
||||
|
|
|
@ -7,7 +7,6 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
class GogoanimeEpisode(AnimeEpisode, sitename='gogoanime'):
|
||||
QUALITIES = ['360p', '480p', '720p']
|
||||
_base_url = 'https://www2.gogoanime.se'
|
||||
|
||||
def _get_sources(self):
|
||||
|
|
|
@ -10,7 +10,6 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
class KissanimeEpisode(AnimeEpisode, sitename='kissanime'):
|
||||
"""KissanimeEpisode"""
|
||||
QUALITIES = ['360p', '480p', '720p', '1080p']
|
||||
_base_url = 'http://kissanime.ru'
|
||||
VERIFY_HUMAN = True
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
class NineAnimeEpisode(AnimeEpisode, sitename='9anime'):
|
||||
QUALITIES = ['360p', '480p', '720p', '1080p']
|
||||
_base_url = r'https://9anime.to/ajax/episode/info'
|
||||
ts = 0
|
||||
|
||||
|
|
|
@ -19,8 +19,6 @@ session = session.get_session()
|
|||
|
||||
|
||||
class TwistMoeEpisode(AnimeEpisode, sitename='twist.moe'):
|
||||
QUALITIES = ['360p', '480p', '720p', '1080p']
|
||||
|
||||
def _get_sources(self):
|
||||
return [('no_extractor', self.url)]
|
||||
|
||||
|
|
Loading…
Reference in New Issue