197 lines
4.6 KiB
Python
197 lines
4.6 KiB
Python
from importlib import import_module
|
|
import re
|
|
|
|
|
|
ALL_EXTRACTORS = [
|
|
{
|
|
'sitename': 'rapidvideo',
|
|
'modulename': 'rapidvideo',
|
|
'regex': 'rapidvideo',
|
|
'class': 'RapidVideo'
|
|
},
|
|
{
|
|
'sitename': 'clipwatching',
|
|
'modulename': 'clipwatching',
|
|
'regex': 'clipwatching',
|
|
'class': 'clipwatching'
|
|
},
|
|
{
|
|
'sitename': 'no_extractor',
|
|
'modulename': 'fake_extractor',
|
|
'regex': 'no_extractor',
|
|
'class': 'AnimeVideo',
|
|
},
|
|
{
|
|
'sitename': 'animeonline360',
|
|
'modulename': 'animeonline360',
|
|
'regex': 'animeonline360',
|
|
'class': 'AnimeOnline360',
|
|
},
|
|
{
|
|
'sitename': 'stream.moe',
|
|
'modulename': 'moe',
|
|
'regex': 'stream.moe',
|
|
'class': 'StreamMoe',
|
|
},
|
|
{
|
|
'sitename': 'streamango',
|
|
'modulename': 'streamango',
|
|
'regex': 'streamango',
|
|
'class': 'Streamango',
|
|
},
|
|
{
|
|
'sitename': 'mp4upload',
|
|
'modulename': 'mp4upload',
|
|
'regex': 'mp4upload',
|
|
'class': 'MP4Upload'
|
|
},
|
|
{
|
|
'sitename': 'kwik',
|
|
'modulename': 'kwik',
|
|
'regex': 'kwik',
|
|
'class': 'Kwik'
|
|
},
|
|
{
|
|
'sitename': 'trollvid',
|
|
'modulename': 'trollvid',
|
|
'regex': 'trollvid',
|
|
'class': 'Trollvid'
|
|
},
|
|
{
|
|
'sitename': 'mp4sh',
|
|
'modulename': 'mp4sh',
|
|
'regex': 'mp4sh',
|
|
'class': 'MP4Sh'
|
|
},
|
|
{
|
|
'sitename': 'yourupload',
|
|
'modulename': 'yourupload',
|
|
'regex': 'yourupload',
|
|
'class': 'Yourupload'
|
|
},
|
|
{
|
|
'sitename': 'wcostream',
|
|
'modulename': 'wcostream',
|
|
'regex': 'wcostream',
|
|
'class': 'WcoStream'
|
|
},
|
|
{
|
|
'sitename': 'vidstream',
|
|
'modulename': 'vidstream',
|
|
'regex': 'vidstream',
|
|
'class': 'VidStream'
|
|
},
|
|
{
|
|
'sitename': 'haloani',
|
|
'modulename': 'haloani',
|
|
'regex': 'haloani',
|
|
'class': 'Haloani'
|
|
},
|
|
{
|
|
'sitename': 'gcloud',
|
|
'modulename': 'gcloud',
|
|
'regex': 'gcloud',
|
|
'class': 'Gcloud'
|
|
},
|
|
{
|
|
'sitename': 'xstreamcdn',
|
|
'modulename': 'xstreamcdn',
|
|
'regex': 'xstreamcdn',
|
|
'class': 'XStreamCDN'
|
|
},
|
|
{
|
|
'sitename': 'cloud9',
|
|
'modulename': 'cloud9',
|
|
'regex': 'cloud9',
|
|
'class': 'Cloud9'
|
|
},
|
|
{
|
|
'sitename': 'hydrax',
|
|
'modulename': 'hydrax',
|
|
'regex': 'hydrax',
|
|
'class': 'Hydrax'
|
|
},
|
|
{
|
|
'sitename': 'streamx',
|
|
'modulename': 'streamx',
|
|
'regex': 'streamx',
|
|
'class': 'StreamX'
|
|
},
|
|
{
|
|
'sitename': '3rdparty',
|
|
'modulename': '3rdparty',
|
|
'regex': '3rdparty',
|
|
'class': 'Thirdparty'
|
|
},
|
|
{
|
|
'sitename': 'yify',
|
|
'modulename': 'yify',
|
|
'regex': 'yify',
|
|
'class': 'Yify'
|
|
},
|
|
{
|
|
'sitename': 'mixdrop',
|
|
'modulename': 'mixdrop',
|
|
'regex': 'mixdrop',
|
|
'class': 'Mixdrop'
|
|
},
|
|
{
|
|
'sitename': 'sendvid',
|
|
'modulename': 'sendvid',
|
|
'regex': 'sendvid',
|
|
'class': 'SendVid'
|
|
},
|
|
{
|
|
'sitename': 'sibnet',
|
|
'modulename': 'sibnet',
|
|
'regex': 'sibnet',
|
|
'class': 'SibNet'
|
|
},
|
|
{
|
|
'sitename': 'uqload',
|
|
'modulename': 'uqload',
|
|
'regex': 'uqload',
|
|
'class': 'Uqload'
|
|
},
|
|
{
|
|
'sitename': 'vudeo',
|
|
'modulename': 'vudeo',
|
|
'regex': 'vudeo',
|
|
'class': 'Vudeo'
|
|
},
|
|
{
|
|
'sitename': 'eplay',
|
|
'modulename': 'eplay',
|
|
'regex': 'eplay',
|
|
'class': 'EPlay'
|
|
},
|
|
{
|
|
'sitename': 'streamtape',
|
|
'modulename': 'streamtape',
|
|
'regex': 'streamtape',
|
|
'class': 'StreamTape'
|
|
},
|
|
{
|
|
'sitename': 'streamium',
|
|
'modulename': 'streamium',
|
|
'regex': 'streamium',
|
|
'class': 'Streamium'
|
|
},
|
|
{
|
|
'sitename': 'wasabisys',
|
|
'modulename': 'wasabisys',
|
|
'regex': 'wasabisys',
|
|
'class': 'Wasabisys'
|
|
}
|
|
]
|
|
|
|
|
|
def get_extractor(name):
|
|
for extractor in ALL_EXTRACTORS:
|
|
if re.match(extractor['regex'], name.lower()):
|
|
module = import_module(
|
|
'anime_downloader.extractors.{}'.format(
|
|
extractor['modulename'])
|
|
)
|
|
return getattr(module, extractor['class'])
|