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

import codecs

from module.plugins.Container import Container
from module.utils import fs_encode


class LinkList(Container):
    __name__    = "LinkList"
    __type__    = "container"
    __version__ = "0.14"

    __pattern__ = r'.+\.txt$'
    __config__ = [("clear"   , "bool"  , "Clear Linklist after adding"  , False),
                  ("encoding", "string", "File encoding (default utf-8)", ""   )]

    __description__ = """Read link lists in txt format"""
    __license__     = "GPLv3"
    __authors__     = [("spoob", "spoob@pyload.org"),
                       ("jeix", "jeix@hasnomail.com")]


    def decrypt(self, pyfile):
        try:
            encoding = codecs.lookup(self.getConfig("encoding")).name

        except Exception:
            encoding = "utf-8"

        file    = fs_encode(pyfile.url.strip())
        txt     = codecs.open(file, 'r', encoding)
        links   = txt.readlines()
        curPack = "Parsed links from %s" % pyfile.name

        packages = {curPack:[],}

        for link in links:
            link = link.strip()

            if not link:
                continue

            if link.startswith(";"):
                continue

            if link.startswith("[") and link.endswith("]"):
                # new package
                curPack = link[1:-1]
                packages[curPack] = []
                continue

            packages[curPack].append(link)

        txt.close()

        # empty packages fix

        delete = []

        for key, value in packages.iteritems():
            if not value:
                delete.append(key)

        for key in delete:
            del packages[key]

        if self.getConfig("clear"):
            try:
                txt = open(file, 'wb')
                txt.close()

            except Exception:
                self.logWarning(_("LinkList could not be cleared"))

        for name, links in packages.iteritems():
            self.packages.append((name, links, name))