181 lines
5.5 KiB
Python
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
|