Exemple #1
0
    def __init__(self, gui_manager, url):
        self.MAIN_URL_OPEN = UrlOpen(use_cache=False)
        BaseDownloader.__init__(self, self.MAIN_URL_OPEN, gui_manager, url)

        self.url = url
        self.gui_manager = gui_manager
        self.config = Config.get()
        self.user = None
        self.password = None
        accounts = self.config.get_key("accounts")

        for host, data in accounts:
            if host == "wupload":
                self.user = data["username"]
                self.password = base64.b64decode(data["password"])

        self.captcha_window = CaptchaWindow(gui_manager, self._on_captcha_ok)

        self.MAIN_URL_OPEN.add_headers({
            "Referer": url,
            "Origin": "http://www.wupload.com",
            "Host": "www.wupload.com",
        })

        CAPTCHA_URL_OPEN.add_headers({"referer": url})
Exemple #2
0
    def __init__(self, gui_manager, url):
        self.MAIN_URL_OPEN = UrlOpen(use_cache=False)
        BaseDownloader.__init__(self, self.MAIN_URL_OPEN, gui_manager, url)

        self.url = url
        self.gui_manager = gui_manager
        self.config = Config.get()
        self.user = None
        self.password = None
        accounts = self.config.get_key("accounts")

        for host, data in accounts:
            if host == "wupload":
                self.user = data["username"]
                self.password = base64.b64decode(data["password"])

        self.captcha_window = CaptchaWindow(gui_manager, self._on_captcha_ok)

        self.MAIN_URL_OPEN.add_headers({
            "Referer": url,
            "Origin": "http://www.wupload.com",
            "Host": "www.wupload.com",
        })

        CAPTCHA_URL_OPEN.add_headers({"referer": url})
Exemple #3
0
    def selected_quality(self, arg, menuw):
        api, show, season, episode, host, quality = arg

        self.video_item = None
        self.menuw = menuw
        self.file_object = episode
        self.selected_host = host
        self.selected_quality = quality
        config.VIDEO_SHOW_DATA_DIR = '/media/disk/video'
        self.file_path = os.path.join(config.VIDEO_SHOW_DATA_DIR, self.get_filename(episode))
        box = PopupBox(text='Starting download... will start playing shortly')
        box.show()
        time.sleep(2)
        box.destroy()

        if os.path.exists(self.file_path):
            # TODO: check file completition?
            self.play()
            return

        url_open = UrlOpen()
        url = self.file_object.get_subtitle_url(quality=self.selected_quality)
        filename = self.file_path.replace(".mp4", ".srt")
        url_open(url, filename=filename)

        print episode.file_hosts[host][quality]
        self.gui_manager.background_task(self.pre_download, self.play)
        self.downloader = Downloaders.get(host, self.gui_manager, episode.file_hosts[host][quality])
        self.downloader.process_url(None, self.file_path)
Exemple #4
0
    def download_subtitle(self):
        """ Downloads the subtitle for the selected episode. """

        url_open = UrlOpen()

        url = self.file_object.get_subtitle_url(quality=self.selected_quality)
        filename = self.file_path.replace(".mp4", ".srt")

        log.debug("Traying to download subtitles from: %s and save it to: %s" %
                  (url, filename))

        url_open(url, filename=filename)
Exemple #5
0
    def __init__(self, gui_manager, url):
        self.MAIN_URL_OPEN = UrlOpen(use_cache=False)

        BaseDownloader.__init__(self, self.MAIN_URL_OPEN, gui_manager, url)

        self.gui_manager = gui_manager
        self.url = url

        self.captcha_window = CaptchaWindow(gui_manager, self._on_captcha_ok)

        self.MAIN_URL_OPEN.add_headers({
            "Referer": url,
            "Origin": "http://www.wupload.com",
            "Host": "www.wupload.com",
        })

        CAPTCHA_URL_OPEN.add_headers({"referer": url})
Exemple #6
0
"""
Megaupload Downloader.
"""

import re

from guicavane.Utils.UrlOpen import UrlOpen
from guicavane.Utils.Debug import tmp_dump
from guicavane.Utils.Log import console
from Base import BaseAccount

log = console("Accounts.Megaupload")

LOGIN_PAGE = "http://www.megaupload.com?c=login"
ACCOUNT_PAGE = "http://www.megaupload.com?c=account"
URL_OPEN = UrlOpen(use_cache=False)


class Megaupload(BaseAccount):
    """ Megaupload's Account. """

    name = "Megaupload"
    account_wait = {None: 10, 'Regular': 10, 'Premium': 0}

    def __init__(self):
        BaseAccount.__init__(self)

    def login(self, username, password):
        """
        Verifies the account.
        On succefull login, stores the cookie.
Exemple #7
0
    'filefactory': 'http://www.filefactory.com/file/',
    'hotfile': 'http://hotfile.com/dl/',
}

HOSTNAMES = {
    'mega1': 'megaupload',
    'mega2': 'bitshare',
    'mega3': 'filefactory',
    'mega4': 'hotfile',
    'mega5': 'wupload',
    'mega6': 'glumbo',
    'mega7': 'uploadhere',
    'mega8': 'uploadking',
}

url_open = UrlOpen()


class Hosts(object):
    __hosts = None

    @property
    def file_hosts(self):

        # Cache
        if self.__hosts:
            return self.__hosts
        self.__hosts = {}

        data = url_open(self.url)
Exemple #8
0
class Wupload(BaseDownloader):
    """ Wupload's Downloader. """

    name = "Wupload"
    icon_path = HOSTS_IMAGES_DIR + SEP + "wupload.png"
    accept_ranges = True

    def __init__(self, gui_manager, url):
        self.MAIN_URL_OPEN = UrlOpen(use_cache=False)
        BaseDownloader.__init__(self, self.MAIN_URL_OPEN, gui_manager, url)

        self.url = url
        self.gui_manager = gui_manager
        self.config = Config.get()
        self.user = None
        self.password = None
        accounts = self.config.get_key("accounts")

        for host, data in accounts:
            if host == "wupload":
                self.user = data["username"]
                self.password = base64.b64decode(data["password"])

        self.captcha_window = CaptchaWindow(gui_manager, self._on_captcha_ok)

        self.MAIN_URL_OPEN.add_headers({
            "Referer": url,
            "Origin": "http://www.wupload.com",
            "Host": "www.wupload.com",
        })

        CAPTCHA_URL_OPEN.add_headers({"referer": url})

    def process_url(self, play_callback, file_path):
        self.play_callback = play_callback
        self.file_path = file_path

        self.gui_manager.background_task(self.start_regular,
                        self.on_waiting_finish, unfreeze=False)

    def start_regular(self):
        if self.user and self.password and ACCOUNT.account_type=="Premium":
            console("trying with cool API")
            id_ = URL_ID_RE.search(self.url).group(1)
            self.file_url = API_DOWNLOAD % (self.user, self.password, id_)
            console(self.file_url)
            return False

        page_data = self.MAIN_URL_OPEN(self.url)

        if "this file has been removed" in page_data:
            raise Exception(gettext("File removed"))

        try:
            self.regular_url = REGULAR_URL_RE.search(page_data).group(1)
            self.regular_url = "http://www.wupload.com/file/" + self.regular_url + "/" + self.regular_url + "?start=1"
        except Exception, e:
            msg = "Regular link not found"
            log.error(msg)
            log.error(e.message)
            tmp_dump(page_data, link)
            raise DownloadError(msg)

        self.MAIN_URL_OPEN.add_headers({"X-Requested-With": "XMLHttpRequest"})
        print "REGULAR URL", self.regular_url
        regular_data = self.MAIN_URL_OPEN(self.regular_url)


        if "countDownDelay" in regular_data:
            waiting_time = int(WAITING_TIME_RE.search(regular_data).group(1))

            try:
                tm = int(TM_RE.search(regular_data).group(1))
                tm_hash = TM_HASH_RE.search(regular_data).group("value")
                tm_data = {"tm": tm, "tm_hash": tm_hash}
            except:
                tm_data = None

            for i in range(waiting_time, 0, -1):
                gobject.idle_add(self.gui_manager.set_status_message,
                    gettext("Please wait %d second%s...") % (i, "s" * (i > 1)))
                time.sleep(1)

            log.info("Trying to get captcha..")
            log.info(tm_data)
            regular_data = self.MAIN_URL_OPEN(self.regular_url, data=tm_data)

        if "Download Ready" in regular_data:
            has_captcha = False
            self.file_url = FILE_URL_RE.search(regular_data).group(1)
        else:
            has_captcha = True

            try:
                self.recaptcha_challenge_id = RECAPTCHA_CHALLENGE_ID_RE.search(regular_data).group(1)
            except Exception, e:
                msg = "Captcha challenge not found!"
                log.error(msg)
                log.error(e.message)
                tmp_dump(page_data, self.url)
                raise DownloadError(msg)
from Base import BaseDownloader

HOST = "http://www.filefactory.com"
RECAPTCHA_CHALLENGE_URL = "http://api.recaptcha.net/challenge?k="
RECAPTCHA_IMAGE_URL = "http://www.google.com/recaptcha/api/image?c="
CHECK_CAPTCHA_URL = HOST + "/file/checkCaptcha.php"

CAPTCHA_ID_RE = re.compile(r'Recaptcha\.create\("(.*?)", "ffRecaptcha"')
CAPTCHA_ID2_RE = re.compile(r"challenge : '(.*?)',")
CHECK_ID_RE = re.compile(r"check:'(.*?)'")
FILE_PRE_URL_RE = re.compile(r'path:"(.*?)"')
FILE_URL_RE = re.compile(r'name="redirect" value="(.*?)"/>')
FILE_URL_RE = re.compile(r'<a href="(.*?)" id="downloadLinkTarget">')
COUNTDOWN_RE = re.compile(r'<span class="countdown">(\d*?)</span>')

MAIN_URL_OPEN = UrlOpen(use_cache=False)
CAPTCHA_URL_OPEN = UrlOpen(use_cache=False)


class Filefactory(BaseDownloader):
    """ Filefactory's Downloader. """

    name = "File Factory"
    icon_path = HOSTS_IMAGES_DIR + SEP + "filefactory.png"
    waiting_time = 60
    accept_ranges = False

    def __init__(self, gui_manager, url):
        BaseDownloader.__init__(self, MAIN_URL_OPEN, gui_manager, url)

        self.gui_manager = gui_manager
Exemple #10
0
class Wupload(BaseDownloader):
    """ Wupload's Downloader. """

    name = "Wupload"
    icon_path = HOSTS_IMAGES_DIR + SEP + "wupload.png"
    accept_ranges = False

    def __init__(self, gui_manager, url):
        self.MAIN_URL_OPEN = UrlOpen(use_cache=False)

        BaseDownloader.__init__(self, self.MAIN_URL_OPEN, gui_manager, url)

        self.gui_manager = gui_manager
        self.url = url

        self.captcha_window = CaptchaWindow(gui_manager, self._on_captcha_ok)

        self.MAIN_URL_OPEN.add_headers({
            "Referer": url,
            "Origin": "http://www.wupload.com",
            "Host": "www.wupload.com",
        })

        CAPTCHA_URL_OPEN.add_headers({"referer": url})

    def process_url(self, play_callback, file_path):
        self.play_callback = play_callback
        self.file_path = file_path

        self.gui_manager.background_task(self.start_regular,
                        self.on_waiting_finish, unfreeze=False)

    def start_regular(self):
        page_data = self.MAIN_URL_OPEN(self.url)

        try:
            self.regular_url = REGULAR_URL_RE.search(page_data).group(1)
            self.regular_url = "http://www.wupload.com/file/" + self.regular_url
        except Exception, e:
            msg = "Regular link not found"
            log.error(msg)
            log.error(e.message)
            tmp_dump(page_data, link)
            raise DownloadError(msg)

        self.MAIN_URL_OPEN.add_headers({"X-Requested-With": "XMLHttpRequest"})
        regular_data = self.MAIN_URL_OPEN(self.regular_url)


        if "countDownDelay" in regular_data:
            waiting_time = int(WAITING_TIME_RE.search(regular_data).group(1))

            try:
                tm = int(TM_RE.search(regular_data).group(1))
                tm_hash = TM_HASH_RE.search(regular_data).group("value")
                tm_data = {"tm": tm, "tm_hash": tm_hash}
            except:
                tm_data = None

            for i in range(waiting_time, 0, -1):
                gobject.idle_add(self.gui_manager.set_status_message,
                    gettext("Please wait %d second%s...") % (i, "s" * (i > 1)))
                time.sleep(1)

            log.info("Trying to get captcha..")
            log.info(tm_data)
            regular_data = self.MAIN_URL_OPEN(self.regular_url, data=tm_data)

        if "Download Ready" in regular_data:
            has_captcha = False
            self.file_url = FILE_URL_RE.search(regular_data).group(1)
        else:
            has_captcha = True

            try:
                self.recaptcha_challenge_id = RECAPTCHA_CHALLENGE_ID_RE.search(regular_data).group(1)
            except Exception, e:
                msg = "Captcha challenge not found!"
                log.error(msg)
                log.error(e.message)
                tmp_dump(page_data, self.url)
                raise DownloadError(msg)
Exemple #11
0
from Base import BaseDownloader

RECAPTCHA_CHALLENGE_URL = "http://api.recaptcha.net/challenge?k="
RECAPTCHA_IMAGE_URL = "http://www.google.com/recaptcha/api/image?c="

TM_RE = re.compile(r'name=tm value=(.*?)>')
TMHASH_RE = re.compile(r'name=tmhash value=(.*?)>')
WAIT_RE = re.compile(r'<input type=hidden name=wait value=(\d*?)>')
WAITHASH_RE = re.compile(r'name=waithash value=(.*?)>')
UPIDHASH_RE = re.compile(r'name=upidhash value=(.*?)>')
CAPTCHA_ID_RE = re.compile(
    r'src="http://api.recaptcha.net/challenge\?k=(.*?)">')
CAPTCHA_ID2_RE = re.compile(r"challenge : '(.*?)',")
FILE_URL_RE = re.compile(r'href="(.*?)" class="click_download"')

MAIN_URL_OPEN = UrlOpen()
CAPTCHA_URL_OPEN = UrlOpen()


class Hotfile(BaseDownloader):
    """ Hotfile's Downloader. """

    name = "Hotfile"
    icon_path = HOSTS_IMAGES_DIR + SEP + "hotfile.png"
    accept_ranges = False

    def __init__(self, gui_manager, url):
        BaseDownloader.__init__(self, MAIN_URL_OPEN, gui_manager, url)

        self.gui_manager = gui_manager
        self.url = url
Exemple #12
0
class Wupload(BaseDownloader):
    """ Wupload's Downloader. """

    name = "Wupload"
    icon_path = HOSTS_IMAGES_DIR + SEP + "wupload.png"
    accept_ranges = True

    def __init__(self, gui_manager, url):
        self.MAIN_URL_OPEN = UrlOpen(use_cache=False)
        BaseDownloader.__init__(self, self.MAIN_URL_OPEN, gui_manager, url)

        self.url = url
        self.gui_manager = gui_manager
        self.config = Config.get()
        self.user = None
        self.password = None
        accounts = self.config.get_key("accounts")

        for host, data in accounts:
            if host == "wupload":
                self.user = data["username"]
                self.password = base64.b64decode(data["password"])

        self.captcha_window = CaptchaWindow(gui_manager, self._on_captcha_ok)

        self.MAIN_URL_OPEN.add_headers({
            "Referer": url,
            "Origin": "http://www.wupload.com",
            "Host": "www.wupload.com",
        })

        CAPTCHA_URL_OPEN.add_headers({"referer": url})

    def process_url(self, play_callback, file_path):
        self.play_callback = play_callback
        self.file_path = file_path

        self.gui_manager.background_task(self.start_regular,
                                         self.on_waiting_finish,
                                         unfreeze=False)

    def start_regular(self):
        if self.user and self.password and ACCOUNT.account_type == "Premium":
            console("trying with cool API")
            id_ = URL_ID_RE.search(self.url).group(1)
            self.file_url = API_DOWNLOAD % (self.user, self.password, id_)
            console(self.file_url)
            return False

        page_data = self.MAIN_URL_OPEN(self.url)

        if "this file has been removed" in page_data:
            raise Exception(gettext("File removed"))

        try:
            self.regular_url = REGULAR_URL_RE.search(page_data).group(1)
            self.regular_url = "http://www.wupload.com/file/" + self.regular_url + "/" + self.regular_url + "?start=1"
        except Exception, e:
            msg = "Regular link not found"
            log.error(msg)
            log.error(e.message)
            tmp_dump(page_data, link)
            raise DownloadError(msg)

        self.MAIN_URL_OPEN.add_headers({"X-Requested-With": "XMLHttpRequest"})
        print "REGULAR URL", self.regular_url
        regular_data = self.MAIN_URL_OPEN(self.regular_url)

        if "countDownDelay" in regular_data:
            waiting_time = int(WAITING_TIME_RE.search(regular_data).group(1))

            try:
                tm = int(TM_RE.search(regular_data).group(1))
                tm_hash = TM_HASH_RE.search(regular_data).group("value")
                tm_data = {"tm": tm, "tm_hash": tm_hash}
            except:
                tm_data = None

            for i in range(waiting_time, 0, -1):
                gobject.idle_add(
                    self.gui_manager.set_status_message,
                    gettext("Please wait %d second%s...") % (i, "s" * (i > 1)))
                time.sleep(1)

            log.info("Trying to get captcha..")
            log.info(tm_data)
            regular_data = self.MAIN_URL_OPEN(self.regular_url, data=tm_data)

        if "Download Ready" in regular_data:
            has_captcha = False
            self.file_url = FILE_URL_RE.search(regular_data).group(1)
        else:
            has_captcha = True

            try:
                self.recaptcha_challenge_id = RECAPTCHA_CHALLENGE_ID_RE.search(
                    regular_data).group(1)
            except Exception, e:
                msg = "Captcha challenge not found!"
                log.error(msg)
                log.error(e.message)
                tmp_dump(page_data, self.url)
                raise DownloadError(msg)