Torrent Download:
- Supporta solo Film - Monitor di Download - Rinominazione dei file alla fine del download
This commit is contained in:
91
lib/torrentool/utils.py
Normal file
91
lib/torrentool/utils.py
Normal file
@@ -0,0 +1,91 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user