# -*- coding: utf-8 -*-
import re

from module.network.RequestFactory import getURL
from module.plugins.internal.MultiHoster import MultiHoster


class Vipleech4uCom(MultiHoster):
    __name__ = "Vipleech4uCom"
    __version__ = "0.01"
    __type__ = "hook"
    __config__ = [("activated", "bool", "Activated", "False"),
                  ("hosterListMode", "all;listed;unlisted", "Use for hosters (if supported)", "all"),
                  ("hosterList", "str", "Hoster list (comma separated)", "")]
    __description__ = """Vipleech4u.com hook plugin"""
    __author_name__ = ("Kagenoshin")
    __author_mail__ = ("kagenoshin@gmx.ch")

    HOSTER_PATTERN = re.compile(r'align\s*?=\s*?["\']*?left.*?<\s*?strong\s*?>([^<]*?)<', re.I)

    def getHoster(self):
        hosters = {
            'depositfiles': ['depositfiles.com', 'dfiles.eu'],
            'uploaded': ['uploaded.to', 'uploaded.net', 'ul.to'],
            'rapidggator': ['rapidgator.net'],  # they have a typo it's called rapidgator
            'freakshare': ['freakshare.net', 'freakshare.com'],
            'filefactory': ['filefactory.com'],
            'bitshare': ['bitshare.com'],
            'share-online': ['share-online.biz', 'egoshare.com'],
            'youtube': ['youtube.com'],
            'turbobit': ['turbobit.net', 'unextfiles.com'],
            'firedrive': ['firedrive.com', 'putlocker.com'],
            'filepost': ['filepost.com', 'fp.io'],
            'netload': ['netload.in'],
            'uploadhero': ['uploadhero.com'],
            'ryushare': ['ryushare.com'],
        }

        #check if the list is still valid
        self.check_for_new_or_removed_hosters(hosters)

        #build list
        hoster_list = []

        for item in hosters.itervalues():
            hoster_list.extend(item)

        return hoster_list

    def check_for_new_or_removed_hosters(self, hosters):
        #get the old hosters
        old_hosters = hosters.keys()

        #load the current hosters from vipleech4u.com
        page = getURL('http://vipleech4u.com/hosts.php')
        current_hosters = self.HOSTER_PATTERN.findall(page)
        current_hosters = [x.lower() for x in current_hosters]

        #let's look for new hosters
        new_hosters = []

        for hoster in current_hosters:
            if not hoster in old_hosters:
                new_hosters.append(hoster)

        #let's look for removed hosters
        removed_hosters = []

        for hoster in old_hosters:
            if not hoster in current_hosters:
                removed_hosters.append(hoster)

        if new_hosters:
            self.logDebug('The following new hosters were found on vipleech4u.com: %s' % str(new_hosters))

        if removed_hosters:
            self.logDebug('The following hosters were removed from vipleech4u.com: %s' % str(removed_hosters))

        if not (new_hosters and removed_hosters):
            self.logDebug('The hoster list is still valid.')