Pages: 1 [2]  Toutes   Bas de page
  Imprimer  
Auteur Fil de discussion: [EN COURS] Code Snippet (exemples)  (Lu 17196 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Développé Couché
Fait partie du Décor
*
Alcoolémie: 20
Messages: 3447
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
« Répondre #20 le: 13 Novembre 2008 16:33:05 »

Tiens une question, est-ce qu'il y a moyen avec cette méthode de définir la taille du texte?
Ça serait super intéressant car le font10 ou font12, je trouve cela super limite pour définir la taille du texte.

[edit]
Et pour souligner ton texte? Il semble que
Code:
[U]mon texte[\U]
ne fonctionne pas
« Dernière édition: 13 Novembre 2008 16:54:10 par Temhil » Journalisée

Made in Québec
Fait partie du Décor
*
Alcoolémie: 31
Messages: 4707
Hors ligne Hors ligne
Sexe: Homme
On est venu, on l'a vu et il l'a eu dans le cul !
WWW
« Répondre #21 le: 13 Novembre 2008 17:42:53 »
Haut de page

Tiens une question, est-ce qu'il y a moyen avec cette méthode de définir la taille du texte?
Ça serait super intéressant car le font10 ou font12, je trouve cela super limite pour définir la taille du texte.

Oui tu as eu la même pensé que moi... niark niark mais non pas de support pour [ FONT = 14 ] balbla [ / FONT ].
Faudrait le demander à la team apres leur finalisation de leur trac.
Et pour infos les font sont pas limitées à 10 et 12 exclam
regarde par exemple le skin pm3: balise <fontset id="Default" unicode="true">
les grandeurs par défaut sont indiquées: http://xbmc.svn.sourceforge.net/viewvc/xbmc/trunk/XBMC/skin/Project%20Mayhem%20III/PAL/Font.xml?view=markup&sortby=date

Et de plus si on indique pas de font dans un code par défaut il prend cette référence:
http://xbmc.svn.sourceforge.net/viewvc/xbmc/trunk/XBMC/skin/Project%20Mayhem%20III/PAL/defaults.xml?view=markup&sortby=date
Code
(XML):
<default type="label">
 <posx>80</posx>
 <posy>60</posy>
 <label>-</label>
 <font>font13</font>
 <textcolor>white</textcolor>
</default>
 

Et pour souligner ton texte? Il semble que
Code:
[U]mon texte[\U]
ne fonctionne pas

Tiens tu as trouvé ca ou, car moi j'ai jamais parlé de cela exclam

Citation
ou vas tu chercher tout cela???

 niark niark
Secret de travail, non sérieux:
 - XBMC Online Manual
 - Directement des sources
 - Et bien sur la doc officiel python.org et celle que j'ai mis a jour dernièrement  sweat

[edit]
 j'ai mis des espace a [ FONT = 14 ] balbla [ / FONT ]. car le forum reconnait et l'affiche pas exclam

« Dernière édition: 13 Novembre 2008 17:52:24 par FrostBox » Journalisée

Par Osiris et par Apis regardez moi, regardez moi bien...
Par Osiris et par Apis vous êtes maintenant des... des quoi au juste ?
Des addoniens ! Vous aimez bien les add-ons vous les Passionnés.
Allez on recommence.
Par Osiris et par Apis vous êtes maintenant des addoniens... oui... des addoniens...
Silennnce, concentrez vous.




alexsolex
« Répondre #22 le: 13 Novembre 2008 19:24:45 »
Haut de page

Excellent tout ca. Ca va m'être utile pour le script IPB !!
Merci Frostbox

Petite question subsidiaire, qu'en est t'il du label parsing : http://xbmc.org/wiki/?title=Label_Parsing
Journalisée
Développé Couché
Fait partie du Décor
*
Alcoolémie: 20
Messages: 3447
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
« Répondre #23 le: 28 Janvier 2009 20:26:58 »
Haut de page

 arrows_right Lancer une application externe dans XBMC

Voici un exemple de script python vous permettant de lancer une application externe (ici Firefox sous Windows) dans XBMC.
Merci a Frost pour ce Snippet.

Vous pouvez copier/coller ce code dans un fichier et l'enregister sous le nom firefox.py par exemple (ou bien integrer ce code a un script/plugin plus complexe). Cela ouvrira Firefox a partir de XBMC.

Code
(Python):
import xbmc
# Execute shell commands and freezes XBMC until shell is closed
cmd = "System.ExecWait"
 
# Execute shell commands
#cmd = "System.Exec"
 
command = &#39;%s("%s")&#39; % ( cmd, "C:\\Program Files\\Mozilla Firefox\\firefox.exe" )
xbmc.executebuiltin( command )
 
 



Journalisée

Développé Couché
Fait partie du Décor
*
Alcoolémie: 20
Messages: 3447
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
« Répondre #24 le: 13 Février 2009 16:10:49 »
Haut de page

 arrows_right Forcer le loglevel depuis un script ou un plugin

Voici un snippet réalisé par Alexsolex vous montrant comment activer le loglevel directement depuis un script:

Code
(Python):
#pour récupérer le log level actuel (utile pour le rétablir si besoin après l&#39;exécution du script)
actualloglevel = xbmc.executehttpapi("GetLogLevel").replace("<li>","")
 
#pour régler le loglevel sur la valeur désirée (ici à 1):
status = xbmc.executehttpapi("SetLogLevel(1)").replace("<li>","")
#si tout c&#39;est bien passé, status contient "OK"

Pour information <li> (list item) est une balise html pour mettre en forme le résultat de retour.
Vous pouvez suivre le fil de discutions d'origine ICI
Journalisée

Développé Couché
Fait partie du Décor
*
Alcoolémie: 20
Messages: 3447
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
« Répondre #25 le: 13 Février 2009 16:25:31 »
Haut de page

 arrows_right Déterminer la plate-forme sur laquelle XBMC tourne

Voici une petite fonction bien pratique réalisée par Frost vous permettant de déterminer sur quel plate-forme XBMC  s'exécute:

Code
(Python):
import xbmc
 
def get_system_platform():
   """ fonction: pour recuperer la platform que xbmc tourne """
   platform = "unknown"
   if xbmc.getCondVisibility( "system.platform.linux" ):
       platform = "linux"
   elif xbmc.getCondVisibility( "system.platform.xbox" ):
       platform = "xbox"
   elif xbmc.getCondVisibility( "system.platform.windows" ):
       platform = "windows"
   elif xbmc.getCondVisibility( "system.platform.osx" ):
       platform = "osx"
   return platform
 



Et voici une autre méthode de tester que vous êtes sur Mac par exemple:
Code
(Python):
if os.environ.get( "OS", "" ).lower() == "os x":
   print "Platform MAC"
 
« Dernière édition: 18 Février 2009 00:23:09 par Temhil » Journalisée

Développé Couché
Fait partie du Décor
*
Alcoolémie: 20
Messages: 3447
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
« Répondre #26 le: 18 Février 2009 00:55:20 »
Haut de page

 arrows_right Utiliser 'special://'  dans un chemin

Les dernières releases de XBMC ont introduit un nouveau format dans le type de chemins, ceux-ci peuvent etre désormais identifies par special:// qui remplace les anciens Q:, P:, T:, U:, Z:
Voici un petit résumé mais je vous conseille de lire les informations tres importante du Blog XBMC de jmarshall sur ce sujet et ce sujet sur le forum officiel:

  • Utilisez special://home/ (anciennement U:\\) si vous avez besoin de lire/écrire dans la partie modifiable de l'installation de XBMC
  • Utilisez special://profile/ (anciennement P:\\) si vous avez besoin de lire/écrire dans le répertoire userdata de l'utilisateur courrant.
  • Utilisez special://temp/ (anciennement Z:\\) si vous avez besoin de lire/écrire a dans un emplacement temporaire.

Si vous en avez réellement besoin vous pouvez aussi:
  • Utilisez special://xbmc/ (anciennement Q:\\) pour lire dans le répertoire même d'installation de XBMC.
  • Utilisez special://masterprofile/ (anciennement T:\\)  pour lire pour dans le répertoire userdata de l'utilisateur maître/principal (master users)

Attention: Utilisez xbmc.translatePath() pour traduire tout chemin (XBMC) vers son réel chemin (au niveau OS) lorsque vous avez besoin lire ou écrire dans le systeme de fichier (dépendant donc de l'OS).



Maintenant voici un snippet sur la facon de couvir tous les cas, car certains version de XBMC (sur certains OS ou trop anciennes) ne supportent pas bien le chemin  'special://'.
Cet exemple est une librairie réalisée par Frost (merci a lui) dans l'installer Passion-XBMC qui couvre je pense tous les cas:
Code
(Python):
# If the dir exists with the requested name, simply return it
 
__all__ = [
   # public names
   "XBMC_IS_HOME",
   "SPECIAL_XBMC_DIR",
   "SPECIAL_HOME_DIR",
   "SPECIAL_TEMP_DIR",
   "SPECIAL_PROFILE_DIR",
   "SPECIAL_MASTERPROFILE_DIR",
   "SPECIAL_XBMC_HOME",
   "SPECIAL_SCRIPT_DATA",
   ]
 
 
import os
import sys
from xbmc import translatePath
 
 
PLATFORM_MAC = os.environ.get( "OS", "" ).lower() == "os x"
 
 
try: scriptname = sys.modules[ "__main__" ].__script__
except: scriptname = os.path.basename( os.getcwd() )
 
 
SPECIAL_XBMC_DIR = translatePath( "special://xbmc/" )
if PLATFORM_MAC or not os.path.isdir( SPECIAL_XBMC_DIR  ): SPECIAL_XBMC_DIR = translatePath( "Q:\\" )
 
SPECIAL_HOME_DIR = translatePath( "special://home/" )
if PLATFORM_MAC or not os.path.isdir( SPECIAL_HOME_DIR  ): SPECIAL_HOME_DIR = translatePath( "U:\\" )
 
SPECIAL_TEMP_DIR = translatePath( "special://temp/" )
if PLATFORM_MAC or not os.path.isdir( SPECIAL_TEMP_DIR  ): SPECIAL_TEMP_DIR = translatePath( "Z:\\" )
 
SPECIAL_PROFILE_DIR = translatePath( "special://profile/" )
if PLATFORM_MAC or not os.path.isdir( SPECIAL_PROFILE_DIR  ): SPECIAL_PROFILE_DIR = translatePath( "P:\\" )
 
SPECIAL_MASTERPROFILE_DIR = translatePath( "special://masterprofile/" )
if PLATFORM_MAC or not os.path.isdir( SPECIAL_MASTERPROFILE_DIR  ): SPECIAL_MASTERPROFILE_DIR = translatePath( "T:\\" )
 
SPECIAL_XBMC_HOME = ( SPECIAL_HOME_DIR, SPECIAL_XBMC_DIR )[ ( os.environ.get( "OS", "xbox" ).lower() == "xbox" ) ]
 
XBMC_IS_HOME = SPECIAL_HOME_DIR == SPECIAL_XBMC_DIR
 
SPECIAL_SCRIPT_DATA = os.path.join( SPECIAL_PROFILE_DIR, "script_data", scriptname )
if not os.path.isdir( SPECIAL_SCRIPT_DATA ): os.makedirs( SPECIAL_SCRIPT_DATA )
 

Vous pouvez constater le cas particulier de XBMC sur Mac, pour une raison obscure a l'heure actuel le test os.path.isdir sur les chemins 'special://' ne fonctionne pas proprement, aussi on contourne ce problème en verifiant si on est sur Mac.
Sinon on vérifie si XBMC reconnaît un chemin 'special://' et si ce n'est pas le cas, on utilise l'ancien format des chemins Q:, P:, T:, U:, Z:


[edit]
Voici un nouveau fil de discutions sur ce sujet : changement des chemins internes à XBMC
« Dernière édition: 23 Février 2009 01:07:53 par Temhil » Journalisée

Made in Québec
Fait partie du Décor
*
Alcoolémie: 31
Messages: 4707
Hors ligne Hors ligne
Sexe: Homme
On est venu, on l'a vu et il l'a eu dans le cul !
WWW
« Répondre #27 le: 21 Février 2009 14:12:28 »
Haut de page

 arrows_right Minimiser XBMC

Code
(Python):
import xbmc
 
# Quit Quit XBMC (same as XBMC.Dashboard on Xbox)
# Suspend Suspends (S3 / S1 depending on bios setting) the System (not working on Xbox due to hardware limitations)
# Hibernate Hibernate (S5) the System (not working on Xbox due to hardware limitations)
# Powerdown Powerdown system
# Minimize Minimize XBMC to tools bar
state = { "quit": 0, "suspend": 1, "hibernate": 2, "powerdown": 4, "minimize": 5 }
 
# print current user setting shutdownstate
user_state = xbmc.executehttpapi( "GetGuiSetting(0;system.shutdownstate)" ).replace( "<li>", "" )
print user_state
# force setting shutdownstate to minimize
print xbmc.executehttpapi( "SetGUISetting(0;system.shutdownstate;%i)" % state[ "minimize" ] ).replace( "<li>", "" )
# print forced setting shutdownstate
print xbmc.executehttpapi( "GetGuiSetting(0;system.shutdownstate)" ).replace( "<li>", "" )
 
# XBMC.ShutDown Trigger default Shutdown action defined in System Settings,
# Default Powerdown on Xbox and Quit on Linux / OSX / Windows
xbmc.shutdown()
 
# replace preference user setting shutdown state
print xbmc.executehttpapi( "SetGUISetting(0;system.shutdownstate;%i)" % int( user_state ) ).replace( "<li>", "" )
 

NB: Vous remarquerez qu'à la fin on replace les préférences de l'utilisateur de l'état d'arrêt, simplement pour pas le rendre malheureux.

frost

[edit] message édité par Temhil: ajout du titre au même format que les autres snippets
« Dernière édition: 22 Février 2009 20:13:24 par Temhil » Journalisée

Par Osiris et par Apis regardez moi, regardez moi bien...
Par Osiris et par Apis vous êtes maintenant des... des quoi au juste ?
Des addoniens ! Vous aimez bien les add-ons vous les Passionnés.
Allez on recommence.
Par Osiris et par Apis vous êtes maintenant des addoniens... oui... des addoniens...
Silennnce, concentrez vous.




Made in Québec
Fait partie du Décor
*
Alcoolémie: 31
Messages: 4707
Hors ligne Hors ligne
Sexe: Homme
On est venu, on l'a vu et il l'a eu dans le cul !
WWW
« Répondre #28 le: 22 Juin 2009 03:12:04 »
Haut de page

arrows_right Minimiser XBMC (Méthode simple)

Code
(Python):
import xbmc
 
xbmc.executebuiltin( "XBMC.Minimize()" )
 
 
Journalisée

Par Osiris et par Apis regardez moi, regardez moi bien...
Par Osiris et par Apis vous êtes maintenant des... des quoi au juste ?
Des addoniens ! Vous aimez bien les add-ons vous les Passionnés.
Allez on recommence.
Par Osiris et par Apis vous êtes maintenant des addoniens... oui... des addoniens...
Silennnce, concentrez vous.




Hello World
Fait partie du Décor
*
Alcoolémie: 3
Messages: 2338
Hors ligne Hors ligne
Sexe: Homme
« Répondre #29 le: 18 Juillet 2009 17:46:09 »
Haut de page

 arrows_right Détruire tous les sous répertoires .svn d'un répertoire donné

Code
(Python):
import os
 
folder = os.getcwd().replace(&#39;;&#39;,&#39;&#39;)
 
def del_all_files_dirs(folder):
   for root, dirs, files in os.walk(folder, topdown=False):
       for name in files:
           os.remove(os.path.join(root, name))
       for name in dirs:
           os.rmdir(os.path.join(root, name))
   os.rmdir(folder)
   print &#39;%s deleted&#39;%folder
 
for root, dirs, files in os.walk(folder , topdown=False):
   for name in dirs:
       print &#39;entering %s ...&#39;%os.path.join(root, name)
       if &#39;.svn&#39; in name:
           del_all_files_dirs(os.path.join(root,name))
 
print &#39;Well done&#39;
 
Journalisée

"Gouvernements du monde industriel, géants fatigués de chair et d'acier, je viens du cyberespace, nouvelle demeure de l'esprit. Au nom de l'avenir, je vous demande, à  vous qui êtes du passé, de nous laisser tranquilles. Vous n'êtes pas les bienvenus parmi nous."  par John Perry Barlow

Script : Installeur Passion-XBMC     Tutoriel : Les scrapers ou comment associer des informations à vos films
Made in Québec
Fait partie du Décor
*
Alcoolémie: 31
Messages: 4707
Hors ligne Hors ligne
Sexe: Homme
On est venu, on l'a vu et il l'a eu dans le cul !
WWW
« Répondre #30 le: 21 Juillet 2009 17:17:48 »
Haut de page

 arrows_right Remplacer un mot en masse dans un fichier

Code
(Python):
import os
import string
 
 
def replaces( source, search_for, replace_with ):
   # set temporary files
   back = os.path.splitext( source )[ 0 ] + ".bak"
   temp = os.path.splitext( source )[ 0 ] + ".tmp"
   # remove temp file if exists
   try: os.remove( temp )
   except os.error: pass
   # open source and temp file
   fi = open( source )
   fo = open( temp, "w" )
   # read lines of source file
   for line in fi.readlines():
       # temp file, write line with replaced str
       fo.write( string.replace( line, search_for, replace_with ) )
   # end replace close source and temp file
   fi.close()
   fo.close()
   # remove backup file if exists
   try: os.remove( back )
   except os.error: pass
   # now rename original file into backup
   os.rename( source, back )
   # and rename temp into new source
   os.rename( temp, source )
 
 
source_file = "test_replaces.xml"
search_for = "Salut"
replace_with = "Bonjour"
 
replaces( source_file, search_for, replace_with )
 
Journalisée

Par Osiris et par Apis regardez moi, regardez moi bien...
Par Osiris et par Apis vous êtes maintenant des... des quoi au juste ?
Des addoniens ! Vous aimez bien les add-ons vous les Passionnés.
Allez on recommence.
Par Osiris et par Apis vous êtes maintenant des addoniens... oui... des addoniens...
Silennnce, concentrez vous.




Made in Québec
Fait partie du Décor
*
Alcoolémie: 31
Messages: 4707
Hors ligne Hors ligne
Sexe: Homme
On est venu, on l'a vu et il l'a eu dans le cul !
WWW
« Répondre #31 le: 14 Août 2009 03:52:23 »
Haut de page

 arrows_rightDécouper une liste en plusieurs partie égal

La fonction:
Code
(Python):
def splitlist( iterable, start=0, step=30, end=0 ):
   """Return a list containing an slice of iterable.
   start (!) defaults to 0.; step is split index, (!) defaults to 30.; end (!) defaults to 0.
   For example, splitlist(range(4)) returns [[0, 1, 2, 3]].
   """

   try:
       splited = []
       if end <= 0:
           end = len( iterable )
 
       for index in xrange( step, end, step ):
           splited.append( iterable[ start:index ] )
           start = index
       splited.append( iterable[ start:end ] )
 
       return splited
   except:
       from traceback import print_exc
       print_exc()
 
   return [ iterable ]
 

Un exemple:
Code
(Python):
import string
maliste = list( string.printable )
print maliste
print
 
# splitlist( iterable, start=0, step=30, end=0 ) )
splited = splitlist( maliste )
 
print "Nombre total d&#39;items", len( maliste )
print "Nombre de listes", len( splited )
 
for count, liste in enumerate( splited ):
   print "liste #", count+1
   print len( liste ), liste
   print
"""
>>>
[&#39;0&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;, &#39;k&#39;, &#39;l&#39;, &#39;m&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;,
&#39;q&#39;, &#39;r&#39;, &#39;s&#39;, &#39;t&#39;, &#39;u&#39;, &#39;v&#39;, &#39;w&#39;, &#39;x&#39;, &#39;y&#39;, &#39;z&#39;, &#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;F&#39;, &#39;G&#39;, &#39;H&#39;, &#39;I&#39;, &#39;J&#39;, &#39;K&#39;, &#39;L&#39;, &#39;M&#39;, &#39;N&#39;, &#39;O&#39;, &#39;P&#39;,
&#39;Q&#39;, &#39;R&#39;, &#39;S&#39;, &#39;T&#39;, &#39;U&#39;, &#39;V&#39;, &#39;W&#39;, &#39;X&#39;, &#39;Y&#39;, &#39;Z&#39;, &#39;!&#39;, &#39;"&#39;, &#39;#&#39;, &#39;$&#39;, &#39;%&#39;, &#39;&&#39;, "&#39;", &#39;(&#39;, &#39;)&#39;, &#39;*&#39;, &#39;+&#39;, &#39;,&#39;, &#39;-&#39;, &#39;.&#39;, &#39;/&#39;, &#39;:&#39;,
&#39;;&#39;, &#39;<&#39;, &#39;=&#39;, &#39;>&#39;, &#39;?&#39;, &#39;@&#39;, &#39;[&#39;, &#39;\\&#39;, &#39;]&#39;, &#39;^&#39;, &#39;_&#39;, &#39;`&#39;, &#39;{&#39;, &#39;|&#39;, &#39;}&#39;, &#39;~&#39;, &#39; &#39;, &#39;\t&#39;, &#39;\n&#39;, &#39;\r&#39;, &#39;\x0b&#39;, &#39;\x0c&#39;]
 
Nombre total d&#39;items 100
Nombre de listes 4
liste # 1
30 [&#39;0&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;, &#39;k&#39;, &#39;l&#39;, &#39;m&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;, &#39;q&#39;, &#39;r&#39;, &#39;s&#39;, &#39;t&#39;]
 
liste # 2
30 [&#39;u&#39;, &#39;v&#39;, &#39;w&#39;, &#39;x&#39;, &#39;y&#39;, &#39;z&#39;, &#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;F&#39;, &#39;G&#39;, &#39;H&#39;, &#39;I&#39;, &#39;J&#39;, &#39;K&#39;, &#39;L&#39;, &#39;M&#39;, &#39;N&#39;, &#39;O&#39;, &#39;P&#39;, &#39;Q&#39;, &#39;R&#39;, &#39;S&#39;, &#39;T&#39;, &#39;U&#39;, &#39;V&#39;, &#39;W&#39;, &#39;X&#39;]
 
liste # 3
30 [&#39;Y&#39;, &#39;Z&#39;, &#39;!&#39;, &#39;"&#39;, &#39;#&#39;, &#39;$&#39;, &#39;%&#39;, &#39;&&#39;, "&#39;", &#39;(&#39;, &#39;)&#39;, &#39;*&#39;, &#39;+&#39;, &#39;,&#39;, &#39;-&#39;, &#39;.&#39;, &#39;/&#39;, &#39;:&#39;, &#39;;&#39;, &#39;<&#39;, &#39;=&#39;, &#39;>&#39;, &#39;?&#39;, &#39;@&#39;, &#39;[&#39;, &#39;\\&#39;, &#39;]&#39;, &#39;^&#39;, &#39;_&#39;, &#39;`&#39;]
 
liste # 4
10 [&#39;{&#39;, &#39;|&#39;, &#39;}&#39;, &#39;~&#39;, &#39; &#39;, &#39;\t&#39;, &#39;\n&#39;, &#39;\r&#39;, &#39;\x0b&#39;, &#39;\x0c&#39;]
 
>>>
"""


Après 1 heure de recherche sur le web avec aucun résultat valable. J'ai créé cette fonction made in Frost  smiley si vous avez plus simple merci de mettre votre Snippet
« Dernière édition: 14 Août 2009 04:09:46 par Frost » Journalisée

Par Osiris et par Apis regardez moi, regardez moi bien...
Par Osiris et par Apis vous êtes maintenant des... des quoi au juste ?
Des addoniens ! Vous aimez bien les add-ons vous les Passionnés.
Allez on recommence.
Par Osiris et par Apis vous êtes maintenant des addoniens... oui... des addoniens...
Silennnce, concentrez vous.




Développé Couché
Fait partie du Décor
*
Alcoolémie: 20
Messages: 3447
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
« Répondre #32 le: 15 Octobre 2009 00:18:37 »
Haut de page

 arrows_right Parser un XML

Afin de parser un XML dans XBMC vous aurez le choix entre plusieurs module tels que:

  • ElementTree: Tres rapide a parser mais aussi tres sensible aux erreurs dans un XML
  • BeautifulSoup: Moins rapide qu'ET mais supporte des XML 'moins standards'
  • minidom: un grand classique, plus d'info sur le site officiel ICI, voici un snippet LA
  • lxml: a ses fans aussi, plus d'infos ICI
  • Et certainement d'autres ...

Je n'ai pour ma part eu l'occasion que de comparer ElementTree et BeautifulSoup
Voici donc deux exemple de code parsant le meme XML, l'un avec ElementTree, l'autre avec Beautifulsoup

 arrows_right Exemple avec BeautifulSoup
Code
(Python):
from BeautifulSoup import BeautifulStoneSoup
 
soup =  BeautifulStoneSoup((open(os.path.join(CACHEDIR, XMLFile), &#39;r&#39;)).read())
cat_scrapers = soup.find("scrapers")
 
if cat_scrapers != None:
for item in cat_scrapers.findAll("entry"):
if hasattr(item.title,&#39;string&#39;):
if item.title.string != None:
title = item.title.string.encode("cp1252")
if hasattr(item.version,&#39;string&#39;):
if item.version.string != None:
version = item.version.string.encode("utf-8")
if hasattr(item.lang,&#39;string&#39;):
if item.lang.string != None:
language = item.lang.string.encode("utf-8")
if hasattr(item.date,&#39;string&#39;):
if item.date.string != None:
date = item.date.string.encode("cp1252")
if hasattr(item.previewvideourl,&#39;string&#39;):
if item.previewvideourl.string != None:
previewVideoURL = item.previewvideourl.string.encode("utf-8")

 arrows_right Exemple avec ElementTree
Code
(Python):
import elementtree.ElementTree as ET
 
elems     = ET.parse( open( os.path.join( CACHEDIR, XMLFile ), "r" ) ).getroot()
cat_scrapers = elems.find( "scrapers" ).findall( "entry" )
 
for item in cat_scrapers:
title             = item.findtext( "title" )
version           = item.findtext( "version" )
language          = item.findtext( "lang" )
date              = item.findtext( "date" )
added             = item.findtext( "added" )
previewVideoURL   = item.findtext( "previewVideoURL" )

Dans les deux bien sur cas vous devrez couvrir en plus les exceptions en utilisant des blocs try/except
Journalisée

Pages: 1 [2]  Toutes   Haut de page
  Imprimer  
 
Aller à:  




anything