CastagnaIT/plugin.video.netflix

View on GitHub
resources/lib/services/nfsession/directorybuilder/dir_builder_utils.py

Summary

Maintainability
A
1 hr
Test Coverage
# -*- coding: utf-8 -*-
"""
    Copyright (C) 2017 Sebastian Golasch (plugin.video.netflix)
    Copyright (C) 2020 Stefano Gottardo (original implementation module)
    Miscellaneous utility functions for directory builder

    SPDX-License-Identifier: MIT
    See LICENSES/MIT.md for more information.
"""
import os

import resources.lib.common as common
from resources.lib.common.kodi_wrappers import ListItemW
from resources.lib.globals import G


def _get_custom_thumb_path(thumb_file_name):
    return os.path.join(G.ADDON_DATA_PATH, 'resources', 'media', thumb_file_name)


def add_items_previous_next_page(directory_items, pathitems, perpetual_range_selector, sub_genre_id=None,
                                 path_params=None):
    if pathitems and perpetual_range_selector:
        if 'previous_start' in perpetual_range_selector:
            params = {'perpetual_range_start': perpetual_range_selector.get('previous_start'),
                      'sub_genre_id': sub_genre_id}
            if path_params:
                params.update(path_params)
            previous_page_item = ListItemW(label=common.get_local_string(30148))
            previous_page_item.setProperty('specialsort', 'top')  # Force an item to stay on top
            previous_page_item.setArt({'thumb': _get_custom_thumb_path('FolderPagePrevious.png')})
            directory_items.insert(0, (common.build_url(pathitems=pathitems, params=params, mode=G.MODE_DIRECTORY),
                                       previous_page_item,
                                       True))
        if 'next_start' in perpetual_range_selector:
            params = {'perpetual_range_start': perpetual_range_selector.get('next_start'),
                      'sub_genre_id': sub_genre_id}
            if path_params:
                params.update(path_params)
            next_page_item = ListItemW(label=common.get_local_string(30147))
            next_page_item.setProperty('specialsort', 'bottom')  # Force an item to stay on bottom
            next_page_item.setArt({'thumb': _get_custom_thumb_path('FolderPageNext.png')})
            directory_items.append((common.build_url(pathitems=pathitems, params=params, mode=G.MODE_DIRECTORY),
                                    next_page_item,
                                    True))


def get_param_watched_status_by_profile():
    """
    Get a the current profile guid, will be used as parameter in the ListItem's (of videos),
    so that Kodi database can distinguish the data (like watched status) according to each Netflix profile
    :return: a dictionary to be add to 'build_url' params
    """
    return {'profile_guid': G.LOCAL_DB.get_active_profile_guid()}


def get_availability_message(video_data):
    suppl_msg = None
    suppl_dp = video_data.get('dpSupplementalMessage', {})
    if suppl_dp.get('$type') != 'error':
        suppl_msg = suppl_dp.get('value')
    return (suppl_msg or video_data.get('availability', {}).get('value', {}).get(
        'availabilityDate') or common.get_local_string(10005))  # "Not available"