daily pastebin goal
27%
SHARE
TWEET

Téléchargement des émissions du site de Canal + v0.10

Jx7 Nov 19th, 2012 378 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/python
  2. # -*- coding:Utf-8 -*-
  3.  
  4. ########################################################################################################
  5. # Copyright (C) 2010  La_Poigne                                                                        #
  6. # This program is free software: you can redistribute it and/or modify it under the terms of the GNU   #
  7. # General Public License as published by the Free Software Foundation, either version 2 of the         #
  8. # License, or any later version.                                                                       #
  9. # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY without     #
  10. # even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU        #
  11. # General Public License for more details.                                                             #
  12. # You should have received a copy of the GNU General Public License along with this program. If not,   #
  13. # see http://www.gnu.org/licenses/                                                                     #
  14. ########################################################################################################
  15. #
  16. # V0.10
  17. #
  18. # ------------------------------------------------------------------------
  19. # CE SCRIPT NECESSITE FLVSTREAMER OU RTMPDUMP DANS LE CAS DES SOURCES RTMP
  20. # ------------------------------------------------------------------------
  21. #
  22. # ---------------------------------------------------------
  23. # Script de téléchargement des émissions du site de Canal +
  24. # ---------------------------------------------------------
  25. # Syntaxe: cplus.py [--help] [--verbose (1|2)] [--test] [--QUALITY] [--outdir OUTdir_PATH]
  26. #
  27. #             verbose: affiche les infos à l'écran en + des logs
  28. #             test: ne lance pas les téléchargements et ne met donc pas à jour le fichier d'historique
  29. #             QUALITY: choix de la qualité:
  30. #                       'SD' pour le bas débit,
  31. #                       'MD' pour le haut débit,
  32. #                       'HD' pour la HD
  33. #             outdir: désigne le répertoire de téléchargement. S'il n'est pas précisé, c'est le sous répertoire downloads du script qui sera utilisé.
  34. #
  35. # Exemples:
  36. #       cplus.py --verbose 2 --HD
  37. #       cplus.py --verbose 1 --HD --outdir /mnt/video/TV
  38. #
  39. # L'historique des émissions téléchargées est enregistrée dans le fichier cplus_history.
  40. # Il est utilisé par le script donc ne pas le supprimer au risque de retélécharger des émissions.
  41. #
  42. # Le fichier cplus_unwanted sert à indiquer quelles émissions on ne veut pas télécharger.
  43. # On peut par exemple vouloir télécharger les émissions quotidiennes du petit journal mais pas
  44. # l'émission de la semaine.
  45. #
  46. # Les émissions non commentées sont celles que j'ai testées et qui dont les téléchargements
  47. # fonctionnent. Les autres sont à tester (emplacement de la date inclu).
  48. #
  49. # Le script gère les émissions en plusieurs parties (attention, il est nécessaire de télécharger toutes
  50. # les parties en une seule commande, le script ne gèrera pas les différentes parties si certaines ont
  51. # déjà été téléchargées).
  52. #
  53. ########################################################################################################
  54. #
  55. # Changelog:
  56. #
  57. # v0.1
  58. # 21/12/2010 : Création par vincentp010.
  59. #
  60. # v0.4
  61. # 10/11/2012 : Refonte par Jx7.
  62. #
  63. # v0.5
  64. # 19/11/2012 : Optimisations.
  65. #              2 modes: verbose et test.
  66. #
  67. # v0.6
  68. # 20/11/2012 : Correction d'un bug lié à l'utilisation des modes verbose et test.
  69. #              Optimisations.
  70. #              Ajout des noms de fichier supposés (nécessaire pour certains ID regroupant plusieurs
  71. #              émissions).
  72. #
  73. # v0.7
  74. # 20/11/2012 : Ajout d'un paramètre dans la syntaxe pour choisir la qualité par des vidéos sans avoir à
  75. #              éditer le script.
  76. #              Ajout d'explications en début de script sur son utilisation.
  77. #              Ajout de la gestion des émissions en plusieurs parties (attention, il est nécessaire de
  78. #              télécharger toutes les parties en une seule commande, le script ne gèrera pas les
  79. #              différentes parties si certaines ont déjà été téléchargées).
  80. #
  81. # v0.8
  82. # 20/11/2012 : Résolution d'un bug d'affichage
  83. #              Changement de la syntaxe de l'option de qualité (SD, MD, HD)
  84. #              Ajout d'un mode verbose simple
  85. #              Ajout d'une option de choix de répertoire de téléchargement
  86. #
  87. # v0.10
  88. # 20/05/2013: Correction de bugs
  89. #
  90. ########################################################################################################
  91.  
  92. import os, urllib, subprocess, time, sys
  93. from xml.dom import minidom
  94.  
  95. # Identifiants des émissions ([ID de l'émission, emplacement de la date, nom de l'émission, nom supposé du fichier])
  96. ShowList = []
  97. ShowList.append([130,3,"Action discrete","ACTION_DISCRETE"]) # 130, 304, 371 ?
  98. ShowList.append([304,3,"Action discrete","ACTION_DISCRETE"]) # 130, 304, 371 ?
  99. ShowList.append([371,3,"Action discrete","ACTION_DISCRETE"]) # 130, 304, 371 ?
  100. #ShowList.append([62,4,"Le boucan du jour"]) # 204 205 206 316 ?
  101. #ShowList.append([627,4,"Bref"])
  102. #ShowList.append([104,4,"Le grand journal","LE_GRAND_JOURNAL"]) # 129
  103. ShowList.append([254,2,"Groland","GROLAND"])
  104. ShowList.append([48,3,"Guignols de l'info (les)","LES_GUIGNOLS"]) # 222 555 ?
  105. #ShowList.append([242,4,"Du hard ou du cochon"])
  106. #ShowList.append([451,4,"Jamel comedy club"]) # 943 953 ?
  107. #ShowList.append([896,4,"Le journal du hard"])
  108. #ShowList.append([39,4,"La matinale"]) # 105 ?
  109. #ShowList.append([215,4,"Le meilleur du hier","LE_MEILLEUR_DU_HIER"]) # 63 107 110 112 ?
  110. #ShowList.append([47,4,"Les pépites du net"]) # 319 321 ?
  111. ShowList.append([249,4,"Petit journal (le)","LE_PETIT_JOURNAL"]) # 249 250 556 557 558 559 ?
  112. #ShowList.append([843,4,"La question de plus"])
  113. #ShowList.append([294,4,"La revue de presse de Catherine et Eliane"]) # 852 ?
  114. ShowList.append([1082,4,"Salut les terriens","SALUT_LES_TERRIENS"])
  115. ShowList.append([41,4,"Salut les terriens","SALUT_LES_TERRIENS"])
  116. ShowList.append([74,4,"Salut les terriens","SALUT_LES_TERRIENS"])
  117. ShowList.append([105,4,"Salut les terriens","SALUT_LES_TERRIENS"])
  118. ShowList.append([110,4,"Salut les terriens","SALUT_LES_TERRIENS"])
  119. ShowList.append([316,4,"Salut les terriens","SALUT_LES_TERRIENS"])
  120. ShowList.append([371,4,"Salut les terriens","SALUT_LES_TERRIENS"])
  121. #ShowList.append([680,4,"Salut les terriens - edito de Blako"])
  122. #ShowList.append([1064,4,"Salut les terriens - Gaspard Proust"])
  123. #ShowList.append([1072,4,"Salut les terriens - les martiens de la semaine"])
  124. #ShowList.append([252,4,"SAV des émissions"]) # 406 ?
  125. #ShowList.append([936,4,"Tweet en clair"])
  126. ShowList.append([201,2,"Zapping (le)","ZAPPING"]) # 130 207 ?
  127.  
  128. # Répertoires (à créer avant)
  129. #HomeDir = os.path.realpath(sys.argv[0])
  130. #HomeDir = os.path.abspath(sys.argv[0])
  131. HomeDir = os.path.abspath(sys.argv[0])[:len(os.path.abspath(sys.argv[0]))-len(sys.argv[0])-1]
  132. DownloadsDir = HomeDir + "/downloads"
  133. #print HomeDir
  134. #print DownloadsDir
  135. #sys.exit()
  136.  
  137. #Fichiers
  138. LogFile = HomeDir + "/cplus_log"
  139. HistoryFile = HomeDir + "/cplus_history"
  140. UnwantedFile = HomeDir + "/cplus_unwanted"
  141.  
  142. # Paramètres Web de Canal +
  143. ShowURL_XML = "http://www.canalplus.fr/rest/bootstrap.php?/bigplayer/getMEAs/"
  144. VideoURL_XML = "http://www.canalplus.fr/rest/bootstrap.php?/bigplayer/getVideos/"
  145.  
  146. # Autres variables
  147. #Verbose = 1
  148. Verbose = 0
  149. #Test = True
  150. Test = False
  151. Quality = "SD"
  152. #Quality = "MD"
  153. #Quality = "HD"
  154.  
  155. # fonction: Affichage de la syntaxe et exit si mauvaise syntaxe
  156. def Syntax():
  157.         print "cplus.py [--help] [--verbose (1|2)] [--test] [--QUALITY] [--outdir OUTDIR_PATH]" + '\n'
  158.         print "--help: affiche cet écran d'aide" + '\n'
  159.         print "--verbose: affiche les infos à l'écran en + des logs"
  160.         print "           1: verbose minimum"
  161.         print "           2: verbose maximum" + '\n'
  162.         print "--test: ne lance pas les téléchargements (fichier d'historique non mis à jour)" + '\n'
  163.         print "--QUALITY: choix de la qualité"
  164.         print "           SD: slow definition"
  165.         print "           MD: medium definition"
  166.         print "           HD: high definition"
  167.         print "--outdir: désigne le répertoire de téléchargement"
  168.         sys.exit()
  169.  
  170. # fonction: Télécharge un XML à partir d'une URL
  171. def DownloadXML(_URL):
  172.         try:
  173.                 _XMLFileSock = urllib.urlopen(_URL)
  174.                 _XMLFile = _XMLFileSock.read()
  175.         except Exception, e:
  176.                 return 1
  177.         try:
  178.                 _XML = minidom.parseString(_XMLFile)
  179.         except Exception, e:
  180.                 _XML = 1
  181.         return _XML
  182.  
  183. # fonction: Récupère les ID des vidéos en parsant les balises MEA d'un XML
  184. def ParseMEAs(_XML):
  185.         _IDs = []
  186.         _MEAs = _XML.getElementsByTagName('MEA')
  187.         for i in _MEAs:
  188.                 if i.getElementsByTagName('ID')[0].childNodes != []:
  189.                         #_ID = i.getElementsByTagName('ID')[0].childNodes[0].nodeValue
  190.                         #_IDs.append(_ID)
  191.                         _IDs.append(i.getElementsByTagName('ID')[0].childNodes[0].nodeValue)
  192.         return _IDs
  193.  
  194. # fonction: Récupère l'URL d'un fichier en parsant un XML
  195. def GetVideoURL(_XML):
  196.         _FileURL = []
  197.         _Videos = _XML.getElementsByTagName('VIDEO')
  198.         if Quality == "SD":
  199.                 _Quality = "BAS_DEBIT"
  200.         if Quality == "MD":
  201.                 _Quality = "HAUT_DEBIT"
  202.         if Quality == "HD":
  203.                 _Quality = "HD"
  204.         for i in _Videos:
  205.                 try:
  206.                         _Video = i.getElementsByTagName('MEDIA')[0].getElementsByTagName('VIDEOS')[0]
  207.                 except Exception:
  208.                         _Video = ""
  209.                 try:
  210.                         _RTMP = _Video.getElementsByTagName(_Quality)[0].childNodes[0].nodeValue
  211.                 except Exception:
  212.                         _RTMP = ""
  213.                 _FileURL.append(_RTMP)
  214.         return _FileURL[0]
  215.  
  216. # fonction: Exécute une commande et log le résultat dans un fichier de sortie
  217. def Execute(_Params, _File):
  218.         p = subprocess.Popen(_Params,stdout=_File)
  219.         p.wait()
  220.         return p.returncode
  221.  
  222. # fonction: Ajoute une vidéo à l'historique
  223. def AddHistory(_File):
  224.         HistoryFile_ = open(HistoryFile, 'a')
  225.         HistoryFile_.write(_File.encode('utf-8') + '\n')
  226.         HistoryFile_.close()
  227.  
  228. # fonction: Vérifie si un nom de fichier (_File) est présent dans un fichier texte (_CheckFile)
  229. def Check(_CheckFile, _File):
  230.         _Check = 0
  231.         CheckFile_ = open(_CheckFile, 'r')
  232.         for _Line in CheckFile_:
  233.                 _Line = _Line[0:len(_Line) - 2]
  234.                 if _Line.decode('utf-8') in _File:
  235.                         _Check = 1
  236.         CheckFile_.close()
  237.         return _Check
  238.  
  239. # fonction: Initiliase les infos globales
  240. def InitInfos():
  241.         global ShowName;        ShowName = "N/A"
  242.         global ShowID;          ShowID = "N/A"
  243.         global ShowURL;         ShowURL = "N/A"
  244.         global VideoID;         VideoID = "N/A"
  245.         global VideoURL;        VideoURL = "N/A"
  246.         global FileName;        FileName = "N/A"
  247.         global TargetFile;      TargetFile = "N/A"
  248.         global FileURL;         FileURL = "N/A"
  249.         global Message;         Message = ""
  250.  
  251. # fonction: Log les infos globales (et les affiche à l'écran selon la valeur de _Verbose)
  252. def LogInfos(_LogFile, _Verbose):
  253.         LogFile_ = open(_LogFile, "a")
  254.         if _Verbose > 0: os.system('clear')
  255.  
  256.         if Test == True:
  257.                 line = "---Téléchargements inactifs---" + '\n'
  258.                 LogFile_.write(line + '\n')
  259.                 if _Verbose > 0: print line
  260.  
  261.         line = "Emission:"
  262.         LogFile_.write(line + '\n')
  263.         if _Verbose == 2: print line
  264.  
  265.         line = " -Nom: "
  266.         LogFile_.write(line + ShowName + '\n')
  267.         if _Verbose == 2: print line + ShowName
  268.         if _Verbose == 1: print "Emission:      " + ShowName
  269.  
  270.         line = " -ID: " + str(ShowID)
  271.         LogFile_.write(line + '\n')
  272.         if _Verbose == 2: print line
  273.  
  274.         line = " -URL: " + ShowURL + '\n'
  275.         LogFile_.write(line + '\n')
  276.         if _Verbose == 2: print line
  277.  
  278.         line = "Video:"
  279.         LogFile_.write(line + '\n')
  280.         if _Verbose == 2: print line
  281.  
  282.         line = " -ID: " + VideoID
  283.         LogFile_.write(line + '\n')
  284.         if _Verbose == 2: print line
  285.  
  286.         line = " -URL: " + VideoURL + '\n'
  287.         LogFile_.write(line + '\n')
  288.         if _Verbose == 2: print line
  289.  
  290.         line = "Fichier:"
  291.         LogFile_.write(line + '\n')
  292.         if _Verbose == 2: print line
  293.  
  294.         line = " -Nom: "
  295.         LogFile_.write(line + FileName + '\n')
  296.         if _Verbose == 2: print line + FileName
  297.         if _Verbose == 1: print "Fichier:       " + FileName
  298.  
  299.         line = " -Cible: "
  300.         LogFile_.write(line + TargetFile + '\n')
  301.         if _Verbose == 2: print line + TargetFile
  302.         if _Verbose == 1: print "Fichier cible: " + TargetFile
  303.  
  304.         line = " -URL: " + FileURL + '\n'
  305.         LogFile_.write(line + '\n')
  306.         if _Verbose == 2: print line
  307.  
  308.         line = "Infos:"
  309.         LogFile_.write(line + '\n')
  310.         if _Verbose == 2: print line
  311.  
  312.         line = Message
  313.         LogFile_.write(line + '\n')
  314.         if _Verbose > 0: print line
  315.  
  316.         line = "--------------------------------------------------------------------------------------------------------------------------------------------------------"
  317.         LogFile_.write(line + '\n')
  318.         if _Verbose > 0: print line
  319.  
  320.         LogFile_.close()
  321.  
  322. #fonction: Classement alphabétique des lignes d'un fichier
  323. def SortFile(_TextFile):
  324.         f = open(_TextFile, 'r')
  325.         lines = f.readlines()
  326.         lines.sort()
  327.         f.close()
  328.         f = open(_TextFile, 'w')
  329.         f.writelines(lines)
  330.         f.close()
  331.  
  332. # MAIN
  333. if __name__ == "__main__":
  334.  
  335.         # Teste l'existance des fichiers textes et les crée si besoin
  336.         if os.path.exists(UnwantedFile) == False:
  337.                 UnwantedFile_ = open(UnwantedFile, 'w')
  338.                 UnwantedFile_.close()
  339.         else:
  340.                 # Classement alphabétique du fichier des non voulus
  341.                 SortFile(UnwantedFile)
  342.         if os.path.exists(HistoryFile) == False:
  343.                 HistoryFile_ = open(HistoryFile, 'w')
  344.                 HistoryFile_.close()
  345.         if os.path.exists(LogFile) == False:
  346.                 LogFile_ = open(LogFile, "w")
  347.                 LogFile_.close()
  348.  
  349.         # Lecture de la syntaxe
  350.         if len(sys.argv) > 1:
  351.                 i = len(sys.argv)
  352.                 j = 1
  353.                 while j < i:
  354.                         WhileLoop = 1
  355.                         if WhileLoop == 1 and sys.argv[j] == "--help":
  356.                                 Syntax()
  357.                                 WhileLoop = 0
  358.                         if WhileLoop == 1 and sys.argv[j] == "--verbose":
  359.                                 if isinstance(int(sys.argv[j+1]), int) == True and int(sys.argv[j+1]) >= 1 and int(sys.argv[j+1]) <= 2:
  360.                                         Verbose = int(sys.argv[j+1])
  361.                                         j = j+1
  362.                                 else:
  363.                                         Syntax()
  364.                                 WhileLoop = 0
  365.                         if WhileLoop == 1 and sys.argv[j] == "--outdir":
  366.                                 if os.path.exists(sys.argv[j+1]) == True:
  367.                                         DownloadsDir = sys.argv[j+1]
  368.                                         j = j+1
  369.                                 else:
  370.                                         Syntax()
  371.                                 WhileLoop = 0
  372.                         if WhileLoop == 1 and sys.argv[j] == "--test":
  373.                                 Test = True
  374.                                 WhileLoop = 0
  375.                         if WhileLoop == 1 and sys.argv[j] == "--MD":
  376.                                 Quality = "MD"
  377.                                 WhileLoop = 0
  378.                         if WhileLoop == 1 and sys.argv[j] == "--HD":
  379.                                 Quality = "HD"
  380.                                 WhileLoop = 0
  381.                         if WhileLoop == 1:
  382.                                 Syntax()
  383.                         j = j+1
  384.         else:
  385.                 Syntax()
  386.  
  387.         # Début de la log
  388.         LogFile_ = open(LogFile, "a")
  389.         LogFile_.write("-------------------" + '\n' + time.strftime("%Y.%m.%d %H:%M:%S") + '\n' + "-------------------" + '\n')
  390.         LogFile_.close()
  391.  
  392.         # Traitement émission par émission
  393.         for x in range(len(ShowList)):
  394.                 InitInfos()
  395.                 ShowName = ShowList[x][2]
  396.                 ShowID = ShowList[x][0]
  397.                 ShowURL = ShowURL_XML + str(ShowID)
  398.                 ShowXML = DownloadXML(ShowURL)
  399.                 if ShowXML == 1:
  400.                         Message = "ERREUR : IMPOSSIBLE DE TÉLÉCHARGER LE XML DE L'ÉMISSION."
  401.                         LogInfos(LogFile, Verbose)
  402.                 else:
  403.  
  404.                         # Traitement vidéo par vidéo pour l'émission en cours
  405.                         VideosIDsList = ParseMEAs(ShowXML)
  406.                         PreviousTargetFile = ""
  407.                         # Comptage des parties d'émissions
  408.                         count = 1
  409.                         for VideoID in VideosIDsList:
  410.                                 VideoURL = VideoURL_XML + VideoID
  411.                                 VideoXML = DownloadXML(VideoURL)
  412.                                 if VideoXML == 1:
  413.                                         Message = "ERREUR : IMPOSSIBLE DE TÉLÉCHARGER LE XML DE LA VIDÉO."
  414.                                         LogInfos(LogFile, Verbose)
  415.                                 else:
  416.                                         FileURL = GetVideoURL(VideoXML)
  417.                                         head, FileName = os.path.split(FileURL)
  418.  
  419.                                         # Comparaison du nom de fichier avec le nom supposé
  420.                                         if not ShowList[x][3] in FileName:
  421.                                                 Message = "Fichier hors émisssion."
  422.                                                 LogInfos(LogFile, Verbose)
  423.                                         else:
  424.                                                 # Comparaison du nom de fichier avec les fichiers non voulus et déjà téléchargées
  425.                                                 Unwanted = Check(UnwantedFile, FileName)
  426.                                                 History = Check(HistoryFile, FileName)
  427.                                                 if Unwanted + History != 0:
  428.                                                         if Unwanted != 0:
  429.                                                                 Message = "Vidéo non voulue."
  430.                                                                 LogInfos(LogFile, Verbose)
  431.                                                         elif History != 0:
  432.                                                                 Message = "Vidéo déjà téléchargée."
  433.                                                                 LogInfos(LogFile, Verbose)
  434.  
  435.                                                 # Nommage simple du fichier en cours
  436.                                                 else:
  437.                                                         basename, extension = os.path.splitext(FileName)
  438.                                                         words = basename.split('_')
  439.                                                         if len(words) <= 1:
  440.                                                                 FileName = "N/A"
  441.                                                                 FileURL = "N/A"
  442.                                                                 Message = "Nom de fichier indeterminable."
  443.                                                                 LogInfos(LogFile, Verbose)
  444.                                                         else:
  445.                                                                 # Création du répertoire de l'émission s'il n'existe pas
  446.                                                                 if not os.path.isdir(DownloadsDir + "/" + ShowName):
  447.                                                                         os.makedirs(DownloadsDir + "/" + ShowName)
  448.  
  449.                                                                 # Formattage de la date
  450.                                                                 date = words[ShowList[x][1]]
  451.                                                                 date = "20" + date[:2] + "." + date[2:4] + "." + date[-2:]
  452.  
  453.                                                                 # Test des émissions en plusieurs parties
  454.                                                                 FileSimpleName = date + "_" + Quality
  455.                                                                 TargetFile = DownloadsDir + "/" + ShowName + "/" + FileSimpleName
  456.                                                                 if TargetFile in PreviousTargetFile:
  457.                                                                         if count == 1 and Test == False:
  458.                                                                                 os.rename(PreviousTargetFile, PreviousTargetFile[:len(PreviousTargetFile)-4] + "-1" + PreviousTargetFile[len(PreviousTargetFile)-4:])
  459.                                                                         count += 1
  460.                                                                         FileSimpleName += "-" + str(count) + extension
  461.                                                                 else:
  462.                                                                         count = 1
  463.                                                                         FileSimpleName += extension
  464.                                                                 TargetFile = DownloadsDir + "/" + ShowName + "/" + date[:4] + "/" + FileSimpleName
  465.                                                                 # Téléchargement via flvstreamer si le protocole utilisé dans l'URL est RTMP
  466.                                                                 if FileURL.find("rtmp") != -1:
  467.                                                                         #params=['flvstreamer', '-q', '-r', FileURL]
  468.                                                                         #params=['flvstreamer', '-r', FileURL]
  469.                                                                         params=['rtmpdump', '-r', FileURL]
  470.                                                                         if Test == True:
  471.                                                                                 Message = "(téléchargements inactifs)" + '\n' + "Téléchargement via flvstreamer."
  472.                                                                                 LogInfos(LogFile, Verbose)
  473.                                                                                 r = 0
  474.                                                                         else:
  475.                                                                                 Message = "Téléchargement via flvstreamer."
  476.                                                                                 LogInfos(LogFile, Verbose)
  477.                                                                                 target_ = open(TargetFile, 'w')
  478.                                                                                 r = Execute(params, target_)
  479.                                                                                 target_.close()
  480.  
  481.                                                                 # Téléchargement direct dans les autres cas
  482.                                                                 else:
  483.                                                                         if Test == True:
  484.                                                                                 Message = "(téléchargements inactifs)" + '\n' + "Téléchargement direct."
  485.                                                                                 LogInfos(LogFile, Verbose)
  486.                                                                                 r = 0
  487.                                                                         else:
  488.                                                                                 Message = "Téléchargement direct."
  489.                                                                                 LogInfos(LogFile, Verbose)
  490.                                                                                 try:
  491.                                                                                         urllib.urlretrieve(FileURL, TargetFile)
  492.                                                                                         r=0
  493.                                                                                 except Exception:
  494.                                                                                         r=1
  495.  
  496.                                                                 # Ajout dans l'historique s'il n'y a pas eu d'erreur
  497.                                                                 if r == 0:
  498.                                                                         Message += '\n' + "Téléchargement terminé, ajout dans l'historique."
  499.                                                                         if Test == False:
  500.                                                                                 AddHistory(FileName)
  501.                                                                         LogInfos(LogFile, Verbose)
  502.  
  503.                                                                 # Suppression du fichier s'il y a eu une erreur
  504.                                                                 else:
  505.                                                                         Message += '\n' + "ERREUR : PROBLÈME DE TÉLÉCHARGEMENT."
  506.                                                                         if Test == False:
  507.                                                                                 if os.path.exists(TargetFile):
  508.                                                                                         os.remove(TargetFile)
  509.                                                                         LogInfos(LogFile, Verbose)
  510.  
  511.                                 # Mémorisation du fichier cible avant de passer au suivant
  512.                                 PreviousTargetFile = TargetFile
  513.  
  514.         time.sleep(1)
  515.         # Classement alphabétique du fichier d'historique
  516.         SortFile(HistoryFile)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top