2014-03-10 05:18:05 +00:00
|
|
|
# Author: Dieter Blomme <dieterblomme@gmail.com>
|
|
|
|
# URL: http://code.google.com/p/sickbeard/
|
|
|
|
#
|
2014-11-12 16:43:14 +00:00
|
|
|
# This file is part of SickGear.
|
2014-03-10 05:18:05 +00:00
|
|
|
#
|
2014-11-12 16:43:14 +00:00
|
|
|
# SickGear is free software: you can redistribute it and/or modify
|
2014-03-10 05:18:05 +00:00
|
|
|
# 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-11-12 16:43:14 +00:00
|
|
|
# SickGear is distributed in the hope that it will be useful,
|
2014-03-10 05:18:05 +00:00
|
|
|
# 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-11-12 16:43:14 +00:00
|
|
|
# along with SickGear. If not, see <http://www.gnu.org/licenses/>.
|
2014-03-10 05:18:05 +00:00
|
|
|
|
|
|
|
import sickbeard
|
|
|
|
from sickbeard import logger
|
2015-09-21 15:46:04 +00:00
|
|
|
from lib.libtrakt import TraktAPI
|
2014-03-10 05:18:05 +00:00
|
|
|
|
2014-03-25 05:57:24 +00:00
|
|
|
|
2014-03-10 05:18:05 +00:00
|
|
|
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
|
2014-03-25 05:57:24 +00:00
|
|
|
|
2014-03-10 05:18:05 +00:00
|
|
|
def notify_subtitle_download(self, ep_name, lang):
|
|
|
|
pass
|
2014-07-03 06:43:48 +00:00
|
|
|
|
2014-07-03 21:04:26 +00:00
|
|
|
def notify_git_update(self, new_version):
|
2014-07-03 06:43:48 +00:00
|
|
|
pass
|
2014-03-10 05:18:05 +00:00
|
|
|
|
|
|
|
def update_library(self, ep_obj):
|
|
|
|
"""
|
|
|
|
Sends a request to trakt indicating that the given episode is part of our library.
|
|
|
|
|
|
|
|
ep_obj: The TVEpisode object to add to trakt
|
|
|
|
"""
|
2014-03-25 05:57:24 +00:00
|
|
|
|
2014-03-10 05:18:05 +00:00
|
|
|
if sickbeard.USE_TRAKT:
|
2014-03-25 05:57:24 +00:00
|
|
|
|
2014-03-10 05:18:05 +00:00
|
|
|
# URL parameters
|
|
|
|
data = {
|
2014-06-27 11:00:16 +00:00
|
|
|
'tvdb_id': ep_obj.show.indexerid,
|
2014-03-10 05:18:05 +00:00
|
|
|
'title': ep_obj.show.name,
|
|
|
|
'year': ep_obj.show.startyear,
|
2014-03-25 05:57:24 +00:00
|
|
|
'episodes': [{
|
|
|
|
'season': ep_obj.season,
|
|
|
|
'episode': ep_obj.episode
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
|
2014-03-10 05:18:05 +00:00
|
|
|
if data is not None:
|
2015-08-16 03:23:56 +00:00
|
|
|
TraktCall('show/episode/library/%API%', self._api(), self._username(), self._password(), data)
|
2014-03-10 05:18:05 +00:00
|
|
|
if sickbeard.TRAKT_REMOVE_WATCHLIST:
|
2015-08-16 03:23:56 +00:00
|
|
|
TraktCall('show/episode/unwatchlist/%API%', self._api(), self._username(), self._password(), data)
|
2014-03-10 05:18:05 +00:00
|
|
|
|
2014-08-18 23:53:10 +00:00
|
|
|
if sickbeard.TRAKT_REMOVE_SERIESLIST:
|
2014-08-20 10:31:52 +00:00
|
|
|
data_show = None
|
|
|
|
|
2014-08-18 23:53:10 +00:00
|
|
|
# URL parameters, should not need to recheck data (done above)
|
|
|
|
data = {
|
2014-08-22 22:20:36 +00:00
|
|
|
'shows': [
|
|
|
|
{
|
|
|
|
'tvdb_id': ep_obj.show.indexerid,
|
|
|
|
'title': ep_obj.show.name,
|
|
|
|
'year': ep_obj.show.startyear
|
|
|
|
}
|
|
|
|
]
|
2014-08-18 23:53:10 +00:00
|
|
|
}
|
2014-08-22 22:20:36 +00:00
|
|
|
|
2015-08-16 03:23:56 +00:00
|
|
|
TraktCall('show/unwatchlist/%API%', self._api(), self._username(), self._password(), data)
|
2014-08-18 23:53:10 +00:00
|
|
|
|
|
|
|
# Remove all episodes from episode watchlist
|
|
|
|
# Start by getting all episodes in the watchlist
|
2015-08-16 03:23:56 +00:00
|
|
|
watchlist = TraktCall('user/watchlist/episodes.json/%API%/' + sickbeard.TRAKT_USERNAME, sickbeard.TRAKT_API, sickbeard.TRAKT_USERNAME, sickbeard.TRAKT_PASSWORD)
|
2014-08-18 23:53:10 +00:00
|
|
|
|
2015-01-09 20:41:45 +00:00
|
|
|
if watchlist is not None:
|
|
|
|
# Convert watchlist to only contain current show
|
|
|
|
for show in watchlist:
|
|
|
|
# Check if tvdb_id exists
|
|
|
|
if 'tvdb_id' in show:
|
|
|
|
if unicode(data['shows'][0]['tvdb_id']) == show['tvdb_id']:
|
|
|
|
data_show = {
|
|
|
|
'title': show['title'],
|
|
|
|
'tvdb_id': show['tvdb_id'],
|
|
|
|
'episodes': []
|
|
|
|
}
|
|
|
|
|
|
|
|
# Add series and episode (number) to the arry
|
|
|
|
for episodes in show['episodes']:
|
|
|
|
ep = {'season': episodes['season'], 'episode': episodes['number']}
|
|
|
|
data_show['episodes'].append(ep)
|
|
|
|
if data_show is not None:
|
2015-08-16 03:23:56 +00:00
|
|
|
TraktCall('show/episode/unwatchlist/%API%', sickbeard.TRAKT_API, sickbeard.TRAKT_USERNAME, sickbeard.TRAKT_PASSWORD, data_show)
|
2015-01-10 02:21:53 +00:00
|
|
|
else:
|
|
|
|
logger.log('Failed to get watchlist from trakt. Unable to remove episode from watchlist',
|
|
|
|
logger.ERROR)
|
2014-08-18 23:53:10 +00:00
|
|
|
|
2014-03-10 05:18:05 +00:00
|
|
|
def test_notify(self, api, username, password):
|
|
|
|
"""
|
|
|
|
Sends a test notification to trakt with the given authentication info and returns a boolean
|
|
|
|
representing success.
|
|
|
|
|
|
|
|
api: The api string to use
|
|
|
|
username: The username to use
|
|
|
|
password: The password to use
|
|
|
|
|
|
|
|
Returns: True if the request succeeded, False otherwise
|
|
|
|
"""
|
2014-03-25 05:57:24 +00:00
|
|
|
|
2015-08-16 03:23:56 +00:00
|
|
|
data = TraktCall('account/test/%API%', api, username, password)
|
|
|
|
if data and data['status'] == 'success':
|
2014-03-10 05:18:05 +00:00
|
|
|
return True
|
|
|
|
|
|
|
|
def _username(self):
|
|
|
|
return sickbeard.TRAKT_USERNAME
|
|
|
|
|
|
|
|
def _password(self):
|
|
|
|
return sickbeard.TRAKT_PASSWORD
|
|
|
|
|
|
|
|
def _api(self):
|
|
|
|
return sickbeard.TRAKT_API
|
|
|
|
|
|
|
|
def _use_me(self):
|
|
|
|
return sickbeard.USE_TRAKT
|
|
|
|
|
|
|
|
|
|
|
|
notifier = TraktNotifier
|