Script Guide Tv Et Mytheatre


gloup
 Share

Messages recommandés

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 :huh:

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 crying ).

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é par gloup
Lien vers le commentaire
Partager sur d'autres sites

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

  • 2 weeks later...

Salut au pythonneurs,

j'aurais besoin d'un peu d'aide car je bloc sur un truc qui parait simple :marteau:

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é par gloup
Lien vers le commentaire
Partager sur d'autres sites

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

Effectivement, j'ai testé et c'est le premier element qui revient :prout:

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.

chinese

Lien vers le commentaire
Partager sur d'autres sites

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 (B) 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

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

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

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

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

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

Yes,

Merci Alexsolex,:wub: je pouvais pas le deviner

J'ai quand même chercher un peu (en fait je passe pas mal de temp à chercher :wacko: ) 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 :angry:

Lien vers le commentaire
Partager sur d'autres sites

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

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

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

début de réponse :

quand je lance ce script

import xmltv, xbmc

from 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 :

sortiescript.jpg

C'est pas gagné crying

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é par gloup
Lien vers le commentaire
Partager sur d'autres sites

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

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 :

sortiescript4.jpg

... J'en conclu que xbmc ne peut pas utiliser la librairie xmltv.py

:prout:

Lien vers le commentaire
Partager sur d'autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share