gloup Posté(e) 16 novembre 2004 Share Posté(e) 16 novembre 2004 (modifié) Bonjour, Voila, maintenant que la tv fonctionne, j'envisage d'utiliser mon temp libre (entre 20h00 - 3h00 ) pour créer une page "fille" dans le script mytheatre de marpal. Pour ceux qui n’utilisent pas mytheatre, la class affichant la page fille devra fonctionner indépendamment, y’a sûrement moyen. Le problème récurent dont on a déjà débattu est d'avoir une source de donnée fiable Etant donné que mytheatre fonctionne obligatoirement de paire avec un pc (tuner oblige), la solution à laquelle je réfléchi est la suivante : - créer une page asp hébergé sur le pc qui télécharge le fichier xlmtv.xml (11mo = 6min @ 512Kb) périodiquement. - créer un formulaire qui fasse un traitement préalable du fichier sur le pc (chaînes favorites, plages horaires... etc) afin d'alléger le travail de python xbmc et de rendre les données plus exploitable. - la page asp, accessible par python xbmc ou tout autre navigateur qui prépare la grille de programme et mytheatre l'affiche. Ceci impose d’avoir IIS sur le pc hote, (pas forcement simple pour tout le monde ! mais avec un ptit tuto c’est faisable… exit XP home ). Mon avancement dans l’aprentissage de python est limité et je sais pas trop sous quelle forme les données récupérées après traitement seront le mieux exploitable par python, sera t’il possible d’accéder au partage smb depuis un script python (surement mais encore a apprendre) Qu’en pensez-vous, votre avis m’intéresse Modifié 28 novembre 2004 par gloup Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 16 novembre 2004 Share Posté(e) 16 novembre 2004 ton post est généreux mais il manque un lien vers la conversations 'largement débattue' dont tu parles. Personnellement je veux bien t'aider en te donnant des tuyaux si besoin. Mais je ne compte pas pour le moment installer tout ca. Donc je ne pourrais tester, donc je ne pourrais coder (en plus j'ai plein de projets en cours) Mais je répète si besoin, pose tes questions, je répondrai a+ Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 16 novembre 2004 Auteur Share Posté(e) 16 novembre 2004 lu Alexsolex Merci de proposer ton aide En fait de 'largement débattu' c'est plutot 'rapidement évoqué' qu'il fallait comprendre !!ici!! Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 28 novembre 2004 Auteur Share Posté(e) 28 novembre 2004 (modifié) Salut au pythonneurs, j'aurais besoin d'un peu d'aide car je bloc sur un truc qui parait simple Je voudrais mettre sur ma page une liste et une image, jusque là tout va bien. Et j'aimerai changer l'image en fonction de l'element de la liste 'en focus'. Si quelqu'un a un morceau de code exemple peut'être pourrait'il m'éviter l'asile. [edit] J'arrive pas a joindre mon exemple alors voilà l'exemple : listeChaine = [['TF1','C192'],['FRANCE2','C4'],['FRANCE3','C80'],['CANAL+','C34'],['TV5','C205'],['M6','C118'],['TMC','C195']]pathTVguide = 'Q:\\SCRIPTS\\TV\\' import xbmc, xbmcgui # Gestion de l'emulation try:Emulating = "Emulating" in dir(xbmcgui) except:Emulating = False #get actioncodes from keymap.xml ACTION_PREVIOUS_MENU = 10 ACTION_SHOW_INFO = 11 ACTION_SELECT_ITEM = 7 ACTION_MOVE_LEFT = 1 ACTION_MOVE_RIGHT = 2 ACTION_MOVE_UP = 3 ACTION_MOVE_DOWN = 4 class MainClass(xbmcgui.Window): def __init__(self): if Emulating:xbmcgui.Window.__init__(self) self.ConfigMode = 'Configuration' self.iconChaine = pathTVguide + 'C000.gif' #Set up screen self.imgIcon = xbmcgui.ControlImage(50,300,50,50, self.iconChaine) self.addControl(self.imgIcon) self.butConfig = xbmcgui.ControlButton(50, 200, 180, 35, self.ConfigMode, 'button-focus.png', 'button-nofocus.png') self.addControl(self.butConfig) self.list = xbmcgui.ControlList(300, 100, 300, 300) self.addControl(self.list) self.list.controlLeft(self.butConfig) self.butConfig.controlRight(self.list) i = 0 for item in listeChaine: self.list.addItem(listeChaine[0]) i = i+1 self.setFocus(self.list) # self.list.controlDown() def onAction(self,action): if action == ACTION_PREVIOUS_MENU: self.close() if action in (3,4): self.removeControl(self.imgIcon) self.iconChaine = pathTVguide + listeChaine[self.list.getSelectedPosition()][1] + '.gif' # self.iconChaine = pathTVguide + self.iconChaine[:self.iconChaine.index('\n')] + '.gif' self.imgIcon = xbmcgui.ControlImage(50,300,50,50, self.iconChaine ) self.addControl(self.imgIcon) print self.iconChaine ############### #Main ############### mydisplay = MainClass() mydisplay.doModal() del mydisplay Quand je bouge dans la liste, j'ai bien l'image qui change mais la liste perd le focus et je peu plus changer. Modifié 28 novembre 2004 par gloup Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 28 novembre 2004 Share Posté(e) 28 novembre 2004 Salut essaye d'ajouter cette ligne mais je crains que le résultat ne soit le premier élément de la liste qui soit sélectionné def onAction(self,action): if action == ACTION_PREVIOUS_MENU: self.close() if action in (3,4): self.removeControl(self.imgIcon) self.iconChaine = pathTVguide + listeChaine[self.list.getSelectedPosition()][1] + '.gif'# self.iconChaine = pathTVguide + self.iconChaine[:self.iconChaine.index('\n')] + '.gif' self.imgIcon = xbmcgui.ControlImage(50,300,50,50, self.iconChaine ) self.addControl(self.imgIcon)#essaye d'ajouter cette ligne mais je crains que le résultat ne soit le premier élément de la liste qui soit sélectionné self.setFocus(self.list) print self.iconChaine Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 28 novembre 2004 Auteur Share Posté(e) 28 novembre 2004 Effectivement, j'ai testé et c'est le premier element qui revient J'ai vraiment du mal avec python, c'est impossible d'avoir une liste de methode, j'arrive pas a naviguer dans la doc du site officiel et en plus je sais même pas si les infos s'appliquent pour python/xbmc (na) Serieux, j'ai vraiment beaucoup d'admirations pour les développeurs de script. Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 28 novembre 2004 Share Posté(e) 28 novembre 2004 C'est bizarre. J'ai regardé dans le script que je suis en train de faire, car j'utilise cette méthode A savoir, j'ai 2 menus 'lists' sur un ecran, lorsque j'appuis sur le bouton ( je reviens à la liste précédente. Sur l'action pour B j'ai mis le focus sur l'autre liste et ca marche. Je reviens sur l'élément précédemment sélectionné. if action == ACTION_LEFT or action == ACTION_B: self.setFocus(self.menugauche) ceci me remet sur le menu list 'menugauche' en pointant l'élément de la liste que j'avais quitté en le sélectionnant ! Ahhh... mais j'y suis ! ce qui doit faire la différence, c'est que moi j'ai sélectionné l'élément de la liste avant de quitter cette liste. Donc l'élément sélectionné doit être mémorisé ce qui fait que je le récupère lors du retour. Il faudrait généré 'virtuellement' un évènement 'control' sur l'élément de liste qui aurait peut être comme conséquence de mémoriser la position de l'élément dans la liste. PArcontre je ne sais pas comment faire Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 28 novembre 2004 Share Posté(e) 28 novembre 2004 ah non rectification ce n'est pas ca ! J'utilise bien cette technique pour basculer entre 2 listes avec le simple fait d'appuyer sur les touches droite et gauche... Bizarre que ca ne fonctionne pas chez toi Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 28 novembre 2004 Share Posté(e) 28 novembre 2004 Encore moi J'ai une idée, tu peux essayer de positionner toutes tes images d'avance, mais en les mettant en invisible 1/ tu insères toutes tes images 1 par 1 dans le __init__(self): self.icon1=xbmcgui.ControlImage(50,300,50,50, 'iconechaine1') self.addControl(self.self.icon1) icon1.setVisible(0) # rend invisible l'icone icon2=xbmcgui.ControlImage(50,300,50,50, 'iconechaine2') ... 2/ Tu affiches l'icone que tu veux à l'aide de : icon1.setVisible(1) et tu peux éventuellement faire appel à une fonction qui va masquer toutes les images juste avant d'afficher uniquement celle que tu ve OK cette solution est un peu barbarre mais elle devrait fonctionner je pense.. Car j'ai l'impression que c'est le 'addControl' qui donne systématiquement le focus à ton image.. enfin je ne vois que ca... Lol ! plus j'en dit et moins j'en suis sur ! Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 29 novembre 2004 Auteur Share Posté(e) 29 novembre 2004 Merci de te décarcasser, Je vérifierai ça ce soir. Je connaissait pas la methode 'setvisible()' (tu vois ou j'en suis ). dans le texte ça devrait marcher. Te tiendrais au courant Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 29 novembre 2004 Auteur Share Posté(e) 29 novembre 2004 Suite... L'idée était bonne mais je bloc encore sur la fonction qui pourrait mettre ça dans une boucle ? Je cris pas à l'aide tout de suite je cherche encore un peu self.imgIcon0 = xbmcgui.ControlImage(50,130,50,50, pathTVguide + 'C192' + '.gif') self.addControl(self.imgIcon1) self.imgIcon0.setVisible(0) self.imgIcon1 = xbmcgui.ControlImage(50,130,50,50, pathTVguide + 'C4' + '.gif') self.addControl(self.imgIcon1) self.imgIcon1.setVisible(0) self.imgIcon2 = xbmcgui.ControlImage(50,130,50,50, pathTVguide + 'C80' + '.gif') self.addControl(self.imgIcon1) self.imgIcon2.setVisible(0) self.imgIcon3 = xbmcgui.ControlImage(50,130,50,50, pathTVguide + 'C34' + '.gif') self.addControl(self.imgIcon1) self.imgIcon3.setVisible(0) self.imgIcon4 = xbmcgui.ControlImage(50,130,50,50, pathTVguide + 'C205' + '.gif') self.addControl(self.imgIcon1) self.imgIcon4.setVisible(0) self.imgIcon5 = xbmcgui.ControlImage(50,130,50,50, pathTVguide + 'C118' + '.gif') self.addControl(self.imgIcon1) self.imgIcon5.setVisible(0) self.imgIcon6 = xbmcgui.ControlImage(50,130,50,50, pathTVguide + 'C195' + '.gif') self.addControl(self.imgIcon1) self.imgIcon6.setVisible(0) Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 30 novembre 2004 Auteur Share Posté(e) 30 novembre 2004 J'ai bien fait de pas poser de question trop vite réponse tellement bête, j'aurais eu honte qu'on me la souffle Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 1 décembre 2004 Auteur Share Posté(e) 1 décembre 2004 Je continu mon monologue question : comment récupérer l'index de la liste plutot que le label ? if control == self.list: item = self.list.getSelectedItem() self.message('Selection : ' + item.getLabel()) et ou chercher ce genre d'info. J'ai regardé dans xbmc\python\libs mais je trouve pas xbmcgui.py pour l'éplucher Y'a un truc qui m'échappe. C'est frustrant j'avance à pas de fourmis Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 1 décembre 2004 Share Posté(e) 1 décembre 2004 Salut comment récupérer l'index de la liste plutot que le label ? if control == self.list: item = self.list.getSelectedItem() nb = self.list.getSelectedPosition() nb devrait contenir l'id de l'élément sélectionné. (en partant de 0 pour le premier élément ) Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 1 décembre 2004 Auteur Share Posté(e) 1 décembre 2004 Yes, Merci Alexsolex, je pouvais pas le deviner J'ai quand même chercher un peu (en fait je passe pas mal de temp à chercher ) et j'ai cru comprendre que la lib xbmcgui est compilée dans Xbmc ! Donc j'ai téléchargé les sources de la 1.1.. Et j'ai pas trouvé xbmcgui Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 1 décembre 2004 Share Posté(e) 1 décembre 2004 En fait, (j'aurais pu te le dire plus tôt ) il y a un .rar qui existe avec la description complète des lib XBMC et XBMCGUI Dans les CVS sur sourceforge, il y a un truc sympa, ce sont les docs faites en relation avec le développement de XBMC ; c'est ici : http://cvs.sourceforge.net/viewcvs.py/xbmc/XBMC/docs/ Dedans tu trouveras notemment la doc pour python et XBMC : http://cvs.sourceforge.net/viewcvs.py/xbmc...ev=1.3&view=log Amuse toi bien Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 1 décembre 2004 Auteur Share Posté(e) 1 décembre 2004 Comment j'ai pu faire sans Encore merci, je vais me faire plus discret Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 1 décembre 2004 Share Posté(e) 1 décembre 2004 je vais me faire plus discret Pas la peine ! Si tu as la moindre question pouvant ultérieurement aidé d'autres 'scripteurs', n'hésites pas à la poser ici même ! a+ Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 1 décembre 2004 Auteur Share Posté(e) 1 décembre 2004 C'est trés sympat Bon alors maintenant, grace au forum j'ai une interface qui fonctionne. Il faut que j'attaque le gros morceau, c'est a dire extraire les données du fichier xmltv. Mes recherches m'on mené vers un script qui semble écrit pour ça -->ici<-- Pensez vous que je peux importer cette lib et l'utiliser ? Pour l'instant j'ai essayé sous windows sans succé mais je vais insister. Au départ je voulais faire ce traitement sur le PC, finalement, je vais essayer de le faire avec xbmc, le script pourra alors s'executer a par de MyTheatre. Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 1 décembre 2004 Auteur Share Posté(e) 1 décembre 2004 (modifié) début de réponse : quand je lance ce script import xmltv, xbmcfrom pprint import pprint # If you need to change the locale: # xmltv.locale = 'Latin-1' # If you need to change the date format used in the XMLTV file: # xmltv.date_format = '%Y%m%d%H%M%S %Z' filename = 'q:\\scripts\\TV\\telecable.txt' <--fichier XML raccourci # Print info for XMLTV file (source, etc.) pprint(xmltv.read_data(open(filename, 'r'))) # Print channels pprint(xmltv.read_channels(open(filename, 'r'))) J'obtiens ceci : C'est pas gagné pourtant read_data est bien défini dans xmltv : extrait def read_data(fp): """ Get the source and other info from an XMLTV file. Parameter: filename to read from Returns: dictionary of <tv> attributes """ parser = qp_xml.Parser() doc = parser.parse(fp.read()) attrs = {} for key in doc.attrs.keys(): attrs[key[1].encode(locale)] = doc.attrs[key] return attrs Modifié 1 décembre 2004 par gloup Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 1 décembre 2004 Auteur Share Posté(e) 1 décembre 2004 Sous windows c'est un peu plus causant Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 1 décembre 2004 Share Posté(e) 1 décembre 2004 je ne connais pas la librairie "pprint" Voit si XBMC la reconnais : tu fais un script du genre : import pprintdir(pprint) Tu le lances sur ta xbox et ensuite tu vas avec le bouton blanc voir le résultat. la commande dir affiche toutes les 'fonctions' de la librairie concernée. En l'occurence ca devrait t'afficher un truc dans le genre : ['PrettyPrinter', '_StringIO', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_commajoin', '_id', '_len', '_perfcheck', '_recursion', '_safe_repr', '_sys', '_type', 'isreadable', 'isrecursive', 'pformat', 'pprint', 'saferepr'] Si ca ne marche pas, c'est déjà que XBMC ne gère pas ccette librairie. Si ca marche, ca ne veut pas dire pour autant que XBMC gère la librairie... Ca ne fait qu'afficher le contenu en fait ! Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 1 décembre 2004 Auteur Share Posté(e) 1 décembre 2004 Merci pour le tuyau je test demain, même les braves doivent dormir Lien vers le commentaire Partager sur d'autres sites More sharing options...
alexsolex Posté(e) 1 décembre 2004 Share Posté(e) 1 décembre 2004 oui :> moi aussi je que je pense à y aller... Lien vers le commentaire Partager sur d'autres sites More sharing options...
gloup Posté(e) 2 décembre 2004 Auteur Share Posté(e) 2 décembre 2004 A priori, la lib pprint n'y est pour rien, J'ai testé ceci : import xmltv, xbmc# from pprint import pprint print 'Fonctions :' print dir(xmltv) # If you need to change the locale: # xmltv.locale = 'Latin-1' # If you need to change the date format used in the XMLTV file: # xmltv.date_format = '%Y%m%d%H%M%S %Z' filename = 'telecable.txt' # Print info for XMLTV file (source, etc.) # pprint(xmltv.read_data(open(filename, 'r'))) liste = xmltv.read_data(open(filename, 'r')) print liste # Print channels # pprint(xmltv.read_channels(open(filename, 'r'))) Et j'obtiens : ... J'en conclu que xbmc ne peut pas utiliser la librairie xmltv.py Lien vers le commentaire Partager sur d'autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant