You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1003 B
Python
35 lines
1003 B
Python
#!/usr/bin/env python3
|
|
# List latest good movies on YTS
|
|
|
|
from simple_rest_client.api import API
|
|
from simple_rest_client.resource import Resource
|
|
import progressbar
|
|
|
|
|
|
class MovieResource(Resource):
|
|
actions = {
|
|
'list': {'method': 'GET', 'url': 'list_movies.json'},
|
|
}
|
|
|
|
|
|
def good(movie):
|
|
return movie['rating'] >= 7.5
|
|
|
|
|
|
api = API(api_root_url='https://yts.am/api/v2')
|
|
api.add_resource(resource_name='movies', resource_class=MovieResource)
|
|
|
|
max_movies = 20
|
|
with progressbar.ProgressBar(max_value=max_movies) as bar:
|
|
page = 0
|
|
movies = []
|
|
while len(movies) < max_movies and page < 20:
|
|
page += 1
|
|
movies_new = api.movies.list(params={'limit': 50, 'page': page}).body['data']['movies']
|
|
movies_new = [movie for movie in movies_new if good(movie)]
|
|
movies += movies_new
|
|
bar.update(min(max_movies, len(movies)))
|
|
|
|
for movie in sorted(movies, key=lambda m: m['rating'], reverse=True):
|
|
print('{rating:3.1f} {title}\n {url}'.format(**movie))
|