mirror of
https://github.com/hastagAB/Awesome-Python-Scripts.git
synced 2024-11-30 15:31:07 +00:00
94 lines
2.9 KiB
Python
94 lines
2.9 KiB
Python
|
import requests
|
||
|
import json
|
||
|
import time
|
||
|
from requests.adapters import HTTPAdapter
|
||
|
from requests.packages.urllib3.util.retry import Retry
|
||
|
|
||
|
|
||
|
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 create_json_file(json_file_number):
|
||
|
name = 'torrents' + str(json_file_number) + '.json'
|
||
|
with open(name, 'w') as f:
|
||
|
content = {}
|
||
|
json.dump(content, f)
|
||
|
|
||
|
|
||
|
def add_torrent_to_json_file(json_file_number):
|
||
|
name = 'torrents' + str(json_file_number) + '.json'
|
||
|
with open(name, 'r') as f:
|
||
|
content = json.load(f)
|
||
|
content[title_long] = {'720_bluray': torrent_720_bluray, '1080_bluray': torrent_1080_bluray,
|
||
|
'720_web': torrent_720_web, '1080_web': torrent_1080_web}
|
||
|
with open(name, 'w') as f:
|
||
|
json.dump(content, f)
|
||
|
|
||
|
|
||
|
json_file_number = 1
|
||
|
create_json_file(json_file_number)
|
||
|
url = "https://yts.am/api/v2/list_movies.json?limit=50&page="
|
||
|
|
||
|
count = 0
|
||
|
movie_count = 0
|
||
|
for page in range(1, 424):
|
||
|
count += 1
|
||
|
api_url = url + str(page)
|
||
|
time.sleep(1)
|
||
|
print(api_url)
|
||
|
response = requests_retry_session().get(api_url, timeout=3).json()
|
||
|
time.sleep(2)
|
||
|
data = response.get('data')
|
||
|
movies = data.get('movies')
|
||
|
if movies is None:
|
||
|
print("No more torrents on this page")
|
||
|
exit()
|
||
|
for movie in movies:
|
||
|
movie_count += 1
|
||
|
title_long = movie.get('title_long')
|
||
|
print(title_long)
|
||
|
print('movie_count', movie_count)
|
||
|
torrents = movie.get('torrents')
|
||
|
if torrents is None:
|
||
|
print("no torrent for this movie")
|
||
|
continue
|
||
|
torrent_720_web = None
|
||
|
torrent_1080_web = None
|
||
|
torrent_720_bluray = None
|
||
|
torrent_1080_bluray = None
|
||
|
for torrent in torrents:
|
||
|
if torrent.get('quality') == "720p":
|
||
|
if torrent.get('type') == "web":
|
||
|
torrent_720_web = torrent.get('url')
|
||
|
elif torrent.get('type') == "bluray":
|
||
|
torrent_720_bluray = torrent.get('url')
|
||
|
elif torrent.get('quality') == "1080p":
|
||
|
if torrent.get('type') == "web":
|
||
|
torrent_1080_web = torrent.get('url')
|
||
|
elif torrent.get('type') == "bluray":
|
||
|
torrent_1080_bluray = torrent.get('url')
|
||
|
if count < 20:
|
||
|
add_torrent_to_json_file(json_file_number)
|
||
|
else:
|
||
|
count = 1
|
||
|
json_file_number += 1
|
||
|
create_json_file(json_file_number)
|
||
|
add_torrent_to_json_file(json_file_number)
|