From 92c4a7fa969d325828d932c09d6686f4e6f52171 Mon Sep 17 00:00:00 2001 From: pifou Date: Mon, 18 Jun 2007 22:23:03 +0000 Subject: [PATCH] ADD Extension Firefox pour lancer les divx (pas fini) git-svn-id: svn://euphorik.ch/pompage@26 02bbb61a-6d21-0410-aba0-cb053bdfd66a --- css/yopyop.css | 28 +++--- doc/todo.txt | 12 +-- js/yopyop.js | 2 +- xml/test.xml | 126 ++++---------------------- xpi/chrome.manifest | 3 + xpi/components/handleProtocol.js | 142 ++++++++++++++++++++++++++++++ xpi/defaults/preferences/prefs.js | 1 + xpi/install.rdf | 27 ++++++ xsl/yopyop.xsl | 2 +- 9 files changed, 216 insertions(+), 127 deletions(-) create mode 100644 xpi/chrome.manifest create mode 100644 xpi/components/handleProtocol.js create mode 100644 xpi/defaults/preferences/prefs.js create mode 100644 xpi/install.rdf diff --git a/css/yopyop.css b/css/yopyop.css index bb631fd..ac3501b 100644 --- a/css/yopyop.css +++ b/css/yopyop.css @@ -117,16 +117,6 @@ div.entete form input[type='checkbox'] { border:2px solid red; } -div.pied { - position: fixed; - bottom: 0px; - height: 50px; - width: 90%; - background-image: url(../img/collines.png); - z-index: 5; - min-width: 630px; -} - div.contenu { padding-top: 50px; min-width: 630px; @@ -135,7 +125,7 @@ div.contenu { table#liste { width: 100%; border-spacing: 0px 0px; - margin-bottom:50px; + margin-bottom:70px; margin-top: 10px; } @@ -294,4 +284,20 @@ table#liste table.detail td.titreDetail { font-weight: bold; } +div.pied { + position: fixed; + bottom: 0px; + height: 14px; + width: 90%; + background-image: url(../img/collines.png); + background-repeat: repeat-x; + z-index: 5; + min-width: 630px; + padding-top: 50px; +} +div.pied p { + background-color: #64A25C; + font-size: 8pt; + padding-left: 10px; +} diff --git a/doc/todo.txt b/doc/todo.txt index 4e7bc86..7d7a26a 100644 --- a/doc/todo.txt +++ b/doc/todo.txt @@ -4,14 +4,14 @@ * Lorsqu'un élément n'est pas trouvée mettre à nil, par exemple si pas de date pour un film. [ok] Si un film existe déjà dans la BD, alors on regarde le fichier de ce film est déjà associé à un film dans la BD, si non alors on l'ajoute. Cela permet d'avoir plusieurs fichiers pour un seul film ou série. -* Afficher, au niveau du XHTML, les fichiers sous la forme d'une liste déroulante +[ok] Afficher, au niveau du XHTML, les fichiers sous la forme d'une liste déroulante [ok] Vérifier si le fichier ne se trouve pas déjà dans la base de données (en comparant le nom du fichier, si oui alors ne pas le traiter) -* Traiter les noms des fichiers de manière relatifs +[ok] Traiter les noms des fichiers de manière relatifs par exemple "/Horreur/28 jours plus tard.avi" au lieu de "F:\Films/Horreur/28 jours plus tard.avi" [ok] Si plusieurs réponses pour une recherche alors ne pas traiter le film, mémoriser son nom, fichier ainsi que les réponses possibles. -* Demander à la fin du traitement à l'utilisateur quel résultat correspond pour chaque film +[ok] Demander à la fin du traitement à l'utilisateur quel résultat correspond pour chaque film * Parser les langues et sous-titres et les ajouter dans l'xml -* Corriger les
qui apparaissent dans les synopsis +[ok] Corriger les
qui apparaissent dans les synopsis * Pomper les images (affichettes) -* Certains synopsis sont remplit avec un peu n'importe quoi (html et cie) (voir ben hur) -* Les films "vide" ne s'affiche pas bien (il manque une partie du tableau) \ No newline at end of file +[ok] Certains synopsis sont remplit avec un peu n'importe quoi (html et cie) (voir ben hur) +[ok] Les films "vide" ne s'affiche pas bien (il manque une partie du tableau) \ No newline at end of file diff --git a/js/yopyop.js b/js/yopyop.js index dae2cee..ddd61ea 100644 --- a/js/yopyop.js +++ b/js/yopyop.js @@ -91,7 +91,7 @@ function doRecherche() var liste = document.getElementById("liste") var lignes = liste.childNodes - for(i = 0; i < lignes.length; i += 2) + for(var i = 0; i < lignes.length; i += 2) { nbFilm++; diff --git a/xml/test.xml b/xml/test.xml index 0d93ab9..b19ebda 100644 --- a/xml/test.xml +++ b/xml/test.xml @@ -1,23 +1,6 @@ - - - Le Jour d'Apres [RV9 Aac] [Fr Eng] [Fr Eng Ne] [XCT].avi - - Le Jour d'Apres - - - - - - - - - - - - Banlieue 13.avi @@ -42,29 +25,14 @@ Action Policier - Paris, 2013. Damien est l'élite de la police. Officier d'une unité spéciale d'intervention, expert en arts martiaux, il est passé maître dans l'art de l'infiltration et sait mener à terme ses opérations par des actions rapides, précises et néanmoins musclées.<br> -Et c'est bien la mission la plus extrême de sa carrière qui vient de lui être confiée : une arme de destruction massive a été dérobée par le plus puissant gang de la banlieue. Damien est chargé d'infiltrer dans le secteur pour désamorcer la bombe ou la récupérer. + +

Paris, 2013. Damien est l'élite de la police. Officier d'une unité spéciale d'intervention, expert en arts martiaux, il est passé maître dans l'art de l'infiltration et sait mener à terme ses opérations par des actions rapides, précises et néanmoins musclées.

+

Et c'est bien la mission la plus extrême de sa carrière qui vient de lui être confiée : une arme de destruction massive a été dérobée par le plus puissant gang de la banlieue. Damien est chargé d'infiltrer dans le secteur pour désamorcer la bombe ou la récupérer.

+
http://www.allocine.fr/film/fichefilm_gen_cfilm=54107.html
- - Robocop 1.avi - - Robocop 1 - - - - - - - - - - - - - Le 51e Etat.rmvb @@ -90,62 +58,14 @@ Et c'est bien la mission la plus extrême de sa carrière qui vient de lui Comédie Action - Elmo McElroy est vraiment un individu à part. Chimiste génial, il a mis au point le POS 51, LA drogue parfaite, celle qui vous donne l'impression que Dieu lui-même est venu vous faire signe. Bien décidé à commercialiser son petit chef-d'oeuvre sans intermédiaire, Elmo se débarasse de son encombrant patron, Le Lézard, pour rallier l'Angleterre - le 51e Etat - et s'associe avec Félix Desouza, un petit nerveux qui règne sur l'<i>underground</i> de Liverpool, parle tout le temps et ne supporte pas ce qui est Américain.<br />Ce qu'ignore Elmo c'est que son ex-patron est toujours vivant, déterminé à se venger et à mettre la main sur la formule chimique. Et en plus il n'est pas le seul : la superbe et dangereuse Dakota Phillips est également sur ses traces. + +

Elmo McElroy est vraiment un individu à part. Chimiste génial, il a mis au point le POS 51, LA drogue parfaite, celle qui vous donne l'impression que Dieu lui-même est venu vous faire signe. Bien décidé à commercialiser son petit chef-d'oeuvre sans intermédiaire, Elmo se débarasse de son encombrant patron, Le Lézard, pour rallier l'Angleterre - le 51e Etat - et s'associe avec Félix Desouza, un petit nerveux qui règne sur l'underground de Liverpool, parle tout le temps et ne supporte pas ce qui est Américain.

+

Ce qu'ignore Elmo c'est que son ex-patron est toujours vivant, déterminé à se venger et à mettre la main sur la formule chimique. Et en plus il n'est pas le seul : la superbe et dangereuse Dakota Phillips est également sur ses traces.

+
http://www.allocine.fr/film/fichefilm_gen_cfilm=29085.html
- - Sky High.avi - - Sky High - - - - - - - - - - - - - - - A True Mob Story [x264 Aac] [Fr Chn] [Fr].mkv - - A True Mob Story - - - - - - - - - - - - - - - Big Boss.avi - - Big Boss - - - - - - - - - - - - - Robocop 3.avi @@ -170,7 +90,9 @@ Et c'est bien la mission la plus extrême de sa carrière qui vient de lui Action Science fiction - Dans un futur proche, la multinationale OCP decide de construire Delta City sur les ruines du vieux Detroit. Un groupe d'habitants irreductibles refuse de quitter les lieux. Pour les convaincre, OCP decide de reprogrammer Rococop, policier d'elite fabrique a partir de l'officier Murphy. Mais le docteur Lazarus, charge de l'entretien de Robocop, refuse d'effacer la memoire de Murphy. + +

Dans un futur proche, la multinationale OCP decide de construire Delta City sur les ruines du vieux Detroit. Un groupe d'habitants irreductibles refuse de quitter les lieux. Pour les convaincre, OCP decide de reprogrammer Rococop, policier d'elite fabrique a partir de l'officier Murphy. Mais le docteur Lazarus, charge de l'entretien de Robocop, refuse d'effacer la memoire de Murphy.

+
http://www.allocine.fr/film/fichefilm_gen_cfilm=8143.html
@@ -198,7 +120,10 @@ Et c'est bien la mission la plus extrême de sa carrière qui vient de lui Action - Une nuit de réveillon, l'un des membres les plus dangereux de la mafia, Marion Bishop, est temporairement incarcéré dans un bâtiment gardé par une équipe de police placée sous le commandement du sergent Jake Roenick.<br />Alors que le monde entier fait la fête, flics et malfrats vont devoir s'unir pour avoir une chance de survivre à l'assaut mortel venu du dehors. Face aux moyens démesurés des attaquants, un seul objectif : tenir jusqu'à l'aube... + +

Une nuit de réveillon, l'un des membres les plus dangereux de la mafia, Marion Bishop, est temporairement incarcéré dans un bâtiment gardé par une équipe de police placée sous le commandement du sergent Jake Roenick.

+

Alors que le monde entier fait la fête, flics et malfrats vont devoir s'unir pour avoir une chance de survivre à l'assaut mortel venu du dehors. Face aux moyens démesurés des attaquants, un seul objectif : tenir jusqu'à l'aube...

+
http://www.allocine.fr/film/fichefilm_gen_cfilm=55907.html @@ -227,25 +152,10 @@ Et c'est bien la mission la plus extrême de sa carrière qui vient de lui Policier Action - Hong-Kong 1997. Les Britannique vont rendre dans quelques mois a la Chine populaire une ville corrompue par le crime. Alors que les policiers ont baissé les bras, un groupe d'inspecteurs, mene par Yuen, surnommé Tequila, décide de mettre fin a la suprématie des gangs. + +

Hong-Kong 1997. Les Britannique vont rendre dans quelques mois a la Chine populaire une ville corrompue par le crime. Alors que les policiers ont baissé les bras, un groupe d'inspecteurs, mene par Yuen, surnommé Tequila, décide de mettre fin a la suprématie des gangs.

+
http://www.allocine.fr/film/fichefilm_gen_cfilm=8035.html - - - Rocky [x264 Aac] [Fr Eng] [Fr Eng].mkv - - Rocky - - - - - - - - - - - -
\ No newline at end of file diff --git a/xpi/chrome.manifest b/xpi/chrome.manifest new file mode 100644 index 0000000..72e5257 --- /dev/null +++ b/xpi/chrome.manifest @@ -0,0 +1,3 @@ +content divxlist chrome/content/ +# overlay chrome://browser/content/browser.xul chrome://divxlist/content/test.xul +#overlay chrome://browser/content/browser.xul chrome://divxlist/content/load.xul \ No newline at end of file diff --git a/xpi/components/handleProtocol.js b/xpi/components/handleProtocol.js new file mode 100644 index 0000000..30db1f1 --- /dev/null +++ b/xpi/components/handleProtocol.js @@ -0,0 +1,142 @@ + + +// components defined in this file +const DIVXPROT_HANDLER_CONTRACTID = "@mozilla.org/network/protocol;1?name=divx"; +const DIVXPROT_HANDLER_CID = Components.ID("{65aa548e-1dda-11dc-8314-0800200c9a66}"); + +// components used in this file +const NS_IOSERVICE_CID = "{9ac9e770-18bc-11d3-9337-00104ba0fd40}"; +const NS_PREFSERVICE_CONTRACTID = "@mozilla.org/preferences-service;1"; +const URI_CONTRACTID = "@mozilla.org/network/simple-uri;1"; +const NS_WINDOWWATCHER_CONTRACTID = "@mozilla.org/embedcomp/window-watcher;1"; +const STREAMIOCHANNEL_CONTRACTID = "@mozilla.org/network/stream-io-channel;1"; +const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1"; + +// interfaces used in this file +const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler; +const nsIURI = Components.interfaces.nsIURI; +const nsISupports = Components.interfaces.nsISupports; +const nsIIOService = Components.interfaces.nsIIOService; +const nsIPrefService = Components.interfaces.nsIPrefService; +const nsIWindowWatcher = Components.interfaces.nsIWindowWatcher; +const nsIChannel = Components.interfaces.nsIChannel; + + +/***** ProtocolHandler *****/ + +function Ten70ProtocolHandler(scheme) +{ + this.scheme = scheme; +} + +// attribute defaults +Ten70ProtocolHandler.prototype.defaultPort = -1; +Ten70ProtocolHandler.prototype.protocolFlags = nsIProtocolHandler.URI_NORELATIVE; + +Ten70ProtocolHandler.prototype.allowPort = function(aPort, aScheme) +{ + return false; +} + +Ten70ProtocolHandler.prototype.newURI = function(aSpec, aCharset, aBaseURI) +{ + var uri = Components.classes[URI_CONTRACTID].createInstance(nsIURI); + uri.spec = aSpec; + return uri; +} + +Ten70ProtocolHandler.prototype.newChannel = function(aURI) +{ + var chemin = aURI.spec; + + var root = "F:/Films/"; + chemin = chemin.replace("divx://", root) + + dump(chemin); + + // create an nsILocalFile for the executable + var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); + file.initWithPath("C:\\Program Files\\VideoLAN\\VLC\\vlc.exe"); + + // create an nsIProcess + var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); + process.init(file); + + // Run the process. + // If first param is true, calling thread will be blocked until + // called process terminates. + // Second and third params are used to pass command-line arguments + // to the process. + var args = [chemin, "-f"]; + process.run(false, args, args.length); + + + var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService); + + return ios.newChannel("javascript:document.location='" + finalURL + "'", null, null); +} + + +/***** DIVXProtocolHandlerFactory *****/ + +function Ten70ProtocolHandlerFactory(scheme) +{ + this.scheme = scheme; +} + +Ten70ProtocolHandlerFactory.prototype.createInstance = function(outer, iid) +{ + if(outer != null) throw Components.results.NS_ERROR_NO_AGGREGATION; + + if(!iid.equals(nsIProtocolHandler) && !iid.equals(nsISupports)) + throw Components.results.NS_ERROR_INVALID_ARG; + + return new Ten70ProtocolHandler(this.scheme); +} + +var factory_divx = new Ten70ProtocolHandlerFactory("divx"); + +/***** DIVXModule *****/ + +var DIVXModule = new Object(); + +DIVXModule.registerSelf = function(compMgr, fileSpec, location, type) +{ + compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar); + + // register protocol handlers + compMgr.registerFactoryLocation(DIVXPROT_HANDLER_CID, + "DivX", + DIVXPROT_HANDLER_CONTRACTID, + fileSpec, location, type); +} + +DIVXModule.unregisterSelf = function(compMgr, fileSpec, location) +{ + compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar); + + // unregister our components + compMgr.unregisterFactoryLocation(DIVXPROT_HANDLER_CID, fileSpec); +} + +DIVXModule.getClassObject = function(compMgr, cid, iid) +{ + if(!iid.equals(Components.interfaces.nsIFactory)) + throw Components.results.NS_ERROR_NOT_IMPLEMENTED; + + if(cid.equals(DIVXPROT_HANDLER_CID)) return factory_divx; + + throw Components.results.NS_ERROR_NO_INTERFACE; +} + +DIVXModule.canUnload = function(compMgr) +{ + return true; +} + +/***** Entrypoint *****/ + +function NSGetModule(compMgr, fileSpec) +{ + return DIVXModule; +} diff --git a/xpi/defaults/preferences/prefs.js b/xpi/defaults/preferences/prefs.js new file mode 100644 index 0000000..62f931b --- /dev/null +++ b/xpi/defaults/preferences/prefs.js @@ -0,0 +1 @@ +pref("divxlist.root", "F:\\Films\\"); \ No newline at end of file diff --git a/xpi/install.rdf b/xpi/install.rdf new file mode 100644 index 0000000..5ab9713 --- /dev/null +++ b/xpi/install.rdf @@ -0,0 +1,27 @@ + + + + + + divxlist@divx.euphorik.ch + 1.0 + 2 + + + + + {ec8030f7-c20a-464f-9b0e-13a3a9e97384} + 1.5 + 2.0.0.* + + + + + DivX List + Pour lister les divx + Pifou + http://divx.euphorik.ch + + \ No newline at end of file diff --git a/xsl/yopyop.xsl b/xsl/yopyop.xsl index 5b22174..f1f9ad6 100644 --- a/xsl/yopyop.xsl +++ b/xsl/yopyop.xsl @@ -80,7 +80,7 @@ -
+

by pifou

-- 2.43.0