Atlas-Install/tools/wit-v3.04a/win64/load-titles.sh

149 lines
4.3 KiB
Bash

#!/usr/bin/env bash
#####################################################################
## __ __ _ ___________ ##
## \ \ / /| |____ ____| ##
## \ \ / / | | | | ##
## \ \ /\ / / | | | | ##
## \ \/ \/ / | | | | ##
## \ /\ / | | | | ##
## \/ \/ |_| |_| ##
## ##
## Wiimms ISO Tools ##
## https://wit.wiimm.de/ ##
## ##
#####################################################################
## ##
## This file is part of the WIT project. ##
## Visit https://wit.wiimm.de/ for project details and sources. ##
## ##
## Copyright (c) 2009-2021 by Dirk Clemens <wiimm@wiimm.de> ##
## ##
#####################################################################
## ##
## This file loads the title files from WiiTDB.com ##
## ##
#####################################################################
#------------------------------------------------------------------------------
NEEDED="wit tr"
BASE_PATH="/usr/local"
SHARE_PATH="/usr/local/share/wit"
URI_TITLES=http://gametdb.com/titles.txt
LANGUAGES="de es fr it ja ko nl pt ru zhcn zhtw"
SHARE_DIR=./share
#------------------------------------------------------------------------------
CYGWIN=0
if [[ $1 = --cygwin ]]
then
shift
CYGWIN=1
SHARE_DIR=.
export PATH=".:$PATH"
fi
#------------------------------------------------------------------------------
MAKE=0
if [[ $1 = --make ]]
then
# it's called from make
shift
MAKE=1
fi
#------------------------------------------------------------------------------
function webget()
{
if which wget >/dev/null 2>&1
then
wget -qO- "$1"
elif which curl >/dev/null 2>&1
then
curl -fs "$1"
else
printf "\e[1;31mWarning: Neither »wget« nor »curl« found!\e[0m\n" >&2
return 1
fi
}
#------------------------------------------------------------------------------
function load_and_store()
{
local URI="$1"
local DEST="$2"
local ADD="$3"
echo "*** load $DEST from $URI"
if webget "$URI" | wit titles / - >"$DEST.tmp" && test -s "$DEST.tmp"
then
if [[ $ADD != "" ]]
then
wit titles / "$ADD" "$DEST.tmp" >"$DEST.tmp.2"
mv "$DEST.tmp.2" "$DEST.tmp"
fi
if [[ -s $DEST ]]
then
grep -v ^TITLES "$DEST" >"$DEST.tmp.1"
grep -v ^TITLES "$DEST.tmp" >"$DEST.tmp.2"
if ! diff -q "$DEST.tmp.1" "$DEST.tmp.2" >/dev/null
then
#echo " => content changed!"
mv "$DEST.tmp" "$DEST"
fi
else
mv "$DEST.tmp" "$DEST"
fi
fi
rm -f "$DEST.tmp" "$DEST.tmp.1" "$DEST.tmp.2"
}
#------------------------------------------------------------------------------
errtool=
for tool in $NEEDED
do
((CYGWIN)) && [[ -x $tool.exe ]] && continue
which $tool >/dev/null 2>&1 || errtool="$errtool $tool"
done
if [[ $errtool != "" ]]
then
echo "missing tools in PATH:$errtool" >&2
exit 2
fi
#------------------------------------------------------------------------------
mkdir -p "$SHARE_DIR"
load_and_store "$URI_TITLES" "$SHARE_DIR/titles.txt"
# load language specific title files
for lang in $LANGUAGES
do
LANG="$( echo $lang | tr '[a-z]' '[A-Z]' )"
load_and_store $URI_TITLES?LANG=$LANG "$SHARE_DIR/titles-$lang.txt" "$SHARE_DIR/titles.txt"
done
if (( !MAKE && !CYGWIN ))
then
echo "*** install titles to $SHARE_PATH"
mkdir -p "$SHARE_PATH"
cp -p "$SHARE_DIR"/titles*.txt "$SHARE_PATH"
fi
# remove a possible temp dir in SHARE_PATH
((CYGWIN)) || rm -rf "$SHARE_PATH/$SHARE_DIR"