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

Antwort per Email an