mirror of
https://github.com/hastagAB/Awesome-Python-Scripts.git
synced 2024-11-24 04:21:08 +00:00
87 lines
3.0 KiB
Python
87 lines
3.0 KiB
Python
|
import requests
|
||
|
import os
|
||
|
import json
|
||
|
import time
|
||
|
from requests.adapters import HTTPAdapter
|
||
|
from requests.packages.urllib3.util.retry import Retry
|
||
|
|
||
|
|
||
|
os.makedirs('torrents', exist_ok=True)
|
||
|
check_path = os.path.join('torrents')
|
||
|
cache = os.listdir(check_path)
|
||
|
|
||
|
|
||
|
def requests_retry_session(
|
||
|
retries=3,
|
||
|
backoff_factor=0.3,
|
||
|
status_forcelist=(500, 502, 504),
|
||
|
session=None,
|
||
|
):
|
||
|
session = session or requests.Session()
|
||
|
retry = Retry(
|
||
|
total=retries,
|
||
|
read=retries,
|
||
|
connect=retries,
|
||
|
backoff_factor=backoff_factor,
|
||
|
status_forcelist=status_forcelist,
|
||
|
)
|
||
|
adapter = HTTPAdapter(max_retries=retry)
|
||
|
session.mount('http://', adapter)
|
||
|
session.mount('https://', adapter)
|
||
|
return session
|
||
|
|
||
|
|
||
|
def download_torrent(bin_content, movie_name, type):
|
||
|
torrent_name = movie_name + type + '.torrent'
|
||
|
if '/' in torrent_name:
|
||
|
torrent_name = torrent_name.split('/')[0]
|
||
|
if torrent_name in cache:
|
||
|
print("{} already downloaded".format(torrent_name))
|
||
|
path = os.path.join('torrents', torrent_name)
|
||
|
with open(path, 'wb') as f:
|
||
|
f.write(bin_content)
|
||
|
|
||
|
|
||
|
# write the torrents json file names here.
|
||
|
torrent_list = ['torrents1.json', 'torrents2.json', 'torrents3.json', 'torrents5.json',
|
||
|
'torrents6.json', 'torrents7.json', 'torrents8.json', 'torrents9.json',
|
||
|
'torrents10.json', 'torrents11.json', 'torrents12.json', 'torrents13.json']
|
||
|
for torrent_json_file in torrent_list:
|
||
|
if not os.path.isfile(torrent_json_file):
|
||
|
print("{} does not exist. Run yts_am_api.py script "
|
||
|
"to create json files with torrent links to download".format(
|
||
|
torrent_json_file))
|
||
|
continue
|
||
|
print(torrent_json_file)
|
||
|
with open(torrent_json_file, 'r') as f:
|
||
|
content = json.load(f)
|
||
|
movies = list(content.keys())
|
||
|
print("no. of movies: {}".format(len(movies)))
|
||
|
for movie in movies:
|
||
|
torrents = content[movie]
|
||
|
bluray_1080 = torrents.get('1080_bluray')
|
||
|
bluray_720 = torrents.get('720_bluray')
|
||
|
web_1080 = torrents.get('1080_web')
|
||
|
web_720 = torrents.get('720_web')
|
||
|
movie = movie.encode('utf-8').decode('utf-8')
|
||
|
print('movie', movie)
|
||
|
time.sleep(0.01)
|
||
|
if bluray_1080 is not None:
|
||
|
response = requests_retry_session().get(bluray_1080, timeout=3)
|
||
|
download_torrent(response.content, movie, 'bluray_1080p')
|
||
|
continue
|
||
|
elif web_1080 is not None:
|
||
|
response = requests_retry_session().get(web_1080, timeout=3)
|
||
|
download_torrent(response.content, movie, 'web_1080p')
|
||
|
continue
|
||
|
elif bluray_720 is not None:
|
||
|
response = requests_retry_session().get(bluray_720, timeout=3)
|
||
|
download_torrent(response.content, movie, 'bluray_720p')
|
||
|
continue
|
||
|
elif web_720 is not None:
|
||
|
response = requests_retry_session().get(web_720, timeout=3)
|
||
|
download_torrent(response.content, movie, 'web_720p')
|
||
|
continue
|
||
|
else:
|
||
|
print('not any torrent')
|