Esempio n. 1
0
    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)
        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)
Esempio n. 2
0
    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)
        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)
Esempio n. 3
0
import re
import json

import urls
from guicavane.Hosts.Base import *
from guicavane.Utils.Log import console
from guicavane.Utils.Debug import tmp_dump
from guicavane.Utils.UrlOpen import UrlOpen

display_name = "Cuevana"
display_image = "cuevana.png"
implements = ["Shows", "Movies", "Recomended", "Latest"]

url_open = UrlOpen()
log = console("Hosts Cuevana")


def _match_or_empty_string(re_obj, data, group):
    try:
        return re_obj.search(data).group(group)
    except:
        return ""


class Episode(BaseEpisode):
    _sources_re = re.compile('sources = ({.*?}), sel_source')
    _image_re = re.compile('<div class="img"><img src="(.*?)"/></div>')
    _description_re = re.compile('<h2>Sinopsis</h2>(.*?)<div class="sep">',
                                 re.DOTALL)
    _cast_re = re.compile("<a href='#!/buscar/actor:.*?'>(.*?)</a>")
Esempio n. 4
0
import gobject
import base64

from guicavane.Gettext import gettext
from guicavane.Paths import HOSTS_IMAGES_DIR, SEP
from guicavane.Utils.UrlOpen import UrlOpen, DownloadError
from guicavane.Config import Config
from guicavane.Accounts import ACCOUNTS
from CaptchaWindow import CaptchaWindow, CAPTCHA_IMAGE_PATH

from Base import BaseDownloader

from guicavane.Utils.Log import console
from guicavane.Utils.Debug import tmp_dump

log = console("Downloaders Wupload")


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

URL_ID_RE = re.compile(".*/file/(.*)/.*")
REGULAR_URL_RE = re.compile('href="(.*?)\?start=1"')
RECAPTCHA_CHALLENGE_ID_RE = re.compile('Recaptcha.create\("(.*?)"')
RECAPTCHA_NEW_CHALLENGE_RE = re.compile("challenge : '(.+?)',")
WAITING_TIME_RE = re.compile('var countDownDelay = (\d+);')
TM_RE = re.compile("id='tm' name='tm' value='(\d+)' />")
TM_HASH_RE = re.compile("id='tm_hash' name='tm_hash' value='(?P<value>[0-9a-f]*?)' />")
FILE_URL_RE = re.compile('<span>Download Ready </span></h3>.*?' \
                         '<p><a href="(.*?)">', re.DOTALL)
API_DOWNLOAD="http://api.wupload.com/link?method=getDownloadLink&u=%s&p=%s&ids=%s&redirect=true"
Esempio n. 5
0
import time
import urllib
import socket
import httplib
import urllib2
import cookielib
import functools
from StringIO import StringIO

from Cached import Cached
from guicavane.Config import Config
from guicavane.Paths import CACHE_DIR, COOKIES_FILE
from guicavane.Utils.Log import console
from guicavane.Constants import DEFAULT_REQUEST_TIMEOUT, CUSTOM_DNS

log = console("UrlOpen")

HEADERS = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 ' \
                  '(KHTML, like Gecko) Chrome/17.0.963.2 Safari/535.11',
    'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
}

RETRY_TIMES = 5
cached = Cached.get()
cached.set_cache_dir(CACHE_DIR)

class DownloadError(Exception):
    """ Indicates a downloading error. """
Esempio n. 6
0
"""
Bitshare Downloader.
"""

import re
import time
import gobject

from Base import BaseDownloader
from guicavane.Gettext import gettext
from guicavane.Utils.Log import console
from guicavane.Paths import HOSTS_IMAGES_DIR, SEP
from guicavane.Utils.UrlOpen import UrlOpen, DownloadError
from CaptchaWindow import CaptchaWindow, CAPTCHA_IMAGE_PATH

log = console("Downloaders Bitshare")

AJAXDL_RE = re.compile('var ajaxdl = "(.*?)";')

REQUEST_URL = "http://bitshare.com/files-ajax/%s/request.html"

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

RECAPTCHA_CHALLENGE_ID_RE = re.compile('<script type="text/javascript" ' \
                     'src="http://api.recaptcha.net/challenge\?k=(.+?) ">')
RECAPTCHA_NEW_CHALLENGE_RE = re.compile("challenge : '(.+?)',")

MAIN_URL_OPEN = UrlOpen(use_cache=False)
CAPTCHA_URL_OPEN = UrlOpen(use_cache=False)
Esempio n. 7
0
#!/usr/bin/env python
# coding: utf-8

"""
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)
Esempio n. 8
0
"""

import re
from hashlib import md5

import urls
from guicavane.Hosts.Base import *
from guicavane.Utils.Log import console
from guicavane.Utils.UrlOpen import UrlOpen

display_name = "Nooo"
display_image = "nooo.png"
implements = ["Movies"]

url_open = UrlOpen()
log = console("Hosts Noo")

HOSTMAP = {
    'http://bitshare.com': 'bitshare',
    'http://megaupload.com': 'megaupload',
}


class Episode(BaseEpisode):
    pass  # Not implemented


class Season(BaseSeason):
    pass  # Not implemented

Esempio n. 9
0
from guicavane.Utils.Log import console
from tempfile import NamedTemporaryFile

log = console()


def tmp_dump(data, what="Data"):
    """
    Create a dump file of data in the temp directory, with a random name
    """
    with NamedTemporaryFile(delete=False) as fd:
        name = fd.name
        fd.write(data)
    log.debug("Dumped '%s' in '%s'" % (what, name))
Esempio n. 10
0
"""
Bitshare Downloader.
"""

import re
import time
import gobject

from Base import BaseDownloader
from guicavane.Gettext import gettext
from guicavane.Utils.Log import console
from guicavane.Paths import HOSTS_IMAGES_DIR, SEP
from guicavane.Utils.UrlOpen import UrlOpen, DownloadError
from CaptchaWindow import CaptchaWindow, CAPTCHA_IMAGE_PATH

log = console("Downloaders Bitshare")

AJAXDL_RE = re.compile('var ajaxdl = "(.*?)";')

REQUEST_URL = "http://bitshare.com/files-ajax/%s/request.html"

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

RECAPTCHA_CHALLENGE_ID_RE = re.compile('<script type="text/javascript" ' \
                     'src="http://api.recaptcha.net/challenge\?k=(.+?) ">')
RECAPTCHA_NEW_CHALLENGE_RE = re.compile("challenge : '(.+?)',")

MAIN_URL_OPEN = UrlOpen(use_cache=False)
CAPTCHA_URL_OPEN = UrlOpen(use_cache=False)
Esempio n. 11
0
#!/usr/bin/env python
# coding: utf-8

import os
import sys
import Cuevana  # FIXME: always avaliable because it's guicavane's default
from guicavane.Paths import MAIN_DIR
from guicavane.Utils.Log import console

log = console("Hosts")

if sys.platform == "win32":
    APIS_DIR = os.path.join(MAIN_DIR, "Hosts")
else:
    APIS_DIR = os.path.dirname(os.path.abspath(__file__))

AVALIABLE_APIS = []

apis = []
for dirname in os.listdir(APIS_DIR):
    if os.path.isdir(os.path.join(APIS_DIR, dirname)):
        apis.append("guicavane.Hosts." + dirname)

for api in apis:
    try:
        AVALIABLE_APIS.append(__import__(api, fromlist=[api]).api)
    except Exception, error:
        log.warn("Couldn't import %s api: %s" % (api, error))
    else:
        log.info('Adding api site "%s"' % api)
Esempio n. 12
0
"""

import re
import time
import gobject

from guicavane.Gettext import gettext
from guicavane.Paths import HOSTS_IMAGES_DIR, SEP
from guicavane.Utils.UrlOpen import UrlOpen, DownloadError

from Base import BaseDownloader

from guicavane.Utils.Debug import tmp_dump
from guicavane.Utils.Log import console

log = console("Downloaders Megaupload")


MEGALINK_RE = re.compile('<a.*?href="(http://.*megaupload.*/files/.*?)"')
URL_OPEN = UrlOpen(use_cache=False)


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

    name = "Megaupload"
    icon_path = HOSTS_IMAGES_DIR + SEP + "megaupload.png"
    accept_ranges = True

    def __init__(self, gui_manager, url):
        BaseDownloader.__init__(self, URL_OPEN, gui_manager, url)
Esempio n. 13
0
import gobject
import base64

from guicavane.Gettext import gettext
from guicavane.Paths import HOSTS_IMAGES_DIR, SEP
from guicavane.Utils.UrlOpen import UrlOpen, DownloadError
from guicavane.Config import Config
from guicavane.Accounts import ACCOUNTS
from CaptchaWindow import CaptchaWindow, CAPTCHA_IMAGE_PATH

from Base import BaseDownloader

from guicavane.Utils.Log import console
from guicavane.Utils.Debug import tmp_dump

log = console("Downloaders Wupload")

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

URL_ID_RE = re.compile(".*/file/(.*)/.*")
REGULAR_URL_RE = re.compile('href="(.*?)\?start=1"')
RECAPTCHA_CHALLENGE_ID_RE = re.compile('Recaptcha.create\("(.*?)"')
RECAPTCHA_NEW_CHALLENGE_RE = re.compile("challenge : '(.+?)',")
WAITING_TIME_RE = re.compile('var countDownDelay = (\d+);')
TM_RE = re.compile("id='tm' name='tm' value='(\d+)' />")
TM_HASH_RE = re.compile(
    "id='tm_hash' name='tm_hash' value='(?P<value>[0-9a-f]*?)' />")
FILE_URL_RE = re.compile('<span>Download Ready </span></h3>.*?' \
                         '<p><a href="(.*?)">', re.DOTALL)
API_DOWNLOAD = "http://api.wupload.com/link?method=getDownloadLink&u=%s&p=%s&ids=%s&redirect=true"
Esempio n. 14
0
import time
import string
import gobject
import subprocess

import Downloaders
from guicavane.Config import Config
from guicavane.Gettext import gettext
from guicavane.Utils.Log import console
from guicavane.Utils.UrlOpen import UrlOpen
from guicavane.Paths import HOSTS_GUI_FILE
from guicavane.Hosts.Base import BaseMovie, BaseEpisode
from guicavane.Constants import HOSTS_VIEW_COLUMN_OBJECT, \
                                HOSTS_VIEW_COLUMN_TEXT

log = console("Player")


class Player(object):
    """
    Class that takes care of the downloading and correctly
    playing the file.
    """
    def __init__(self,
                 gui_manager,
                 file_object,
                 file_path=None,
                 download_only=False,
                 choose_host=False):
        self.gui_manager = gui_manager
        self.config = Config.get()
Esempio n. 15
0
"""

import re
from hashlib import md5

import urls
from guicavane.Hosts.Base import *
from guicavane.Utils.Log import console
from guicavane.Utils.UrlOpen import UrlOpen

display_name = "Nooo"
display_image = "nooo.png"
implements = ["Movies"]

url_open = UrlOpen()
log = console("Hosts Noo")

HOSTMAP = {
    'http://bitshare.com': 'bitshare',
    'http://megaupload.com': 'megaupload',
}


class Episode(BaseEpisode):
    pass  # Not implemented


class Season(BaseSeason):
    pass  # Not implemented

Esempio n. 16
0
#!/usr/bin/env python
# coding: utf-8
"""
Megaupload Downloader.
"""

import re
import json

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.Wupload")

LOGIN_PAGE = "http://www.wupload/account/login"
ACCOUNT_PAGE = "http://www.wupload/account/settings"
CHECK_STATUS = "http://api.wupload.com/user?method=getInfo&format=json&u=%s&p=%s"
URL_OPEN = UrlOpen(use_cache=False)


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

    name = "Wupload"
    account_wait = {None: 60, 'Regular': 60, 'Premium': 0}
    premium = False

    def __init__(self):
        BaseAccount.__init__(self)
Esempio n. 17
0
from guicavane.Utils.Log import console
from tempfile import NamedTemporaryFile

log = console()

def tmp_dump(data, what="Data"):
    """
    Create a dump file of data in the temp directory, with a random name
    """
    with NamedTemporaryFile(delete=False) as fd:
        name = fd.name
        fd.write(data)
    log.debug("Dumped '%s' in '%s'" % (what, name))
Esempio n. 18
0
import re
import json

import urls
from guicavane.Gettext import gettext
from guicavane.Hosts.Base import *
from guicavane.Utils.Log import console
from guicavane.Utils.Debug import tmp_dump
from guicavane.Utils.UrlOpen import UrlOpen

display_name = "Cuevana"
display_image = "cuevana.png"
implements = ["Shows", "Movies", "Recomended", "Latest"]

url_open = UrlOpen()
log = console("Hosts Cuevana")


def _match_or_empty_string(re_obj, data, group):
    try:
        return re_obj.search(data).group(group)
    except:
        return ""


class Episode(BaseEpisode):
    _sources_re = re.compile('sources = ({.*?}), sel_source')
    _image_re = re.compile('<div class="img"><img src="(.*?)"/></div>')
    _description_re = re.compile('<h2>Sinopsis</h2>(.*?)<div class="sep">', re.DOTALL)
    _cast_re = re.compile("<a href='#!/buscar/actor:.*?'>(.*?)</a>")
    _genere_re = re.compile('<b>Género:</b>(.*?)</div>')
Esempio n. 19
0
#!/usr/bin/env python
# coding: utf-8

"""
Megaupload Downloader.
"""

import re
import json

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.Wupload")

LOGIN_PAGE = "http://www.wupload/account/login"
ACCOUNT_PAGE = "http://www.wupload/account/settings"
CHECK_STATUS = "http://api.wupload.com/user?method=getInfo&format=json&u=%s&p=%s"
URL_OPEN = UrlOpen(use_cache=False)

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

    name = "Wupload"
    account_wait = {None: 60,
                    'Regular' : 60,
                    'Premium' : 0}
    premium = False
Esempio n. 20
0
#!/usr/bin/env python
# coding: utf-8
"""
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):
        """
Esempio n. 21
0
"""
ThreadRunner.

This module provides the class GtkThreadRunner that is used
to run a function on a thread and return the result when it's done
"""

import Queue
import gobject
import threading
import traceback
from guicavane.Utils.Log import console
from StringIO import StringIO

log = console("ThreadRunner")


class GtkThreadRunner(threading.Thread):
    """
    Run `func` in a thread with `args` and `kwargs` as arguments, when
    finished call callback with the result obtained or an exception caught.
    """

    def __init__(self, callback, func, *args, **kwargs):
        threading.Thread.__init__(self)
        self.setDaemon(True)

        self.callback = callback
        self.func = func
        self.args = args
Esempio n. 22
0
import time
import string
import gobject
import subprocess

import Downloaders
from guicavane.Config import Config
from guicavane.Gettext import gettext
from guicavane.Utils.Log import console
from guicavane.Utils.UrlOpen import UrlOpen
from guicavane.Paths import HOSTS_GUI_FILE
from guicavane.Hosts.Base import BaseMovie, BaseEpisode
from guicavane.Constants import HOSTS_VIEW_COLUMN_OBJECT, \
                                HOSTS_VIEW_COLUMN_TEXT

log = console("Player")


class Player(object):
    """
    Class that takes care of the downloading and correctly
    playing the file.
    """

    def __init__(self, gui_manager, file_object,
                 file_path=None, download_only=False, choose_host=False):
        self.gui_manager = gui_manager
        self.config = Config.get()

        self.file_object = file_object
        self.download_only = download_only
Esempio n. 23
0
# coding: utf-8
"""
ThreadRunner.

This module provides the class GtkThreadRunner that is used
to run a function on a thread and return the result when it's done
"""

import Queue
import gobject
import threading
import traceback
from guicavane.Utils.Log import console
from StringIO import StringIO

log = console("ThreadRunner")


class GtkThreadRunner(threading.Thread):
    """
    Run `func` in a thread with `args` and `kwargs` as arguments, when
    finished call callback with the result obtained or an exception caught.
    """
    def __init__(self, callback, func, *args, **kwargs):
        threading.Thread.__init__(self)
        self.setDaemon(True)

        self.callback = callback
        self.func = func
        self.args = args
        self.kwargs = kwargs