Portál AbcLinuxu, 1. května 2025 08:48
#!/bin/bash DATA=/data/mp3 send() { echo "$*" > /dev/tcp/localhost/6600 } file="`netcat localhost 6600 <<<'playlistinfo 0 close' | sed -n '/^file/s/^file: //p' | iconv -f utf8 -t iso-8859-2`" path="$DATA/${file%/*}" [[ "x$path" = x ]] && path="$DATA" dir=`kdialog --getexistingdirectory "$path"` [[ $? != 0 ]] && exit dir="${dir#/data/mp3/}" if [[ "x$dir" != x ]]; then if [[ "$1" == "-a" ]]; then send add "\"$dir\"" else send clear send add "\"$dir\"" fi fi send playPozrie sa, co je naloadovane v playliste a podla toho v tom adresi otvori kdialog --getexistingdirectory. Ak je playlist prazdny, tak otvori mp3 "rootdir". Ak je spusteny s parametrom -a (Win+Shift+L), tak to do playlistu iba prida, nepremaze existujuci. A spusti. Nakolko mpd protokol je uzasne jednoduchy, tak nie je nutne ani pouzivat nejakeho dalsieho klienta a da sa ovladat rovno bashom. Jedina vec je, ze mpd chce mp3-ky podla cesty v jeho databaze a nie podla cesty v fs. Takze treba niekedy pridat prefix mp3 "rootdir" a niekedy ubrat.
ncmpc
, kterýho spustím v yakuake (většinou tam na nějaké záložce běží pořád). S tou padavostí to u mě není tak strašný, pokud se vyřadí aRts, se kterým mi mpd rádo navzájem sem tam blokovalo.
Item, "Vložit na konec playlistu"="Execute program, "/home/user/bin/mpc.jamendo.add ", "%l"" Item, "Vložit playlist a přehrát"="Execute program, "/home/user/bin/mpc.jamendo.add -p ", "%l""http://wiki.operacesky.net/index.php?title=%C3%9Apravy_menu_-_z%C3%A1klady
Začal jsem používat ten skript, ale začala mě štvát jedna věc:
Na Jamendu mají mp3 soubory uložený id3 tag až na konci (id3 tagy je samozřejmě možné mít na začátku, nebo dokonce i měnit během hraní) - takže mpd nedokáže tu informaci u streamu přečíst a nezobrazí se popisky k jednotlivým skladbám.
Tento problém lze vyřešit poměrně jednoduše - stačí používat ogg. Drobně jsem proto ten skript poupravil, aby bylo možné vybrat si formát hudebních souborů:
#!/bin/bash NAME=mpc.jamendo.add BASE_URL="http://www.jamendo.com/" PLAY_URL="http://www.jamendo.com/get/track/id/album/audio/plain/" if [[ $# -eq 0 ]]; then echo -e "$NAME -- simple jamendo interface for mpd\ \nusage: $NAME [-p] jamendo_url" exit fi if [[ "$1" == "-p" ]]; then PLAY=0 shift fi if [[ "$1" =~ ^${BASE_URL}.*album/([0-9]*)/?$ ]]; then NUMBER=${BASH_REMATCH[1]} else echo "wrong URL" >&2 exit 1 fi #Choose your encoding: ENC="ogg2" # lowfi OGG q4 #ENC="mp31" # lowfi MP3 (96kbits) (default for streaming / player) #These are probably not working: #ENC="ogg1" # lowfi OGG (q-1) #ENC="ogg3" # hifi OGG q7 #ENC="mp32" # hifi MP3 (200kbits+) (default for archives) [[ $PLAY ]] && mpc clear; wget -O - "${PLAY_URL}${NUMBER}&aue=${ENC}" | mpc add [[ $PLAY ]] && mpc play;
Problém je ale v tom, že v mpd je zřejmě nějaká chyba, taže ten ogg začně přehrávat až po několika minutách (vůbec stahovat se dá jen ogg2 a mp31), a není to problém Jamenda, protože mplayer to přehraje hned. Takže to zatím nic neřeší, ale třeba někdo mpd časem opraví.
Se dívám, že status toho bugu byl nedávno změněn na fixed, takže je to možná v svn verzi spravené už teď - ale nezkoušel jsem to a nerozumím hlášce Fixed in mpd-mk.
Jo a díky za doplnění.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.