[animevost] New extractor

This commit is contained in:
d3adc0d3 2017-06-09 10:45:47 +03:00
parent 1afd0b0da7
commit a7f9337b42
2 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,90 @@
# coding: utf-8
from __future__ import unicode_literals
import re
from .common import InfoExtractor
class AnimevostIE(InfoExtractor):
_TESTS = [{
'url': 'http://animevost.org/tip/tv/1864-renai-boukun.html',
'info_dict': {
'title': 'Любовь тирана / Renai Boukun',
'id': '1864',
},
'playlist_mincount': 10,
}, {
'url': 'http://animevost.org/tip/tv-speshl/1854-ryuu-no-haisha.html',
'info_dict': {
'title': 'Драконий дантист / Ryuu no Haisha',
'id': '1854',
},
'playlist_mincount': 2,
}, {
'url': 'http://animevost.org/tip/ova/1741-mahou-tsukai-no-yome-hoshi-matsu-hito.html',
'info_dict': {
'title': 'Невеста чародея / Mahou Tsukai no Yome: Hoshi Matsu Hito',
'id': '1741',
},
'playlist_mincount': 2,
}, {
'url': 'http://animevost.org/tip/ona/1797-huyao-xiao-hongniang.html',
'info_dict': {
'title': 'Сводники духов: Лисьи свахи / Huyao Xiao Hongniang',
'id': '1797',
},
'playlist_mincount': 57,
}]
_VALID_URL = r'http://animevost\.org/tip/[-\w\d]+/(\d+)-[-\w\d]+\.html'
_TITLE_PATTERN = r'<meta property="og:title" content="([-\s\d\w/:]+)\['
_DATA_PATTERN = r'var data = \{([-\d\w\s,":]+),};'
def _real_extract(self, url):
anime_id = self._search_regex(self._VALID_URL, url, 'anime id', flags=re.UNICODE)
anime_page = self._download_webpage(url, anime_id)
anime_title = self._html_search_regex(self._TITLE_PATTERN, anime_page, 'anime title', flags=re.UNICODE)
data_str = self._html_search_regex(self._DATA_PATTERN, anime_page, 'anime series', flags=re.UNICODE)
data = self._parse_json("{%s}" % data_str, '')
entries = self.__entries(data, anime_title)
return self.playlist_result(entries, anime_id, anime_title)
def __entries(self, data, anime_title):
for ename, eid in data.items():
entry_url = 'animevost-entry://%s' % eid
full_title = '%s - %s' % (anime_title, ename)
yield self.url_result(entry_url, 'AnimevostEntry', eid, full_title)
class AnimevostEntryIE(InfoExtractor):
_VALID_URL = r'animevost-entry://(.+)'
_PLAYER_URL_PATTERN = r'http://play.aniland.org/%s?player=3'
_FLASHVARS_PATTERN = r'var flashvars = \{([":\d\w\s,/.+=-]+)};'
def _real_extract(self, url):
eid = url.split('/')[-1]
player_url = self._PLAYER_URL_PATTERN % eid
player_page = self._download_webpage(player_url, eid)
files_str = self._html_search_regex(self._FLASHVARS_PATTERN, player_page, 'flash vars', flags=re.UNICODE)
files = self._parse_json("{%s}" % files_str, eid)
raw_url = files['filehd'] if 'filehd' in files else files['file']
video_url = raw_url.partition(":hls")[0]
return {
'id': eid,
'url': video_url,
'ext': 'mp4',
'title': eid,
}

View File

@ -40,6 +40,10 @@ from .aljazeera import AlJazeeraIE
from .alphaporno import AlphaPornoIE from .alphaporno import AlphaPornoIE
from .amcnetworks import AMCNetworksIE from .amcnetworks import AMCNetworksIE
from .animeondemand import AnimeOnDemandIE from .animeondemand import AnimeOnDemandIE
from .animevost import (
AnimevostIE,
AnimevostEntryIE,
)
from .anitube import AnitubeIE from .anitube import AnitubeIE
from .anvato import AnvatoIE from .anvato import AnvatoIE
from .anysex import AnySexIE from .anysex import AnySexIE