Developpez.com - Rubrique PHP

Le Club des Développeurs et IT Pro

Google Plus pour PHP : listez votre fil d'actualité personnel sur votre site

. Un code proposé par thomasmds

Le 2011-08-11 17:00:18, par thomasmds, Membre régulier
Bonjour,

Je vous propose un nouvel élément à utiliser : Google Plus pour PHP

Ce petit code source va vous permettre de lister sur votre propre site web le contenu de votre fil d'actualité personnel de Google Plus.

Il s'agit bien entendu d'un petit script personnel en attendant une vrai solution plus complète et moins "bidouillée". Mais elle devrait convenir pour le moment.

Vous pouvez voir le résultat sur mon site personnel http://www.thomasmoreira.com

Qu'en pensez-vous ?
  Discussion forum
11 commentaires
  • Thes32
    Expert confirmé
    Envoyé par Doksuri
    Salut,

    ce petit script a l'air fort interessant (je testerai ce w-e)

    -> mais est-ce legal ?
    Je ne vois rien d'illégal dedans.

    Aussi j'ai déjà vu quelques script du genre sur github mais j'aime bien celui ci.
    Envoyé par Doksuri

    -> google ne va-t-il pas proposer (ou propose-t-il deja ?) un genre d'api pour recuperer les infos ?
    Pas d'api pour le moment. Il proposera certainement, mais pour l'instant ce sont ce genre de script qui sauve la vie.
  • Shikiryu
    Membre éclairé
    Code :
    http://plusfeed.appspot.com/$userId
    ça donne un RSS des posts publics de la personne.
    Ensuite, parser le RSS avec simpleXML ou Domdocument et c'est finit.
  • stealth35
    Expert éminent sénior
    ouai pas top dutout de paser du HTML de cette façon, DOMDocument est fait pour et est bien plus simple

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $id  = "109887903456802277373";
    $url = "https://plus.google.com/$id/posts";
    
    $old = libxml_use_internal_errors(true);
    
    $doc = new DOMDocument();
    $doc->loadHTMLFile($url);
    
    libxml_clear_errors();
    libxml_use_internal_errors($old);
    
    $xpath = new DOMXpath($doc);
    $query = $xpath->query('//a[@class="ot-anchor O-F-Q-k"]');
    
    foreach($query as $node)
    {
        $text = $node->nodeValue;
        $link = $node->getAttribute('href');
        
        echo "<a href=\"$link\">$text</a><br />"; 
    }
    en ce qui concerne l'api elle existe déjà même si y'a pas grand chose dedans :
    https://code.google.com/apis/explore...plus&_v=v1

    pour ce qui est de la légalité, on va plutot dire que le HTML datamining est vraiment très mal vu et y'a de gros risque de blacklistage
  • Thes32
    Expert confirmé
    oh Cool ! Tu pourrais le faire sous forme d'une fonction/classe ? où l'on pourrait passer des paramètre comme le nom du user, le mot de passe, le nombre d'actus à afficher...

    Il est très sympa sinon
  • Thes32
    Expert confirmé
    et pourquoi pas ajouté une petite touche d'AJAX ?
  • Doksuri
    Expert confirmé
    Salut,

    ce petit script a l'air fort interessant (je testerai ce w-e)

    -> mais est-ce legal ?
    -> google ne va-t-il pas proposer (ou propose-t-il deja ?) un genre d'api pour recuperer les infos ?
  • thomasmds
    Membre régulier
    Merci beaucoup, c'est sympa, c'était la première fois que je poster du code ici.

    Malheureusement je ne touche pas encore assez à l'AJAX. Mais même en y connaissant le principe j'ai du mal a voir en quoi ça servirait ici.

    Si vous avez des idées d'améliorations je les attends.

    Pour la fonction, je vais le faire ok, j'avais hésiter, et puis je me suis dit que d'inclure simplement la fonction là où l'on veut suffisait.

    Ensuite, pour l'API, je pensais aussi qu'il en existait, ou du moins des fichiers XML comme sur Twitter. Mais je n'ai rien trouvé.

  • thomasmds
    Membre régulier
    Je l'ai faite en Fonction, mais je ne sais pas comment on fait pour modifier le code que j'ai posté.

    Si quelqu'un peut me le dire ça serait sympa. Merci.

    Et j'en ai profité pour l'amélioré un tout petit peu, et surtout éliminer les quelques bugs.
  • thomasmds
    Membre régulier
    Bon, puisque je ne sais pas comment on modifie le code , je le poste ici :

    La nouvelle version c'est une simple fonction qui renvoie un tableau des liens :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    /*	Lister les liens de votre fil d'actualités de Google Plus.
     *	
     *  Créer par Thomas Moreira : www.thomasmoreira.com
     *	Twitter : @thomasmds
     *
     */
    
    function Liste_GPlus($user = "109887903456802277373", $nb_liens = 1) {
    	//traitement du nombre de liens a renvoyer
    	if ($nb_liens < 1) { $nb_liens = 1; }
    	
    	//récupération de la page google plus
    	$File = file_get_contents("https://plus.google.com/$user/posts");
    	
    	//Création d'un tableau séparant tous les posts
    	$tableau = explode('<div id="update-', $File);
    	
    	$tab_liens = array();
    	
    	$compteur = 0;
    	foreach ($tableau as $value) {
    		if($compteur > 0 AND $compteur < $nb_liens+1)
    		{
    			//recuperation des positions exactes des liens
    			$pos1 = strpos($value, "O-F-Q");
    			$pos2 = strpos($value, "</div>", $pos1);
    			
    			if ($pos1)
    			{
    				$tab_liens[0] = $compteur;
    				$tab_liens[$compteur] = substr($value, $pos1+7, $pos2-$pos1-1);
    			}
    			else
    			{
    				$compteur--;
    			}
    		}
    		$compteur++;
    	}
    	// Retourne un tableau numéroté. La case 0 contient le nombre de liens retournés.
    	return $tab_liens;
    }
    ?>
  • thomasmds
    Membre régulier
    Envoyé par Shikiryu
    Code :
    http://plusfeed.appspot.com/$userId
    ça donne un RSS des posts publics de la personne.
    Ensuite, parser le RSS avec simpleXML ou Domdocument et c'est finit.

    Et ben merci bien . Je cherchais quelque chose comme ça, et comme je n'avais rien trouvé j'ai créé ma propre fonction.

    Bon maintenant que c'est fait je garde la mienne jusqu'à ce que l'API de google sorte.