feedBox (doc "ultra béta" par manatlan)

Serveur de contenu pour freebox. C'est un programme, qui une fois lancée sur un ordinateur permet de fournir du contenu (html/audio/video/images) à une freebox, à travers l'interface freeplayer de cette dernière.
FeedBox est modulaire, et il est simple de lui ajouter des plugins, pour peu qu'on s'y connaisse en python, sinon c'est par là .

Techniquement : Programmé en python, et sous licence GPL V2. Il devrait fonctionner sur toutes les plateformes compatible python. C'est un serveur http, qui permet d'envoyer des page "HTML 3.2 spéciales" à la freebox et de piloter le serveur de contenu audio/video qu'est VLC. Ce dernier devant être installé sur le poste.


Développer un plugin

Un plugin est un répertoire contenant le code et le contenu. Il doit être placé dans le répertoire "plugins/" de feedbox.
Le code minimaliste du plugin pourrait être celui-ci :
Dans un répertoire "plugins/test", un fichier "__init__.py" qui contient le code :

__title__="Test"
__order__=10000

class main:
    def index(self):
        return "hello world"

remarque
Noter également que cette page "index" peut être appelé n'importe comment, à partir du moment où son nom est de la forme "index.*". Ainsi, les urls suivantes appelles la même page :
http://127.0.0.1/<nom du repertoire du plugin>/index
http://127.0.0.1/<nom du repertoire du plugin>/index.html
http://127.0.0.1/<nom du repertoire du plugin>/index.gif
http://127.0.0.1/<nom du repertoire du plugin>/index.toto



Améliorons notre plugin, rajoutons des pages/méthodes :

__title__="Test"

__order__=10000

class main:
    def index(self):
        return """
            <a href="aff?val=1">aff 1</a> <br>
            <a href="aff?val=2">aff 2</a> <br>
            <a href="aff">aff rien </a>
        """

    def aff(self,val=""):
        return "Affiche "+val

Nous avons rajouté une page/méthode "aff" qui peut recevoir un paramètre nommé "val" ou non . Il est donc très simple d'ajouter des pages aisément.


feedBox vient avec un ensemble de libraries prête à l'emploi, ne demandant que d'être utilisé. Vous les trouverez dans le répertoire "common/".
Ainsi, un moteur de template est également disponible (basé sur cheerytemplate). Ce dernier sert principalement à séparer le code fonctionnel du rendu de présentation, afin de ne pas mélanger code python et code html.

Voici un exemple d'utilisation :

from common.template import Template

__title__="Test"

__order__=10000

class main:
    def index(self):
        msg = "hello world"

        t_title = "Affichage d'un texte"
        t_back = "/index"
        return Template()

Remarque:
la page de template (index.html) devrait ressembler à ceci :

<py-eval="BF_HEADER">
Salut le monde ou en anglais : <py-eval="msg">
<py-eval="BF_FOOTER">

Remarque :
Le plugin spécial "home"
Ce dernier est un plugin presque comme les autres, et doit être présent pour le bon fonctionnement de la feedBox. C'est lui qui affiche la liste des autres plugins. et est appelable à tout moment (dans les pages feedBox) en pressant la touche "home" de la telecommande de la freebox.

Les seuls différences avec les autres :

Renvoyer un flux

il est également possible de renvoyer un flux http à la demande, en utilisant les generateur de python (commande yield). Ci-dessous un exemple :

__title__="Test"
__order__=10000

class main:
    def index(self):
        yield "text/html"
        yield "hello"
        yield " "
        yield "world"

Remarque :



Les fichiers statics