- Supporta solo Film - Monitor di Download - Rinominazione dei file alla fine del download
92 lines
2.4 KiB
Python
92 lines
2.4 KiB
Python
import math
|
|
from os import path
|
|
|
|
from .exceptions import RemoteUploadError, RemoteDownloadError
|
|
|
|
|
|
OPEN_TRACKERS_FILENAME = 'open_trackers.ini'
|
|
REMOTE_TIMEOUT = 4
|
|
|
|
|
|
def get_app_version():
|
|
"""Returns full version string including application name
|
|
suitable for putting into Torrent.created_by.
|
|
|
|
"""
|
|
from torrentool import VERSION
|
|
return 'torrentool/%s' % '.'.join(map(str, VERSION))
|
|
|
|
|
|
def humanize_filesize(bytes_size):
|
|
"""Returns human readable filesize.
|
|
|
|
:param int bytes_size:
|
|
:rtype: str
|
|
"""
|
|
if not bytes_size:
|
|
return '0 B'
|
|
|
|
names = ('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')
|
|
|
|
name_idx = int(math.floor(math.log(bytes_size, 1024)))
|
|
size = round(bytes_size / math.pow(1024, name_idx), 2)
|
|
|
|
return '%s %s' % (size, names[name_idx])
|
|
|
|
|
|
def upload_to_cache_server(fpath):
|
|
"""Uploads .torrent file to a cache server.
|
|
|
|
Returns upload file URL.
|
|
|
|
:rtype: str
|
|
"""
|
|
url_base = 'http://torrage.info'
|
|
url_upload = '%s/autoupload.php' % url_base
|
|
url_download = '%s/torrent.php?h=' % url_base
|
|
file_field = 'torrent'
|
|
|
|
try:
|
|
import requests
|
|
|
|
response = requests.post(url_upload, files={file_field: open(fpath, 'rb')}, timeout=REMOTE_TIMEOUT)
|
|
response.raise_for_status()
|
|
|
|
info_cache = response.text
|
|
return url_download + info_cache
|
|
|
|
except (ImportError, requests.RequestException) as e:
|
|
|
|
# Now trace is lost. `raise from` to consider.
|
|
raise RemoteUploadError('Unable to upload to %s: %s' % (url_upload, e))
|
|
|
|
|
|
def get_open_trackers_from_remote():
|
|
"""Returns open trackers announce URLs list from remote repo."""
|
|
|
|
url_base = 'https://raw.githubusercontent.com/idlesign/torrentool/master/torrentool/repo'
|
|
url = '%s/%s' % (url_base, OPEN_TRACKERS_FILENAME)
|
|
|
|
try:
|
|
import requests
|
|
|
|
response = requests.get(url, timeout=REMOTE_TIMEOUT)
|
|
response.raise_for_status()
|
|
|
|
open_trackers = response.text.splitlines()
|
|
|
|
except (ImportError, requests.RequestException) as e:
|
|
|
|
# Now trace is lost. `raise from` to consider.
|
|
raise RemoteDownloadError('Unable to download from %s: %s' % (url, e))
|
|
|
|
return open_trackers
|
|
|
|
|
|
def get_open_trackers_from_local():
|
|
"""Returns open trackers announce URLs list from local backup."""
|
|
with open(path.join(path.dirname(__file__), 'repo', OPEN_TRACKERS_FILENAME)) as f:
|
|
open_trackers = map(str.strip, f.readlines())
|
|
|
|
return list(open_trackers)
|