# -*- coding: utf-8 -*-

import re
import BeautifulSoup
from module.plugins.internal.Crypter import Crypter

class HoerbuchIn(Crypter):
    __name__    = "HoerbuchIn"
    __type__    = "crypter"
    __version__ = "0.66"
    __status__  = "testing"

    __pattern__ = r'http://(?:www\.)?hoerbuch\.us/(wp/horbucher/\d+/|tp/out\.php\?.+|protection/folder_\d+\.html)'
    __config__  = [("activated"         , "bool"          , "Activated"                       , True     ),
                   ("use_premium"       , "bool"          , "Use premium account if available", True     ),
                   ("folder_per_package", "Default;Yes;No", "Create folder for each package"  , "Default")]

    __description__ = """Hoerbuch.in decrypter plugin"""
    __license__     = "GPLv3"
    __authors__     = [("spoob", "spoob@pyload.org"),
                       ("mkaay", "mkaay@mkaay.de")]


    article         = re.compile("http://(?:www\.)?hoerbuch\.us/wp/horbucher/\d+/.+/")
    protection      = re.compile("http://(?:www\.)?hoerbuch\.us/protection/folder_\d+.html")
    uploaded        = re.compile("http://(?:www\.)?hoerbuch\.us/protection/uploaded/(\w+)\.html")
    hoster_links    = re.compile("http://(?:www\.)?hoerbuch\.us/wp/goto/Download/\d+/")

    def decrypt(self, pyfile):
        self.pyfile = pyfile

        if self.article.match(pyfile.url):
            html = self.load(pyfile.url)
            soup = BeautifulSoup.BeautifulSoup(html, convertEntities=BeautifulSoup.BeautifulStoneSoup.HTML_ENTITIES)

            links = []
            for a in soup.findAll("a", attrs={'href': self.hoster_links}):
                for decrypted_link in self.decrypt_folder(a.get('href')):
                    links.append(decrypted_link)

            self.packages.append((pyfile.name, links, pyfile.name))
        else:
            self.links = self.decrypt_folder(pyfile.url)

    def decrypt_folder(self, url):

        m = self.hoster_links.search(url) or self.protection.search(url)

        if m is None:
            self.fail(_("Bad URL"))
        url = m.group(0)

        if self.hoster_links.match(url):
            self.load(url)
            url = self.req.lastEffectiveURL

        html = self.load(url, post={'viewed': "adpg"})

        self.pyfile.url = url

        links = []

        soup = BeautifulSoup.BeautifulSoup(html, convertEntities=BeautifulSoup.BeautifulStoneSoup.HTML_ENTITIES)

        for container in soup.findAll("div", attrs={'class': "container"}):
            href = container.a.get("href")

            uploaded = self.uploaded.search(href)
            if uploaded is not None:
                href = "http://uploaded.net/file/%s" % uploaded.group(1)

            links.append(href)

        return links