disponible-sur-apple-store.png

Je reconnais que c'est une question que l'on ne se pose pas forcément tous les jours... Cependant cela peut-être très pratique lorsque l'on se lance dans une étude de marché des applications mobiles déjà publiées sur l'Apple Store. Voici une solution simple pour extraire une liste d'applications iOS sous forme de fichier CSV.

L'API iTunes est très peu connue et pourtant elle offre pleins de possibilités aux développeurs qui souhaitent analyser les applications qui y sont publiées ainsi que leurs évolutions au cours du temps ...

Grâce à une simple requête HTTP de type GET, vous pouvez récupérer des informations utiles sur les applications disponibles :

https://itunes.apple.com/search?term=lemotclef&country=fr&entity=software

Deux autres paramètres intéressants permettent de naviguer dans les pages de résultats retournés par l'API, il s'agit de "limit" qui permet de demander à l'API de retourner 200 résultats maximum et "offset" qui permet de positionner le numéro du premier résultat de la liste retournée.

Il suffit donc d'itérer indéfiniment jusqu'à ce que le nombre de résultats retournés par l'API soit inférieur au nombre de résultats demandés au travers du paramètre "limit" :

<?php

/**
 * Extract into a CSV file a synthesis of iOS applications published on the Apple Store.
 * @Author : Ludovic Toinel
 */

$limit = 200;

// City parameter check
$city = $_GET['search'];
if (!isset($search)){
        echo "missing search parameter";
        exit();
}

// CSV Header with UTF8 support
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header("Content-Disposition: attachment; filename=appstore-".$city.".csv");
header("Pragma: no-cache");
header("Expires: 0");

echo "\xEF\xBB\xBF"; // UTF-8 BOM

// CSV Header
echo "id;trackCensoredName;description;genres;sellerName\n";


$offset = 0;
$id = 0;

// We extract each page of results until the results count is different rom the limit
while ($offset == 0 || (isset($data) && $data->resultCount == $limit)){

     // Calling the Apple iTunes Webservice
    $json = file_get_contents('https://itunes.apple.com/search?term='.$search.'&country=fr&entity=software&limit='.$limit.'&offset='.$offset);
    $data = json_decode($json);

    // Generate the CSV line
    foreach ($data->results as $app) {
        echo $id++.";";
        echo addslashes($app->trackCensoredName).';';
        echo addslashes(preg_replace("/(\r\n|\n|\r|;)/",'|', $app->description)).';';
        echo addslashes(implode(",", $app->genres)).';';
        echo addslashes($app->sellerName)."\n";
    }

    $offset += $limit;
}

Il suffit ensuite de déposer ce fichier PHP sur votre serveur Web ou de l'exécuter en ligne de commande en n'oubliant pas de passer en paramètre un mot à rechercher :

http://monserveur/extract.php?search=<mon mot clef>

Le fichier vous générera un fichier CSV avec 4 colonnes d'informations que vous pouvez facilement modifier en jouant sur les lignes 43 à 46 du code.

Si jamais vous souhaitez extraire de nombreuses données, n'oubliez pas de modifier le paramètre "max_execution_time" de votre fichier "php.ini".

Le projet AppleStoreExtractor est librement téléchargeable et adaptable depuis mon compte GitHub.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.