From 90dc8495a939c6eedb616428ade43ce3488570d0 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Fri, 8 Jan 2021 21:49:32 +0100 Subject: [PATCH] Generate QR codes for game websites as last game image --- .gitignore | 1 + bin/clean-generated.sh | 1 + bin/create-qr.sh | 51 ++++++++++++++++++++++++++++++++++++++++ bin/import-game-data.php | 24 +++++++++++++++++++ 4 files changed, 77 insertions(+) create mode 100755 bin/create-qr.sh diff --git a/.gitignore b/.gitignore index 4827cbd..f24be71 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ www/api/v1/games/*/ www/api/v1/search-data/ www/discover/ www/game/ +www/gen-qr/ diff --git a/bin/clean-generated.sh b/bin/clean-generated.sh index 6513421..62a41e1 100755 --- a/bin/clean-generated.sh +++ b/bin/clean-generated.sh @@ -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 index 0000000..e0fc6ab --- /dev/null +++ b/bin/create-qr.sh @@ -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" diff --git a/bin/import-game-data.php b/bin/import-game-data.php index 782910f..232b11f 100755 --- a/bin/import-game-data.php +++ b/bin/import-game-data.php @@ -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, + ]; + } } /** -- 2.30.2