def play(item_id): item = plugin.get_window_property(item_id) or plugin.items.instantiate(item_id=item_id) si = plugin.kwargs.get("season_index") i = plugin.kwargs.get("index") playable_li = plugin.items.get_playable(item, season_index=si, index=i).playable_list_item player = Player(list_item=playable_li) xbmcplugin.setResolvedUrl(plugin.handle, True, playable_li) while player.is_playing: player.set_marktime() xbmc.sleep(1000)
def play(item_id, index): properties = {} if ("hls" in plugin.settings.stream_type and plugin.settings.inputstream_adaptive_enabled == "true" and inputstreamhelper): helper = inputstreamhelper.Helper("hls") if not helper.check_inputstream(): return else: properties.update({ "inputstreamaddon": helper.inputstream_addon, "inputstream.adaptive.manifest_type": "hls", }) playback_data = get_window_property(index) video_data = playback_data.get("video_data") video_info = playback_data["video_info"] if not video_data: response = plugin.client("items/{}".format(item_id)).get() video_data = response["item"]["videos"][0] video_info = extract_video_info(response["item"], video_info) if "files" not in video_data: notice("Видео обновляется и временно не доступно!", "Видео в обработке", time=8000) return url = get_mlink( video_data, quality=plugin.settings.video_quality, stream_type=plugin.settings.stream_type, ask_quality=plugin.settings.ask_quality, ) properties.update({ "item_id": item_id, "play_duration": video_info["duration"], "play_resumetime": video_info["time"], "video_number": video_info.get("episode", 1), "season_number": video_info.get("season", ""), "playcount": video_info["playcount"], "imdbnumber": video_info["imdbnumber"], }) li = plugin.list_item( playback_data["title"], path=url, properties=properties, poster=playback_data["poster"], subtitles=[subtitle["url"] for subtitle in video_data["subtitles"]], ) player = Player(list_item=li) xbmcplugin.setResolvedUrl(plugin.handle, True, li) while player.is_playing: player.set_marktime() xbmc.sleep(1000)