2017-08-01 3 views
-1

J'ai trouvé la bibliothèque suivante, que je voudrais utiliser dans mon propre fichier nodejs: https://github.com/kyr0/trimp3En utilisant l'outil de cli de noeud comme une bibliothèque (trimp3)

Cependant, il est un outil de cli, et je voudrais Utilisez-le comme une bibliothèque. Comment pourrais-je l'utiliser dans mon propre code nodejs, et l'utiliser par programme (c'est-à-dire, sans l'exécuter en tant qu'outil cli à partir de mon fichier nodejs, mais directement dans le noeud).

J'espère que vous comprenez ce que je veux dire.

+0

Regardez le code actuel. 'trimp3.js' est un wrapper très fin autour de' libtrimp3.js', que vous pouvez importer et utiliser comme vous le souhaitez avec un peu de modification/modification de singe. Et même * that * est principalement un wrapper fin autour de 'ffmpeg'. – deceze

+0

Je l'ai regardé, mais je n'arrive pas à comprendre comment je l'appellerais de mon fichier nodejs et transmettrais des arguments. Dans trimp3.js il est appelé avec require (path.resolve (__ filename, '../ libtrimp3.js')). Cli(); 'si je comprends bien? Mais comment ferais-je cela dans un simple fichier nodejs, avec un appel de bibliothèque 'normal'? –

+0

Les seules choses qui font réellement quelque chose là sont les fonctions 'trim' et' calcTimes', le reste est juste pour l'utilisation CLI. Je copierais simplement ces quelques lignes dans mon propre projet et je les adapterais si nécessaire. Absolument pas besoin de dépendre de cette bibliothèque. – deceze

Répondre

0

Je suis d'accord avec le commentaire que vous pouvez simplement copier le code dans votre propre module et de l'utiliser au besoin, mais si vous voulez vraiment ajouter cette dépendance, vous pouvez l'installer localement

$ npm install trimp3 --save 

puis besoin avec son chemin complet libtrimp3.js comme ceci:

const trimp = require('./node_modules/trimp3/libtrimp3.js') 

vous aurez besoin d'ajuster ce chemin en fonction de l'endroit où vous appelez pour vous assurer que vous avez le droit chemin relatif.

** Mise à jour **

Sur la base de commentaires, il est un bon point que la bibliothèque attend des informations à venir par la CLI. En réalité, il n'est pas difficile de truquer, car process.argv est juste un tableau, mais si vous l'utilisez pour d'autres choses, vous devrez peut-être en tenir compte. Avant d'exiger trimp3 (puisque l'analyse de process.argv se produit quand le fichier est chargé, malheureusement), votre code d'appel devrait définir le tableau à quelque chose que Trimp3 attend. Il est découper le tableau à 2, donc il va sauter les deux premiers éléments du tableau et le tableau restant sera analysé comme suit:

mp3In: argv[0], 
mp3Out: argv[1], 
beginTime: argv[2], 
endTime: argv[3] 

Donc, si vous deviez mettre process.argv = ['', '', 'path/to/input', 'path/to/output', 'beginTime', 'endTime'] avant d'exiger trimp3, vous d être dans le stade. Tout cela remonte à mon accord initial avec les commentaires selon lesquels il vaut probablement mieux utiliser cette bibliothèque, mais plutôt apprendre à construire votre propre module.

+0

Si vous regardez le code, il est assez difficile de supposer l'invocation d'une CLI, en utilisant exclusivement 'argv' pour lire les arguments. Donc ce n'est pas * que * facile ... – deceze

+0

@deceze mis à jour pour tenir compte de votre commentaire, s'il vous plaît laissez-moi savoir si cela résout votre problème. – Paul