ADD Extension Firefox pour lancer les divx (pas fini)
authorpifou <pifou@02bbb61a-6d21-0410-aba0-cb053bdfd66a>
Mon, 18 Jun 2007 22:23:03 +0000 (22:23 +0000)
committerpifou <pifou@02bbb61a-6d21-0410-aba0-cb053bdfd66a>
Mon, 18 Jun 2007 22:23:03 +0000 (22:23 +0000)
git-svn-id: svn://euphorik.ch/pompage@26 02bbb61a-6d21-0410-aba0-cb053bdfd66a

css/yopyop.css
doc/todo.txt
js/yopyop.js
xml/test.xml
xpi/chrome.manifest [new file with mode: 0644]
xpi/components/handleProtocol.js [new file with mode: 0644]
xpi/defaults/preferences/prefs.js [new file with mode: 0644]
xpi/install.rdf [new file with mode: 0644]
xsl/yopyop.xsl

index bb631fd..ac3501b 100644 (file)
@@ -117,16 +117,6 @@ div.entete form input[type='checkbox'] {
    border:2px solid red;\r
 }\r
 \r
-div.pied {\r
-   position: fixed;\r
-   bottom: 0px;\r
-   height: 50px;\r
-   width: 90%;\r
-   background-image: url(../img/collines.png);\r
-   z-index: 5;\r
-   min-width: 630px;\r
-}\r
-\r
 div.contenu {\r
    padding-top: 50px;\r
    min-width: 630px;\r
@@ -135,7 +125,7 @@ div.contenu {
 table#liste {\r
    width: 100%;\r
    border-spacing: 0px 0px;\r
-   margin-bottom:50px;\r
+   margin-bottom:70px;\r
    margin-top: 10px;   \r
 }\r
 \r
@@ -294,4 +284,20 @@ table#liste table.detail td.titreDetail {
    font-weight: bold;\r
 }\r
 \r
+div.pied {\r
+   position: fixed;\r
+   bottom: 0px;\r
+   height: 14px;\r
+   width: 90%;\r
+   background-image: url(../img/collines.png);\r
+   background-repeat: repeat-x;\r
+   z-index: 5;\r
+   min-width: 630px;\r
+   padding-top: 50px;\r
+}\r
+div.pied p {\r
+   background-color: #64A25C;\r
+   font-size: 8pt;\r
+   padding-left: 10px;\r
+}\r
 \r
index 4e7bc86..7d7a26a 100644 (file)
@@ -4,14 +4,14 @@
 * Lorsqu'un élément n'est pas trouvée mettre à nil, par exemple si pas de date pour un film.\r
 [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.\r
   Cela permet d'avoir plusieurs fichiers pour un seul film ou série.\r
-* Afficher, au niveau du XHTML, les fichiers sous la forme d'une liste déroulante\r
+[ok] Afficher, au niveau du XHTML, les fichiers sous la forme d'une liste déroulante\r
 [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)\r
-* Traiter les noms des fichiers de manière relatifs\r
+[ok] Traiter les noms des fichiers de manière relatifs\r
   par exemple "/Horreur/28 jours plus tard.avi" au lieu de "F:\Films/Horreur/28 jours plus tard.avi"\r
 [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.\r
-* Demander à la fin du traitement à l'utilisateur quel résultat correspond pour chaque film\r
+[ok] Demander à la fin du traitement à l'utilisateur quel résultat correspond pour chaque film\r
 * Parser les langues et sous-titres et les ajouter dans l'xml\r
-* Corriger les <br/> qui apparaissent dans les synopsis\r
+[ok] Corriger les <br/> qui apparaissent dans les synopsis\r
 * Pomper les images (affichettes)\r
-* Certains synopsis sont remplit avec un peu n'importe quoi (html et cie) (voir ben hur)\r
-* 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)\r
+[ok] Les films "vide" ne s'affiche pas bien (il manque une partie du tableau)
\ No newline at end of file
index dae2cee..ddd61ea 100644 (file)
@@ -91,7 +91,7 @@ function doRecherche()
    \r
    var liste = document.getElementById("liste")\r
    var lignes = liste.childNodes\r
-   for(i = 0; i < lignes.length; i += 2)\r
+   for(var i = 0; i < lignes.length; i += 2)\r
    {\r
       nbFilm++;\r
       \r
index 0d93ab9..b19ebda 100644 (file)
@@ -1,23 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <?xml-stylesheet type="text/xsl" href="../xsl/yopyop.xsl"?>\r
 <filmographie>\r
-  <film id='7'>\r
-    <fichiers>\r
-      <fichier>Le Jour d&apos;Apres [RV9 Aac] [Fr Eng] [Fr Eng Ne] [XCT].avi</fichier>\r
-    </fichiers>\r
-    <titre>Le Jour d&apos;Apres</titre>\r
-    <annee/>\r
-    <realisateurs/>\r
-    <acteurs/>\r
-    <lespays/>\r
-    <duree></duree>\r
-    <critiquePresse/>\r
-    <critiqueSpectateur/>\r
-    <genres/>\r
-    <synopsis/>\r
-    <budget unite='euro'/>\r
-    <url/>\r
-  </film>\r
   <film id='4'>\r
     <fichiers>\r
       <fichier>Banlieue 13.avi</fichier>\r
       <genre>Action</genre>\r
       <genre>Policier</genre>\r
     </genres>\r
-    <synopsis>Paris, 2013. Damien est l&apos;élite de la police. Officier d&apos;une unité spéciale d&apos;intervention, expert en arts martiaux, il est passé maître dans l&apos;art de l&apos;infiltration et sait mener à terme ses opérations par des actions rapides, précises et néanmoins musclées.&lt;br&gt;\r
-Et c&apos;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&apos;infiltrer dans le secteur pour désamorcer la bombe ou la récupérer.</synopsis>\r
+    <synopsis>\r
+      <p>Paris, 2013. Damien est l&apos;élite de la police. Officier d&apos;une unité spéciale d&apos;intervention, expert en arts martiaux, il est passé maître dans l&apos;art de l&apos;infiltration et sait mener à terme ses opérations par des actions rapides, précises et néanmoins musclées.</p>\r
+      <p>Et c&apos;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&apos;infiltrer dans le secteur pour désamorcer la bombe ou la récupérer.</p>\r
+    </synopsis>\r
     <budget unite='euro'/>\r
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=54107.html</url>\r
   </film>\r
   <film id='8'>\r
-    <fichiers>\r
-      <fichier>Robocop 1.avi</fichier>\r
-    </fichiers>\r
-    <titre>Robocop 1</titre>\r
-    <annee/>\r
-    <realisateurs/>\r
-    <acteurs/>\r
-    <lespays/>\r
-    <duree></duree>\r
-    <critiquePresse/>\r
-    <critiqueSpectateur/>\r
-    <genres/>\r
-    <synopsis/>\r
-    <budget unite='euro'/>\r
-    <url/>\r
-  </film>\r
-  <film id='6'>\r
     <fichiers>\r
       <fichier>Le 51e Etat.rmvb</fichier>\r
     </fichiers>\r
@@ -90,62 +58,14 @@ Et c&apos;est bien la mission la plus extrême de sa carrière qui vient de lui
       <genre>Comédie</genre>\r
       <genre>Action</genre>\r
     </genres>\r
-    <synopsis>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&apos;impression que Dieu lui-même est venu vous faire signe. Bien décidé à commercialiser son petit chef-d&apos;oeuvre sans intermédiaire, Elmo se débarasse de son encombrant patron, Le Lézard, pour rallier l&apos;Angleterre - le 51e Etat - et s&apos;associe avec Félix Desouza, un petit nerveux qui règne sur l&apos;&lt;i&gt;underground&lt;/i&gt; de Liverpool, parle tout le temps et ne supporte pas ce qui est Américain.&lt;br /&gt;Ce qu&apos;ignore Elmo c&apos;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&apos;est pas le seul : la superbe et dangereuse Dakota Phillips est également sur ses traces.</synopsis>\r
+    <synopsis>\r
+      <p>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&apos;impression que Dieu lui-même est venu vous faire signe. Bien décidé à commercialiser son petit chef-d&apos;oeuvre sans intermédiaire, Elmo se débarasse de son encombrant patron, Le Lézard, pour rallier l&apos;Angleterre - le 51e Etat - et s&apos;associe avec Félix Desouza, un petit nerveux qui règne sur l&apos;underground de Liverpool, parle tout le temps et ne supporte pas ce qui est Américain.</p>\r
+      <p>Ce qu&apos;ignore Elmo c&apos;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&apos;est pas le seul : la superbe et dangereuse Dakota Phillips est également sur ses traces.</p>\r
+    </synopsis>\r
     <budget unite='euro'/>\r
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=29085.html</url>\r
   </film>\r
   <film id='11'>\r
-    <fichiers>\r
-      <fichier>Sky High.avi</fichier>\r
-    </fichiers>\r
-    <titre>Sky High</titre>\r
-    <annee/>\r
-    <realisateurs/>\r
-    <acteurs/>\r
-    <lespays/>\r
-    <duree></duree>\r
-    <critiquePresse/>\r
-    <critiqueSpectateur/>\r
-    <genres/>\r
-    <synopsis/>\r
-    <budget unite='euro'/>\r
-    <url/>\r
-  </film>\r
-  <film id='2'>\r
-    <fichiers>\r
-      <fichier>A True Mob Story [x264 Aac] [Fr Chn] [Fr].mkv</fichier>\r
-    </fichiers>\r
-    <titre>A True Mob Story</titre>\r
-    <annee/>\r
-    <realisateurs/>\r
-    <acteurs/>\r
-    <lespays/>\r
-    <duree></duree>\r
-    <critiquePresse/>\r
-    <critiqueSpectateur/>\r
-    <genres/>\r
-    <synopsis/>\r
-    <budget unite='euro'/>\r
-    <url/>\r
-  </film>\r
-  <film id='5'>\r
-    <fichiers>\r
-      <fichier>Big Boss.avi</fichier>\r
-    </fichiers>\r
-    <titre>Big Boss</titre>\r
-    <annee/>\r
-    <realisateurs/>\r
-    <acteurs/>\r
-    <lespays/>\r
-    <duree></duree>\r
-    <critiquePresse/>\r
-    <critiqueSpectateur/>\r
-    <genres/>\r
-    <synopsis/>\r
-    <budget unite='euro'/>\r
-    <url/>\r
-  </film>\r
-  <film id='9'>\r
     <fichiers>\r
       <fichier>Robocop 3.avi</fichier>\r
     </fichiers>\r
@@ -170,7 +90,9 @@ Et c&apos;est bien la mission la plus extrême de sa carrière qui vient de lui
       <genre>Action</genre>\r
       <genre>Science fiction</genre>\r
     </genres>\r
-    <synopsis>Dans un futur proche, la multinationale OCP decide de construire Delta City sur les ruines du vieux Detroit. Un groupe d&apos;habitants irreductibles refuse de quitter les lieux. Pour les convaincre, OCP decide de reprogrammer Rococop, policier d&apos;elite fabrique a partir de l&apos;officier Murphy. Mais le docteur Lazarus, charge de l&apos;entretien de Robocop, refuse d&apos;effacer la memoire de Murphy.</synopsis>\r
+    <synopsis>\r
+      <p>Dans un futur proche, la multinationale OCP decide de construire Delta City sur les ruines du vieux Detroit. Un groupe d&apos;habitants irreductibles refuse de quitter les lieux. Pour les convaincre, OCP decide de reprogrammer Rococop, policier d&apos;elite fabrique a partir de l&apos;officier Murphy. Mais le docteur Lazarus, charge de l&apos;entretien de Robocop, refuse d&apos;effacer la memoire de Murphy.</p>\r
+    </synopsis>\r
     <budget unite='euro'/>\r
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8143.html</url>\r
   </film>\r
@@ -198,7 +120,10 @@ Et c&apos;est bien la mission la plus extrême de sa carrière qui vient de lui
     <genres>\r
       <genre>Action</genre>\r
     </genres>\r
-    <synopsis>Une nuit de réveillon, l&apos;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.&lt;br /&gt;Alors que le monde entier fait la fête, flics et malfrats vont devoir s&apos;unir pour avoir une chance de survivre à l&apos;assaut mortel venu du dehors. Face aux moyens démesurés des attaquants, un seul objectif : tenir jusqu&apos;à l&apos;aube... </synopsis>\r
+    <synopsis>\r
+      <p>Une nuit de réveillon, l&apos;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.</p>\r
+      <p>Alors que le monde entier fait la fête, flics et malfrats vont devoir s&apos;unir pour avoir une chance de survivre à l&apos;assaut mortel venu du dehors. Face aux moyens démesurés des attaquants, un seul objectif : tenir jusqu&apos;à l&apos;aube... </p>\r
+    </synopsis>\r
     <budget unite='euro'/>\r
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=55907.html</url>\r
   </film>\r
@@ -227,25 +152,10 @@ Et c&apos;est bien la mission la plus extrême de sa carrière qui vient de lui
       <genre>Policier</genre>\r
       <genre>Action</genre>\r
     </genres>\r
-    <synopsis>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&apos;inspecteurs, mene par Yuen, surnommé Tequila, décide de mettre fin a la suprématie des gangs.</synopsis>\r
+    <synopsis>\r
+      <p>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&apos;inspecteurs, mene par Yuen, surnommé Tequila, décide de mettre fin a la suprématie des gangs.</p>\r
+    </synopsis>\r
     <budget unite='euro'/>\r
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8035.html</url>\r
   </film>\r
-  <film id='10'>\r
-    <fichiers>\r
-      <fichier>Rocky [x264 Aac] [Fr Eng] [Fr Eng].mkv</fichier>\r
-    </fichiers>\r
-    <titre>Rocky</titre>\r
-    <annee/>\r
-    <realisateurs/>\r
-    <acteurs/>\r
-    <lespays/>\r
-    <duree></duree>\r
-    <critiquePresse/>\r
-    <critiqueSpectateur/>\r
-    <genres/>\r
-    <synopsis/>\r
-    <budget unite='euro'/>\r
-    <url/>\r
-  </film>\r
 </filmographie>
\ No newline at end of file
diff --git a/xpi/chrome.manifest b/xpi/chrome.manifest
new file mode 100644 (file)
index 0000000..72e5257
--- /dev/null
@@ -0,0 +1,3 @@
+content     divxlist     chrome/content/\r
+# overlay chrome://browser/content/browser.xul chrome://divxlist/content/test.xul\r
+#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 (file)
index 0000000..30db1f1
--- /dev/null
@@ -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";\r
+
+// 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)
+{    \r
+   var uri = Components.classes[URI_CONTRACTID].createInstance(nsIURI);\r
+   uri.spec = aSpec;\r
+   return uri;
+}
+
+Ten70ProtocolHandler.prototype.newChannel = function(aURI)
+{\r
+   var chemin = aURI.spec;\r
+   \r
+   var root = "F:/Films/";\r
+   chemin = chemin.replace("divx://", root)\r
+   \r
+   dump(chemin);\r
+      \r
+   // create an nsILocalFile for the executable\r
+   var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\r
+   file.initWithPath("C:\\Program Files\\VideoLAN\\VLC\\vlc.exe");\r
+\r
+   // create an nsIProcess\r
+   var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);\r
+   process.init(file);\r
+\r
+   // Run the process.\r
+   // If first param is true, calling thread will be blocked until\r
+   // called process terminates.\r
+   // Second and third params are used to pass command-line arguments\r
+   // to the process.\r
+   var args = [chemin, "-f"];\r
+   process.run(false, args, args.length);\r
+   \r
+   \r
+   var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);\r
+\r
+   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 (file)
index 0000000..62f931b
--- /dev/null
@@ -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 (file)
index 0000000..5ab9713
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>\r
+\r
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
+     xmlns:em="http://www.mozilla.org/2004/em-rdf#">\r
+\r
+  <Description about="urn:mozilla:install-manifest">\r
+    <em:id>divxlist@divx.euphorik.ch</em:id>\r
+    <em:version>1.0</em:version>\r
+    <em:type>2</em:type><!-- 2 = extension -->\r
+   \r
+    <!-- Target Application this extension can install into, \r
+         with minimum and maximum supported versions. --> \r
+    <em:targetApplication>\r
+      <Description>\r
+        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>\r
+        <em:minVersion>1.5</em:minVersion>\r
+        <em:maxVersion>2.0.0.*</em:maxVersion>\r
+      </Description>\r
+    </em:targetApplication>\r
+   \r
+    <!-- Front End MetaData -->\r
+    <em:name>DivX List</em:name>\r
+    <em:description>Pour lister les divx</em:description>\r
+    <em:creator>Pifou</em:creator>\r
+    <em:homepageURL>http://divx.euphorik.ch</em:homepageURL>\r
+  </Description>      \r
+</RDF>
\ No newline at end of file
index 5b22174..f1f9ad6 100644 (file)
@@ -80,7 +80,7 @@
      </table>     \r
     </div>\r
     \r
-    <div class="pied"></div>\r
+    <div class="pied"><p>by pifou</p></div>\r
     
    </body>
   </html>