From: pifou <pifou@02bbb61a-6d21-0410-aba0-cb053bdfd66a>
Date: Mon, 18 Jun 2007 22:23:03 +0000 (+0000)
Subject: ADD Extension Firefox pour lancer les divx (pas fini)
X-Git-Url: https://git.euphorik.ch/?a=commitdiff_plain;h=92c4a7fa969d325828d932c09d6686f4e6f52171;p=pompage.git

ADD Extension Firefox pour lancer les divx (pas fini)

git-svn-id: svn://euphorik.ch/pompage@26 02bbb61a-6d21-0410-aba0-cb053bdfd66a
---

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 <br/> qui apparaissent dans les synopsis
+[ok] Corriger les <br/> 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 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <?xml-stylesheet type="text/xsl" href="../xsl/yopyop.xsl"?>
 <filmographie>
-  <film id='7'>
-    <fichiers>
-      <fichier>Le Jour d&apos;Apres [RV9 Aac] [Fr Eng] [Fr Eng Ne] [XCT].avi</fichier>
-    </fichiers>
-    <titre>Le Jour d&apos;Apres</titre>
-    <annee/>
-    <realisateurs/>
-    <acteurs/>
-    <lespays/>
-    <duree></duree>
-    <critiquePresse/>
-    <critiqueSpectateur/>
-    <genres/>
-    <synopsis/>
-    <budget unite='euro'/>
-    <url/>
-  </film>
   <film id='4'>
     <fichiers>
       <fichier>Banlieue 13.avi</fichier>
@@ -42,29 +25,14 @@
       <genre>Action</genre>
       <genre>Policier</genre>
     </genres>
-    <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;
-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>
+    <synopsis>
+      <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>
+      <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>
+    </synopsis>
     <budget unite='euro'/>
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=54107.html</url>
   </film>
   <film id='8'>
-    <fichiers>
-      <fichier>Robocop 1.avi</fichier>
-    </fichiers>
-    <titre>Robocop 1</titre>
-    <annee/>
-    <realisateurs/>
-    <acteurs/>
-    <lespays/>
-    <duree></duree>
-    <critiquePresse/>
-    <critiqueSpectateur/>
-    <genres/>
-    <synopsis/>
-    <budget unite='euro'/>
-    <url/>
-  </film>
-  <film id='6'>
     <fichiers>
       <fichier>Le 51e Etat.rmvb</fichier>
     </fichiers>
@@ -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>
       <genre>Action</genre>
     </genres>
-    <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>
+    <synopsis>
+      <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>
+      <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>
+    </synopsis>
     <budget unite='euro'/>
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=29085.html</url>
   </film>
   <film id='11'>
-    <fichiers>
-      <fichier>Sky High.avi</fichier>
-    </fichiers>
-    <titre>Sky High</titre>
-    <annee/>
-    <realisateurs/>
-    <acteurs/>
-    <lespays/>
-    <duree></duree>
-    <critiquePresse/>
-    <critiqueSpectateur/>
-    <genres/>
-    <synopsis/>
-    <budget unite='euro'/>
-    <url/>
-  </film>
-  <film id='2'>
-    <fichiers>
-      <fichier>A True Mob Story [x264 Aac] [Fr Chn] [Fr].mkv</fichier>
-    </fichiers>
-    <titre>A True Mob Story</titre>
-    <annee/>
-    <realisateurs/>
-    <acteurs/>
-    <lespays/>
-    <duree></duree>
-    <critiquePresse/>
-    <critiqueSpectateur/>
-    <genres/>
-    <synopsis/>
-    <budget unite='euro'/>
-    <url/>
-  </film>
-  <film id='5'>
-    <fichiers>
-      <fichier>Big Boss.avi</fichier>
-    </fichiers>
-    <titre>Big Boss</titre>
-    <annee/>
-    <realisateurs/>
-    <acteurs/>
-    <lespays/>
-    <duree></duree>
-    <critiquePresse/>
-    <critiqueSpectateur/>
-    <genres/>
-    <synopsis/>
-    <budget unite='euro'/>
-    <url/>
-  </film>
-  <film id='9'>
     <fichiers>
       <fichier>Robocop 3.avi</fichier>
     </fichiers>
@@ -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>
       <genre>Science fiction</genre>
     </genres>
-    <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>
+    <synopsis>
+      <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>
+    </synopsis>
     <budget unite='euro'/>
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8143.html</url>
   </film>
@@ -198,7 +120,10 @@ Et c&apos;est bien la mission la plus extrême de sa carrière qui vient de lui
     <genres>
       <genre>Action</genre>
     </genres>
-    <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>
+    <synopsis>
+      <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>
+      <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>
+    </synopsis>
     <budget unite='euro'/>
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=55907.html</url>
   </film>
@@ -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>
       <genre>Action</genre>
     </genres>
-    <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>
+    <synopsis>
+      <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>
+    </synopsis>
     <budget unite='euro'/>
     <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8035.html</url>
   </film>
-  <film id='10'>
-    <fichiers>
-      <fichier>Rocky [x264 Aac] [Fr Eng] [Fr Eng].mkv</fichier>
-    </fichiers>
-    <titre>Rocky</titre>
-    <annee/>
-    <realisateurs/>
-    <acteurs/>
-    <lespays/>
-    <duree></duree>
-    <critiquePresse/>
-    <critiqueSpectateur/>
-    <genres/>
-    <synopsis/>
-    <budget unite='euro'/>
-    <url/>
-  </film>
 </filmographie>
\ 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 @@
+<?xml version="1.0"?>
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+  <Description about="urn:mozilla:install-manifest">
+    <em:id>divxlist@divx.euphorik.ch</em:id>
+    <em:version>1.0</em:version>
+    <em:type>2</em:type><!-- 2 = extension -->
+   
+    <!-- Target Application this extension can install into, 
+         with minimum and maximum supported versions. --> 
+    <em:targetApplication>
+      <Description>
+        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+        <em:minVersion>1.5</em:minVersion>
+        <em:maxVersion>2.0.0.*</em:maxVersion>
+      </Description>
+    </em:targetApplication>
+   
+    <!-- Front End MetaData -->
+    <em:name>DivX List</em:name>
+    <em:description>Pour lister les divx</em:description>
+    <em:creator>Pifou</em:creator>
+    <em:homepageURL>http://divx.euphorik.ch</em:homepageURL>
+  </Description>      
+</RDF>
\ 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 @@
      </table>     
     </div>
     
-    <div class="pied"></div>
+    <div class="pied"><p>by pifou</p></div>
     
    </body>
   </html>