Je vois un paquet de questions tourner sur comment créer un
flux privé dont les messages viennent d'un flux RSS... Même si je pense que funfoo mettra bientôt en place un système permettant de faire ça simplement (ou un équivalent), je vois que certains ont du mal à attendre jusque là ^^
Donc voilà un petit tuto sur comment faire ça le plus simplement possible (enfin, pas trop non plus ^^) sans rien savoir de la programmation... Bon, il faut quand même être un minimum geek (faudra par exemple chercher par vous même comment envoyer votre script sur votre espace personnel, si vous en avez un) et être motivé.
La solution que j’apporte ici n'est pas parfaite parce que j'opte pour une solution sans base de donnée (pour plus de simplicité), du coup il se peut que des messages sautent parfois...
Tout d'abord, les ingrédients nécessaire:- Du temps !
- Une idée et un flux RSS (son adresse)
- Un espace personnel sur internet où stocker des pages web (pages perso free, ou autre opérateur)
- Un flux privé Nabizdead
Ensuite quelques conseils:
Le système que je propose va envoyer les titres des news vers un flux privé de votre choix. Il faut donc que ces titres ne dépassent généralement pas 100 caractères (les messages dans les flux privés sont limités à 100 caractères), soient toujours dans la même langue, et surtout soient compréhensibles sans avoir besoin de lire le contenu de l'article.
En effet, souvent les articles ont des titres assez fantaisistes qui ne veulent rien dire si l'on ne lit pas le contenu. Du coup pour, un flux basé sur de tels titres, on ne comprendrait rien à ce que nous raconterais le lapin: imaginez qu'ils vous dise "les carottes sont cuites", puis "Mais que se passe-t-il ?", suivit de "bleu ou rouge ?"... franchement, vous comprenez le contenu de l'article ? o_O Donc évitez ce genre de flux.
De même, pour le langage, votre flux va être fait pour parler français, ou bien anglais, mais pas les deux, du coup si vous le configurez pour parler français mais qu'un coup votre message est en français et un autre en anglais, votre lapin va tout prononcer à la française et ça va être incompréhensible !
Maintenant, voyons comment s'y prendre:
1. Première étape,
créer un flux privé sur votre interface Nabizdead (le petit bouton "créer un flux privé" tout en bas).
Ensuite cliquer sur le nom de ce nouveau flux pour le configurer, donnez-lui un nom explicite (en pensant bien que le lapin lira ce nom avant chaque lecture de message du nouveau flux) et qui soit prononcé correctement, une description complète qui ne fasse pas que répéter le titre du flux (on a bien compris que "Bloblote.fr" est "flux pour bloblote.fr"... décrivez plutôt de quoi parle ce flux en général), et donnez l'adresse du flux dont vous allez extraire les informations.
2. Ensuite, toujours sur cette même interface de configuration de votre flux privé, en bas cliquez sur "
activer l'API maintenant" en conservez l'adresse qui s'affiche alors au dessus du bouton. Ca va nous servir bientôt.
3. Créez maintenant sur votre ordi
un fichier nommé "ceQueVousVoulez
.php" et ouvrez-le dans un éditeur de texte simple (notepad par exemple).
Collez-y le texte suivant:
- Code:
-
<?php
// periode entre chaque appel à ce script (en heures)
$periodeCRON = [periodeCRON];
// adresse du flux RSS
$adresseFluxRSS = '[AdresseDeMonFluxRSS]';
// adresse de l'API (de la forme 'http://www.nabizdead.net/api.php?action...&content=')
$adresseAPI = '[AdresseAPI]';
//-----------------------------
// calcul de la précédente date d'appel à ce script
$previousDate = date_create();
$previousDate->modify('-'.$periodeCRON.' hour');
// recuperation du flux rss
$fluxRSS = simplexml_load_file($adresseFluxRSS);
// parcours chaque article du flux
foreach(array_reverse($fluxRSS->xpath('/rss/channel/item')) as $news) {
// recupère la date et le titre de l'article
$dateItem = date_create($news->pubDate);
$titleItem = $news->title.'.';
if (mb_detect_encoding($titleItem, "auto", true) != 'UTF-8') {
utf8_encode($titleItem);
}
// si l'article a été posté après la précédente exécution de ce script
if ($previousDate < $dateItem) {
// envoi du titre dans le flux
echo "Article envoyé (".file_get_contents($adresseAPI.(urlencode($titleItem)), false) . ")<br>";
} else {
// sinon on ignore l'article
echo "Article ignoré (". date_format($dateItem, "Y-m-d H:i:s") ." - ". date_timezone_get($dateItem)->getName() .")<br>";
}
}
?>
4. remplaçez sur les premières lignes:
[AdresseDeMonFluxRSS] par l'adresse où se trouve le flux rss
[AdresseAPI] par l'adresse de l'API qui vous a été donnée lorsque vous avez activé l'API pour votre flux privé (
en enlevant la fin, c'est à dire
tout ce qu'il y a après "&content=")
[periodeCRON] par la fréquence à laquelle votre script CRON sera appelé (par exemple, si c'est toutes les 2 heures, mettez 2)
5. Ensuite,
mettez ce fichier sur internet. Sur votre espace perso free par exemple ou sur votre propre serveur (je pourrais pas donner plus de détail sur cette étape parce que ça dépend de l'hébergeur de chacun).
A cette étape, vous devriez pouvoir
lancer ce script manuellement en tapant l'adresse de votre fichier (celui sur internet, pas sur votre ordi) dans la barre d'adresse de votre navigateur.
Une liste de "Article envoyé" (pour les articles du flux qui datent de moins de X heures, où X est le nombre que vous avez mis pour [periodeCRON]) et "Article ignoré" pour les articles plus anciens devrait s'afficher après un petit temps de chargement. De même, après avoir lancé manuellement le script, la liste des
articles envoyés devrait être visible dans votre flux... C'est presque fini !
Note: Il est possible qu'aucun article ne soit envoyé (seulement des "Article ignoré" sont affichés après avoir lancé le script, et le flux privé reste vide). C'est très probablement qu'aucun article dans le flux RSS n'est plus récent que [periodeCRON] heures. Il y a alors 2 solutions, soit attendre qu'un article vienne juste d'être posté pour relancer le script manuellement et vérifier ainsi qu'il fonctionne bien (le nouvel article devrait alors être envoyé vers le flux), soit modifier la valeur de [periodeCRON] par quelque chose de très élevé (du style 1000), envoyer le script mis à jour sur internet pour écraser la version précédente, relancer le script une fois (tous les articles devraient alors être envoyés), puis modifier à nouveau le script avec la valeur normale et le renvoyer sur internet en remplaçant le précédent (sinon tous les articles du flux seront envoyés à chaque fois, ce qui ne va pas puisque l'on ne veut envoyer que les nouveaux).6. Maintenant,
utilisez un service de CRON pour appeler automatiquement votre script toutes les X heures (où X est le nombre que vous avez mis pour
[periodeCRON]). Je n'en connais pas donc je vais pas donner de nom, mais une petite recherche sur internet devrait suffire. C'est facile à trouver et généralement gratuit.
7. Enfin, dernière étape, et si tout fonctionne correctement:
ouvrir le flux privé (si vous souhaitez que tout le monde puisse s'y abonner) en cliquant dans son panneau de configuration sur l'
option "ouvert" au lieu de "sur invitation".
Voilà ! vous pouvez vous abonner à votre flux comme à tous les autres ! (ou inviter votre lapin manuellement si vous ne voulez pas ouvrir le flux)... Essayez quand même de vérifier de temps en temps si le flux continue de fonctionner, on ne sait jamais... De même, il est mieux de tester votre flux en invitant votre lapin manuellement pendant quelques jours (sans ouvrir le flux) pour vérifier que ça fonctionne bien avant d'ouvrir votre flux aux autres.
[Edit:] Plus besoin d'inviter manuellement son lapin, puisque depuis la dernière mise à jour votre lapin est automatiquement invité à votre flux privé lorsque vous le créez.De mon côté j'ai vérifié que mon système marchait en créant un flux "Nouvelles recettes sur CuisineActuelle.fr" (basé sur le flux RSS http://www.cuisine-et-recette.fr/rss2/feed/Recipes) et a l'air de fonctionner (y a un petit problème d'accents lu bizarrement sur l'article qui vous sera lu si vous vous abonnez maintenant-là-tout-de-suite, mais normalement c'est corrigé sur le script que j'ai fourni ci-dessus).
"Amusez"-vous bien ! :-)