Revenir au contenu principal
OpenID

Sujet: EPG ZIP IPTV Simple automatique (Lu 1972 fois) sujet précédent - sujet suivant

0 Membres et 1 Invité sur ce sujet
  • racacax
  • [*][*][*][*]
EPG ZIP IPTV Simple automatique
Bonjour,
J'ai crée une playlist personnelle pour l'addon PVR IPTV Simple. Tout fonctionne, l'EPG aussi. Auparavant, j'utilisais l'EPG de chez Kazer.org où l'EPG était disponible en XML directement. Maintenant, j'utilise ZGuideTV. Cela fonctionne très bien mais il est en ZIP. Donc IPTV Simple ne va pas chercher automatiquement les mise à jour sur le serveur, il faut que je télécharge à chaque fois et que j'extrais le fichier XML sur le disque.
Ma question : est-il possible avec IPTV Simple d'ajouter directement l'URL du ZIP ? Où est-il possible que Kodi télécharge le ZIP et l'extrait automatiquement ?

Je précise, je suis sur Windows, Kodi 16.1 avec Télécommande Android Kore.

Merci d'avance ;)
Mon forum : http://forum-racacax.ga
Mon appli pour regarder la TV (Android/Windows/Kodi) : http://forum-racacax.ga/viewforum.php?f=69

  • Paullux
  • [*][*]
Re : EPG ZIP IPTV Simple automatique
Réponse #1
Je ne sais pas si tu connais le C# (c-sharp), mais voici un code qui permet de télécharger le zip et le décompresser :
-------------------------------------------------------------------------------------------------------------------------------------------------
using System;
using System.IO;
using System.IO.Compression;
using System.Net;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string pathUser = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
            string extractPath = Path.Combine(pathUser, "Downloads", "EPG Kodi");
            string zipPath = Path.Combine(extractPath, "complet.zip");
            string xmlPath = Path.Combine(extractPath, "complet.xml");
            File.Delete(zipPath);
            File.Delete(xmlPath);
            using (WebClient mywebClient = new WebClient())
            {
                mywebClient.DownloadFile("http://xmltv.dtdns.net/download/complet.zip", zipPath);
            }
            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }

    }
}
------------------------------------------------------------------------------------------------------------------------------------------------

Tu télécharges Microsoft Visual Studio 2015, et aussi le dernier dotnet framework de Microsoft (4.5).

Tu ouvres Visual Studio, tu crées une application console (File\New\Console Application Visual C#), tu copies-colles le code, puis Build/Build Solution.

Tu as alors un fichier exe situé dans ton dossier personnel :
Documents\Visual Studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug.

Alors là tu mets ton exe où tu veux, tu le lances au démarrage et après tu fais pointer l'EPG de Simple IPTV de KODI sur le fichier XML que tu as télécharger de manière automatisé.

Edit 20h23 : j'ai mis des chemin d'accès pour n'importe quels utilisateurs avec les dossiers personnels utilisateurs, ici Téléchargements.
  • Edité la dernière fois le: 14 Juin 2017 20:23:54 par Paullux

  • Paullux
  • [*][*]
Re : EPG ZIP IPTV Simple automatique
Réponse #2
J'ai amélioré mon code :

using System;
using System.ComponentModel;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        static string pathUser = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
        static string extractPath = Path.Combine(pathUser, "Downloads", "EPG Kodi");
        static string zipPath = Path.Combine(extractPath, "complet.zip");
        static string xmlPath = Path.Combine(extractPath, "complet.xml");
        static string adresse = "http://xmltv.dtdns.net/download/complet.zip";

        static void Main(string[] args)
        {
            Console.WriteLine("Lancement de la mise à jour de l'EPG");
            Console.WriteLine("Effacement des fichiers précédents");
            File.Delete(zipPath);
            File.Delete(xmlPath);
            Console.WriteLine("Lancement du téléchargement en cours...");
            DownLoadFileInBackground2(adresse);
            Thread.Sleep(30000);
        }

        public static void DownLoadFileInBackground2(string address)
        {
            Uri uri = new Uri(address);
            WebClient mywebClient = new WebClient();
            // Specify that the DownloadFileCallback method gets called
            // when the download completes.
            mywebClient.DownloadFileCompleted += new AsyncCompletedEventHandler (HandleDownloadComplete);
            // Specify a progress notification handler.
            mywebClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler (mywebClient_DownloadProgressChanged);
            mywebClient.DownloadFileAsync(uri, zipPath);
        }

        private static void mywebClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            try
            {
                Console.WriteLine("{0}    téléchargement {1} sur {2} octet(s). {3} % téléchargement effectué...",
                (string)e.UserState,
                e.BytesReceived,
                e.TotalBytesToReceive,
                e.ProgressPercentage);
             }
            catch (Exception ex) { Console.WriteLine("Echec du téléchargement : " + ex.Message); }
        }
        private static void HandleDownloadComplete(object sender, AsyncCompletedEventArgs e)
        {
            Console.WriteLine("Téléchargement terminé");
            Console.WriteLine("Extraction du fichier");
            ZipFile.ExtractToDirectory(zipPath, extractPath);
            Console.WriteLine("Finit");
            Thread.Sleep(500);
            Environment.Exit(0);
        }
    }
}

  • Paullux
  • [*][*]
Re : EPG ZIP IPTV Simple automatique
Réponse #3
MISE A JOUR DU CODE

using System;
using System.ComponentModel;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        static string DossierUtilisateur = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
        static string DossierEPG = Path.Combine(DossierUtilisateur, "Documents", "EPG Kodi");
        static string FichierZip = Path.Combine(DossierEPG, "complet.zip");
        static string FichierXML = Path.Combine(DossierEPG, "complet.xml");
        static string adresse = "http://xmltv.dtdns.net/download/complet.zip";
        static bool TraceLigne = true;

        static void Main(string[] args)
        {
            Console.WriteLine("Lancement de la mise à jour de l'EPG");
            if (!Directory.Exists(DossierEPG))
            {
                Console.WriteLine("Création du Dossier EPG dans le Dossier 'Documents'");
                Directory.CreateDirectory(DossierEPG);
            }
            if (File.Exists(FichierZip))
            {
                Console.WriteLine("Effacement du fichier Zip précédent");
                File.Delete(FichierZip);
            }
            if (File.Exists(FichierXML))
            {
                Console.WriteLine("Effacement du fichier XML précédent");
                File.Delete(FichierXML);
            }
            Console.WriteLine("Lancement du téléchargement du nouveau fichier Zip en cours...");
            TelechagementEnFond(adresse);
            Thread.Sleep(60000);
        }

        public static void TelechagementEnFond(string address)
        {
            Uri uri = new Uri(address);
            WebClient MonClientWeb = new WebClient();
            // Specify that the DownloadFileCallback method gets called
            // when the download completes.
            MonClientWeb.DownloadFileCompleted += new AsyncCompletedEventHandler (TelechagementTermine);
            // Specify a avancement notification handler.
            MonClientWeb.DownloadProgressChanged += new DownloadProgressChangedEventHandler (TelechagementEnCours);
            MonClientWeb.DownloadFileAsync(uri, FichierZip);
        }

        private static void TelechagementEnCours(object sender, DownloadProgressChangedEventArgs e)
        {
            try
            {
                if ( TraceLigne == true )
                {
                    DessinerBarreDeavancementionText(e.ProgressPercentage, 100);
                }
            }
            catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Echec du téléchargement : " + ex.Message); }
        }
        private static void DessinerBarreDeavancementionText(int avancement, int tot)
        {
            //draw empty avancement bar
            TraceLigne = false;
            Console.CursorLeft = 0;
            Console.Write("["); //start
            Console.CursorLeft = 32;
            Console.Write("]"); //end
            Console.CursorLeft = 1;
            float RepresentationPourcentageSurTrente = 30.0f / tot;

            //draw filled part
            int position = 1;
            for (int i = 0; i < RepresentationPourcentageSurTrente * avancement; i++)
            {
                Console.ForegroundColor = ConsoleColor.DarkGreen;
                Console.CursorLeft = position++;
                Console.Write("#");
            }

            //draw unfilled part
            for (int i = position; i <= 31; i++)
            {
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.CursorLeft = position++;
                Console.Write("-");
            }

            //draw totals
            Console.CursorLeft = 35;
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.Write(avancement.ToString() + "%" + " téléchargé(s) sur " + tot.ToString() + "%" + "                      "); //blanks at the end remove any excess
            TraceLigne = true;
        }

        private static void TelechagementTermine(object sender, AsyncCompletedEventArgs e)
        {
            Thread.Sleep(500);
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.WriteLine("");
            Console.WriteLine("Téléchargement terminé");
            Console.WriteLine("Extraction du fichier Zip en cours...");
            ZipFile.ExtractToDirectory(FichierZip, DossierEPG);
            Console.WriteLine("Finit");
            Thread.Sleep(500);
            Environment.Exit(0);
        }
    }
}

Lien pour Télécharger :
https://drive.google.com/drive/folders/0B7PjzAwMEwKsZmVzM1I1LXZjaDA?usp=sharing
  • Edité la dernière fois le: 16 Juin 2017 21:19:49 par Paullux

 
SimplePortal 1.0.0 Beta 1 © 2008-2014