tivohmo 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +5 -0
- data/README.md +8 -0
- data/TODO +4 -0
- data/lib/tivohmo/adapters/filesystem/application.rb +37 -0
- data/lib/tivohmo/adapters/filesystem/file_item.rb +3 -1
- data/lib/tivohmo/adapters/filesystem/folder_container.rb +33 -29
- data/lib/tivohmo/adapters/filesystem/group.rb +22 -0
- data/lib/tivohmo/adapters/filesystem.rb +1 -0
- data/lib/tivohmo/adapters/plex/category.rb +20 -13
- data/lib/tivohmo/adapters/plex/episode.rb +2 -2
- data/lib/tivohmo/adapters/plex/movie.rb +2 -2
- data/lib/tivohmo/adapters/streamio/transcoder.rb +4 -13
- data/lib/tivohmo/api/container.rb +4 -1
- data/lib/tivohmo/subtitles_util.rb +109 -0
- data/lib/tivohmo/version.rb +1 -1
- data/spec/adapters/filesystem/application_spec.rb +66 -0
- data/spec/adapters/filesystem/file_item_spec.rb +12 -0
- data/spec/adapters/filesystem/folder_container_spec.rb +23 -21
- data/spec/adapters/plex/category_spec.rb +15 -5
- data/spec/adapters/plex/episode_spec.rb +11 -0
- data/spec/adapters/plex/movie_spec.rb +11 -0
- data/spec/adapters/streamio/transcoder_spec.rb +24 -0
- data/spec/fixtures/vcr/TivoHMO_Adapters_Plex_Category/_children/should_have_children.yml +698 -168
- data/spec/fixtures/vcr/TivoHMO_Adapters_Plex_Category/_children/should_have_children_with_embedded_subtitles.yml +22 -22
- data/spec/fixtures/vcr/TivoHMO_Adapters_Plex_Category/_children/should_have_children_with_subtitles.yml +262 -91
- data/spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_initialize/should_instantiate_with_subtitle.yml +444 -0
- data/spec/fixtures/vcr/TivoHMO_Adapters_Plex_Movie/_initialize/should_instantiate_with_subtitle.yml +334 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/subtitles_util_spec.rb +68 -0
- data/tivohmo.gemspec +1 -0
- metadata +24 -3
@@ -42,6 +42,14 @@ describe TivoHMO::Adapters::Plex::Category, :vcr do
|
|
42
42
|
|
43
43
|
describe "#children" do
|
44
44
|
|
45
|
+
before(:each) do
|
46
|
+
if ENV['CI']
|
47
|
+
stub_subtitles("/Users/mconway/Movies/TivoHMOTest/Movies/3 Idiots (2009).avi")
|
48
|
+
stub_subtitles("/Users/mconway/Movies/TivoHMOTest/Movies/Wyrmwood (2014).avi", language_code: nil)
|
49
|
+
stub_subtitles("/Users/mconway/Movies/TivoHMOTest/Movies/Rurouni Kenshin Kyoto Inferno (2014).mkv", language_code: nil)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
45
53
|
it "should memoize" do
|
46
54
|
section = described_class.new(plex_delegate, :newest)
|
47
55
|
expect(section.children.object_id).to eq(section.children.object_id)
|
@@ -52,9 +60,9 @@ describe TivoHMO::Adapters::Plex::Category, :vcr do
|
|
52
60
|
|
53
61
|
expect(section.children.size).to_not be(0)
|
54
62
|
|
55
|
-
|
56
|
-
|
57
|
-
expect(
|
63
|
+
titles = section.children.collect(&:title)
|
64
|
+
expected_titles = plex_delegate.newest.collect(&:title)
|
65
|
+
expect(titles).to include(*expected_titles)
|
58
66
|
end
|
59
67
|
|
60
68
|
it "should display non-zero child_count once children fetched" do
|
@@ -67,6 +75,7 @@ describe TivoHMO::Adapters::Plex::Category, :vcr do
|
|
67
75
|
end
|
68
76
|
|
69
77
|
it "should have children with subtitles" do
|
78
|
+
described_class.config_set(:enable_subtitles, true)
|
70
79
|
section = described_class.new(plex_delegate, :newest)
|
71
80
|
|
72
81
|
subgroup = section.children.find {|c| c.is_a?(TivoHMO::Adapters::Plex::Group) }
|
@@ -85,11 +94,12 @@ describe TivoHMO::Adapters::Plex::Category, :vcr do
|
|
85
94
|
end
|
86
95
|
|
87
96
|
it "should have children with embedded subtitles" do
|
97
|
+
described_class.config_set(:enable_subtitles, true)
|
88
98
|
section = described_class.new(plex_delegate, :newest)
|
89
99
|
|
90
100
|
subgroup = section.children.find {|c|
|
91
101
|
c.is_a?(TivoHMO::Adapters::Plex::Group) &&
|
92
|
-
c.children.any? {|m| m.subtitle && m.subtitle.
|
102
|
+
c.children.any? {|m| m.subtitle && m.subtitle.type == :embedded }
|
93
103
|
}
|
94
104
|
expect(subgroup).to_not be_nil
|
95
105
|
primary = subgroup.children[0]
|
@@ -97,7 +107,7 @@ describe TivoHMO::Adapters::Plex::Category, :vcr do
|
|
97
107
|
expect(primary.title).to_not match(/sub\]/)
|
98
108
|
expect(sub.title).to match(primary.title)
|
99
109
|
expect(sub.title).to match(/sub\]/)
|
100
|
-
expect(sub.subtitle.language).
|
110
|
+
expect(sub.subtitle.language).to_not be_nil
|
101
111
|
expect(sub.subtitle.language_code).to_not be_nil
|
102
112
|
expect(sub.subtitle.location).to eq(0)
|
103
113
|
end
|
@@ -24,6 +24,17 @@ describe TivoHMO::Adapters::Plex::Episode, :vcr do
|
|
24
24
|
expect(episode.created_at).to eq(Time.parse(plex_delegate.originally_available_at))
|
25
25
|
end
|
26
26
|
|
27
|
+
it "should instantiate with subtitle" do
|
28
|
+
st = TivoHMO::API::Subtitle.new()
|
29
|
+
st.language_code = 'en'
|
30
|
+
st.language = 'English'
|
31
|
+
st.type = :file
|
32
|
+
episode = described_class.new(plex_delegate, st)
|
33
|
+
expect(episode).to be_a described_class
|
34
|
+
expect(episode.subtitle).to eq(st)
|
35
|
+
expect(episode.title).to eq "[en file sub] #{plex_delegate.title}"
|
36
|
+
end
|
37
|
+
|
27
38
|
end
|
28
39
|
|
29
40
|
describe "#metadata" do
|
@@ -19,6 +19,17 @@ describe TivoHMO::Adapters::Plex::Movie, :vcr do
|
|
19
19
|
expect(movie.created_at).to eq(Time.parse(plex_delegate.originally_available_at))
|
20
20
|
end
|
21
21
|
|
22
|
+
it "should instantiate with subtitle" do
|
23
|
+
st = TivoHMO::API::Subtitle.new()
|
24
|
+
st.language_code = 'en'
|
25
|
+
st.language = 'English'
|
26
|
+
st.type = :file
|
27
|
+
movie = described_class.new(plex_delegate, st)
|
28
|
+
expect(movie).to be_a described_class
|
29
|
+
expect(movie.subtitle).to eq(st)
|
30
|
+
expect(movie.title).to eq "[en file sub] #{plex_delegate.title}"
|
31
|
+
end
|
32
|
+
|
22
33
|
end
|
23
34
|
|
24
35
|
describe "#metadata" do
|
@@ -24,6 +24,30 @@ describe TivoHMO::Adapters::StreamIO::Transcoder do
|
|
24
24
|
expect(opts).to be_instance_of(Hash)
|
25
25
|
end
|
26
26
|
|
27
|
+
it "handles file subtitles" do
|
28
|
+
st = TivoHMO::API::Subtitle.new()
|
29
|
+
st.language_code = 'en'
|
30
|
+
st.language = 'English'
|
31
|
+
st.type = :file
|
32
|
+
st.location = Tempfile.new(['subtitle', '.en.srt']).path
|
33
|
+
item.subtitle = st
|
34
|
+
|
35
|
+
opts = subject.transcoder_options
|
36
|
+
expect(opts[:custom]).to match("-vf subtitles=\"#{st.location}\"")
|
37
|
+
end
|
38
|
+
|
39
|
+
it "handles embedded subtitles" do
|
40
|
+
st = TivoHMO::API::Subtitle.new()
|
41
|
+
st.language_code = 'en'
|
42
|
+
st.language = 'English'
|
43
|
+
st.type = :embedded
|
44
|
+
st.location = 3
|
45
|
+
item.subtitle = st
|
46
|
+
|
47
|
+
opts = subject.transcoder_options
|
48
|
+
expect(opts[:custom]).to match("-vf subtitles=\"#{item.file}\":si=#{st.location}")
|
49
|
+
end
|
50
|
+
|
27
51
|
end
|
28
52
|
|
29
53
|
describe "#transcode" do
|