Skip to content

Commit 09f5ae0

Browse files
authored
Merge pull request #707 from razzeee/scrobble
2 parents c61c0fc + 2b0e581 commit 09f5ae0

File tree

1 file changed

+54
-45
lines changed

1 file changed

+54
-45
lines changed

resources/lib/scrobbler.py

Lines changed: 54 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -86,23 +86,26 @@ def transitionCheck(self, isSeek: bool = False) -> None:
8686
self.videosToRate.append(self.curVideoInfo)
8787
# update current information
8888
self.curMPEpisode = epIndex
89-
self.curVideoInfo = kodiUtilities.kodiRpcToTraktMediaObject(
90-
"episode",
91-
kodiUtilities.getEpisodeDetailsFromKodi(
92-
self.curVideo["multi_episode_data"][
93-
self.curMPEpisode
94-
],
95-
[
96-
"showtitle",
97-
"season",
98-
"episode",
99-
"tvshowid",
100-
"uniqueid",
101-
"file",
102-
"playcount",
103-
],
104-
),
89+
episode_details = kodiUtilities.getEpisodeDetailsFromKodi(
90+
self.curVideo["multi_episode_data"][
91+
self.curMPEpisode
92+
],
93+
[
94+
"showtitle",
95+
"season",
96+
"episode",
97+
"tvshowid",
98+
"uniqueid",
99+
"file",
100+
"playcount",
101+
],
105102
)
103+
if episode_details:
104+
self.curVideoInfo = kodiUtilities.kodiRpcToTraktMediaObject(
105+
"episode", episode_details
106+
)
107+
else:
108+
self.curVideoInfo = None
106109

107110
logger.debug(
108111
"Multi episode transition - call start for next episode"
@@ -257,21 +260,24 @@ def playbackStarted(self, data: Dict) -> None:
257260
self.isMultiPartEpisode = False
258261
if utilities.isMovie(self.curVideo["type"]):
259262
if "id" in self.curVideo:
260-
self.curVideoInfo = kodiUtilities.kodiRpcToTraktMediaObject(
261-
"movie",
262-
kodiUtilities.getMovieDetailsFromKodi(
263-
self.curVideo["id"],
264-
[
265-
"uniqueid",
266-
"imdbnumber",
267-
"title",
268-
"year",
269-
"file",
270-
"lastplayed",
271-
"playcount",
272-
],
273-
),
263+
movieDetailsKodi = kodiUtilities.getMovieDetailsFromKodi(
264+
self.curVideo["id"],
265+
[
266+
"uniqueid",
267+
"imdbnumber",
268+
"title",
269+
"year",
270+
"file",
271+
"lastplayed",
272+
"playcount",
273+
],
274274
)
275+
if movieDetailsKodi:
276+
self.curVideoInfo = kodiUtilities.kodiRpcToTraktMediaObject(
277+
"movie", movieDetailsKodi
278+
)
279+
else:
280+
self.curVideoInfo = None
275281
elif "video_ids" in self.curVideo:
276282
self.curVideoInfo = {"ids": self.curVideo["video_ids"]}
277283
elif "title" in self.curVideo and "year" in self.curVideo:
@@ -297,19 +303,22 @@ def playbackStarted(self, data: Dict) -> None:
297303
"playcount",
298304
],
299305
)
300-
title, year = utilities.regex_year(episodeDetailsKodi["showtitle"])
301-
if not year:
302-
self.traktShowSummary = {
303-
"title": episodeDetailsKodi["showtitle"],
304-
"year": episodeDetailsKodi["year"],
305-
}
306+
if episodeDetailsKodi:
307+
title, year = utilities.regex_year(episodeDetailsKodi["showtitle"])
308+
if not year:
309+
self.traktShowSummary = {
310+
"title": episodeDetailsKodi["showtitle"],
311+
"year": episodeDetailsKodi.get("year"),
312+
}
313+
else:
314+
self.traktShowSummary = {"title": title, "year": year}
315+
if "show_ids" in episodeDetailsKodi:
316+
self.traktShowSummary["ids"] = episodeDetailsKodi["show_ids"]
317+
self.curVideoInfo = kodiUtilities.kodiRpcToTraktMediaObject(
318+
"episode", episodeDetailsKodi
319+
)
306320
else:
307-
self.traktShowSummary = {"title": title, "year": year}
308-
if "show_ids" in episodeDetailsKodi:
309-
self.traktShowSummary["ids"] = episodeDetailsKodi["show_ids"]
310-
self.curVideoInfo = kodiUtilities.kodiRpcToTraktMediaObject(
311-
"episode", episodeDetailsKodi
312-
)
321+
self.curVideoInfo = None
313322
if not self.curVideoInfo: # getEpisodeDetailsFromKodi was empty
314323
logger.debug(
315324
"Episode details from Kodi was empty, ID (%d) seems invalid, aborting further scrobbling of this episode."
@@ -399,10 +408,10 @@ def playbackStarted(self, data: Dict) -> None:
399408
}
400409
result["episode"]["season"] = self.curVideoInfo["season"]
401410

402-
if "id" in self.curVideo:
403-
if utilities.isMovie(self.curVideo["type"]):
411+
if result and "id" in self.curVideo:
412+
if utilities.isMovie(self.curVideo["type"]) and "movie" in result:
404413
result["movie"]["movieid"] = self.curVideo["id"]
405-
elif utilities.isEpisode(self.curVideo["type"]):
414+
elif utilities.isEpisode(self.curVideo["type"]) and "episode" in result:
406415
result["episode"]["episodeid"] = self.curVideo["id"]
407416

408417
self.__preFetchUserRatings(result)

0 commit comments

Comments
 (0)