From: <lop...@us...> - 2009-11-19 22:03:23
|
Revision: 3171 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3171&view=rev Author: lopeztuparles Date: 2009-11-19 22:03:10 +0000 (Thu, 19 Nov 2009) Log Message: ----------- - Ready for MP 1.1 - Minor Improvement : Download missing DTD. Mapping isn't necessary with TV server Modified Paths: -------------- trunk/plugins/WebEPGfr/WebEPGfr.cs trunk/plugins/WebEPGfr/WebEPGfr.csproj trunk/plugins/WebEPGfr/WebEPGfrSetup.cs trunk/plugins/WebEPGfr/WebEPGfr_planification/WebEPGfr_planification.csproj trunk/plugins/WebEPGfr/XmlToolBox.cs Modified: trunk/plugins/WebEPGfr/WebEPGfr.cs =================================================================== --- trunk/plugins/WebEPGfr/WebEPGfr.cs 2009-11-19 20:26:07 UTC (rev 3170) +++ trunk/plugins/WebEPGfr/WebEPGfr.cs 2009-11-19 22:03:10 UTC (rev 3171) @@ -75,10 +75,13 @@ String _Chemin_guide_MP = ""; String _Chemin_guide_MP_bak = ""; String _Chemin_guide_WebEPGfr = ""; + String _DTDUri = @"http://membled.com/work/apps/xmltv/cvs_working/xmltv.dtd"; + bool _copie_tvguide = false; bool _backup = false; bool _backup_ok = false; bool _bPostProcess = false; + // permet de savoir si le Serveur Tele est install\xE9 bool _TVServer = System.IO.File.Exists(Config.GetFolder(Config.Dir.Plugins) + @"\Windows\TvPlugin.dll"); @@ -392,32 +395,36 @@ Afficher_dialogbox_MP(Lib1, Lib2, Lib3, Lib4); return; } + if (!_TVServer) + {// Avec Tv Server le mapping n'est pas obligatoire + // Message d'erreur si le fichier .ini de mapping du site concerne n'existe pas + string FichierAverifier = oIntegration.Configuration.Repertoire_XMLTV_WebEPGfr + + _GrabberMethod.ToString() + "Integrator.ini"; + ExisteFichier = File.Exists(FichierAverifier); + + if (!ExisteFichier) + { + Lib1 = "Erreur de configuration"; + Lib2 = "Allez dans l'onglet 'Correspondance de"; + Lib3 = "cha\xEEnes' du site " + _GrabberMethod.ToString(); + Lib4 = "et cliquez sur Sauver."; + Afficher_dialogbox_MP(Lib1, Lib2, Lib3, Lib4); + return; + } - // Message d'erreur si le fichier .ini de mapping du site concerne n'existe pas - string FichierAverifier = oIntegration.Configuration.Repertoire_XMLTV_WebEPGfr - + _GrabberMethod.ToString() + "Integrator.ini"; - ExisteFichier = File.Exists(FichierAverifier); - if (!ExisteFichier) - { - Lib1 = "Erreur de configuration"; - Lib2 = "Allez dans l'onglet 'Correspondance de"; - Lib3 = "cha\xEEnes' du site " + _GrabberMethod.ToString(); - Lib4 = "et cliquez sur Sauver."; - Afficher_dialogbox_MP(Lib1, Lib2, Lib3, Lib4); - return; + // Message d'erreur si le fichier .ini de mapping du site concerne est vide + FileInfo fileinfo = new FileInfo(FichierAverifier); + if (fileinfo.Length == 0) + { + Lib1 = "Erreur de configuration"; + Lib2 = "Allez dans l'onglet 'Correspondance de"; + Lib3 = "cha\xEEnes' du site " + _GrabberMethod.ToString(); + Lib4 = "et d\xE9finissez les correspondances."; + Afficher_dialogbox_MP(Lib1, Lib2, Lib3, Lib4); + return; + } } - - // Message d'erreur si le fichier .ini de mapping du site concerne est vide - FileInfo fileinfo = new FileInfo(FichierAverifier); - if (fileinfo.Length == 0) - { - Lib1 = "Erreur de configuration"; - Lib2 = "Allez dans l'onglet 'Correspondance de"; - Lib3 = "cha\xEEnes' du site " + _GrabberMethod.ToString(); - Lib4 = "et d\xE9finissez les correspondances."; - Afficher_dialogbox_MP(Lib1, Lib2, Lib3, Lib4); - return; - } + } // Afficher une boite de dialogue avec retour sur ecran precedent @@ -600,7 +607,10 @@ } oIntegration.Configuration.MappingFile = InfosSuivantSites.GetMappingFileName(_GrabberMethod); oIntegration.GetMappings(oIntegration.Configuration.MappingFile); //etablit la liste des mappings - if (oIntegration.DoMapping() == 0) // R\xE9alise le mapping + + long lRes = oIntegration.DoMapping(); + + if (lRes == 0) // R\xE9alise le mapping { Initialise_date_WebEPGfr(); Initialise_date_MP(); @@ -610,6 +620,11 @@ } + else if (lRes == 1) + {//Pas de Mapping, il sera realis\xE9 par TVServer + _sInfoEtatEnCours = "T\xE9l\xE9chargement termin\xE9 sans mapping"; + Log.Info(_sInfoEtatEnCours); + } else { // si on est en backup sur le meme fichier guide ==> restore Modified: trunk/plugins/WebEPGfr/WebEPGfr.csproj =================================================================== --- trunk/plugins/WebEPGfr/WebEPGfr.csproj 2009-11-19 20:26:07 UTC (rev 3170) +++ trunk/plugins/WebEPGfr/WebEPGfr.csproj 2009-11-19 22:03:10 UTC (rev 3171) @@ -47,7 +47,7 @@ </Reference> <Reference Include="Dialogs, Version=1.0.1.9977, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\Program Files\Team MediaPortal\MediaPortal\Dialogs.dll</HintPath> + <HintPath>..\..\..\Program Files\Team MediaPortal\MediaPortal\plugins\Windows\Dialogs.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="Gentle.Common, Version=1.5.0.29053, Culture=neutral, PublicKeyToken=80b5de62e27be49b, processorArchitecture=MSIL"> @@ -76,6 +76,7 @@ <HintPath>..\..\..\Program Files\Team MediaPortal\MediaPortal\TvBusinessLayer.dll</HintPath> <Private>False</Private> </Reference> + <Reference Include="TVCapture-Databases, Version=1.1.0.38758, Culture=neutral, processorArchitecture=x86" /> <Reference Include="TVDatabase, Version=1.0.1.10483, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\Program Files\Team MediaPortal\MediaPortal\TVDatabase.dll</HintPath> @@ -195,6 +196,6 @@ </Target> --> <PropertyGroup> - <PostBuildEvent>copy $(ProjectName).dll "D:\SVN\MediaPortal\xbmc\bin\Release\plugins\Windows"</PostBuildEvent> + <PostBuildEvent>copy $(ProjectName).dll "C:\Program Files\Team MediaPortal\MediaPortal\plugins\Windows"</PostBuildEvent> </PropertyGroup> </Project> \ No newline at end of file Modified: trunk/plugins/WebEPGfr/WebEPGfrSetup.cs =================================================================== --- trunk/plugins/WebEPGfr/WebEPGfrSetup.cs 2009-11-19 20:26:07 UTC (rev 3170) +++ trunk/plugins/WebEPGfr/WebEPGfrSetup.cs 2009-11-19 22:03:10 UTC (rev 3171) @@ -50,7 +50,8 @@ ListViewItem MyItem; String _Nom_Fichier_Guide_MP = "TVguide.xml"; - String _DTD = ""; + String _DTD = string.Empty; + String _DTDUri = @"http://membled.com/work/apps/xmltv/cvs_working/xmltv.dtd"; bool _TVServer = System.IO.File.Exists(Config.GetFolder(Config.Dir.Plugins) + @"\Windows\TvPlugin.dll"); /// <summary> @@ -80,7 +81,7 @@ // Contr\xF4le de saisie private bool ControleSaisie() { -// Le nom d'utilisateur, le r\xE9pertoire XMLTV et le nom du fichier guide sont obligatoires + // Le nom d'utilisateur, le r\xE9pertoire XMLTV et le nom du fichier guide sont obligatoires if ( Repertoire_XMLTV_WebEPGfr.Text == "" && Nom_Fichier_Guide_WebEPGfr.Text == "") { libinfo.Text = "Le r\xE9pertoire XMLTV et le nom du fichier guide sont obligatoires"; @@ -89,32 +90,38 @@ } else { - if ((kazer_UserName.Text == "")&&(_GrabberMethod== InfosSuivantSites.Grabber.Kazer ) ) + if ( (string.IsNullOrEmpty (kazer_UserName.Text) )&&(_GrabberMethod== InfosSuivantSites.Grabber.Kazer ) ) { libinfo.Text = "Le nom d'utilisateur est obligatoire"; libinfo.ForeColor = Color.Red; return false; } - if (Repertoire_XMLTV_WebEPGfr.Text == "") + if ( string.IsNullOrEmpty (Repertoire_XMLTV_WebEPGfr.Text) ) { libinfo.Text = "Le r\xE9pertoire XMLTV est obligatoire"; libinfo.ForeColor = Color.Red; return false; } - if (Nom_Fichier_Guide_WebEPGfr.Text == "") + if ( string.IsNullOrEmpty (Nom_Fichier_Guide_WebEPGfr.Text) ) { libinfo.Text = "Le nom du fichier guide est obligatoire"; libinfo.ForeColor = Color.Red; return false; } -// Il faut que le r\xE9pertoire saisi contienne un fichier DTD + + // Il faut que le r\xE9pertoire saisi contienne un fichier DTD _DTD = Repertoire_XMLTV_WebEPGfr.Text + "\\xmltv.dtd"; if (!File.Exists(_DTD)) + { //Telechargement du DTD si il n'existe pas + XMLGrabber.HttpDownloader(new Uri(_DTDUri), _DTD); + } + if (!File.Exists(_DTD)) { libinfo.Text = "R\xE9pertoire XMLTV non valide (Fichier xmltv.dtd non trouv\xE9)"; libinfo.ForeColor = Color.Red; return false; } + return true; } } Modified: trunk/plugins/WebEPGfr/WebEPGfr_planification/WebEPGfr_planification.csproj =================================================================== --- trunk/plugins/WebEPGfr/WebEPGfr_planification/WebEPGfr_planification.csproj 2009-11-19 20:26:07 UTC (rev 3170) +++ trunk/plugins/WebEPGfr/WebEPGfr_planification/WebEPGfr_planification.csproj 2009-11-19 22:03:10 UTC (rev 3171) @@ -73,6 +73,6 @@ </Target> --> <PropertyGroup> - <PostBuildEvent>copy $(ProjectName).dll ..\..\..\..\..\MediaPortal\xbmc\bin\Release\plugins\process</PostBuildEvent> + <PostBuildEvent>copy $(ProjectName).dll "C:\Program Files\Team MediaPortal\MediaPortal\plugins\process"</PostBuildEvent> </PropertyGroup> </Project> \ No newline at end of file Modified: trunk/plugins/WebEPGfr/XmlToolBox.cs =================================================================== --- trunk/plugins/WebEPGfr/XmlToolBox.cs 2009-11-19 20:26:07 UTC (rev 3170) +++ trunk/plugins/WebEPGfr/XmlToolBox.cs 2009-11-19 22:03:10 UTC (rev 3171) @@ -338,123 +338,140 @@ public long DoMapping() { long lReturn = -1; - if (IsMappingFileExist() == 0) - { //Si un fichier de Mapping existe - // if (base.Count == 0) { GetMappings(); } - FileInfo oTempFile = new FileInfo(this.Configuration.File.ToString()); - if (oTempFile.Exists == true) - { - //Realisation du mapping via un streamReader pour gagner en perf. - // probl\xE8me d'accent : faire de l'iso 8859 ici aussi - System.Net.WebClient oWClient = new System.Net.WebClient(); - oWClient.Encoding = System.Text.Encoding.GetEncoding("iso-8859-1"); - oTempFile.CopyTo(oTempFile.Directory + @"\Writing.xml", true); - StreamReader oStreamReader = new StreamReader(oTempFile.Directory + @"\Writing.xml", System.Text.Encoding.GetEncoding("iso-8859-1")); - StreamWriter oStreamWriter = new System.IO.StreamWriter(this.Configuration.File.ToString(), false, oStreamReader.CurrentEncoding); - XMLTVFile oXmltVFile=null; - string sReadLine2=""; - string sReadLine = ""; + try + { + if (IsMappingFileExist() == 0) + { //Si un fichier de Mapping existe + // if (base.Count == 0) { GetMappings(); } + FileInfo oTempFile = new FileInfo(this.Configuration.File.ToString()); + if (oTempFile.Exists == true) + { + //Realisation du mapping via un streamReader pour gagner en perf. + // probl\xE8me d'accent : faire de l'iso 8859 ici aussi + System.Net.WebClient oWClient = new System.Net.WebClient(); + oWClient.Encoding = System.Text.Encoding.GetEncoding("iso-8859-1"); + oTempFile.CopyTo(oTempFile.Directory + @"\Writing.xml", true); + StreamReader oStreamReader = new StreamReader(oTempFile.Directory + @"\Writing.xml", System.Text.Encoding.GetEncoding("iso-8859-1")); + StreamWriter oStreamWriter = new System.IO.StreamWriter(this.Configuration.File.ToString(), false, oStreamReader.CurrentEncoding); + XMLTVFile oXmltVFile = null; + string sReadLine2 = ""; + string sReadLine = ""; - do - { - sReadLine = oStreamReader.ReadLine(); - if (sReadLine != null) + do { - if (sReadLine.IndexOf(@"display-name>") > 0) - {//Si la ligne semble etre un descriptif de chaine on realise le mapping - sReadLine = DoMapping(sReadLine); - //La portion ci dessous est non critique en cas de soucis - //on s'efforce \xE0 ce que ce soit neutre afin de ne pas casser - // la structure du Xml - sReadLine2 = oStreamReader.ReadLine(); - if (sReadLine2.IndexOf(@"icon src=") > 0) - { - try + sReadLine = oStreamReader.ReadLine(); + if (sReadLine != null) + { + if (sReadLine.IndexOf(@"display-name>") > 0) + {//Si la ligne semble etre un descriptif de chaine on realise le mapping + sReadLine = DoMapping(sReadLine); + //La portion ci dessous est non critique en cas de soucis + //on s'efforce \xE0 ce que ce soit neutre afin de ne pas casser + // la structure du Xml + sReadLine2 = oStreamReader.ReadLine(); + if (sReadLine2.IndexOf(@"icon src=") > 0) { - string sFile = sReadLine2.Replace("<icon src=\"", ""); - sFile = sFile.Substring(0, sFile.IndexOf("\"")); - string sLocation = MediaPortal.Configuration.Config.GetDirectoryInfo(MediaPortal.Configuration.Config.Dir.Thumbs) + @"\tv\logos\"; - DownloadPoster(sFile.Trim(), sLocation); + try + { + string sFile = sReadLine2.Replace("<icon src=\"", ""); + sFile = sFile.Substring(0, sFile.IndexOf("\"")); + string sLocation = MediaPortal.Configuration.Config.GetDirectoryInfo(MediaPortal.Configuration.Config.Dir.Thumbs) + @"\tv\logos\"; + DownloadPoster(sFile.Trim(), sLocation); + } + catch (Exception e) { Log.Info("WebEPGfr : Probleme durant le telechargement des images - " + e.Message); } } - catch (Exception e) { Log.Info("WebEPGfr : Probleme durant le telechargement des images - " + e.Message ); } } + oStreamWriter.WriteLine(sReadLine); + if (!string.IsNullOrEmpty(sReadLine2)) { oStreamWriter.WriteLine(sReadLine2); sReadLine2 = ""; } } - oStreamWriter.WriteLine(sReadLine); - if (!string.IsNullOrEmpty(sReadLine2)) { oStreamWriter.WriteLine(sReadLine2); sReadLine2 = ""; } } - } - while (sReadLine != null); + while (sReadLine != null); - oStreamWriter.Close(); - oStreamReader.Close(); - - oXmltVFile = new XMLTVFile(); //Contient le fichier xmltv abouti. - oXmltVFile.Load(this.Configuration.File.ToString()); - if (ChannelsToKeep != null) //Il y a une liste de fichier a preserver - { - Log.Info("WebEPGfr : Preservation des canaux"); - oXmltVFile.Channel_KeepOnly(this.ChannelsToKeep ); - } + oStreamWriter.Close(); + oStreamReader.Close(); - FileInfo oFinalFile = new FileInfo(this.Configuration.File.ToString()); - if (oFinalFile.Exists == true) - { - /*fmu : Je remplace la copie dans le repertoire de MP par le repertoire + nom de fichier - * defini dans la config car, c'est le plugin qui s'occupe de la copie. + oXmltVFile = new XMLTVFile(); //Contient le fichier xmltv abouti. + oXmltVFile.Load(this.Configuration.File.ToString()); + if (ChannelsToKeep != null) //Il y a une liste de fichier a preserver + { + Log.Info("WebEPGfr : Preservation des canaux"); + oXmltVFile.Channel_KeepOnly(this.ChannelsToKeep); + } - if (Configuration.Repertoire_XMLTV_Mediaportal.Substring(Configuration.Repertoire_XMLTV_Mediaportal.Length - 1, 1) != @"\") + FileInfo oFinalFile = new FileInfo(this.Configuration.File.ToString()); + if (oFinalFile.Exists == true) { - Configuration.Repertoire_XMLTV_Mediaportal = Configuration.Repertoire_XMLTV_Mediaportal + @"\"; - } + /*fmu : Je remplace la copie dans le repertoire de MP par le repertoire + nom de fichier + * defini dans la config car, c'est le plugin qui s'occupe de la copie. + + if (Configuration.Repertoire_XMLTV_Mediaportal.Substring(Configuration.Repertoire_XMLTV_Mediaportal.Length - 1, 1) != @"\") + { + Configuration.Repertoire_XMLTV_Mediaportal = Configuration.Repertoire_XMLTV_Mediaportal + @"\"; + } - if (File.Exists(Configuration.Repertoire_XMLTV_Mediaportal.ToString() + Configuration.DestinationFile.ToString())) - { File.Delete(Configuration.Repertoire_XMLTV_Mediaportal.ToString() + Configuration.DestinationFile.ToString()); } + if (File.Exists(Configuration.Repertoire_XMLTV_Mediaportal.ToString() + Configuration.DestinationFile.ToString())) + { File.Delete(Configuration.Repertoire_XMLTV_Mediaportal.ToString() + Configuration.DestinationFile.ToString()); } - if (oXmltVFile!=null) - { - oXmltVFile.Save(Configuration.Repertoire_XMLTV_Mediaportal.ToString() + Configuration.DestinationFile.ToString()); - oXmltVFile = null; - } - else - { - oFinalFile.CopyTo(Configuration.Repertoire_XMLTV_Mediaportal.ToString() + Configuration.DestinationFile.ToString(), true); - } */ + if (oXmltVFile!=null) + { + oXmltVFile.Save(Configuration.Repertoire_XMLTV_Mediaportal.ToString() + Configuration.DestinationFile.ToString()); + oXmltVFile = null; + } + else + { + oFinalFile.CopyTo(Configuration.Repertoire_XMLTV_Mediaportal.ToString() + Configuration.DestinationFile.ToString(), true); + } */ - string sLastFinalFile = oTempFile.Directory.ToString() + @"\" + Configuration.DestinationFile.ToString(); - if (File.Exists(sLastFinalFile)) - {//Efface l'ancien TVguide.xml - File.Delete(sLastFinalFile); + string sLastFinalFile = oTempFile.Directory.ToString() + @"\" + Configuration.DestinationFile.ToString(); + if (File.Exists(sLastFinalFile)) + {//Efface l'ancien TVguide.xml + File.Delete(sLastFinalFile); + } + + if (oXmltVFile != null) + {//si oXmlTV != null c'est qu'il respecte le Dtd, histoire de ne pas filer a MP un mauvais fichier + oXmltVFile.Save(sLastFinalFile); + oXmltVFile = null; + Log.Info("WebEPGfr : Copie Safe"); + } + else + { + Log.Info("WebEPGfr : Copie Unsafe"); + oFinalFile.CopyTo(sLastFinalFile, true); + } + + oFinalFile.Delete(); // Suppression du fichier tnt ou complet } - if (oXmltVFile != null) - {//si oXmlTV != null c'est qu'il respecte le Dtd, histoire de ne pas filer a MP un mauvais fichier - oXmltVFile.Save(sLastFinalFile); - oXmltVFile = null; - Log.Info("WebEPGfr : Copie Safe"); + //Nettoyage + oStreamWriter = null; + oStreamReader = null; + if (File.Exists(oTempFile.Directory + @"\Writing.xml")) + { + File.Delete(oTempFile.Directory + @"\Writing.xml"); } - else - { - Log.Info("WebEPGfr : Copie Unsafe"); - oFinalFile.CopyTo(sLastFinalFile, true); - } + oTempFile = null; + oFinalFile = null; - oFinalFile.Delete(); // Suppression du fichier tnt ou complet + lReturn = 0; } - //Nettoyage - oStreamWriter = null; - oStreamReader = null; - if (File.Exists(oTempFile.Directory + @"\Writing.xml")) - { - File.Delete(oTempFile.Directory + @"\Writing.xml"); + } + else + {//Pas de Mapping on renome le fichier si besoin + string sFile = this.Configuration.File.ToString(); + if (!sFile.ToLower().EndsWith(Configuration.DestinationFile.ToString().ToLower())) + { + string sDestFile = Path.Combine(Configuration.Repertoire_XMLTV_Mediaportal, Configuration.DestinationFile.ToString()); + if (File.Exists(sDestFile)) { File.Delete(sDestFile); } + File.Copy(sFile, sDestFile); + File.Delete(sFile); + lReturn = 1; } - oTempFile = null; - oFinalFile = null; - - lReturn = 0; } + } + catch { } - } return lReturn; } @@ -809,6 +826,58 @@ } #endregion + + public static string HttpDownloader(Uri oUri, string sDestinationPath) + { + string sPath = string.Empty; + System.Net.WebClient oWClient = new System.Net.WebClient(); + oWClient.Encoding = System.Text.Encoding.GetEncoding("iso-8859-1"); + // pour \xE9viter le plantage dans MP et dans le setup si le site kazer + // n'est pas disponible (timeout sur OpenRead) + try + { + Stream oStream = oWClient.OpenRead(oUri.ToString()); + StreamReader oStreamReader = new StreamReader(oStream, System.Text.Encoding.GetEncoding("iso-8859-1")); + sPath = sDestinationPath; + + StreamWriter oStreamWriter = new System.IO.StreamWriter(sPath, false, oStreamReader.CurrentEncoding); + + string sTempline = string.Empty; + + do//Lecture du fichier + { + sTempline = oStreamReader.ReadLine(); + if (sTempline != null) + { + oStreamWriter.WriteLine(sTempline); + } + } + while (sTempline != null); + + //Dispose All + oStreamReader.Close(); + oStreamWriter.Close(); + oStream.Close(); + oWClient.Dispose(); + oStreamWriter = null; + oStreamReader = null; + oStream = null; + oWClient = null; + + } + catch + { + return string.Empty; + } + if (File.Exists(sDestinationPath)) + { + return sDestinationPath; + } + else + { + return string.Empty; + } + } } ///<summary> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |