Пример #1
0
 def __init__(self):
     self._rules = {}
     self.path = urlsplit(sys.argv[0]).path or "/"
     self.handle = int(sys.argv[1])
     self.kwargs = dict(parse_qsl(sys.argv[2].lstrip("?")))
     self.auth = Auth(self)
     self.logger = Logger(self)
     self.routing = Routing(self)
     self.main_menu_items = self._main_menu_items()
Пример #2
0
class Plugin(object):
    PLUGIN_ID = xbmcaddon.Addon().getAddonInfo("id")
    PLUGIN_URL = f"plugin://{PLUGIN_ID}"
    settings = Settings()

    def __init__(self):
        self._rules = {}
        self.path = urlsplit(sys.argv[0]).path or "/"
        self.handle = int(sys.argv[1])
        self.kwargs = dict(parse_qsl(sys.argv[2].lstrip("?")))
        self.auth = Auth(self)
        self.logger = Logger(self)
        self.routing = Routing(self)
        self.search_history = SearchHistory(self)
        self.main_menu_items = self._main_menu_items()
        self.items = ItemsCollection(self)

    def client(self, endpoint):
        return KinoPubClient(self, endpoint)

    def list_item(
        self,
        name,
        label2="",
        iconImage="",
        thumbnailImage="",
        path="",
        poster=None,
        fanart=None,
        video_info=None,
        properties=None,
        addContextMenuItems=False,
        subtitles=None,
    ):
        return ExtendedListItem(
            name,
            label2=label2,
            iconImage=iconImage,
            thumbnailImage=thumbnailImage,
            path=path,
            poster=poster,
            fanart=fanart,
            video_info=video_info,
            properties=properties,
            addContextMenuItems=addContextMenuItems,
            subtitles=subtitles,
            plugin=self,
        )

    def run(self):
        self.routing.dispatch(self.path)

    def _main_menu_items(self):
        return [
            MainMenuItem(
                "Профиль",
                self.routing.build_url("profile/"),
                self.routing.build_icon_path("profile"),
                False,
                True,
            ),
            MainMenuItem(
                "Поиск",
                self.routing.build_url("search", "all/"),
                self.routing.build_icon_path("search"),
                True,
                self.settings.show_search,
            ),
            MainMenuItem(
                "Закладки",
                self.routing.build_url("bookmarks/"),
                self.routing.build_icon_path("bookmarks"),
                True,
                True,
            ),
            MainMenuItem(
                "Я смотрю",
                self.routing.build_url("watching/"),
                self.routing.build_icon_path("watching"),
                True,
                True,
            ),
            MainMenuItem(
                "Недосмотренные",
                self.routing.build_url("watching_movies/"),
                self.routing.build_icon_path("watching_movies"),
                True,
                True,
            ),
            MainMenuItem(
                "Последние",
                self.routing.build_url("items", "all", "fresh/"),
                self.routing.build_icon_path("fresh"),
                True,
                self.settings.show_last,
            ),
            MainMenuItem(
                "Популярные",
                self.routing.build_url("items", "all", "popular/"),
                self.routing.build_icon_path("popular"),
                True,
                self.settings.show_popular,
            ),
            MainMenuItem(
                "Горячие",
                self.routing.build_url("items", "all", "hot/"),
                self.routing.build_icon_path("hot"),
                True,
                self.settings.show_hot,
            ),
            MainMenuItem(
                self.sorting_title,
                self.routing.build_url("items", "all", "sort/"),
                self.routing.build_icon_path("sort"),
                True,
                self.settings.show_sort,
            ),
            MainMenuItem(
                "ТВ",
                self.routing.build_url("tv/"),
                self.routing.build_icon_path("tv"),
                True,
                self.settings.show_tv,
            ),
            MainMenuItem(
                "Подборки",
                self.routing.build_url("collections/"),
                self.routing.build_icon_path("collections"),
                True,
                self.settings.show_collections,
            ),
            MainMenuItem(
                "Фильмы",
                self.routing.build_url("items", "movies/"),
                self.routing.build_icon_path("movies"),
                True,
                self.settings.show_movies,
            ),
            MainMenuItem(
                "Сериалы",
                self.routing.build_url("items", "serials/"),
                self.routing.build_icon_path("serials"),
                True,
                self.settings.show_serials,
            ),
            MainMenuItem(
                "ТВ шоу",
                self.routing.build_url("items", "tvshow/"),
                self.routing.build_icon_path("tvshows"),
                True,
                self.settings.show_tvshows,
            ),
            MainMenuItem(
                "3D",
                self.routing.build_url("items", "3d/"),
                self.routing.build_icon_path("3d"),
                True,
                self.settings.show_3d,
            ),
            MainMenuItem(
                "Концерты",
                self.routing.build_url("items", "concerts/"),
                self.routing.build_icon_path("concerts"),
                True,
                self.settings.show_concerts,
            ),
            MainMenuItem(
                "Документальные фильмы",
                self.routing.build_url("items", "documovies/"),
                self.routing.build_icon_path("documovies"),
                True,
                self.settings.show_documovies,
            ),
            MainMenuItem(
                "Документальные сериалы",
                self.routing.build_url("items", "docuserials/"),
                self.routing.build_icon_path("docuserials"),
                True,
                self.settings.show_docuserials,
            ),
        ]

    @property
    def sorting_title(self):
        return f"По {self.settings.sort_by} {self.settings.sort_direction}"

    @property
    def sorting_params(self):
        sorting = {
            "дате обновления": "updated",
            "дате добавления": "created",
            "году": "year",
            "названию": "title",
            "рейтингу": "rating",
            "Кинопоиску": "kinopoisk_rating",
            "IMDB": "imdb_rating",
            "просмотрам": "views",
            "зрителям": "watchers",
        }
        direction = {"по убыванию": "-", "по возрастанию": ""}
        return {
            "sort": f"{sorting[self.settings.sort_by]}{direction[self.settings.sort_direction]}"
        }

    def clear_window_property(self):
        xbmcgui.Window(10000).clearProperty("video.kino.pub-playback_data")

    def set_window_property(self, value):
        self.clear_window_property()
        pickled = codecs.encode(pickle.dumps(value), "base64").decode("utf-8")
        xbmcgui.Window(10000).setProperty("video.kino.pub-playback_data", pickled)

    def get_window_property(self, item_id):
        try:
            data = xbmcgui.Window(10000).getProperty("video.kino.pub-playback_data").encode("utf-8")
            items = pickle.loads(codecs.decode(data, "base64"))
        except EOFError:
            items = {}
        item = items.get(int(item_id), {})
        if item:
            item._plugin = self
        return item
Пример #3
0
class Plugin(object):
    PLUGIN_ID = xbmcaddon.Addon().getAddonInfo("id")
    PLUGIN_URL = "plugin://{}".format(PLUGIN_ID)
    settings = Settings()

    def __init__(self):
        self._rules = {}
        self.path = urlsplit(sys.argv[0]).path or "/"
        self.handle = int(sys.argv[1])
        self.kwargs = dict(parse_qsl(sys.argv[2].lstrip("?")))
        self.auth = Auth(self)
        self.logger = Logger(self)
        self.routing = Routing(self)
        self.main_menu_items = self._main_menu_items()

    def client(self, endpoint):
        return KinoPubClient(self, endpoint)

    def list_item(
        self,
        name,
        label2="",
        iconImage="",
        thumbnailImage="",
        path="",
        poster=None,
        video_info=None,
        properties=None,
        addContextMenuItems=False,
        subtitles=None,
    ):
        return ExtendedListItem(
            name,
            label2=label2,
            iconImage=iconImage,
            thumbnailImage=thumbnailImage,
            path=path,
            poster=poster,
            video_info=video_info,
            properties=properties,
            addContextMenuItems=addContextMenuItems,
            subtitles=subtitles,
            plugin=self,
        )

    def run(self):
        self.routing.dispatch(self.path)

    def _main_menu_items(self):
        return [
            MainMenuItem(
                "Профиль",
                self.routing.build_url("profile"),
                self.routing.build_icon_path("profile"),
                False,
                True,
            ),
            MainMenuItem(
                "Поиск",
                self.routing.build_url("search", "all"),
                self.routing.build_icon_path("search"),
                False,
                self.settings.show_search,
            ),
            MainMenuItem(
                "Закладки",
                self.routing.build_url("bookmarks"),
                self.routing.build_icon_path("bookmarks"),
                True,
                True,
            ),
            MainMenuItem(
                "Я смотрю",
                self.routing.build_url("watching"),
                self.routing.build_icon_path("watching"),
                True,
                True,
            ),
            MainMenuItem(
                "Недосмотренные",
                self.routing.build_url("watching_movies"),
                self.routing.build_icon_path("watching_movies"),
                True,
                True,
            ),
            MainMenuItem(
                "Последние",
                self.routing.build_url("items", "all", "fresh"),
                self.routing.build_icon_path("fresh"),
                True,
                self.settings.show_last,
            ),
            MainMenuItem(
                "Популярные",
                self.routing.build_url("items", "all", "popular"),
                self.routing.build_icon_path("popular"),
                True,
                self.settings.show_popular,
            ),
            MainMenuItem(
                "Горячие",
                self.routing.build_url("items", "all", "hot"),
                self.routing.build_icon_path("hot"),
                True,
                self.settings.show_hot,
            ),
            MainMenuItem(
                "ТВ",
                self.routing.build_url("tv"),
                self.routing.build_icon_path("tv"),
                True,
                self.settings.show_tv,
            ),
            MainMenuItem(
                "Подборки",
                self.routing.build_url("collections"),
                self.routing.build_icon_path("collections"),
                True,
                self.settings.show_collections,
            ),
            MainMenuItem(
                "Фильмы",
                self.routing.build_url("items", "movies"),
                self.routing.build_icon_path("movies"),
                True,
                self.settings.show_movies,
            ),
            MainMenuItem(
                "Сериалы",
                self.routing.build_url("items", "serials"),
                self.routing.build_icon_path("serials"),
                True,
                self.settings.show_serials,
            ),
            MainMenuItem(
                "ТВ шоу",
                self.routing.build_url("items", "tv_shows"),
                self.routing.build_icon_path("tvshows"),
                True,
                self.settings.show_tvshows,
            ),
            MainMenuItem(
                "3D",
                self.routing.build_url("items", "3d"),
                self.routing.build_icon_path("3d"),
                True,
                self.settings.show_3d,
            ),
            MainMenuItem(
                "Концерты",
                self.routing.build_url("items", "concerts"),
                self.routing.build_icon_path("concerts"),
                True,
                self.settings.show_concerts,
            ),
            MainMenuItem(
                "Документальные фильмы",
                self.routing.build_url("items", "documovies"),
                self.routing.build_icon_path("documovies"),
                True,
                self.settings.show_documovies,
            ),
            MainMenuItem(
                "Документальные сериалы",
                self.routing.build_url("items", "docuserials"),
                self.routing.build_icon_path("docuserials"),
                True,
                self.settings.show_docuserials,
            ),
        ]
Пример #4
0
class Plugin(object):
    PLUGIN_ID = xbmcaddon.Addon().getAddonInfo("id")
    PLUGIN_URL = "plugin://{}".format(PLUGIN_ID)
    settings = Settings()

    def __init__(self):
        self._rules = {}
        self.path = urlsplit(sys.argv[0]).path or "/"
        self.handle = int(sys.argv[1])
        self.kwargs = dict(parse_qsl(sys.argv[2].lstrip("?")))
        self.auth = Auth(self)
        self.logger = Logger(self)
        self.routing = Routing(self)
        self.search_history = SearchHistory(self)
        self.main_menu_items = self._main_menu_items()

    def client(self, endpoint):
        return KinoPubClient(self, endpoint)

    def list_item(
        self,
        name,
        label2="",
        iconImage="",
        thumbnailImage="",
        path="",
        poster=None,
        fanart=None,
        video_info=None,
        properties=None,
        addContextMenuItems=False,
        subtitles=None,
    ):
        return ExtendedListItem(
            name,
            label2=label2,
            iconImage=iconImage,
            thumbnailImage=thumbnailImage,
            path=path,
            poster=poster,
            fanart=fanart,
            video_info=video_info,
            properties=properties,
            addContextMenuItems=addContextMenuItems,
            subtitles=subtitles,
            plugin=self,
        )

    def run(self):
        self.routing.dispatch(self.path)

    def _main_menu_items(self):
        return [
            MainMenuItem(
                "Профиль",
                self.routing.build_url("profile"),
                self.routing.build_icon_path("profile"),
                False,
                True,
            ),
            MainMenuItem(
                "Поиск",
                self.routing.build_url("search", "all"),
                self.routing.build_icon_path("search"),
                True,
                self.settings.show_search,
            ),
            MainMenuItem(
                "Закладки",
                self.routing.build_url("bookmarks"),
                self.routing.build_icon_path("bookmarks"),
                True,
                True,
            ),
            MainMenuItem(
                "Я смотрю",
                self.routing.build_url("watching"),
                self.routing.build_icon_path("watching"),
                True,
                True,
            ),
            MainMenuItem(
                "Недосмотренные",
                self.routing.build_url("watching_movies"),
                self.routing.build_icon_path("watching_movies"),
                True,
                True,
            ),
            MainMenuItem(
                "Последние",
                self.routing.build_url("items", "all", "fresh"),
                self.routing.build_icon_path("fresh"),
                True,
                self.settings.show_last,
            ),
            MainMenuItem(
                "Популярные",
                self.routing.build_url("items", "all", "popular"),
                self.routing.build_icon_path("popular"),
                True,
                self.settings.show_popular,
            ),
            MainMenuItem(
                "Горячие",
                self.routing.build_url("items", "all", "hot"),
                self.routing.build_icon_path("hot"),
                True,
                self.settings.show_hot,
            ),
            MainMenuItem(
                self.sorting_title,
                self.routing.build_url("items", "all", "sort"),
                self.routing.build_icon_path("sort"),
                True,
                self.settings.show_sort,
            ),
            MainMenuItem(
                "ТВ",
                self.routing.build_url("tv"),
                self.routing.build_icon_path("tv"),
                True,
                self.settings.show_tv,
            ),
            MainMenuItem(
                "Подборки",
                self.routing.build_url("collections"),
                self.routing.build_icon_path("collections"),
                True,
                self.settings.show_collections,
            ),
            MainMenuItem(
                "Фильмы",
                self.routing.build_url("items", "movies"),
                self.routing.build_icon_path("movies"),
                True,
                self.settings.show_movies,
            ),
            MainMenuItem(
                "Сериалы",
                self.routing.build_url("items", "serials"),
                self.routing.build_icon_path("serials"),
                True,
                self.settings.show_serials,
            ),
            MainMenuItem(
                "ТВ шоу",
                self.routing.build_url("items", "tvshow"),
                self.routing.build_icon_path("tvshows"),
                True,
                self.settings.show_tvshows,
            ),
            MainMenuItem(
                "3D",
                self.routing.build_url("items", "3d"),
                self.routing.build_icon_path("3d"),
                True,
                self.settings.show_3d,
            ),
            MainMenuItem(
                "Концерты",
                self.routing.build_url("items", "concerts"),
                self.routing.build_icon_path("concerts"),
                True,
                self.settings.show_concerts,
            ),
            MainMenuItem(
                "Документальные фильмы",
                self.routing.build_url("items", "documovies"),
                self.routing.build_icon_path("documovies"),
                True,
                self.settings.show_documovies,
            ),
            MainMenuItem(
                "Документальные сериалы",
                self.routing.build_url("items", "docuserials"),
                self.routing.build_icon_path("docuserials"),
                True,
                self.settings.show_docuserials,
            ),
        ]

    @property
    def sorting_title(self):
        return "По {} {}".format(self.settings.sort_by,
                                 self.settings.sort_direction)

    @property
    def sorting_params(self):
        sorting = {
            "дате обновления": "updated",
            "дате добавления": "created",
            "году": "year",
            "названию": "title",
            "рейтингу": "rating",
            "Кинопоиску": "kinopoisk_rating",
            "IMDB": "imdb_rating",
            "просмотрам": "views",
            "зрителям": "watchers",
        }
        direction = {"по убыванию": "-", "по возрастанию": ""}
        return {
            "sort":
            "{}{}".format(sorting[self.settings.sort_by],
                          direction[self.settings.sort_direction])
        }