oblecto 0.2.9 → 0.3.1

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.
Files changed (273) hide show
  1. package/Oblecto-Web/dist/web/index.html +24 -3
  2. package/Oblecto-Web/dist/web/static/index-C-JsqHHk.css +1 -0
  3. package/Oblecto-Web/dist/web/static/index-DSZgpOOu.js +576 -0
  4. package/README.md +43 -7
  5. package/dist/bin/oblecto.js +12468 -61
  6. package/dist/index.js +10676 -6
  7. package/package.json +67 -39
  8. package/res/AGENTS.md +8 -0
  9. package/res/config.json +29 -7
  10. package/Oblecto-Web/dist/web/static/css/app.ef5965dbd50e69a7544e200a3f21fbaf.css +0 -1
  11. package/Oblecto-Web/dist/web/static/css/app.ef5965dbd50e69a7544e200a3f21fbaf.css.map +0 -1
  12. package/Oblecto-Web/dist/web/static/js/app.1352bf3c311f0e7ab716.js +0 -7150
  13. package/Oblecto-Web/dist/web/static/js/app.1352bf3c311f0e7ab716.js.map +0 -1
  14. package/Oblecto-Web/dist/web/static/js/manifest.b8404c3e329d75bb51fd.js +0 -154
  15. package/Oblecto-Web/dist/web/static/js/manifest.b8404c3e329d75bb51fd.js.map +0 -1
  16. package/Oblecto-Web/dist/web/static/js/vendor.521641a02e42750ba5a7.js +0 -32455
  17. package/Oblecto-Web/dist/web/static/js/vendor.521641a02e42750ba5a7.js.map +0 -1
  18. package/dist/bin/oblecto.d.ts +0 -2
  19. package/dist/bin/scripts/adduser.d.ts +0 -2
  20. package/dist/bin/scripts/adduser.js +0 -50
  21. package/dist/bin/scripts/changepassword.d.ts +0 -2
  22. package/dist/bin/scripts/changepassword.js +0 -48
  23. package/dist/bin/scripts/deluser.d.ts +0 -2
  24. package/dist/bin/scripts/deluser.js +0 -34
  25. package/dist/bin/scripts/helpers/argumentError.d.ts +0 -2
  26. package/dist/bin/scripts/helpers/argumentError.js +0 -12
  27. package/dist/bin/scripts/helpers/generateAssetDirectories.d.ts +0 -1
  28. package/dist/bin/scripts/helpers/generateAssetDirectories.js +0 -37
  29. package/dist/bin/scripts/init/assets.d.ts +0 -2
  30. package/dist/bin/scripts/init/assets.js +0 -24
  31. package/dist/bin/scripts/init/database.d.ts +0 -2
  32. package/dist/bin/scripts/init/database.js +0 -21
  33. package/dist/bin/scripts/init/general.d.ts +0 -2
  34. package/dist/bin/scripts/init/general.js +0 -54
  35. package/dist/bin/scripts/init/index.d.ts +0 -2
  36. package/dist/bin/scripts/init/index.js +0 -26
  37. package/dist/bin/scripts/removepassword.d.ts +0 -2
  38. package/dist/bin/scripts/removepassword.js +0 -42
  39. package/dist/config.d.ts +0 -7
  40. package/dist/config.js +0 -45
  41. package/dist/core/graphical.d.ts +0 -17
  42. package/dist/core/graphical.js +0 -179
  43. package/dist/core/index.d.ts +0 -9
  44. package/dist/core/index.js +0 -24
  45. package/dist/index.d.ts +0 -1
  46. package/dist/lib/artwork/ArtworkScaler.d.ts +0 -5
  47. package/dist/lib/artwork/ArtworkScaler.js +0 -31
  48. package/dist/lib/artwork/ArtworkUtils.d.ts +0 -8
  49. package/dist/lib/artwork/ArtworkUtils.js +0 -35
  50. package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.d.ts +0 -8
  51. package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.js +0 -58
  52. package/dist/lib/artwork/movies/MovieArtworkCollector.d.ts +0 -35
  53. package/dist/lib/artwork/movies/MovieArtworkCollector.js +0 -93
  54. package/dist/lib/artwork/movies/MovieArtworkDownloader.d.ts +0 -8
  55. package/dist/lib/artwork/movies/MovieArtworkDownloader.js +0 -65
  56. package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.d.ts +0 -6
  57. package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.js +0 -57
  58. package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.d.ts +0 -6
  59. package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.js +0 -47
  60. package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.d.ts +0 -8
  61. package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.js +0 -58
  62. package/dist/lib/artwork/series/SeriesArtworkCollector.d.ts +0 -37
  63. package/dist/lib/artwork/series/SeriesArtworkCollector.js +0 -95
  64. package/dist/lib/artwork/series/SeriesArtworkDownloader.d.ts +0 -8
  65. package/dist/lib/artwork/series/SeriesArtworkDownloader.js +0 -62
  66. package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.d.ts +0 -6
  67. package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.js +0 -44
  68. package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.d.ts +0 -16
  69. package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.js +0 -64
  70. package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.d.ts +0 -16
  71. package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.js +0 -51
  72. package/dist/lib/cleaners/FileCleaner.d.ts +0 -6
  73. package/dist/lib/cleaners/FileCleaner.js +0 -68
  74. package/dist/lib/cleaners/MovieCleaner.d.ts +0 -8
  75. package/dist/lib/cleaners/MovieCleaner.js +0 -48
  76. package/dist/lib/cleaners/SeriesCleaner.d.ts +0 -10
  77. package/dist/lib/cleaners/SeriesCleaner.js +0 -88
  78. package/dist/lib/common/AggregateIdentifier.d.ts +0 -9
  79. package/dist/lib/common/AggregateIdentifier.js +0 -57
  80. package/dist/lib/common/AggregateUpdateRetriever.d.ts +0 -5
  81. package/dist/lib/common/AggregateUpdateRetriever.js +0 -46
  82. package/dist/lib/downloader/index.d.ts +0 -6
  83. package/dist/lib/downloader/index.js +0 -83
  84. package/dist/lib/errors/DebugExtendableError.d.ts +0 -5
  85. package/dist/lib/errors/DebugExtendableError.js +0 -20
  86. package/dist/lib/errors/ExtendableError.d.ts +0 -3
  87. package/dist/lib/errors/ExtendableError.js +0 -22
  88. package/dist/lib/errors/FileExistsError.d.ts +0 -4
  89. package/dist/lib/errors/FileExistsError.js +0 -14
  90. package/dist/lib/errors/IdentificationError.d.ts +0 -4
  91. package/dist/lib/errors/IdentificationError.js +0 -14
  92. package/dist/lib/errors/InfoExtendableError.d.ts +0 -5
  93. package/dist/lib/errors/InfoExtendableError.js +0 -20
  94. package/dist/lib/errors/VideoAnalysisError.d.ts +0 -4
  95. package/dist/lib/errors/VideoAnalysisError.js +0 -14
  96. package/dist/lib/errors/VideoIdentificationError.d.ts +0 -4
  97. package/dist/lib/errors/VideoIdentificationError.js +0 -9
  98. package/dist/lib/errors/WarnExtendableError.d.ts +0 -5
  99. package/dist/lib/errors/WarnExtendableError.js +0 -20
  100. package/dist/lib/federation/client/FederationClient.d.ts +0 -31
  101. package/dist/lib/federation/client/FederationClient.js +0 -127
  102. package/dist/lib/federation/client/FederationClientController.d.ts +0 -9
  103. package/dist/lib/federation/client/FederationClientController.js +0 -45
  104. package/dist/lib/federation/client/FederationDataClient.d.ts +0 -11
  105. package/dist/lib/federation/client/FederationDataClient.js +0 -56
  106. package/dist/lib/federation/client/FederationMediaClient.d.ts +0 -12
  107. package/dist/lib/federation/client/FederationMediaClient.js +0 -70
  108. package/dist/lib/federation/server/FederationController.d.ts +0 -10
  109. package/dist/lib/federation/server/FederationController.js +0 -32
  110. package/dist/lib/federation/server/FederationDataServer.d.ts +0 -4
  111. package/dist/lib/federation/server/FederationDataServer.js +0 -22
  112. package/dist/lib/federation/server/FederationDataServerConnection.d.ts +0 -8
  113. package/dist/lib/federation/server/FederationDataServerConnection.js +0 -96
  114. package/dist/lib/federation/server/FederationMediaServer.d.ts +0 -4
  115. package/dist/lib/federation/server/FederationMediaServer.js +0 -22
  116. package/dist/lib/federation/server/FederationMediaServerConnection.d.ts +0 -11
  117. package/dist/lib/federation/server/FederationMediaServerConnection.js +0 -83
  118. package/dist/lib/federation/server/FederationServer.d.ts +0 -11
  119. package/dist/lib/federation/server/FederationServer.js +0 -40
  120. package/dist/lib/federation/server/FederationServerConnection.d.ts +0 -18
  121. package/dist/lib/federation/server/FederationServerConnection.js +0 -97
  122. package/dist/lib/federationindexer/FederationEpisodeIndexer.d.ts +0 -5
  123. package/dist/lib/federationindexer/FederationEpisodeIndexer.js +0 -65
  124. package/dist/lib/federationindexer/FederationMovieIndexer.d.ts +0 -5
  125. package/dist/lib/federationindexer/FederationMovieIndexer.js +0 -48
  126. package/dist/lib/federationv2/federationController/index.js +0 -13
  127. package/dist/lib/indexers/MediaIdentifier.d.ts +0 -5
  128. package/dist/lib/indexers/MediaIdentifier.js +0 -15
  129. package/dist/lib/indexers/files/FileIndexer.d.ts +0 -10
  130. package/dist/lib/indexers/files/FileIndexer.js +0 -103
  131. package/dist/lib/indexers/movies/MovieCollector.d.ts +0 -25
  132. package/dist/lib/indexers/movies/MovieCollector.js +0 -65
  133. package/dist/lib/indexers/movies/MovieIdentifier.d.ts +0 -10
  134. package/dist/lib/indexers/movies/MovieIdentifier.js +0 -22
  135. package/dist/lib/indexers/movies/MovieIndexer.d.ts +0 -11
  136. package/dist/lib/indexers/movies/MovieIndexer.js +0 -64
  137. package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.d.ts +0 -4
  138. package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.js +0 -52
  139. package/dist/lib/indexers/series/EpisodeIdentifier.d.ts +0 -12
  140. package/dist/lib/indexers/series/EpisodeIdentifier.js +0 -25
  141. package/dist/lib/indexers/series/SeriesCollector.d.ts +0 -25
  142. package/dist/lib/indexers/series/SeriesCollector.js +0 -69
  143. package/dist/lib/indexers/series/SeriesIdentifer.d.ts +0 -11
  144. package/dist/lib/indexers/series/SeriesIdentifer.js +0 -24
  145. package/dist/lib/indexers/series/SeriesIndexer.d.ts +0 -11
  146. package/dist/lib/indexers/series/SeriesIndexer.js +0 -140
  147. package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.d.ts +0 -4
  148. package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.js +0 -48
  149. package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.d.ts +0 -6
  150. package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.js +0 -90
  151. package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.d.ts +0 -7
  152. package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.js +0 -87
  153. package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.d.ts +0 -10
  154. package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.js +0 -82
  155. package/dist/lib/oblecto/index.d.ts +0 -68
  156. package/dist/lib/oblecto/index.js +0 -125
  157. package/dist/lib/queue/index.d.ts +0 -32
  158. package/dist/lib/queue/index.js +0 -96
  159. package/dist/lib/realtime/RealtimeClient.d.ts +0 -27
  160. package/dist/lib/realtime/RealtimeClient.js +0 -137
  161. package/dist/lib/realtime/RealtimeController.d.ts +0 -12
  162. package/dist/lib/realtime/RealtimeController.js +0 -50
  163. package/dist/lib/redisQueue/index.js +0 -109
  164. package/dist/lib/sets/tv/MovieSetCollector.d.ts +0 -6
  165. package/dist/lib/sets/tv/MovieSetCollector.js +0 -49
  166. package/dist/lib/streamSessions/StreamSession.d.ts +0 -41
  167. package/dist/lib/streamSessions/StreamSession.js +0 -146
  168. package/dist/lib/streamSessions/StreamSessionController.d.ts +0 -19
  169. package/dist/lib/streamSessions/StreamSessionController.js +0 -78
  170. package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.d.ts +0 -5
  171. package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.js +0 -116
  172. package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.d.ts +0 -5
  173. package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.js +0 -41
  174. package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.d.ts +0 -15
  175. package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.js +0 -148
  176. package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.d.ts +0 -9
  177. package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.js +0 -72
  178. package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.d.ts +0 -6
  179. package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.js +0 -96
  180. package/dist/lib/updaters/files/FileUpdateCollector.d.ts +0 -20
  181. package/dist/lib/updaters/files/FileUpdateCollector.js +0 -44
  182. package/dist/lib/updaters/files/FileUpdater.d.ts +0 -49
  183. package/dist/lib/updaters/files/FileUpdater.js +0 -194
  184. package/dist/lib/updaters/movies/MovieUpdateCollector.d.ts +0 -20
  185. package/dist/lib/updaters/movies/MovieUpdateCollector.js +0 -48
  186. package/dist/lib/updaters/movies/MovieUpdater.d.ts +0 -12
  187. package/dist/lib/updaters/movies/MovieUpdater.js +0 -49
  188. package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.d.ts +0 -20
  189. package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.js +0 -45
  190. package/dist/lib/updaters/series/SeriesUpdateCollector.d.ts +0 -37
  191. package/dist/lib/updaters/series/SeriesUpdateCollector.js +0 -79
  192. package/dist/lib/updaters/series/SeriesUpdater.d.ts +0 -22
  193. package/dist/lib/updaters/series/SeriesUpdater.js +0 -84
  194. package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.d.ts +0 -11
  195. package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.js +0 -70
  196. package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.d.ts +0 -21
  197. package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.js +0 -68
  198. package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.d.ts +0 -5
  199. package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.js +0 -38
  200. package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.d.ts +0 -21
  201. package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.js +0 -50
  202. package/dist/models/episode.d.ts +0 -76
  203. package/dist/models/episode.js +0 -62
  204. package/dist/models/episodeFiles.d.ts +0 -5
  205. package/dist/models/episodeFiles.js +0 -14
  206. package/dist/models/file.d.ts +0 -26
  207. package/dist/models/file.js +0 -32
  208. package/dist/models/movie.d.ts +0 -30
  209. package/dist/models/movie.js +0 -36
  210. package/dist/models/movieFiles.d.ts +0 -5
  211. package/dist/models/movieFiles.js +0 -14
  212. package/dist/models/movieSet.d.ts +0 -20
  213. package/dist/models/movieSet.js +0 -26
  214. package/dist/models/series.d.ts +0 -59
  215. package/dist/models/series.js +0 -50
  216. package/dist/models/seriesSet.d.ts +0 -9
  217. package/dist/models/seriesSet.js +0 -17
  218. package/dist/models/stream.d.ts +0 -73
  219. package/dist/models/stream.js +0 -81
  220. package/dist/models/trackEpisode.d.ts +0 -9
  221. package/dist/models/trackEpisode.js +0 -17
  222. package/dist/models/trackMovie.d.ts +0 -9
  223. package/dist/models/trackMovie.js +0 -17
  224. package/dist/models/user.d.ts +0 -19
  225. package/dist/models/user.js +0 -26
  226. package/dist/submodules/REST/index.d.ts +0 -9
  227. package/dist/submodules/REST/index.js +0 -59
  228. package/dist/submodules/REST/middleware/auth.d.ts +0 -5
  229. package/dist/submodules/REST/middleware/auth.js +0 -28
  230. package/dist/submodules/REST/routes/auth.d.ts +0 -2
  231. package/dist/submodules/REST/routes/auth.js +0 -48
  232. package/dist/submodules/REST/routes/clients.d.ts +0 -2
  233. package/dist/submodules/REST/routes/clients.js +0 -54
  234. package/dist/submodules/REST/routes/episodes.d.ts +0 -2
  235. package/dist/submodules/REST/routes/episodes.js +0 -275
  236. package/dist/submodules/REST/routes/files.d.ts +0 -2
  237. package/dist/submodules/REST/routes/files.js +0 -53
  238. package/dist/submodules/REST/routes/index.d.ts +0 -2
  239. package/dist/submodules/REST/routes/index.js +0 -49
  240. package/dist/submodules/REST/routes/movies.d.ts +0 -2
  241. package/dist/submodules/REST/routes/movies.js +0 -303
  242. package/dist/submodules/REST/routes/sets.d.ts +0 -2
  243. package/dist/submodules/REST/routes/sets.js +0 -35
  244. package/dist/submodules/REST/routes/settings/index.d.ts +0 -2
  245. package/dist/submodules/REST/routes/settings/index.js +0 -22
  246. package/dist/submodules/REST/routes/settings/maintenance.d.ts +0 -2
  247. package/dist/submodules/REST/routes/settings/maintenance.js +0 -87
  248. package/dist/submodules/REST/routes/settings/misc.d.ts +0 -2
  249. package/dist/submodules/REST/routes/settings/misc.js +0 -38
  250. package/dist/submodules/REST/routes/settings/sources.d.ts +0 -2
  251. package/dist/submodules/REST/routes/settings/sources.js +0 -61
  252. package/dist/submodules/REST/routes/streaming.js +0 -91
  253. package/dist/submodules/REST/routes/tvshows.d.ts +0 -2
  254. package/dist/submodules/REST/routes/tvshows.js +0 -137
  255. package/dist/submodules/REST/routes/users.d.ts +0 -2
  256. package/dist/submodules/REST/routes/users.js +0 -107
  257. package/dist/submodules/REST/routes/web.d.ts +0 -2
  258. package/dist/submodules/REST/routes/web.js +0 -43
  259. package/dist/submodules/axiosTimeout.d.ts +0 -1
  260. package/dist/submodules/axiosTimeout.js +0 -31
  261. package/dist/submodules/database.d.ts +0 -1
  262. package/dist/submodules/database.js +0 -180
  263. package/dist/submodules/ffmpeg.d.ts +0 -1
  264. package/dist/submodules/ffmpeg.js +0 -23
  265. package/dist/submodules/ffprobe.d.ts +0 -1
  266. package/dist/submodules/ffprobe.js +0 -22
  267. package/dist/submodules/guessit.d.ts +0 -5
  268. package/dist/submodules/guessit.js +0 -48
  269. package/dist/submodules/logger/index.d.ts +0 -7
  270. package/dist/submodules/logger/index.js +0 -43
  271. package/dist/submodules/promiseTimeout.d.ts +0 -1
  272. package/dist/submodules/promiseTimeout.js +0 -28
  273. package/dist/submodules/zeroconf.js +0 -19
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _StreamSession = _interopRequireDefault(require("../StreamSession"));
9
-
10
- var _ffmpeg = _interopRequireDefault(require("../../../submodules/ffmpeg"));
11
-
12
- var _logger = _interopRequireDefault(require("../../../submodules/logger"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- class RecodeStreamSession extends _StreamSession.default {
17
- constructor(file, options, oblecto) {
18
- super(file, options, oblecto); // LanguageCode is the ISO 639-2 code for the desired language
19
-
20
- this.targetLanguageCode = oblecto.config.streaming.defaultTargetLanguageCode;
21
-
22
- if (this.videoCodec === this.file.videoCodec || this.file.videoCodec in this.targetVideoCodecs) {
23
- this.videoCodec = 'copy';
24
- }
25
-
26
- if (this.audioCodec === this.file.audioCodec || this.file.audioCodec in this.targetAudioCodecs) {
27
- this.audioCodec = 'copy';
28
- }
29
- }
30
-
31
- async addDestination(destination) {
32
- await super.addDestination(destination);
33
- }
34
-
35
- async startStream() {
36
- var _audioStreams$, _videoStreams$;
37
-
38
- await super.startStream();
39
- if (this.started) return;
40
- this.started = true;
41
- let inputOptions = ['-noaccurate_seek'];
42
- let outputOptions = ['-movflags empty_moov', '-copyts', '-preset ultrafast', '-tune zerolatency'];
43
-
44
- if (this.oblecto.config.transcoding.hardwareAcceleration) {
45
- inputOptions.push('-hwaccel ' + this.oblecto.config.transcoding.hardwareAccelerator); // The Nvidia NVENC encoder doesn't support 10 bit encoding, so we need to force 8 bit
46
- // if the cuda accelerator has been selected
47
- // TODO: Fix washed out colors for some 10 bit video streams when using the NVENC encoder
48
- // Depending on the input color range, this may result in washed out colors since the
49
- // color range is kept but considered to be a full range color space even if the input
50
- // range is limited.
51
-
52
- if (this.oblecto.config.transcoding.hardwareAccelerator === 'cuda') {
53
- outputOptions.push('-pix_fmt yuv420p');
54
- }
55
- }
56
-
57
- let streams = await this.file.getStreams();
58
- let audioStreams = [];
59
- let videoStreams = [];
60
-
61
- for (let stream of streams) {
62
- if (stream.codec_type === 'video') videoStreams.push(stream);
63
- if (stream.codec_type === 'audio') audioStreams.push(stream);
64
- } // Define default streams. We don't want to end up with a video without any audio or video streams
65
-
66
-
67
- let selectedAudioStream = audioStreams === null || audioStreams === void 0 ? void 0 : (_audioStreams$ = audioStreams[0]) === null || _audioStreams$ === void 0 ? void 0 : _audioStreams$.index;
68
- let selectedVideoStream = videoStreams === null || videoStreams === void 0 ? void 0 : (_videoStreams$ = videoStreams[0]) === null || _videoStreams$ === void 0 ? void 0 : _videoStreams$.index; // Find a video stream with the desired language code
69
- // TODO: Some languages may be identified by multiple language codes
70
- // EG: French sometimes uses both "Fra" and "Fre"
71
-
72
- for (let stream of audioStreams) {
73
- if (stream.tags_language === this.targetLanguageCode && stream.index !== undefined) {
74
- selectedAudioStream = stream.index;
75
- }
76
- }
77
-
78
- if (!(selectedVideoStream === undefined || selectedAudioStream === undefined)) {
79
- outputOptions.push(`-map 0:${selectedAudioStream}`);
80
- outputOptions.push(`-map 0:${selectedVideoStream}`);
81
- }
82
-
83
- this.process = (0, _ffmpeg.default)(this.file.path).format(this.format).videoCodec(this.getFfmpegVideoCodec()).audioCodec(this.audioCodec).seekInput(this.offset).inputOptions(inputOptions).outputOptions(outputOptions).on('start', cmd => {
84
- _logger.default.log('INFO', this.sessionId, cmd);
85
- });
86
- this.process.on('error', err => {
87
- if (err.message !== 'ffmpeg was killed with signal SIGKILL') _logger.default.log('ERROR', this.sessionId, err);
88
- });
89
- this.process.pipe(this.outputStream, {
90
- end: true
91
- });
92
- }
93
-
94
- }
95
-
96
- exports.default = RecodeStreamSession;
@@ -1,20 +0,0 @@
1
- export default class FileUpdateCollector {
2
- /**
3
- *
4
- * @param {Oblecto} oblecto
5
- */
6
- constructor(oblecto: any);
7
- oblecto: any;
8
- /**
9
- *
10
- * @param {File} file - File entity to update
11
- * @returns {Promise<void>}
12
- */
13
- collectFile(file: File): Promise<void>;
14
- /**
15
- *
16
- * @returns {Promise<void>}
17
- */
18
- collectAllFiles(): Promise<void>;
19
- }
20
- import { File } from "../../../models/file";
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _file = require("../../../models/file");
9
-
10
- class FileUpdateCollector {
11
- /**
12
- *
13
- * @param {Oblecto} oblecto
14
- */
15
- constructor(oblecto) {
16
- this.oblecto = oblecto;
17
- }
18
- /**
19
- *
20
- * @param {File} file - File entity to update
21
- * @returns {Promise<void>}
22
- */
23
-
24
-
25
- async collectFile(file) {
26
- this.oblecto.queue.queueJob('updateFile', file);
27
- }
28
- /**
29
- *
30
- * @returns {Promise<void>}
31
- */
32
-
33
-
34
- async collectAllFiles() {
35
- let files = await _file.File.findAll();
36
-
37
- for (let file of files) {
38
- this.collectFile(file);
39
- }
40
- }
41
-
42
- }
43
-
44
- exports.default = FileUpdateCollector;
@@ -1,49 +0,0 @@
1
- export default class FileUpdater {
2
- static getPrimaryVideoStream(metadata: any): Promise<{
3
- duration: number;
4
- }>;
5
- static getPrimaryAudioStream(metadata: any): Promise<{
6
- duration: number;
7
- }>;
8
- /**
9
- * @param {Oblecto} oblecto
10
- */
11
- constructor(oblecto: any);
12
- oblecto: any;
13
- /**
14
- *
15
- * @param {File} file
16
- * @returns {Promise<void>}
17
- */
18
- updateFile(file: any): Promise<void>;
19
- /**
20
- *
21
- * @param {File} file
22
- * @returns {Promise<string>}
23
- */
24
- getHashFromFile(file: any): Promise<string>;
25
- /**
26
- *
27
- * @param {File} file
28
- * @returns {Promise<void>}
29
- */
30
- updateFileHash(file: any): Promise<void>;
31
- /**
32
- *
33
- * @param {File} file
34
- * @returns {Promise<void>}
35
- */
36
- updateFileSize(file: any): Promise<void>;
37
- /**
38
- *
39
- * @param {File} file
40
- * @returns {Promise<void>}
41
- */
42
- updateFileExtension(file: any): Promise<void>;
43
- /**
44
- *
45
- * @param {File} file
46
- * @returns {Promise<void>}
47
- */
48
- updateFileFFProbe(file: any): Promise<void>;
49
- }
@@ -1,194 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _crypto = _interopRequireDefault(require("crypto"));
9
-
10
- var _fs = require("fs");
11
-
12
- var _ffprobe = _interopRequireDefault(require("../../../submodules/ffprobe"));
13
-
14
- var _VideoAnalysisError = _interopRequireDefault(require("../../errors/VideoAnalysisError"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- class FileUpdater {
19
- /**
20
- * @param {Oblecto} oblecto
21
- */
22
- constructor(oblecto) {
23
- this.oblecto = oblecto;
24
- this.oblecto.queue.registerJob('updateFile', async file => {
25
- await this.updateFile(file);
26
- });
27
- this.oblecto.queue.registerJob('updateFileHash', async file => {
28
- await this.updateFileHash(file);
29
- });
30
- this.oblecto.queue.registerJob('updateFileSize', async file => {
31
- await this.updateFileSize(file);
32
- });
33
- this.oblecto.queue.registerJob('updateFileExtension', async file => {
34
- await this.updateFileExtension(file);
35
- });
36
- this.oblecto.queue.registerJob('updateFileFFProbe', async file => {
37
- await this.updateFileFFProbe(file);
38
- });
39
- }
40
-
41
- static async getPrimaryVideoStream(metadata) {
42
- let streams = metadata.streams;
43
- let primaryStream = {
44
- duration: 0
45
- };
46
-
47
- for (const stream of streams) {
48
- if (stream.duration || 1 >= primaryStream.duration) {
49
- if (stream['codec_type'] !== 'video') continue;
50
- primaryStream = stream;
51
- }
52
- }
53
-
54
- return primaryStream;
55
- }
56
-
57
- static async getPrimaryAudioStream(metadata) {
58
- let streams = metadata.streams;
59
- let primaryStream = {
60
- duration: 0
61
- };
62
-
63
- for (const stream of streams) {
64
- if (stream.duration || 1 >= primaryStream.duration) {
65
- if (stream['codec_type'] !== 'audio') continue;
66
- primaryStream = stream;
67
- }
68
- }
69
-
70
- return primaryStream;
71
- }
72
- /**
73
- *
74
- * @param {File} file
75
- * @returns {Promise<void>}
76
- */
77
-
78
-
79
- async updateFile(file) {
80
- if (this.oblecto.config.files.doHash && !file.hash) {
81
- this.oblecto.queue.lowPriorityJob('updateFileHash', file);
82
- }
83
-
84
- if (!file.size || file.size === 0) {
85
- this.oblecto.queue.queueJob('updateFileSize', file);
86
- }
87
-
88
- if (file.extension.includes('.')) {
89
- this.oblecto.queue.queueJob('updateFileExtension', file);
90
- }
91
-
92
- if (!file.duration || file.duration === 0) {
93
- this.oblecto.queue.queueJob('updateFileFFProbe', file);
94
- this.oblecto.queue.queueJob('indexFileStreams', file);
95
- }
96
- }
97
- /**
98
- *
99
- * @param {File} file
100
- * @returns {Promise<string>}
101
- */
102
-
103
-
104
- getHashFromFile(file) {
105
- return new Promise((resolve, reject) => {
106
- let fd = (0, _fs.createReadStream)(file.path);
107
-
108
- let hash = _crypto.default.createHash('sha1');
109
-
110
- hash.setEncoding('hex');
111
- fd.on('end', function () {
112
- hash.end();
113
- resolve(hash.read());
114
- });
115
- fd.on('error', () => {
116
- reject(new _VideoAnalysisError.default(`Failed to calculate hash for ${file.path}`));
117
- });
118
- fd.pipe(hash);
119
- });
120
- }
121
- /**
122
- *
123
- * @param {File} file
124
- * @returns {Promise<void>}
125
- */
126
-
127
-
128
- async updateFileHash(file) {
129
- let hash = await this.getHashFromFile(file);
130
- await file.update({
131
- hash
132
- });
133
- }
134
- /**
135
- *
136
- * @param {File} file
137
- * @returns {Promise<void>}
138
- */
139
-
140
-
141
- async updateFileSize(file) {
142
- let size = (await _fs.promises.stat(file.path)).size;
143
- await file.update({
144
- size
145
- });
146
- }
147
- /**
148
- *
149
- * @param {File} file
150
- * @returns {Promise<void>}
151
- */
152
-
153
-
154
- async updateFileExtension(file) {
155
- let extension = file.extension.replace('.', '');
156
- await file.update({
157
- extension
158
- });
159
- }
160
- /**
161
- *
162
- * @param {File} file
163
- * @returns {Promise<void>}
164
- */
165
-
166
-
167
- async updateFileFFProbe(file) {
168
- let metadata;
169
-
170
- try {
171
- metadata = await (0, _ffprobe.default)(file.path);
172
- } catch (e) {
173
- throw new _VideoAnalysisError.default(`Failed to ffprobe ${file.path}`);
174
- }
175
-
176
- let primaryVideoStream = await FileUpdater.getPrimaryVideoStream(metadata);
177
- let primaryAudioStream = await FileUpdater.getPrimaryAudioStream(metadata);
178
- let duration = metadata.format.duration;
179
-
180
- if (isNaN(duration)) {
181
- throw new _VideoAnalysisError.default(`Could not extract duration from ${file.path}`);
182
- }
183
-
184
- await file.update({
185
- duration,
186
- container: metadata.format['format_name'],
187
- videoCodec: primaryVideoStream['codec_name'],
188
- audioCodec: primaryAudioStream['codec_name']
189
- });
190
- }
191
-
192
- }
193
-
194
- exports.default = FileUpdater;
@@ -1,20 +0,0 @@
1
- export default class MovieUpdateCollector {
2
- /**
3
- *
4
- * @param {Oblecto} oblecto
5
- */
6
- constructor(oblecto: any);
7
- oblecto: any;
8
- /**
9
- *
10
- * @param {Movie} movie - Which movie entity to update;
11
- * @returns {Promise<void>}
12
- */
13
- collectMovie(movie: Movie): Promise<void>;
14
- /**
15
- *
16
- * @returns {Promise<void>}
17
- */
18
- collectAllMovies(): Promise<void>;
19
- }
20
- import { Movie } from "../../../models/movie";
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _database = _interopRequireDefault(require("../../../submodules/database"));
9
-
10
- var _movie = require("../../../models/movie");
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- class MovieUpdateCollector {
15
- /**
16
- *
17
- * @param {Oblecto} oblecto
18
- */
19
- constructor(oblecto) {
20
- this.oblecto = oblecto;
21
- }
22
- /**
23
- *
24
- * @param {Movie} movie - Which movie entity to update;
25
- * @returns {Promise<void>}
26
- */
27
-
28
-
29
- async collectMovie(movie) {
30
- this.oblecto.queue.queueJob('updateMovie', movie);
31
- }
32
- /**
33
- *
34
- * @returns {Promise<void>}
35
- */
36
-
37
-
38
- async collectAllMovies() {
39
- let movies = await _movie.Movie.findAll();
40
-
41
- for (let movie of movies) {
42
- this.collectMovie(movie);
43
- }
44
- }
45
-
46
- }
47
-
48
- exports.default = MovieUpdateCollector;
@@ -1,12 +0,0 @@
1
- export default class MovieUpdater {
2
- constructor(oblecto: any);
3
- oblecto: any;
4
- aggregateMovieUpdateRetriever: AggregateUpdateRetriever;
5
- /**
6
- *
7
- * @param {Movie} movie
8
- * @returns {Promise<void>}
9
- */
10
- updateMovie(movie: any): Promise<void>;
11
- }
12
- import AggregateUpdateRetriever from "../../common/AggregateUpdateRetriever";
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _AggregateUpdateRetriever = _interopRequireDefault(require("../../common/AggregateUpdateRetriever"));
9
-
10
- var _TmdbMovieRetriever = _interopRequireDefault(require("./informationRetrievers/TmdbMovieRetriever"));
11
-
12
- var _logger = _interopRequireDefault(require("../../../submodules/logger"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- class MovieUpdater {
17
- constructor(oblecto) {
18
- this.oblecto = oblecto;
19
- this.aggregateMovieUpdateRetriever = new _AggregateUpdateRetriever.default();
20
- const movieUpdateRetrievers = {
21
- 'tmdb': _TmdbMovieRetriever.default
22
- };
23
-
24
- for (let updater of this.oblecto.config.movies.movieUpdaters) {
25
- _logger.default.log('DEBUG', `Loading ${updater} movie updater`);
26
-
27
- this.aggregateMovieUpdateRetriever.loadRetriever(new movieUpdateRetrievers[updater](this.oblecto));
28
- } // Register task availability to Oblecto queue
29
-
30
-
31
- this.oblecto.queue.registerJob('updateMovie', async job => {
32
- await this.updateMovie(job);
33
- });
34
- }
35
- /**
36
- *
37
- * @param {Movie} movie
38
- * @returns {Promise<void>}
39
- */
40
-
41
-
42
- async updateMovie(movie) {
43
- let data = await this.aggregateMovieUpdateRetriever.retrieveInformation(movie);
44
- await movie.update(data);
45
- }
46
-
47
- }
48
-
49
- exports.default = MovieUpdater;
@@ -1,20 +0,0 @@
1
- export default class TmdbMovieRetriever {
2
- /**
3
- * @param {Oblecto} oblecto
4
- */
5
- constructor(oblecto: any);
6
- oblecto: any;
7
- retrieveInformation(movie: any): Promise<{
8
- imdbid: any;
9
- movieName: any;
10
- originalName: any;
11
- tagline: any;
12
- originalLanguage: any;
13
- budget: any;
14
- revenue: any;
15
- runtime: any;
16
- overview: any;
17
- popularity: any;
18
- releaseDate: any;
19
- }>;
20
- }
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _promiseTimeout = _interopRequireDefault(require("../../../../submodules/promiseTimeout"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- class TmdbMovieRetriever {
13
- /**
14
- * @param {Oblecto} oblecto
15
- */
16
- constructor(oblecto) {
17
- this.oblecto = oblecto;
18
- }
19
-
20
- async retrieveInformation(movie) {
21
- let movieInfo = await (0, _promiseTimeout.default)(this.oblecto.tmdb.movieInfo({
22
- id: movie.tmdbid
23
- }, {
24
- timeout: 5000
25
- }));
26
- let data = {
27
- imdbid: movieInfo.imdb_id,
28
- movieName: movieInfo.title,
29
- originalName: movieInfo.original_title,
30
- tagline: movieInfo.tagline,
31
- genres: JSON.stringify(movieInfo.genres.map(i => i.name)),
32
- originalLanguage: movieInfo.original_language,
33
- budget: movieInfo.budget,
34
- revenue: movieInfo.revenue,
35
- runtime: movieInfo.runtime,
36
- overview: movieInfo.overview,
37
- popularity: movieInfo.popularity,
38
- releaseDate: movieInfo.release_date
39
- };
40
- return data;
41
- }
42
-
43
- }
44
-
45
- exports.default = TmdbMovieRetriever;
@@ -1,37 +0,0 @@
1
- export default class SeriesUpdateCollector {
2
- /**
3
- *
4
- * @param {Oblecto} oblecto
5
- */
6
- constructor(oblecto: any);
7
- oblecto: any;
8
- /**
9
- *
10
- * @param {Episode} episode - Episode for which to download the episode banner for
11
- * @returns {Promise<void>}
12
- */
13
- collectEpisode(episode: Episode): Promise<void>;
14
- /**
15
- *
16
- * @param {Series} series - Series for which to download the series poster for
17
- * @returns {Promise<void>}
18
- */
19
- collectSeries(series: Series): Promise<void>;
20
- /**
21
- *
22
- * @returns {Promise<void>}
23
- */
24
- collectAllEpisodes(): Promise<void>;
25
- /**
26
- *
27
- * @returns {Promise<void>}
28
- */
29
- collectAllSeries(): Promise<void>;
30
- /**
31
- *
32
- * @returns {Promise<void>}
33
- */
34
- collectAll(): Promise<void>;
35
- }
36
- import { Episode } from "../../../models/episode";
37
- import { Series } from "../../../models/series";