Avatar billede simonvalter Praktikant
01. december 2002 - 20:26 Der er 5 kommentarer og
1 løsning

Bash script > udtræk data med lykke og send til mysqldb

hej jeg prøver på at udtrække data fra id3 tag i mp3 filer og komme data i en mysql database.

det her er hvad jeg har rodet med .. på en masse forskellige måder og jeg er snart ved at give op ;(

#!/bin/bash
sections="/path/to/mp3"
albumstxt="/path/to/albums.txt"
exclude='*.sfv|*.m3u|.message|*.jpg'

dbhost="localhost";
dbuser="username";
dbpass="pass";
db="mp3";
table="albums";
albumtxt="albums.txt";

artist="`grep artist $albumtxt | cut -f2 -d =`";
album="`grep album $albumtxt | cut -f2 -d =`";
year="`grep year $albumtxt | cut -f2 -d =`";
bitrate="`grep bitrate $albumtxt | cut -f2 -d =`";


for section in $sections; do
section="$( echo $section | awk -F":" '{print $1}' )"
cd $section
LIST="$( ls -f -A | egrep -v $exclude )"
for folder in $LIST; do
mp3info -x -p "artist=%a \nalbum=%l \ntitle=%t \nyear=%y \nbitrate=%r\n" $sections/$folder/* > $albumstxt
echo "USE $bexdb; INSERT INTO $table VALUES('"$artist"','"$album"','"$year"','"$bitrate"')" | mysql -u "$dbuser" -p"$dbpass";
done
done
exit 0

scriptet skal læse file.mp3 og komme data i en .txt og derefter skal det læse txt og komme data i databasen ..

det var ihvertfald det jeg forestillede mig.

exclude virker ikke .. og upload til databasen virker heller ikke ... HJÆLP
Avatar billede bollox Nybegynder
06. december 2002 - 10:22 #1
Det var som syv ... jeg troede jeg havde svaret den her ...
Anyway, jeg prøver igen. Jeg kan ikke forstå hvorfor du vil ha' informationen ned i albumstxt, men hvad ved jeg.
Jeg har ikke konfigureret min mySql, så jeg har ikke testet DB delen, men følgende udskriver den ønskede information:


#!/bin/bash

musicRoot="/path/to/mp3"
albumtxt="/tmp/albums.txt"
exclude='*.sfv|*.m3u|.message|*.jpg'

dbhost="localhost";
dbuser="username";
dbpass="pass";
db="mp3";
table="albums";

#artist="`grep artist $albumtxt | cut -f2 -d =`";
#album="`grep album $albumtxt | cut -f2 -d =`";
#year="`grep year $albumtxt | cut -f2 -d =`";
#bitrate="`grep bitrate $albumtxt | cut -f2 -d =`";

mp3Files=`find "$musicRoot" -name "*.mp3" | sed 's/ /%20/g'`

for mp3File in $mp3Files; do
  mp3File=`echo $mp3File | sed 's/%20/ /g'`
  if [ -f $albumtxt ]; then rm $albumtxt ; fi
  mp3info -x -p 'artist="%a" \nalbum="%l" \ntitle="%t" \nyear="%y" \nbitrate="%r"\n' "$mp3File" > $albumtxt

  if [ $? != 0 ]; then
      echo "Unable to process $mp3File "
  else
      . $albumtxt
      echo ">>> Artist  \"$artist\""
      echo ">>> Album  \"$album\""
      echo ">>> Title  \"$title\""
      echo ">>> Year    \"$year\""
      echo ">>> Bitrate \"$bitrate\""
      echo ">>> --------------------------------------"
#      echo "USE $bexdb; INSERT INTO $table VALUES('"$artist"','"$album"','"$year"','"$bitrate"')" | mysql -u "$dbuser" -p"$dbpass";
  fi     
done
exit 0
Avatar billede simonvalter Praktikant
07. december 2002 - 03:30 #2
ok .. har du en ide til hvordan jeg kan offset alle strings med ' i dem med / da jeg får problemer med tag's som feks "Pop Hits Of The 60's"
Avatar billede bollox Nybegynder
07. december 2002 - 12:47 #3
Jeg antager at du vil escape ' tegnet for at få den ned i MySql, jeg tvivler på at det er en / der skal til, nærmere en \, men det kan du eksperimentere med.
Jeg ville smide en sed after mp3info kommandoen:
  mp3info -x -p 'artist="%a" \nalbum="%l" \ntitle="%t" \nyear="%y" \nbitrate="%r"\n' "$mp3File" | sed "s,',\\\',g" > $albumtxt

Ved at sætte sed'en ind her får du også fixet kunsnere med ' i navnet (Guns N' Roses, ...)
Avatar billede simonvalter Praktikant
07. december 2002 - 17:35 #4
ok perfekt =)
det ser ud til at virke lige som jeg vil have det .. men har du en ide om hvorfor jeg ser den her fejl nogen gange
bla.sh: /bla/albums.txt: line 1: unexpected EOF while looking for matching ``'
bla.sh: /bla/albums.txt: line 5: syntax error: unexpected end of file
Avatar billede simonvalter Praktikant
07. december 2002 - 18:30 #5
det ser ud til at ske hvis der er et " i et id3 tag .. feks så har jeg et album der hedder 7"
Avatar billede simonvalter Praktikant
07. december 2002 - 19:25 #6
nå jeg har fået klaret det med endnu en sed :=)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester