-
Notifications
You must be signed in to change notification settings - Fork 10k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add various anime download sites #4554
Changes from all commits
4020cd0
47dd2e9
f9fa66d
bf1e119
28a56dd
e8313c6
5e6e67e
7481208
0d1f807
28fc31b
69e8671
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
from __future__ import unicode_literals | ||
|
||
import re | ||
|
||
from .common import InfoExtractor | ||
from ..utils import ( | ||
ExtractorError, | ||
compat_urlparse, | ||
compat_urllib_parse, | ||
get_element_by_attribute, | ||
unescapeHTML | ||
) | ||
|
||
|
||
class GoGoAnimeIE(InfoExtractor): | ||
IE_NAME = 'gogoanime' | ||
IE_DESC = 'GoGoAnime' | ||
|
||
_VALID_URL = r'http://www.gogoanime.com/(?P<id>[A-Za-z0-9-]+)' | ||
|
||
_NOT_FOUND_REGEX = r'Oops! Page Not Found</font>' | ||
_FILEKEY_REGEX = r'flashvars\.filekey="(?P<filekey>[^"]+)";' | ||
_TITLE_REGEX = r'<div class="postdesc">[^<]*<h1>([^<]+)</h1>' | ||
|
||
_SINGLEPART_REGEX = r'<div class="postcontent">[^<]*<p><iframe src=[\'"][^>]+></iframe></p>' | ||
_MULTIPART_REGEX = r'<div class="postcontent">[^<]*<p><iframe src=[\'"][^>]+></iframe><br />' | ||
_POSTCONTENT_REGEX = r'<div class="postcontent">(?P<content>(?!</div>)*)</div>' | ||
_IFRAME_REGEX = r'<iframe[^>]*src=[\'"](h[^\'"]+)[\'"]' | ||
|
||
"""_TEST = { | ||
'url': 'http://www.gogoanime.com/mahou-shoujo-madoka-magica-episode-12', | ||
'md5': 'd9b511f92ce9348206f8481ba19dc9f1', | ||
'info_dict': { | ||
'id': 'Mahou-Shoujo-Madoka-Magica-12', | ||
'ext': 'flv', | ||
'title': 'Mahou-Shoujo-Madoka-Magica-12', | ||
'description': 'Mahou-Shoujo-Madoka-Magica-12' | ||
} | ||
},""" | ||
_TEST = { | ||
'url': 'http://www.gogoanime.com/mahou-shoujo-madoka-magica-movie-1', | ||
'info_dict': { | ||
'id': 'mahou-shoujo-madoka-magica-movie-1' | ||
}, | ||
'playlist_count': 3 | ||
} | ||
|
||
def _real_extract(self, url): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does not work for me:
|
||
mobj = re.match(self._VALID_URL, url) | ||
video_id = mobj.group('id') | ||
|
||
page = self._download_webpage(url, video_id, "Downloading video page") | ||
|
||
if re.search(self._NOT_FOUND_REGEX, page) is not None: | ||
raise ExtractorError('Video does not exist', expected=True) | ||
|
||
title = self._html_search_regex(self._TITLE_REGEX, page, 'title', fatal=False) | ||
description = title | ||
|
||
content = get_element_by_attribute("class", "postcontent", page) | ||
|
||
pattern = re.compile(self._IFRAME_REGEX) | ||
vids = pattern.findall(content) | ||
|
||
vids = [unescapeHTML(compat_urllib_parse.unquote(x)) for x in vids if not re.search(".*videofun.*", x)] | ||
|
||
if (re.search(self._SINGLEPART_REGEX, page)): | ||
return { | ||
'_type': 'url', | ||
'id': None, | ||
'url': vids[0], | ||
'title': title, | ||
'description': title | ||
} | ||
|
||
if (re.search(self._MULTIPART_REGEX, page)): | ||
return self.playlist_result([self.url_result(vid) for vid in vids], video_id) | ||
|
||
print("Error parsing!") | ||
return {} | ||
|
||
|
||
class GoGoAnimeSearchIE(InfoExtractor): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same here. |
||
IE_NAME = 'gogoanime:search' | ||
IE_DESC = 'GoGoAnime Search' | ||
|
||
_VALID_URL = r'http://www\.gogoanime\.com/.*\?s=(?P<id>.*)' | ||
|
||
_POSTLIST_REGEX = r'<div class="postlist">[^<]*<p[^>]*>[^<]*<a href="(?P<url>[^"]+)"' | ||
|
||
_TEST = { | ||
'url': 'http://www.gogoanime.com/?s=bokusatsu', | ||
'info_dict': { | ||
'id': 'bokusatsu' | ||
}, | ||
'playlist_count': 6 | ||
} | ||
|
||
def _real_extract(self, url): | ||
mobj = re.match(self._VALID_URL, url) | ||
video_id = mobj.group('id') | ||
|
||
page = self._download_webpage(url, video_id, "Downloading video page") | ||
|
||
pattern = re.compile(self._POSTLIST_REGEX) | ||
content = pattern.findall(page) | ||
|
||
return self.playlist_result([self.url_result(vid) for vid in content], video_id) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,167 @@ | ||
from __future__ import unicode_literals | ||
|
||
import re | ||
|
||
from .common import InfoExtractor | ||
from ..utils import ( | ||
ExtractorError, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unused. |
||
compat_urllib_parse | ||
) | ||
|
||
|
||
class Play44IE(InfoExtractor): | ||
IE_NAME = 'play44' | ||
IE_DESC = 'Play44' | ||
|
||
_VALID_URL = r'http://[w.]*play44\.net/embed\.php[^/]*/(?P<id>.+)' | ||
|
||
_VIDEO_URL_REGEX = r'_url = "(https?://[^"]+)";' | ||
_TITLE_REGEX = r'.*/(?P<title>[^.]*).' | ||
|
||
_TEST = { | ||
'url': 'http://play44.net/embed.php?w=600&h=438&vid=M/mahou-shoujo-madoka-magica-07.flv', | ||
'md5': 'e37e99d665f503dd2db952f7c4dba9e6', | ||
'info_dict': { | ||
'id': 'mahou-shoujo-madoka-magica-07', | ||
'ext': 'flv', | ||
'title': 'mahou-shoujo-madoka-magica-07', | ||
'description': 'mahou-shoujo-madoka-magica-07' | ||
} | ||
} | ||
|
||
def _real_extract(self, url): | ||
mobj = re.match(self._VALID_URL, url) | ||
video_id = mobj.group('id') | ||
|
||
page = self._download_webpage(url, video_id, "Downloading video page") | ||
|
||
video_url_encoded = self._html_search_regex(self._VIDEO_URL_REGEX, page, 'url', fatal=True) | ||
video_url = compat_urllib_parse.unquote(video_url_encoded) | ||
|
||
title = re.match(self._TITLE_REGEX, video_url).group('title') | ||
|
||
return { | ||
'id': title, | ||
'url': video_url, | ||
'title': title, | ||
'description': title | ||
} | ||
|
||
class ByZooIE(Play44IE): | ||
IE_NAME = "byzoo" | ||
IE_DESC = "ByZoo" | ||
|
||
_VALID_URL = r'http://[w.]*byzoo\.org/embed\.php[^/]*/(?P<id>.+)' | ||
|
||
_TEST = { | ||
'url': 'http://byzoo.org/embed.php?w=600&h=438&vid=at/nw/mahou_shoujo_madoka_magica_movie_3_-_part1.mp4', | ||
'md5': '455c83dabe2cd9fd74a87612b01fe017', | ||
'info_dict': { | ||
'id': 'mahou_shoujo_madoka_magica_movie_3_-_part1', | ||
'ext': 'mp4', | ||
'title': 'mahou_shoujo_madoka_magica_movie_3_-_part1', | ||
'description': 'mahou_shoujo_madoka_magica_movie_3_-_part1' | ||
} | ||
} | ||
|
||
class Video44IE(Play44IE): | ||
IE_NAME = "video44" | ||
IE_DESC = "Video44" | ||
|
||
_VALID_URL = r'http://[w.]*video44\.net/.*file=(?P<id>[^&].).*' | ||
|
||
_TEST = { | ||
'url': 'http://www.video44.net/gogo/?w=600&h=438&file=chaoshead-12.flv&sv=1', | ||
'md5': '43eaec6d0beb10e8d42459b9f108aff3', | ||
'info_dict': { | ||
'id': 'chaoshead-12', | ||
'ext': 'mp4', | ||
'title': 'chaoshead-12', | ||
'description': 'chaoshead-12' | ||
} | ||
} | ||
|
||
class VideoWingIE(Play44IE): | ||
IE_NAME = "videowing" | ||
IE_DESC = "VideoWing" | ||
|
||
_VALID_URL = r'http://[w.]*videowing\.[^/]*/.*video=/*(?P<id>[^&].).*' | ||
|
||
_TEST = { | ||
'url': 'http://videowing.me/embed?w=718&h=438&video=ongoing/boku_wa_tomodachi_ga_sukunai_-_05.mp4', | ||
'md5': '4ed320e353ed26c742c4f12a9c210b60', | ||
'info_dict': { | ||
'id': 'boku_wa_tomodachi_ga_sukunai_-_05', | ||
'ext': 'mp4', | ||
'title': 'boku_wa_tomodachi_ga_sukunai_-_05', | ||
'description': 'boku_wa_tomodachi_ga_sukunai_-_05' | ||
} | ||
} | ||
|
||
class PlayPandaIE(Play44IE): | ||
IE_NAME = "playpanda" | ||
IE_DESC = "PlayPanda" | ||
|
||
_VALID_URL = r'http://[w.]*playpanda\.[^/]*/.*vid=/*(?P<id>[^&].).*' | ||
|
||
_TEST = { | ||
'url': 'http://playpanda.net/embed.php?w=718&h=438&vid=at/nw/boku_wa_tomodachi_ga_sukunai_-_05.mp4', | ||
'md5': '4ed320e353ed26c742c4f12a9c210b60', | ||
'info_dict': { | ||
'id': 'boku_wa_tomodachi_ga_sukunai_-_05', | ||
'ext': 'mp4', | ||
'title': 'boku_wa_tomodachi_ga_sukunai_-_05', | ||
'description': 'boku_wa_tomodachi_ga_sukunai_-_05' | ||
} | ||
} | ||
|
||
class VideoZooIE(Play44IE): | ||
IE_NAME = "videozoo" | ||
IE_DESC = "videozoo" | ||
|
||
_VALID_URL = r'http://[w.]*videozoo\.[^/]*/.*vid=/*(?P<id>[^&].).*' | ||
|
||
_TEST = { | ||
'url': 'http://videozoo.me/embed.php?w=718&h=438&vid=at/nw/boku_wa_tomodachi_ga_sukunai_-_05.mp4', | ||
'md5': '4ed320e353ed26c742c4f12a9c210b60', | ||
'info_dict': { | ||
'id': 'boku_wa_tomodachi_ga_sukunai_-_05', | ||
'ext': 'mp4', | ||
'title': 'boku_wa_tomodachi_ga_sukunai_-_05', | ||
'description': 'boku_wa_tomodachi_ga_sukunai_-_05' | ||
} | ||
} | ||
|
||
class PlayBBIE(Play44IE): | ||
IE_NAME = "playbb" | ||
IE_DESC = "PlayBB" | ||
|
||
_VALID_URL = r'http://[w.]*playbb\.[^/]*/.*vid=/*(?P<id>[^&].).*' | ||
|
||
_TEST = { | ||
'url': 'http://playbb.me/embed.php?w=718&h=438&vid=at/nw/boku_wa_tomodachi_ga_sukunai_-_05.mp4', | ||
'md5': '4ed320e353ed26c742c4f12a9c210b60', | ||
'info_dict': { | ||
'id': 'boku_wa_tomodachi_ga_sukunai_-_05', | ||
'ext': 'mp4', | ||
'title': 'boku_wa_tomodachi_ga_sukunai_-_05', | ||
'description': 'boku_wa_tomodachi_ga_sukunai_-_05' | ||
} | ||
} | ||
|
||
class EasyVideoIE(Play44IE): | ||
IE_NAME = "easyvideo" | ||
IE_DESC = "EasyVideo" | ||
|
||
_VALID_URL = r'http://[w.]*easyvideo\.[^/]*/.*file=/*(?P<id>[^&].).*' | ||
|
||
_TEST = { | ||
'url': 'http://easyvideo.me/gogo/?w=718&h=438&file=bokuwatomodachigasukunai-04.flv&sv=1', | ||
'md5': '26178b57629b7650106d72b191137176', | ||
'info_dict': { | ||
'id': 'bokuwatomodachigasukunai-04', | ||
'ext': 'mp4', | ||
'title': 'bokuwatomodachigasukunai-04', | ||
'description': 'bokuwatomodachigasukunai-04' | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused.