Skip to content

Commit 9d1c4e3

Browse files
committed
chore: Get details addons.
1 parent a0cdfc0 commit 9d1c4e3

File tree

21 files changed

+557
-156
lines changed

21 files changed

+557
-156
lines changed

src/core/jsonrpc/addons.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@
88
* @import { Kodi } from "./kodi.js"
99
*/
1010

11+
/**
12+
* @typedef {Object} AddonDetails
13+
* @prop {string} addonid L'identifiant de l'addon.
14+
* @prop {string} author L'auteur de l'addon.
15+
* @prop {string} type Le type de l'addon.
16+
*/
17+
1118
/**
1219
* Le client JSON-RPC pour contacter l'espace de nom _Addons_ de Kodi.
1320
*
@@ -36,22 +43,23 @@ export const Addons = class {
3643
* @param {...string} contents Le type de contenu géré par les addons à
3744
* retourner (`"unknown"`, `"video"`, `"audio"`,
3845
* `"image"` ou `"executable"`).
39-
* @returns {Promise<string[]>} Une promesse contenant les identifiants des
40-
* addons.
46+
* @returns {Promise<AddonDetails[]>} Une promesse contenant les
47+
* identifiants des addons.
4148
*/
4249
async getAddons(...contents) {
4350
const addons = [];
4451
for (const content of contents) {
4552
const results = await this.#kodi.send("Addons.GetAddons", {
4653
content,
4754
enabled: true,
55+
properties: ["author"],
4856
});
4957
// Gérer le cas où la propriété "addons" n'est pas présente (quand
5058
// aucun addon n'est retourné).
5159
if (undefined !== results.addons) {
52-
addons.push(results.addons.map((a) => a.addonid));
60+
addons.push(...results.addons);
5361
}
5462
}
55-
return addons.flat();
63+
return addons;
5664
}
5765
};

src/core/scraper/dailymotion.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ import { matchPattern } from "../tools/matchpattern.js";
1717
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
1818
*/
1919
const dispatch = async (videoId) => {
20-
const addons = new Set(await kodi.addons.getAddons("video"));
21-
if (addons.has("plugin.video.dailymotion_com")) {
20+
const addons = await kodi.addons.getAddons("video");
21+
if (addons.some((a) => "plugin.video.dailymotion_com" === a.addonid)) {
2222
return dailymotionPlugin.generateUrl(videoId);
2323
}
24-
if (addons.has("plugin.video.sendtokodi")) {
24+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
2525
return sendtokodiPlugin.generateUrl(
2626
new URL(`https://www.dailymotion.com/video/${videoId}`),
2727
);

src/core/scraper/mixcloud.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ import { matchPattern } from "../tools/matchpattern.js";
1717
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
1818
*/
1919
const dispatch = async (path) => {
20-
const addons = new Set(await kodi.addons.getAddons("audio", "video"));
21-
if (addons.has("plugin.audio.mixcloud")) {
20+
const addons = await kodi.addons.getAddons("audio", "video");
21+
if (addons.some((a) => "plugin.audio.mixcloud" === a.addonid)) {
2222
return mixcloudPlugin.generateUrl(path);
2323
}
24-
if (addons.has("plugin.video.sendtokodi")) {
24+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
2525
return sendtokodiPlugin.generateUrl(
2626
new URL(`https://www.mixcloud.com${path}`),
2727
);

src/core/scraper/soundcloud.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ import { matchPattern } from "../tools/matchpattern.js";
2323
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
2424
*/
2525
const dispatch = async (url) => {
26-
const addons = new Set(await kodi.addons.getAddons("audio", "video"));
27-
if (addons.has("plugin.audio.soundcloud")) {
26+
const addons = await kodi.addons.getAddons("audio", "video");
27+
if (addons.some((a) => "plugin.audio.soundcloud" === a.addonid)) {
2828
return soundcloudPlugin.generateUrl(url);
2929
}
30-
if (addons.has("plugin.video.sendtokodi")) {
30+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
3131
return sendtokodiPlugin.generateUrl(url);
3232
}
3333
// Envoyer par défaut au plugin SoundCloud.

src/core/scraper/twitch.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ import { matchPattern } from "../tools/matchpattern.js";
1717
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
1818
*/
1919
const dispatchLive = async (channelName) => {
20-
const addons = new Set(await kodi.addons.getAddons("video"));
21-
if (addons.has("plugin.video.twitch")) {
20+
const addons = await kodi.addons.getAddons("video");
21+
if (addons.some((a) => "plugin.video.twitch" === a.addonid)) {
2222
return twitchPlugin.generateLiveUrl(channelName);
2323
}
24-
if (addons.has("plugin.video.sendtokodi")) {
24+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
2525
return sendtokodiPlugin.generateUrl(
2626
new URL(`https://www.twitch.tv/${channelName}`),
2727
);
@@ -37,11 +37,11 @@ const dispatchLive = async (channelName) => {
3737
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
3838
*/
3939
const dispatchVideo = async (videoId) => {
40-
const addons = new Set(await kodi.addons.getAddons("video"));
41-
if (addons.has("plugin.video.twitch")) {
40+
const addons = await kodi.addons.getAddons("video");
41+
if (addons.some((a) => "plugin.video.twitch" === a.addonid)) {
4242
return twitchPlugin.generateVideoUrl(videoId);
4343
}
44-
if (addons.has("plugin.video.sendtokodi")) {
44+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
4545
return sendtokodiPlugin.generateUrl(
4646
new URL(`https://www.twitch.tv/videos/${videoId}`),
4747
);
@@ -57,11 +57,11 @@ const dispatchVideo = async (videoId) => {
5757
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
5858
*/
5959
const dispatchClip = async (slug) => {
60-
const addons = new Set(await kodi.addons.getAddons("video"));
61-
if (addons.has("plugin.video.twitch")) {
60+
const addons = await kodi.addons.getAddons("video");
61+
if (addons.some((a) => "plugin.video.twitch" === a.addonid)) {
6262
return twitchPlugin.generateClipUrl(slug);
6363
}
64-
if (addons.has("plugin.video.sendtokodi")) {
64+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
6565
return sendtokodiPlugin.generateUrl(
6666
new URL(`https://clips.twitch.tv/${slug}`),
6767
);

src/core/scraper/unknown.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ const action = async (url, _metadata, context) => {
3535

3636
// Si le plugin SendToKodi est installé dans Kodi : lui envoyer l'URL pour
3737
// qu'il essaie d'en extraire une vidéo ou une musique.
38-
const addons = new Set(await kodi.addons.getAddons("video"));
39-
if (addons.has("plugin.video.sendtokodi")) {
38+
const addons = await kodi.addons.getAddons("video");
39+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
4040
return plugin.generateUrl(url);
4141
}
4242

src/core/scraper/vimeo.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ import { matchPattern } from "../tools/matchpattern.js";
1919
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
2020
*/
2121
const dispatch = async (videoId, hash) => {
22-
const addons = new Set(await kodi.addons.getAddons("video"));
23-
if (addons.has("plugin.video.vimeo")) {
22+
const addons = await kodi.addons.getAddons("video");
23+
if (addons.some((a) => "plugin.video.vimeo" === a.addonid)) {
2424
return vimeoPlugin.generateUrl(videoId, hash);
2525
}
26-
if (addons.has("plugin.video.sendtokodi")) {
26+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
2727
return sendtokodiPlugin.generateUrl(
2828
new URL(
2929
`https://vimeo.com/${videoId}` +

src/core/scraper/vrtnu.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ import { matchPattern } from "../tools/matchpattern.js";
1717
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
1818
*/
1919
const dispatch = async (url) => {
20-
const addons = new Set(await kodi.addons.getAddons("video"));
21-
if (addons.has("plugin.video.vrt.nu")) {
20+
const addons = await kodi.addons.getAddons("video");
21+
if (addons.some((a) => "plugin.video.vrt.nu" === a.addonid)) {
2222
return vrtnuPlugin.generateUrl(url);
2323
}
24-
if (addons.has("plugin.video.sendtokodi")) {
24+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
2525
return sendtokodiPlugin.generateUrl(url);
2626
}
2727
// Envoyer par défaut au plugin VRT NU.

src/core/scraper/vtmgo.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ import { matchPattern } from "../tools/matchpattern.js";
1717
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
1818
*/
1919
const dispatchEpisode = async (episodeUuid) => {
20-
const addons = new Set(await kodi.addons.getAddons("video"));
21-
if (addons.has("plugin.video.vtm.go")) {
20+
const addons = await kodi.addons.getAddons("video");
21+
if (addons.some((a) => "plugin.video.vtm.go" === a.addonid)) {
2222
return vtmgoPlugin.generateEpisodeUrl(episodeUuid);
2323
}
24-
if (addons.has("plugin.video.sendtokodi")) {
24+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
2525
return sendtokodiPlugin.generateUrl(
2626
new URL(`https://www.vtmgo.be/vtmgo/afspelen/e${episodeUuid}`),
2727
);
@@ -37,11 +37,11 @@ const dispatchEpisode = async (episodeUuid) => {
3737
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
3838
*/
3939
const dispatchMovie = async (movieUuid) => {
40-
const addons = new Set(await kodi.addons.getAddons("video"));
41-
if (addons.has("plugin.video.vtm.go")) {
40+
const addons = await kodi.addons.getAddons("video");
41+
if (addons.some((a) => "plugin.video.vtm.go" === a.addonid)) {
4242
return vtmgoPlugin.generateMovieUrl(movieUuid);
4343
}
44-
if (addons.has("plugin.video.sendtokodi")) {
44+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
4545
return sendtokodiPlugin.generateUrl(
4646
new URL(`https://www.vtmgo.be/vtmgo/afspelen/m${movieUuid}`),
4747
);
@@ -57,11 +57,11 @@ const dispatchMovie = async (movieUuid) => {
5757
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
5858
*/
5959
const dispatchChannel = async (channelUuid) => {
60-
const addons = new Set(await kodi.addons.getAddons("video"));
61-
if (addons.has("plugin.video.vtm.go")) {
60+
const addons = await kodi.addons.getAddons("video");
61+
if (addons.some((a) => "plugin.video.vtm.go" === a.addonid)) {
6262
return vtmgoPlugin.generateChannelUrl(channelUuid);
6363
}
64-
if (addons.has("plugin.video.sendtokodi")) {
64+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
6565
return sendtokodiPlugin.generateUrl(
6666
new URL(`https://www.vtmgo.be/vtmgo/live-kijken/${channelUuid}`),
6767
);

src/core/scraper/youtube.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ import { matchPattern } from "../tools/matchpattern.js";
2121
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
2222
*/
2323
const dispatchVideo = async (videoId, { incognito }) => {
24-
const addons = new Set(await kodi.addons.getAddons("video"));
25-
if (addons.has("plugin.video.youtube")) {
24+
const addons = await kodi.addons.getAddons("video");
25+
if (addons.some((a) => "plugin.video.youtube" === a.addonid)) {
2626
return youtubePlugin.generateVideoUrl(videoId, incognito);
2727
}
28-
if (addons.has("plugin.video.tubed")) {
28+
if (addons.some((a) => "plugin.video.tubed" === a.addonid)) {
2929
return tubedPlugin.generateVideoUrl(videoId);
3030
}
31-
if (addons.has("plugin.video.sendtokodi")) {
31+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
3232
return sendtokodiPlugin.generateUrl(
3333
new URL(`https://www.youtube.com/watch?v=${videoId}`),
3434
);
@@ -47,14 +47,14 @@ const dispatchVideo = async (videoId, { incognito }) => {
4747
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
4848
*/
4949
const dispatchPlaylist = async (playlistId, { incognito }) => {
50-
const addons = new Set(await kodi.addons.getAddons("video"));
51-
if (addons.has("plugin.video.youtube")) {
50+
const addons = await kodi.addons.getAddons("video");
51+
if (addons.some((a) => "plugin.video.youtube" === a.addonid)) {
5252
return await youtubePlugin.generatePlaylistUrl(playlistId, incognito);
5353
}
54-
if (addons.has("plugin.video.tubed")) {
54+
if (addons.some((a) => "plugin.video.tubed" === a.addonid)) {
5555
return tubedPlugin.generatePlaylistUrl(playlistId);
5656
}
57-
if (addons.has("plugin.video.sendtokodi")) {
57+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
5858
return sendtokodiPlugin.generateUrl(
5959
new URL(`https://www.youtube.com/playlist?list=${playlistId}`),
6060
);
@@ -73,11 +73,11 @@ const dispatchPlaylist = async (playlistId, { incognito }) => {
7373
* @returns {Promise<string>} Une promesse contenant le lien du _fichier_.
7474
*/
7575
const dispatchClip = async (clipId, { incognito }) => {
76-
const addons = new Set(await kodi.addons.getAddons("video"));
77-
if (addons.has("plugin.video.youtube")) {
76+
const addons = await kodi.addons.getAddons("video");
77+
if (addons.some((a) => "plugin.video.youtube" === a.addonid)) {
7878
return youtubePlugin.generateClipUrl(clipId, incognito);
7979
}
80-
if (addons.has("plugin.video.sendtokodi")) {
80+
if (addons.some((a) => "plugin.video.sendtokodi" === a.addonid)) {
8181
return sendtokodiPlugin.generateUrl(
8282
new URL(`https://www.youtube.com/clip/${clipId}`),
8383
);

0 commit comments

Comments
 (0)