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 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)
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)
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})
""" 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.
'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)
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
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)
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
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)