(Spécifications du langage HTML

Transcription

(Spécifications du langage HTML
Spécifications du langage HTML
pour écrire des sites web spécifiques
à la freebox
01/10/2005 v0.3
DaRkYoda (Freeplayer.org)
Avec l’aide de Wizou (freexplorer.free.fr)
SOMMAIRE
1
2
3
Introduction ___________________________________________________________ 3
1.1
Pourquoi des sites web particulier __________________________________________ 3
1.2
Glossaire _______________________________________________________________ 3
1.3
Principe de fonctionnement________________________________________________ 4
Images / couleurs supportées par la Freebox _________________________________ 5
2.4
Généralités _____________________________________________________________ 5
2.5
Format des images _______________________________________________________ 5
2.6
Couleurs des textes et cellules de tableaux____________________________________ 6
Interaction entre un mod et le site HTML-Freebox! ___________________________ 7
3.7
Gestion des urls _________________________________________________________ 7
3.8
Les tags remplacés à l’exécution____________________________________________ 7
3.8.1
3.8.2
4
5
TAGS de gestion des URLS _____________________________________________________ 7
TAGS de gestion de la navigation_________________________________________________ 9
Généralités ___________________________________________________________ 10
4.9
Balises META__________________________________________________________ 10
4.10
Police de caractères disponibles ___________________________________________ 10
4.11
Taille du site web _______________________________________________________ 10
4.12
User-Agent ____________________________________________________________ 11
Gestion de l’affichage d’une vidéo sur un site HTML Light ____________________ 12
5.13
Création de tags et actions pour commander VLC____________________________ 12
5.14
Définition des dimensions de la vidéo_______________________________________ 13
ANNEXE A_______________________________________________________________ 14
ANNEXE B_______________________________________________________________ 17
1 Introduction
1.1 Pourquoi des sites web particulier
La freebox dispose d’un client web basé sur le langage HTML dérivé de la spécification
suivante : W3C HTML-3.2 reference specification
On peut trouver les spécifications de base du langage HTML supporté par la freebox dans le
document « Freebox HTML Reference Specification » fournit par Free avec le Freeplayer ou
disponible à l’adresse suivante :
http://www.freeplayer.org/download/documentation/html-rs.pdf
Les principaux ajouts fait par rapport à du HTML classique sont :
• Gestion de la vidéo en fond d’écran
• Gestion des touches de la télécommande
• Gestion de la transparence sur les couleurs de fond et sur la couleur du texte
La définition d’une spécification est destinée à normaliser l’écriture des sites web créés
spécialement pour la freebox.
Tous les sites web écrits pour la freebox ne devront nécessiter aucun traitement particulier
(surtout pour les images) avant d’être affiché par la freebox.
Cependant, la freebox ne sachant pas lire les sites web directement sur Internet (uniquement
sur le réseau local), la lecture de ces sites nécessitera l’utilisation d’un « mod » freeplayer
disposant d’un proxy qui chargera la page en local avant de la retransmettre à la Freebox.
Afin d’ajouter des fonctionnalités avancées pour ces sites, un paragraphe de ce document
décrit la manière d’interagir entre le site web et le « mod »
1.2 Glossaire
Mod : Un mod freeplayer est un logiciel destiné à remplacer ou à améliorer le logiciel
freeplayer d’origine fournit par Free.
HTML-Freebox! : Dans tout le reste du document ce terme désigne le langage HTML
supporté par la Freebox avec toutes les spécificités qui le caractérise.
Proxy : Le proxy est la partie logicielle qui permet de charger une page web en local avant de
la renvoyer vers la freebox. Le proxy sert de passerelle entre la Freebox et Internet.
1.3 Principe de fonctionnement
La page web créée grâce à ce document peut être placée sur n’importe quel serveur web
standard.
Le mod freeplayer qui souhaite ensuite pouvoir lire ces pages devra gérer toutes les
fonctionnalités définies ici.
Pour les mods basés sur php, il est possible de trouver un exemple de module de base à
l’adresse suivante :
http://www.freeplayer.org/freebox/internet.phps
Un annuaire a été mis en place afin de regrouper les sites web créé en HTML-Freebox!
http://www.freeplayer.org/freebox/
N’hésitez pas à proposer vos créations à l’équipe de freeplayer.org ([email protected])
afin de figurer dans cet annuaire.
2 Images / couleurs supportées par la Freebox
2.4 Généralités
Le client HTML de la freebox ne supporte que le format gif.
Une limitation matérielle fait que la freebox ne peut pas et ne pourra jamais afficher plus de
256 couleurs sur une même « page écran ».
9 couleurs sont réservés pour les affichages standard de la freebox est ne peuvent donc pas
être redéfinies (rouge, noir …).
2.5 Format des images
La freebox peut afficher les images au format gif, tout autre type d’image ne sera pas affiché.
Toutes les images utilisées avec la freebox doivent prendre en compte les exigences
suivantes :
•
La freebox a une palette de 256 couleurs.
•
Chaque couleur est définie par 4 valeurs rouge, vert, bleu, transparence sur 64 niveaux
avec la vidéo.
•
Elle a 9 couleurs prédéfinie (pour le teletext):
NONE
BLACK
RED
GREEN
YELLOW
BLUE
MAGENTA
CYAN
WHITE
•
#00000000
#0000003f
#ff00003f
#00ff003f
#ffff003f
#0000ff3f
#ff00ff3f
#00ffff3f
#ffffff3f
Après, y a les couleurs de la page html. Par défaut :
bgcolor
text
link
alink
vlink
#00000000
#f0f0f03f
#0020003f
#f0f0003f
#f000003f
•
Soit au total, 14 couleurs réservées. Donc, dans le meilleur des cas, il ne reste plus que
242 couleurs pour les images.
•
Les couleurs des images sont allouées dans la palette de la freebox dans l'
ordre
d'
apparition dans l'
image (et non dans l'
ordre de la palette d'
origine de l'
image). Cela
permet de n'
allouer dans la palette globale que les couleurs réellement utilisées dans
l'
image.
•
Au delà des 256, toutes les autres couleurs de l'
image sont mappées
sur le noir (ça changera dans les prochaines versions 1.7.x).
•
La couleur marquée "background" dans un gif est transparente sur la page
html, même si le flag transparent n'
est pas activé.
Exemple : Il est possible d’utiliser plusieurs images gifs avec des palettes de 50 couleurs
totalement différentes, mais 2 images gifs de 256 couleurs devront partager la même palette.
Il est possible de faire une page web avec n’importe quelles palettes personnalisées en
respectant ces exigences.
Si une image dépasse la taille maximum ou si elle dépasse en dehors de l’écran, elle n’est pas
affichée.
2.6 Couleurs des textes et cellules de tableaux
•
•
•
Il est possible de définir la couleur de fond d’une cellule avec l’attribut bgcolor=
Il est possible de définir la couleur du texte grâce à la balise <FONT color=xxxx>
La couleur s’exprime toujours sous forme hexadécimale avec une notation RGB
o #RRGGBBTT avec TT qui représente la transparence
o La transparence est une valeur comprise entre 0 et 3F et représente un niveau
de transparence entre 0 et 100%
o Exemple : #FF000020 représente une couleur rouge transparente à 50%
o La transparence permet entre autre d’afficher des pavés semi transparent par
dessus la vidéo.
3 Interaction entre un mod et le site HTMLFreebox!
3.7 Gestion des urls
La gestion des urls dans un site web HTML-Freebox! est identique au HTML standard :
utilisation de la balise <a href=[url]> [texte] </a>
Ces balises peuvent se voir ajouter l'
attribut focused pour indiquer que cet hyperlien doit être
sélectionné par défaut à l'
apparition de la page.
Cela permet de faciliter la navigation de l'
utilisateur :
<a href="lien.html" focused>titre du lien</a>
La freebox ne sait pas lire directement un lien sur internet.
Il est donc nécessaire de convertir tous les liens extérieurs pour que les pages soient chargées
par l’intermédiaire d’un « proxy ».
Dans le paragraphe suivant, nous allons voir un ensemble de tags qui permette au site web de
s’interfacer avec le mod freeplayer. Il faut noter que le mod devra donc, en fonction de la
gestion de chacun de ses tags, utiliser ou non le proxy dans les liens de remplacement.
3.8 Les tags remplacés à l’exécution
Afin de pouvoir s’intégrer dans un mod freeplayer un site web écrit en HTML-Freebox! doit
utiliser des « tags » particulier qui seront remplacé lors de la lecture de la page web.
3.8.1
TAGS de gestion des URLS
Afin de pouvoir permettre au mod qui va lire les pages web de garder le contrôle sur la
navigation, un certain nombre de tags représentant les urls du mod sont intégrés dans les
pages web.
Les tags suivants sont définis, ils seront remplacés par le proxy avant d’envoyer la page vers
la freebox.
Les tags dérivés pour les balises META
%%HOME_PAGE%%
%%LOVE_PAGE%%
%%LOVE2_PAGE%%
%%MAIL_PAGE%%
%%MAIL2_PAGE%%
%%NOCHANNEL_PAGE%%
Lien
Lien
Lien
Lien
Lien
-
vers
vers
vers
vers
vers
la page d’accueil du mod
une page de favoris
une seconde page de favoris
la gestion des mails du mod
la lecture des mails
Ces tags seront en particulier utilisés pour définir les actions concernant les touches de la
télécommande gérées par la balise META.
Exemple :
<meta name="home_page" content="%%HOME_PAGE%%">
Tous ces liens doivent être redéfinis pour utiliser les touches de la télécommande pour la
navigation dans votre site web ou pour permettre au mod de gérer lui même la touche de la
télécommande.
Dans tous les cas, il est conseillé de laisser la touche home pour revenir vers la page d’accueil
du mod et ne pas créer un site web d’ou on ne peut plus ressortir…
Certains TAG n’ont pour l’instant pas d’action normalisé (%%NOCHANNEL_PAGE%%) il est donc
déconseillé de les utiliser.
Les tags dérivés pour les balises LINK
%%HELP_PAGE%%
%%OPTIONS_PAGE%%
%%RED_PAGE%%
%%GREEN_PAGE%%
%%YELLOW_PAGE%%
%%BLUE_PAGE%%
%%INFO_PAGE%%
%%GUIDE_PAGE%%
%%STOP_PAGE%%
%%PAUSE_PAGE%%
Touche
Touche
Touche
Touche
Touche
Touche
Touche
Touche
Touche
Touche
?
options
rouge
verte
jaune
bleue
info
guide
stop
pause
Exemple d’utilisation :
<link rel="help" href="%%HELP_PAGE%%">
Les touches de directions
%%UP_PAGE%%
%%DOWN_PAGE%%
%%LEFT_PAGE%%
%%RIGHT_PAGE%%
Touche
Touche
Touche
Touche
haut
bas
gauche
droite
Il n’est pas conseillé de surcharger les touches de directions car elles sont utilisées dans la
navigation des liens de la page web.
Les TAGS d’informations
%%NAME%%
%%VERSION%%
Nom du mod
Version du mod
Dans le mod qui gère l’explorateur de page web, il est nécessaire de remplacer tous ces tags.
S’ils ne sont pas utilisés, il suffit de les remplacer par la valeur none
Le mod n’a aucune obligation de contrôler la validité de l’utilisation de ces TAGS, il est donc
de votre responsabilité de les utiliser correctement.
Le site web ne devra pas faire appel à un fichier d’un mod particulier de manière directe afin
de permettre une lecture correcte sur l’ensemble des mods existants. Si le webmaster souhaite
faire un lien vers une des pages du mod, il doit utiliser le tag correspondant à la fonction
souhaitée et c’est au mod de gérer correctement ce tag pour une compatibilité parfaite.
3.8.2
TAGS de gestion de la navigation
La navigation dans les différentes pages doit être gérée par le mod.
Cependant, certains mots clés sont ajoutés afin de permettre l’ajout de lien de navigation sur
les pages.
%%BACK%%
%%NEXT%%
%%HOME%%
%%RELOAD%%
Retour à la page précédente
Avance à la page suivante (si un retour a été fait)
Première page ouverte dans le navigateur (à ne pas
confondre avec %%HOME_PAGE%%
Recharge la page courante
Exemple :
<a href="%%BACK%%">Précédent</a>
<< Navigation >>
<a href="%%NEXT%%">Suivant</a>
Dans tous les cas, si le mod souhaite redéfinir une touche par un lien vers un site sur internet,
il doit gérer l’utilisation du proxy.
Par exemple en utilisant le proxy internet.php (cf annexe) si le mod souhaite lire la page
annuaire lors de l’appui sur la touche LOVE il devra définir :
%%LOVE_PAGE%% => internet.php ?url=http://www.freeplayer.org/freebox
4 Généralités
4.9 Balises META
La freebox propose un certain nombre de tag META qui permette de rediriger vers une autre
page web ou de faire disparaître une page au bout d’un certain temps.
Le format est le suivant :
<META NAME="meta_name" CONTENT="tps;url=page.html">
Dans tous les cas, tps spécifie le temps au bout duquel l’action est effectuée, et page.html
représente la page à charger durant l’opération.
meta_name peut prendre les valeurs suivantes :
• disappear: qui permet de faire disparaître la page web au bout du temps tps.
• refresh: qui permet de charger la page indiquée au bout du temps tps
• nopicture: qui permet de charger la page indiquée si il n’y a aucune image durant le
temps tps indiqué
4.10 Police de caractères disponibles
La freebox dispose de peu de police de caractère, une police « par défaut » qui correspond à la
police Helvetica et une police Symbol qui permet d’afficher un certain nombre de caractères
spéciaux (cf annexe)
La balise <FONT> permet de changer la police de caractère pour dessiner certains symboles :
Exemples :
<FONT family=symbol size=0>...</FONT>
<FONT family=symbol size=+2>...</FONT>
4.11 Taille du site web
La taille standard de l’écran utilisé par la freebox est 720x576
Cependant, il est possible en fonction du téléviseur qu’il y ai une partie de l’écran qui soit
masquée.
Il est donc préférable de se baser sur une taille inférieure (600x400 par exemple) et de centrer
le site sur la page afin de garantir une compatibilité maximale.
Remarque :
Dans la construction de tableau (balise <TABLE> ou <TD>) si l'
attribut width est exprimé
en pourcentage, il se réfère toujours à la largeur de l'
écran, même s'
il s'
agit d'
une table
imbriquée dans une autre
4.12 User-Agent
Afin de permettre au créateur de page web de faire des statistiques sur les différents mods
parcourant leurs pages, il est important que chaque mod définissent un user-agent qui lui est
propre et qui devra si possible avoir la forme normalisée suivante :
[VERSION FREEBOX] : [NOM DU MOD] / [VERSIONDUMOD]
Par exemple en php pour définir un tel user-agent, il suffit d’utiliser :
ini_set('user_agent', $_SERVER["HTTP_USER_AGENT"].":".$Nomdumod."/".$version);
le résultat obtenu est le suivant :
freebox/1.6.13 :FreeplayerMod/2.0
Le respect de cette normalisation permet à chaque site de tester le user agent et de faire des
spécificités en fonction de tel ou tel mod, d’afficher des messages pour un utilisateur qui n’a
pas le dernier firmware freebox…
5 Gestion de l’affichage d’une vidéo sur un site
HTML Light
5.13 Création de tags et actions pour commander VLC
Pour pouvoir commander la lecture d’un flux vidéo directement à partir d’un site HTMLFreebox ! il faut rajouter un tag supplémentaire.
%%VLC_CONTROL%%
et le pilotage de VLC
Ce tag sera remplacé par le mod afin de lui permettre de gérer la lecture
En plus du tag, il est nécessaire de définir un certain nombre d’action (de commande)
La commande sera spécifiée en l’ajoutant de la manière suivante juste après le tag :
%%VLC_CONTROL%%?action=xxx
Les différentes actions disponibles sont :
• action=add
Joue le fichier ou le flux multimedia indiqué par le dernier paramètre _file= spécifié
Le paramètre peut désigner n'
importe quel MRL valide pour VLC
Vous pouvez également préciser des réglages VLC spécifique pour cette MRL en l'
entourant
de guillemets ou d'
apostrophes et en la faisant suivre des réglages en utilisant la syntaxe
suivante :
un espace de séparation (symbolisé par le caractère + dans un URL)
suivi du caractère : (deux-point)
suivi du nom du réglage (ex: sout-transcode-ab)
suivi du signe = (égal)
suivi de la valeur du réglage (ex: 128)
Exemple :
L'
URL suivante provoque la lecture de la WebRadio RTL: mms://vip2.yacast.fr/encoderrtl
avec transcodage audio à 128 kbits
<a
href="%%VLC_CONTROL%%?action=add&_file='mms%3A%2F%2Fvip2.yacast.fr%2Fencode
rrtl'+:sout-transcode-ab=128&param=Connexion+a+RTL...">
Ecouter RTL
</a>
• action=play
Relance la lecture si celle-ci est arrétée
• action=rewind
Saute en arrière dans la video ou le son
• action=forward
Saute en avant dans la video ou le son
•
action=plprev
Passe a l'
entrée précédente de la playlist
• action=plnext
Passe à l'
entrée suivante de la playlist
• action=pause
Met la lecture courante en pause ou reprend la lecture
• action=stop
Arrête la lecture en cours
5.14 Définition des dimensions de la vidéo
Pour changer la taille de l'
affichage, vous pouvez faire par exemple
<body background="ts://127.0.0.1?ox=10&oy=10&ow=700&oh=500">
ox,oy,ow,oh pour spécifier la zone d'
affichage de la vidéo
ix,iy,iw,ih pour spécifier la zone à afficher dans la vidéo
ANNEXE A
Exemple de proxy php utilisé pour la lecture
des pages écrites en HTML Frebox !
<?php
//////////////////////////////////////////////////////////////////////////////
// Browser de page web ecrit en langage HTML-Freebox!
// Ce module permet de lire les pages et de gérer les tags ainsi que le proxy
// tel que décrit dans le document Langage HTML-Freebox! disponible
// à cette adresse : http://www.freeplayer.org/download/documentation/HTMLFreebox.pdf
// Merci de signaler vos problémes ou les eventuelles améliorations
// à DaRkYoda équipe Freeplayer.org : [email protected]
//
// Afin d'utiliser ce module dans votre mod freeplayer, il suffit de remplacer
// les différentes url du tableau ci-dessous par les urls correspondant à votre
// configuration. A noter que la première url (.*) est trés importante ! car
// elle correspond à la gestion standard pour utiliser le proxy web pour les
// page sur internet
//////////////////////////////////////////////////////////////////////////////
// Version 0.1 - xx/09/2005
//
Création du module
//
// Version 0.2 - 01/10/2005
//
Modification du module afin de respecter les spécifications
//
du document Langage HTML-Freebox!
//////////////////////////////////////////////////////////////////////////////
$mod_name = "MonMod";
$mod_version = "2.0";
$mod_proxy = "/AnnuaireFbx/internet.php";
$url_base = "";
$url_remplace = array (
// Les tags dérivés pour les balises META
// Lien vers la page d'accueil du mod
'%%HOME_PAGE%%', '/menu.php',
// Lien vers une page de favoris
'%%LOVE_PAGE%%', '',
// Lien vers une seconde page de favoris
'%%LOVE2_PAGE%%', '',
// Lien vers la gestion des mails du mod
'%%MAIL_PAGE%%', '',
// Lien vers la lecture des mails
'%%MAIL2_PAGE%%', '',
// Les tags dérivés pour les balises LINK
// Touche ?
'%%HELP_PAGE%%',
'',
// Touche options
'%%OPTIONS_PAGE%%',
'',
// Touche rouge
'%%RED_PAGE%%',
'',
// Touche verte
'%%GREEN_PAGE%%',
'',
// Touche jaune
'%%YELLOW_PAGE%%', '',
// Touche bleue
'%%BLUE_PAGE%%',
'',
// Touche info
'%%INFO_PAGE%%',
'',
// Touche guide
'%%GUIDE_PAGE%%',
'',
// Touche stop
'%%STOP_PAGE%%',
'',
// Touche pause
'%%PAUSE_PAGE%%',
'',
// Les touches de directions
// Touche haut
'%%UP_PAGE%%',
'',
// Touche bas
'%%DOWN_PAGE%%',
'',
// Touche gauche
'%%LEFT_PAGE%%',
'',
// Touche droite
'%%RIGHT_PAGE%%',
'',
// Lien de navigation sur les pages.
// Retour à la page précédente
'%%BACK%%',
'',
// Avance à la page suivante (si un retour a été fait)
'%%NEXT%%',
'',
// Première page ouverte dans le navigateur (à ne pas confondre avec %%HOME_PAGE%%)
'%%HOME%%',
'',
// Recharge la page courante
'%%RELOAD%%',
''
);
function RebuildUrl($oldurl)
{
global $mod_proxy;
global $url_remplace;
global $url_base;
$newurl = "";
$oldurl = trim($oldurl);
// Si l'ancienne url contient '%%' c'est surement un tag à remplacer
if (substr($oldurl,0, 2)=="%%")
{
// On parcours le tableau de remplacement des urls
for ($i=0; $i<count($url_remplace)/2; $i++)
{
if ($oldurl==$url_remplace[2*$i])
{
// C'est bien un tag, on remplace l'url
$newurl = $url_remplace[2*$i+1];
break;
}
}
}
// Si l'url n'est pas un tag :
if (empty($newurl))
{
// On transforme les chemins relatifs en absolu
if (substr($oldurl,0,7)!="http://")
{
if ($oldurl[0]=="/")
$newurl = $url_base.$oldurl;
else
$newurl = $url_base.'/'.$oldurl;
}
else
$newurl = $oldurl;
// On rajoute le chargement par le proxy
$newurl = $mod_proxy."?url=".urlencode($newurl);
}
return $newurl;
}
ini_set('user_agent', $_SERVER["HTTP_USER_AGENT"].':'.$mod_name.'/'.$mod_version);
isset($_GET["url"])?$url=$_GET["url"]:$url = "http://www.freeplayer.org/freebox/";
// On converti tout les slashe en antislashe
$url = str_replace("\\","/",$url);
// On sauvegarde l'url de base pour gérer les répertoires relatifs
$url_base = substr($url,0, strrpos($url, "/"));
$file = file_get_contents($url);
if(strtoupper(substr($url,-3))=="GIF")
header("Content-type: image/gif");
else
{
// Création des pattern pour les ereg
$search = "/(.*)< *(a|img|meta|link) *.* (href|src|content)= *\"([^\"
]*)\"([^<]*)/e";
$replace = "'\\1<\\2 \\3=\"'.RebuildUrl('\\4').'\"\\5'";
$file = preg_replace($search, $replace, $file);
// On remplace classiquement les TAGS d'informations
// Nom du mod
$file = str_replace("%%NAME%%", $mod_name, $file);
// Version du mod
$file = str_replace("%%VERSION%%", $mod_version, $file);
}
echo $file;
?>
ANNEXE B
Caractère Symbol Freebox
(merci à dhaya - [email protected] - pour cet excellent travail)