|
| "Traduire" les flux RSS | |
| | Auteur | Message |
---|
jelmer Lapin nain
Age : 52 Localisation : Pays-Bas Nabaztag : Sjaak van Buren Nbr de messages : 20 Carottes : 5793
| Sujet: "Traduire" les flux RSS Jeu 12 Mar 2009 - 11:52 | |
| Bonjour à tous, Parfois, une flux RSS en français / allemand / hollandais est lu avec un accent anglais "bondjour e twous". C'est parce que dans le flux, on n'a pas spécifié la langue correct. J'ai fait un petit script qui ajoute la langue. Il te faut: une site web avec php (5, je crois) en PEAR HTTP_REQUEST. Par exemple, pour le flux Hollandais sur http://www.nu.nl/feeds/rss/algemeen.rss, on peut utiliser le script. Au lieu de l'adresse, on donne (sur violet.net) http://votre-site/rsslang.php/nl-NL/www.nu.nl/feeds/rss/algemeen.rss. Donc: url pour le script / code-langue / url original. On peut trouver la code langue dans des flux qui marche bien ;-) C'est tout! Jelmer Le script. Les commentaires sont en hollandais, mais c'est pas très difficile... - Code:
-
<? //rsslang.php: verander de <language> in een rss, zodat het lekker wordt voorgelezen
//aanroepen http://.../rsslang.php/nl-NL/www.destentor.nl/rss.php...
//dus taal, en dan de feed
error_reporting(E_ALL);
require_once 'HTTP/Request.php';
$rss_info = ""; foreach(array('PATH_INFO','REDIRECT_PATH_INFO','ORIG_PATH_INFO') as $key) { if (isset($_SERVER[$key])) { $rss_info = $_SERVER[$key]; break; } }
$query_string = ""; foreach(array('QUERY_STRING','REDIRECT_QUERY_STRING','ORIG_QUERY_STRING') as $key) { if (isset($_SERVER[$key])) { $query_string = $_SERVER[$key]; break; } }
if (! preg_match('/^\/?([^\/]+)\/(.*)$/',$rss_info,$m)) error_400("Please use rsslang.php/(language code)/(original url for rss without http)");
$lang = $m[1]; $url = "http://" . $m[2]; if ($query_string) { $url .= "?{$query_string}"; }
$req =& new HTTP_Request($url,array( 'method' => 'GET', 'http' => '1.1', 'timeout' => '30', 'allowRedirects' => true, 'maxRedirects' => 3)); //$req->setURL($url); //$req->setMethod($method);
if (PEAR::isError($req->sendRequest())) error_400("The requested url was not found");
$resp = $req->getResponseCode(); if ($resp == 200) { //todo: parsen als xml, op zoek naar language en dat weghalen. Daarna language toevoegen
$rss = new DomDocument(); $rss->formatOutput = true; if (! $rss->loadXML($req->getResponseBody())) error_400("url returns no xml");
//<rss><channel><language>..</language>...</channel></rss>
if ($rss->firstChild->nodeName != "rss") error_400("returned xml is not an rss channel");
$channel = $rss->getElementsByTagName('channel')->item(0); if (! $channel) error_400("returned xml is not an rss channel (no channel)");
$oldlanguage = $channel->getElementsByTagName('language')->item(0); $newlanguage = $rss->createElement('language',$lang); if ($oldlanguage) $channel->replaceChild($newlanguage,$oldlanguage);
//en de nieuwe toevoegen $channel->insertBefore($newlanguage,$channel->firstChild);
//we proberen niet alle headers, maar sommige content-type, last-modified, cache-control etc //maar niet content-length bijvoorbeeld foreach ($req->getResponseHeader() as $h => $v) { switch(strtolower($h)) { case 'content-type': case 'last-modified': case 'cache-control': case 'expires': header("{$h}: {$v}"); break; } } //toevoegen: de language //header("Content-Language: {$lang}");
print $rss->saveXML();
exit(); }
//hier alleen als resp niet 200 of geen xml.. error_400("The request was invalid. Please use this only after permission");
function error_400($msg) { //geef een request error en stop header("HTTP/1.1 400 {$msg}"); ?> <h1>Error</h1> <p><?=htmlentities($msg);?></p> <? exit; }
?>
| |
| | | Diaoul Bronze Nabz
Age : 37 Localisation : France Nabaztag : Patapwet Nbr de messages : 221 Carottes : 6056
| Sujet: Re: "Traduire" les flux RSS Jeu 12 Mar 2009 - 23:42 | |
| Salut, J'avais déjà publié un script pour traduire les flux RSS, 100% fonctionnel, php5 aussi. En 5 lignes de code avec le framework de Zend ^^ C'est vraiment puissant ce truc :o Là ça a l'avantage d'être autonome et tout et tout =) Merci PS : Pour Facebook, Chez Patapwet intègre un module de traduction à la volée des flux RSS. | |
| | | Hunta_de_la_Radieuse Frénétik Nabaztrice
Age : 49 Localisation : Anse Lapin Nabaztag : Hunta (v2) Nbr de messages : 3832 Carottes : 6599
| Sujet: Re: "Traduire" les flux RSS Sam 14 Mar 2009 - 5:22 | |
| Hello Jelmer Merci beaucoup pour ce code source rapidement utilisable pour peu que le petit bout de Pear idoine soit installé. Hélas, un souci s'est ici rapidement présenté pendant mes tests avec http://www.lemonde.fr/rss/une.xml (mais pas avec http://www.liberation.fr/rss/laune par exemple) - Code:
-
<h1>Error</h1> <p>returned xml is not an rss channel</p> As-tu également le problème ? Le cas échéant, as-tu une idée de ce dont il peut s'agir ? Du coup, en attendant : - Code:
-
<?php /*rss_lip_sync.php : le nom de ce fichier*/ $raw_feed = file_get_contents($HTTP_SERVER_VARS['QUERY_STRING']);
print preg_replace("/<language>([a-z]{2,})<\/language>/", "<language>fr_FR</language>", $raw_feed); ?> Permet, plutôt simplement, de changer la langue d'un flux en 'fr_FR' en utilisant - Code:
-
http://monserveur.org/rss_lip_sync.php?http://www.lemonde.fr/rss/une.xml Une version un peu plus vigilante - et plus souple étonnamment - est accessible ici : http://zcripts.com/zcripts/rss_lip_sync.php?rss=adresse_de_mon_flux_qui_cause_bizarre On peut choisir sa langue avec le paramètre 'lang=fr' par exemple. | |
| | | Hunta_de_la_Radieuse Frénétik Nabaztrice
Age : 49 Localisation : Anse Lapin Nabaztag : Hunta (v2) Nbr de messages : 3832 Carottes : 6599
| Sujet: Re: "Traduire" les flux RSS Mar 17 Mar 2009 - 13:19 | |
| [Floudage gratos]Le script cité dans le message précédent est maintenant à nouveau opérationnel après un petit cafouillage sur ce qu'était 'adresse_de_mon_flux_qui_cause_bizarre'... Ça a été "http://adresse"... Puis juste "adresse"... D'où certaines 'erreurs de syntaxe' dans vos requêtes... Bon, maintenant, l'adresse à indiquer doit - à nouveau et sans doute définitivement - contenir le 'http://'... [/Floudage gratos] | |
| | | Diaoul Bronze Nabz
Age : 37 Localisation : France Nabaztag : Patapwet Nbr de messages : 221 Carottes : 6056
| Sujet: Re: "Traduire" les flux RSS Jeu 19 Mar 2009 - 11:53 | |
| | |
| | | Hunta_de_la_Radieuse Frénétik Nabaztrice
Age : 49 Localisation : Anse Lapin Nabaztag : Hunta (v2) Nbr de messages : 3832 Carottes : 6599
| Sujet: Re: "Traduire" les flux RSS Jeu 19 Mar 2009 - 14:05 | |
| Le traducteur, très sommaire, ce sont les 2 lignes du troisième message de ce sujet (avec une petite vérification de ce qu'est $rss à base de regexp). Par principe, tous les tutoriels sont les bienvenus, cela dit, pour être honnête et vu de très loin, Zend me paraît un poil usine à gaz/bloatwork... Non ? | |
| | | Diaoul Bronze Nabz
Age : 37 Localisation : France Nabaztag : Patapwet Nbr de messages : 221 Carottes : 6056
| Sujet: Re: "Traduire" les flux RSS Jeu 19 Mar 2009 - 14:55 | |
| Oui c'est vrai que c'est un peu le marteau pilon pour écraser une mouche. Ceci dit, il ne sert pas qu'à cela.
De la même manière on peut déplacer la partie description du RSS dans le titre (pour que le nabaztag lise tout ^^) sans jamais faire de regexp et en deux ligne de code. Je pense que je vais proposer un module dans le genre d'ici peu, car visiblement, ça intéresse pas mal de monde.
Dans Zend, tu ne charge que la partie qui t'interesse (ici la classe gérant les flux RSS) qui est assez légère.
De plus, c'est en général très sécurisé et très efficace ^^ Avec une regexp, c'est pas toujours le cas (sauf en tartinant de code ^^)
/mode fouteur de merde Qu'est ce qui se passe si j'ai envie de mettre des balises blablabla au milieu du titre de mon flux RSS ?
Faut que je teste ça sous Zend pour rigouler ^o/ | |
| | | jimmbo Bronze Nabz
Age : 43 Localisation : caen Nabaztag : mamoru Nbr de messages : 221 Carottes : 5822
| Sujet: Re: "Traduire" les flux RSS Dim 17 Mai 2009 - 16:35 | |
| perso je tuerait pour un tuto parceque mon petit mamoru lit en anglais le flux rss de gameblog (un site de jeu video) . et c'est pas super pratique lol . | |
| | | Phabbrrysse Nabazteur Voyageur
Age : 38 Localisation : Sassenage Nabaztag : PhormiBBrrysse et Pharramyneu (V2) Nbr de messages : 14389 Carottes : 13331
| Sujet: Re: "Traduire" les flux RSS Dim 17 Mai 2009 - 16:49 | |
| fait un tour sûr www.zcripts.com il y a un script tout fait! _____________________________ Connexion du lapin difficile : ICI -- PAS D'AIDE PAR MP NI PAR MAIL | |
| | | jimmbo Bronze Nabz
Age : 43 Localisation : caen Nabaztag : mamoru Nbr de messages : 221 Carottes : 5822
| Sujet: Re: "Traduire" les flux RSS Dim 17 Mai 2009 - 17:10 | |
| merci phabbrysse ^^ ..... mais euh ... ça marche po ! lol plus serieusement j'ai bien suivi les consignes mais au moment de valider les parametres sur my violet.net il m'affiche "parametres non valides" pourtant je ne suis pas fou, il n'y a que deux copier coller a faire lol | |
| | | Contenu sponsorisé
| Sujet: Re: "Traduire" les flux RSS | |
| |
| | | | "Traduire" les flux RSS | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |