コード例 #1
0
ファイル: Wupload.py プロジェクト: efranciulli/guicavane
    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)
コード例 #2
0
ファイル: Wupload.py プロジェクト: pepetruenos/guicavane
    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)
コード例 #3
0
ファイル: api.py プロジェクト: pepetruenos/guicavane
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>")
コード例 #4
0
ファイル: Wupload.py プロジェクト: manuelnaranjo/guicavane
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"
コード例 #5
0
ファイル: UrlOpen.py プロジェクト: MatiasGCF/guicavane
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. """
コード例 #6
0
ファイル: Bitshare.py プロジェクト: MatiasGCF/guicavane
"""
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)
コード例 #7
0
ファイル: Megaupload.py プロジェクト: MatiasGCF/guicavane
#!/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)
コード例 #8
0
ファイル: api.py プロジェクト: MatiasGCF/guicavane
"""

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

コード例 #9
0
ファイル: Debug.py プロジェクト: seppo0010/freevocavane
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))
コード例 #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)
コード例 #11
0
ファイル: __init__.py プロジェクト: seppo0010/freevocavane
#!/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)
コード例 #12
0
ファイル: Megaupload.py プロジェクト: seppo0010/freevocavane
"""

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)
コード例 #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"
コード例 #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()
コード例 #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

コード例 #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)
コード例 #17
0
ファイル: Debug.py プロジェクト: MatiasGCF/guicavane
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))
コード例 #18
0
ファイル: api.py プロジェクト: manuelnaranjo/guicavane
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>')
コード例 #19
0
ファイル: Wupload.py プロジェクト: MatiasGCF/guicavane
#!/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
コード例 #20
0
ファイル: Megaupload.py プロジェクト: pepetruenos/guicavane
#!/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):
        """
コード例 #21
0
ファイル: ThreadRunner.py プロジェクト: MatiasGCF/guicavane
"""
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
コード例 #22
0
ファイル: Player.py プロジェクト: MatiasGCF/guicavane
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
コード例 #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