You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
from couchpotato.core.logger import CPLog
|
|
from couchpotato.core.notifications.base import Notification
|
|
|
|
log = CPLog(__name__)
|
|
|
|
class Trakt(Notification):
|
|
|
|
urls = {
|
|
'base': 'http://api.trakt.tv/%s',
|
|
'library': 'movie/library/%s',
|
|
'unwatchlist': 'movie/unwatchlist/%s',
|
|
}
|
|
|
|
listen_to = ['movie.downloaded']
|
|
|
|
def notify(self, message = '', data = None, listener = None):
|
|
if not data: data = {}
|
|
|
|
post_data = {
|
|
'username': self.conf('automation_username'),
|
|
'password' : self.conf('automation_password'),
|
|
'movies': [{
|
|
'imdb_id': data['library']['identifier'],
|
|
'title': data['library']['titles'][0]['title'],
|
|
'year': data['library']['year']
|
|
}] if data else []
|
|
}
|
|
|
|
result = self.call((self.urls['library'] % self.conf('automation_api_key')), post_data)
|
|
if self.conf('remove_watchlist_enabled'):
|
|
result = result and self.call((self.urls['unwatchlist'] % self.conf('automation_api_key')), post_data)
|
|
|
|
return result
|
|
|
|
def call(self, method_url, post_data):
|
|
|
|
try:
|
|
response = self.getJsonData(self.urls['base'] % method_url, params = post_data, cache_timeout = 1)
|
|
if response:
|
|
if response.get('status') == "success":
|
|
log.info('Successfully called Trakt')
|
|
return True
|
|
except:
|
|
pass
|
|
|
|
log.error('Failed to call trakt, check your login.')
|
|
return False
|
|
|