<commit_before># -*- coding: utf-8 -*-

import re
import urlparse

from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo


class Go4UpCom(SimpleCrypter):
    __name__    = "Go4UpCom"
    __type__    = "crypter"
    __version__ = "0.13"
    __status__  = "testing"

    __pattern__ = r'http://go4up\.com/(dl/\w{12}|rd/\w{12}/\d+)'
    __config__  = [("use_premium"       , "bool", "Use premium account if available"   , True),
                   ("use_subfolder"     , "bool", "Save package to subfolder"          , True),
                   ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)]

    __description__ = """Go4Up.com decrypter plugin"""
    __license__     = "GPLv3"
    __authors__     = [("rlindner81", "<EMAIL>"),
                       ("<NAME>", "<EMAIL>")]


    LINK_PATTERN = r'(http://go4up\.com/rd/.+?)<'

    NAME_PATTERN = r'<title>Download (.+?)<'

    OFFLINE_PATTERN = r'>\s*(404 Page Not Found|File not Found|Mirror does not exist)'


    def get_links(self):
        links = []

        m = re.search(r'(/download/gethosts/.+?)"', self.html)
        if m:
            self.html = self.load(urlparse.urljoin("http://go4up.com/", m.group(1)))
            pages = [self.load(url) for url in re.findall(self.LINK_PATTERN, self.html)]
        else:
            pages = [self.html]

        for html in pages:
            try:
                links.append(re.search(r'<b><a href="(.+?)"', html).group(1))
            except Exception:
                continue

        return links


getInfo = create_getInfo(Go4UpCom)<commit_msg>fixed Go4UpCom plugin and added parameter for preferred hoster<commit_after># -*- coding: utf-8 -*-

import re
import urlparse

from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
import json


class Go4UpCom(SimpleCrypter):
    __name__    = "Go4UpCom"
    __type__    = "crypter"
    __version__ = "0.14"
    __status__  = "testing"

    __pattern__ = r'http://go4up\.com/(dl/\w{12}|rd/\w{12}/\d+)'
    __config__  = [("use_premium"       , "bool", "Use premium account if available"   , True),
                   ("use_subfolder"     , "bool", "Save package to subfolder"          , True),
                   ("subfolder_per_pack", "bool", "Create a subfolder for each package", True),
                   ("preferred_hoster"  , "int" , "Id of preferred hoster or 0 for all", 0)]

    __description__ = """Go4Up.com decrypter plugin"""
    __license__     = "GPLv3"
    __authors__     = [("rlindner81", "<EMAIL>"),
                       ("<NAME>", "<EMAIL>")]


    LINK_PATTERN = r'(http://go4up\.com/rd/.+?)<'

    NAME_PATTERN = r'<title>Download (.+?)<'

    OFFLINE_PATTERN = r'>\s*(404 Page Not Found|File not Found|Mirror does not exist)'


    def get_links(self):
        links = []
        preference = self.get_config("preferred_hoster")

        hosterslink_re = re.search(r'(/download/gethosts/.+?)"', self.html)
        if hosterslink_re:
            hosters = self.load(urlparse.urljoin("http://go4up.com/", hosterslink_re.group(1)))
            for hoster in json.loads(hosters):
                if preference != 0 and preference != int(hoster["hostId"]):
                    continue
                pagelink_re = re.search(self.LINK_PATTERN, hoster["link"])
                if pagelink_re:
                    page = self.load(pagelink_re.group(1))
                    link_re = re.search(r'<b><a href="(.+?)"', page)
                    if link_re:
                        links.append(link_re.group(1))

        return links


getInfo = create_getInfo(Go4UpCom)
{'fraction_non_alphanumeric': 0.14929499585291678, 'fraction_numerical': 0.014100082941664363, 'mean_word_length': 2.233243967828418, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2744585', 'n_tokens_mistral': 1256, 'n_tokens_neox': 1173, 'n_words': 246}