astrXbian/.install/.kodi/addons/plugin.video.youtube/resources/lib/youtube_plugin/kodion/impl/xbmc/info_labels.py

181 lines
5.5 KiB
Python

# -*- coding: utf-8 -*-
"""
Copyright (C) 2014-2016 bromix (plugin.video.youtube)
Copyright (C) 2016-2018 plugin.video.youtube
SPDX-License-Identifier: GPL-2.0-only
See LICENSES/GPL-2.0-only for more information.
"""
from ... import utils
from ...items import *
def _process_date(info_labels, param):
if param:
datetime = utils.datetime_parser.parse(param)
datetime = '%02d.%02d.%04d' % (datetime.day, datetime.month, datetime.year)
info_labels['date'] = datetime
def _process_int_value(info_labels, name, param):
if param is not None:
info_labels[name] = int(param)
def _process_string_value(info_labels, name, param):
if param is not None:
info_labels[name] = param
def _process_audio_rating(info_labels, param):
if param is not None:
rating = int(param)
if rating > 5:
rating = 5
if rating < 0:
rating = 0
info_labels['rating'] = rating
def _process_video_dateadded(info_labels, param):
if param is not None and param:
info_labels['dateadded'] = param
def _process_video_duration(info_labels, param):
if param is not None:
info_labels['duration'] = '%d' % param
def _process_video_rating(info_labels, param):
if param is not None:
rating = float(param)
if rating > 10.0:
rating = 10.0
if rating < 0.0:
rating = 0.0
info_labels['rating'] = rating
def _process_date_value(info_labels, name, param):
if param:
date = utils.datetime_parser.parse(param)
date = '%04d-%02d-%02d' % (date.year, date.month, date.day)
info_labels[name] = date
def _process_list_value(info_labels, name, param):
if param is not None and isinstance(param, list):
info_labels[name] = param
def _process_mediatype(info_labels, name, param):
info_labels[name] = param
def _process_last_played(info_labels, name, param):
if param:
try:
info_labels[name] = param.strftime('%Y-%m-%d %H:%M:%S')
except AttributeError:
info_labels[name] = param
def create_from_item(base_item):
info_labels = {}
# 'date' = '09.03.1982'
_process_date(info_labels, base_item.get_date())
# Directory
if isinstance(base_item, DirectoryItem):
_process_string_value(info_labels, 'plot', base_item.get_plot())
# Image
if isinstance(base_item, ImageItem):
# 'title' = 'Blow Your Head Off' (string)
_process_string_value(info_labels, 'title', base_item.get_title())
# Audio
if isinstance(base_item, AudioItem):
# 'duration' = 79 (int)
_process_int_value(info_labels, 'duration', base_item.get_duration())
# 'album' = 'Buckle Up' (string)
_process_string_value(info_labels, 'album', base_item.get_album_name())
# 'artist' = 'Angerfist' (string)
_process_string_value(info_labels, 'artist', base_item.get_artist_name())
# 'rating' = '0' - '5' (string)
_process_audio_rating(info_labels, base_item.get_rating())
# Video
if isinstance(base_item, VideoItem):
# mediatype
_process_mediatype(info_labels, 'mediatype', base_item.get_mediatype())
# play count
_process_int_value(info_labels, 'playcount', base_item.get_play_count())
# studio
_process_string_value(info_labels, 'studio', base_item.get_studio())
# 'artist' = [] (list)
_process_list_value(info_labels, 'artist', base_item.get_artist())
# 'dateadded' = '2014-08-11 13:08:56' (string) will be taken from 'date'
_process_video_dateadded(info_labels, base_item.get_date())
# TODO: starting with Helix this could be seconds
# 'duration' = '3:18' (string)
_process_video_duration(info_labels, base_item.get_duration())
_process_last_played(info_labels, 'lastplayed', base_item.get_last_played())
# 'rating' = 4.5 (float)
_process_video_rating(info_labels, base_item.get_rating())
# 'aired' = '2013-12-12' (string)
_process_date_value(info_labels, 'aired', base_item.get_aired())
# 'director' = 'Steven Spielberg' (string)
_process_string_value(info_labels, 'director', base_item.get_director())
# 'premiered' = '2013-12-12' (string)
_process_date_value(info_labels, 'premiered', base_item.get_premiered())
# 'episode' = 12 (int)
_process_int_value(info_labels, 'episode', base_item.get_episode())
# 'season' = 12 (int)
_process_int_value(info_labels, 'season', base_item.get_season())
# 'plot' = '...' (string)
_process_string_value(info_labels, 'plot', base_item.get_plot())
# 'code' = 'tt3458353' (string) - imdb id
_process_string_value(info_labels, 'code', base_item.get_imdb_id())
# 'cast' = [] (list)
_process_list_value(info_labels, 'cast', base_item.get_cast())
# Audio and Video
if isinstance(base_item, AudioItem) or isinstance(base_item, VideoItem):
# 'title' = 'Blow Your Head Off' (string)
_process_string_value(info_labels, 'title', base_item.get_title())
# 'tracknumber' = 12 (int)
_process_int_value(info_labels, 'tracknumber', base_item.get_track_number())
# 'year' = 1994 (int)
_process_int_value(info_labels, 'year', base_item.get_year())
# 'genre' = 'Hardcore' (string)
_process_string_value(info_labels, 'genre', base_item.get_genre())
return info_labels