1
0
mirror of https://github.com/moparisthebest/SickRage synced 2024-12-14 20:12:19 -05:00
SickRage/sickbeard/notifiers/trakt.py

128 lines
4.8 KiB
Python
Raw Normal View History

# Author: Dieter Blomme <dieterblomme@gmail.com>
# URL: http://code.google.com/p/sickbeard/
#
2014-05-23 08:37:22 -04:00
# This file is part of SickRage.
#
2014-05-23 08:37:22 -04:00
# SickRage is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
2014-05-23 08:37:22 -04:00
# SickRage is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
2014-05-23 08:37:22 -04:00
# along with SickRage. If not, see <http://www.gnu.org/licenses/>.
import sickbeard
from sickbeard import logger
from sickbeard.exceptions import ex
2014-11-28 17:07:26 -05:00
from lib.trakt import TraktAPI
from lib.trakt.exceptions import traktException, traktServerBusy, traktAuthException
class TraktNotifier:
"""
A "notifier" for trakt.tv which keeps track of what has and hasn't been added to your library.
"""
def notify_snatch(self, ep_name):
pass
def notify_download(self, ep_name):
pass
def notify_subtitle_download(self, ep_name, lang):
pass
def notify_git_update(self, new_version):
pass
def update_library(self, ep_obj):
"""
Sends a request to trakt indicating that the given episode is part of our library.
2015-01-25 15:14:57 -05:00
ep_obj: The TVEpisode object to add to trakt
"""
trakt_id = sickbeard.indexerApi(ep_obj.show.indexer).config['trakt_id']
2015-01-30 19:42:12 -05:00
trakt_api = TraktAPI(sickbeard.TRAKT_API_KEY, sickbeard.TRAKT_USERNAME, sickbeard.TRAKT_PASSWORD, sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT)
if sickbeard.USE_TRAKT:
2014-11-28 17:07:26 -05:00
try:
# URL parameters
data = {
2015-01-25 15:14:57 -05:00
'shows': [
{
'title': ep_obj.show.name,
'year': ep_obj.show.startyear,
'ids': {},
'seasons': [
{
'number': ep_obj.season,
'episodes': [
{
'number': ep_obj.episode
}
]
}
]
}
]
}
if trakt_id == 'tvdb_id':
2015-01-25 15:14:57 -05:00
data['shows'][0]['ids']['tvdb'] = ep_obj.show.indexerid
else:
data['shows'][0]['ids']['tvrage'] = ep_obj.show.indexerid
2014-11-28 17:07:26 -05:00
# update library
2015-01-25 15:14:57 -05:00
trakt_api.traktRequest("sync/collection", data, method='POST')
2014-11-28 17:07:26 -05:00
# remove from watchlist
if sickbeard.TRAKT_REMOVE_WATCHLIST:
2015-01-25 15:14:57 -05:00
trakt_api.traktRequest("sync/watchlist/remove", data, method='POST')
2014-11-28 17:07:26 -05:00
if sickbeard.TRAKT_REMOVE_SERIESLIST:
data = {
'shows': [
{
'title': ep_obj.show.name,
2015-01-25 15:14:57 -05:00
'year': ep_obj.show.startyear,
'ids': {}
}
2014-11-28 17:07:26 -05:00
]
}
if trakt_id == 'tvdb_id':
2015-01-25 15:14:57 -05:00
data['shows'][0]['ids']['tvdb'] = ep_obj.show.indexerid
else:
data['shows'][0]['ids']['tvrage'] = ep_obj.show.indexerid
2015-01-25 15:14:57 -05:00
trakt_api.traktRequest("sync/watchlist/remove", data, method='POST')
2014-11-28 17:07:26 -05:00
except (traktException, traktAuthException, traktServerBusy) as e:
logger.log(u"Could not connect to Trakt service: %s" % ex(e), logger.WARNING)
def test_notify(self, username, password, disable_ssl):
"""
Sends a test notification to trakt with the given authentication info and returns a boolean
representing success.
2015-01-25 15:14:57 -05:00
api: The api string to use
username: The username to use
password: The password to use
2015-01-25 15:14:57 -05:00
Returns: True if the request succeeded, False otherwise
"""
2014-11-28 17:07:26 -05:00
try:
2015-01-30 19:42:12 -05:00
trakt_api = TraktAPI(sickbeard.TRAKT_API_KEY, username, password, disable_ssl, sickbeard.TRAKT_TIMEOUT)
2015-01-25 15:14:57 -05:00
trakt_api.validateAccount()
return "Test notice sent successfully to Trakt"
2014-11-28 17:07:26 -05:00
except (traktException, traktAuthException, traktServerBusy) as e:
logger.log(u"Could not connect to Trakt service: %s" % ex(e), logger.WARNING)
2015-01-25 15:14:57 -05:00
return "Test notice failed to Trakt: %s" % ex(e)
notifier = TraktNotifier