Forum des Objets Communicants et Solutions pour les Libérer...


 
AccueilAccueil  GalerieGalerie  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

Partagez
 

 "Traduire" les flux RSS

Aller en bas 
AuteurMessage
jelmer
Lapin nain
Lapin nain


Age : 47
Localisation : Pays-Bas
Nabaztag : Sjaak van Buren
Nbr de messages : 20
Carottes : 3958

"Traduire" les flux RSS Empty
MessageSujet: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeJeu 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... nabzasking
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;
}

?>
Revenir en haut Aller en bas
Diaoul
Bronze Nabz
Bronze Nabz
Diaoul

Age : 32
Localisation : France
Nabaztag : Patapwet
Nbr de messages : 221
Carottes : 4221

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeJeu 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 yellownabzsmile

PS : Pour Facebook, Chez Patapwet intègre un module de traduction à la volée des flux RSS.
Revenir en haut Aller en bas
http://www.chezpatapwet.fr/
Hunta_de_la_Radieuse
Frénétik Nabaztrice
Frénétik Nabaztrice
Hunta_de_la_Radieuse

Age : 44
Localisation : Anse Lapin
Nabaztag : Hunta (v2)
Nbr de messages : 3832
Carottes : 4764

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeSam 14 Mar 2009 - 5:22

Hello Jelmer nabzciao

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 ?
nabzasking

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.
Revenir en haut Aller en bas
http://www.zcripts.com/
Hunta_de_la_Radieuse
Frénétik Nabaztrice
Frénétik Nabaztrice
Hunta_de_la_Radieuse

Age : 44
Localisation : Anse Lapin
Nabaztag : Hunta (v2)
Nbr de messages : 3832
Carottes : 4764

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeMar 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... nabzshy

Bon, maintenant, l'adresse à indiquer doit - à nouveau et sans doute définitivement - contenir le 'http://'...

[/Floudage gratos]
Revenir en haut Aller en bas
http://www.zcripts.com/
Diaoul
Bronze Nabz
Bronze Nabz
Diaoul

Age : 32
Localisation : France
Nabaztag : Patapwet
Nbr de messages : 221
Carottes : 4221

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeJeu 19 Mar 2009 - 11:53

Voilà un lien vers le traducteur de flux rss avec Zend :

C'est là : http://nabaztag.forumactif.fr/il-est-tout-beau-il-est-fini-voila-mon-script-ou-mon-application-f83/traduction-des-flux-rss-de-facebook-t10414.htm

Au passage, Hunta, tu avais fait comment ton traducteur ? T'avais laissé tomber Zend ?
Je pense que je vais faire un petit tuto sur Zend, mais je voudrais pas me lancer dans quelque chose qui n'intéresserai personne ^^
Revenir en haut Aller en bas
http://www.chezpatapwet.fr/
Hunta_de_la_Radieuse
Frénétik Nabaztrice
Frénétik Nabaztrice
Hunta_de_la_Radieuse

Age : 44
Localisation : Anse Lapin
Nabaztag : Hunta (v2)
Nbr de messages : 3832
Carottes : 4764

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeJeu 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). big green

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 ?
albino
Revenir en haut Aller en bas
http://www.zcripts.com/
Diaoul
Bronze Nabz
Bronze Nabz
Diaoul

Age : 32
Localisation : France
Nabaztag : Patapwet
Nbr de messages : 221
Carottes : 4221

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeJeu 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/
Revenir en haut Aller en bas
http://www.chezpatapwet.fr/
jimmbo
Bronze Nabz
Bronze Nabz
jimmbo

Age : 38
Localisation : caen
Nabaztag : mamoru
Nbr de messages : 221
Carottes : 3987

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeDim 17 Mai 2009 - 16:35

perso je tuerait pour un tuto nabzjump parceque mon petit mamoru lit en anglais le flux rss de gameblog (un site de jeu video) . et c'est pas super pratique lol .
Revenir en haut Aller en bas
Phabbrrysse
Nabazteur Voyageur
Nabazteur Voyageur
Phabbrrysse

Age : 33
Localisation : Sassenage
Nabaztag : PhormiBBrrysse et Pharramyneu (V2)
Nbr de messages : 14389
Carottes : 11496

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeDim 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
Revenir en haut Aller en bas
http://phabbrrysse.fr/
jimmbo
Bronze Nabz
Bronze Nabz
jimmbo

Age : 38
Localisation : caen
Nabaztag : mamoru
Nbr de messages : 221
Carottes : 3987

"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitimeDim 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 nabzdream lol
Revenir en haut Aller en bas
Contenu sponsorisé




"Traduire" les flux RSS Empty
MessageSujet: Re: "Traduire" les flux RSS   "Traduire" les flux RSS Icon_minitime

Revenir en haut Aller en bas
 
"Traduire" les flux RSS
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» "Traduire" les flux RSS
» Présentation "Skritz"
» Le "Ganov"
» 53A Cuirassé "Dunkerque"
» Toi aussi essaye ton "Acrostiche" !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum des Objets Communicants et Solutions pour les Libérer... :: II. Nabaztag, Karotz, mir:ror, Dal:Dal (Violet Object Operating System) :: L'univers de Nabaztag :: Archives :: API :: /dev :: J'ai fait un script, une application... Vous pouvez commenter, questionner !-
Sauter vers: