kodi_client 0.6.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/kodi_client.gemspec +1 -1
- data/lib/kodi_client/extensions/chainable.rb +71 -0
- data/lib/kodi_client/extensions/comparable.rb +29 -0
- data/lib/kodi_client/extensions/creatable.rb +137 -0
- data/lib/kodi_client/extensions/iterable.rb +14 -0
- data/lib/kodi_client/kodi_error.rb +14 -0
- data/lib/kodi_client/kodi_method.rb +34 -0
- data/lib/kodi_client/{options.rb → kodi_options.rb} +1 -1
- data/lib/kodi_client/kodi_request.rb +16 -0
- data/lib/kodi_client/kodi_response.rb +21 -0
- data/lib/kodi_client/{method → methods}/addons.rb +4 -4
- data/lib/kodi_client/{method → methods}/application.rb +2 -2
- data/lib/kodi_client/{method → methods}/audio_library.rb +2 -2
- data/lib/kodi_client/{method → methods}/favourites.rb +2 -2
- data/lib/kodi_client/{method → methods}/files.rb +2 -2
- data/lib/kodi_client/{method → methods}/gui.rb +2 -2
- data/lib/kodi_client/{method → methods}/input.rb +2 -2
- data/lib/kodi_client/{method → methods}/player.rb +2 -2
- data/lib/kodi_client/{method → methods}/profiles.rb +2 -2
- data/lib/kodi_client/{method → methods}/system.rb +2 -2
- data/lib/kodi_client/types/addons/addon_content_type.rb +18 -0
- data/lib/kodi_client/types/addons/addon_dependency_type.rb +21 -0
- data/lib/kodi_client/types/addons/addon_details_type.rb +44 -0
- data/lib/kodi_client/types/addons/addon_extra_info_type.rb +20 -0
- data/lib/kodi_client/types/addons/addon_fields_type.rb +28 -0
- data/lib/kodi_client/types/addons/addon_types_type.rb +48 -0
- data/lib/kodi_client/types/addons/get_addon_returned_type.rb +21 -0
- data/lib/kodi_client/types/addons/get_addons_returned_type.rb +22 -0
- data/lib/kodi_client/types/application/property_name_type.rb +19 -0
- data/lib/kodi_client/types/application/property_value_type.rb +24 -0
- data/lib/kodi_client/types/application/version_type.rb +22 -0
- data/lib/kodi_client/types/audio/audio_album_release_type_type.rb +15 -0
- data/lib/kodi_client/types/audio/audio_contributor_type.rb +22 -0
- data/lib/kodi_client/types/audio/audio_details_base_type.rb +31 -0
- data/lib/kodi_client/types/audio/audio_details_media_type.rb +45 -0
- data/lib/kodi_client/types/audio/audio_fields_album_type.rb +51 -0
- data/lib/kodi_client/types/audio/details_album_type.rb +58 -0
- data/lib/kodi_client/types/audio/genre_type.rb +20 -0
- data/lib/kodi_client/types/audio/get_albums_returned_type.rb +22 -0
- data/lib/kodi_client/types/favourites/details_favourite_type.rb +24 -0
- data/lib/kodi_client/types/favourites/fields_favourite_type.rb +17 -0
- data/lib/kodi_client/types/favourites/get_favourite_returned_type.rb +22 -0
- data/lib/kodi_client/types/favourites/type_type.rb +18 -0
- data/lib/kodi_client/types/files/file_label_type.rb +20 -0
- data/lib/kodi_client/types/files/get_directory_returned_type.rb +22 -0
- data/lib/kodi_client/types/files/get_sources_returned_type.rb +22 -0
- data/lib/kodi_client/types/files/media_type.rb +18 -0
- data/lib/kodi_client/types/files/prepare_download_returned_type.rb +21 -0
- data/lib/kodi_client/types/global/direction_type.rb +17 -0
- data/lib/kodi_client/types/global/global_time_type.rb +22 -0
- data/lib/kodi_client/types/global/id_label_type.rb +20 -0
- data/lib/kodi_client/types/global/id_name_type.rb +20 -0
- data/lib/kodi_client/types/global/increment_decrement_type.rb +15 -0
- data/lib/kodi_client/types/global/next_prev_type.rb +17 -0
- data/lib/kodi_client/types/global/password_encryption_type.rb +16 -0
- data/lib/kodi_client/types/global/rotate_type.rb +15 -0
- data/lib/kodi_client/types/global/toggle_type.rb +16 -0
- data/lib/kodi_client/types/gui/gui_window_type.rb +124 -0
- data/lib/kodi_client/types/gui/property_name_type.rb +18 -0
- data/lib/kodi_client/types/gui/property_value_type.rb +26 -0
- data/lib/kodi_client/types/gui/stereoscopy_mode_type.rb +31 -0
- data/lib/kodi_client/types/input/input_action_type.rb +212 -0
- data/lib/kodi_client/types/{item_types.rb → items/item_details_base_type.rb} +1 -3
- data/lib/kodi_client/types/list/list_field_files_type.rb +83 -0
- data/lib/kodi_client/types/list/list_fields_all_type.rb +96 -0
- data/lib/kodi_client/types/list/list_item_all_type.rb +73 -0
- data/lib/kodi_client/types/list/list_item_base_type.rb +138 -0
- data/lib/kodi_client/types/list/list_item_file_type.rb +68 -0
- data/lib/kodi_client/types/list/list_limits_returned_type.rb +23 -0
- data/lib/kodi_client/types/list/list_limits_type.rb +19 -0
- data/lib/kodi_client/types/list/list_sort_method_type.rb +54 -0
- data/lib/kodi_client/types/list/list_sort_type.rb +22 -0
- data/lib/kodi_client/types/list/sort_order_type.rb +15 -0
- data/lib/kodi_client/types/media/media_artwork_type.rb +22 -0
- data/lib/kodi_client/types/media/media_details_base_type.rb +28 -0
- data/lib/kodi_client/types/media/media_type_type.rb +16 -0
- data/lib/kodi_client/types/player/audio_stream_type.rb +29 -0
- data/lib/kodi_client/types/player/player_position_time_type.rb +22 -0
- data/lib/kodi_client/types/player/player_repeat_type.rb +17 -0
- data/lib/kodi_client/types/player/player_speed_type.rb +26 -0
- data/lib/kodi_client/types/player/player_type.rb +24 -0
- data/lib/kodi_client/types/player/player_type_type.rb +16 -0
- data/lib/kodi_client/types/player/player_view_mode_type.rb +23 -0
- data/lib/kodi_client/types/player/player_visibility_type.rb +16 -0
- data/lib/kodi_client/types/player/property_name_type.rb +38 -0
- data/lib/kodi_client/types/player/property_value_type.rb +60 -0
- data/lib/kodi_client/types/player/seek_jump_type.rb +17 -0
- data/lib/kodi_client/types/player/seek_returned_type.rb +23 -0
- data/lib/kodi_client/types/player/subtitle_type.rb +24 -0
- data/lib/kodi_client/types/player/video_stream_type.rb +26 -0
- data/lib/kodi_client/types/player/view_mode_type.rb +22 -0
- data/lib/kodi_client/types/player/zoom_type.rb +15 -0
- data/lib/kodi_client/types/profiles/details_profile_type.rb +24 -0
- data/lib/kodi_client/types/profiles/fields_profile_type.rb +15 -0
- data/lib/kodi_client/types/profiles/get_profiles_returned_type.rb +22 -0
- data/lib/kodi_client/types/profiles/profile_password_type.rb +20 -0
- data/lib/kodi_client/types/{pvr_type.rb → pvr/channel_type_type.rb} +2 -4
- data/lib/kodi_client/types/system/property_name_type.rb +17 -0
- data/lib/kodi_client/types/{system_types.rb → system/property_value_type.rb} +2 -13
- data/lib/kodi_client/types/video/stream_details_type.rb +24 -0
- data/lib/kodi_client/types/video/video_cast_type.rb +22 -0
- data/lib/kodi_client/types/video/video_details_base_type.rb +29 -0
- data/lib/kodi_client/types/video/video_details_file_type.rb +37 -0
- data/lib/kodi_client/types/video/video_details_item_type.rb +32 -0
- data/lib/kodi_client/types/video/video_details_media_type.rb +28 -0
- data/lib/kodi_client/types/video/video_resume_type.rb +20 -0
- data/lib/kodi_client.rb +137 -49
- metadata +107 -34
- data/lib/kodi_client/Chainable.rb +0 -48
- data/lib/kodi_client/kodi_module.rb +0 -80
- data/lib/kodi_client/types/addon_types.rb +0 -177
- data/lib/kodi_client/types/application_types.rb +0 -52
- data/lib/kodi_client/types/audio_types.rb +0 -221
- data/lib/kodi_client/types/favourites_types.rb +0 -61
- data/lib/kodi_client/types/files_types.rb +0 -63
- data/lib/kodi_client/types/global_types.rb +0 -102
- data/lib/kodi_client/types/gui_types.rb +0 -179
- data/lib/kodi_client/types/input_types.rb +0 -214
- data/lib/kodi_client/types/list_types.rb +0 -542
- data/lib/kodi_client/types/media_types.rb +0 -53
- data/lib/kodi_client/types/player_type.rb +0 -294
- data/lib/kodi_client/types/profiles_types.rb +0 -65
- data/lib/kodi_client/types/video_types.rb +0 -150
- data/lib/kodi_client/util/comparable.rb +0 -20
- data/lib/kodi_client/util/creatable.rb +0 -106
- data/lib/kodi_client/util/iterable.rb +0 -11
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# player speed enum, -32 to 32
|
|
7
|
+
module PlayerSpeed
|
|
8
|
+
extend Extensions::Iterable
|
|
9
|
+
|
|
10
|
+
MINUS_32 = -32
|
|
11
|
+
MINUS_16 = -16
|
|
12
|
+
MINUS_8 = -8
|
|
13
|
+
MINUS_4 = -4
|
|
14
|
+
MINUS_2 = -2
|
|
15
|
+
MINUS_1 = -1
|
|
16
|
+
NEUTRAL = 0
|
|
17
|
+
PLUS_1 = 1
|
|
18
|
+
PLUS_2 = 2
|
|
19
|
+
PLUS_4 = 4
|
|
20
|
+
PLUS_8 = 8
|
|
21
|
+
PLUS_16 = 16
|
|
22
|
+
PLUS_32 = 32
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# player item
|
|
7
|
+
class Player
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :player_id, :player_type, :type, :name, :plays_audio, :plays_video
|
|
12
|
+
|
|
13
|
+
def initialize(player_id, player_type, type, name, plays_audio, plays_video)
|
|
14
|
+
@player_id = player_id
|
|
15
|
+
@player_type = player_type
|
|
16
|
+
@type = type
|
|
17
|
+
@name = name
|
|
18
|
+
@plays_audio = plays_audio
|
|
19
|
+
@plays_video = plays_video
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# Player.Type https://kodi.wiki/view/JSON-RPC_API/v12#Player.Type
|
|
7
|
+
module PlayerType
|
|
8
|
+
extend Extensions::Iterable
|
|
9
|
+
|
|
10
|
+
VIDEO = 'video'
|
|
11
|
+
AUDIO = 'audio'
|
|
12
|
+
PICTURE = 'picture'
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# return value for Player.GetViewMode
|
|
7
|
+
class PlayerViewMode
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :nonlinear_stretch, :pixel_ratio, :vertical_shift, :view_mode, :zoom
|
|
12
|
+
|
|
13
|
+
def initialize(nonlinear_stretch, pixel_ratio, vertical_shift, view_mode, zoom)
|
|
14
|
+
@nonlinear_stretch = nonlinear_stretch
|
|
15
|
+
@pixel_ratio = pixel_ratio
|
|
16
|
+
@vertical_shift = vertical_shift
|
|
17
|
+
@view_mode = view_mode
|
|
18
|
+
@zoom = zoom
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# player types
|
|
7
|
+
module PlayerVisibility
|
|
8
|
+
extend Extensions::Iterable
|
|
9
|
+
|
|
10
|
+
INTERNAL = 'internal'
|
|
11
|
+
EXTERNAL = 'external'
|
|
12
|
+
REMOTE = 'remote'
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# Player.Property.Name https://kodi.wiki/view/JSON-RPC_API/v12#Player.Property.Name
|
|
7
|
+
module PropertyName
|
|
8
|
+
extend Extensions::Iterable
|
|
9
|
+
|
|
10
|
+
AUDIO_STREAMS = 'audiostreams'
|
|
11
|
+
CAN_CHANGE_SPEED = 'canchangespeed'
|
|
12
|
+
CAN_MOVE = 'canmove'
|
|
13
|
+
CAN_REPEAT = 'canrepeat'
|
|
14
|
+
CAN_ROTATE = 'canrotate'
|
|
15
|
+
CAN_SEEK = 'canseek'
|
|
16
|
+
CAN_SHUFFLE = 'canshuffle'
|
|
17
|
+
CAN_ZOOM = 'canzoom'
|
|
18
|
+
CURRENT_AUDIO_STREAM = 'currentaudiostream'
|
|
19
|
+
CURRENT_SUBTITLE = 'currentsubtitle'
|
|
20
|
+
CURRENT_VIDEO_STREAM = 'currentvideostream'
|
|
21
|
+
LIVE = 'live'
|
|
22
|
+
PARTY_MODE = 'partymode'
|
|
23
|
+
PERCENTAGE = 'percentage'
|
|
24
|
+
PLAYLIST_ID = 'playlistid'
|
|
25
|
+
POSITION = 'position'
|
|
26
|
+
REPEAT = 'repeat'
|
|
27
|
+
SHUFFLED = 'shuffled'
|
|
28
|
+
SPEED = 'speed'
|
|
29
|
+
SUBTITLE_ENABLED = 'subtitleenabled'
|
|
30
|
+
SUBTITLES = 'subtitles'
|
|
31
|
+
TIME = 'time'
|
|
32
|
+
TOTAL_TIME = 'totaltime'
|
|
33
|
+
TYPE = 'type'
|
|
34
|
+
VIDEO_STREAMS = 'videostreams'
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# Player.Property.Value https://kodi.wiki/view/JSON-RPC_API/v12#Player.Property.Name
|
|
7
|
+
class PropertyValue
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :audio_streams, :cache_percentage, :can_change_speed, :can_move, :can_repeat, :can_rotate,
|
|
12
|
+
:can_seek, :can_shuffle, :can_zoom, :current_audio_stream, :current_subtitle, :current_video_stream,
|
|
13
|
+
:live, :party_mode, :percentage, :playlist_id, :position, :repeat, :shuffled, :speed,
|
|
14
|
+
:subtitle_enabled, :subtitles, :time, :total_time, :type, :video_streams
|
|
15
|
+
|
|
16
|
+
type_mapping ['audiostreams', AudioStream, true], ['currentaudiostream', AudioStream],
|
|
17
|
+
['currentsubtitle', Subtitle], ['currentvideostream', VideoStream],
|
|
18
|
+
['subtitles', Subtitle, true], ['time', Global::GlobalTime],
|
|
19
|
+
['totaltime', Global::GlobalTime], ['videostreams', VideoStream, true]
|
|
20
|
+
|
|
21
|
+
def initialize(audio_streams, cache_percentage, can_change_speed, can_move, can_repeat, can_rotate, can_seek,
|
|
22
|
+
can_shuffle, can_zoom, current_audio_stream, current_subtitle, current_video_stream, live,
|
|
23
|
+
party_mode, percentage, playlist_id, position, repeat, shuffled, speed,
|
|
24
|
+
subtitle_enabled, subtitles, time, total_time, type, video_streams)
|
|
25
|
+
type = type.nil? ? PlayerType::VIDEO : type
|
|
26
|
+
playlist_id = playlist_id.nil? ? -1 : playlist_id
|
|
27
|
+
position = position.nil? ? -1 : position
|
|
28
|
+
repeat = repeat.nil? ? PlayerRepeat::OFF : repeat
|
|
29
|
+
|
|
30
|
+
@audio_streams = audio_streams
|
|
31
|
+
@cache_percentage = cache_percentage
|
|
32
|
+
@can_change_speed = can_change_speed
|
|
33
|
+
@can_move = can_move
|
|
34
|
+
@can_repeat = can_repeat
|
|
35
|
+
@can_rotate = can_rotate
|
|
36
|
+
@can_seek = can_seek
|
|
37
|
+
@can_shuffle = can_shuffle
|
|
38
|
+
@can_zoom = can_zoom
|
|
39
|
+
@current_audio_stream = current_audio_stream
|
|
40
|
+
@current_subtitle = current_subtitle
|
|
41
|
+
@current_video_stream = current_video_stream
|
|
42
|
+
@live = live
|
|
43
|
+
@party_mode = party_mode
|
|
44
|
+
@percentage = percentage
|
|
45
|
+
@playlist_id = playlist_id
|
|
46
|
+
@position = position
|
|
47
|
+
@repeat = repeat
|
|
48
|
+
@shuffled = shuffled
|
|
49
|
+
@speed = speed
|
|
50
|
+
@subtitle_enabled = subtitle_enabled
|
|
51
|
+
@subtitles = subtitles
|
|
52
|
+
@time = time
|
|
53
|
+
@total_time = total_time
|
|
54
|
+
@type = type
|
|
55
|
+
@video_streams = video_streams
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# defines the jump size for seek
|
|
7
|
+
module SeekJump
|
|
8
|
+
include Extensions::Iterable
|
|
9
|
+
|
|
10
|
+
SMALL_FORWARD = 'smallforward'
|
|
11
|
+
SMALL_BACKWARD = 'smallbackward'
|
|
12
|
+
BIG_FORWARD = 'bigforward'
|
|
13
|
+
BIG_BACKWARD = 'bigbackward'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# return value of Player.Seek
|
|
7
|
+
class SeekReturned
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :percentage, :time, :total_time
|
|
12
|
+
|
|
13
|
+
type_mapping ['time', Global::GlobalTime], ['totaltime', Global::GlobalTime]
|
|
14
|
+
|
|
15
|
+
def initialize(percentage, time, total_time)
|
|
16
|
+
@percentage = percentage
|
|
17
|
+
@time = time
|
|
18
|
+
@total_time = total_time
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# Player Subtitle https://kodi.wiki/view/JSON-RPC_API/v12#Player.Subtitle
|
|
7
|
+
class Subtitle
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :index, :is_default, :is_forced, :is_impaired, :language, :name
|
|
12
|
+
|
|
13
|
+
def initialize(index, is_default, is_forced, is_impaired, language, name)
|
|
14
|
+
@index = index
|
|
15
|
+
@is_default = is_default
|
|
16
|
+
@is_forced = is_forced
|
|
17
|
+
@is_impaired = is_impaired
|
|
18
|
+
@language = language
|
|
19
|
+
@name = name
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# Player.Video.Stream https://kodi.wiki/view/JSON-RPC_API/v12#Player.Video.Stream
|
|
7
|
+
class VideoStream
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :codec, :height, :index, :language, :name, :width, :duration, :aspect
|
|
12
|
+
|
|
13
|
+
def initialize(codec, height, index, language, name, width, duration, aspect)
|
|
14
|
+
@codec = codec
|
|
15
|
+
@height = height
|
|
16
|
+
@index = index
|
|
17
|
+
@language = language
|
|
18
|
+
@name = name
|
|
19
|
+
@width = width
|
|
20
|
+
@duration = duration
|
|
21
|
+
@aspect = aspect
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Player
|
|
6
|
+
# Player.ViewMode https://kodi.wiki/view/JSON-RPC_API/v12#Player.ViewMode
|
|
7
|
+
module ViewMode
|
|
8
|
+
extend Extensions::Iterable
|
|
9
|
+
|
|
10
|
+
NORMAL = 'normal'
|
|
11
|
+
ZOOM = 'zoom'
|
|
12
|
+
STRETCH_4X3 = 'strech4x3'
|
|
13
|
+
WIDE_ZOOM = 'widezoom'
|
|
14
|
+
STRETCH_16X9 = 'stretch16x9'
|
|
15
|
+
ORIGINAL = 'original'
|
|
16
|
+
STRETCH_16X9_NONLIN = 'stretch16x9nonline'
|
|
17
|
+
ZOOM_120_WIDTH = 'zoom120width'
|
|
18
|
+
ZOOM_110_WIDTH = 'zoom110width'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Profiles
|
|
6
|
+
# Profiles.Details.Profile https://kodi.wiki/view/JSON-RPC_API/v12#Profiles.Details.Profile
|
|
7
|
+
class DetailsProfile
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
include Items::ItemDetailsBase
|
|
10
|
+
extend Extensions::Creatable
|
|
11
|
+
|
|
12
|
+
attr_reader :lock_mode, :thumbnail
|
|
13
|
+
|
|
14
|
+
fields_to_map %w[lock_mode thumbnail label]
|
|
15
|
+
|
|
16
|
+
def initialize(lock_mode, thumbnail, label)
|
|
17
|
+
@lock_mode = lock_mode
|
|
18
|
+
@thumbnail = thumbnail
|
|
19
|
+
item_details_base(label)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Profiles
|
|
6
|
+
# Profiles.Fields.Profile https://kodi.wiki/view/JSON-RPC_API/v12#Profiles.Fields.Profile
|
|
7
|
+
module FieldsProfile
|
|
8
|
+
extend Extensions::Iterable
|
|
9
|
+
|
|
10
|
+
LOCK_MODE = 'lockmode'
|
|
11
|
+
THUMBNAIL = 'thumbnail'
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Profiles
|
|
6
|
+
# return type for Profiles.GetProfiles
|
|
7
|
+
class GetProfilesReturned
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :limits, :profiles
|
|
12
|
+
|
|
13
|
+
type_mapping ['limits', List::ListLimitsReturned], ['profiles', DetailsProfile, true]
|
|
14
|
+
|
|
15
|
+
def initialize(limits, profiles)
|
|
16
|
+
@limits = limits
|
|
17
|
+
@profiles = profiles
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Profiles
|
|
6
|
+
# Profiles.Password https://kodi.wiki/view/JSON-RPC_API/v12#Profiles.Password
|
|
7
|
+
class ProfilePassword
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :value, :encryption
|
|
12
|
+
|
|
13
|
+
def initialize(value, encryption = Types::Global::PasswordEncryption::MD5)
|
|
14
|
+
@value = value
|
|
15
|
+
@encryption = encryption
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -3,15 +3,13 @@
|
|
|
3
3
|
module KodiClient
|
|
4
4
|
module Types
|
|
5
5
|
module PVR
|
|
6
|
-
|
|
7
6
|
# PVR.Channel.Type https://kodi.wiki/view/JSON-RPC_API/v12#PVR.Channel.Type
|
|
8
7
|
module ChannelType
|
|
9
|
-
extend Iterable
|
|
10
|
-
|
|
8
|
+
extend Extensions::Iterable
|
|
9
|
+
|
|
11
10
|
TV = 'TV'
|
|
12
11
|
RADIO = 'Radio'
|
|
13
12
|
end
|
|
14
13
|
end
|
|
15
14
|
end
|
|
16
15
|
end
|
|
17
|
-
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module System
|
|
6
|
+
# System.Property.Name https://kodi.wiki/view/JSON-RPC_API/v12#System.Property.Name
|
|
7
|
+
module PropertyName
|
|
8
|
+
extend Extensions::Iterable
|
|
9
|
+
|
|
10
|
+
CAN_SHUTDOWN = 'canshutdown'
|
|
11
|
+
CAN_SUSPEND = 'cansuspend'
|
|
12
|
+
CAN_HIBERNATE = 'canhibernate'
|
|
13
|
+
CAN_REBOOT = 'canreboot'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -3,21 +3,10 @@
|
|
|
3
3
|
module KodiClient
|
|
4
4
|
module Types
|
|
5
5
|
module System
|
|
6
|
-
|
|
7
|
-
# System.Property.Name https://kodi.wiki/view/JSON-RPC_API/v12#System.Property.Name
|
|
8
|
-
module PropertyName
|
|
9
|
-
extend Iterable
|
|
10
|
-
|
|
11
|
-
CAN_SHUTDOWN = 'canshutdown'
|
|
12
|
-
CAN_SUSPEND = 'cansuspend'
|
|
13
|
-
CAN_HIBERNATE = 'canhibernate'
|
|
14
|
-
CAN_REBOOT = 'canreboot'
|
|
15
|
-
end
|
|
16
|
-
|
|
17
6
|
# System.Property.Value https://kodi.wiki/view/JSON-RPC_API/v12#System.Property.Value
|
|
18
7
|
class PropertyValue
|
|
19
|
-
include Comparable
|
|
20
|
-
extend Creatable
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
21
10
|
|
|
22
11
|
attr_reader :can_hibernate, :can_reboot, :can_shutdown, :can_suspend
|
|
23
12
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Video
|
|
6
|
+
# Video.Streams https://kodi.wiki/view/JSON-RPC_API/v12#Video.Streams
|
|
7
|
+
class StreamDetails
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :audio, :subtitle, :video
|
|
12
|
+
|
|
13
|
+
type_mapping ['audio', Player::AudioStream, true], ['subtitle', Player::Subtitle, true],
|
|
14
|
+
['video', Player::VideoStream, true]
|
|
15
|
+
|
|
16
|
+
def initialize(audio, subtitle, video)
|
|
17
|
+
@audio = audio
|
|
18
|
+
@subtitle = subtitle
|
|
19
|
+
@video = video
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Video
|
|
6
|
+
# Video.Cast https://kodi.wiki/view/JSON-RPC_API/v12#Video.Cast
|
|
7
|
+
class VideoCast
|
|
8
|
+
include Extensions::Comparable
|
|
9
|
+
extend Extensions::Creatable
|
|
10
|
+
|
|
11
|
+
attr_reader :name, :order, :role, :thumbnail
|
|
12
|
+
|
|
13
|
+
def initialize(name, order, role, thumbnail)
|
|
14
|
+
@name = name
|
|
15
|
+
@order = order
|
|
16
|
+
@role = role
|
|
17
|
+
@thumbnail = thumbnail
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Video
|
|
6
|
+
# Video.Details.Base https://kodi.wiki/view/JSON-RPC_API/v12#Video.Details.Base
|
|
7
|
+
module VideoDetailsBase
|
|
8
|
+
include Media::MediaDetailsBase
|
|
9
|
+
|
|
10
|
+
attr_reader :art, :play_count
|
|
11
|
+
|
|
12
|
+
def video_details_base_mappings
|
|
13
|
+
media_details_base_mappings
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def video_details_base_by_hash(hash)
|
|
17
|
+
video_details_base(*Extensions::Creatable.hash_to_arr(hash, %w[art play_count fan_art thumbnail label],
|
|
18
|
+
video_details_base_mappings))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def video_details_base(art, play_count, fan_art, thumbnail, label)
|
|
22
|
+
@art = art
|
|
23
|
+
@play_count = play_count
|
|
24
|
+
media_details_base(fan_art, thumbnail, label)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Video
|
|
6
|
+
# Video.Details.File https://kodi.wiki/view/JSON-RPC_API/v12#Video.Details.File
|
|
7
|
+
module VideoDetailsFile
|
|
8
|
+
include VideoDetailsItem
|
|
9
|
+
|
|
10
|
+
attr_reader :director, :resume, :runtime, :stream_details
|
|
11
|
+
|
|
12
|
+
def video_details_file_mappings
|
|
13
|
+
mappings = {
|
|
14
|
+
'resume' => Extensions::Creatable::CreateMap.new(VideoResume),
|
|
15
|
+
'streamdetails' => Extensions::Creatable::CreateMap.new(StreamDetails)
|
|
16
|
+
}
|
|
17
|
+
mappings.merge(video_details_item_mappings)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def video_details_file_by_hash(hash)
|
|
21
|
+
video_details_file(*Extensions::Creatable.hash_to_arr(hash, %w[director resume runtime stream_details date_added
|
|
22
|
+
file last_played plot title art play_count fan_art
|
|
23
|
+
thumbnail label], video_details_file_mappings))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def video_details_file(director, resume, runtime, stream_details, date_added, file, last_played, plot, title,
|
|
27
|
+
art, play_count, fan_art, thumbnail, label)
|
|
28
|
+
@director = director
|
|
29
|
+
@resume = resume
|
|
30
|
+
@runtime = runtime
|
|
31
|
+
@stream_details = stream_details
|
|
32
|
+
video_details_item(date_added, file, last_played, plot, title, art, play_count, fan_art, thumbnail, label)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Video
|
|
6
|
+
# Video.Details.Item https://kodi.wiki/view/JSON-RPC_API/v12#Video.Details.Item
|
|
7
|
+
module VideoDetailsItem
|
|
8
|
+
include VideoDetailsMedia
|
|
9
|
+
|
|
10
|
+
attr_reader :date_added, :file, :last_played, :plot
|
|
11
|
+
|
|
12
|
+
def video_details_item_mappings
|
|
13
|
+
video_details_media_mappings
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def video_details_item_by_hash(hash)
|
|
17
|
+
video_details_item(*Extensions::Creatable.hash_to_arr(hash, %w[date_added file last_played plot title art
|
|
18
|
+
play_count fan_art thumbnail label],
|
|
19
|
+
video_details_item_mappings))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def video_details_item(date_added, file, last_played, plot, title, art, play_count, fan_art, thumbnail, label)
|
|
23
|
+
@date_added = date_added
|
|
24
|
+
@file = file
|
|
25
|
+
@last_played = last_played
|
|
26
|
+
@plot = plot
|
|
27
|
+
video_details_media(title, art, play_count, fan_art, thumbnail, label)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KodiClient
|
|
4
|
+
module Types
|
|
5
|
+
module Video
|
|
6
|
+
# Video.Details.Media https://kodi.wiki/view/JSON-RPC_API/v12#Video.Details.Media
|
|
7
|
+
module VideoDetailsMedia
|
|
8
|
+
include VideoDetailsBase
|
|
9
|
+
|
|
10
|
+
attr_reader :title
|
|
11
|
+
|
|
12
|
+
def video_details_media_mappings
|
|
13
|
+
video_details_base_mappings
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def video_details_media_by_hash(hash)
|
|
17
|
+
video_details_media(*Extensions::Creatable.hash_to_arr(hash, %w[title art play_count fan_art thumbnail label]),
|
|
18
|
+
video_details_base_mappings)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def video_details_media(title, art, play_count, fan_art, thumbnail, label)
|
|
22
|
+
@title = title
|
|
23
|
+
video_details_base(art, play_count, fan_art, thumbnail, label)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|