def show_hdplayers(self, movie):
        is_folder = False
        movie_title = movie.title
        #working_urls = ["vidoza", "fembed", "gounlimited", "mixdrop"]

        for player_name in movie.urls:
            item_url = {
                'mode': 'play_hd',
                '0': movie_title,
                '1': movie.page_url,
                '2': player_name
            }
            item_title = "{0} [{1}]".format(movie_title, player_name)
            #if player_name in working_urls:
            #    item_title = "{0} [{1}]".format(movie_title, player_name)
            #else:
            #    item_title = "{0} [{1}]  ---- rotto ----".format(movie_title, player_name)

            item_property = {"prop_key": 'IsPlayable', "prop_value": 'true'}

            kodiutilsitem.add_item(url_dict=item_url,
                                   title=item_title,
                                   is_folder=is_folder,
                                   properties=item_property)

        kodiutilsitem.end_directory()
    def show_jsons(self, movies):
        """
        Show movies from json file

        :param movie_title: str
        :param movie_urls: list of strings representing movie url
        """
        is_folder = False

        for movie in movies:
            item_url = {
                'mode': 'play_direct',
                '0': movie.title,
                '1': movie.urls
            }

            item_title = "{0}".format(movie.title)

            item_property = {"prop_key": 'IsPlayable', "prop_value": 'true'}

            kodiutilsitem.add_item(url_dict=item_url,
                                   title=item_title,
                                   is_folder=is_folder,
                                   properties=item_property)

        kodiutilsitem.end_directory()
    def show_season_episodes(self, tv_title, episodes):
        """
        Show all episodes of the selected season.
        
        :param tv_title: str
        :param episodes: list of Episode objects
        """
        is_folder = True
        for episode in episodes:
            ep_title = episode.title

            item_url = {
                'mode': self.on_episode_click,
                '0': ep_title.encode("utf-8"),
                '1': episode.urls
            }

            item_title = u"".join(ep_title).encode("utf-8").strip()

            item_property = {"prop_key": 'IsPlayable', "prop_value": 'true'}

            kodiutilsitem.add_item(url_dict=item_url,
                                   title=item_title,
                                   is_folder=is_folder,
                                   properties=item_property)

        kodiutilsitem.end_directory()
    def show_playable_url(self, movie_title, movie_urls):
        """
        Show playable items with all streaming options for the selected movie.

        :param movie_title: str
        :param movie_urls: list of strings representing movie url
        """
        is_folder = False
        for movie_url in movie_urls:
            streaming_source = kodiutilsitem.get_streaming_source_name(movie_url)

            item_url = {
                'mode': self.on_playable_urls_click,
                '0': movie_title,
                '1': movie_url
                }
            
            item_title = "{0} [{1}]".format(movie_title, streaming_source)

            item_property = {"prop_key": 'IsPlayable', "prop_value": 'true'}

            kodiutilsitem.add_item(url_dict=item_url, title=item_title, is_folder=is_folder,
                properties=item_property)
                    
        kodiutilsitem.end_directory()
    def show_tvshows_results(self, tvshows):
        """
        Show all movies/tv shows scraped
        :param tvshows: list of TvShow objects
        :param media_type: str
        """
        is_folder = True
        for tvshow in tvshows:
            item_url = {
                'mode': self.on_selected_tvshow,
                '0': tvshow.title.encode("utf-8"),
                '1': tvshow.page_url
                }

            item_title = u''.join(tvshow.title).encode("utf-8").strip()
        
            item_arts = {
                'thumb': tvshow.image_url,
                'fanart': tvshow.image_url
                }

            kodiutilsitem.add_item(url_dict=item_url, title=item_title,
                is_folder=is_folder, arts=item_arts)
            
        kodiutilsitem.end_directory()
def create_menu():
    kodiutilsitem.add_menu_item({'mode': 'menu/genres/list'}, 'Generi')
    kodiutilsitem.add_menu_item({'mode': 'menu/people/keyword'}, 'Attori/Cast')
    kodiutilsitem.add_menu_item({'mode': 'menu/keyword_tv_websites'},
                                'Cerca Serie TV')
    kodiutilsitem.add_menu_item({'mode': 'menu/keyword_websites'},
                                'Cerca Film')
    kodiutilsitem.add_menu_item({'mode': ''}, "-" * 100)
    kodiutilsitem.add_menu_item({'mode': 'menu/movies/keyword'},
                                'Cerca Film (TMDB)')
    kodiutilsitem.add_menu_item({'mode': 'menu/movies/most_popular'},
                                'Guarda i film piu popolari')
    kodiutilsitem.add_menu_item({'mode': 'menu/movies/most_voted'},
                                'Guarda i film piu votati')
    kodiutilsitem.add_menu_item({'mode': 'menu/movies/now_playing'},
                                'Guarda i film in onda al cinema')
    kodiutilsitem.add_menu_item({'mode': ''}, "-" * 100)
    kodiutilsitem.add_menu_item({'mode': 'menu/tvshow/keyword'},
                                'Cerca Serie Tv (TMDB)')
    kodiutilsitem.add_menu_item({'mode': 'menu/tvshow/most_popular'},
                                'Guarda le Serie Tv piu popolari')
    kodiutilsitem.add_menu_item({'mode': 'menu/tvshow/most_voted'},
                                'Guarda le Serie Tv piu votate')
    kodiutilsitem.add_menu_item({'mode': 'menu/tvshow/on_air'},
                                'Guarda le Serie Tv ancora in corso')

    kodiutilsitem.add_menu_item({'mode': ''}, "-" * 100)
    kodiutilsitem.add_menu_item({'mode': 'play_hardcoded'}, 'FILE JSON')
    kodiutilsitem.add_menu_item({'mode': ''}, "-" * 100)

    kodiutilsitem.end_directory()
def show_moviedb_results(results, media_type, tmdb_type, page=1, keyword=None):
    """
    Show movies or tv shows got from the themoviedb api request.
    
    :param results: list of Movies or TvShow objects
    :param media_type: str represent movie or tv show type (used for routing)
    :param tmdb_type: str represent mode for paginations
    :param page: int
    :param keyword: str, optional represent user keyboard input
    """
    is_folder = True
    page = int(page)
    for media in results:
        item_url = {
            'mode': media_type,
            '0': media.title.encode("utf-8"),
        }

        item_title = media.title.encode("utf-8")

        item_arts = {
            'thumb': tmdb.MOVIEDB_IMAGE_URL.format('500', media.image_url),
            'fanart': tmdb.MOVIEDB_IMAGE_URL.format('500', media.image_url)
        }

        item_info = {
            'title': media.title.encode('utf-8'),
            'plot': media.overview.encode('utf-8'),
            'year': media.release_date,
            'mediatype': 'movie'
        }

        kodiutilsitem.add_item(url_dict=item_url,
                               title=item_title,
                               is_folder=is_folder,
                               info=item_info,
                               arts=item_arts)

    if keyword is not None:
        kodiutilsitem.add_menu_item(
            {
                'mode': tmdb_type,
                '0': page + 1,
                '1': keyword
            }, NEXT_PAGE)
    else:
        kodiutilsitem.add_menu_item({
            'mode': tmdb_type,
            '0': page + 1,
        }, NEXT_PAGE)

    kodiutilsitem.end_directory()
def show_moviedb_cast_results(results,
                              media_type,
                              tmdb_type,
                              page=1,
                              keyword=None):
    """
    Show cast got from the themoviedb api request.
    
    :param results: list of dictionaries representing themoviedb api request's results
    :param media_type: str
    :param tmdb_type: str represent routing url for paginations
    :param page: int
    :param keyword: str, optional represent user keyboard input
    """
    is_folder = True
    page = int(page)
    for media in results:
        item_url = {'mode': media_type, '0': 1, '1': media["people_id"]}

        item_title = media["nome"].encode("utf-8")

        item_arts = {
            'thumb': tmdb.MOVIEDB_IMAGE_URL.format('500', media["poster"]),
            'fanart': tmdb.MOVIEDB_IMAGE_URL.format('500', media["poster"])
        }

        item_info = {
            'title': media["nome"].encode('utf-8'),
            'mediatype': 'movie'
        }

        kodiutilsitem.add_item(url_dict=item_url,
                               title=item_title,
                               is_folder=is_folder,
                               info=item_info,
                               arts=item_arts)

    if keyword is not None:
        kodiutilsitem.add_menu_item(
            {
                'mode': tmdb_type,
                '0': page + 1,
                '1': keyword
            }, NEXT_PAGE)
    else:
        kodiutilsitem.add_menu_item({
            'mode': tmdb_type,
            '0': page + 1,
        }, NEXT_PAGE)

    kodiutilsitem.end_directory()
def show_movie_genres_list(results, media_type):
    """
    Show genres list from the themoviedb api request.
    
    :param results: list of dictionaries representing themoviedb api request's results
    :param media_type: str
    """
    is_folder = True
    for media in results:
        item_url = {'mode': media_type, '0': 1, '1': media["id"]}

        item_title = media["nome"].encode("utf-8")

        item_info = {'title': media["nome"].encode('utf-8')}

        kodiutilsitem.add_item(url_dict=item_url,
                               title=item_title,
                               is_folder=is_folder,
                               info=item_info)

    kodiutilsitem.end_directory()
    def show_fpt_results(self, movies):
        """
        Show all movies/tv shows scraped
        :param posts_data: list of Movie objects
        """
        is_folder = True
        for movie in movies:
            item_url = {
                'mode': self.on_selected_movie,
                '0': movie.title.encode("utf-8"),
                '1': movie.page_url
            }

            item_title = u''.join(movie.title).encode("utf-8").strip()

            item_arts = {'thumb': movie.image_url, 'fanart': movie.image_url}
            kodiutilsitem.add_item(url_dict=item_url,
                                   title=item_title,
                                   is_folder=is_folder,
                                   arts=item_arts)

        kodiutilsitem.end_directory()
    def show_tv_seasons(self, tv_title, seasons):
        """
        Show all seasons of the selected tv show.
        
        :param tv_title: str
        :param fpt_tv_url: str
        :param seasons: list of Seasons objects
        """

        is_folder = True
        for season in seasons:
            item_url = {
                'mode': self.on_season_click,
                '0': season.title.encode("utf-8"),
                '1': season.ref_url
            }

            item_title = u''.join(season.title).encode("utf-8").strip()

            kodiutilsitem.add_item(url_dict=item_url,
                                   title=item_title,
                                   is_folder=is_folder)

        kodiutilsitem.end_directory()
    def show_tv_seasons(self, tv_title, seasons, fpt_tv_url=None):
        """
        Show all seasons of the selected tv show.
        
        :param tv_title: str
        :param fpt_tv_url: str
        :param seasons: list of Seasons objects
        """

        is_folder = True
        for season in seasons:
            item_url = {
                #'mode':'tvshow/selected_season',
                'mode': self.on_season_click,
                '0': season.title.encode("utf-8"),
                '1': season.html_block.encode("utf-8") if fpt_tv_url is None else fpt_tv_url,
                '2': season.season_no
                }
            
            item_title = u''.join(season.title).encode("utf-8").strip()

            kodiutilsitem.add_item(url_dict=item_url, title=item_title, is_folder=is_folder)
            
        kodiutilsitem.end_directory()