diff options
author | spoob <spoob@gmx.de> | 2010-08-12 16:07:53 +0200 |
---|---|---|
committer | spoob <spoob@gmx.de> | 2010-08-12 16:07:53 +0200 |
commit | 3c91c7feee8940dc77ae3e3e266a010b55ddde14 (patch) | |
tree | 390ea9fc903a4a31e4a6d952dbdecad0c2770f2d /module/plugins/crypter | |
parent | IRCHook fixes: getestet ! :D (diff) | |
download | pyload-3c91c7feee8940dc77ae3e3e266a010b55ddde14.tar.xz |
Youtube Playlist Download
Diffstat (limited to 'module/plugins/crypter')
-rw-r--r-- | module/plugins/crypter/YoutubeBatch.py | 33 | ||||
-rw-r--r-- | module/plugins/crypter/YoutubeChannel.py | 52 |
2 files changed, 33 insertions, 52 deletions
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py new file mode 100644 index 000000000..091c8558a --- /dev/null +++ b/module/plugins/crypter/YoutubeBatch.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import re + +from module.plugins.Crypter import Crypter + +class YoutubeBatch(Crypter): + __name__ = "YoutubeBatch" + __type__ = "container" + __pattern__ = r"http://(www\.)?(de\.)?\youtube\.com/user/*" + __version__ = "0.9" + __description__ = """Youtube.com Channel Download Plugin""" + __author_name__ = ("RaNaN", "Spoob") + __author_mail__ = ("RaNaN@pyload.org", "spoob@pyload.org") + + def setup(self): + self.user = re.search(r"/user/(.+)", self.pyfile.url).group(1).split("#")[0] + self.playlist = re.search(r"/user/%s.*?/user/(.{16})" % self.user, self.pyfile.url).group(1) + + def file_exists(self): + if "User not found" in self.req.load("http://gdata.youtube.com/feeds/api/playlists/%s?v=2" % self.playlist): + return False + return True + + def decrypt(self, pyfile): + if not self.file_exists(): + self.offline() + url = "http://gdata.youtube.com/feeds/api/playlists/%s?v=2" % self.playlist + rep = self.load(url) + new_links = [] + new_links.extend(re.findall(r"href\='(http:\/\/www.youtube.com\/watch\?v\=[^']+)&", rep)) + self.packages.append((self.pyfile.package().name, new_links, self.pyfile.package().name)) diff --git a/module/plugins/crypter/YoutubeChannel.py b/module/plugins/crypter/YoutubeChannel.py deleted file mode 100644 index 292be06af..000000000 --- a/module/plugins/crypter/YoutubeChannel.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Crypter import Crypter - -class YoutubeChannel(Crypter): - __name__ = "YoutubeChannel" - __type__ = "container" - __pattern__ = r"http://(www\.)?(de\.)?\youtube\.com/user/*" - __version__ = "0.9" - __description__ = """Youtube.com Channel Download Plugin""" - __author_name__ = ("RaNaN", "Spoob") - __author_mail__ = ("RaNaN@pyload.org", "spoob@pyload.org") - - def __init__(self, parent): - Crypter.__init__(self, parent) - self.parent = parent - self.html = None - self.read_config() - self.user = re.search(r"/user/(.+)", self.parent.url).group(1).split("#")[0] - - def file_exists(self): - if "User not found" in self.req.load("http://gdata.youtube.com/feeds/api/users/%s" % self.user): - return False - return True - - def proceed(self, url, location): - max_videos = self.config['max_videos'] - if not max_videos: - max_videos = 1000 #max video a user can upload - page = 0 - temp_links = [] - if "," in self.config['video_groups']: - video_groups = self.config['video_groups'].split(",") - else: - video_groups = [self.config['video_groups']] - for group in video_groups: - for start_index in range(1, int(max_videos), 50): - max_results = max_videos - page * 50 - if max_results > 50: - max_results = 50 - url = "http://gdata.youtube.com/feeds/api/users/%s/%s?max-results=%i&start-index=%i" % (self.user, group, max_results, start_index) - rep = self.req.load(url) - new_links = re.findall(r"href\='(http:\/\/www.youtube.com\/watch\?v\=[^']+)&", rep) - if new_links != []: - temp_links.extend(new_links) - else: - break - page += 1 - self.links = temp_links |