Ne-Lexa / google-play-scraper

PHP scraper to get data from Google Play
MIT License
78 stars 38 forks source link

"$gplay->getListApps ()" method doesn't return the full list of apps for category #7

Closed GrinOleksandr closed 4 years ago

GrinOleksandr commented 4 years ago

what list does it provide?

for example: $apps_list = $gplay->getListApps( $category = \Nelexa\GPlay\Enum\CategoryEnum::GAME_RACING(), $ageLimit = null, $limit = 100000 );

returns only 13 apps, does GAMES_RACING category has only 13 apps? even on play market website I get more apps https://play.google.com/store/apps/category/GAME_RACING

how I can get more apps/all apps in "Top New Free" collection? Top New Free (https://play.google.com/store/apps/new/category/GAME_RACING) I modified source class to use it with "Top New Free" collection, it returns more applications, but also not all from that webpage :( this is strange.

Ne-Lexa commented 4 years ago

Which country and language are used?

<?php

require __DIR__ . '/vendor/autoload.php';

$redisClient = \Symfony\Component\Cache\Adapter\RedisAdapter::createConnection('redis://localhost');
$redisCache = new \Symfony\Component\Cache\Adapter\RedisAdapter($redisClient);
$cache = new \Symfony\Component\Cache\Psr16Cache($redisCache);

$gplay = new \Nelexa\GPlay\GPlayApps();
$gplay->setCache($cache);

$appsList = $gplay->getListApps(
    $category = \Nelexa\GPlay\Enum\CategoryEnum::GAME_RACING(),
    $ageLimit = null,
    $limit = 100000
);

var_dump(count($appsList)); // int(157)

///////////////////////////////////////////////////

$gplay->setDefaultLocale('ru_RU');
$gplay->setDefaultCountry('ru');

$appsList = $gplay->getListApps(
    $category = \Nelexa\GPlay\Enum\CategoryEnum::GAME_RACING(),
    $ageLimit = null,
    $limit = 100000
);

var_dump(count($appsList)); // int(160)

///////////////////////////////////////////////////

$gplay->setDefaultLocale('ar');
$gplay->setDefaultCountry('ar');

$appsList = $gplay->getListApps(
    $category = \Nelexa\GPlay\Enum\CategoryEnum::GAME_RACING(),
    $ageLimit = null,
    $limit = 100000
);

var_dump(count($appsList)); // int(68)
GrinOleksandr commented 4 years ago

$defaultLocale = 'en_US', $defaultCountry = 'us' so the list is different for every country, wow! thanks for so quick answer and for your great application!

GrinOleksandr commented 4 years ago

I used your code(all except cache part, because it throws "Class not found" error) and it returns me results: on my PC(UA): int(80) int(82) int(64)

on server(DE): int(149) int(135) int(65)

I have also reinstalled the app with composer before running it :)