PostscodeMostly Cloudy, 36°F
Code: traktpub.py
from dateutil.tz import UTC from dateutil.parser import parse from datetime import datetime
import conf import json import os import feedparser import requests
def make_id(seed): return seed.replace('/', '-').replace(':', '-').replace(',', '-')
feed = feedparser.parse(conf.FEED_URL) now = datetime.utcnow().astimezone(UTC)
for entry in feed['items']: data = { 'title': entry['title'], 'summary': entry['summary'], 'link': entry['link'] }
if len(data['summary']) == 0:
data['summary'] = entry['title']
when = parse(entry['published'])
poster_url = entry['media_content'][]['url']
if 'Episode' in entry['id']:
data['type'] = 'tv'
elif 'Movie' in entry['id']:
data['type'] = 'movie'
media_id = make_id(entry['id'])
footprint = conf.HISTORY_PATH + '/' + media_id
if os.path.exists(footprint):
print('Skipping ->', media_id, '->', data['title'])
continue
print('Publishing ->', media_id, '->', data['title'])
poster_response = requests.get(poster_url)
response = requests.post('https://cleverdevil.io/watching/trakt/', data={
'payload': json.dumps(data)
}, files={
'photo': (
poster_url.rsplit('/', 1)[],
poster_response.content,
poster_response.headers['Content-Type'],
{'Expires': '0'}
)
})
if response.status_code in (200, 201, 202):
open(footprint, 'w').write(json.dumps(data))
print('Successfully published ->', media_id)
else:
print('Failed to publish ->', media_id)
Posted by Quill