LinuxFR en OSD

Posté par  . Modéré par Pascal Terjan.
Étiquettes :
0
3
déc.
2002
LinuxFr.org
Voici un petit script python qui affiche en OSD le titre des news de LinuxFR tombant dans http://linuxfr.org/news/archive/. Vous pouvez modifer l'url par http://fr.news.yahoo.com/ si par exemple vous voulez infos ça marche aussi! (changez la couleur de l'OSD selon l'url ;-))

ce script repose sur python-osd donc:
apt-get install python-osd
ou urmpi chéplutrokoi....

NdM :Et non, pas urpmi, puisque ce n'est pas dans la Mandrake :-)

Aller plus loin

  • # Re: LinuxFR en OSD

    Posté par  . Évalué à 5.

    Ha zut! Voilà qui va en rebuter plus d'un pour tester. Voici le lien vers PyOSD http://repose.cx/pyosd/.(...) Effectivement y'a pas l'air d'y avoir grand chose de dispo en rpm... désolé!
  • # Re: LinuxFR en OSD

    Posté par  (site web personnel) . Évalué à 4.

    Bon ca y est il y a un rpm pour Mandrake.
    Il est ici http://pascal.terjan.free.fr/rpm/pyosd-0.2.5-1mdk.i586.rpm(...) en attendant de le faire inclure dans les contribs :-)

    Par contre ca foire sur le script en question :

    Traceback (most recent call last):
    File "linuxfr.py", line 25, in ?
    display.set_font("-adobe-helvetica-bold-r-normal-*-*-200-*-*-p-*-iso8859-1")
    File "/usr/lib/python2.2/site-packages/pyosd/__init__.py", line 122, in set_font
    _pyosd.set_font(self._osd, font)
    pyosd.error: Requested font not found
    Segmentation fault (core dumped)
    • [^] # Re: LinuxFR en OSD

      Posté par  (site web personnel) . Évalué à 3.

      Avec display.set_font("-adobe-helvetica-bold-r-normal-*-20-*-*-*-p-*-iso8859-1") et le changement du commentaire suivant ca marche bien chez moi.

      Faudrait quand même éviter le core dump quand la font existe pas :-)
    • [^] # Re: LinuxFR en OSD

      Posté par  . Évalué à 2.

      Ha oui forcément g mi une fonte arbitraire qui n'est pas celle par défaut dans pyosd, tu peut le modifier (tenez-vous à ce que je le modifie ?). Désolé une fois de plus et merci de la part de tout le monde pour le packet rpm.
    • [^] # Re: LinuxFR en OSD

      Posté par  (site web personnel) . Évalué à 2.

      > en attendant de le faire inclure dans les contribs :-)
      c'est fait.
      • [^] # Re: LinuxFR en OSD

        Posté par  (site web personnel) . Évalué à 4.

        Quoi ?
        Il ne faut pas une mise en quarantaine du paquets comme chez debian ?

        [jesors]

        L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

        • [^] # Re: LinuxFR en OSD

          Posté par  (site web personnel) . Évalué à -1.

          Voyons voir, j'ai uploadé pyslsk jeudi dernier à 00:02, il est rentré dans la distribution à 17:18. Hmouais, on peut appeler ça une quarantaine si on veut.
        • [^] # Re: LinuxFR en OSD

          Posté par  . Évalué à 1.

          Comme tu as pu le lire le packet était uniquement disponible chez debian. Comme tu as pu le lire !?.....
  • # Re: LinuxFR en OSD

    Posté par  . Évalué à 1.

    Euh, dans le bas de __main__, dans la boucle while, ne faut-il pas avoir :
    --------------------------------
    for x in updated:
    [...]
    for y in current:
    --------------------------------
    pour espérer avoir un jour des nouvelles news à s'afficher ? Car si on ne parcourt que les éléments "connus", comment peut-on voir les nouveaux éléments ?

    Enfin moi j'dis ça... en faisant l'inversion, ça marche...
    • [^] # Re: LinuxFR en OSD

      Posté par  . Évalué à 1.

      Effectivement ca ne devrait pas marcher! mais ça fonctionne quand même... mais mal. Car il doit y avoir un lag entre les update à cause du bug et la current doit agir en lieu et place de l'updated à certains moments. C'est corrigé!

      J'ai aussi corrigé à l'arrache le probleme de fonte:
      try:
      display.set_font("-adobe-helvetica-bold-r-normal-*-*-200-*-*-p-*-iso8859-1")
      except: pass
      • [^] # Re: LinuxFR en OSD

        Posté par  (site web personnel) . Évalué à 4.

        Je sais pas vous, mais moi, en lisant vos commentaires et vos suggestions, je souris, et je me dis "Putain, c'est quand même cool, le libre" :-)
        L'exemple même de la collaboration et de l'amélioration en temps réel.

        Longue vie au libre.
        • [^] # Re: LinuxFR en OSD

          Posté par  . Évalué à 2.

          Oui c rigolo comme le test/debug est rapide et efficace ! :-)

          Je sait pas vous mais sans modestie aucune je fini pas m'habituer à ce gadjet qui comme tout gadjet est rigoureusement indispensable! (Jérome Bonaldi).

          Faites moi part de vos impressions pour peut êter améliorer le truc comme la création de templates pour différents sites ?
  • # OSD ?

    Posté par  (site web personnel) . Évalué à 3.

    Désolé pour mon ignorance mais c'est quoi l'OSD ? =)
    • [^] # Re: OSD ?

      Posté par  . Évalué à 1.

      On Screen Display

      c'est comme les petit |||||||||------ qui s'affichent sur ta télé quand tu monte le son :-) Sauf que là ta le titre des news qui apparait en texte.

      PS: vous savez ske je peut proposer comme police pour qu'elle soit assez grosse mais standard ?
      • [^] # Re: OSD ?

        Posté par  (site web personnel) . Évalué à 1.

        C'est aussi ce qui se passe avec certains logiciels de lecture de DivX, quand ils vont prendre les sous-titres dans un fichier texte, et qu'ils les affichent en sur-impression transparente, par dessus l'image vidéo du film.
  • # Re: LinuxFR en OSD

    Posté par  . Évalué à 1.

    Pyosd marche pas sur ma gentoo 1.2 :

    Python 2.2.1 (#1, Nov 27 2002, 20:20:04)
    [GCC 2.95.3 20010315 (release)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import pyosd
    Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    File "/usr/lib/python2.2/site-packages/pyosd/__init__.py", line 29, in ?
    import _pyosd
    ImportError: /usr/lib/python2.2/site-packages/_pyosd.so: undefined symbol: XFillRectangle


    quelqu'un sait d'ou ca vient ??
    • [^] # Re: LinuxFR en OSD

      Posté par  . Évalué à 0.

      Mauvaise distrib : changer distrib.

      Mauvais troll : changer troll

      Etienne
    • [^] # Re: LinuxFR en OSD

      Posté par  (site web personnel) . Évalué à 1.

      essaye de virer le package osd et pyosd, et de reinstaller les derneires versions a la main, quitte a les injecter dans portage ensuite (la derniere version portage de xosd datant pas mal...)
  • # Re: LinuxFR en OSD

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    Heu pkoi g ça? (debian unstable)

    gil@pc-ccri-12 renault $ python linuxfr.py
    Traceback (most recent call last):
    File "linuxfr.py", line 40, in ?
    modif = False
    NameError: name 'False' is not defined
    gil@pc-ccri-12 renault $
    • [^] # Re: LinuxFR en OSD

      Posté par  (site web personnel) . Évalué à -1.

      NameError: name 'False' is not defined
      Il a un problème, ton python. Il se passe quoi si tu ouvres une session python et que tu fais toto=False ?
      • [^] # Re: LinuxFR en OSD

        Posté par  (site web personnel) . Évalué à 1.

        les constantes True et False on été rajoutée en 2.2 si je me souviens bien.

        t'as quelle version de Python ?
        si tu veux pas changer, mets simplement un False = 0 au debut du fichier.
  • # C'est quoi un OSD !

    Posté par  . Évalué à -4.

    Par avance, je vous remerci pour votre réponse.

    MZ
    • [^] # Re: C'est quoi un OSD !

      Posté par  . Évalué à 1.

      Zut me suis fait doublé.

      C'était l'heure de la sieste, c'est pour cela que je ne l'ai pas vu.
  • # Re: LinuxFR en OSD

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    $ python linuxfr.py

    Ca ne fait rien du tout chez moi...
  • # Re: LinuxFR en OSD

    Posté par  . Évalué à 1.

    J'suis sous une LFS, et j'suis déçu !
    J'ai la version 2.2.2 de Python d'installée, et ça ne fonctionne pas. Quand je tente un ./linuxfr.py, ça me dit :

    Traceback (most recent call last):
    File "./linuxfr.py", line 3, in ?
    import htmllib, formatter, urllib, time, pyosd
    ImportError: No module named pyosd
    </i>

    Visiblement, il manque le module pyosd, mais où le trouve-t-on ? J'ai cherché dans les sources de Python sans succès. Dommage, je pensais que c'était un truc koules.
    • [^] # Re: LinuxFR en OSD

      Posté par  (site web personnel) . Évalué à 1.

      Regarde le lien du premier commentaire
    • [^] # Re: LinuxFR en OSD

      Posté par  . Évalué à 1.

      Bon, je répond moi même à ma connerie, c'était le premier commentaire ajouté à cette news. J'avais qu'à lire.
      Cependant, j'ai maintenant installé xosd (ver 2.0.1) et pyosd (0.2.5), et ça ne fonctionne toujours pas !
      Les 2 se sont installés correctement, puis j'ai fait un ldconfig en tant que root pour que tout soit Ok, mais voici le message d'insulte que le script envoie :
      Traceback (most recent call last):
      File "./linuxfr.py", line 3, in ?
      import htmllib, formatter, urllib, time, pyosd
      File "/usr/local/lib/python2.2/site-packages/pyosd/__init__.py", line 29, in ?
      import _pyosd
      ImportError: /usr/local/lib/python2.2/site-packages/_pyosd.so: undefined symbol: xosd_set_offset

      Quelqu'un a une idée sur la question ?
      • [^] # Re: LinuxFR en OSD

        Posté par  (site web personnel, Mastodon) . Évalué à 1.

        As-tu essayé sur le site de PyOSD ( http://repose.cx/pyosd/(...) ) avec le fichier _pyosd.c patché (pour xosd 2.0)?

        Moi sans le fichier patché, j'avais aussi un pb dans __init__.py (je ne sais plus le message exact).
        Et avec le nouveau, j'ai le problème de segfault sur False (et True aussi d'ailleurs). Et pourtant j'ai Python 2.2
        Donc en ajoutant False =0; True =1; au début du fichier, il ne se passe rien pendant quelques temps, puis segmentation fault :)

        C'est peut-être lié au fait que l'accès aux pages webs est seulement possible par proxy ici, il y a un moyen d'en définir un? (désolé si c'est une question bête mais je n'ai jamais fait de python)
        • [^] # Re: LinuxFR en OSD

          Posté par  . Évalué à 1.

          ca ne devrais pas planter de toute facon car la requete vers le site est dans un "try", je pense que le problème vient d'autre part. Voici des infos sur python-urllib et le proxy.

          http://www.python.org/doc/lib/module-urllib.html(...)

          The urlopen() function works transparently with proxies which do not require authentication. In a Unix or Windows environment, set the http_proxy, ftp_proxy or gopher_proxy environment variables to a URL that identifies the proxy server before starting the Python interpreter. For example (the "%" is the command prompt):

          % http_proxy="http://www.someproxy.com:3128"(...)
          % export http_proxy
          % python
          ...

          In a Macintosh environment, urlopen() will retrieve proxy information from Internet Config.

          Proxies which require authentication for use are not currently supported; this is considered an implementation limitation.
        • [^] # Re: LinuxFR en OSD

          Posté par  . Évalué à 1.

          Bien grand merci ! Ca fait deux fois aujourd'hui que je m'emballe et vais trop vite, sans lire ce que je devrais. En effet, avec le fichier patché, ça améliore les choses, même si pour l'instant je ne gagne aucun affichage sur mon écran. Au moins, je n'ai plus de message d'insultes (je le prend comme tel car je ne connais stricetment rien à Python).
          • [^] # Re: LinuxFR en OSD

            Posté par  . Évalué à 1.

            zute, apparemnet t pas le seul a ne rien avoir d'affiché.... je soupcone une problème de police. peut tu essayer en commentant

            # try:
            # display.set_font("-adobe-helvetica-bold-r-normal-*-*-200-*-*-p-*-iso8859-1")
            #except: pass

            Ca devrait s'écrire du coup en tout petit. Essaye avec http://fr.news.yahoo.com/(...) la page est plus souvent upadtée.

            Merci.
            • [^] # Re: LinuxFR en OSD

              Posté par  . Évalué à 1.

              Bon, j'ai fait comme tu m'as indiqué, sans succès. Toujours rien d'affiché.
              Petite astuce quand même, si on est derrière un proxy, il suffit de faire :
              $ http_proxy="http://mon.proxy.com:8080"(...) ./linuxfr.py
              pour que ça fonctionne. En tout cas, c'est ce que j'ai compris en voyant un message ici, mixé à une astuce utilisée dans le LFS.
              Sinon, y a-t-il un moyen de choisir l'emplacement de l'osd, ainsi que la couleur de la police, etc...
              J'y connais rien, mais j'ai quand même eu des affichages bizares en haut à gauche de mon écran du genre :
              HTTP://linuxfr.org/archive

              en gros (police 36 au moins) et de jaune gras....
              • [^] # Re: LinuxFR en OSD

                Posté par  . Évalué à 1.

                ha coule, l'OSD fonctionne donc :-)

                tu peut changer la police ici display.set_font("-adobe-helvetica-bold-r-normal-*-*-200-*-*-p-*-iso8859-1"), tu peut remplacer 200 par 120 par exemple pour la taille et bold pour le gras :-)

                et la couleur ici display.set_colour("#FFFF00") tu peut aussi l'écrire en toutes lettre comme display.set_colour("blue") si tu veut du bleu

                si tu as eut un truc du genre HTTP://linuxfr.org/archive à mon avis c ke le lien était mort, réesaye plus tard, j'essayerais de modifier poru que rien ne s'affiche si ya une trop grande différence entre deux rafraichissements.
                • [^] # Re: LinuxFR en OSD

                  Posté par  . Évalué à 1.

                  Bon, je commence à comprendre. Maintenant, y'a un truc qui me chifonne.
                  J'ai mis l'url de yahoo que tu proposais, et ça fonctionne !!!!!!
                  Seul hic, quand on lance ton prog sans le & à la fin, ça affiche le titre des news sur la sortie standard. C'est voulu ou c'est un effet de bord ?
                  Bon, en attendant, je vais jouer avec les polices et les couleurs pour avoir un truc lisible. Si on pouvait choisir l'emplacement de l'OSD, ce serait parfait, car je suis sous KDE, et l'affichage en haut à gauche, ça gêne le menu du bureau !
                  • [^] # Re: LinuxFR en OSD

                    Posté par  . Évalué à 2.

                    oui pardon g oublié de te répondre pour la position ça se règle ici:
                    display.set_pos(pyosd.POS_TOP) tu peut mettre pyosd.POS_BOT pour en bas

                    et oui c'est voulu la sortie standard, tu peut l'enlever en comentant la ligne print x

                    if (nouveau == True):
                    #print x
                    display.display(x)
                    time.sleep(time_disp)
                    • [^] # Re: LinuxFR en OSD

                      Posté par  . Évalué à 1.

                      Ok, bien ! Merci pour ton aide, maintenant ça fonctionne.
                      Si je peux me permettre juste une ou deux petites remarques....
                      En fait, je trouve que le temps d'affichage est assez court. Je ne m'y connais pas du tout en python, mais d'après ce que j'ai pu constater, c'est la variable time_disp qui règle ça. C'est exprimé en quoi ? secondes ? 1/10 de secondes ? ou autres ?
                      C'est principalement ce qui m'a fait croire que ça ne fonctionnait pas au départ, car je ne suis pas tout le temps les yeux rivés à mon écran.
                      L'idée est excellente, mais pourquoi ne pas laisser l'osd affiché avec la valeur en cours, jusqu'à ce que le contenu change, par exemple ?
                      Et puis, dernière chose, le nec plus ultra, serait d'avoir un lien cliquable dans l'osd, ainsi quand un titre de news accroche l'utilisateur, il n'a qu'à cliquer dessus pour aller sur la page idoine et consulter la-dite news.
                      Bref, en tout cas, c'est un bon truc en arrière plan, du bon boulot, même si la mise en route n'est pas évidente (mais l'aide en ligne est très bien faite (cf. ci-dessus et ci-dessous)!
                      • [^] # Re: LinuxFR en OSD

                        Posté par  . Évalué à 1.

                        oui c exprimé en seconde, j'ai trouvé 10 sec suffisent, ou bien ca bug chez toi ? combien de temps ca reste ?

                        C'est pas bête comme tu dis de laisser le message affiché jusqu'à une nouvelle info mais osd ne fonctionne pas comme ça, on doit lui spécifer un nombre de secondes d'affichage et puis ca disparait, ou alors faire une fonction d'affichage en thread qui troune en boucle qui partage une pile d'infos avec le __main__ à étudier! masi c'est vrai que ca serait mieu et qu'on pourrait du coup écrire en plus petit :-)

                        pour le lien clikable la je voit pas du tout car c pas supporté par osd, ou alors il faudrait faire un applet et oublier OSD, en revanche détecter un certain mouvement de souris comme le plugin mozilla le fait ca doit etre plus jouable :-)

                        et merci pour les compliments c encourageant ! merci a tous.
              • [^] # Re: LinuxFR en OSD

                Posté par  (site web personnel, Mastodon) . Évalué à 1.

                Bouh marche po chez moi :( meme en mettant les trucs de police en commentaire, avec le proxy, ... sur linuxfr.
                Sur Yahoo rien non plus sauf sur la console "aplouf... nouvel essai dans 20 secondes..."
                Je pense que je vais réessayer avec un autre xosd...
                • [^] # Re: LinuxFR en OSD

                  Posté par  . Évalué à 1.

                  Si il dit aplouf c k'il n'arrive pas a retrouver l'url, ce n'est pas un problème d'OSD. Il ne te donnera pas d'indication sur la provenance de l'erreur car cette focntion est dans un "try". Essaye cette commande pour voir si le code HTML de la page apparait, et sinon dis nous le message d'erreur.
                  # python -c "import urllib; print urllib.urlopen('http://linuxfr.org/news/archive/'(...)).read();"

                  Si tu veut tester l'affichage OSD tape cette ligne de commande, "TEST" devrait apparaitre en petit et en blanc.
                  # python -c "import pyosd, time; d = pyosd.osd(); d.display('TEST'); time.sleep(3);"
                  • [^] # Re: LinuxFR en OSD

                    Posté par  (site web personnel, Mastodon) . Évalué à 1.

                    OK les tests ont marché (même si un réglage de police a été nécessaire pour voir TEST).

                    En fait, je m'étais embrouillé les pinceaux à force de modifier le script dans tous les sens: en changeant l'adresse, en mettant des lignes commentaires, ...

                    Le segfault venait bien de la police: sur mon système elle n'existe pas en taille 200.

                    Et un programme de + en tâche de fond :) Merci pour tes conseils.
                    • [^] # Re: LinuxFR en OSD

                      Posté par  . Évalué à 1.

                      Avec plaisir, merci pour les tests.

                      Quelqu'un à conseil de police à mettre par defaut ? Vu que plusieurs personnes ont des problèmes j'aimerais mettre kkchoz de plus standard.

                      Merci.
                      • [^] # Re: LinuxFR en OSD

                        Posté par  (site web personnel, Mastodon) . Évalué à 1.

                        Oui mais apparemment pyosd n'aime pas toutes les fontes: en en sélectionnant une autre que adobe dans xfontsel, le programme segfaulte. De plus sur mon ordi, tous les caractères accentués ne passent pas. Quelqu'un a une police qui les passe bien? Ou un moyen de les virer dans le parser html?

                        Sinon c'est vrai qu'on peut rater les messages (j'ai personnellement augmenté le temps pendant lequel ils restent affichés). Quelle est la syntaxe d'un appel système en python? (histoire d'appeler 'esdplay vousavezunosdenattente.son).

                        Et sur news.yahoo.fr, j'ai un problème avec ma police en 240: la ligne peut dépasser le bord de l'écran, mais il n'y a pas de retour à la ligne. Pourtant la doc de pysol parle dans l'initialisation de l'objet d'un nombre de lignes fixé à 2 en standard (elle parle aussi d'un offset vertical bien pratique quand on n'aime pas les textes qui apparaissent sur le dock windowmaker)... Est-ce que c'est autre chose? Dans ce cas on pourrait également couper les lignes avant de les afficher.

                        Voilà, mes petites remarques :)

                        PS: quand linuxfr déménage ses serveurs, on est vite en manque!
                        • [^] # Re: LinuxFR en OSD

                          Posté par  (site web personnel) . Évalué à 1.

                          au debut du script :
                          import os

                          et la ou tu veux appeler :
                          os.system("la commande")
                        • [^] # Re: LinuxFR en OSD

                          Posté par  . Évalué à 1.

                          Oui les polices c pas au point, je n'ai pas d'accents non plus. Pour le son j'avais pensé à le faire mais pas comme ca. Pour lancer esdplay:

                          import commands
                          commands.getstatusoutput('esdplay')

                          En ce qui concerne le placement et le retour à la ligne du texte, je n'ai pas vu ce dont tu parle mias je n'ai pas tout lu, je vais jetter un oeil.
  • # Re: LinuxFR en OSD

    Posté par  . Évalué à 1.

    J'ai rajouté une varaible de tolérence si il y a trop de nouveaux messages (suspect).

    Ca le fait chez moi car quand le site ne répond pas ma passerelle SME (pas top dailleurs) me met kand meme une page qui du coup n'a plus rien a voir avec la page à comparer. SI il y a trop de différence ça recharge jusqu'à ce que ce soit comparable.
  • # Re: LinuxFR en OSD

    Posté par  (site web personnel) . Évalué à 1.

    Bon comme apparemment il y a quelques personnes qui connaissent Python, j'ai une question : il en est où le support de SOAP? parce que la dernière fois que j'avais regardé, il y avait meme pas moyen de mettre en place des sessions HTTP (par cookie ou autre), et ça sux pas mal sans ça (comment je fais pour savoir si qqn est loggé par exemple?)
  • # Re: LinuxFR en OSD

    Posté par  . Évalué à 1.

    J'ai été obligé d'employer le .src.rpm car le rpm classique avait l'air d'etre compilé avec certaines libs cooker. Et après j'ai ce message d'erreur

    Traceback (most recent call last):
    File "linuxfr.py", line 3, in ?
    import htmllib, formatter, urllib, time, pyosd
    File "/usr/lib/python2.2/site-packages/pyosd/__init__.py", line 29, in ?
    import _pyosd
    ImportError: /usr/lib/python2.2/site-packages/_pyosd.so: undefined symbol: xosd_set_vertical_offset

    Une idée ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.