}
//default configuration values
+$GLOBALS['baseUrl'] = 'http://ouya.cweiske.de/';
+$GLOBALS['categorySubtitles'] = [];
$GLOBALS['packagelists'] = [];
$GLOBALS['urlRewrites'] = [];
$cfgFile = __DIR__ . '/../config.php';
$wwwDir = __DIR__ . '/../www/';
+$qrDir = $wwwDir . 'gen-qr/';
+if (!is_dir($qrDir)) {
+ mkdir($qrDir, 0775);
+}
+
$baseDir = dirname($foldersFile);
$gameFiles = [];
foreach (file($foldersFile) as $line) {
}
}
+//store git repository version of last folder
+$workdir = getcwd();
+chdir($folder);
+$gitDate = `git log --max-count=1 --format="%h %cI"`;
+chdir($workdir);
+file_put_contents($wwwDir . '/game-data-version', $gitDate);
+
$games = [];
$count = 0;
$developers = [];
];
addDiscoverRow(
- $data, 'Last Updated',
- filterLastUpdated($games, 10)
+ $data, 'New games',
+ filterLastAdded($games, 10)
);
addDiscoverRow(
- $data, 'Best rated',
- filterBestRated($games, 10),
+ $data, 'Best rated games',
+ filterBestRatedGames($games, 10),
true
);
$data, 'Special',
[
'Best rated',
+ 'Best rated games',
'Most rated',
'Random',
+ 'Last updated',
]
);
writeJson(
'api/v1/discover-data/' . categoryPath('Best rated') . '.json',
buildSpecialCategory('Best rated', filterBestRated($games, 99))
);
+ writeJson(
+ 'api/v1/discover-data/' . categoryPath('Best rated games') . '.json',
+ buildSpecialCategory('Best rated games', filterBestRatedGames($games, 99))
+ );
writeJson(
'api/v1/discover-data/' . categoryPath('Most rated') . '.json',
buildSpecialCategory('Most rated', filterMostDownloaded($games, 99))
filterRandom($games, 99)
)
);
+ writeJson(
+ 'api/v1/discover-data/' . categoryPath('Last updated') . '.json',
+ buildSpecialCategory('Last updated', filterLastUpdated($games, 99))
+ );
$players = [
//1 => '1 player',
foreach ($players as $num => $title) {
writeJson(
'api/v1/discover-data/' . categoryPath($title) . '.json',
- buildDiscoverCategory($title, filterByPlayers($games, $num))
+ buildDiscoverCategory(
+ $title,
+ //I do not want emulators here,
+ // and neither Streaming apps
+ filterByGenre(
+ filterByGenre(
+ filterByPlayers($games, $num),
+ 'Emulator', true
+ ),
+ 'App', true
+ )
+ )
);
}
'rows' => [],
'tiles' => [],
];
- addDiscoverRow(
- $data, 'Last Updated',
- filterLastUpdated($games, 10)
- );
- addDiscoverRow(
- $data, 'Best rated',
- filterBestRated($games, 10),
- true
- );
+ if (isset($GLOBALS['categorySubtitles'][$name])) {
+ $data['stouyapi']['subtitle'] = $GLOBALS['categorySubtitles'][$name];
+ }
+
+ if (count($games) >= 20) {
+ addDiscoverRow(
+ $data, 'Last Updated',
+ filterLastUpdated($games, 10)
+ );
+ addDiscoverRow(
+ $data, 'Best rated',
+ filterBestRated($games, 10),
+ true
+ );
+ }
$games = sortByTitle($games);
$chunks = array_chunk($games, 4);
'fileSize' => $release->size,
'version' => $release->uuid,
'contentRating' => $game->contentRating,
- 'downloadLink' => rewriteUrl($release->url),
+ 'downloadLink' => $release->url,
]
];
}
$iaUrl = dirname($game->latestRelease->url) . '/';
}
+ $description = $game->description;
+ if (isset($game->notes) && trim($game->notes)) {
+ $description = "Technical notes:\r\n" . $game->notes
+ . "\r\n----\r\n"
+ . $description;
+ }
+
// http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-details
$data = [
'type' => 'Game',
'title' => $game->title,
- 'description' => $game->description,
+ 'description' => $description,
'gamerNumbers' => $game->players,
'genres' => $game->genres,
$game->rating->count = 0;
}
+ $game->firstRelease = null;
$game->latestRelease = null;
+ $firstReleaseTimestamp = null;
$latestReleaseTimestamp = 0;
foreach ($game->releases as $release) {
if (!isset($release->publicSize)) {
$game->latestRelease = $release;
$latestReleaseTimestamp = $releaseTimestamp;
}
+ if ($firstReleaseTimestamp === null
+ || $releaseTimestamp < $firstReleaseTimestamp
+ ) {
+ $game->firstRelease = $release;
+ $firstReleaseTimestamp = $releaseTimestamp;
+ }
+ }
+ if ($game->firstRelease === null) {
+ error('No first release for ' . $game->packageName);
}
if ($game->latestRelease === null) {
error('No latest release for ' . $game->packageName);
if (!isset($game->developer->founder)) {
$game->developer->founder = false;
}
+
+ if ($game->website) {
+ $qrfileName = preg_replace('#[^\\w\\d._-]#', '_', $game->website) . '.png';
+ $qrfilePath = $GLOBALS['qrDir'] . $qrfileName;
+ if (!file_exists($qrfilePath)) {
+ $cmd = __DIR__ . '/create-qr.sh'
+ . ' ' . escapeshellarg($game->website)
+ . ' ' . escapeshellarg($qrfilePath);
+ passthru($cmd, $retval);
+ if ($retval != 0) {
+ exit(20);
+ }
+ }
+ $qrUrlPath = $GLOBALS['baseUrl'] . 'gen-qr/' . $qrfileName;
+ $game->media[] = (object) [
+ 'type' => 'image',
+ 'url' => $qrUrlPath,
+ ];
+ }
+
+ //rewrite urls from Internet Archive to our servers
+ $game->discover = rewriteUrl($game->discover);
+ foreach ($game->media as $medium) {
+ $medium->url = rewriteUrl($medium->url);
+ }
+ foreach ($game->releases as $release) {
+ $release->url = rewriteUrl($release->url);
+ }
}
/**