git.cweiske.de
/
stouyapi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Link game pages to internet archive
[stouyapi.git]
/
bin
/
import-game-data.php
diff --git
a/bin/import-game-data.php
b/bin/import-game-data.php
index 260773383e18d812cb26764d7773d3722dd691b4..cfd16308e5eba6f93d3fbc634c39600d5d525271 100755
(executable)
--- a/
bin/import-game-data.php
+++ b/
bin/import-game-data.php
@@
-7,6
+7,7
@@
* @author Christian Weiske <cweiske@cweiske.de>
*/
ini_set('xdebug.halt_level', E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE);
* @author Christian Weiske <cweiske@cweiske.de>
*/
ini_set('xdebug.halt_level', E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE);
+require_once __DIR__ . '/functions.php';
require_once __DIR__ . '/filters.php';
if (!isset($argv[1])) {
error('Pass the path to a "folders" file with game data json files folder names');
require_once __DIR__ . '/filters.php';
if (!isset($argv[1])) {
error('Pass the path to a "folders" file with game data json files folder names');
@@
-16,11
+17,13
@@
if (!is_file($foldersFile)) {
error('Given path is not a file: ' . $foldersFile);
}
error('Given path is not a file: ' . $foldersFile);
}
-$GLOBALS['packagelists']['cweiskepicks'] = [
- 'de.eiswuxe.blookid2',
- 'com.cosmos.babyloniantwins',
- 'com.inverseblue.skyriders',
-];
+//default configuration values
+$GLOBALS['packagelists'] = [];
+$GLOBALS['urlRewrites'] = [];
+$cfgFile = __DIR__ . '/../config.php';
+if (file_exists($cfgFile)) {
+ include $cfgFile;
+}
$wwwDir = __DIR__ . '/../www/';
$wwwDir = __DIR__ . '/../www/';
@@
-152,10
+155,13
@@
function buildDiscover(array $games)
$data, 'Best rated',
filterBestRated($games, 10)
);
$data, 'Best rated',
filterBestRated($games, 10)
);
- addDiscoverRow(
- $data, "cweiske's picks",
- filterByPackageNames($games, $GLOBALS['packagelists']['cweiskepicks'])
- );
+
+ foreach ($GLOBALS['packagelists'] as $listTitle => $listPackageNames) {
+ addDiscoverRow(
+ $data, $listTitle,
+ filterByPackageNames($games, $listPackageNames)
+ );
+ }
addDiscoverRow(
$data, 'Special',
addDiscoverRow(
$data, 'Special',
@@
-369,7
+375,7
@@
function buildAppDownload($game, $release)
'fileSize' => $release->size,
'version' => $release->uuid,
'contentRating' => $game->contentRating,
'fileSize' => $release->size,
'version' => $release->uuid,
'contentRating' => $game->contentRating,
- 'downloadLink' =>
$release->url
,
+ 'downloadLink' =>
rewriteUrl($release->url)
,
]
];
}
]
];
}
@@
-380,7
+386,7
@@
function buildProduct($product)
return null;
}
return [
return null;
}
return [
- 'type' => 'entitlement',
+ 'type' =>
$product->type ??
'entitlement',
'identifier' => $product->identifier,
'name' => $product->name,
'description' => $product->description ?? '',
'identifier' => $product->identifier,
'name' => $product->name,
'description' => $product->description ?? '',
@@
-414,15
+420,17
@@
function buildDetails($game)
$mediaTiles[] = [
'type' => 'image',
'urls' => [
$mediaTiles[] = [
'type' => 'image',
'urls' => [
- 'thumbnail' => $medium->thumb,
+ 'thumbnail' => $medium->thumb
?? $medium->url
,
'full' => $medium->url,
],
];
} else {
'full' => $medium->url,
],
];
} else {
- $mediaTiles[] = [
- 'type' => 'video',
- 'url' => $medium->url,
- ];
+ if (!isUnsupportedVideoUrl($medium->url)) {
+ $mediaTiles[] = [
+ 'type' => 'video',
+ 'url' => $medium->url,
+ ];
+ }
}
}
}
}
@@
-441,6
+449,13
@@
function buildDetails($game)
$product = buildProduct($gamePromoted);
}
$product = buildProduct($gamePromoted);
}
+ $iaUrl = null;
+ if (isset($game->latestRelease->url)
+ && substr($game->latestRelease->url, 0, 29) == 'https://archive.org/download/'
+ ) {
+ $iaUrl = dirname($game->latestRelease->url) . '/';
+ }
+
// http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-details
return [
'type' => 'Game',
// http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-details
return [
'type' => 'Game',
@@
-499,6
+514,10
@@
function buildDetails($game)
'promotedProduct' => $product,
'buttons' => $buttons,
'promotedProduct' => $product,
'buttons' => $buttons,
+
+ 'stouyapi' => [
+ 'internet-archive' => $iaUrl,
+ ]
];
}
];
}
@@
-586,11
+605,11
@@
function buildSearch($games)
function dummyEncrypt($data)
{
return [
function dummyEncrypt($data)
{
return [
- 'key' => base64_encode('0123456789abcdef')
. "\n"
,
- 'iv' => 't3jir1LHpICunvhlM76edQ=='
. "\n"
,//random bytes
+ 'key' => base64_encode('0123456789abcdef'),
+ 'iv' => 't3jir1LHpICunvhlM76edQ==',//random bytes
'blob' => base64_encode(
json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)
'blob' => base64_encode(
json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)
- )
. "\n"
,
+ ),
];
}
];
}
@@
-691,11
+710,6
@@
function buildDiscoverGameTile($game)
];
}
];
}
-function categoryPath($title)
-{
- return str_replace(['/', '\\', ' ', '+', '?'], '_', $title);
-}
-
function getAllAges($games)
{
$ages = [];
function getAllAges($games)
{
$ages = [];
@@
-852,6
+866,16
@@
function getPromotedProduct($game)
return null;
}
return null;
}
+/**
+ * vimeo only work with HTTPS now,
+ * and the OUYA does not support SNI.
+ * We get SSL errors and no video for them :/
+ */
+function isUnsupportedVideoUrl($url)
+{
+ return strpos($url, '://vimeo.com/') !== false;
+}
+
function removeMakeGames(array $games)
{
return filterByGenre($games, 'Tutorials', true);
function removeMakeGames(array $games)
{
return filterByGenre($games, 'Tutorials', true);
@@
-868,6
+892,14
@@
function removeMakeGenres($genres)
return $filtered;
}
return $filtered;
}
+function rewriteUrl($url)
+{
+ foreach ($GLOBALS['urlRewrites'] as $pattern => $replacement) {
+ $url = preg_replace($pattern, $replacement, $url);
+ }
+ return $url;
+}
+
function writeJson($path, $data)
{
global $wwwDir;
function writeJson($path, $data)
{
global $wwwDir;