#!/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