Generate QR codes for game websites as last game image
authorChristian Weiske <cweiske@cweiske.de>
Fri, 8 Jan 2021 20:49:32 +0000 (21:49 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Fri, 8 Jan 2021 20:52:37 +0000 (21:52 +0100)
.gitignore
bin/clean-generated.sh
bin/create-qr.sh [new file with mode: 0755]
bin/import-game-data.php

index 4827cbd838a87ed6412e092bd2d1ef32a0d974d1..f24be71b6a09d11d533121f312f3d516ac6dde75 100644 (file)
@@ -10,3 +10,4 @@ www/api/v1/games/*/
 www/api/v1/search-data/
 www/discover/
 www/game/
+www/gen-qr/
index 6513421d1d6fee0de03b05f8f1b91925813204a2..62a41e153492602047714517054e535c7ba23466 100755 (executable)
@@ -9,3 +9,4 @@ rmdir  www/api/v1/games/*/
 rm -f www/api/v1/search-data/*
 rm -f www/discover/*
 rm -f www/game/*
+rm -f -r www/gen-qr/
diff --git a/bin/create-qr.sh b/bin/create-qr.sh
new file mode 100755 (executable)
index 0000000..e0fc6ab
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Create an image that contains a QR code for the given website
+# together with the URL as readable text
+set -e
+
+if [ "$#" -lt 2 ]; then
+    echo "Usage: create-qr.sh https://example.org outfile.png" > /dev/stderr
+    exit 1
+fi
+
+if ! command -v convert > /dev/null; then
+    echo "convert (imagemagick) is not installed" > /dev/stderr
+    exit 2
+fi
+
+if ! command -v exiftool > /dev/null; then
+    echo "exiftool is not installed" > /dev/stderr
+    exit 2
+fi
+
+if ! command -v qrencode > /dev/null; then
+    echo "qrencode is not installed" > /dev/stderr
+    exit 2
+fi
+
+url="$1"
+filename="$2"
+
+qrencode -s 20 -o tmp-qr.png "$url"
+
+convert\
+    -filter point -resize 1260x580\
+    -background white\
+    tmp-qr.png\
+    -size 1260x120\
+    -fill black\
+    -gravity south\
+    label:"$url"\
+    -append\
+    -bordercolor white\
+    -border 10\
+    "$filename"
+
+rm tmp-qr.png
+
+exiftool\
+    -quiet\
+    -ignoreMinorErrors\
+    -PNG:Software=stouyapi\
+    -PNG:Title="$url"\
+    "$filename"
index 782910f53d159e64e0d8763795968d09124fd22e..232b11fd3426b0712e074c5d171afb992d5ce849 100755 (executable)
@@ -27,6 +27,11 @@ if (file_exists($cfgFile)) {
 
 $wwwDir = __DIR__ . '/../www/';
 
+$qrDir = $wwwDir . 'gen-qr/';
+if (!is_dir($qrDir)) {
+    mkdir($qrDir, 0775);
+}
+
 $baseDir   = dirname($foldersFile);
 $gameFiles = [];
 foreach (file($foldersFile) as $line) {
@@ -880,6 +885,25 @@ function addMissingGameProperties($game)
     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 = '/gen-qr/' . $qrfileName;
+        $game->media[] = (object) [
+            'type' => 'image',
+            'url'  => $qrUrlPath,
+        ];
+    }
 }
 
 /**