Esempio n. 1
0
def run():
    path = Settings.get_settings('paths')['finished_download']
    if os.path.exists(path):
        media_paths = Settings.get_settings('paths')['media']

        for download in downloads(path):
            if not check_download(download.file):
                if remove_file(download.file):
                    logger.info('removed %s (bad download)', download.filename)
                continue

            # Move the download
            if download.type not in media_paths:
                download.type = 'misc'
            dst = media_paths[download.type]
            res = move_file(download.file, dst)
            if res:
                Media.add_file(res)
                Download.insert({
                        'name': download.filename,
                        'category': download.type,
                        'path': dst,
                        'created': datetime.utcnow(),
                        }, safe=True)
                logger.info('moved %s to %s', download.filename, dst)
Esempio n. 2
0
    def process(self, src, dst, temp_dir):
        if not isinstance(src, (tuple, list)):
            src = [src]
        info = self._get_remote_info(src)
        if not info:
            return

        self.total = sum([d['size'] for d in info])
        temp_files = []
        dst_files = []
        with mkdtemp(temp_dir, prefix='transfer_') as temp_dst:
            for data in info:
                self.name = data['filename']
                temp_file = os.path.join(temp_dst, data['filename'])
                if not self._download_file(data['url'], temp_file):
                    return

                temp_files.append(temp_file)
                self.transferred = self.transferred_current

            for temp_file in temp_files:
                dst_file = move_file(temp_file, dst)
                if not dst_file:
                    return
                dst_files.append(dst_file)
                logger.info('moved finished transfer "%s" to %s', data['filename'], dst)

        return dst_files
Esempio n. 3
0
    def download(self, url, dst, temp_dir):
        files_dst = []
        with mkdtemp(temp_dir) as temp_dst:
            file = self._download(url, temp_dst)
            if not file:
                return
            dir = unpack_download(file)
            for file_ in files(dir, types='subtitles'):
                file_dst = move_file(clean_file(file_.file), dst)
                if file_dst:
                    files_dst.append(file_dst)

        return files_dst
Esempio n. 4
0
    def download(self, url, dst, temp_dir):
        files_dst = []
        with mkdtemp(temp_dir) as temp_dst:
            res = download_file(url, temp_dst, temp_dst)
            if not res:
                return
            if not self._check_file(res[0]):
                return
            dir = unpack_download(res[0])
            for file_ in files(dir, types='subtitles'):
                file_dst = move_file(clean_file(file_.file), dst)
                if file_dst:
                    files_dst.append(file_dst)

        return files_dst
Esempio n. 5
0
def manage_nzb(client, nzb_id, dst):
    try:
        nzb = client.get_nzb(nzb_id, history=True)
        if not nzb or not nzb['storage']:
            return

        if not os.path.exists(nzb['storage']):
            client.remove_nzb(nzb['nzo_id'], history=True, delete_files=True)
            logger.error('failed to find finished nzb directory "%s" (%s)', nzb['storage'], repr(nzb))
            media.remove_file(nzb['path'])
            logger.error('removed nzb path "%s" (%s)', nzb['path'], repr(nzb))
            return

        if media.move_file(nzb['storage'], dst):
            client.remove_nzb(nzb['nzo_id'], history=True)
            logger.info('moved finished nzb %s to %s', nzb['storage'], dst)

    except SabnzbdError, e:
        logger.error('nzb client error: %s', str(e))