Ich habe im SSODS r1b3 folgendes Skript für den Datenexport eingebaut.
Das müsste, entsprechend angepasst, auch auf anderen
Linux-Installationen gehen.
Die Variablen DB, DBINIT, SQLITE, AWK, SED müssten man anpassen. Btw,
"hex" im Skript ist nicht ganz der richtige Ausdruck, es müsste eher
"oct" heissen.
Code:
--------------------
#!/bin/sh
#
# SSODS, export database as CSV
#
# not very cheap, but working
#
# flipflip, 01.07.2006
#
. /etc/ssods.conf
DB=${SSCACHEDIR}/.slimserversql.db
DBINIT=${SSODSDIR}/etc/dbexport-init.sql
filter()
{
while read line; do
#echo ">""${line}"
val=
tmp="${line}\\\\"
while [ "xx$tmp" != "xx" ] && [ "xx$tmp" != "xx\\" ] ; do
val="${val}"`echo ${tmp} | cut -d\\\ -f1`
#echo "1 val=${val}"
tmp=`echo ${tmp} | cut -d\\\ -f2-`
#echo "1 tmp=${val}"
if [ "xx$tmp" != "xx" ] && [ "xx$tmp" != "xx\\" ]; then
hex=`echo ${tmp} | cut -c1-3 `
tmp=`echo ${tmp} | cut -c4-`
val="${val}"`printf \\\\${hex}`
#echo "hex=${hex} val=${val}"
fi
done
echo ${val}
val=
done
}
x=`echo -e \\\r`
cat <<EOF | ${SQLITE3} -init ${DBINIT} ${DB} \
| ${SED} 's/\\/\\\\/g' \
| filter \
| ${AWK} '{ printf "%s\r\n", $0}'
SELECT DISTINCT
contributors.name,
albums.year,
albums.title,
genres.name,
tracks.disc,
tracks.tracknum,
tracks.title,
tracks.year,
tracks.ct,
tracks.rate,
tracks.bitrate/1000,
tracks.secs
/*tracks.url*/
FROM
contributors, albums, tracks, genres,
contributor_track, genre_track
WHERE
albums.id = tracks.album
AND contributor_track.track = tracks.id
AND contributors.id = contributor_track.contributor
AND albums.id = tracks.album
AND tracks.id = genre_track.track
AND genres.id = genre_track.genre
ORDER BY
contributors.namesort,
albums.titlesort,
albums.year,
tracks.disc,
tracks.tracknum
;
EOF
# eof
--------------------
Es gibt hier nun ein Problem, vielleicht weiss das jemand.
In der DB steht z.B. für "Björk" etwas in der Art "Bj\123\234rk" (die
Zahlen sind anders, aber egal). Ich glaube das ist irgendwie "escaptes
UTF-8". In meinem Skript konvertiere ich alle \xxx nach den
entsprechenden Zeichen. Bei Björk kommen dann zwei wirre Zeichen raus.
Ist das UTF-8?
Weiss jemand wie man das oder gleich das Original nach Latin1
konvertiert? Wie heisst diese Kodierung überhaupt? Ein kleines
Perl-Skript wäre z.B. für SSODS gut.
Aber die SQL-Abfrage ist ja schon mal was wert..
flipflip
--
flipflip
Check out flipflip's 'SlimServer On DiskStation (SSODS)'
(http://oinkzwurgl.org/software/ssods/)!
------------------------------------------------------------------------
flipflip's Profile: http://forums.slimdevices.com/member.php?userid=5223
View this thread: http://forums.slimdevices.com/showthread.php?t=23700
_______________________________________________
slimserver-de mailing list
[email protected]
http://lists.slimdevices.com/lists/listinfo/slimserver-de