예제 #1
0
    def __init__(self, name, conf, remove_torrents=True):
        # Logger
        self._logger = logger.Logger.register(__name__)

        # Save task name
        self._name = name

        # Replace environment variables first
        pattern = re.compile(r'\$\(([^\)]+)\)')
        replace_keys = ['host', 'username', 'password']
        for key in replace_keys:
            if key in conf:
                env = pattern.match(str(conf[key]))
                if env is not None and env.group(1) in os.environ:
                    conf[key] = os.environ[env.group(1)]

        # Read configurations
        self._client_name = conf['client']
        self._client = None
        self._host = conf['host']
        self._username = conf['username'] if 'username' in conf else ''
        self._password = conf['password'] if 'password' in conf else ''
        self._enabled_remove = remove_torrents
        self._delete_data = conf[
            'delete_data'] if 'delete_data' in conf else False
        self._strategies = conf['strategies'] if 'strategies' in conf else []

        # Torrents
        self._torrents = set()
        self._remove = set()
        self._soft_remove = set()

        # Allow removing specified torrents
        if 'force_delete' in conf:
            for hash_ in conf['force_delete']:
                torrent_obj = Torrent()
                torrent_obj.hash = hash_
                torrent_obj.name = hash_
                self._remove.add(torrent_obj)
예제 #2
0
    def __init__(self, name, conf, remove_torrents=True):
        # Logger
        self._logger = logger.Logger.register(__name__)

        # Save task name
        self._name = name

        # Replace environment variables first
        pattern = re.compile(r'\$\(([^\)]+)\)')
        replace_keys = ['host', 'username', 'password']
        for key in replace_keys:
            if key in conf:
                env = pattern.match(conf[key])
                if env is not None and env.group(1) in os.environ:
                    conf[key] = os.environ[env.group(1)]

        # Read configurations
        self._client_name = conf['client']
        self._client = None
        self._host = conf['host']
        self._username = conf['username'] if 'username' in conf else ''
        self._password = conf['password'] if 'password' in conf else ''
        self._enabled_remove = remove_torrents
        self._delete_data = conf[
            'delete_data'] if 'delete_data' in conf else False
        self._strategies = conf['strategies'] if 'strategies' in conf else []

        # Torrents
        self._torrents = set()
        self._remove = set()

        # Allow removing specified torrents
        if 'force_delete' in conf:
            for hash in conf['force_delete']:
                self._remove.add(
                    Torrent(
                        hash,
                        hash,
                        '(No Category)',
                        [],
                        TorrentStatus.Unknown,
                        False,
                        0,
                        0,
                        0,
                        sys.maxsize,  # No create time
                        -1  # No seeding time
                    ))
예제 #3
0
def test_data():
    # Load input data
    input_torrents = []
    with open(os.path.join(os.path.realpath(os.path.dirname(__file__)),
                           'data.json'),
              encoding='utf-8') as f:
        data = json.load(f)
    for torrent in data:
        input_torrents.append(
            Torrent(torrent['hash'], torrent['name'],
                    torrent['category'], torrent['tracker'],
                    TorrentStatus(torrent['state']), torrent['size'],
                    torrent['ratio'], torrent['uploaded'], torrent['added_on'],
                    torrent['seeding_time']))

    return input_torrents
예제 #4
0
def test_data():
    # Load input data
    input_torrents = []
    with open_(os.path.join(os.path.realpath(os.path.dirname(__file__)),
                            'data.json'),
               encoding='utf-8') as f:
        data = json.load(f)
    for torrent in data:
        torrent_obj = Torrent()
        torrent_obj.hash = torrent['hash']
        torrent_obj.name = torrent['name']
        torrent_obj.category = [torrent['category']
                                ] if len(torrent['category']) > 0 else []
        torrent_obj.tracker = torrent['tracker']
        torrent_obj.status = TorrentStatus[torrent['state']]
        torrent_obj.stalled = torrent['is_stalled']
        torrent_obj.size = torrent['size']
        torrent_obj.ratio = torrent['ratio']
        torrent_obj.uploaded = torrent['uploaded']
        torrent_obj.create_time = torrent['added_on']
        torrent_obj.seeding_time = torrent['seeding_time']
        torrent_obj.upload_speed = torrent['upspeed']
        torrent_obj.average_upload_speed = torrent['up_speed_avg']
        torrent_obj.downloaded = torrent['downloaded']
        torrent_obj.download_speed = torrent['dlspeed']
        torrent_obj.average_download_speed = torrent['dl_speed_avg']
        torrent_obj.last_activity = torrent['last_activity']
        torrent_obj.seeder = torrent['num_complete']
        torrent_obj.connected_seeder = torrent['num_seeds']
        torrent_obj.leecher = torrent['num_incomplete']
        torrent_obj.connected_leecher = torrent['num_leechs']
        torrent_obj.progress = torrent['progress']
        input_torrents.append(torrent_obj)

    return input_torrents