From 8e87787753b2e049917a5491727d285b1c5a7095 Mon Sep 17 00:00:00 2001 From: mkaay Date: Sun, 27 Dec 2009 00:20:21 +0100 Subject: closes #13 --- module/plugins/decrypter/YoutubeChannel.py | 49 ++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 module/plugins/decrypter/YoutubeChannel.py (limited to 'module/plugins/decrypter/YoutubeChannel.py') diff --git a/module/plugins/decrypter/YoutubeChannel.py b/module/plugins/decrypter/YoutubeChannel.py new file mode 100644 index 000000000..27a4ff8a7 --- /dev/null +++ b/module/plugins/decrypter/YoutubeChannel.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import re + +from module.Plugin import Plugin + +class YoutubeChannel(Plugin): + + def __init__(self, parent): + Plugin.__init__(self, parent) + props = {} + props['name'] = "YoutubeChannel" + props['type'] = "container" + props['pattern'] = r"http://(www\.)?(de\.)?\youtube\.com/user/*" + props['version'] = "0.3" + props['description'] = """Youtube.com Channel Download Plugin""" + props['author_name'] = ("RaNaN", "Spoob") + props['author_mail'] = ("RaNaN@pyload.org", "spoob@pyload.org") + self.props = props + self.parent = parent + self.html = None + self.read_config() + + def file_exists(self): + """ returns True or False + """ + return True + + def proceed(self, url, location): + self.user = re.search(r"/user/(.+)", self.parent.url).group(1) + max_videos = self.config['max_videos'] + if not max_videos: + max_videos = 1000 #max video a user can upload + page = 0 + temp_links = [] + 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/" + self.user + "/uploads?max-results=" + str(max_results) + "&start-index=" + str(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 -- cgit v1.2.3 From b1637236297fc5c3278e4d358fa7ec990824db71 Mon Sep 17 00:00:00 2001 From: spoob Date: Wed, 13 Jan 2010 14:21:13 +0100 Subject: More YoutubeChannel Options --- module/plugins/decrypter/YoutubeChannel.py | 31 +++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'module/plugins/decrypter/YoutubeChannel.py') diff --git a/module/plugins/decrypter/YoutubeChannel.py b/module/plugins/decrypter/YoutubeChannel.py index 27a4ff8a7..2a3ae337f 100644 --- a/module/plugins/decrypter/YoutubeChannel.py +++ b/module/plugins/decrypter/YoutubeChannel.py @@ -13,7 +13,7 @@ class YoutubeChannel(Plugin): props['name'] = "YoutubeChannel" props['type'] = "container" props['pattern'] = r"http://(www\.)?(de\.)?\youtube\.com/user/*" - props['version'] = "0.3" + props['version'] = "0.4" props['description'] = """Youtube.com Channel Download Plugin""" props['author_name'] = ("RaNaN", "Spoob") props['author_mail'] = ("RaNaN@pyload.org", "spoob@pyload.org") @@ -34,16 +34,21 @@ class YoutubeChannel(Plugin): max_videos = 1000 #max video a user can upload page = 0 temp_links = [] - 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/" + self.user + "/uploads?max-results=" + str(max_results) + "&start-index=" + str(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 + 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(str(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 -- cgit v1.2.3 From fa885950149109926c8587876930a3f4e287ee26 Mon Sep 17 00:00:00 2001 From: spoob Date: Wed, 13 Jan 2010 14:24:29 +0100 Subject: More YoutubeChannel Options --- module/plugins/decrypter/YoutubeChannel.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'module/plugins/decrypter/YoutubeChannel.py') diff --git a/module/plugins/decrypter/YoutubeChannel.py b/module/plugins/decrypter/YoutubeChannel.py index 2a3ae337f..2cea419de 100644 --- a/module/plugins/decrypter/YoutubeChannel.py +++ b/module/plugins/decrypter/YoutubeChannel.py @@ -21,14 +21,17 @@ class YoutubeChannel(Plugin): self.parent = parent self.html = None self.read_config() + self.user = re.search(r"/user/(.+)", self.parent.url).group(1) + def file_exists(self): """ returns True or False """ + rep = self.req.load("http://gdata.youtube.com/feeds/api/users/%s" % self.user) + print rep return True def proceed(self, url, location): - self.user = re.search(r"/user/(.+)", self.parent.url).group(1) max_videos = self.config['max_videos'] if not max_videos: max_videos = 1000 #max video a user can upload -- cgit v1.2.3 From 5d1ecc6df93a6f4015fe5b83b3391ddd8c90f7b5 Mon Sep 17 00:00:00 2001 From: spoob Date: Wed, 13 Jan 2010 14:28:55 +0100 Subject: YoutubeChannel Checks File Exists --- module/plugins/decrypter/YoutubeChannel.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'module/plugins/decrypter/YoutubeChannel.py') diff --git a/module/plugins/decrypter/YoutubeChannel.py b/module/plugins/decrypter/YoutubeChannel.py index 2cea419de..a5751ed7c 100644 --- a/module/plugins/decrypter/YoutubeChannel.py +++ b/module/plugins/decrypter/YoutubeChannel.py @@ -13,7 +13,7 @@ class YoutubeChannel(Plugin): props['name'] = "YoutubeChannel" props['type'] = "container" props['pattern'] = r"http://(www\.)?(de\.)?\youtube\.com/user/*" - props['version'] = "0.4" + props['version'] = "0.9" props['description'] = """Youtube.com Channel Download Plugin""" props['author_name'] = ("RaNaN", "Spoob") props['author_mail'] = ("RaNaN@pyload.org", "spoob@pyload.org") @@ -23,12 +23,9 @@ class YoutubeChannel(Plugin): self.read_config() self.user = re.search(r"/user/(.+)", self.parent.url).group(1) - def file_exists(self): - """ returns True or False - """ - rep = self.req.load("http://gdata.youtube.com/feeds/api/users/%s" % self.user) - print rep + 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): -- cgit v1.2.3 From 2edf36eb45d427262e9f83af90b8b4fc2f69aab8 Mon Sep 17 00:00:00 2001 From: spoob Date: Fri, 15 Jan 2010 15:03:00 +0100 Subject: Better Argument Parsing in Core, littel fixes --- module/plugins/decrypter/YoutubeChannel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/decrypter/YoutubeChannel.py') diff --git a/module/plugins/decrypter/YoutubeChannel.py b/module/plugins/decrypter/YoutubeChannel.py index a5751ed7c..ba2ca1472 100644 --- a/module/plugins/decrypter/YoutubeChannel.py +++ b/module/plugins/decrypter/YoutubeChannel.py @@ -44,7 +44,7 @@ class YoutubeChannel(Plugin): 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(str(url)) + 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) -- cgit v1.2.3