Beispiel #1
0
    def __init__(self):
        self.apiKey = g.get_setting("tmdb.apikey",
                                    "9f3ca569aa46b6fb13931ec96ab8ae7e")
        self.lang_code = g.get_language_code()
        self.lang_full_code = g.get_language_code(True)
        self.lang_region_code = self.lang_full_code.split("-")[1]
        if self.lang_region_code == "":
            self.lang_full_code = self.lang_full_code.strip("-")
        self.include_languages = [
            self.lang_code, "en", "null"
        ] if not self.lang_code == "en" else ["en", "null"]
        self.preferred_artwork_size = g.get_int_setting(
            "artwork.preferredsize")
        self.artwork_size = {}
        self._set_artwork()

        self.art_normalization = [
            ("backdrops", "fanart", None),
            (
                "posters",
                "poster",
                lambda x: x["iso_639_1"] != "xx" and x["iso_639_1"] is
                not None,
            ),
            (
                "posters",
                "keyart",
                lambda x: x["iso_639_1"] == "xx" or x["iso_639_1"] is None,
            ),
            ("stills", "fanart", None),
        ]
Beispiel #2
0
    def __init__(self):
        self.apiKey = g.get_setting("tmdb.apikey",
                                    "9f3ca569aa46b6fb13931ec96ab8ae7e")
        self.lang_code = g.get_language_code()
        self.lang_full_code = g.get_language_code(True)
        self.lang_region_code = self.lang_full_code.split("-")[1]
        if self.lang_region_code == "":
            self.lang_full_code = self.lang_full_code.strip("-")
        self.include_languages = OrderedDict.fromkeys(
            [self.lang_code, "en", "null"])
        self.preferred_artwork_size = g.get_int_setting(
            "artwork.preferredsize")
        self.artwork_size = {}
        self._set_artwork()

        self.art_normalization = [
            ("backdrops", "fanart", None),
            (
                "posters",
                "poster",
                lambda x: x["iso_639_1"] != "xx" and x["iso_639_1"] is
                not None,
            ),
            (
                "posters",
                "keyart",
                lambda x: x["iso_639_1"] == "xx" or x["iso_639_1"] is None,
            ),
            ("stills", "fanart", None),
        ]

        self.meta_hash = tools.md5_hash((
            self.lang_code,
            self.lang_full_code,
            self.lang_region_code,
            self.include_languages,
            self.preferred_artwork_size,
            self.append_to_response,
            self.baseUrl,
            self.imageBaseUrl,
        ))

        self.session = requests.Session()
        retries = Retry(total=5,
                        backoff_factor=0.1,
                        status_forcelist=[500, 502, 503, 504])
        self.session.mount("https://",
                           HTTPAdapter(max_retries=retries, pool_maxsize=100))
Beispiel #3
0
    def __init__(self):
        self.session = requests.Session()
        self.session.mount("https://", HTTPAdapter(max_retries=self.retries))
        self._load_settings()

        self.lang_code = g.get_language_code(False)

        self.languages = ([None, self.lang_code] if self.lang_code != "en"
                          and any(self.lang_code == i["abbreviation"]
                                  for i in self.supported_languages) else
                          [None])

        if not self.jwToken:
            self.init_token()
        else:
            self.try_refresh_token()

        self.preferred_artwork_size = g.get_int_setting(
            "artwork.preferredsize")
        self.meta_hash = tools.md5_hash((
            self.lang_code,
            self.art_map,
            self.baseUrl,
            self.imageBaseUrl,
            self.preferred_artwork_size,
        ))
Beispiel #4
0
    def __init__(self):
        self.apiKey = g.get_setting("tvdb.apikey", "43VPI0R8323FB7TI")
        self.jwToken = g.get_setting("tvdb.jw")
        self.tokenExpires = g.get_float_setting("tvdb.expiry")
        self.lang_code = g.get_language_code(False)

        self.languages = ([None, self.lang_code] if self.lang_code != "en"
                          and any(self.lang_code == i["abbreviation"]
                                  for i in self.supported_languages) else
                          [None])

        if not self.jwToken:
            self.init_token()
        else:
            self.try_refresh_token()

        self.preferred_artwork_size = g.get_int_setting(
            "artwork.preferredsize")
        self.meta_hash = tools.md5_hash((
            self.lang_code,
            self.art_map,
            self.baseUrl,
            self.imageBaseUrl,
            self.preferred_artwork_size,
        ))
 def __init__(self):
     self.trakt = TraktAPI()
     self.language_code = g.get_language_code()
     self.trakt_database = TraktSyncDatabase()
     self.hidden_database = hidden.TraktSyncDatabase()
     self.bookmark_database = bookmark.TraktSyncDatabase()
     self.shows_database = shows.TraktSyncDatabase()
     self.list_builder = ListBuilder()
     self.page_limit = g.get_int_setting("item.limit")
Beispiel #6
0
 def _pull_show_seasons(self, show_id, mill_episodes=False):
     return {
         show_id:
         self.trakt_api.get_json(
             "/shows/{}/seasons".format(show_id),
             extended="full,episodes" if mill_episodes else "full",
             translations=g.get_language_code(),
         )
     }
Beispiel #7
0
    def __init__(self):
        self.language = g.get_language_code()
        self.client_key = g.get_setting('fanart.apikey')
        self.fanart_support = False if not self.client_key else True
        self.headers = {'client-key': self.client_key, 'api-key': self.api_key}

        self.meta_hash = tools.md5_hash([
            self.language, self.fanart_support, self.normalization,
            self.show_normalization, self.meta_objects, self.base_url
        ])
Beispiel #8
0
    def __init__(self):
        self.apiKey = g.get_setting("tmdb.apikey",
                                    "9f3ca569aa46b6fb13931ec96ab8ae7e")
        self.lang_code = g.get_language_code()
        self.lang_full_code = g.get_language_code(True)
        self.lang_region_code = self.lang_full_code.split("-")[1]
        if self.lang_region_code == "":
            self.lang_full_code = self.lang_full_code.strip("-")
        self.include_languages = OrderedDict.fromkeys(
            [self.lang_code, "en", "null"])
        self.preferred_artwork_size = g.get_int_setting(
            "artwork.preferredsize")
        self.artwork_size = {}
        self._set_artwork()

        self.art_normalization = [
            ("backdrops", "fanart", None),
            (
                "posters",
                "poster",
                lambda x: x["iso_639_1"] != "xx" and x["iso_639_1"] is
                not None,
            ),
            (
                "posters",
                "keyart",
                lambda x: x["iso_639_1"] == "xx" or x["iso_639_1"] is None,
            ),
            ("stills", "fanart", None),
        ]

        self.meta_hash = tools.md5_hash((
            self.lang_code,
            self.lang_full_code,
            self.lang_region_code,
            self.include_languages,
            self.preferred_artwork_size,
            self.append_to_response,
            self.baseUrl,
            self.imageBaseUrl,
        ))
Beispiel #9
0
    def __init__(self):
        self.language = g.get_language_code()
        self.client_key = g.get_setting('fanart.apikey')
        self.fanart_support = False if not self.client_key else True
        self.headers = {'client-key': self.client_key, 'api-key': self.api_key}

        self.meta_hash = tools.md5_hash(
            [self.language, self.fanart_support, self.normalization, self.show_normalization, self.meta_objects,
             self.base_url])

        self.session = requests.Session()
        retries = Retry(total=5,
                        backoff_factor=0.1,
                        status_forcelist=[500, 502, 503, 504])
        self.session.mount('https://', HTTPAdapter(max_retries=retries))
 def shows_new(self):
     hidden_items = self.hidden_database.get_hidden_items(
         "recommendations", "shows")
     date_string = datetime.datetime.today() - datetime.timedelta(days=29)
     trakt_list = self.shows_database.extract_trakt_page(
         "calendars/all/shows/new/{}/30".format(
             date_string.strftime("%d-%m-%Y")),
         languages=','.join({'en', g.get_language_code()}),
         extended="full",
         pull_all=True,
         no_paging=True,
         ignore_cache=True,
         hide_watched=False,
         hide_unaired=False)
     trakt_list = [
         i for i in trakt_list if i["trakt_id"] not in hidden_items
     ][:self.page_limit]
     self.list_builder.show_list_builder(trakt_list, no_paging=True)
Beispiel #11
0
    def __init__(self):

        self._load_settings()

        self.lang_code = g.get_language_code(False)

        self.languages = (
            [None, self.lang_code]
            if self.lang_code != "en"
            and any(
                self.lang_code == i["abbreviation"] for i in self.supported_languages
            )
            else [None]
        )

        if not self.jwToken:
            self.init_token()
        else:
            self.try_refresh_token()

        self.preferred_artwork_size = g.get_int_setting("artwork.preferredsize")
    def __init__(
        self,
        tmdb_api=None,
        tvdb_api=None,
        fanarttv_api=None,
        trakt_api=None,
        omdb_api=None,
    ):
        self.tmdb_api = tmdb_api if tmdb_api else TMDBAPI()
        self.tvdb_api = tvdb_api if tvdb_api else TVDBAPI()
        self.fanarttv_api = fanarttv_api if fanarttv_api else FanartTv()
        self.trakt_api = trakt_api if trakt_api else TraktAPI()
        self.omdb_api = omdb_api if omdb_api else OmdbApi()

        self.lang_code = g.get_language_code()
        self.lang_full_code = g.get_language_code(True)
        self.lang_region_code = self.lang_full_code.split("-")[:1]
        self.allowed_artwork_languages = {None, "en", self.lang_code}
        self.movies_poster_limit = g.get_int_setting("movies.poster_limit", 1)
        self.movies_fanart_limit = g.get_int_setting("movies.fanart_limit", 1)
        self.movies_keyart_limit = g.get_int_setting("movies.keyart_limit", 1)
        self.movies_characterart_limit = g.get_int_setting(
            "movies.characterart_limit", 1)
        self.movies_banner = g.get_bool_setting("movies.banner", "true")
        self.movies_clearlogo = g.get_bool_setting("movies.clearlogo", "true")
        self.movies_landscape = g.get_bool_setting("movies.landscape", "true")
        self.movies_clearart = g.get_bool_setting("movies.clearart", "true")
        self.movies_discart = g.get_bool_setting("movies.discart", "true")

        self.tvshows_poster_limit = g.get_int_setting("tvshows.poster_limit",
                                                      1)
        self.tvshows_fanart_limit = g.get_int_setting("tvshows.fanart_limit",
                                                      1)
        self.tvshows_keyart_limit = g.get_int_setting("tvshows.keyart_limit",
                                                      1)
        self.tvshows_characterart_limit = g.get_int_setting(
            "tvshows.characterart_limit", 1)
        self.tvshows_banner = g.get_bool_setting("tvshows.banner", "true")
        self.tvshows_clearlogo = g.get_bool_setting("tvshows.clearlogo",
                                                    "true")
        self.tvshows_landscape = g.get_bool_setting("tvshows.landscape",
                                                    "true")
        self.tvshows_clearart = g.get_bool_setting("tvshows.clearart", "true")
        self.season_poster = g.get_bool_setting("season.poster", "true")
        self.season_banner = g.get_bool_setting("season.banner", "true")
        self.season_landscape = g.get_bool_setting("season.landscape", "true")
        self.season_fanart = g.get_bool_setting("season.fanart", "true")
        self.episode_fanart = g.get_bool_setting("episode.fanart", "true")
        self.tvshows_preferred_art_source = g.get_int_setting(
            "tvshows.preferedsource", 1)
        self.movies_preferred_art_source = g.get_int_setting(
            "movies.preferedsource", 1)
        self.metadata_location = g.get_int_setting("general.metalocation", 1)
        self.preferred_artwork_size = g.get_int_setting(
            "artwork.preferredsize", 1)
        self.show_original_title = g.get_bool_setting(
            "general.meta.showoriginaltitle", False)

        self.genres = {
            "action": g.get_language_string(30534),
            "adventure": g.get_language_string(30535),
            "animation": g.get_language_string(30536),
            "anime": g.get_language_string(30537),
            "biography": g.get_language_string(30538),
            "children": g.get_language_string(30539),
            "comedy": g.get_language_string(30540),
            "crime": g.get_language_string(30541),
            "documentary": g.get_language_string(30542),
            "drama": g.get_language_string(30543),
            "family": g.get_language_string(30544),
            "fantasy": g.get_language_string(30545),
            "game-show": g.get_language_string(30546),
            "history": g.get_language_string(30547),
            "holiday": g.get_language_string(30548),
            "home-and-garden": g.get_language_string(30549),
            "horror": g.get_language_string(30550),
            "mini-series": g.get_language_string(30551),
            "music": g.get_language_string(30552),
            "musical": g.get_language_string(30553),
            "mystery": g.get_language_string(30554),
            "news": g.get_language_string(30555),
            "none": g.get_language_string(30556),
            "reality": g.get_language_string(30557),
            "romance": g.get_language_string(30558),
            "science-fiction": g.get_language_string(30559),
            "sci-fi": g.get_language_string(30559),
            "short": g.get_language_string(30560),
            "soap": g.get_language_string(30561),
            "special-interest": g.get_language_string(30562),
            "sporting-event": g.get_language_string(30563),
            "superhero": g.get_language_string(30564),
            "suspense": g.get_language_string(30565),
            "talk-show": g.get_language_string(30566),
            "talkshow": g.get_language_string(30566),
            "thriller": g.get_language_string(30567),
            "tv-movie": g.get_language_string(30568),
            "war": g.get_language_string(30569),
            "western": g.get_language_string(30570),
        }

        self.meta_hash = tools.md5_hash([
            self.lang_code,
            self.movies_poster_limit,
            self.movies_fanart_limit,
            self.movies_keyart_limit,
            self.movies_characterart_limit,
            self.movies_banner,
            self.movies_clearlogo,
            self.movies_landscape,
            self.movies_clearart,
            self.movies_discart,
            self.tvshows_poster_limit,
            self.tvshows_fanart_limit,
            self.tvshows_keyart_limit,
            self.tvshows_characterart_limit,
            self.tvshows_banner,
            self.tvshows_clearlogo,
            self.tvshows_landscape,
            self.tvshows_clearart,
            self.season_poster,
            self.season_banner,
            self.season_landscape,
            self.season_fanart,
            self.episode_fanart,
            self.tvshows_preferred_art_source,
            self.tvshows_preferred_art_source,
            self.metadata_location,
            self.fanarttv_api.fanart_support,
            self.preferred_artwork_size,
            self.show_original_title,
        ])
Beispiel #13
0
 def __init__(self):
     self.language = g.get_language_code()
     self.client_key = g.get_setting('fanart.apikey')
     self.fanart_support = False if not self.client_key else True
     self.headers = {'client-key': self.client_key, 'api-key': self.api_key}
Beispiel #14
0
    def __init__(self):
        self.access_token = None
        self.refresh_token = None
        self.token_expires = 0
        self.username = None
        self._load_settings()
        self.redirect_uri = "urn:ietf:wg:oauth:2.0:oob"
        self.try_refresh_token()
        self.language = g.get_language_code()
        self.country = g.get_language_code(True).split("-")[-1].lower()

        self.TranslationNormalization = [
            ("title", ("title", "originaltitle", "sorttitle"), None),
            ("language", "language", None),
            ("overview", ("plot", "plotoutline"), None),
        ]

        self.UserRatingNormalization = [(
            "rating",
            "user_rating",
            lambda t: tools.safe_round(tools.get_clean_number(t), 2),
        ), ("rated_at", "rated_at", lambda t: g.validate_date(t))]

        self.PlayBackNormalization = [("progress", "percentplayed", None),
                                      ("paused_at", "paused_at",
                                       lambda t: g.validate_date(t)),
                                      ("id", "playback_id", None)]

        self.PlayBackHistoryNormalization = [("action", "action", None),
                                             ("watched_at", "watched_at",
                                              lambda t: g.validate_date(t)),
                                             ("id", "playback_id", None)]

        self.CalendarNormalization = [("first_aired", "first_aired",
                                       lambda t: g.validate_date(t))]

        self.Normalization = tools.extend_array(
            [("certification", "mpaa", None), ("genres", "genre", None),
             (("ids", "imdb"), ("imdbnumber", "imdb_id"), None),
             (("ids", "trakt"), "trakt_id", None),
             (("ids", "slug"), "trakt_slug", None),
             (("ids", "tvdb"), "tvdb_id", None),
             (("ids", "tmdb"), "tmdb_id", None),
             ("playback_id", "playback_id", None),
             (("show", "ids", "trakt"), "trakt_show_id", None),
             ("network", "studio", lambda n: [n]),
             ("runtime", "duration", lambda d: d * 60),
             ("progress", "percentplayed", None),
             ("percentplayed", "percentplayed", None),
             ("updated_at", "dateadded", lambda t: g.validate_date(t)),
             ("last_updated_at", "dateadded", lambda t: g.validate_date(t)),
             ("last_watched_at", "last_watched_at",
              lambda t: g.validate_date(t)),
             ("watched_at", "watched_at", lambda t: g.validate_date(t)),
             ("paused_at", "paused_at", lambda t: g.validate_date(t)),
             (
                 "rating",
                 "rating",
                 lambda t: tools.safe_round(tools.get_clean_number(t), 2),
             ), ("votes", "votes", lambda t: tools.get_clean_number(t)),
             (
                 None,
                 "rating.trakt",
                 (
                     ("rating", "votes"),
                     lambda r, v: {
                         "rating": tools.safe_round(tools.get_clean_number(r),
                                                    2),
                         "votes": tools.get_clean_number(v),
                     },
                 ),
             ), ("tagline", "tagline", None),
             (
                 "trailer",
                 "trailer",
                 lambda t: tools.youtube_url.format(t.split("?v=")[-1])
                 if t else None,
             ),
             ("type", "mediatype", lambda t: t
              if "show" not in t else "tvshow"),
             ("available_translations", "available_translations", None),
             ("score", "score", None), ("action", "action", None),
             ("added", "added", None), ("rank", "rank", None),
             ("listed_at", "listed_at", None),
             (
                 "country",
                 "country_origin",
                 lambda t: t.upper() if t is not None else None,
             ), ("user_rating", "user_rating", None),
             ("rated_at", "rated_at", None)],
            self.TranslationNormalization,
        )

        self.MoviesNormalization = tools.extend_array(
            [
                ("plays", "playcount", None),
                ("year", "year", None),
                ("released",
                 ("premiered", "aired"), lambda t: g.validate_date(t)),
                ("collected_at", "collected_at", lambda t: g.validate_date(t)),
            ],
            self.Normalization,
        )

        self.ShowNormalization = tools.extend_array(
            [("status", "status", None),
             ("status", "is_airing", lambda t: not t == "ended"),
             ("title", "tvshowtitle", None),
             ("first_aired", "year", lambda t: g.validate_date(t)[:4]
              if g.validate_date(t) else None),
             (
                 "first_aired",
                 ("premiered", "aired"),
                 lambda t: g.validate_date(t),
             ),
             ("last_collected_at", "last_collected_at",
              lambda t: g.validate_date(t))], self.Normalization)

        self.SeasonNormalization = tools.extend_array(
            [("number", ("season", "sortseason"), None),
             ("episode_count", "episode_count", None),
             ("aired_episodes", "aired_episodes", None),
             ("first_aired", "year", lambda t: g.validate_date(t)[:4]
              if g.validate_date(t) else None),
             (
                 "first_aired",
                 ("premiered", "aired"),
                 lambda t: g.validate_date(t),
             ),
             ("last_collected_at", "last_collected_at",
              lambda t: g.validate_date(t))],
            self.Normalization,
        )

        self.EpisodeNormalization = tools.extend_array(
            [("number", ("episode", "sortepisode"), None),
             ("season", ("season", "sortseason"), None),
             ("collected_at", "collected", lambda t: 1),
             ("plays", "playcount", None),
             ("first_aired", "year", lambda t: g.validate_date(t)[:4]
              if g.validate_date(t) else None),
             (
                 "first_aired",
                 ("premiered", "aired"),
                 lambda t: g.validate_date(t),
             ),
             ("collected_at", "collected_at", lambda t: g.validate_date(t))],
            self.Normalization,
        )

        self.ListNormalization = [
            ("updated_at", "dateadded", lambda t: g.validate_date(t)),
            (("ids", "trakt"), "trakt_id", None),
            (("ids", "slug"), "slug", None),
            ("sort_by", "sort_by", None),
            ("sort_how", "sort_how", None),
            (("user", "ids", "slug"), "username", None),
            ("name", ("name", "title"), None),
            ("type", "mediatype", None),
        ]

        self.MixedEpisodeNormalization = [
            (("show", "ids", "trakt"), "trakt_show_id", None),
            (("episode", "ids", "trakt"), "trakt_id", None)
        ]

        self.MixedSeasonNormalization = [
            (("show", "ids", "trakt"), "trakt_show_id", None),
            (("season", "ids", "trakt"), "trakt_id", None)
        ]

        self.MetaNormalization = {
            "movie": self.MoviesNormalization,
            "list": self.ListNormalization,
            "show": self.ShowNormalization,
            "season": self.SeasonNormalization,
            "episode": self.EpisodeNormalization,
            "mixedepisode": self.MixedEpisodeNormalization,
            "mixedseason": self.MixedSeasonNormalization,
            "playback": self.PlayBackNormalization,
            "playbackhistory": self.PlayBackHistoryNormalization,
            "user_rating": self.UserRatingNormalization,
            "calendar": self.CalendarNormalization
        }

        self.MetaObjects = ("movie", "tvshow", "show", "season", "episode",
                            "list")

        self.MetaCollections = ("movies", "shows", "seasons", "episodes",
                                "cast")