kodi_client 0.5.0 → 0.6.0
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/README.md +2 -0
- data/kodi_client.gemspec +5 -2
- data/lib/kodi_client/Chainable.rb +3 -1
- data/lib/kodi_client/global_types/addon_types.rb +60 -48
- data/lib/kodi_client/global_types/application_types.rb +19 -16
- data/lib/kodi_client/global_types/audio_types.rb +41 -30
- data/lib/kodi_client/global_types/favourites_types.rb +18 -17
- data/lib/kodi_client/global_types/files_types.rb +82 -0
- data/lib/kodi_client/global_types/global_types.rb +29 -27
- data/lib/kodi_client/global_types/gui_types.rb +21 -15
- data/lib/kodi_client/global_types/input_types.rb +1 -1
- data/lib/kodi_client/global_types/item_types.rb +6 -2
- data/lib/kodi_client/global_types/list_types.rb +414 -91
- data/lib/kodi_client/global_types/media_types.rb +16 -11
- data/lib/kodi_client/global_types/player_type.rb +126 -107
- data/lib/kodi_client/global_types/profiles_types.rb +80 -0
- data/lib/kodi_client/global_types/pvr_type.rb +2 -0
- data/lib/kodi_client/global_types/system_types.rb +6 -9
- data/lib/kodi_client/global_types/video_types.rb +68 -41
- data/lib/kodi_client/kodi_module.rb +1 -0
- data/lib/kodi_client/method/addons.rb +2 -3
- data/lib/kodi_client/method/application.rb +1 -1
- data/lib/kodi_client/method/favourites.rb +1 -1
- data/lib/kodi_client/method/files.rb +89 -0
- data/lib/kodi_client/method/gui.rb +2 -2
- data/lib/kodi_client/method/player.rb +6 -6
- data/lib/kodi_client/method/profiles.rb +48 -0
- data/lib/kodi_client/method/system.rb +1 -1
- data/lib/kodi_client/util/comparable.rb +4 -1
- data/lib/kodi_client/util/creatable.rb +52 -0
- data/lib/kodi_client.rb +10 -9
- metadata +10 -5
@@ -17,6 +17,7 @@ module KodiClient
|
|
17
17
|
h = request.instance_variables.each_with_object({}) do |var, hash|
|
18
18
|
hash[var.to_s.delete('@')] = request.instance_variable_get(var)
|
19
19
|
end
|
20
|
+
|
20
21
|
@http_client ||= build_client
|
21
22
|
response = @http_client.post(@endpoint_url, json: h).to_s
|
22
23
|
JSON.parse(response)
|
@@ -28,8 +28,7 @@ module KodiClient
|
|
28
28
|
'installed' => installed.nil? || !installed ? 'all' : 'installed'
|
29
29
|
})
|
30
30
|
json = invoke_api(request)
|
31
|
-
|
32
|
-
result = json['result'].nil? ? nil : Types::Addons::Addons.new(json['result'])
|
31
|
+
result = Types::Addons::Addons.create(json['result'])
|
33
32
|
json['result'] = result
|
34
33
|
KodiResponse.new(json)
|
35
34
|
end
|
@@ -42,7 +41,7 @@ module KodiClient
|
|
42
41
|
})
|
43
42
|
json = invoke_api(request)
|
44
43
|
|
45
|
-
result =
|
44
|
+
result = Types::Addons::Addon.create(json['result'])
|
46
45
|
json['result'] = result
|
47
46
|
KodiResponse.new(json)
|
48
47
|
end
|
@@ -28,7 +28,7 @@ module KodiClient
|
|
28
28
|
def get_properties(properties = Types::Application::PropertyName.all_properties, kodi_id = 1)
|
29
29
|
request = KodiRequest.new(kodi_id, GET_PROPERTIES, { 'properties' => properties })
|
30
30
|
json = invoke_api(request)
|
31
|
-
result =
|
31
|
+
result = Types::Application::PropertyValue.create(json['result'])
|
32
32
|
json['result'] = result
|
33
33
|
KodiResponse.new(json)
|
34
34
|
end
|
@@ -28,7 +28,7 @@ module KodiClient
|
|
28
28
|
params['type'] = type unless type.nil?
|
29
29
|
request = KodiRequest.new(kodi_id, GET_FAVOURITES, params)
|
30
30
|
json = invoke_api(request)
|
31
|
-
result =
|
31
|
+
result = Types::Favourites::GetFavouriteReturned.create(json['result'])
|
32
32
|
json['result'] = result
|
33
33
|
KodiResponse.new(json)
|
34
34
|
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'kodi_client/kodi_module'
|
4
|
+
require 'kodi_client/global_types/files_types'
|
5
|
+
require 'kodi_client/global_types/list_types'
|
6
|
+
|
7
|
+
module KodiClient
|
8
|
+
module Modules
|
9
|
+
# contains all Kodi Application methods
|
10
|
+
class Files < KodiModule
|
11
|
+
|
12
|
+
GET_DIRECTORY = 'Files.GetDirectory'
|
13
|
+
GET_FILE_DETAILS = 'Files.GetFileDetails'
|
14
|
+
GET_SOURCES = 'Files.GetSources'
|
15
|
+
PREPARE_DOWNLOAD = 'Files.PrepareDownload'
|
16
|
+
SET_FILE_DETAILS = 'Files.SetFileDetails'
|
17
|
+
|
18
|
+
def get_directory(directory, media = Types::Files::Media::FILES,
|
19
|
+
properties = Types::List::ListFieldFiles.all_properties,
|
20
|
+
sort = Types::List::ListSort.new,
|
21
|
+
limits = Types::List::ListLimits.new(0, 50), kodi_id = 1)
|
22
|
+
request = KodiRequest.new(kodi_id, GET_DIRECTORY,
|
23
|
+
{
|
24
|
+
'directory' => directory,
|
25
|
+
'media' => media,
|
26
|
+
'properties' => properties,
|
27
|
+
'sort' => { 'ignorearticle' => sort.ignore_article, 'method' => sort.method,
|
28
|
+
'order' => sort.order,
|
29
|
+
'useartistsortname' => sort.use_artist_sort_name },
|
30
|
+
'limits' => { 'start' => limits.list_start, 'end' => limits.list_end }
|
31
|
+
})
|
32
|
+
json = invoke_api(request)
|
33
|
+
result = KodiClient::Types::Files::GetDirectoryReturned.create(json['result'])
|
34
|
+
json['result'] = result
|
35
|
+
KodiResponse.new(json)
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_file_details(file, media = Types::Files::Media::FILES,
|
39
|
+
properties = Types::List::ListFieldFiles.all_properties, kodi_id = 1)
|
40
|
+
request = KodiRequest.new(kodi_id, GET_FILE_DETAILS,
|
41
|
+
{
|
42
|
+
'file' => file,
|
43
|
+
'media' => media,
|
44
|
+
'properties' => properties
|
45
|
+
})
|
46
|
+
json = invoke_api(request)
|
47
|
+
result = KodiClient::Types::List::ListItemFile.create(json['result'])
|
48
|
+
json['result'] = result
|
49
|
+
KodiResponse.new(json)
|
50
|
+
end
|
51
|
+
|
52
|
+
def get_sources(media = Types::Files::Media::FILES,
|
53
|
+
sort = Types::List::ListSort.new,
|
54
|
+
limits = Types::List::ListLimits.new(0, 50), kodi_id = 1)
|
55
|
+
request = KodiRequest.new(kodi_id, GET_SOURCES,
|
56
|
+
{
|
57
|
+
'media' => media,
|
58
|
+
'sort' => { 'ignorearticle' => sort.ignore_article, 'method' => sort.method,
|
59
|
+
'order' => sort.order,
|
60
|
+
'useartistsortname' => sort.use_artist_sort_name },
|
61
|
+
'limits' => { 'start' => limits.list_start, 'end' => limits.list_end }
|
62
|
+
})
|
63
|
+
json = invoke_api(request)
|
64
|
+
result = KodiClient::Types::Files::GetSourcesReturned.create(json['result'])
|
65
|
+
json['result'] = result
|
66
|
+
KodiResponse.new(json)
|
67
|
+
end
|
68
|
+
|
69
|
+
def prepare_download(path, kodi_id = 1)
|
70
|
+
request = KodiRequest.new(kodi_id, PREPARE_DOWNLOAD, { 'path' => path })
|
71
|
+
json = invoke_api(request)
|
72
|
+
result = KodiClient::Types::Files::PrepareDownloadReturned.create(json['result'])
|
73
|
+
json['result'] = result
|
74
|
+
KodiResponse.new(json)
|
75
|
+
end
|
76
|
+
|
77
|
+
def set_file_details(file, media = Types::Files::Media::VIDEO, play_count = nil, last_played = nil,
|
78
|
+
resume = nil, kodi_id = 1)
|
79
|
+
params = { 'file' => file, 'media' => media}
|
80
|
+
params['playcount'] = play_count unless play_count.nil?
|
81
|
+
params['lastplayed'] = last_played unless last_played.nil?
|
82
|
+
params['resume'] = resume unless resume.nil?
|
83
|
+
request = KodiRequest.new(kodi_id, SET_FILE_DETAILS, params)
|
84
|
+
json = invoke_api(request)
|
85
|
+
KodiResponse.new(json)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -24,7 +24,7 @@ module KodiClient
|
|
24
24
|
def get_properties(properties = Types::GUI::PropertyName.all_properties, kodi_id = 1)
|
25
25
|
request = KodiRequest.new(kodi_id, GET_PROPERTIES, { 'properties' => properties })
|
26
26
|
json = invoke_api(request)
|
27
|
-
result =
|
27
|
+
result = KodiClient::Types::GUI::PropertyValue.create(json['result'])
|
28
28
|
json['result'] = result
|
29
29
|
KodiResponse.new(json)
|
30
30
|
end
|
@@ -32,7 +32,7 @@ module KodiClient
|
|
32
32
|
def get_stereoscopic_modes(kodi_id = 1)
|
33
33
|
request = KodiRequest.new(kodi_id, GET_STEREOSCOPIC_MODES, {})
|
34
34
|
json = invoke_api(request)
|
35
|
-
result =
|
35
|
+
result = Types::GUI::StereoscopyMode.create_list(json['result']['stereoscopicmodes'])
|
36
36
|
json['result'] = result
|
37
37
|
KodiResponse.new(json)
|
38
38
|
end
|
@@ -41,7 +41,7 @@ module KodiClient
|
|
41
41
|
def get_active_players(kodi_id = 1)
|
42
42
|
request = KodiRequest.new(kodi_id, GET_ACTIVE_PLAYER, {})
|
43
43
|
json = invoke_api(request)
|
44
|
-
result =
|
44
|
+
result = Types::Player::Player.create_list(json['result'])
|
45
45
|
json['result'] = result
|
46
46
|
KodiResponse.new(json)
|
47
47
|
end
|
@@ -57,7 +57,7 @@ module KodiClient
|
|
57
57
|
request = KodiRequest.new(kodi_id, GET_ITEM, { 'playerid' => player_id,
|
58
58
|
'properties' => properties })
|
59
59
|
json = invoke_api(request)
|
60
|
-
result = Types::List::ListItemAll.
|
60
|
+
result = Types::List::ListItemAll.create(json['result']['item'])
|
61
61
|
json['result'] = result
|
62
62
|
KodiResponse.new(json)
|
63
63
|
end
|
@@ -65,7 +65,7 @@ module KodiClient
|
|
65
65
|
def get_players(media = Types::Media::MediaType::ALL, kodi_id = 1)
|
66
66
|
request = KodiRequest.new(kodi_id, GET_PLAYERS, { 'media' => media })
|
67
67
|
json = invoke_api(request)
|
68
|
-
result =
|
68
|
+
result = Types::Player::Player.create_list(json['result'])
|
69
69
|
json['result'] = result
|
70
70
|
KodiResponse.new(json)
|
71
71
|
end
|
@@ -74,7 +74,7 @@ module KodiClient
|
|
74
74
|
request = KodiRequest.new(kodi_id, GET_PROPERTIES, { 'playerid' => player_id,
|
75
75
|
'properties' => properties })
|
76
76
|
json = invoke_api(request)
|
77
|
-
result = Types::Player::PropertyValue.
|
77
|
+
result = Types::Player::PropertyValue.create(json['result'])
|
78
78
|
json['result'] = result
|
79
79
|
KodiResponse.new(json)
|
80
80
|
end
|
@@ -82,7 +82,7 @@ module KodiClient
|
|
82
82
|
def get_view_mode(kodi_id = 1)
|
83
83
|
request = KodiRequest.new(kodi_id, GET_VIEW_MODE, {})
|
84
84
|
json = invoke_api(request)
|
85
|
-
result = Types::Player::PlayerViewMode.
|
85
|
+
result = Types::Player::PlayerViewMode.create(json['result'])
|
86
86
|
json['result'] = result
|
87
87
|
KodiResponse.new(json)
|
88
88
|
end
|
@@ -130,7 +130,7 @@ module KodiClient
|
|
130
130
|
def seek(player_id, value, kodi_id = 1)
|
131
131
|
request = KodiRequest.new(kodi_id, SEEK, { 'playerid' => player_id, 'value' => value })
|
132
132
|
json = invoke_api(request)
|
133
|
-
result = Types::Player::
|
133
|
+
result = Types::Player::SeekReturned.create(json['result'])
|
134
134
|
json['result'] = result
|
135
135
|
KodiResponse.new(json)
|
136
136
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'kodi_client/kodi_module'
|
4
|
+
require 'kodi_client/global_types/profiles_types'
|
5
|
+
|
6
|
+
module KodiClient
|
7
|
+
module Modules
|
8
|
+
# contains all Kodi Application methods
|
9
|
+
class Profiles < KodiModule
|
10
|
+
|
11
|
+
GET_CURRENT_PROFILE = 'Profiles.GetCurrentProfile'
|
12
|
+
GET_PROFILES = 'Profiles.GetProfiles'
|
13
|
+
LOAD_PROFILE = 'Profiles.LoadProfile'
|
14
|
+
|
15
|
+
def get_current_profile(properties = Types::Profiles::FieldsProfile.all_properties, kodi_id = 1)
|
16
|
+
request = KodiRequest.new(kodi_id, GET_CURRENT_PROFILE, { 'properties' => properties })
|
17
|
+
json = invoke_api(request)
|
18
|
+
result = Types::Profiles::DetailsProfile.create(json['result'])
|
19
|
+
json['result'] = result
|
20
|
+
KodiResponse.new(json)
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_profiles(properties = Types::Profiles::FieldsProfile.all_properties,
|
24
|
+
limit = Types::List::ListLimits.new(0, 50),
|
25
|
+
sort = Types::List::ListSort.new, kodi_id = 1)
|
26
|
+
request = KodiRequest.new(kodi_id, GET_PROFILES,
|
27
|
+
{ 'properties' => properties,
|
28
|
+
'limits' => { 'start' => limit.list_start, 'end' => limit.list_end },
|
29
|
+
'sort' => { 'ignorearticle' => sort.ignore_article, 'method' => sort.method,
|
30
|
+
'order' => sort.order,
|
31
|
+
'useartistsortname' => sort.use_artist_sort_name } })
|
32
|
+
json = invoke_api(request)
|
33
|
+
result = Types::Profiles::GetProfilesReturned.create(json['result'])
|
34
|
+
json['result'] = result
|
35
|
+
KodiResponse.new(json)
|
36
|
+
end
|
37
|
+
|
38
|
+
def load_profile(profile_name, password, prompt = false, kodi_id = 1)
|
39
|
+
request = KodiRequest.new(kodi_id, LOAD_PROFILE,
|
40
|
+
{ 'profile' => profile_name,
|
41
|
+
'password' => { 'value' => password.value, 'encryption' => password.encryption },
|
42
|
+
'prompt' => prompt })
|
43
|
+
json = invoke_api(request)
|
44
|
+
KodiResponse.new(json)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -25,7 +25,7 @@ module KodiClient
|
|
25
25
|
def get_properties(properties = Types::System::PropertyName.all_properties, kodi_id = 1)
|
26
26
|
request = KodiRequest.new(kodi_id, GET_PROPERTIES, { 'properties' => properties })
|
27
27
|
json = invoke_api(request)
|
28
|
-
result =
|
28
|
+
result = Types::System::PropertyValue.create(json['result'])
|
29
29
|
json['result'] = result
|
30
30
|
KodiResponse.new(json)
|
31
31
|
end
|
@@ -4,7 +4,6 @@ module KodiClient
|
|
4
4
|
|
5
5
|
# offers compare methods
|
6
6
|
module Comparable
|
7
|
-
|
8
7
|
def compare(obj1, obj2)
|
9
8
|
is_same = true
|
10
9
|
obj1.instance_variables.each do |it|
|
@@ -13,5 +12,9 @@ module KodiClient
|
|
13
12
|
|
14
13
|
is_same
|
15
14
|
end
|
15
|
+
|
16
|
+
def ==(other)
|
17
|
+
compare(self, other)
|
18
|
+
end
|
16
19
|
end
|
17
20
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KodiClient
|
4
|
+
|
5
|
+
# creates a create and create_list method by hash
|
6
|
+
module Creatable
|
7
|
+
|
8
|
+
def attr_accessor(*args)
|
9
|
+
attr_reader(*args)
|
10
|
+
attr_writer(*args)
|
11
|
+
end
|
12
|
+
|
13
|
+
def attr_reader(*args)
|
14
|
+
@kodi_fields = args.map { |it| it.to_s.gsub('_', '') }
|
15
|
+
|
16
|
+
args.each do |it|
|
17
|
+
inst_variable_name = "@#{it}".to_sym
|
18
|
+
define_method it do
|
19
|
+
instance_variable_get(inst_variable_name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def attr_writer(*args)
|
25
|
+
args.each do |it|
|
26
|
+
inst_variable_name = "@#{it}".to_sym
|
27
|
+
define_method "#{it}=" do |new_value|
|
28
|
+
instance_variable_set(inst_variable_name, new_value)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def create_list(hash)
|
34
|
+
hash.nil? ? [] : hash.map { |it| create(it) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def create(hash)
|
38
|
+
return nil if hash.nil?
|
39
|
+
return nil if @kodi_fields.none? { |it| !hash[it].nil? }
|
40
|
+
|
41
|
+
new(*@kodi_fields.map { |it| hash[it] })
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.hash_to_arr(hash, fields)
|
45
|
+
fields.map { |it| hash[it.to_s.gsub('_', '')].nil? ? nil : hash[it.to_s.gsub('_', '')] }
|
46
|
+
end
|
47
|
+
|
48
|
+
def hash_to_arr(hash, fields)
|
49
|
+
Creatable.hash_to_arr(hash, fields)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/kodi_client.rb
CHANGED
@@ -7,9 +7,11 @@ require 'kodi_client/Chainable'
|
|
7
7
|
require 'kodi_client/method/addons'
|
8
8
|
require 'kodi_client/method/application'
|
9
9
|
require 'kodi_client/method/favourites'
|
10
|
+
require 'kodi_client/method/files'
|
10
11
|
require 'kodi_client/method/gui'
|
11
12
|
require 'kodi_client/method/input'
|
12
13
|
require 'kodi_client/method/player'
|
14
|
+
require 'kodi_client/method/profiles'
|
13
15
|
require 'kodi_client/method/system'
|
14
16
|
|
15
17
|
|
@@ -21,26 +23,25 @@ module KodiClient
|
|
21
23
|
class Client
|
22
24
|
include Chainable
|
23
25
|
|
24
|
-
attr_reader :addons, :application, :
|
26
|
+
attr_reader :addons, :application, :favourites, :files, :gui, :input, :player, :profiles, :system
|
25
27
|
|
26
28
|
def initialize
|
27
29
|
@addons = KodiClient::Modules::Addons.new
|
28
30
|
@application = KodiClient::Modules::Application.new
|
29
31
|
@favourites = KodiClient::Modules::Favourites.new
|
32
|
+
@files = KodiClient::Modules::Files.new
|
30
33
|
@gui = KodiClient::Modules::GUI.new
|
31
34
|
@input = KodiClient::Modules::Input.new
|
32
35
|
@player = KodiClient::Modules::Player.new
|
36
|
+
@profiles = KodiClient::Modules::Profiles.new
|
33
37
|
@system = KodiClient::Modules::System.new
|
34
38
|
end
|
35
39
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
@player.apply_options(options)
|
42
|
-
@favourites.apply_options(options)
|
43
|
-
@system.apply_options(options)
|
40
|
+
def apply_options_to_methods(options)
|
41
|
+
instance_variables.each do |it|
|
42
|
+
mod = instance_variable_get(it)
|
43
|
+
mod.apply_options(options) if mod.is_a?(KodiClient::KodiModule)
|
44
|
+
end
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kodi_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Feier
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -25,9 +25,9 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 5.0.4
|
27
27
|
description: A client for the Kodi JSON API v12, currently implemented methods are
|
28
|
-
|
29
|
-
with the time). For more information how to use it and how to
|
30
|
-
in Kodi, please check the github page https://github.com/cfe86/RubyKodiClient
|
28
|
+
Addons, Application, Favourites, Files, GUI, Input, Player, Profiles and System
|
29
|
+
(more will be added with the time). For more information how to use it and how to
|
30
|
+
activate Remote Control in Kodi, please check the github page https://github.com/cfe86/RubyKodiClient
|
31
31
|
email:
|
32
32
|
- christian.feier@gmail.com
|
33
33
|
executables: []
|
@@ -47,6 +47,7 @@ files:
|
|
47
47
|
- lib/kodi_client/global_types/application_types.rb
|
48
48
|
- lib/kodi_client/global_types/audio_types.rb
|
49
49
|
- lib/kodi_client/global_types/favourites_types.rb
|
50
|
+
- lib/kodi_client/global_types/files_types.rb
|
50
51
|
- lib/kodi_client/global_types/global_types.rb
|
51
52
|
- lib/kodi_client/global_types/gui_types.rb
|
52
53
|
- lib/kodi_client/global_types/input_types.rb
|
@@ -54,6 +55,7 @@ files:
|
|
54
55
|
- lib/kodi_client/global_types/list_types.rb
|
55
56
|
- lib/kodi_client/global_types/media_types.rb
|
56
57
|
- lib/kodi_client/global_types/player_type.rb
|
58
|
+
- lib/kodi_client/global_types/profiles_types.rb
|
57
59
|
- lib/kodi_client/global_types/pvr_type.rb
|
58
60
|
- lib/kodi_client/global_types/system_types.rb
|
59
61
|
- lib/kodi_client/global_types/video_types.rb
|
@@ -61,12 +63,15 @@ files:
|
|
61
63
|
- lib/kodi_client/method/addons.rb
|
62
64
|
- lib/kodi_client/method/application.rb
|
63
65
|
- lib/kodi_client/method/favourites.rb
|
66
|
+
- lib/kodi_client/method/files.rb
|
64
67
|
- lib/kodi_client/method/gui.rb
|
65
68
|
- lib/kodi_client/method/input.rb
|
66
69
|
- lib/kodi_client/method/player.rb
|
70
|
+
- lib/kodi_client/method/profiles.rb
|
67
71
|
- lib/kodi_client/method/system.rb
|
68
72
|
- lib/kodi_client/options.rb
|
69
73
|
- lib/kodi_client/util/comparable.rb
|
74
|
+
- lib/kodi_client/util/creatable.rb
|
70
75
|
- lib/kodi_client/util/iterable.rb
|
71
76
|
homepage: https://github.com/cfe86/RubyKodiClient
|
72
77
|
licenses:
|