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
data/spec/fixtures/vcr/TivoHMO_Adapters_Plex_Movie/_initialize/should_instantiate_with_subtitle.yml
ADDED
@@ -0,0 +1,334 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:32400/library/sections
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Content-Type:
|
22
|
+
- text/xml;charset=utf-8
|
23
|
+
Connection:
|
24
|
+
- close
|
25
|
+
X-Plex-Protocol:
|
26
|
+
- '1.0'
|
27
|
+
X-Plex-Content-Original-Length:
|
28
|
+
- '2988'
|
29
|
+
X-Plex-Content-Compressed-Length:
|
30
|
+
- '788'
|
31
|
+
Content-Length:
|
32
|
+
- '788'
|
33
|
+
Cache-Control:
|
34
|
+
- no-cache
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |
|
38
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
39
|
+
<MediaContainer size="6" allowSync="0" identifier="com.plexapp.plugins.library" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1420767545" title1="Plex Library">
|
40
|
+
<Directory allowSync="0" art="/:/resources/movie-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/movie.png" key="8" type="movie" title="Adult Movies" composite="/library/sections/8/composite/1425683728" agent="com.plexapp.agents.imdb" scanner="Plex Movie Scanner" language="en" uuid="608ca2bb-e5f2-49ab-b040-dbb95ac5631e" updatedAt="1425683728" createdAt="1424196765">
|
41
|
+
<Location id="12" path="/Users/mconway/Movies/Adult Movies" />
|
42
|
+
</Directory>
|
43
|
+
<Directory allowSync="0" art="/:/resources/show-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/show.png" key="2" type="show" title="Adult TV Shows" composite="/library/sections/2/composite/1425683755" agent="com.plexapp.agents.thetvdb" scanner="Plex Series Scanner" language="en" uuid="af8295a272d545681d462eed8025113d09195007" updatedAt="1425683755" createdAt="1332713366">
|
44
|
+
<Location id="6" path="/Users/mconway/Movies/Adult TV Shows" />
|
45
|
+
</Directory>
|
46
|
+
<Directory allowSync="0" art="/:/resources/movie-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/movie.png" key="5" type="movie" title="Kid Movies" composite="/library/sections/5/composite/1425683756" agent="com.plexapp.agents.imdb" scanner="Plex Movie Scanner" language="en" uuid="340479de-6015-4e6c-9ec0-c74f936f4013" updatedAt="1425683756" createdAt="1411071543">
|
47
|
+
<Location id="9" path="/Users/mconway/Movies/Kid Movies" />
|
48
|
+
</Directory>
|
49
|
+
<Directory allowSync="0" art="/:/resources/show-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/show.png" key="4" type="show" title="Kid TV Shows" composite="/library/sections/4/composite/1425683757" agent="com.plexapp.agents.thetvdb" scanner="Plex Series Scanner" language="en" uuid="fa1dde48-f6dd-44f7-91f3-9283160dc953" updatedAt="1425683757" createdAt="1411071497">
|
50
|
+
<Location id="8" path="/Users/mconway/Movies/Kid TV Shows" />
|
51
|
+
</Directory>
|
52
|
+
<Directory allowSync="0" art="/:/resources/movie-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/movie.png" key="6" type="movie" title="Test Movies" composite="/library/sections/6/composite/1425683758" agent="com.plexapp.agents.imdb" scanner="Plex Movie Scanner" language="en" uuid="fbc810b7-6b51-40ba-a3c5-9a2c391e5a3d" updatedAt="1425683758" createdAt="1423935251">
|
53
|
+
<Location id="10" path="/Users/mconway/Movies/TivoHMOTest/Movies" />
|
54
|
+
</Directory>
|
55
|
+
<Directory allowSync="0" art="/:/resources/show-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/show.png" key="7" type="show" title="Test TV Shows" composite="/library/sections/7/composite/1425683759" agent="com.plexapp.agents.thetvdb" scanner="Plex Series Scanner" language="en" uuid="4c37cd05-86d7-4a34-8d5b-aa2fb261a136" updatedAt="1425683759" createdAt="1423935290">
|
56
|
+
<Location id="11" path="/Users/mconway/Movies/TivoHMOTest/TV Shows" />
|
57
|
+
</Directory>
|
58
|
+
</MediaContainer>
|
59
|
+
http_version:
|
60
|
+
recorded_at: Sun, 08 Mar 2015 14:54:37 GMT
|
61
|
+
- request:
|
62
|
+
method: get
|
63
|
+
uri: http://localhost:32400/library/sections/6/all
|
64
|
+
body:
|
65
|
+
encoding: US-ASCII
|
66
|
+
string: ''
|
67
|
+
headers:
|
68
|
+
Accept-Encoding:
|
69
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
70
|
+
Accept:
|
71
|
+
- "*/*"
|
72
|
+
User-Agent:
|
73
|
+
- Ruby
|
74
|
+
response:
|
75
|
+
status:
|
76
|
+
code: 200
|
77
|
+
message: OK
|
78
|
+
headers:
|
79
|
+
Content-Type:
|
80
|
+
- text/xml;charset=utf-8
|
81
|
+
Connection:
|
82
|
+
- close
|
83
|
+
X-Plex-Protocol:
|
84
|
+
- '1.0'
|
85
|
+
X-Plex-Content-Original-Length:
|
86
|
+
- '5272'
|
87
|
+
X-Plex-Content-Compressed-Length:
|
88
|
+
- '2312'
|
89
|
+
Content-Length:
|
90
|
+
- '2312'
|
91
|
+
Cache-Control:
|
92
|
+
- no-cache
|
93
|
+
body:
|
94
|
+
encoding: ASCII-8BIT
|
95
|
+
string: !binary |-
|
96
|
+
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPE1lZGlh
|
97
|
+
Q29udGFpbmVyIHNpemU9IjMiIGFsbG93U3luYz0iMSIgYXJ0PSIvOi9yZXNv
|
98
|
+
dXJjZXMvbW92aWUtZmFuYXJ0LmpwZyIgaWRlbnRpZmllcj0iY29tLnBsZXhh
|
99
|
+
cHAucGx1Z2lucy5saWJyYXJ5IiBsaWJyYXJ5U2VjdGlvbklEPSI2IiBsaWJy
|
100
|
+
YXJ5U2VjdGlvblRpdGxlPSJUZXN0IE1vdmllcyIgbGlicmFyeVNlY3Rpb25V
|
101
|
+
VUlEPSJmYmM4MTBiNy02YjUxLTQwYmEtYTNjNS05YTJjMzkxZTVhM2QiIG1l
|
102
|
+
ZGlhVGFnUHJlZml4PSIvc3lzdGVtL2J1bmRsZS9tZWRpYS9mbGFncy8iIG1l
|
103
|
+
ZGlhVGFnVmVyc2lvbj0iMTQyMDc2NzU0NSIgdGh1bWI9Ii86L3Jlc291cmNl
|
104
|
+
cy9tb3ZpZS5wbmciIHRpdGxlMT0iVGVzdCBNb3ZpZXMiIHRpdGxlMj0iQWxs
|
105
|
+
IFRlc3QgTW92aWVzIiB2aWV3R3JvdXA9Im1vdmllIiB2aWV3TW9kZT0iNjU1
|
106
|
+
OTIiPgo8VmlkZW8gcmF0aW5nS2V5PSIxMTY5IiBrZXk9Ii9saWJyYXJ5L21l
|
107
|
+
dGFkYXRhLzExNjkiIHN0dWRpbz0iVmlkaHUgVmlub2QgQ2hvcHJhIFByb2R1
|
108
|
+
Y3Rpb25zIiB0eXBlPSJtb3ZpZSIgdGl0bGU9IjMgSWRpb3RzIiBjb250ZW50
|
109
|
+
UmF0aW5nPSJQRyIgc3VtbWFyeT0iSW4gdGhlIHRyYWRpdGlvbiBvZiDigJxG
|
110
|
+
ZXJyaXMgQnVlbGxlcuKAmXMgRGF5IE9mZuKAnSBjb21lcyB0aGlzIHJlZnJl
|
111
|
+
c2hpbmcgY29tZWR5IGFib3V0IGEgcmViZWxsaW91cyBwcmFua3N0ZXIgd2l0
|
112
|
+
aCBhIGNyYWZ0eSBtaW5kIGFuZCBhIGhlYXJ0IG9mIGdvbGQuIFJhc2NhbC4g
|
113
|
+
Sm9rZXIuIERyZWFtZXIuIEdlbml1cy4uLiBZb3UmYXBvczt2ZSBuZXZlciBt
|
114
|
+
ZXQgYSBjb2xsZWdlIHN0dWRlbnQgcXVpdGUgbGlrZSAmcXVvdDtSYW5jaG8u
|
115
|
+
JnF1b3Q7IEZyb20gdGhlIG1vbWVudCBoZSBhcnJpdmVzIGF0IEluZGlhJmFw
|
116
|
+
b3M7cyBtb3N0IHByZXN0aWdpb3VzIHVuaXZlcnNpdHksIFJhbmNobyZhcG9z
|
117
|
+
O3Mgb3V0bGFuZGlzaCBzY2hlbWVzIHR1cm4gdGhlIGNhbXB1cyB1cHNpZGUg
|
118
|
+
ZG93buKAlGFsb25nIHdpdGggdGhlIGxpdmVzIG9mIGhpcyB0d28gbmV3Zm91
|
119
|
+
bmQgYmVzdCBmcmllbmRzLiBUb2dldGhlciwgdGhleSBtYWtlIGxpZmUgbWlz
|
120
|
+
ZXJhYmxlIGZvciAmcXVvdDtWaXJ1cywmcXVvdDsgdGhlIHNjaG9vbOKAmXMg
|
121
|
+
dXB0aWdodCBhbmQgaGVhcnRsZXNzIGRlYW4uIEJ1dCB3aGVuIFJhbmNobyBj
|
122
|
+
YXRjaGVzIHRoZSBleWUgb2YgdGhlIGRlYW4mYXBvcztzIHNleHkgZGF1Z2h0
|
123
|
+
ZXIsIFZpcnVzIHNldHMgaGlzIHNpZ2h0cyBvbiBmbHVua2luZyBvdXQgdGhl
|
124
|
+
ICZxdW90OzMgaWRpb3RzJnF1b3Q7IG9uY2UgYW5kIGZvciBhbGwuIiByYXRp
|
125
|
+
bmc9IjcuNjk5OTk5ODA5MjY1MTQwMyIgeWVhcj0iMjAwOSIgdGh1bWI9Ii9s
|
126
|
+
aWJyYXJ5L21ldGFkYXRhLzExNjkvdGh1bWIvMTQyNDQ2NDg0NiIgYXJ0PSIv
|
127
|
+
bGlicmFyeS9tZXRhZGF0YS8xMTY5L2FydC8xNDI0NDY0ODQ2IiBkdXJhdGlv
|
128
|
+
bj0iOTg1NTQ0MCIgb3JpZ2luYWxseUF2YWlsYWJsZUF0PSIyMDA5LTEyLTI1
|
129
|
+
IiBhZGRlZEF0PSIxNDIzOTM1MzUyIiB1cGRhdGVkQXQ9IjE0MjQ0NjQ4NDYi
|
130
|
+
Pgo8TWVkaWEgdmlkZW9SZXNvbHV0aW9uPSJzZCIgaWQ9IjEzOTkiIGR1cmF0
|
131
|
+
aW9uPSI5ODU1NDQwIiBiaXRyYXRlPSI4MDgiIHdpZHRoPSI2NDAiIGhlaWdo
|
132
|
+
dD0iMjcyIiBhc3BlY3RSYXRpbz0iMi4zNSIgYXVkaW9DaGFubmVscz0iNiIg
|
133
|
+
YXVkaW9Db2RlYz0iYWMzIiB2aWRlb0NvZGVjPSJtcGVnNCIgY29udGFpbmVy
|
134
|
+
PSJhdmkiIHZpZGVvRnJhbWVSYXRlPSJQQUwiPgo8UGFydCBpZD0iMTk1NCIg
|
135
|
+
a2V5PSIvbGlicmFyeS9wYXJ0cy8xOTU0L2ZpbGUuYXZpIiBkdXJhdGlvbj0i
|
136
|
+
OTg1NTQ0MCIgZmlsZT0iL1VzZXJzL21jb253YXkvTW92aWVzL1Rpdm9ITU9U
|
137
|
+
ZXN0L01vdmllcy8zIElkaW90cyAoMjAwOSkuYXZpIiBzaXplPSI5OTU0NDM3
|
138
|
+
ODQiIGNvbnRhaW5lcj0iYXZpIiAvPgo8L01lZGlhPgo8R2VucmUgdGFnPSJD
|
139
|
+
b21lZHkiIC8+CjxHZW5yZSB0YWc9IkRyYW1hIiAvPgo8V3JpdGVyIHRhZz0i
|
140
|
+
UmFqa3VtYXIgSGlyYW5pIiAvPgo8RGlyZWN0b3IgdGFnPSJSYWprdW1hciBI
|
141
|
+
aXJhbmkiIC8+CjxDb3VudHJ5IHRhZz0iSW5kaWEiIC8+CjxSb2xlIHRhZz0i
|
142
|
+
QWFtaXIgS2hhbiIgLz4KPFJvbGUgdGFnPSJLYXJlZW5hIEthcG9vciIgLz4K
|
143
|
+
PFJvbGUgdGFnPSJNYWRoYXZhbiIgLz4KPC9WaWRlbz4KPFZpZGVvIHJhdGlu
|
144
|
+
Z0tleT0iMTIwMSIga2V5PSIvbGlicmFyeS9tZXRhZGF0YS8xMjAxIiBzdHVk
|
145
|
+
aW89Ildhcm5lciBCcm9zLiIgdHlwZT0ibW92aWUiIHRpdGxlPSJSdXJvdW5p
|
146
|
+
IEtlbnNoaW46IEt5b3RvIEluZmVybm8iIG9yaWdpbmFsVGl0bGU9IlJ1cm91
|
147
|
+
bmkgS2Vuc2hpbiAyIDogS3lvdG8gSW5mZXJubyDguKPguLnguYLguKPguJng
|
148
|
+
uLTguJkg4LmA4LiE4LiZ4LiK4Li04LiZIOC5gOC4geC4teC4ouC4p+C5guC4
|
149
|
+
leC4l+C4sOC5gOC4pSIgY29udGVudFJhdGluZz0iUEctMTMiIHN1bW1hcnk9
|
150
|
+
IktlbnNoaW4gaGFzIHNldHRsZWQgaW50byBoaXMgbmV3IGxpZmUgd2l0aCBL
|
151
|
+
YW9ydSBhbmQgaGlzIG90aGVyIGZyaWVuZHMgd2hlbiBoZSBpcyBhcHByb2Fj
|
152
|
+
aGVkIHdpdGggYSByZXF1ZXN0IGZyb20gdGhlIE1laWppIGdvdmVybm1lbnQu
|
153
|
+
IE1ha290byBTaGlzaGlvLCBhIGZvcm1lciBhc3Nhc3NpbiBsaWtlIEtlbnNo
|
154
|
+
aW4sIHdhcyBiZXRyYXllZCwgc2V0IG9uIGZpcmUgYW5kIGxlZnQgZm9yIGRl
|
155
|
+
YWQuIEhlIHN1cnZpdmVkLCBhbmQgaXMgbm93IGluIEt5b3RvLCBwbG90dGlu
|
156
|
+
ZyB3aXRoIGhpcyBnYXRoZXJlZCB3YXJyaW9ycyB0byBvdmVydGhyb3cgdGhl
|
157
|
+
IG5ldyBnb3Zlcm5tZW50LiBBZ2FpbnN0IEthb3J1JmFwb3M7cyB3aXNoZXMs
|
158
|
+
IEtlbnNoaW4gcmVsdWN0YW50bHkgYWdyZWVzIHRvIGdvIHRvIEt5b3RvIGFu
|
159
|
+
ZCBoZWxwIGtlZXAgaGlzIGNvdW50cnkgZnJvbSBmYWxsaW5nIGJhY2sgaW50
|
160
|
+
byBjaXZpbCB3YXIuIiByYXRpbmc9IjcuNjk5OTk5ODA5MjY1MTQwMyIgeWVh
|
161
|
+
cj0iMjAxNCIgdGFnbGluZT0iRmF0ZSBIYW5ncyBPbiBIaXMgU3dvcmQiIHRo
|
162
|
+
dW1iPSIvbGlicmFyeS9tZXRhZGF0YS8xMjAxL3RodW1iLzE0MjQ0NjQ0ODMi
|
163
|
+
IGFydD0iL2xpYnJhcnkvbWV0YWRhdGEvMTIwMS9hcnQvMTQyNDQ2NDQ4MyIg
|
164
|
+
ZHVyYXRpb249IjgzMjEzMzUiIG9yaWdpbmFsbHlBdmFpbGFibGVBdD0iMjAx
|
165
|
+
NC0wOC0wMSIgYWRkZWRBdD0iMTQyNDQ2NDQ3NSIgdXBkYXRlZEF0PSIxNDI0
|
166
|
+
NDY0NDgzIj4KPE1lZGlhIHZpZGVvUmVzb2x1dGlvbj0iNzIwIiBpZD0iMTQy
|
167
|
+
NiIgZHVyYXRpb249IjgzMjEzMzUiIGJpdHJhdGU9IjExMDkiIHdpZHRoPSIx
|
168
|
+
MjgwIiBoZWlnaHQ9IjUzNiIgYXNwZWN0UmF0aW89IjIuMzUiIGF1ZGlvQ2hh
|
169
|
+
bm5lbHM9IjIiIGF1ZGlvQ29kZWM9ImFhYyIgdmlkZW9Db2RlYz0iaDI2NCIg
|
170
|
+
Y29udGFpbmVyPSJta3YiIHZpZGVvRnJhbWVSYXRlPSIyNHAiPgo8UGFydCBp
|
171
|
+
ZD0iMTk4MSIga2V5PSIvbGlicmFyeS9wYXJ0cy8xOTgxL2ZpbGUubWt2IiBk
|
172
|
+
dXJhdGlvbj0iODMyMTMzNSIgZmlsZT0iL1VzZXJzL21jb253YXkvTW92aWVz
|
173
|
+
L1Rpdm9ITU9UZXN0L01vdmllcy9SdXJvdW5pIEtlbnNoaW4gS3lvdG8gSW5m
|
174
|
+
ZXJubyAoMjAxNCkubWt2IiBzaXplPSIxMTUzODMzMTM5IiBjb250YWluZXI9
|
175
|
+
Im1rdiIgLz4KPC9NZWRpYT4KPEdlbnJlIHRhZz0iQWN0aW9uIiAvPgo8R2Vu
|
176
|
+
cmUgdGFnPSJBZHZlbnR1cmUiIC8+CjxEaXJlY3RvciB0YWc9IktlaXNoaSBP
|
177
|
+
aHRvbW8iIC8+CjxDb3VudHJ5IHRhZz0iSmFwYW4iIC8+CjxSb2xlIHRhZz0i
|
178
|
+
VGFrZXJ1IFNhdG8iIC8+CjxSb2xlIHRhZz0iWXUgQW9pIiAvPgo8Um9sZSB0
|
179
|
+
YWc9IlRhdHN1eWEgRnVqaXdhcmEiIC8+CjwvVmlkZW8+CjxWaWRlbyByYXRp
|
180
|
+
bmdLZXk9IjExNzUiIGtleT0iL2xpYnJhcnkvbWV0YWRhdGEvMTE3NSIgc3R1
|
181
|
+
ZGlvPSJHdWVyaWxsYSBGaWxtcyIgdHlwZT0ibW92aWUiIHRpdGxlPSJXeXJt
|
182
|
+
d29vZCIgc3VtbWFyeT0iQmFycnkgaXMgYSB0YWxlbnRlZCBtZWNoYW5pYyBh
|
183
|
+
bmQgZmFtaWx5IG1hbiB3aG9zZSBsaWZlIGlzIHRvcm4gYXBhcnQgb24gdGhl
|
184
|
+
IGV2ZSBvZiBhIHpvbWJpZSBhcG9jYWx5cHNlLiBIaXMgc2lzdGVyLCBCcm9v
|
185
|
+
a2UsIGlzIGtpZG5hcHBlZCBieSBhIHNpbmlzdGVyIHRlYW0gb2YgZ2FzLW1h
|
186
|
+
c2sgd2VhcmluZyBzb2xkaWVycyAmYW1wO2FtcDsgZXhwZXJpbWVudGVkIG9u
|
187
|
+
IGJ5IGEgcHN5Y2hvdGljIGRvY3Rvci4gV2hpbGUgQnJvb2tlIHBsYW5zIGhl
|
188
|
+
ciBlc2NhcGUgQmFycnkgZ29lcyBvdXQgb24gdGhlIHJvYWQgdG8gZmluZCBo
|
189
|
+
ZXIgJmFtcDthbXA7IHRlYW1zIHVwIHdpdGggQmVubnksIGEgZmVsbG93IHN1
|
190
|
+
cnZpdm9yIC0gdG9nZXRoZXIgdGhleSBtdXN0IGFybSB0aGVtc2VsdmVzIGFu
|
191
|
+
ZCBwcmVwYXJlIHRvIGJhdHRsZSB0aGVpciB3YXkgdGhyb3VnaCBob3JkZXMg
|
192
|
+
b2YgZmxlc2gtZWF0aW5nIG1vbnN0ZXJzIGluIGEgaGFyc2ggQXVzdHJhbGlh
|
193
|
+
biBidXNobGFuZC4iIHllYXI9IjIwMTUiIHRodW1iPSIvbGlicmFyeS9tZXRh
|
194
|
+
ZGF0YS8xMTc1L3RodW1iLzE0MjQ0NjQ4NDYiIGFydD0iL2xpYnJhcnkvbWV0
|
195
|
+
YWRhdGEvMTE3NS9hcnQvMTQyNDQ2NDg0NiIgZHVyYXRpb249IjU5MTQ2NTki
|
196
|
+
IG9yaWdpbmFsbHlBdmFpbGFibGVBdD0iMjAxNS0wMi0xMyIgYWRkZWRBdD0i
|
197
|
+
MTQyMzkzNjAzNiIgdXBkYXRlZEF0PSIxNDI0NDY0ODQ2Ij4KPE1lZGlhIHZp
|
198
|
+
ZGVvUmVzb2x1dGlvbj0ic2QiIGlkPSIxNDAyIiBkdXJhdGlvbj0iNTkxNDY1
|
199
|
+
OSIgYml0cmF0ZT0iOTg5IiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjM1MiIgYXNw
|
200
|
+
ZWN0UmF0aW89IjEuODUiIGF1ZGlvQ2hhbm5lbHM9IjIiIGF1ZGlvQ29kZWM9
|
201
|
+
Im1wMyIgdmlkZW9Db2RlYz0ibXBlZzQiIGNvbnRhaW5lcj0iYXZpIiB2aWRl
|
202
|
+
b0ZyYW1lUmF0ZT0iMjRwIj4KPFBhcnQgaWQ9IjE5NTciIGtleT0iL2xpYnJh
|
203
|
+
cnkvcGFydHMvMTk1Ny9maWxlLmF2aSIgZHVyYXRpb249IjU5MTQ2NTkiIGZp
|
204
|
+
bGU9Ii9Vc2Vycy9tY29ud2F5L01vdmllcy9UaXZvSE1PVGVzdC9Nb3ZpZXMv
|
205
|
+
V3lybXdvb2QgKDIwMTQpLmF2aSIgc2l6ZT0iNzMxMDMzOTE4IiBjb250YWlu
|
206
|
+
ZXI9ImF2aSIgLz4KPC9NZWRpYT4KPEdlbnJlIHRhZz0iQWN0aW9uIiAvPgo8
|
207
|
+
R2VucmUgdGFnPSJIb3Jyb3IiIC8+CjxXcml0ZXIgdGFnPSJLaWFoIFJvYWNo
|
208
|
+
ZS1UdXJuZXIiIC8+CjxXcml0ZXIgdGFnPSJUcmlzdGFuIFJvYWNoZS1UdXJu
|
209
|
+
ZXIiIC8+CjxEaXJlY3RvciB0YWc9IktpYWggUm9hY2hlLVR1cm5lciIgLz4K
|
210
|
+
PENvdW50cnkgdGFnPSJBdXN0cmFsaWEiIC8+CjxSb2xlIHRhZz0iSmF5IEdh
|
211
|
+
bGxhZ2hlciIgLz4KPFJvbGUgdGFnPSJCaWFuY2EgQnJhZGV5IiAvPgo8Um9s
|
212
|
+
ZSB0YWc9Ikxlb24gQnVyY2hpbGwiIC8+CjwvVmlkZW8+CjwvTWVkaWFDb250
|
213
|
+
YWluZXI+Cg==
|
214
|
+
http_version:
|
215
|
+
recorded_at: Sun, 08 Mar 2015 14:54:37 GMT
|
216
|
+
- request:
|
217
|
+
method: get
|
218
|
+
uri: http://localhost:32400/library/metadata/1169
|
219
|
+
body:
|
220
|
+
encoding: US-ASCII
|
221
|
+
string: ''
|
222
|
+
headers:
|
223
|
+
Accept-Encoding:
|
224
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
225
|
+
Accept:
|
226
|
+
- "*/*"
|
227
|
+
User-Agent:
|
228
|
+
- Ruby
|
229
|
+
response:
|
230
|
+
status:
|
231
|
+
code: 200
|
232
|
+
message: OK
|
233
|
+
headers:
|
234
|
+
Content-Type:
|
235
|
+
- text/xml;charset=utf-8
|
236
|
+
Connection:
|
237
|
+
- close
|
238
|
+
X-Plex-Protocol:
|
239
|
+
- '1.0'
|
240
|
+
X-Plex-Content-Original-Length:
|
241
|
+
- '3639'
|
242
|
+
X-Plex-Content-Compressed-Length:
|
243
|
+
- '1800'
|
244
|
+
Content-Length:
|
245
|
+
- '1800'
|
246
|
+
Cache-Control:
|
247
|
+
- no-cache
|
248
|
+
body:
|
249
|
+
encoding: ASCII-8BIT
|
250
|
+
string: !binary |-
|
251
|
+
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPE1lZGlh
|
252
|
+
Q29udGFpbmVyIHNpemU9IjEiIGFsbG93U3luYz0iMSIgaWRlbnRpZmllcj0i
|
253
|
+
Y29tLnBsZXhhcHAucGx1Z2lucy5saWJyYXJ5IiBsaWJyYXJ5U2VjdGlvbklE
|
254
|
+
PSI2IiBsaWJyYXJ5U2VjdGlvblRpdGxlPSJUZXN0IE1vdmllcyIgbGlicmFy
|
255
|
+
eVNlY3Rpb25VVUlEPSJmYmM4MTBiNy02YjUxLTQwYmEtYTNjNS05YTJjMzkx
|
256
|
+
ZTVhM2QiIG1lZGlhVGFnUHJlZml4PSIvc3lzdGVtL2J1bmRsZS9tZWRpYS9m
|
257
|
+
bGFncy8iIG1lZGlhVGFnVmVyc2lvbj0iMTQyMDc2NzU0NSI+CjxWaWRlbyBy
|
258
|
+
YXRpbmdLZXk9IjExNjkiIGtleT0iL2xpYnJhcnkvbWV0YWRhdGEvMTE2OSIg
|
259
|
+
Z3VpZD0iY29tLnBsZXhhcHAuYWdlbnRzLmltZGI6Ly90dDExODcwNDM/bGFu
|
260
|
+
Zz1lbiIgc3R1ZGlvPSJWaWRodSBWaW5vZCBDaG9wcmEgUHJvZHVjdGlvbnMi
|
261
|
+
IHR5cGU9Im1vdmllIiB0aXRsZT0iMyBJZGlvdHMiIGNvbnRlbnRSYXRpbmc9
|
262
|
+
IlBHIiBzdW1tYXJ5PSJJbiB0aGUgdHJhZGl0aW9uIG9mIOKAnEZlcnJpcyBC
|
263
|
+
dWVsbGVy4oCZcyBEYXkgT2Zm4oCdIGNvbWVzIHRoaXMgcmVmcmVzaGluZyBj
|
264
|
+
b21lZHkgYWJvdXQgYSByZWJlbGxpb3VzIHByYW5rc3RlciB3aXRoIGEgY3Jh
|
265
|
+
ZnR5IG1pbmQgYW5kIGEgaGVhcnQgb2YgZ29sZC4gUmFzY2FsLiBKb2tlci4g
|
266
|
+
RHJlYW1lci4gR2VuaXVzLi4uIFlvdSZhcG9zO3ZlIG5ldmVyIG1ldCBhIGNv
|
267
|
+
bGxlZ2Ugc3R1ZGVudCBxdWl0ZSBsaWtlICZxdW90O1JhbmNoby4mcXVvdDsg
|
268
|
+
RnJvbSB0aGUgbW9tZW50IGhlIGFycml2ZXMgYXQgSW5kaWEmYXBvcztzIG1v
|
269
|
+
c3QgcHJlc3RpZ2lvdXMgdW5pdmVyc2l0eSwgUmFuY2hvJmFwb3M7cyBvdXRs
|
270
|
+
YW5kaXNoIHNjaGVtZXMgdHVybiB0aGUgY2FtcHVzIHVwc2lkZSBkb3du4oCU
|
271
|
+
YWxvbmcgd2l0aCB0aGUgbGl2ZXMgb2YgaGlzIHR3byBuZXdmb3VuZCBiZXN0
|
272
|
+
IGZyaWVuZHMuIFRvZ2V0aGVyLCB0aGV5IG1ha2UgbGlmZSBtaXNlcmFibGUg
|
273
|
+
Zm9yICZxdW90O1ZpcnVzLCZxdW90OyB0aGUgc2Nob29s4oCZcyB1cHRpZ2h0
|
274
|
+
IGFuZCBoZWFydGxlc3MgZGVhbi4gQnV0IHdoZW4gUmFuY2hvIGNhdGNoZXMg
|
275
|
+
dGhlIGV5ZSBvZiB0aGUgZGVhbiZhcG9zO3Mgc2V4eSBkYXVnaHRlciwgVmly
|
276
|
+
dXMgc2V0cyBoaXMgc2lnaHRzIG9uIGZsdW5raW5nIG91dCB0aGUgJnF1b3Q7
|
277
|
+
MyBpZGlvdHMmcXVvdDsgb25jZSBhbmQgZm9yIGFsbC4iIHJhdGluZz0iNy42
|
278
|
+
OTk5OTk4MDkyNjUxNDAzIiB5ZWFyPSIyMDA5IiB0aHVtYj0iL2xpYnJhcnkv
|
279
|
+
bWV0YWRhdGEvMTE2OS90aHVtYi8xNDI0NDY0ODQ2IiBhcnQ9Ii9saWJyYXJ5
|
280
|
+
L21ldGFkYXRhLzExNjkvYXJ0LzE0MjQ0NjQ4NDYiIGR1cmF0aW9uPSI5ODU1
|
281
|
+
NDQwIiBvcmlnaW5hbGx5QXZhaWxhYmxlQXQ9IjIwMDktMTItMjUiIGFkZGVk
|
282
|
+
QXQ9IjE0MjM5MzUzNTIiIHVwZGF0ZWRBdD0iMTQyNDQ2NDg0NiI+CjxNZWRp
|
283
|
+
YSB2aWRlb1Jlc29sdXRpb249InNkIiBpZD0iMTM5OSIgZHVyYXRpb249Ijk4
|
284
|
+
NTU0NDAiIGJpdHJhdGU9IjgwOCIgd2lkdGg9IjY0MCIgaGVpZ2h0PSIyNzIi
|
285
|
+
IGFzcGVjdFJhdGlvPSIyLjM1IiBhdWRpb0NoYW5uZWxzPSI2IiBhdWRpb0Nv
|
286
|
+
ZGVjPSJhYzMiIHZpZGVvQ29kZWM9Im1wZWc0IiBjb250YWluZXI9ImF2aSIg
|
287
|
+
dmlkZW9GcmFtZVJhdGU9IlBBTCI+CjxQYXJ0IGlkPSIxOTU0IiBrZXk9Ii9s
|
288
|
+
aWJyYXJ5L3BhcnRzLzE5NTQvZmlsZS5hdmkiIGR1cmF0aW9uPSI5ODU1NDQw
|
289
|
+
IiBmaWxlPSIvVXNlcnMvbWNvbndheS9Nb3ZpZXMvVGl2b0hNT1Rlc3QvTW92
|
290
|
+
aWVzLzMgSWRpb3RzICgyMDA5KS5hdmkiIHNpemU9Ijk5NTQ0Mzc4NCIgY29u
|
291
|
+
dGFpbmVyPSJhdmkiPgo8U3RyZWFtIGlkPSI1NzMyIiBzdHJlYW1UeXBlPSIx
|
292
|
+
IiBjb2RlYz0ibXBlZzQiIGluZGV4PSIwIiBiaXRyYXRlPSI2MTEiIGJpdERl
|
293
|
+
cHRoPSI4IiBjaHJvbWFTdWJzYW1wbGluZz0iNDoyOjAiIGNvZGVjSUQ9IlhW
|
294
|
+
SUQiIGNvbG9yU3BhY2U9Inl1diIgZHVyYXRpb249Ijk4NTU0NDAiIGZyYW1l
|
295
|
+
UmF0ZT0iMjUuMDAwIiBnbWM9IjAiIGhlaWdodD0iMjcyIiBsZXZlbD0iNSIg
|
296
|
+
cHJvZmlsZT0iYXNwIiBxcGVsPSIwIiBzY2FuVHlwZT0icHJvZ3Jlc3NpdmUi
|
297
|
+
IHRpdGxlPSIiIHdpZHRoPSI2NDAiIC8+CjxTdHJlYW0gaWQ9IjU3MzMiIHN0
|
298
|
+
cmVhbVR5cGU9IjIiIHNlbGVjdGVkPSIxIiBjb2RlYz0iYWMzIiBpbmRleD0i
|
299
|
+
MSIgY2hhbm5lbHM9IjYiIGJpdHJhdGU9IjE5MiIgYml0RGVwdGg9IjE2IiBi
|
300
|
+
aXRyYXRlTW9kZT0iY2JyIiBjb2RlY0lEPSIyMDAwIiBkaWFsb2dOb3JtPSIt
|
301
|
+
MzEiIGR1cmF0aW9uPSI5ODU1MzYwIiBzYW1wbGluZ1JhdGU9IjQ4MDAwIiB0
|
302
|
+
aXRsZT0iIiAvPgo8U3RyZWFtIGlkPSI1NzM4IiBrZXk9Ii9saWJyYXJ5L3N0
|
303
|
+
cmVhbXMvNTczOCIgc3RyZWFtVHlwZT0iMyIgY29kZWM9InNydCIgbGFuZ3Vh
|
304
|
+
Z2U9IkVuZ2xpc2giIGxhbmd1YWdlQ29kZT0iZW5nIiBmb3JtYXQ9InNydCIg
|
305
|
+
Lz4KPC9QYXJ0Pgo8L01lZGlhPgo8R2VucmUgaWQ9IjQ0IiB0YWc9IkNvbWVk
|
306
|
+
eSIgLz4KPEdlbnJlIGlkPSI4OCIgdGFnPSJEcmFtYSIgLz4KPEdlbnJlIGlk
|
307
|
+
PSIzNjgxIiB0YWc9IlJvbWFuY2UiIC8+CjxXcml0ZXIgaWQ9IjY5MDUiIHRh
|
308
|
+
Zz0iUmFqa3VtYXIgSGlyYW5pIiAvPgo8RGlyZWN0b3IgaWQ9IjY5MDIiIHRh
|
309
|
+
Zz0iUmFqa3VtYXIgSGlyYW5pIiAvPgo8UHJvZHVjZXIgaWQ9IjY5MjkiIHRh
|
310
|
+
Zz0iVmlkaHUgVmlub2QgQ2hvcHJhIiAvPgo8Q291bnRyeSBpZD0iNjA5IiB0
|
311
|
+
YWc9IkluZGlhIiAvPgo8Um9sZSBpZD0iNjkxMyIgdGFnPSJBYW1pciBLaGFu
|
312
|
+
IiByb2xlPSJSYW5jaG8iIHRodW1iPSJodHRwOi8vaW1hZ2UudG1kYi5vcmcv
|
313
|
+
dC9wL29yaWdpbmFsL2pZb2hsVVZrTFBGZG5EcnlaOFYxSFprSnpEdC5qcGci
|
314
|
+
IC8+CjxSb2xlIGlkPSI3MjQ3IiB0YWc9IkthcmVlbmEgS2Fwb29yIiByb2xl
|
315
|
+
PSJQaWEiIHRodW1iPSJodHRwOi8vaW1hZ2UudG1kYi5vcmcvdC9wL29yaWdp
|
316
|
+
bmFsL2tEWWVCRU5YY1ZLZkhKalNIbGNpTkNMbXRyRy5qcGciIC8+CjxSb2xl
|
317
|
+
IGlkPSI3MjQ4IiB0YWc9Ik1hZGhhdmFuIiByb2xlPSJGYXJoYW4iIHRodW1i
|
318
|
+
PSJodHRwOi8vaW1hZ2UudG1kYi5vcmcvdC9wL29yaWdpbmFsL2p4cUV4NElp
|
319
|
+
OWFZeDdra2t6MU14N0ZXcmpDdC5qcGciIC8+CjxSb2xlIGlkPSI2OTE1IiB0
|
320
|
+
YWc9IlNoYXJtYW4gSm9zaGkiIHJvbGU9IlJhanUiIHRodW1iPSJodHRwOi8v
|
321
|
+
aW1hZ2UudG1kYi5vcmcvdC9wL29yaWdpbmFsL2xhc21laTFTb1drU1p4V1F0
|
322
|
+
TmgyYkkxMFQySC5qcGciIC8+CjxSb2xlIGlkPSI2OTE0IiB0YWc9IkJvbWFu
|
323
|
+
IElyYW5pIiByb2xlPSJWaXJ1IFNhaGFzdHJhYnVkaGhlIiB0aHVtYj0iaHR0
|
324
|
+
cDovL2ltYWdlLnRtZGIub3JnL3QvcC9vcmlnaW5hbC95YmhGYW04YWRVcFd6
|
325
|
+
M1JlNDlUOHVEbThEY1QuanBnIiAvPgo8Um9sZSBpZD0iNjkwOCIgdGFnPSJN
|
326
|
+
b25hIFNpbmdoIiByb2xlPSJNb25hIiB0aHVtYj0iaHR0cDovL2ltYWdlLnRt
|
327
|
+
ZGIub3JnL3QvcC9vcmlnaW5hbC83VHdFTkhJTWpLWk82d1lUVkd5OW5xaFZZ
|
328
|
+
TFouanBnIiAvPgo8Um9sZSBpZD0iNjkxNyIgdGFnPSJPbWkgVmFpZHlhIiBy
|
329
|
+
b2xlPSJDaGF0dXIgUmFtYWxpbmdhbSIgdGh1bWI9Imh0dHA6Ly9pbWFnZS50
|
330
|
+
bWRiLm9yZy90L3Avb3JpZ2luYWwvak1zSHFscno0MVpwRDdSRXlzNzhaYUNU
|
331
|
+
TTNVLmpwZyIgLz4KPC9WaWRlbz4KPC9NZWRpYUNvbnRhaW5lcj4K
|
332
|
+
http_version:
|
333
|
+
recorded_at: Sun, 08 Mar 2015 14:54:37 GMT
|
334
|
+
recorded_with: VCR 2.9.3
|
data/spec/spec_helper.rb
CHANGED
@@ -4,6 +4,8 @@ require 'rspec'
|
|
4
4
|
RSpec.configure do |config|
|
5
5
|
end
|
6
6
|
|
7
|
+
require 'awesome_print'
|
8
|
+
|
7
9
|
require 'timecop'
|
8
10
|
|
9
11
|
require 'coveralls'
|
@@ -136,4 +138,23 @@ end
|
|
136
138
|
|
137
139
|
def plex_tv_section
|
138
140
|
plex_server.library.sections.find {|s| s.type == 'show' && s.title == 'Test TV Shows'}
|
141
|
+
end
|
142
|
+
|
143
|
+
def stub_subtitles(media_path, language_code: 'en', type: :file, format: 'srt')
|
144
|
+
require 'iso-639'
|
145
|
+
|
146
|
+
allow(TivoHMO::SubtitlesUtil.instance).to receive(:subtitles_for_media_file).with(media_path) do |path|
|
147
|
+
subs = []
|
148
|
+
if language_code
|
149
|
+
st = TivoHMO::API::Subtitle.new
|
150
|
+
st.type = type
|
151
|
+
st.format = format
|
152
|
+
st.language_code = language_code
|
153
|
+
st.language = ISO_639.find_by_code(language_code.downcase).english_name
|
154
|
+
st.location = "#{path.chomp(File.extname(path))}.en.srt"
|
155
|
+
subs << st
|
156
|
+
end
|
157
|
+
subs
|
158
|
+
end
|
159
|
+
|
139
160
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require_relative "spec_helper"
|
2
|
+
require 'tivohmo/subtitles_util'
|
3
|
+
|
4
|
+
describe TivoHMO::SubtitlesUtil do
|
5
|
+
|
6
|
+
let(:subject) do
|
7
|
+
TivoHMO::SubtitlesUtil.instance_variable_set(:@singleton__instance__, nil)
|
8
|
+
TivoHMO::SubtitlesUtil.instance
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "subtitles_for_media_file" do
|
12
|
+
|
13
|
+
it "finds subtitles if present" do
|
14
|
+
with_file_tree('1.avi', '1.en.srt', '2.avi', '3.avi', '3.en.srt', '3.fr.srt') do |dir|
|
15
|
+
|
16
|
+
subs = subject.subtitles_for_media_file("#{dir}/1.avi")
|
17
|
+
expect(subs.size).to eq(1)
|
18
|
+
subs.all? {|s| expect(s).to be_instance_of(TivoHMO::API::Subtitle) }
|
19
|
+
expect(subs.first.language_code).to eq('en')
|
20
|
+
expect(subs.first.language).to eq('English')
|
21
|
+
expect(subs.first.type).to eq(:file)
|
22
|
+
expect(subs.first.format).to eq('srt')
|
23
|
+
expect(subs.first.location).to eq("#{File.realdirpath(dir)}/1.en.srt")
|
24
|
+
|
25
|
+
subs = subject.subtitles_for_media_file("#{dir}/2.avi")
|
26
|
+
expect(subs.size).to eq(0)
|
27
|
+
|
28
|
+
subs = subject.subtitles_for_media_file("#{dir}/3.avi")
|
29
|
+
expect(subs.size).to eq(2)
|
30
|
+
expect(subs.collect(&:language_code)).to match_array(['en', 'fr'])
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "change listener" do
|
37
|
+
|
38
|
+
it "watches for filesystem addition" do
|
39
|
+
with_file_tree('1.avi') do |dir|
|
40
|
+
|
41
|
+
subs = subject.subtitles_for_media_file("#{dir}/1.avi")
|
42
|
+
expect(subs.size).to eq(0)
|
43
|
+
|
44
|
+
FileUtils.touch("#{dir}/1.en.srt")
|
45
|
+
sleep 0.5
|
46
|
+
|
47
|
+
subs = subject.subtitles_for_media_file("#{dir}/1.avi")
|
48
|
+
expect(subs.size).to eq(1)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "watches for filesystem deletion" do
|
53
|
+
with_file_tree('1.avi', '1.en.srt') do |dir|
|
54
|
+
|
55
|
+
subs = subject.subtitles_for_media_file("#{dir}/1.avi")
|
56
|
+
expect(subs.size).to eq(1)
|
57
|
+
|
58
|
+
FileUtils.rm("#{dir}/1.en.srt")
|
59
|
+
sleep 0.5
|
60
|
+
|
61
|
+
subs = subject.subtitles_for_media_file("#{dir}/1.avi")
|
62
|
+
expect(subs.size).to eq(0)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
data/tivohmo.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tivohmo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Conway
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -304,6 +304,20 @@ dependencies:
|
|
304
304
|
- - ">="
|
305
305
|
- !ruby/object:Gem::Version
|
306
306
|
version: '0'
|
307
|
+
- !ruby/object:Gem::Dependency
|
308
|
+
name: iso-639
|
309
|
+
requirement: !ruby/object:Gem::Requirement
|
310
|
+
requirements:
|
311
|
+
- - ">="
|
312
|
+
- !ruby/object:Gem::Version
|
313
|
+
version: '0'
|
314
|
+
type: :runtime
|
315
|
+
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - ">="
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '0'
|
307
321
|
- !ruby/object:Gem::Dependency
|
308
322
|
name: listen
|
309
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -372,6 +386,7 @@ files:
|
|
372
386
|
- lib/tivohmo/adapters/filesystem/application.rb
|
373
387
|
- lib/tivohmo/adapters/filesystem/file_item.rb
|
374
388
|
- lib/tivohmo/adapters/filesystem/folder_container.rb
|
389
|
+
- lib/tivohmo/adapters/filesystem/group.rb
|
375
390
|
- lib/tivohmo/adapters/plex.rb
|
376
391
|
- lib/tivohmo/adapters/plex/application.rb
|
377
392
|
- lib/tivohmo/adapters/plex/category.rb
|
@@ -418,6 +433,7 @@ files:
|
|
418
433
|
- lib/tivohmo/server/views/server_info.builder
|
419
434
|
- lib/tivohmo/server/views/unsupported.builder
|
420
435
|
- lib/tivohmo/server/views/video_formats.builder
|
436
|
+
- lib/tivohmo/subtitles_util.rb
|
421
437
|
- lib/tivohmo/tvdb_helper.rb
|
422
438
|
- lib/tivohmo/version.rb
|
423
439
|
- spec/adapters/filesystem/application_spec.rb
|
@@ -464,10 +480,12 @@ files:
|
|
464
480
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Category/_initialize/should_set_presorted_if_present.yml
|
465
481
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Category/_initialize/should_use_category_value_for_title_if_present.yml
|
466
482
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_initialize/should_instantiate.yml
|
483
|
+
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_initialize/should_instantiate_with_subtitle.yml
|
467
484
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_metadata/should_allow_disabling_series_id_in_metadata.yml
|
468
485
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_metadata/should_populate_metadata.yml
|
469
486
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Metadata/_initialize/should_instantiate.yml
|
470
487
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Movie/_initialize/should_instantiate.yml
|
488
|
+
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Movie/_initialize/should_instantiate_with_subtitle.yml
|
471
489
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Movie/_metadata/should_populate_metadata.yml
|
472
490
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_QualifiedCategory/_children/should_display_non-zero_child_count_once_children_fetched.yml
|
473
491
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_QualifiedCategory/_children/should_have_children.yml
|
@@ -485,6 +503,7 @@ files:
|
|
485
503
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Transcoder/_initialize/should_instantiate.yml
|
486
504
|
- spec/server_spec.rb
|
487
505
|
- spec/spec_helper.rb
|
506
|
+
- spec/subtitles_util_spec.rb
|
488
507
|
- tivohmo.gemspec
|
489
508
|
homepage: ''
|
490
509
|
licenses:
|
@@ -555,10 +574,12 @@ test_files:
|
|
555
574
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Category/_initialize/should_set_presorted_if_present.yml
|
556
575
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Category/_initialize/should_use_category_value_for_title_if_present.yml
|
557
576
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_initialize/should_instantiate.yml
|
577
|
+
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_initialize/should_instantiate_with_subtitle.yml
|
558
578
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_metadata/should_allow_disabling_series_id_in_metadata.yml
|
559
579
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Episode/_metadata/should_populate_metadata.yml
|
560
580
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Metadata/_initialize/should_instantiate.yml
|
561
581
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Movie/_initialize/should_instantiate.yml
|
582
|
+
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Movie/_initialize/should_instantiate_with_subtitle.yml
|
562
583
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Movie/_metadata/should_populate_metadata.yml
|
563
584
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_QualifiedCategory/_children/should_display_non-zero_child_count_once_children_fetched.yml
|
564
585
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_QualifiedCategory/_children/should_have_children.yml
|
@@ -576,4 +597,4 @@ test_files:
|
|
576
597
|
- spec/fixtures/vcr/TivoHMO_Adapters_Plex_Transcoder/_initialize/should_instantiate.yml
|
577
598
|
- spec/server_spec.rb
|
578
599
|
- spec/spec_helper.rb
|
579
|
-
|
600
|
+
- spec/subtitles_util_spec.rb
|