oblecto 0.2.8 → 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 (167) 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 +68 -36
  8. package/res/AGENTS.md +8 -0
  9. package/res/config.json +34 -7
  10. package/Oblecto-Web/LICENSE +0 -674
  11. package/Oblecto-Web/README.md +0 -20
  12. package/Oblecto-Web/dist/web/static/css/app.921835f8c2878caee6d1085d9982fa86.css +0 -1
  13. package/Oblecto-Web/dist/web/static/css/app.921835f8c2878caee6d1085d9982fa86.css.map +0 -1
  14. package/Oblecto-Web/dist/web/static/js/app.758b833f6395444695b6.js +0 -6896
  15. package/Oblecto-Web/dist/web/static/js/app.758b833f6395444695b6.js.map +0 -1
  16. package/Oblecto-Web/dist/web/static/js/manifest.d327d604ee57c29a75d0.js +0 -154
  17. package/Oblecto-Web/dist/web/static/js/manifest.d327d604ee57c29a75d0.js.map +0 -1
  18. package/Oblecto-Web/dist/web/static/js/vendor.84f1e8002f100f63d6ef.js +0 -32455
  19. package/Oblecto-Web/dist/web/static/js/vendor.84f1e8002f100f63d6ef.js.map +0 -1
  20. package/Oblecto-Web/package.json +0 -118
  21. package/dist/bin/cliManager.js +0 -102
  22. package/dist/bin/scripts/adduser.js +0 -50
  23. package/dist/bin/scripts/changepassword.js +0 -48
  24. package/dist/bin/scripts/deluser.js +0 -34
  25. package/dist/bin/scripts/helpers/argumentError.js +0 -12
  26. package/dist/bin/scripts/helpers/generateAssetDirectories.js +0 -37
  27. package/dist/bin/scripts/init/assets.js +0 -24
  28. package/dist/bin/scripts/init/database.js +0 -21
  29. package/dist/bin/scripts/init/general.js +0 -54
  30. package/dist/bin/scripts/init/index.js +0 -26
  31. package/dist/bin/scripts/removepassword.js +0 -42
  32. package/dist/config.js +0 -45
  33. package/dist/core/graphical.js +0 -179
  34. package/dist/core/index.js +0 -24
  35. package/dist/lib/artwork/ArtworkScaler.js +0 -31
  36. package/dist/lib/artwork/ArtworkUtils.js +0 -35
  37. package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.js +0 -58
  38. package/dist/lib/artwork/movies/MovieArtworkCollector.js +0 -93
  39. package/dist/lib/artwork/movies/MovieArtworkDownloader.js +0 -65
  40. package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.js +0 -57
  41. package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.js +0 -47
  42. package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.js +0 -58
  43. package/dist/lib/artwork/series/SeriesArtworkCollector.js +0 -95
  44. package/dist/lib/artwork/series/SeriesArtworkDownloader.js +0 -62
  45. package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.js +0 -44
  46. package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.js +0 -64
  47. package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.js +0 -51
  48. package/dist/lib/cleaners/FileCleaner.js +0 -56
  49. package/dist/lib/cleaners/MovieCleaner.js +0 -42
  50. package/dist/lib/cleaners/SeriesCleaner.js +0 -70
  51. package/dist/lib/common/AggregateIdentifier.js +0 -53
  52. package/dist/lib/common/AggregateUpdateRetriever.js +0 -43
  53. package/dist/lib/downloader/index.js +0 -59
  54. package/dist/lib/errors/DebugExtendableError.js +0 -20
  55. package/dist/lib/errors/ExtendableError.js +0 -22
  56. package/dist/lib/errors/FileExistsError.js +0 -14
  57. package/dist/lib/errors/IdentificationError.js +0 -14
  58. package/dist/lib/errors/InfoExtendableError.js +0 -20
  59. package/dist/lib/errors/VideoAnalysisError.js +0 -14
  60. package/dist/lib/errors/VideoIdentificationError.js +0 -14
  61. package/dist/lib/errors/WarnExtendableError.js +0 -20
  62. package/dist/lib/federation/client/FederationClient.js +0 -127
  63. package/dist/lib/federation/client/FederationClientController.js +0 -45
  64. package/dist/lib/federation/client/FederationDataClient.js +0 -56
  65. package/dist/lib/federation/client/FederationMediaClient.js +0 -70
  66. package/dist/lib/federation/server/FederationController.js +0 -32
  67. package/dist/lib/federation/server/FederationDataServer.js +0 -22
  68. package/dist/lib/federation/server/FederationDataServerConnection.js +0 -96
  69. package/dist/lib/federation/server/FederationMediaServer.js +0 -22
  70. package/dist/lib/federation/server/FederationMediaServerConnection.js +0 -83
  71. package/dist/lib/federation/server/FederationServer.js +0 -40
  72. package/dist/lib/federation/server/FederationServerConnection.js +0 -97
  73. package/dist/lib/federationindexer/FederationEpisodeIndexer.js +0 -65
  74. package/dist/lib/federationindexer/FederationMovieIndexer.js +0 -48
  75. package/dist/lib/indexers/MediaIdentifier.js +0 -15
  76. package/dist/lib/indexers/files/FileIndexer.js +0 -103
  77. package/dist/lib/indexers/files/cleaner.js +0 -43
  78. package/dist/lib/indexers/movies/AggregateMovieIdentifier.js +0 -45
  79. package/dist/lib/indexers/movies/MovieCollector.js +0 -65
  80. package/dist/lib/indexers/movies/MovieIdentifier.js +0 -22
  81. package/dist/lib/indexers/movies/MovieIndexer.js +0 -47
  82. package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.js +0 -50
  83. package/dist/lib/indexers/series/AggregateEpisodeIdentifier.js +0 -46
  84. package/dist/lib/indexers/series/AggregateSeriesIdentifier.js +0 -46
  85. package/dist/lib/indexers/series/EpisodeIdentifier.js +0 -24
  86. package/dist/lib/indexers/series/SeriesCollector.js +0 -65
  87. package/dist/lib/indexers/series/SeriesIdentifer.js +0 -23
  88. package/dist/lib/indexers/series/SeriesIndexer.js +0 -134
  89. package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.js +0 -38
  90. package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.js +0 -66
  91. package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.js +0 -71
  92. package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.js +0 -82
  93. package/dist/lib/oblecto/index.js +0 -125
  94. package/dist/lib/queue/index.js +0 -82
  95. package/dist/lib/realtime/RealtimeClient.js +0 -137
  96. package/dist/lib/realtime/RealtimeController.js +0 -50
  97. package/dist/lib/sets/tv/MovieSetCollector.js +0 -49
  98. package/dist/lib/streamSessions/StreamSession.js +0 -148
  99. package/dist/lib/streamSessions/StreamSessionController.js +0 -78
  100. package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.js +0 -105
  101. package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.js +0 -47
  102. package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.js +0 -126
  103. package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.js +0 -72
  104. package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.js +0 -65
  105. package/dist/lib/updaters/files/FileUpdateCollector.js +0 -44
  106. package/dist/lib/updaters/files/FileUpdater.js +0 -194
  107. package/dist/lib/updaters/movies/AggregateMovieUpdateRetriever.js +0 -44
  108. package/dist/lib/updaters/movies/MovieUpdateCollector.js +0 -48
  109. package/dist/lib/updaters/movies/MovieUpdater.js +0 -38
  110. package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.js +0 -42
  111. package/dist/lib/updaters/series/AggregateEpisodeUpdateRetriever.js +0 -41
  112. package/dist/lib/updaters/series/AggregateSeriesUpdateRetriever.js +0 -44
  113. package/dist/lib/updaters/series/SeriesUpdateCollector.js +0 -79
  114. package/dist/lib/updaters/series/SeriesUpdater.js +0 -84
  115. package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.js +0 -66
  116. package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.js +0 -63
  117. package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.js +0 -38
  118. package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.js +0 -50
  119. package/dist/models/episode.js +0 -62
  120. package/dist/models/episodeFiles.js +0 -14
  121. package/dist/models/file.js +0 -32
  122. package/dist/models/movie.js +0 -35
  123. package/dist/models/movieFiles.js +0 -14
  124. package/dist/models/movieSet.js +0 -26
  125. package/dist/models/series.js +0 -55
  126. package/dist/models/seriesSet.js +0 -17
  127. package/dist/models/stream.js +0 -81
  128. package/dist/models/trackEpisode.js +0 -17
  129. package/dist/models/trackEpisodes.js +0 -8
  130. package/dist/models/trackMovie.js +0 -17
  131. package/dist/models/trackMovies.js +0 -8
  132. package/dist/models/tvshow.js +0 -46
  133. package/dist/models/tvshowSet.js +0 -8
  134. package/dist/models/user.js +0 -26
  135. package/dist/submodules/REST/index.js +0 -59
  136. package/dist/submodules/REST/middleware/auth.js +0 -28
  137. package/dist/submodules/REST/routes/auth.js +0 -48
  138. package/dist/submodules/REST/routes/clients.js +0 -54
  139. package/dist/submodules/REST/routes/episodes.js +0 -275
  140. package/dist/submodules/REST/routes/files.js +0 -92
  141. package/dist/submodules/REST/routes/index.js +0 -48
  142. package/dist/submodules/REST/routes/movies.js +0 -305
  143. package/dist/submodules/REST/routes/sets.js +0 -35
  144. package/dist/submodules/REST/routes/settings/index.js +0 -22
  145. package/dist/submodules/REST/routes/settings/maintenance.js +0 -87
  146. package/dist/submodules/REST/routes/settings/misc.js +0 -38
  147. package/dist/submodules/REST/routes/settings/sources.js +0 -61
  148. package/dist/submodules/REST/routes/tvshows.js +0 -140
  149. package/dist/submodules/REST/routes/users.js +0 -107
  150. package/dist/submodules/REST/routes/web.js +0 -43
  151. package/dist/submodules/axiosTimeout.js +0 -30
  152. package/dist/submodules/database.js +0 -180
  153. package/dist/submodules/ffmpeg.js +0 -23
  154. package/dist/submodules/ffprobe.js +0 -22
  155. package/dist/submodules/guessit.js +0 -48
  156. package/dist/submodules/handlers/DirectStreamer.js +0 -68
  157. package/dist/submodules/handlers/FFMPEGHandlers/DvdStreamer.js +0 -52
  158. package/dist/submodules/handlers/FFMPEGHandlers/RemuxStreamer.js +0 -33
  159. package/dist/submodules/handlers/FFMPEGHandlers/TranscodeStreamer.js +0 -33
  160. package/dist/submodules/handlers/FFMPEGStreamer.js +0 -56
  161. package/dist/submodules/handlers/FederationStreamer.js +0 -23
  162. package/dist/submodules/handlers/HLSSessionHandler.js +0 -141
  163. package/dist/submodules/logger/index.js +0 -43
  164. package/dist/submodules/promiseTimeout.js +0 -28
  165. package/dist/submodules/zeroconf.js +0 -19
  166. package/dist/transcoders/dvd.js +0 -26
  167. package/dist/transcoders/index.js +0 -42
@@ -1,179 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _neoBlessed = _interopRequireDefault(require("neo-blessed"));
9
-
10
- var _oblecto = _interopRequireDefault(require("../lib/oblecto"));
11
-
12
- var _config = _interopRequireDefault(require("../config"));
13
-
14
- var _logger = _interopRequireDefault(require("../submodules/logger"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- var _default = {
19
- oblecto: null,
20
- screen: _neoBlessed.default.screen({
21
- smartCSR: true
22
- }),
23
-
24
- initScreen() {
25
- // Create a screen object.
26
- this.screen.title = 'my window title'; // Create a box perfectly centered horizontally and vertically.
27
-
28
- this.streamerSessionsBox = _neoBlessed.default.list({
29
- top: 0,
30
- left: 0,
31
- width: '50%',
32
- height: '50%',
33
- content: '',
34
- label: 'Active Streaming Sessions: 0',
35
- tags: true,
36
- border: {
37
- type: 'line'
38
- }
39
- });
40
- this.queueBox = _neoBlessed.default.list({
41
- top: '50%',
42
- left: 0,
43
- width: '50%',
44
- height: '50%',
45
- content: '',
46
- label: 'Queue: 0',
47
- tags: true,
48
- border: {
49
- type: 'line'
50
- }
51
- });
52
- this.logBox = _neoBlessed.default.list({
53
- top: 0,
54
- left: '50%',
55
- width: '50%',
56
- height: '50%',
57
- content: '',
58
- label: 'Log',
59
- tags: true,
60
- border: {
61
- type: 'line'
62
- }
63
- });
64
- this.sessionBox = _neoBlessed.default.list({
65
- top: '50%',
66
- left: '50%',
67
- width: '50%',
68
- height: '50%',
69
- content: '',
70
- label: 'Web Socket Sessions',
71
- tags: true,
72
- border: {
73
- type: 'line'
74
- }
75
- }); // Append our box to the screen.
76
-
77
- this.screen.append(this.streamerSessionsBox);
78
- this.screen.append(this.queueBox);
79
- this.screen.append(this.logBox);
80
- this.screen.append(this.sessionBox);
81
- this.screen.render();
82
- },
83
-
84
- start() {
85
- this.initScreen();
86
- _logger.default.silent = true;
87
-
88
- _logger.default.on('log', log => {
89
- if (log instanceof Error) {
90
- this.logBox.addItem(`[${log.level}] ${log.message}`);
91
- } else {
92
- this.logBox.addItem(`[${log.level}] ${log.messages.join(' ')}`);
93
- }
94
-
95
- this.logBox.down(1);
96
- this.screen.render();
97
- });
98
-
99
- this.oblecto = new _oblecto.default(_config.default);
100
- this.updater = setInterval(() => {
101
- this.renderStreamerSessions();
102
- this.renderQueue();
103
- this.renderSessions();
104
- this.screen.render();
105
- }, 1000);
106
- },
107
-
108
- close() {
109
- this.oblecto.close();
110
- clearInterval(this.updater);
111
- this.screen.destroy();
112
- },
113
-
114
- renderStreamerSessions() {
115
- this.streamerSessionsBox.clearItems();
116
- this.streamerSessionsBox.setLabel('Active Streaming Sessions: ' + Object.keys(this.oblecto.streamSessionController.sessions).length);
117
-
118
- for (let sessionId of Object.keys(this.oblecto.streamSessionController.sessions)) {
119
- this.streamerSessionsBox.addItem(this.oblecto.streamSessionController.sessions[sessionId].constructor.name + ':');
120
- this.streamerSessionsBox.addItem(sessionId);
121
- this.streamerSessionsBox.addItem(this.oblecto.streamSessionController.sessions[sessionId].file.path);
122
- this.streamerSessionsBox.addItem('VideoCodec: ' + this.oblecto.streamSessionController.sessions[sessionId].videoCodec + ', AudioCodec: ' + this.oblecto.streamSessionController.sessions[sessionId].audioCodec + ', Offset:' + this.oblecto.streamSessionController.sessions[sessionId].offset);
123
- this.streamerSessionsBox.addItem(' ');
124
- }
125
- },
126
-
127
- renderQueue() {
128
- this.queueBox.clearItems();
129
- this.queueBox.setLabel('Queue: ' + this.oblecto.queue.queue._tasks.length);
130
-
131
- for (let i of this.oblecto.queue.queue._tasks) {
132
- if (i > 100) break;
133
-
134
- switch (i.id) {
135
- case 'indexEpisode':
136
- this.queueBox.addItem('Index Episode: ' + i.attr.path);
137
- break;
138
-
139
- case 'indexMovie':
140
- this.queueBox.addItem('Index Episode: ' + i.attr.path);
141
- break;
142
-
143
- case 'updateEpisode':
144
- this.queueBox.addItem('Update Episode: S' + i.attr.airedSeason + 'E' + i.attr.airedEpisodeNumber + ' ' + i.attr.episodeName);
145
- break;
146
-
147
- case 'downloadEpisodeBanner':
148
- this.queueBox.addItem('Episode Banner: S' + i.attr.airedSeason + 'E' + i.attr.airedEpisodeNumber + ' ' + i.attr.episodeName);
149
- break;
150
-
151
- case 'updateMovie':
152
- this.queueBox.addItem('Update Movie: ' + i.attr.movieName);
153
- break;
154
-
155
- case 'updateSeries':
156
- this.queueBox.addItem('Update Movie: ' + i.attr.seriesName);
157
- break;
158
-
159
- default:
160
- this.queueBox.addItem(i.id + ' - ' + JSON.stringify(i.attr));
161
- }
162
- }
163
- },
164
-
165
- renderSessions() {
166
- this.sessionBox.clearItems();
167
- this.sessionBox.setLabel('Web Socket sessions: ' + Object.keys(this.oblecto.realTimeController.clients).length);
168
-
169
- for (let sessionId of Object.keys(this.oblecto.realTimeController.clients)) {
170
- let client = this.oblecto.realTimeController.clients[sessionId];
171
- this.sessionBox.addItem('Session Id: ' + sessionId);
172
- if (client.user === null) this.sessionBox.addItem('Session is not authenticated');else this.sessionBox.addItem('User:' + JSON.stringify(client.user));
173
- this.sessionBox.addItem('Details:' + JSON.stringify(client.storage));
174
- this.sessionBox.addItem(' ');
175
- }
176
- }
177
-
178
- };
179
- exports.default = _default;
@@ -1,24 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _oblecto = _interopRequireDefault(require("../lib/oblecto"));
9
-
10
- var _config = _interopRequireDefault(require("../config"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- var _default = {
15
- oblecto: new _oblecto.default(_config.default),
16
-
17
- start() {},
18
-
19
- close() {
20
- this.oblecto.close();
21
- }
22
-
23
- };
24
- exports.default = _default;
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _sharp = _interopRequireDefault(require("sharp"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- _sharp.default.cache(false);
13
-
14
- class ImageScaler {
15
- constructor(oblecto) {
16
- this.oblecto = oblecto;
17
- this.oblecto.queue.addJob('rescaleImage', async job => {
18
- await ImageScaler.rescaleImage(job.from, job.to, {
19
- width: job.width,
20
- height: job.height
21
- });
22
- });
23
- }
24
-
25
- static async rescaleImage(from, to, size) {
26
- await (0, _sharp.default)(from).resize(size.width, size.height).toFile(to);
27
- }
28
-
29
- }
30
-
31
- exports.default = ImageScaler;
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- class ArtworkUtils {
9
- constructor(oblecto) {
10
- this.oblecto = oblecto;
11
- }
12
-
13
- episodeBannerPath(episode, size) {
14
- if (size && this.oblecto.config.artwork.banner[size]) return `${this.oblecto.config.assets.episodeBannerLocation}/${size}/${episode.id}.jpg`;
15
- return `${this.oblecto.config.assets.episodeBannerLocation}/original/${episode.id}.jpg`;
16
- }
17
-
18
- seriesPosterPath(series, size) {
19
- if (size && this.oblecto.config.artwork.poster[size]) return `${this.oblecto.config.assets.showPosterLocation}/${size}/${series.id}.jpg`;
20
- return `${this.oblecto.config.assets.showPosterLocation}/original/${series.id}.jpg`;
21
- }
22
-
23
- moviePosterPath(movie, size) {
24
- if (size && this.oblecto.config.artwork.poster[size]) return `${this.oblecto.config.assets.moviePosterLocation}/${size}/${movie.id}.jpg`;
25
- return `${this.oblecto.config.assets.moviePosterLocation}/original/${movie.id}.jpg`;
26
- }
27
-
28
- movieFanartPath(movie, size) {
29
- if (size && this.oblecto.config.artwork.fanart[size]) return `${this.oblecto.config.assets.movieFanartLocation}/${size}/${movie.id}.jpg`;
30
- return `${this.oblecto.config.assets.movieFanartLocation}/original/${movie.id}.jpg`;
31
- }
32
-
33
- }
34
-
35
- exports.default = ArtworkUtils;
@@ -1,58 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _WarnExtendableError = _interopRequireDefault(require("../../errors/WarnExtendableError"));
9
-
10
- var _logger = _interopRequireDefault(require("../../../submodules/logger"));
11
-
12
- var _downloader = _interopRequireDefault(require("../../downloader"));
13
-
14
- var _DebugExtendableError = _interopRequireDefault(require("../../errors/DebugExtendableError"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- class AggregateMovieArtworkRetriever {
19
- constructor(oblecto) {
20
- this.oblecto = oblecto;
21
- this.retrievers = [];
22
- }
23
-
24
- loadRetriever(retriever) {
25
- this.retrievers.push(retriever);
26
- }
27
-
28
- async retrieveFanart(movie) {
29
- for (let retriever of this.retrievers) {
30
- try {
31
- let urls = await retriever.retrieveFanart(movie);
32
- if (urls.length === 0) throw new _DebugExtendableError.default('No URLs found');
33
- return _downloader.default.attemptDownload(urls, this.oblecto.artworkUtils.movieFanartPath(movie));
34
- } catch (e) {
35
- _logger.default.log(e);
36
- }
37
- }
38
-
39
- throw new _WarnExtendableError.default(`No fanart found for movie ${movie.movieName}`);
40
- }
41
-
42
- async retrievePoster(movie) {
43
- for (let retriever of this.retrievers) {
44
- try {
45
- let urls = await retriever.retrievePoster(movie);
46
- if (urls.length === 0) throw new _DebugExtendableError.default('No URLs found');
47
- return _downloader.default.attemptDownload(urls, this.oblecto.artworkUtils.moviePosterPath(movie));
48
- } catch (e) {
49
- _logger.default.log(e);
50
- }
51
- }
52
-
53
- throw new _WarnExtendableError.default(`No poster found for movie ${movie.movieName}`);
54
- }
55
-
56
- }
57
-
58
- exports.default = AggregateMovieArtworkRetriever;
@@ -1,93 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _fs = require("fs");
9
-
10
- var _movie = require("../../../models/movie");
11
-
12
- class MovieArtworkCollector {
13
- /**
14
- *
15
- * @param {Oblecto} oblecto
16
- */
17
- constructor(oblecto) {
18
- this.oblecto = oblecto;
19
- }
20
- /**
21
- *
22
- * @param movie - Movie for which to download fanart for
23
- * @returns {Promise<void>}
24
- */
25
-
26
-
27
- async collectArtworkMovieFanart(movie) {
28
- let stat;
29
-
30
- try {
31
- stat = await _fs.promises.stat(this.oblecto.artworkUtils.movieFanartPath(movie));
32
- } catch (e) {}
33
-
34
- if (stat) return;
35
- this.oblecto.queue.queueJob('downloadMovieFanart', movie);
36
- }
37
- /**
38
- *
39
- * @param movie - Movie for which to download poster for
40
- * @returns {Promise<void>}
41
- */
42
-
43
-
44
- async collectArtworkMoviePoster(movie) {
45
- let stat;
46
-
47
- try {
48
- stat = await _fs.promises.stat(this.oblecto.artworkUtils.moviePosterPath(movie));
49
- } catch (e) {}
50
-
51
- if (stat) return;
52
- this.oblecto.queue.queueJob('downloadMoviePoster', movie);
53
- }
54
- /**
55
- *
56
- * @returns {Promise<void>}
57
- */
58
-
59
-
60
- async collectAllMovieFanart() {
61
- let movies = await _movie.Movie.findAll();
62
-
63
- for (let movie of movies) {
64
- await this.collectArtworkMovieFanart(movie);
65
- }
66
- }
67
- /**
68
- *
69
- * @returns {Promise<void>}
70
- */
71
-
72
-
73
- async collectAllMoviePosters() {
74
- let movies = await _movie.Movie.findAll();
75
-
76
- for (let movie of movies) {
77
- await this.collectArtworkMoviePoster(movie);
78
- }
79
- }
80
- /**
81
- *
82
- * @returns {Promise<void>}
83
- */
84
-
85
-
86
- async collectAll() {
87
- await this.collectAllMoviePosters();
88
- await this.collectAllMovieFanart();
89
- }
90
-
91
- }
92
-
93
- exports.default = MovieArtworkCollector;
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _downloader = _interopRequireDefault(require("../../downloader"));
9
-
10
- var _TmdbMovieArtworkRetriever = _interopRequireDefault(require("./artworkRetrievers/TmdbMovieArtworkRetriever"));
11
-
12
- var _FanarttvMovieArtworkRetriever = _interopRequireDefault(require("./artworkRetrievers/FanarttvMovieArtworkRetriever"));
13
-
14
- var _AggregateMovieArtworkRetriever = _interopRequireDefault(require("./AggregateMovieArtworkRetriever"));
15
-
16
- var _logger = _interopRequireDefault(require("../../../submodules/logger"));
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- class MovieArtworkDownloader {
21
- constructor(oblecto) {
22
- this.oblecto = oblecto;
23
- this.movieArtworkRetriever = new _AggregateMovieArtworkRetriever.default(this.oblecto);
24
- this.movieArtworkRetriever.loadRetriever(new _FanarttvMovieArtworkRetriever.default(this.oblecto));
25
- this.movieArtworkRetriever.loadRetriever(new _TmdbMovieArtworkRetriever.default(this.oblecto)); // Register task availability to Oblecto queue
26
-
27
- this.oblecto.queue.addJob('downloadMoviePoster', async job => {
28
- await this.downloadMoviePoster(job);
29
- });
30
- this.oblecto.queue.addJob('downloadMovieFanart', async job => {
31
- await this.downloadMovieFanart(job);
32
- });
33
- }
34
-
35
- async downloadMoviePoster(movie) {
36
- await this.movieArtworkRetriever.retrievePoster(movie);
37
-
38
- _logger.default.log('DEBUG', `Poster for ${movie.movieName} downloaded`);
39
-
40
- for (let size of Object.keys(this.oblecto.config.artwork.poster)) {
41
- this.oblecto.queue.pushJob('rescaleImage', {
42
- from: this.oblecto.artworkUtils.moviePosterPath(movie),
43
- to: this.oblecto.artworkUtils.moviePosterPath(movie, size),
44
- width: this.oblecto.config.artwork.poster[size]
45
- });
46
- }
47
- }
48
-
49
- async downloadMovieFanart(movie) {
50
- await this.movieArtworkRetriever.retrieveFanart(movie);
51
-
52
- _logger.default.log('DEBUG', `Fanart for ${movie.movieName} downloaded`);
53
-
54
- for (let size of Object.keys(this.oblecto.config.artwork.fanart)) {
55
- this.oblecto.queue.pushJob('rescaleImage', {
56
- from: this.oblecto.artworkUtils.movieFanartPath(movie),
57
- to: this.oblecto.artworkUtils.movieFanartPath(movie, size),
58
- width: this.oblecto.config.artwork.fanart[size]
59
- });
60
- }
61
- }
62
-
63
- }
64
-
65
- exports.default = MovieArtworkDownloader;
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _DebugExtendableError = _interopRequireDefault(require("../../../errors/DebugExtendableError"));
9
-
10
- var _axiosTimeout = _interopRequireDefault(require("../../../../submodules/axiosTimeout"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- class FanarttvMovieArtworkRetriever {
15
- constructor(oblecto) {
16
- this.oblecto = oblecto;
17
- }
18
-
19
- async retrieveFanart(movie) {
20
- if (!(movie.tmdbid || movie.imdbid)) throw new _DebugExtendableError.default(`No tmdbid or imdb id found for movie ${movie.movieName}`);
21
- let {
22
- data
23
- } = await (0, _axiosTimeout.default)({
24
- method: 'get',
25
- url: `http://webservice.fanart.tv/v3/movies/${movie.tmdbid || movie.imdbid}?api_key=${this.oblecto.config['fanart.tv'].key}`
26
- });
27
- if (!data.moviebackground) return [];
28
- let urls = [];
29
-
30
- for (let image of data.moviebackground) {
31
- urls.push(image.url);
32
- }
33
-
34
- return urls;
35
- }
36
-
37
- async retrievePoster(movie) {
38
- if (!(movie.tmdbid || movie.imdbid)) throw new _DebugExtendableError.default(`No tmdbid or imdb id found for movie ${movie.movieName}`);
39
- let {
40
- data
41
- } = await (0, _axiosTimeout.default)({
42
- method: 'get',
43
- url: `http://webservice.fanart.tv/v3/movies/${movie.tmdbid || movie.imdbid}?api_key=${this.oblecto.config['fanart.tv'].key}`
44
- });
45
- if (!data.movieposter) return [];
46
- let urls = [];
47
-
48
- for (let image of data.movieposter) {
49
- urls.push(image.url);
50
- }
51
-
52
- return urls;
53
- }
54
-
55
- }
56
-
57
- exports.default = FanarttvMovieArtworkRetriever;
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _DebugExtendableError = _interopRequireDefault(require("../../../errors/DebugExtendableError"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- class TmdbMovieArtworkRetriever {
13
- constructor(oblecto) {
14
- this.oblecto = oblecto;
15
- }
16
-
17
- async retrieveFanart(movie) {
18
- if (!movie.tmdbid) throw new _DebugExtendableError.default(`No tmdbid id found for movie ${movie.movieName}`);
19
- let data = await this.oblecto.tmdb.movieImages({
20
- id: movie.tmdbid
21
- });
22
- let urls = [];
23
-
24
- for (let image of data.backdrops) {
25
- urls.push(`https://image.tmdb.org/t/p/original${image['file_path']}`);
26
- }
27
-
28
- return urls;
29
- }
30
-
31
- async retrievePoster(movie) {
32
- if (!movie.tmdbid) throw new _DebugExtendableError.default(`No tmdbid id found for movie ${movie.movieName}`);
33
- let data = await this.oblecto.tmdb.movieImages({
34
- id: movie.tmdbid
35
- });
36
- let urls = [];
37
-
38
- for (let image of data.posters) {
39
- urls.push(`https://image.tmdb.org/t/p/original${image['file_path']}`);
40
- }
41
-
42
- return urls;
43
- }
44
-
45
- }
46
-
47
- exports.default = TmdbMovieArtworkRetriever;
@@ -1,58 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _WarnExtendableError = _interopRequireDefault(require("../../errors/WarnExtendableError"));
9
-
10
- var _logger = _interopRequireDefault(require("../../../submodules/logger"));
11
-
12
- var _DebugExtendableError = _interopRequireDefault(require("../../errors/DebugExtendableError"));
13
-
14
- var _downloader = _interopRequireDefault(require("../../downloader"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- class AggregateSeriesArtworkRetriever {
19
- constructor(oblecto) {
20
- this.oblecto = oblecto;
21
- this.retrievers = [];
22
- }
23
-
24
- loadRetriever(retriever) {
25
- this.retrievers.push(retriever);
26
- }
27
-
28
- async retrieveEpisodeBanner(episode) {
29
- for (let retriever of this.retrievers) {
30
- try {
31
- let urls = await retriever.retrieveEpisodeBanner(episode);
32
- if (urls.length === 0) throw new _DebugExtendableError.default('No URLs found');
33
- return _downloader.default.attemptDownload(urls, this.oblecto.artworkUtils.episodeBannerPath(episode));
34
- } catch (e) {
35
- _logger.default.log(e);
36
- }
37
- }
38
-
39
- throw new _WarnExtendableError.default(`No banner found for episode ${episode.episodeName}`);
40
- }
41
-
42
- async retrieveSeriesPoster(series) {
43
- for (let retriever of this.retrievers) {
44
- try {
45
- let urls = await retriever.retrieveSeriesPoster(series);
46
- if (urls.length === 0) throw new _DebugExtendableError.default('No URLs found');
47
- return _downloader.default.attemptDownload(urls, this.oblecto.artworkUtils.seriesPosterPath(series));
48
- } catch (e) {
49
- _logger.default.log(e);
50
- }
51
- }
52
-
53
- throw new _WarnExtendableError.default(`No poster found for ${series.seriesName}`);
54
- }
55
-
56
- }
57
-
58
- exports.default = AggregateSeriesArtworkRetriever;