Ejemplo n.º 1
0
 def download(self, video_file):
     subtitle = None
     settings = get_settings()
     download_dir = settings.save_path
     log.info("Downloading subtitle")
     filepath = join(download_dir, video_file[0])
     guess = guess_video_info(filepath, info=['filename'])
     video = Video.fromguess(filepath, guess)
     video.size = video_file[1]
     try:
         subtitle = download_best_subtitles([video], {Language(self.lang)},
                                            single=True)
     except ValueError:
         pass
     if subtitle is not None and len(subtitle):
         log.info("CLAH %s %s", download_dir, video.name)
         subtitle = get_subtitle_path(
             join(
                 download_dir,
                 video.name.replace("(",
                                    "\(").replace(")",
                                                  "\)").replace(" ", "\ ")))
     log.info(
         "video_file: %s, filepath: %s, guess: %s, video: %s, "
         "subtitle: %s", video_file, filepath, guess, video, subtitle)
     return subtitle
Ejemplo n.º 2
0
    def get_torrent(name, season=None, episode=None):
        interface = get_interface()
        settings = get_settings()
        path = abspath(__file__)
        dir_path = dirname(path)
        exec_ = join(dir_path, "..", "main.py")
        command = '%s %s \"%s\" ' % (py_exec, exec_, name)
        if season is not None:
            command += "%s %s " % (season, episode)
        lock = Lock(LOCK_FILE)
        if lock.is_same_file(name, season, episode) and \
                is_process_running(lock.get_pid()):
            data = lock._get_file_data()
            port = data[4]
        else:
            if settings.force_ts_proxy_port:
                port = settings.ts_proxy_port
            else:
                port = get_free_port()
            command += "--daemon --port %s " % port
            log.info(command)
            process = Popen(command, shell=True, stdout=PIPE, stderr=STDOUT)
            sleep(1)

        redirect_url = "http://%s:%s" % (interface, port)
        serving = False
        while not serving:
            try:
                req = requests.get("%s/status" % redirect_url)
                serving = True
            except requests.ConnectionError, e:
                sleep(1)
Ejemplo n.º 3
0
 def __init__(self, manager):
     settings = get_settings()
     self.settings = settings.strategy
     self.manager = manager
     self.holding_stream = True
     self.handle = manager.handle
     self.moov_downloaded = False
     self.download_lasts = False
     self.chunks_strat = self.settings.chunks_strat
Ejemplo n.º 4
0
 def __init__(self, manager):
     settings = get_settings()
     self.settings = settings.strategy
     self.manager = manager
     self.holding_stream = True
     self.handle = manager.handle
     self.moov_downloaded = False
     self.download_lasts = False
     self.chunks_strat = self.settings.chunks_strat
Ejemplo n.º 5
0
 def __init__(self, name, season=None, episode=None, sub_lang=None,
              serve=False, quality=None, port=None, player=None,
              search=None, use_cache=True):
     self.name = name
     self.season = season
     self.episode = episode
     self.sub_lang = sub_lang
     self.serve = serve
     self.quality = quality
     self.port = port
     self.player = player
     if search is None:
         settings = get_settings()
         search = settings.default_search_engine
     self.search_engine = search
     self.use_cache = use_cache
Ejemplo n.º 6
0
def log_set_up(verbose=False):
    settings = get_settings()
    if not exists(settings.save_path):
        mkdir(settings.save_path)
    logfile = os.path.join(settings.save_path, "touchandgo.log")
    handler = RotatingFileHandler(logfile, maxBytes=1e6, backupCount=10)
    formatter = logging.Formatter("%(asctime)s  %(name)-22s  "
                                  "%(levelname)-8s %(message)s")
    handler.setFormatter(formatter)
    logger = logging.getLogger()
    logger.addHandler(handler)
    if DEBUG or verbose:
        logger.setLevel(logging.DEBUG)
    else:
        logger.setLevel(logging.INFO)

    add_stdout_handler(logger, formatter)
Ejemplo n.º 7
0
def log_set_up(verbose=False):
    settings = get_settings()
    if not exists(settings.save_path):
        mkdir(settings.save_path)

    logfile = "%s/touchandgo.log" % (settings.save_path)
    handler = RotatingFileHandler(logfile, maxBytes=1e6, backupCount=10)
    formatter = logging.Formatter("%(asctime)s  %(name)-22s  "
                                  "%(levelname)-8s %(message)s")
    handler.setFormatter(formatter)
    logger = logging.getLogger()
    logger.addHandler(handler)
    if DEBUG or verbose:
        logger.setLevel(logging.DEBUG)
    else:
        logger.setLevel(logging.INFO)

    add_stdout_handler(logger, formatter)
Ejemplo n.º 8
0
 def download(self, video_file):
     settings = get_settings()
     download_dir = settings['save_path']
     print("Downloading subtitle")
     log.info("Downloading subtitle")
     filepath = join(download_dir, video_file[0])
     guess = guess_video_info(filepath, info=['filename'])
     video = Video.fromguess(filepath, guess)
     video.size = video_file[1]
     subtitle = download_best_subtitles([video], {Language(self.lang)},
                                        single=True)
     if not len(subtitle):
         subtitle = None
     else:
         subtitle = get_subtitle_path(join(download_dir, video.name))
     log.info("video_file: %s, filepath: %s, guess: %s, video: %s"
              "subtitle: %s", video_file, filepath, guess, video, subtitle)
     return subtitle
Ejemplo n.º 9
0
    def __init__(self, name, season=None, episode=None, sub_lang=None,
                 serve=False, quality=None, port=None, player=None,
                 search=None, use_cache=True):
        self.name = name
        self.season = season
        self.episode = episode
        self.sub_lang = sub_lang
        self.serve = serve
        self.quality = quality
        self.port = port
        self.player = player
        if search is None:
            settings = get_settings()
            search = settings.default_search_engine
        self.search_engine = search
        self.use_cache = use_cache

        set_config_dir()
Ejemplo n.º 10
0
    def __init__(self,
                 magnet,
                 port=None,
                 sub_lang=None,
                 serve=False,
                 player=None):
        self.settings = get_settings()
        self.magnet = magnet
        if port is None:
            port = DEFAULT_PORT
        port = int(port)
        if not is_port_free(port):
            port = get_free_port()

        log.info(
            "[Magnet]: %s [Port]: %s [Sub_lang]: %s [Serve]: %s "
            "[Player] %s ", magnet, port, sub_lang, serve, player)

        self.port = port
        self.serve = serve
        if player is None:
            player = self.settings.players.default
        self.player = player

        # number of pieces to wait until start streaming
        # we are waiting untill all the first peices are downloaded
        # the biggest file which is supposed to be a video file
        self._video_file = None
        self.callback = serve_file
        self._served_blocks = None
        self.streaming = False

        self.stream_th = None
        self.player_th = None
        self.httpd = None
        self._guess = None

        self.init_handle()
        self.strategy = self.strategy_class(self)

        if sub_lang is not None:
            self.subtitle = self.sub_downloader_class(sub_lang)
        else:
            self.subtitle = None
Ejemplo n.º 11
0
    def __init__(self, magnet, port=None, sub_lang=None, serve=False,
                 player=None, index_file=None):
        self.settings = get_settings()
        self.magnet = magnet
        if port is None:
            port = DEFAULT_PORT
        port = int(port)
        if not is_port_free(port):
            port = get_free_port()

        log.info("[Magnet]: %s [Port]: %s [Sub_lang]: %s [Serve]: %s "
                 "[Player] %s ",
                 magnet, port, sub_lang, serve, player)

        self.port = port
        self.serve = serve
        if player is None:
            player = self.settings.players.default
        self.player = player

        self.index_file = index_file


        # number of pieces to wait until start streaming
        # we are waiting untill all the first peices are downloaded
        # the biggest file which is supposed to be a video file
        self._video_file = None
        self.callback = serve_file
        self._served_blocks = None
        self.streaming = False

        self.stream_th = None
        self.player_th = None
        self.httpd = None
        self._guess = None

        self.init_handle()
        self.strategy = self.strategy_class(self)

        if sub_lang is not None:
            self.subtitle = self.sub_downloader_class(sub_lang)
        else:
            self.subtitle = None
Ejemplo n.º 12
0
 def download(self, video_file):
     subtitle = None
     settings = get_settings()
     download_dir = settings.save_path
     log.info("Downloading subtitle")
     filepath = join(download_dir, video_file[0])
     guess = guess_video_info(filepath, info=['filename'])
     video = Video.fromguess(filepath, guess)
     video.size = video_file[1]
     try:
         subtitle = download_best_subtitles([video], {Language(self.lang)},
                                            single=True)
     except ValueError:
         pass
     if subtitle is not None and len(subtitle):
         log.info("CLAH %s %s", download_dir, video.name)
         subtitle = get_subtitle_path(join(download_dir,
                                           video.name.replace("(", "\(")
                                           .replace(")", "\)")
                                           .replace(" ", "\ ")))
     log.info("video_file: %s, filepath: %s, guess: %s, video: %s, "
              "subtitle: %s", video_file, filepath, guess, video, subtitle)
     return subtitle
Ejemplo n.º 13
0
    def download(self, video_file):
        subtitle = None
        settings = get_settings()
        download_dir = settings.save_path
        log.info("Downloading subtitle")
        filepath = join(download_dir, video_file[0])
        guess = guessit(filepath)
        video = Video.fromguess(filepath, guess)
        video.size = video_file[1]
        try:
            subtitles = download_best_subtitles([video], {Language(self.lang)},
                                                only_one=True)
        except ValueError:
            pass
        if subtitles is not None and len(subtitles):
            subs = subtitles.values()[0]
            if len(subs):
                save_subtitles(video, subs, single=True, encoding="utf-8")
                subtitle = get_subtitle_path(video.name, None)

        log.info(
            "video_file: %s, filepath: %s, guess: %s, video: %s, "
            "subtitle: %s", video_file, filepath, guess, video, subtitle)
        return subtitle