Lancer une commande Linux avec l'URL courante depuis Firefox

Vous vous penchez sur le développement d'applications ou d'extensions pour Mozilla ? C'est alors vers ce forum que se dirigeront naturellement vos requêtes...
antistress
Iguane
Messages : 815
Inscription : 12 mars 2008, 00:36

Lancer une commande Linux avec l'URL courante depuis Firefox

Message par antistress »

Bonsoir,

Je n'y connais rien en programmation mais aimerais savoir s'il serait possible de créer une extension qui envoie une commande au système incluant l'URL courante ?

Le cas étant le suivant : sous GNOME, Totem peut classiquement lire les vidéo YouTube si on entre le titre de la vidéo à la main.

Mais il y a du nouveau : une librairie a été externalisée de cclive pour récupérer la véritable URL de la vidéo à partir de l'URL de la page YouTube (pas que YouTube d'ailleurs) : libquvi (sous LGPLv2.1+)

Et totem-pl-parser peut à présent être compilé avec l'argument --enable-quvi au script configure pour bénéficier d'un support direct de quvi (démo)

Si une extension pouvait ajouter une entrée au menu contextuel de Firefox (ou un bouton à la barre d'outils) qui lance Totem avec l'URL de la page ça serait formidable.

On peut aussi utiliser cette commande :
quvi http://www.youtube.com/watch?v=dkpSqp8UGko --exec "totem %u"

Qu'en pensez-vous ?
antistress
Iguane
Messages : 815
Inscription : 12 mars 2008, 00:36

Re: Lancer une commande Linux avec l'URL courante depuis Fir

Message par antistress »

Peut être des pistes :
Récuperer l'URL de la page active http://www.geckozone.org/forum/viewtopi ... RL#p503761
Comment récupérer l'URL d'un onglet qui vient d'être ouvert http://www.geckozone.org/forum/viewtopi ... &hilit=URL
antistress
Iguane
Messages : 815
Inscription : 12 mars 2008, 00:36

Re: Lancer une commande Linux avec l'URL courante depuis Fir

Message par antistress »

Personne ?
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Re: Lancer une commande Linux avec l'URL courante depuis Fir

Message par martin »

bonjour,

un mini tuto pour montrer comment trouver cette info (l'url de la page active) avec le DOM Inspector:

- ouvrir le DOM inspector (via Outils ou CTRL+MAJ+i)
- Fichier > Examiner le Chrome d'un document > choisir la fenêtre principale (celle avec le même titre)
- dans le panneau de droite, choisir "Javascript Object"
- ouvrir la branche defaultView, elle correspond à l'objet "window" dans un script appelé depuis la fenêtre principale de Firefox.
- on trouve alors la propriété gBrowser, ou la méthode getBrowser() qui renvoie gBrowser. Il correspond à l'élément XUL tabbrowser de la fenêtre de Firefox, c'est lui qui contient tous les onglets qui affichent les contenus.
- cet objet gBrowser contient l'objet currentURI, lequel contient des informations sur l'url actuellement affichée. En particulier sa propriété "spec", qui est ce que cherche.

Donc, dans ton script:
var cur_url = window.gBrowser.currentURI.spec;

Pour lancer une commande externe, tu peut regarder les sources de mon extension PlayAll. Elle permet de lancer des liens multimédia d'une page dans le lecteur de son choix. Donc quelque chose d'assez proche de ce que tu souhaites faire :D ...
antistress
Iguane
Messages : 815
Inscription : 12 mars 2008, 00:36

Re: Lancer une commande Linux avec l'URL courante depuis Fir

Message par antistress »

Merci beaucoup pour tes explications

Pour le DOM Inspector, je ne comprenais pas mais après une recherche j'ai compris qu'il n'était pas installé par défaut !

(au passage c'est bizarre ce truc je n'ai pas d'ascenseur horizontal sous GNU/Linux)

J'ai à peu près compris le fonctionnement du DOMi grâce à tes explications, ça ressemble à peu à Gconf-editor sous GNOME ou à l'éditeur de base de registre de Windows (d'après mes souvenirs) : la commande que tu me proposes semble logique de ce point de vue

Pour le reste, j'ai farfouillé un peu dans ton extension mais je n'en comprends pas la structure.

J'imagine que, fort de cette commande magique, il faut que je trouve un tuto "comment faire une extension pour les nuls" ?

J'ai vu passer ce projet récemment https://addons.mozilla.org/fr/developers/

est-ce à la portée d'un débutant ? aurais-tu des liens à ce sujet ?

Sinon j'ai trouvé :
https://developer.mozilla.org/fr/Constr ... _extension

Tout en sachant que mon besoin a l'air assez simple et que mon temps étant malheureusement limité ces temps ci, je voudrais me limiter aux aspects les plus simpes...

Merci d'avance !
antistress
Iguane
Messages : 815
Inscription : 12 mars 2008, 00:36

Re: Lancer une commande Linux avec l'URL courante depuis Fir

Message par antistress »

J'ai lancé le Créateur de module en choisissant "bouton de barre d'outils" et "commande du menu contextuel" et ai obtenu un squelette d'extension à bidouiller
https://addons.mozilla.org/fr/firefox/d ... 7ef416009d

je pense qu'après il me faut suivre https://addons.mozilla.org/fr/developer ... ng-started ?
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Re: Lancer une commande Linux avec l'URL courante depuis Fir

Message par martin »

désolé pour la réponse tardive...

bon, très bien, tu as un squelette fonctionnel pour ton extension, et on a vu comment récupérer l'url de la page courante.

Il faut maintenant lancer la ligne de commande que tu souhaites, depuis ton script.
Pour çà, tu vas utiliser un composant XPCOM, nsIProcess.

il faut créer une instance de nsIProcess, l'initialiser sur un exécutable avec la méthode init(), puis lancer le processus avec par exemple la méthode runw() .

La méthode init attend un argument de type nsIFile, c'est un autre composant XPCOM, et en fait on va utiliser un objet de type nsILocalFile, qui est lui même dérivé de nsIFile.

Pour créer notre nsILocalFile, on utilise la méthode initWithPath(), qui prend en argument une chaine de caractère, le chemin absolu vers l'exécutable, soit "/usr/bin/quvi" je suppose (which quvi dans un terminal devrait te renseigner sur son emplacement).

Code : Tout sélectionner

var exePath = "/usr/bin/quvi";
var exe = Components.classes["@mozilla.org/file/local;1"]
          .createInstance(Components.interfaces.nsILocalFile);
exe.initWithPath(exePath)

var process = Components.classes["@mozilla.org/process/util;1"]
              .createInstance(Components.interfaces.nsIProcess);
process.init(exe);
Enfin, on va lancer le processus avec runw(), les arguments attendus sont, 1 booléen indiquant si on bloque le reste du script (et donc Firefox) jusqu'à la fin du processus (on va bien sûr mettre false), un tableau contenant les arguments passés à l'exécutable (quvi). Et en fait, pour des raisons que je ne développerai pas ici, la longueur de ce tableau.

Code : Tout sélectionner

var args = [cur_url, "--exec", '"totem %u"'];

process.runw(false, args, args.length);
Je n'ai pas testé toutes ces commandes, à toi de le faire, de créer tes méthodes dans ton objet JavaScript firefox2totem. Mais tu dois maintenant avoir le principal ;) .
antistress
Iguane
Messages : 815
Inscription : 12 mars 2008, 00:36

Re: Lancer une commande Linux avec l'URL courante depuis Fir

Message par antistress »

martin a écrit :désolé pour la réponse tardive....
tu rigoles ? T'es super sympa de me donner la marche à suivre aussi précisément, je vais pas me plaindre en plus !

Merci beaucoup pour toutes ces infos, je vais tâcher de regarder comme intégrer ça au squelette créé
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités