Reworked server select in anime.py (#366)
parent
a73ad87c6e
commit
4e15a660dc
|
@ -352,6 +352,48 @@ class AnimeEpisode:
|
|||
def _get_sources(self):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
def sort_sources(self, data):
|
||||
"""
|
||||
Formatted data should look something like this
|
||||
|
||||
[
|
||||
{'extractor': 'mp4upload', 'url': 'https://twist.moe/mp4upload/...', 'server': 'mp4upload', 'version': 'subbed'},
|
||||
{'extractor': 'vidstream', 'url': 'https://twist.moe/vidstream/...', 'server': 'vidstream', 'version': 'dubbed'},
|
||||
{'extractor': 'no_extractor', 'url': 'https://twist.moe/anime/...', 'server': 'default', 'version': 'subbed'}
|
||||
]
|
||||
|
||||
extractor = the extractor the link should be passed to
|
||||
url = url to be passed to the extractor
|
||||
server = the server name used in config
|
||||
version = subbed/dubbed
|
||||
|
||||
The config should consist of a list with servers in preferred order and a preferred language, eg
|
||||
|
||||
"servers":["vidstream","default","mp4upload"],
|
||||
"version":"subbed"
|
||||
|
||||
Using the example above, this function will return: [('no_extractor', 'https://twist.moe/anime/...')]
|
||||
as it prioritizes preferred language over preferred server
|
||||
"""
|
||||
|
||||
version = self.config.get('version','subbed') #TODO add a flag for this
|
||||
servers = self.config.get('servers',[''])
|
||||
|
||||
logger.debug('Data : {}'.format(data))
|
||||
|
||||
#Sorts the dicts by preferred server in config
|
||||
sorted_by_server = sorted(data, key=lambda x: servers.index(x['server']))
|
||||
|
||||
#Sorts the above by preferred language
|
||||
#resulting in a list with the dicts sorted by language and server
|
||||
#with language being prioritized over server
|
||||
sorted_by_lang = list(sorted(sorted_by_server, key=lambda x: x['version'] == version, reverse=True))
|
||||
logger.debug('Sorted sources : {}'.format(sorted_by_lang))
|
||||
|
||||
return '' if not sorted_by_lang else [(sorted_by_lang[0]['extractor'],sorted_by_lang[0]['url'])]
|
||||
|
||||
|
||||
def download(self, force=False, path=None,
|
||||
format='{anime_title}_{ep_no}', range_size=None):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue