~bohwaz/blog/

Avec de vrais morceaux de 2.0 !

Auto-blog, VroumVroumBlog et effet Streisand

Suite à ce billet de SebSauvage, j'ai trouvé cette idée des AutoBlogs excellente, du coup j'ai pas pu résister, vous me connaissez ! Je m'y suis attelé ce midi pour reprendre le code de VroumVroumBlog et lui donner une cure de jeunesse et voilà j'ai tout réécrit au final !

Voici donc VroumVroumBlog 0.2, complètement nouveau et tout beau ! Il reprends les idées et certains trucs de la version de Sebsauvage :

  • Très simple : un seul fichier à copier, un seul fichier à configurer pour que ça marche
  • Gestion de ATOM 1.0 / RSS 2.0 en entrée
  • Recopie automatiquement les articles du flux source dans sa base de données
  • Recopie automatiquement les images liées dans les articles du flux source
  • Re-publication des articles dans un flux RSS 2.0
  • Clonage aisé !

Mais ma version ajoute :

  • Utilisation de SQLite3 comme base de données plutôt qu'un fichier sérialisé (permet d'améliorer les performances)
  • SQLite3 est normalement installé par défaut partout, mais sinon, sous debian/ubuntu : apt-get install php5-sqlite3
  • La base de données peut être téléchargée et directement réutilisée avec un autre logiciel
  • Code objet propre, codé pour PHP 5.3
  • Gestion de RSS 1.0 / RDF en entrée en plus
  • Recherche performante full-text !
  • 850 lignes de code (oui je l'ai un peu fait grossir, mais au final ça ne fait que +9Ko par rapport à la version 0.1.126)
  • Toujours un seul fichier unique, et aucune dépendance
  • Séparation des bases de données de recherche (n'est utile que localement) et d'articles (utile à cloner)
  • Possibilité de traduire l'interface
  • Possibilité de faire une "ferme" d'auto-blogs avec un seul fichier à maintenir
  • Possibilité d'utiliser des rewrite-rule pour faire de jolies URLs (facultatif)
  • Pagination plus évoluée
  • Possibilité d'indiquer plusieurs domaines pour le miroir des images/médias
  • Recherche des médias dans les tags image (src) et dans les liens (href), ainsi par exemple un PDF mis en lien et se trouvant sur un domaine autorisé sera aussi recopié
  • Gestionnaire réseau plus solide avec timeout pour éviter des attentes inutiles
  • Gestion des erreurs en cas de flux XML invalide
  • Gestionnaire d'exceptions et d'erreurs propre
  • Rétro-compatible avec les fichiers de configuration des version 0.1.XXX (mais pas avec les données)

Téléchargement et installation

C'est pas tout ça, mais on commence où ? Et bien avec une démo qui n'est rien d'autre que l'auto-blog de Sebsauvage : http://autoblog.kd2.org/sebsauvage.net/

Pour télécharger le code source : http://autoblog.kd2.org/source.txt

Un fichier de configuration d'exemple (pour ce blog), commenté : http://autoblog.kd2.org/vvb.ini

Pour installer : télécharger le code source, renommer ce code source en index.php, télécharger le fichier de configuration, le modifier selon ses besoins, envoyer ces deux fichiers dans un nouveau répertoire que l'on créera chez son hébergeur favori. Ensuite se rendre à l'adresse du blog, ça fera tout tout seul comme un grand.

Recherche full-text

Il est désormais possible de faire des requêtes complexes dans la recherche du blog, par exemple :

Comment traduire l'auto-blog en français ?

Simple, télécharger ce fichier : http://autoblog.kd2.org/config.txt, le renommer en config.php et le placer dans le même répertoire que index.php.

Comment avoir de jolies URLs

Pour avoir de jolies URLs comme http://autoblog.kd2.org/sebsauvage.net/Oyez-Oyez par exemple, il vous faut créer un fichier .htaccess dans le répertoire de votre auto-blog, contenant :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /sebsauvage.net/index.php?$1 [QSA,L]

Évidemment dans votre cas il faudra remplacer /sebsauvage.net/ par le bon répertoire où vous avez mis votre auto-blog. La deuxième étape est de rajouter ou d'éditer le fichier config.php de votre auto-blog et d'y placer :

<?php
define('LOCAL_URI', '');
?>

C'est tout.

Comment faire une ferme d'auto-blogs ?

Encore une fois c'est simple. Imaginons que vous ayé créé http://bohwaz.net/streisand.me/ pour y mettre plein de blogs automatiques. Vous allez télécharger le code source ci-dessus, le renommer en autoblog.php et le mettre dans ce répertoire. Dans ce même répertoire vous mettez aussi un fichier config.php contenant :

<?php
define('ROOT_DIR', dirname($_SERVER['SCRIPT_FILENAME']));
?>

Enfin, pour chaque blog que vous voulez "auto-recopier", vous créez un nouveau répertoire, par exemple "sebsauvage", et vous mettez dedans un fichier vvb.ini comme si vous installiez un auto-blog seul, mais au lieu de mettre le code source dans index.php, vous ne mettez dans index.php que ça :

<?php
require_once dirname(__DIR__) . '/autoblog.php';
?>

Vous pouvez faire comme moi et mélanger ces trois recettes afin d'avoir une ferme avec de jolies URLs et une interface en français.

EDIT du 18 juillet 2011 : une version 0.2.4 est désormais dispo, corrigeant plusieurs problèmes et ajoutant quelques petits trucs, merci à tous ceux qui m'ont signalé les bugs et aidé à les corriger :-)

Edit 26 août 2012 : il existe des forks de mon VroumVroumBlog par Mitsu : version HTML5 et par Hoaro : Ferme autoblog"

Écrire un commentaire
(facultatif)
(facultatif)
(obligatoire)
      _                _   _  __           
  ___(_)_ __ ___   ___| |_(_) \_\ _ __ ___ 
 / __| | '_ ` _ \ / _ \ __| |/ _ \ '__/ _ \
| (__| | | | | | |  __/ |_| |  __/ | |  __/
 \___|_|_| |_| |_|\___|\__|_|\___|_|  \___|
                                           
(obligatoire)

Les adresses internet seront converties automatiquement.
Tags autorisés : <blockquote> <cite> <pre> <code> <var> <strong> <em> <del> <ins> <kbd> <samp> <abbr>

BoboTiG

Excellent travail !

Je te propose un p'tit patch : pastebin.com/ahXfvcfx

En outre, il ajoute une règle CSS pour les balises pre ; "améliore" le rapatriement des médias (pas moyen de faire fonctionner @copy(...) ; fixe la constante LOCAL_URI (lors de l'inclusion de autoblog.php du dossier parent, les liens des numéros de pages sont mauvais) ; idem pour $path, chez moi il manque un slash.

À noter que je suis sous Debian GNU/Linux testing avec apache2, SQLite 3 et PHP 5, sans les modifs de la constante, de $path et de @copy => pas d'images ni de pagination correcte.

En tout cas très bon boulot :)

Bonne continuation.

BohwaZ

Hello, il faut se rendre à l'adresse abgw.alwaysdata.net/répertoire/ ou "répertoire" est le nom du répertoire qui contient vvb.ini/index.php d'un blog à recopier (par exemple chez moi : autoblog.kd2.org/sebsauvage.net/).

Enky

Bonjour,

je trouve l'initiative vraiment bonne alors je participe ;)

J'ai décider de faire une ferme.

J'ai un petit problème, j'ai une configuration qui est peut être exotique, je m’explique :

J'ai un Nginx en Reverseproxy devant un apache.

Mon RP redirige vers /urlinterne/czh.biz/autob...

Et le document root de mon apache est le répertoire juste au dessus de /czh.biz "www" (un petit dessin /www/czh.biz/autoblog/)

Le premier blog que je réplique : sebsauvage.net

ce qui donne /czh.biz/autoblog/sebsauvage.net chez apache.

et autoblog.czh.biz/sebsauva... coté publique

Jusque la c'est simple ;)

Donc la ou ça merdoi c'est que je me retrouve avec des autoblog.czh.biz/czh.biz/...

Oui regardez le vilain "/czh.biz/autoblog/sebsauvage.net" qui remonte dans l'url ... c'est caca hein !

Une idée ? par ce que tous les autres sites que j’hébergent ne me font pas ça !

Enjoy.

Merci

BohwaZ

Hello, effectivement j'ai pas trop l'habitude de ce genre de config. Tu peux mettre la ligne suivante dans un nouveau fichier dans le même répertoire et me recopier ce que ça met comme résultat ?

<?php print_r($_SERVER); ?>

BohwaZ

OK bon j'explique un peu le souci : le script n'a pas accès à la "vraie" URL servie en front par ton nginx, on peux le voir ici :

[REQUEST_URI] => /czh.biz/autoblog/sebsauvage.net/text.php

Ça c'est la requête qui est faite au script, donc le script quand il essaye de construire une URL il se dis "je suis dans /czh.biz/autoblog/sebsauvage.net/", et pas "je suis dans /autoblog/sebsauvage.net/" car il n'a aucun moyen de le savoir automatiquement.

Mais c'est pas grave, j'ai quand même une solution pour ton cas, il suffit de forcer l'URL au lieu de laisser VroumVroum la découvrir automatiquement. Pour cela, mettre dans ton config.php :

define('LOCAL_URL', basename(dirname($_SERVER['SCRIPT_FILENAME'])));

Cela devrait désormais fonctionner au poil :-)

Enky

Hahaha, trop fort ;)

Merci, ça fonctionne nickel.

Bon maintenant je prépare un index et une liste de blog.

Encore merci pour le debug et la rapidité de t'es réponses.

PS : que la question de validation soit toujours la même c'est normal ?

Gilles

Tout fonctionne ou presque : abgw.alwaysdata.net/sebsa...

J'ai mis le .htaccess que tu fournis mais ça donne pas la bonne URL.

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*) index.php?$1 [QSA,L]

Au final la bonne URL serait : abgw.alwaysdata.net/sebsa... hors l'index enlève le "index.php" donc comment faire pour une bonne URL sans aucune référence à "index.php" ?

Merci :)

Sinon Seb a refait une sortie 0.1.29 avec une lecture possible de laquadrature (balise description machin) sur son blog :)

Kevin

J'ai remarqué un souci : le script ne met pas à jour un article lorsqu'il a été édité, c'est bien dommage. Par exemple, le dernier article de SebSauvage a été mis à jour deux fois, mais le script n'a toujours que la première version.

Sioban

Hum, j'ai quelques soucis avec le config.txt pour passer en français, mais ce n'est pas bien grave.

Comme je gère des alias, le .htaccess ne convient pas, il me faut des <location></location>, mais bon c'est un détail que j'ai géré.

En revanche ce qui serait pas mal pour les fermes d'autoblog, c'est un index.php maître qui référence automatiquement les autoblogs présents dans des sous-répertoires (en reprenant les infos des vvb.ini par exemple). Mais moi, je sais faire que du statique...

PostBlue

Comme le commentaire précédent, je déplore un peu la disparition d'un index.php automatique à l'instar de celui de Sebsauvage.

Je vais me pencher dessus, ça ne doit pas être bien compliqué, mais c'est un peu la pierre angulaire, là ça fait "pas fini".

Sinon, beau travail !

memiks

Bonjour,

J'ai développé une version de l'autoblog qui gère curl pour la récupération des fichiers.

J'ai aussi changé le retour de la fonction afin qu'elle renvoie true ou false pour gérer le changement des urls (l'url restait sur l'ancien contenu)...

Si cela intéresse quelqu'un :

memiks.fr/autoblogs/autob...

memiks

Et bien j'ai du utiliser curl pour pouvoir récupérer les ressources d'un blog en local car fgetsopen n'en voulait pas (des .webm).

De plus curl peut être utilisés pour passer des proxy https par ex.

Et il est plus rapide il me semble.

Anonyme

Très bon projet, que je vient de découvrir :)

Néanmoins sur la version actuelle, certains sites plantent sur leur update (et leur affichage), en particulier lorsqu'une ressource n'est pas trouvée (erreur 404).

Le probleme semble venir d'une exception non gérée ligne 563 de autoblog.php. Il y a bien un try-catch a cet endroit, mais malgrès le commentaire ("// Ignore copy errors"), l'exception est renvoyé.

Commenter la ligne 568 ("throw $e;") semble corriger le problème :)

Bonne continuation :)