Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Insérer un flux RSS dans LibreOffice Impress

LibreOffice Impress peut servir de borne d'affichage dynamique sous Linux, en s'appuyant notamment sur sambaedu, mais ce qu'il lui manque dans ce cas, c'est la possibilité d'insérer des flux en provenance de sources externes (sites internet etc.)

 

En effet, afficher des images et du texte, c'est bien. Mais afficher en plus automatiquement des informations, la météo, l’éphéméride, des blagues... C'est mieux !

 

Je me suis aperçu aujourd'hui que LibreOffice Calc possédait un menu feuille / Lien vers des données externes. Ce menu permet de récupérer des données d'un tableau présent sur une page web quelconque, exemple :

Il est facile de récupérer les données des marées par exemple
Il est facile de récupérer les données des marées par exemple

Il est facile de récupérer les données des marées par exemple

Génial, LibreOffice permet de récupérer des données sur internet, je ne le savais pas. De même qu'il est possible de choisir de mettre à jour les données automatiquement toutes les 10 secondes par exemple.

Bon j'ouvre calc, j'effectue quelques essais, notamment sur la page au hasard de wikipedia

Cela fonctionne, j'arrive aussi à récupérer les blagues du site http://www.cteblague.com/uneblagueauhasard.

Problème, la mise en page est parfois moche (il y a plein de lignes jaunes indésirables quand sur la page web il n'y a pas de tableau à proprement parlé) et les lignes de caractère dépassent largement l'écran. Attention c'est parce que la fonctionnalité "source externe" est pensée "tableur", autrement dit pour des chiffres et des toutes petites chaînes de caractères (qui a dit twitter ? ^ ^).

Et de toute façon, je ne cherche pas un tableau dans Calc, mais une ou deux lignes dans Impress ! Personnellement je préfère les blagues aux tableaux de valeurs, et c'est là que je me suis souvenu d'un ancien billet sur les "Chuck Norris facts". Je vais donc faire mes essais sur ma machine Linux en local avec Chuck ^ ^

 

Les manipulations qui vont suivre ont été réalisées sous Linux, mais les scripts peuvent être probablement adaptés à MacOS (qui est certifié Unix après tout) et même à Windows 10 via le nouveau bash linux (non testé)

A savoir qu'en générant des pages html à la volée sur un serveur web linux, les utilisateurs Mac, Windows et Linux pourront indifféremment et facilement profiter des flux RSS dans leur logiciel (le chemin est le même).

 

Installation de fortune : sudo apt-get install fortune

Téléchargement des facts Chuck Norris, décompression sur le bureau

Copie des données dans le bon dossier : sudo cp Bureau/chuck_norris* /usr/share/games/fortunes/

Test : fortune -e chuck_norris

Bon, jusque là, ça fonctionne.

Je créé un premier script qui permet d'enregistrer une nouvelle blague toutes les 10 secondes dans un fichier :

#!/bin/sh
while true; do
fortune  -e chuck_norris >/home/fred/fortune.txt
sleep 10
done

J'ouvre Calc, j'essaie d'importer mon flux de blagues via le fichier, ça ne fonctionne pas. Je réfléchis et je me dis qu'il faut que le fichier soit de type HTML contenant au minimum un tableau (d'une case).

Du coup je rallonge mon script, je rajoute à ce dernier les balises <html> et <table>. Cela me rappelle mes cours d'informatique que j'ai passés au millénaire dernier...

Youpie, ça fonctionne ! Enfin presque, ça fonctionnerait parfaitement en anglais. Pourquoi ? Le flux passe bien mais j'ai un problème d'accent (ah le français et l'informatique...)

J'ai le même soucis d'accent via le navigateur internet

J'ai le même soucis d'accent via le navigateur internet

Je fais quelques recherches sur internet et je rajoute à mon script une conversion de caractères UTF8 <-> ISO-8859-15. Super, j'ai mes accents !

 

Autre problématique, il arrive que les blagues dépassent très largement l'écran (elles sont brutes de décoffrage, sur une seule ligne). 

Je me dis qu'il faut que je fasse moi-même mes propres découpages de textes dans des tableaux de mes pages web afin de faire tenir des flux entiers sur la page.

J'ai alors l'idée de rechercher dans les flux les "virgules", les "points", les "deux petits points" et les "retours à la ligne" pour y ajouter des changements de cellule vers le bas (équivalent à l'écran d'un retour chariot)

 

Voici mon script final :

#!/bin/bash

while true; do

echo "<html><table><tr>" >/home/fred/fortune.html

fortune -e chuck_norris >/home/fred/chuck.txt

sed -i -e "s/,/,<\/tr><tr>/g" chuck.txt

sed -i -e "s/\./\.<\/tr><tr>/g" chuck.txt

sed -i -e "s/\:/\:<\/tr><tr>/g" chuck.txt 

sed -i.BAK ':z;N;s/\n/<\/tr><tr>/;bz' chuck.txt

iconv -f UTF-8 -t ISO-8859-15  /home/fred/chuck.txt >>/home/fred/fortune.html

echo "</tr></table></html>" >>/home/fred/fortune.html  

sleep 10

done

Insérer un flux RSS dans LibreOffice Impress

D'accord, cela fonctionne pour Calc, j'en profite pour enregistrer le fichier. Mais pour Impress alors ? Je m'empresse d'aller vérifier tout cela... (oh le joli jeu de mots)

Impress n'a pas par défaut de menu "feuilles", normal ce n'est pas un tableur. Mais Impress permet d'importer un tableau Calc !

Pour se faire, il faut aller dans le menu insertion / objet / objet OLE

Au départ j'avais choisi l'option "créer à partir d'un fichier",  mais autant choisir d'emblée l'option "créer un nouvel objet" / "classeur Libreoffice".

 

Insérer un flux RSS dans LibreOffice Impress

Le tableau apparaît à l'écran, et surprise, le menu "feuille" apparaît également dans la barre des menus. Je retourne donc dans "feuilles" / "lien vers des données externe" / parcourir

Je sélectionne mon fichier fortune2.html (voir script au dessus)

Je choisis l'importation automatique, je sélectionne la table "HTML_all" et enfin je coche la case "actualiser toutes les 10 secondes"

Cela fonctionne, les blagues défilent toutes les 10 secondes, il n'y a même pas besoin d'ajouter une deuxième diapositive.

Les blagues s'affichant par défaut en petits caractères, il suffit d'étendre la zone de sélection (rectangle bleu) pour augmenter la taille de ceux-ci.

 

Insérer un flux RSS dans LibreOffice Impress

Ce système de flux externes m'a immédiatement donné une autre idée, il va me permettre de rajouter une horloge quasi temps réel (rafraîchissement toutes les 10 secondes) en bas de chaque diapo. Ou soyons fou, en gros caractère sur une des diapos, comme dans une vraie borne d'affichage dynamique.

Chose basique que LibreOffice ne sait pas (plus?) faire ! (il affiche la date et l'heure d'ouverture du document, même avec l'option "variable")

Insérer un flux RSS dans LibreOffice Impress

Voici la commande ultime pour afficher la date en supprimant les secondes et le fuseau horaire inutiles, et en ajoutant la majuscule au premier caractère tant qu'à faire...

date | sed 's/^.\{0\}\(.*\).\{14\}$/\1/' | sed 's/\(.\)/\U\1/' >>/home/fred/date.html

 

Ainsi qu'une commande pour aller récupérer les titres d'un flux RSS !

wget -q -O - http://www.lefigaro.fr/rss/figaro_sciences.xml | sed -n 's#.*<title>\(.*\)</title>.*#\1#p' >>/home/fred/rss.html

Insérer un flux RSS dans LibreOffice Impress

#!/bin/bash
echo "<html><table><tr>" >/home/fred/ephemeride.html
wget -q -O - http://www.ephemeride-jour.fr/rss/rss_saints.php >/home/fred/ephemeride.xml
xml2 <ephemeride.xml >ephemeride.txt
sed -i.BAK '1d' ephemeride.txt
sed -i.BAK '1d' ephemeride.txt
sed -i.BAK '1d' ephemeride.txt
sed -i.BAK '1d' ephemeride.txt
sed -i.BAK '1d' ephemeride.txt
sed -i.BAK '1d' ephemeride.txt
sed -i.BAK '1d' ephemeride.txt
sed -i -e "s/rss//g" ephemeride.txt
sed -i -e "s/channel//g" ephemeride.txt
sed -i -e "s/description//g" ephemeride.txt
sed -i -e "s/item//g" ephemeride.txt
sed -i -e "s/\/\/\/\///g" ephemeride.txt
sed -i -e "s/= <b>//g" ephemeride.txt
sed -i -e "s/= <B>//g" ephemeride.txt
sed -i -e "s/title=//g" ephemeride.txt
sed -i -e "s/link=//g" ephemeride.txt
sed -i -e "s/pubDate=//g" ephemeride.txt
sed -i -e "s/<\/b>//g" ephemeride.txt
sed -i -e "s/<\/b>//g" ephemeride.txt
sed -i -e "s/<\/B>//g" ephemeride.txt
sed -i -e "s/= //g" ephemeride.txt
sed -i -e "s/=//g" ephemeride.txt
sed -i -e "s/http\:\/\/www\.ephemeride-jour\.fr\/ephemeride\/saints-jour\.php//g" ephemeride.txt
sed -i -e "s/ 00\:00\:00 GMT//g" ephemeride.txt

sed -i -e "s/\./\.<\/tr><tr>/g" ephemeride.txt
sed -i -e "s/<BR>/<\/tr><tr>/g" ephemeride.txt
sed -i.BAK ':z;N;s/\n/<\/tr><tr>/;bz' ephemeride.txt
iconv -f UTF-8 -t ISO-8859-15  /home/fred/ephemeride.txt >>/home/fred/ephemeride.html
echo "</tr></table></html>" >>/home/fred/ephemeride.html 

Insérer un flux RSS dans LibreOffice Impress

#!/bin/bash
echo "<html><table><tr>" >/home/fred/news.html
wget --user-agent="Mozilla" -q -O - https://guyane.coconews.com/flux-agenda.rss >/home/fred/news.xml
xml2 <news.xml >news.txt
sed -i.BAK '1d' news.txt
sed -i.BAK '1d' news.txt
sed -i.BAK '1d' news.txt
sed -i.BAK '1d' news.txt
sed -i.BAK '1d' news.txt
sed -i.BAK '1d' news.txt
sed -i.BAK '1d' news.txt
sed -i.BAK '1d' news.txt
sed -i.BAK '1d' news.txt
sed -i -e "s/rss//g" news.txt
sed -i -e "s/channel//g" news.txt
sed -i -e "s/description//g" news.txt
sed -i -e "s/item//g" news.txt
sed -i -e "s/\/\/\/\///g" news.txt
sed -i -e "s/\/\/\///g" news.txt
sed -i -e "s/•//g" news.txt
sed -i -e "s/title=//g" news.txt
sed -i -e "s/link=//g" news.txt
sed -i -e "s/pubDate=//g" news.txt
sed -i -e "s/’/ '/g" news.txt
sed -i -e "s/€/euro/g" news.txt
sed -i -e "s/=//g" news.txt
sed -i -e "s/ 00\:00\:00//g" news.txt
sed -i -e "s/Lire la suite//g" news.txt

sed -i -e '/^category/d' news.txt
sed -i -e '/^Thu,/d' news.txt
sed -i -e '/^Fri,/d' news.txt
sed -i -e '/^https/d' news.txt
sed -i -e '/^jeudi/d' news.txt
sed -i -e '/^vendredi/d' news.txt
sed -i -e '/^Jeudi/d' news.txt
sed -i -e '/^Sat/d' news.txt
sed -i -e '/^infos\.\.\./d' news.txt

sed -i -e "s/<BR>/<\/tr><tr>/g" news.txt
sed -i.BAK ':z;N;s/\n/<\/tr><tr>/;bz' news.txt

iconv -f UTF-8 -t ISO-8859-15  /home/fred/news.txt >>/home/fred/news.html
#echo `</home/fred/news.txt`  >>news.html
echo "</tr></table></html>" >>/home/fred/news.html  

 

 

Insérer un flux RSS dans LibreOffice Impress
Insérer un flux RSS dans LibreOffice Impress

Ces "nouvelles" fonctionnalités feront je l'espère ressembler vos documents LibreOffice Impress davantage à une vraie borne d'affichage dynamique. Si ce tuto pourra servir ou donner des idées à certains d'entre vous, notamment au niveau des scripts, c'est encore mieux !

Pour être informé des derniers articles, inscrivez vous :

toto 29/10/2017 15:06

salut, est-ce que ça marche aussi avec openoffice 4.1.4 ?

merci

Mike Da Funk 30/10/2017 00:04

Hello, très probablement, il se peut que les menus soient placés à des endroits différents, c'est la cas du menu source externe dans la vidéo.