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,305 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _fs = _interopRequireDefault(require("fs"));
9
-
10
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
11
-
12
- var _sequelize = _interopRequireDefault(require("sequelize"));
13
-
14
- var _sharp = _interopRequireDefault(require("sharp"));
15
-
16
- var _auth = _interopRequireDefault(require("../middleware/auth"));
17
-
18
- var _trackMovie = require("../../../models/trackMovie");
19
-
20
- var _file = require("../../../models/file");
21
-
22
- var _movie = require("../../../models/movie");
23
-
24
- var _movieSet = require("../../../models/movieSet");
25
-
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
- const Op = _sequelize.default.Op;
29
-
30
- var _default = (server, oblecto) => {
31
- server.get('/movies/list/:sorting', _auth.default.requiresAuth, async function (req, res, next) {
32
- let limit = 20;
33
- let page = 0;
34
- let AllowedOrders = ['desc', 'asc'];
35
- if (AllowedOrders.indexOf(req.params.order.toLowerCase()) === -1) return next(new _restifyErrors.default.BadRequestError('Sorting order is invalid'));
36
- if (!(req.params.sorting in _movie.Movie.rawAttributes)) return next(new _restifyErrors.default.BadRequestError('Sorting method is invalid'));
37
- if (req.params.count && Number.isInteger(req.params.count)) limit = parseInt(req.params.count);
38
- if (req.params.page && Number.isInteger(req.params.page)) page = parseInt(req.params.page);
39
- let results = await _movie.Movie.findAll({
40
- include: [{
41
- model: _trackMovie.TrackMovie,
42
- required: false,
43
- where: {
44
- userId: req.authorization.user.id
45
- }
46
- }],
47
- order: [[req.params.sorting, req.params.order]],
48
- limit,
49
- offset: limit * page
50
- });
51
- res.send(results);
52
- });
53
- server.get('/movies/sets', _auth.default.requiresAuth, async function (req, res) {
54
- let results = await _movieSet.MovieSet.findAll({});
55
- res.send(results);
56
- });
57
- server.get('/movies/set/:id', _auth.default.requiresAuth, async function (req, res, next) {
58
- let limit = 20;
59
- let page = 0;
60
- let AllowedOrders = ['desc', 'asc'];
61
- if (AllowedOrders.indexOf(req.params.order.toLowerCase()) === -1) return next(new _restifyErrors.default.BadRequestError('Sorting order is invalid'));
62
- if (req.params.count && Number.isInteger(req.params.count)) limit = req.params.count;
63
- if (req.params.page && Number.isInteger(req.params.page)) page = req.params.page;
64
- let results = await _movieSet.MovieSet.findAll({
65
- include: [{
66
- model: _movie.Movie,
67
- include: [{
68
- model: _trackMovie.TrackMovie,
69
- required: false,
70
- where: {
71
- userId: req.authorization.user.id
72
- }
73
- }]
74
- }],
75
- where: {
76
- id: req.params.id
77
- },
78
- limit,
79
- offset: limit * page
80
- });
81
- res.send(results);
82
- });
83
- server.get('/movie/:id/poster', async function (req, res, next) {
84
- // Get episode data
85
- let movie;
86
-
87
- try {
88
- movie = await _movie.Movie.findByPk(req.params.id);
89
- } catch (e) {
90
- return next(new _restifyErrors.default.NotFoundError('Movie not found'));
91
- }
92
-
93
- let posterPath = oblecto.artworkUtils.moviePosterPath(movie, req.params.size || 'medium');
94
-
95
- _fs.default.createReadStream(posterPath).on('error', () => {
96
- return next(new _restifyErrors.default.NotFoundError('Poster for movie does not exist'));
97
- }).pipe(res);
98
- });
99
- server.put('/movie/:id/poster', _auth.default.requiresAuth, async function (req, res, next) {
100
- let movie = await _movie.Movie.findByPk(req.params.id, {
101
- include: [_file.File]
102
- });
103
-
104
- if (!movie) {
105
- return next(new _restifyErrors.default.NotFoundError('Movie does not exist'));
106
- }
107
-
108
- let posterPath = oblecto.artworkUtils.moviePosterPath(movie);
109
-
110
- if (req.files.length < 1) {
111
- return next(new _restifyErrors.default.MissingParameter('Image file is missing'));
112
- }
113
-
114
- let uploadPath = req.files[Object.keys(req.files)[0]].path;
115
-
116
- try {
117
- let image = await (0, _sharp.default)(uploadPath);
118
- let metadata = await image.metadata();
119
- let ratio = metadata.height / metadata.width;
120
-
121
- if (!(1 <= ratio <= 2)) {
122
- return next(new _restifyErrors.default.InvalidContent('Image aspect ratio is incorrect'));
123
- }
124
- } catch (e) {
125
- return next(new _restifyErrors.default.InvalidContent('File is not an image'));
126
- }
127
-
128
- try {
129
- _fs.default.copyFile(uploadPath, posterPath, err => {
130
- if (err) throw err;
131
-
132
- for (let size of Object.keys(oblecto.config.artwork.poster)) {
133
- oblecto.queue.pushJob('rescaleImage', {
134
- from: oblecto.artworkUtils.moviePosterPath(movie),
135
- to: oblecto.artworkUtils.moviePosterPath(movie, size),
136
- width: oblecto.config.artwork.poster[size]
137
- });
138
- }
139
-
140
- res.send(['success']);
141
- });
142
- } catch (e) {
143
- console.log(e);
144
- return next(new _restifyErrors.default.Internal('An error has occured during upload of poster'));
145
- }
146
-
147
- next();
148
- });
149
- server.get('/movie/:id/fanart', async function (req, res, next) {
150
- // Get episode data
151
- let movie = await _movie.Movie.findByPk(req.params.id, {
152
- include: [_file.File]
153
- });
154
- let fanartPath = oblecto.artworkUtils.movieFanartPath(movie, 'large');
155
-
156
- _fs.default.createReadStream(fanartPath).on('error', () => {
157
- return next(new _restifyErrors.default.NotFoundError('Fanart for movie does not exist'));
158
- }).pipe(res);
159
- });
160
- server.put('/movie/:id/fanart', _auth.default.requiresAuth, async function (req, res, next) {
161
- let movie = await _movie.Movie.findByPk(req.params.id, {
162
- include: [_file.File]
163
- });
164
-
165
- if (!movie) {
166
- return next(new _restifyErrors.default.NotFoundError('Movie does not exist'));
167
- }
168
-
169
- let fanartPath = oblecto.artworkUtils.movieFanartPath(movie);
170
-
171
- if (req.files.length < 1) {
172
- return next(new _restifyErrors.default.MissingParameter('Image file is missing'));
173
- }
174
-
175
- let uploadPath = req.files[Object.keys(req.files)[0]].path;
176
-
177
- try {
178
- let image = await (0, _sharp.default)(uploadPath);
179
- let metadata = await image.metadata();
180
- let ratio = metadata.height / metadata.width;
181
-
182
- if (!(1 <= ratio <= 2)) {
183
- return next(new _restifyErrors.default.InvalidContent('Image aspect ratio is incorrect'));
184
- }
185
- } catch (e) {
186
- return next(new _restifyErrors.default.InvalidContent('File is not an image'));
187
- }
188
-
189
- try {
190
- _fs.default.copyFile(uploadPath, fanartPath, err => {
191
- if (err) throw err;
192
-
193
- for (let size of Object.keys(oblecto.config.artwork.poster)) {
194
- oblecto.queue.pushJob('rescaleImage', {
195
- from: oblecto.artworkUtils.movieFanartPath(movie),
196
- to: oblecto.artworkUtils.movieFanartPath(movie, size),
197
- width: oblecto.config.artwork.poster[size]
198
- });
199
- }
200
-
201
- res.send(['success']);
202
- });
203
- } catch (e) {
204
- console.log(e);
205
- return next(new _restifyErrors.default.Internal('An error has occured during upload of fanart'));
206
- }
207
-
208
- next();
209
- });
210
- server.get('/movie/:id/info', _auth.default.requiresAuth, async function (req, res) {
211
- // search for attributes
212
- let movie = await _movie.Movie.findByPk(req.params.id, {
213
- include: [_file.File, {
214
- model: _trackMovie.TrackMovie,
215
- required: false,
216
- where: {
217
- userId: req.authorization.user.id
218
- }
219
- }]
220
- });
221
- res.send(movie);
222
- });
223
- server.get('/movie/:id/play', async function (req, res, next) {
224
- let movie = await _movie.Movie.findByPk(req.params.id, {
225
- include: [{
226
- model: _file.File
227
- }]
228
- });
229
- let file = movie.files[0];
230
- res.redirect(`/stream/${file.id}`, next);
231
- });
232
- server.get('/movie/:id/sets', _auth.default.requiresAuth, async function (req, res, next) {
233
- let sets = await _movie.Movie.findByPk(req.params.id, {
234
- attributes: [],
235
- include: [{
236
- model: _movieSet.MovieSet,
237
- include: [{
238
- model: _movie.Movie,
239
- include: [{
240
- model: _trackMovie.TrackMovie,
241
- required: false,
242
- where: {
243
- userId: req.authorization.user.id
244
- }
245
- }]
246
- }]
247
- }]
248
- });
249
- res.send(sets.movieSets);
250
- });
251
- server.put('/movie/:id/sets', _auth.default.requiresAuth, async function (req, res, next) {
252
- try {
253
- let [movie] = await _movie.Movie.findByPk(req.params.id);
254
- let [set] = await _movieSet.MovieSet.findByPk(req.params.setId);
255
- set.addMovie(movie);
256
- } catch (e) {
257
- return next(new _restifyErrors.default.NotFoundError('Movie or set could not be found'));
258
- }
259
- });
260
- server.get('/movies/search/:name', _auth.default.requiresAuth, async function (req, res) {
261
- // search for attributes
262
- let movie = await _movie.Movie.findAll({
263
- where: {
264
- movieName: {
265
- [Op.like]: '%' + req.params.name + '%'
266
- }
267
- },
268
- include: [_file.File]
269
- });
270
- res.send(movie);
271
- });
272
- server.get('/movies/watching', _auth.default.requiresAuth, async function (req, res) {
273
- // search for attributes
274
- let tracks = await _trackMovie.TrackMovie.findAll({
275
- include: [{
276
- model: _movie.Movie,
277
- required: true,
278
- include: [{
279
- model: _trackMovie.TrackMovie,
280
- required: false,
281
- where: {
282
- userId: req.authorization.user.id
283
- }
284
- }]
285
- }],
286
- where: {
287
- userId: req.authorization.user.id,
288
- progress: {
289
- [_sequelize.default.Op.lt]: 0.9
290
- },
291
- updatedAt: {
292
- [_sequelize.default.Op.gt]: new Date() - 1000 * 60 * 60 * 24 * 7
293
- }
294
- },
295
- order: [['updatedAt', 'DESC']]
296
- }); // We are only interested in the episode objects, so extract all the episode object from
297
- // each track object and send the final mapped array to the client
298
-
299
- res.send(tracks.map(track => {
300
- return track.Movie;
301
- }));
302
- });
303
- };
304
-
305
- exports.default = _default;
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
9
-
10
- var _auth = _interopRequireDefault(require("../middleware/auth"));
11
-
12
- var _movieSet = require("../../../models/movieSet");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- var _default = server => {
17
- server.post('/set/movie', _auth.default.requiresAuth, async function (req, res, next) {
18
- if (typeof req.params.public !== 'boolean') {
19
- return next(new _restifyErrors.default.InvalidArgumentError('Argument public is not a boolean'));
20
- }
21
-
22
- let [set, setInserted] = await _movieSet.MovieSet.findOrCreate({
23
- where: {
24
- setName: req.params.name
25
- },
26
- defaults: {
27
- overview: req.params.overview,
28
- public: req.params.public
29
- }
30
- });
31
- res.send(set);
32
- });
33
- };
34
-
35
- exports.default = _default;
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _maintenance = _interopRequireDefault(require("./maintenance"));
9
-
10
- var _sources = _interopRequireDefault(require("./sources"));
11
-
12
- var _misc = _interopRequireDefault(require("./misc"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- var _default = (server, oblecto) => {
17
- (0, _maintenance.default)(server, oblecto);
18
- (0, _sources.default)(server, oblecto);
19
- (0, _misc.default)(server, oblecto);
20
- };
21
-
22
- exports.default = _default;
@@ -1,87 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _auth = _interopRequireDefault(require("../../middleware/auth"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- /**
13
- *
14
- * @param server
15
- * @param {Oblecto} oblecto
16
- */
17
- var _default = (server, oblecto) => {
18
- // API Endpoint to request a re-index of certain library types
19
- server.get('/settings/maintenance/index/:libraries', _auth.default.requiresAuth, function (req, res) {
20
- switch (req.params.libraries) {
21
- case 'series':
22
- oblecto.seriesCollector.collectAll();
23
- break;
24
-
25
- case 'movies':
26
- oblecto.movieCollector.collectAll();
27
- break;
28
-
29
- case 'all':
30
- oblecto.seriesCollector.collectAll();
31
- oblecto.movieCollector.collectAll();
32
- break;
33
- }
34
-
35
- res.send([true]);
36
- }); // API Endpoint to request a re-index of certain library types
37
-
38
- server.get('/settings/maintenance/series/download/art', _auth.default.requiresAuth, function (req, res) {
39
- oblecto.seriesArtworkCollector.collectAll();
40
- res.send([true]);
41
- });
42
- server.get('/settings/maintenance/movies/download/art', _auth.default.requiresAuth, function (req, res) {
43
- oblecto.movieArtworkCollector.collectAll();
44
- res.send([true]);
45
- });
46
- server.get('/settings/maintenance/update/series', _auth.default.requiresAuth, function (req, res) {
47
- oblecto.seriesUpdateCollector.collectAllSeries();
48
- res.send([true]);
49
- });
50
- server.get('/settings/maintenance/update/episodes', _auth.default.requiresAuth, function (req, res) {
51
- oblecto.seriesUpdateCollector.collectAllEpisodes();
52
- res.send([true]);
53
- });
54
- server.get('/settings/maintenance/update/movies', _auth.default.requiresAuth, function (req, res) {
55
- oblecto.movieUpdateCollector.collectAllMovies();
56
- res.send([true]);
57
- });
58
- server.get('/settings/maintenance/update/files', _auth.default.requiresAuth, function (req, res) {
59
- oblecto.fileUpdateCollector.collectAllFiles();
60
- res.send([true]);
61
- });
62
- server.get('/settings/maintenance/clean/:type', _auth.default.requiresAuth, function (req, res) {
63
- switch (req.params.type) {
64
- case 'files':
65
- oblecto.fileCleaner.removeAssoclessFiles();
66
- oblecto.fileCleaner.removedDeletedFiled();
67
- break;
68
-
69
- case 'movies':
70
- oblecto.movieCleaner.removeFileLessMovies();
71
- break;
72
-
73
- case 'series':
74
- oblecto.seriesCleaner.removeEpisodeslessShows();
75
- oblecto.seriesCleaner.removePathLessShows();
76
- break;
77
-
78
- case 'episodes':
79
- oblecto.seriesCleaner.removeFileLessEpisodes();
80
- break;
81
- }
82
-
83
- res.send([true]);
84
- });
85
- };
86
-
87
- exports.default = _default;
@@ -1,38 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _auth = _interopRequireDefault(require("../../middleware/auth"));
9
-
10
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
11
-
12
- var _config = require("../../../../config");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- /**
17
- *
18
- * @param server
19
- * @param {Oblecto} oblecto
20
- */
21
- var _default = (server, oblecto) => {
22
- // API Endpoint to request a re-index of certain library types
23
- server.get('/settings/:setting', _auth.default.requiresAuth, function (req, res, next) {
24
- if (!oblecto.config[req.params.setting]) return next(new _restifyErrors.default.NotFoundError('Setting does not exist'));
25
- res.send(oblecto.config[req.params.setting]);
26
- });
27
- server.put('/settings/:setting', _auth.default.requiresAuth, function (req, res, next) {
28
- if (!oblecto.config[req.params.setting]) return next(new _restifyErrors.default.NotFoundError('Setting does not exist'));
29
- oblecto.config[req.params.setting] = req.body;
30
-
31
- _config.ConfigManager.saveConfig();
32
-
33
- res.send(oblecto.config[req.params.setting]);
34
- return next();
35
- });
36
- };
37
-
38
- exports.default = _default;
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _auth = _interopRequireDefault(require("../../middleware/auth"));
9
-
10
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
11
-
12
- var _config = require("../../../../config");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- var _default = (server, oblecto) => {
17
- // API Endpoint to request a re-index of certain library types
18
- server.get('/sources/:type', _auth.default.requiresAuth, function (req, res, next) {
19
- if (['movies', 'tvshows'].indexOf(req.params.type) === -1) {
20
- return next(new _restifyErrors.default.BadRequestError('Source type does not exist'));
21
- }
22
-
23
- res.send(oblecto.config[req.params.type].directories || {});
24
- });
25
- server.put('/sources/:type', _auth.default.requiresAuth, function (req, res, next) {
26
- if (['movies', 'tvshows'].indexOf(req.params.type) === -1) {
27
- return next(new _restifyErrors.default.BadRequestError('Source type does not exist'));
28
- }
29
-
30
- if (!req.params.path) {
31
- return next(new _restifyErrors.default.BadRequestError('No path specified'));
32
- }
33
-
34
- oblecto.config[req.params.type].directories.push({
35
- path: req.params.path
36
- });
37
- res.send('success');
38
-
39
- _config.ConfigManager.saveConfig();
40
- });
41
- server.del('/sources/:type', _auth.default.requiresAuth, function (req, res, next) {
42
- if (['movies', 'tvshows'].indexOf(req.params.type) === -1) {
43
- return next(new _restifyErrors.default.BadRequestError('Source type does not exist'));
44
- }
45
-
46
- if (!req.params.path) {
47
- return next(new _restifyErrors.default.BadRequestError('No path specified'));
48
- }
49
-
50
- oblecto.config[req.params.type].directories.forEach((v, i) => {
51
- if (v.path === req.params.path) {
52
- delete oblecto.config[req.params.type].directories.splice(i, 1);
53
- }
54
- });
55
- res.send('success');
56
-
57
- _config.ConfigManager.saveConfig();
58
- });
59
- };
60
-
61
- exports.default = _default;
@@ -1,140 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _path = _interopRequireDefault(require("path"));
9
-
10
- var _fs = _interopRequireDefault(require("fs"));
11
-
12
- var _sequelize = _interopRequireDefault(require("sequelize"));
13
-
14
- var _sharp = _interopRequireDefault(require("sharp"));
15
-
16
- var _auth = _interopRequireDefault(require("../middleware/auth"));
17
-
18
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
19
-
20
- var _series = require("../../../models/series");
21
-
22
- var _episode = require("../../../models/episode");
23
-
24
- var _trackEpisode = require("../../../models/trackEpisode");
25
-
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
- const Op = _sequelize.default.Op;
29
-
30
- var _default = (server, oblecto) => {
31
- server.get('/series/list/:sorting', _auth.default.requiresAuth, async function (req, res, next) {
32
- let limit = 20;
33
- let page = 0;
34
- let AllowedOrders = ['desc', 'asc'];
35
- if (AllowedOrders.indexOf(req.query.order.toLowerCase()) === -1) return next(new _restifyErrors.default.BadRequestError('Sorting order is invalid'));
36
- if (!(req.params.sorting in _series.Series.rawAttributes)) return next(new _restifyErrors.default.BadRequestError('Sorting method is invalid'));
37
- if (req.query.count) limit = parseInt(req.query.count);
38
- if (req.params.page && Number.isInteger(req.params.page)) page = parseInt(req.query.page);
39
- let results = await _series.Series.findAll({
40
- order: [[req.params.sorting, req.query.order]],
41
- limit,
42
- offset: limit * page
43
- });
44
- res.send(results);
45
- });
46
- server.get('/series/:id/info', _auth.default.requiresAuth, async function (req, res, next) {
47
- let show = await _series.Series.findByPk(req.params.id);
48
- if (show.genre) show.genre = JSON.parse(show.genre);
49
- res.send(show);
50
- }); // Endpoint to get all episodes within a series
51
-
52
- server.get('/series/:id/episodes', _auth.default.requiresAuth, async function (req, res, next) {
53
- let show = await _episode.Episode.findAll({
54
- include: [_series.Series, {
55
- model: _trackEpisode.TrackEpisode,
56
- required: false,
57
- where: {
58
- userId: req.authorization.user.id
59
- }
60
- }],
61
- where: {
62
- SeriesId: req.params.id
63
- },
64
- order: [['airedSeason', 'ASC'], ['airedEpisodeNumber', 'ASC']]
65
- });
66
- res.send(show);
67
- });
68
- server.get('/series/:id/poster', async function (req, res, next) {
69
- let show;
70
-
71
- try {
72
- show = await _series.Series.findByPk(req.params.id);
73
- } catch (e) {
74
- return next(new _restifyErrors.default.NotFoundError('Series does not exist'));
75
- }
76
-
77
- let imagePath = oblecto.artworkUtils.seriesPosterPath(show, req.params.size || 'medium');
78
-
79
- _fs.default.createReadStream(imagePath).on('error', () => {
80
- return next(new _restifyErrors.default.NotFoundError('No poster found'));
81
- }).pipe(res);
82
- });
83
- server.put('/series/:id/poster', _auth.default.requiresAuth, async function (req, res, next) {
84
- let show = await _series.Series.findByPk(req.params.id);
85
-
86
- if (!show) {
87
- return next(new _restifyErrors.default.NotFoundError('Movie does not exist'));
88
- }
89
-
90
- let posterPath = _path.default.normalize(oblecto.config.assets.showPosterLocation) + '/' + show.id + '.jpg';
91
-
92
- if (oblecto.config.assets.storeWithFile) {
93
- let showPath = show.directory;
94
- posterPath = _path.default.join(showPath, show.seriesName + '-poster.jpg');
95
- }
96
-
97
- if (req.files.length < 1) {
98
- return next(new _restifyErrors.default.MissingParameter('Image file is missing'));
99
- }
100
-
101
- let uploadPath = req.files[Object.keys(req.files)[0]].path;
102
-
103
- try {
104
- let image = await (0, _sharp.default)(uploadPath);
105
- let metadata = await image.metadata();
106
- let ratio = metadata.height / metadata.width;
107
-
108
- if (!(1 <= ratio <= 2)) {
109
- return next(new _restifyErrors.default.InvalidContent('Image aspect ratio is incorrect'));
110
- }
111
- } catch (e) {
112
- return next(new _restifyErrors.default.InvalidContent('File is not an image'));
113
- }
114
-
115
- try {
116
- _fs.default.copyFile(uploadPath, posterPath, err => {
117
- if (err) throw err;
118
- res.send(['success']);
119
- });
120
- } catch (e) {
121
- console.log(e);
122
- return next(new _restifyErrors.default.Internal('An error has occured during upload of poster'));
123
- }
124
-
125
- next();
126
- });
127
- server.get('/shows/search/:name', _auth.default.requiresAuth, async function (req, res) {
128
- // search for attributes
129
- let tvshows = await _series.Series.findAll({
130
- where: {
131
- seriesName: {
132
- [Op.like]: '%' + req.params.name + '%'
133
- }
134
- }
135
- });
136
- res.send(tvshows);
137
- });
138
- };
139
-
140
- exports.default = _default;