Remove and merge duplicate game com.AronDriessen.Pong and com.Arondriessen.Pong
[ouya-game-data.git] / bin / convert-original.php
index 0c882bc1b05e90549efd75f7252447d3981ee8c0..d940d6fcb473b8cbbe1f77b0407f09b15976ae30 100755 (executable)
@@ -47,18 +47,42 @@ if ($appsData === null) {
     error('App JSON cannot de loaded');
 }
 
-$downloadJson = file_get_contents($downloadFile);
-if ($downloadJson === false || trim($downloadJson) === '') {
-    error('Download file is empty');
-}
-$downloadData = json_decode($downloadJson);
-if ($downloadData === null) {
-    error('Download JSON cannot de loaded');
+$package = basename($detailsFile, '.json');
+
+if (file_exists($downloadFile)) {
+    $downloadJson = file_get_contents($downloadFile);
+    if ($downloadJson === false || trim($downloadJson) === '') {
+        error('Download file is empty');
+    }
+    $downloadData = json_decode($downloadJson);
+    if ($downloadData === null) {
+        error('Download JSON cannot de loaded');
+    }
+    $downloadUrl = $downloadData->app->downloadLink;
+} else {
+    $downloadData = null;
+    $downloadUrl  = null;
+    //fetch download URL from internet archive files
+    $version = $appsData->app->versionNumber;
+    $iaJsonFile = __DIR__ . '/../old-data/ia-data/'
+        . 'ouya_' . $package . '_' . $version . '.json';
+    if (!file_exists($iaJsonFile)) {
+        error('No download file given, and no internet archive version found');
+    }
+    $iaData = json_decode(file_get_contents($iaJsonFile));
+    foreach ($iaData->files as $iaFile) {
+        if ($iaFile->format == 'Android Package Archive') {
+            $iaSlug = basename($iaJsonFile, '.json');
+            $downloadUrl = 'https://archive.org/download/' . $iaSlug . '/' . $iaFile->name;
+        }
+    }
+    if ($downloadUrl === null) {
+        error('No .apk download URL found in internet archive json file');
+    }
 }
 
 
 //data building
-$package = basename($detailsFile, '.json');
 
 $developerUuid = null;
 if (isset($detailsData->developer->url)) {
@@ -76,11 +100,13 @@ $gameData = [
     'releases' => [
         [
             'name'        => $appsData->app->versionNumber,
-            'versionCode' => $detailsData->apk->versionCode,
+            'versionCode' => (int) $detailsData->apk->versionCode,
             'uuid'        => $appsData->app->latestVersion,
             'date'        => $appsData->app->publishedAt,
-            'url'         => $downloadData->app->downloadLink,
-            'size'        => (int) $downloadData->app->fileSize,
+            'url'         => $downloadUrl,
+            'size'        => isset($downloadData->app->fileSize)
+                ? intval($downloadData->app->fileSize)
+                : intval($appsData->app->apkFileSize),
             'md5sum'      => $appsData->app->md5sum,
             'publicSize'  => $appsData->app->publicSize,
             'nativeSize'  => $appsData->app->nativeSize,
@@ -98,7 +124,8 @@ $gameData = [
     'developer' => [
         'uuid'         => $developerUuid,
         'name'         => $appsData->app->developer,
-        'supportEmail' => $appsData->app->supportEmailAddress,
+        'supportEmail' => $appsData->app->supportEmailAddress != ''
+            ? $appsData->app->supportEmailAddress : null,
         'supportPhone' => $appsData->app->supportPhone,
         'founder'      => $appsData->app->founder,
     ],
@@ -106,7 +133,7 @@ $gameData = [
     'contentRating'    => $appsData->app->contentRating,
     'website'          => $appsData->app->website,
     'firstPublishedAt' => $appsData->app->firstPublishedAt,
-    'inAppPurchases'   => false,//FIXME: we would need discover data here
+    'inAppPurchases'   => $detailsData->inAppPurchases,
     'overview'         => $appsData->app->overview,
     'premium'          => $appsData->app->premium,
 
@@ -129,43 +156,6 @@ if (isset($appsData->app->promotedProduct)) {
     ];
 }
 
-$iaDataFiles = glob(__DIR__ . '/../old-data/ia-data/ouya_' . $package . '_*.json');
-if (count($iaDataFiles)) {
-    $iaPkg = [];
-    foreach ($iaDataFiles as $iaJsonFile) {
-        $iaData = json_decode(file_get_contents($iaJsonFile));
-        foreach ($iaData->files as $iaFile) {
-            if ($iaFile->format == 'Android Package Archive') {
-                $iaSlug = basename($iaJsonFile, '.json');
-                $iaFile->url = 'https://archive.org/download/' . $iaSlug . '/' . $iaFile->name;
-                $versionName = explode('_', $iaSlug)[2];
-                $iaPkg[$versionName] = $iaFile;
-            }
-        }
-    }
-
-    //update existing release
-    $exVersion = $gameData['releases'][0]['name'];
-    if (isset($iaPkg[$exVersion])) {
-        $gameData['releases'][0]['url'] = $iaPkg[$exVersion]->url;
-        unset($iaPkg[$exVersion]);
-    }
-    foreach ($iaPkg as $iaVersion => $iaApk) {
-        $gameData['releases'][] = [
-            'name'       => $iaVersion,
-            'uuid'       => null,
-            'date'       => '2010-01-01T00:00:00Z',//gmdate('c', $iaApk->mtime),
-            'url'        => $iaApk->url,
-            'size'       => $iaApk->size,
-            'md5sum'     => $iaApk->md5,
-            'publicSize' => 0,//FIXME
-            'nativeSize' => 0,//FIXME
-        ];
-    }
-    //var_dump($iaPkg, $gameData);die();
-}
-
-
 echo json_encode($gameData, JSON_PRETTY_PRINT) . "\n";
 
 function details($mediaTiles)