Module Kodi suite?


#1

Hello !

Je viens de me perdre dans le répertoire du module kodi et je suis tombé sur des trucs sympa dans les exemples. Du type ça :

[ 22:41:38 ] - [ pi @ gladys ] - [ ~/gladys/api/hooks/kodi-xbmc/node_modules/xbmc/examples ]
 -> nodejs search-movie.js rasta
1 Movies
┌────┬───────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ #  │ Label         │
├────┼───────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 37 │ Rasta Rockett │ nfs://192.168.0.254//xxxxxxxxxx │
└────┴───────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Ou encore

[ 22:51:02 ] - [ pi @ gladys ] - [ ~/gladys/api/hooks/kodi-xbmc/node_modules/xbmc/examples ]
 -> nodejs list-movies.js 
56 Movies
┌────┬────────────────────────────────────────┬──────────────────────────────────────────────────────┬──────┐
│ #  │ Label                                  │ Genre                                                │ Year │
├────┼────────────────────────────────────────┼──────────────────────────────────────────────────────┼──────┤

On peut y voir la liste suivante :

-rwxr--r-- 1 pi pi  401 Jul  3  2015 api-verbose.coffee
-rwxr--r-- 1 pi pi  465 Jul  3  2015 api-verbose.js
-rwxr--r-- 1 pi pi  127 Jul  3  2015 config.coffee
-rwxr--r-- 1 pi pi  269 Feb 11 22:30 config.js
-rwxr--r-- 1 pi pi 1723 Jul  3  2015 hooks.coffee
-rwxr--r-- 1 pi pi 2042 Jul  3  2015 hooks.js
-rwxr--r-- 1 pi pi  729 Jul  3  2015 input.coffee
-rwxr--r-- 1 pi pi  967 Jul  3  2015 input.js
-rwxr--r-- 1 pi pi  787 Jul  3  2015 list-movies.coffee
-rwxr--r-- 1 pi pi 1020 Jul  3  2015 list-movies.js
-rwxr--r-- 1 pi pi  639 Jul  3  2015 message-chat.coffee
-rwxr--r-- 1 pi pi  843 Jul  3  2015 message-chat.js
-rwxr--r-- 1 pi pi  669 Jul  3  2015 messages.coffee
-rwxr--r-- 1 pi pi  934 Jul  3  2015 messages.js
-rwxr--r-- 1 pi pi  447 Jul  3  2015 play-file.coffee
-rwxr--r-- 1 pi pi  597 Feb 11 22:35 play-file.js
-rwxr--r-- 1 pi pi  444 Jul  3  2015 play-youtube.coffee
-rwxr--r-- 1 pi pi  536 Jul  3  2015 play-youtube.js
-rwxr--r-- 1 pi pi  830 Jul  3  2015 search-movie.coffee
-rwxr--r-- 1 pi pi 1162 Jul  3  2015 search-movie.js

Je me demande si on pourrait rajouter ces fonctions au module existant… bon la réponse est oui, mais c’est plutôt le comment :slight_smile:

Ca pourrait être sympa de lui demander les films / séries / musique de X genre puis de les lancés
En prennant les exemples, c’est facile de s’en servir en CLI, mais si quelqu’un peut me donner des pistes pour essayer de bidouille quelque chose ça pourrait être sympa :slight_smile:


#2

ça serait génial! Il y a 2 modules gladys kodi sur Github =>

Tu peux t’en servir de bases et modifier le code !


#3

Merci pour ces liens @pierre-gilles, je pensais qu’il n’y avait qu’une version de kodi :slight_smile:

Par contre j’ai une erreur d’installe du module

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'install',
1 verbose cli   '--prefix',
1 verbose cli   './api/hooks/kodi-remote' ]
2 info using [email protected]
3 info using [email protected]
4 verbose npm-session 4a17514d60cd2ccd
5 silly install runPreinstallTopLevelLifecycles
6 silly preinstall [email protected]
7 info lifecycle [email protected]~preinstall: [email protected]
8 silly install loadCurrentTree
9 silly install readLocalPackageData
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 silly install loadShrinkwrap
13 silly install loadAllDepsIntoIdealTree
14 http fetch GET 200 https://registry.npmjs.org/node-kodi 165ms (from cache)
15 silly registry:manifest no matching version for [email protected]^0.0.2 in the cache. Forcing revalidation
16 http fetch GET 304 https://registry.npmjs.org/node-kodi 574ms (from cache)
17 http fetch GET 304 https://registry.npmjs.org/bluebird 774ms (from cache)
18 silly fetchPackageMetaData error for [email protected]^0.0.2 No matching version found for [email protected]^0.0.2
19 silly pacote range manifest for [email protected]^2.10.0 fetched in 893ms
20 silly registry:manifest no matching version for [email protected]^0.0.2 in the cache. Forcing revalidation
21 silly pacote range manifest for [email protected]^2.10.0 fetched in 24ms
22 silly resolveWithNewModule [email protected] checking installable status
23 http fetch GET 304 https://registry.npmjs.org/node-kodi 121ms (from cache)
24 silly fetchPackageMetaData error for [email protected]^0.0.2 No matching version found for [email protected]^0.0.2
25 silly saveTree [email protected]
25 silly saveTree └── [email protected]
26 verbose type range
27 verbose stack node-kodi: No matching version found for [email protected]^0.0.2
27 verbose stack     at pickManifest (/usr/local/lib/node_modules/npm/node_modules/pacote/node_modules/npm-pick-manifest/index.js:65:11)
27 verbose stack     at fetchPackument.then.packument (/usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/manifest.js:52:18)
27 verbose stack     at tryCatcher (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23)
27 verbose stack     at Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:512:31)
27 verbose stack     at Promise._settlePromise (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:569:18)
27 verbose stack     at Promise._settlePromise0 (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:614:10)
27 verbose stack     at Promise._settlePromises (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:693:18)
27 verbose stack     at Async._drainQueue (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:133:16)
27 verbose stack     at Async._drainQueues (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:143:10)
27 verbose stack     at Immediate.Async.drainQueues (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:17:14)
27 verbose stack     at runCallback (timers.js:789:20)
27 verbose stack     at tryOnImmediate (timers.js:751:5)
27 verbose stack     at processImmediate [as _immediateCallback] (timers.js:722:5)
28 verbose cwd /home/pi/gladys
29 verbose Linux 4.14.79-v7+
30 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--prefix" "./api/hooks/kodi-remote"
31 verbose node v8.9.4
32 verbose npm  v5.6.0
33 error code ETARGET
34 error notarget No matching version found for [email protected]^0.0.2
35 error notarget In most cases you or one of your dependencies are requesting
35 error notarget a package version that doesn't exist.
35 error notarget
35 error notarget It was specified as a dependency of 'kodi-remote'
36 verbose exit [ 1, true ]

Du coup je vois que le problème est en liaison avec la version de node-kodi qui n’est pas bonne.

Mais quand je regarde les fichiers du répertoire de gladys, il a bien l’air d’être présent :

 -> grep -Ri node-kodi /home/pi/gladys/*
/home/pi/gladys/api/hooks/kodi-xbmc/package.json:    "node-kodi": "0.0.2-alpha",
/home/pi/gladys/api/hooks/kodi-xbmc/package-lock.json:    "node-kodi": {
/home/pi/gladys/api/hooks/kodi-xbmc/package-lock.json:      "resolved": "https://registry.npmjs.org/node-kodi/-/node-kodi-0.0.2-alpha.tgz",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/q/package.json:    "/node-kodi"
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/q/package.json:  "_where": "/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/lib/kodi-rpc.js:        var rpc = '{"jsonrpc": "2.0", "method": "' + method + '", ' + params + '"id": "node-kodi"}';
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/README.md:node-kodi
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/README.md:var kodi_rpc = require('node-kodi');
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:  "_from": "node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:  "_id": "[email protected]",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:  "_location": "/node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:    "raw": "node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:    "name": "node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:    "escapedName": "node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:  "_resolved": "https://registry.npmjs.org/node-kodi/-/node-kodi-0.0.2-alpha.tgz",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:  "_spec": "node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:    "url": "https://github.com/martinverup/node-kodi/issues"
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:  "homepage": "https://github.com/martinverup/node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:  "name": "node-kodi",
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi/package.json:    "url": "git://github.com/martinverup/node-kodi.git"
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/request/package.json:    "/node-kodi"
/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/request/package.json:  "_where": "/home/pi/gladys/api/hooks/kodi-xbmc/node_modules/node-kodi",

J’ai vu dans le fichier command.js des choses déjà faite qui peuvent être intéréssante

getMovieDetail = function(kodi) {
    params = {"properties": ["title", "genre", "country", "year", "director"]};
    return kodi.player.getCurrentlyPlayingVideo(params)
    .then((details) => {
        return {
            "scope": {
                "%MOVIE_TITLE%": details.item.title,
                "%MOVIE_YEAR%": details.item.year,
                "%MOVIE_COUNTRY": details.item.country
            },
            "label": "movie-details"
        }
    });
}

Par contre, ce fichier commande.js, comment est-ce qu’il fonctionne ?
De ce que je vois, on dirait qu’il y a un label movie-details dans le brain je suppose, et donc qu’on peut l’intéroger pour lui demande les details du films et ainsi il passera dans commande.js pour avoir les infos ?

J’ai bon j’ai bon ? :slight_smile:

Etant donner que les deux modules sont très proches, si je prendsce fichier commande.js, pour le mettre dans l’autre module, est-ce qu’il y a des modifications à faire dans le brain pour lui insérer les labels ?

@piznel @spenceur, je pense que vous pouvez sans doute me filer des pistes aussi :slight_smile: