Page 1 of 1

有什麼指令可以查詢音樂CD的歌名呢?

Posted: Mon Oct 11, 2004 8:29 pm
by scsi
有什麼指令可以查詢音樂CD的歌名呢?
因為想要轉CD到mp3,如果有這樣的指令就不用辛苦的打歌名了 :)

謝謝

Posted: Mon Oct 11, 2004 9:25 pm
by scsi
我現在找到一個方法,那就是用cdda2wav

Code: Select all

/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0
這樣執行之後就可以得到

Code: Select all

Type: ROM, Vendor 'DVD-ROM ' Model 'LTD-16X5H       ' Revision 'CHG3' MMC+CDDA
765952 bytes buffer memory requested, 4 buffers, 75 sectors
Read TOC CD Text failed (probably not supported).
#Cdda2wav version 2.01_linux_2.6.8-nitro6_i686_amd-athlon-tm--xp-2200+, real time sched., soundcard, libparanoia support
15 entries found:
00: rock d212000f Onbekend / Onbekend
01: rock c612010f Phil Collins / Live
02: rock cf12020f Collins, Phil / Serious Hits...Live!
03: rock d012020f Phil Collins / Serious Hits ... Live!
04: classical c612030f Phil Collins / Serious
05: classical d012030f Phil Collins / Serious Hits ... Live!
06: rock d212030f Phil Collins / Serious Hits Live
07: rock c612030f Phil Collins / Serious Hits... Live!
08: rock c412030f Phil Collins / Serious Hits...Live! (Mastersonic 20 bit)
09: misc c612030f Phil Collins / Serious Hits... Live!
10: misc c412030f Phil Collins / Serious Hits...Live!
11: rock d012040f Onbekend / Onbekend
12: misc cc12040f Phil Collins / Serious Hits...Live!
13: rock ba121e0f Phil Collins / Serious Hits... Live!
14: rock b6121f0f Phil Collins / No Disc
15: ignore
please choose one (0-15): 3
AUDIOtrack pre-emphasis  copy-permitted tracktype channels
      1-15           no              no     audio    2
Table of Contents: total tracks:15, (total time 76:53.00)
  1.( 4:59.25),  2.( 3:29.50),  3.( 4:27.50),  4.( 5:49.25),  5.( 4:44.25),
  6.( 5:40.00),  7.( 5:37.00),  8.( 5:17.25),  9.( 6:33.25), 10.( 2:55.00),
 11.( 3:07.45), 12.( 7:15.05), 13.( 3:29.25), 14.( 4:46.00), 15.( 8:42.00),

Table of Contents: starting sectors
  1.(       0),  2.(   22450),  3.(   38175),  4.(   58250),  5.(   84450),
  6.(  105775),  7.(  131275),  8.(  156550),  9.(  180350), 10.(  209850),
 11.(  222975), 12.(  237045), 13.(  269675), 14.(  285375), 15.(  306825),
 lead-out(  345975)
CDINDEX discid: DBehAYdiRJcI05r4zXgH7vz_cxQ-
CDDB discid: 0xcc12050f CDDBP titles: resolved
CD-Text: not detected
CD-Extra: not detected
Album title: 'Serious Hits ... Live!'   [from Phil Collins]
Track  1: 'Something Happened on the Way to Heaven'
Track  2: 'Against All Odds (Take a Look at Me Now)'
Track  3: 'Who Said I Would'
Track  4: 'One More Night'
Track  5: 'Don't Lose My Number'
Track  6: 'Do You Remember?'
Track  7: 'Another Day in Paradise'
Track  8: 'Separate Lives'
Track  9: 'In the Air Tonight'
Track 10: 'You Can't Hurry Love'
Track 11: 'Two Hearts'
Track 12: 'Sussudio'
Track 13: 'A Groovy Kind of Love'
Track 14: 'Easy Lover'
Track 15: 'Take Me Home'
Incorrect start track setting: 0
Please use -help or consult the man page for help.
有人知道怎麼cut兩個單引號之間的字嗎?

Code: Select all

Album title: 'Serious Hits ... Live!'   [from Phil Collins]
怎麼抓出來cd名及演唱者?

謝謝

Posted: Mon Oct 11, 2004 9:42 pm
by d2207197

Code: Select all

/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0 |grep '^Track' |sed -r 's/^Track {1,2}[0-9]{1,2}: .(.*)./\1/g' 
不知道有沒有問題,我沒測試過

Posted: Mon Oct 11, 2004 9:47 pm
by d2207197
d2207197 wrote:

Code: Select all

/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0 |grep '^Track' |sed -r 's/^Track {1,2}[0-9]{1,2}: .(.*)./\1/g' 
不知道有沒有問題,我沒測試過
這樣可能比較好

Code: Select all

/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0 |grep '^Track' | sed -r 's/^Track {1,2}[0-9]{1,2}: '\''(.*)'\''/\1/g'

Posted: Mon Oct 11, 2004 10:01 pm
by d2207197
沒看到還有 CD 名稱與演唱者
上面那個是單曲名稱

Code: Select all

/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0|grep '^Album' | sed -r 's/^Album title: '\''(.*)'\'' +\[from (.*)\]/\1\n\2/'
這個會輸出兩行,第一行是 CD 名稱,第二行是演唱者

Posted: Tue Oct 12, 2004 7:27 am
by scsi
d2207197 wrote:沒看到還有 CD 名稱與演唱者
上面那個是單曲名稱

Code: Select all

/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0|grep '^Album' | sed -r 's/^Album title: '\''(.*)'\'' +\[from (.*)\]/\1\n\2/'
這個會輸出兩行,第一行是 CD 名稱,第二行是演唱者
我試了只會輸出一行咧

Code: Select all

scsi@scsihome comic $ echo 3|/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0 2>&1|grep '^Album'| sed -r 's/^Album title: '\''(.*)'\'' +\[from (.*)\]/\1\n\2/'
Album title: 'Serious Hits ... Live!'   [from Phil Collins]
scsi@scsihome comic $
正規化真的是很好用的東西
看來我要好好的研究一下
因為我完全看不懂你寫的東西 XD

anyway, 真是感謝你 :D

Posted: Tue Oct 12, 2004 12:14 pm
by d2207197
scsi wrote:
d2207197 wrote:沒看到還有 CD 名稱與演唱者
上面那個是單曲名稱

Code: Select all

/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0|grep '^Album' | sed -r 's/^Album title: '\''(.*)'\'' +\[from (.*)\]/\1\n\2/'
這個會輸出兩行,第一行是 CD 名稱,第二行是演唱者
我試了只會輸出一行咧

Code: Select all

scsi@scsihome comic $ echo 3|/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0 2>&1|grep '^Album'| sed -r 's/^Album title: '\''(.*)'\'' +\[from (.*)\]/\1\n\2/'
Album title: 'Serious Hits ... Live!'   [from Phil Collins]
scsi@scsihome comic $
正規化真的是很好用的東西
看來我要好好的研究一下
因為我完全看不懂你寫的東西 XD

anyway, 真是感謝你 :D
唔~~
可能是因為 Live!' 與 [from 之間不是用空白區隔,而是用 tab,或 tab, space 夾雜
貼到 web 上來卻變成了多個空白鍵
我寫的是只對應多個空白鍵,假使他是 tab 就有問題囉

再試試看這個吧,Live!' 與 [from 之間無論是 tab 或 space 都沒問題

Code: Select all

/usr/bin/cdda2wav -D /dev/sg1 -H -L 0 cddbp-server=freedb.freedb.org -t 0+0 | grep '^Album' | sed -r 's/^Album title: '\''(.*)'\''[[:space:]]+\[from (.*)\]/\1\n\2/'
學 regexp 可以看看下面這些站台
regexp 真的是很好用的東西
http://phi.sinica.edu.tw/aspac/reports/94/94019/
http://www.cyut.edu.tw/~ckhung/b/gnu/regexp.shtml
http://oo8h.51.net/docs/regular_expression.htm
http://edt1023.sayya.org/vim/node11.html
http://www.rtfiber.com.tw/~changyj/

Posted: Tue Oct 12, 2004 7:55 pm
by Hauser

Code: Select all

# emerge abcde
Usage:

Code: Select all

$ abcde -o mp3 -b 2-4 7
It means ripping tracks 2,3,4,7, output codec mp3. It'll grab CD info from CDDB server and create mp3 files and directories with CD and song titles. A sample ~/.abcde.conf:

Code: Select all

# System defaults for abcde version 2.1.x
 # Nothing in this file is uncommented by default.
 # 
 # If you wish to override these system-wide settings, create your own
 # .abcde.conf file in your home directory.
 
 # If you wish to use a different CDDB server, edit this line.
 # If you just wanted to use a proxy server, just set your http_proxy
 # environment variable - wget will use it correctly.
 #CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi"
 
 # The CDDB protocol requires hello information, including a valid username
 # and hostname. If you feel paranoid about giving away such info, edit this
 # line - the format is username@hostname.
 #HELLOINFO="`whoami`@`hostname`"
 
 # This controls the email address CDDB changes are submitted to.
 #CDDBSUBMIT=freedb-submit@freedb.org
 
 # The following options control whether or not fetched CDDB entries
 # are cached locally in $CDDBLOCALDIR
 #CDDBCOPYLOCAL="n"
 #CDDBLOCALDIR="$HOME/.cddb"
 
 # Select here if you want to use the locally stored CDDB entries.
 # This is useful if you do a lot of editing to those CDDB entries. 
 # Also, other tools like Grip store CDDB entries under $HOME/.cddb,
 # so they can be reused when ripping CDs.
 #CDDBUSELOCAL="n"
 
 # Specify the style of encoder to use here - 
 # oggenc, vorbize - for OGGENCODERSYNTAX
 # lame, gogo, bladeenc, l3enc, xingmp3enc, mp3enc - for MP3ENCODERSYNTAX
 # flac - the only supported for FLACENCODERSYNTAX at the moment.
 # default is a valid option for oggenc, lame and flac.
 # Currently this affects the default location of the binary, the variable
 # to pick encoder command-line options from, and where the options are
 # given.
 # 'default' will currently choose oggenc or lame depending on OUTPUTTYPE.
 #MP3ENCODERSYNTAX=default
 #OGGENCODERSYNTAX=default
 #FLACENCODERSYNTAX=default
 #SPEEXENCODERSYNTAX=default
 
 # Specify the syntax of the normalize binary here - so far only 'normalize'
 # is supported.
 #NORMALIZERSYNTAX=default
 
 # CD reader program to use - currently recognized options are 'cdparanoia',
 # 'cdda2wav', 'dagrab' and 'cddafs' (Mac OS X only).
 #CDROMREADERSYNTAX=cdparanoia
 
 # Keep the wav files after encoding. Set it to "y" and remove "clean" from
 # the list of default actions, since we purge the temp directory as default.
 #KEEPWAVS=n
 
 # Track padding: force abcde to pad tracks using 0, so every song uses a two
 # digit entry. If set to "y", even a single song encoding outputs a file like
 # 01.my_song.ext
 #PADTRACKS=n
 
 # Specify 'nice'ness of the encoder, the CD reader and the distmp3 proc.
 # This is a relative 'nice'ness (that is, if the parent process is at a
 # nice level of 12, and the ENCNICE is set to 3, then the encoder will
 # run with an absolute nice value of 15. Note also, that setting these
 # to be empty will result in some default niceness increase (4 in tcsh
 # and 10 using the bsdutils' nice).
 #ENCNICE=10
 #READNICE=10
 #DISTMP3NICE=10
 
 # Paths of programs to use
 #LAME=lame
 #GOGO=gogo
 #BLADEENC=bladeenc
 #L3ENC=l3enc
 #XINGMP3ENC=xingmp3enc
 #MP3ENC=mp3enc
 #VORBIZE=vorbize
 #OGGENC=oggenc
 #FLAC=flac
 #SPEEXENC=speexenc
 #ID3=id3
 #ID3V2=id3v2
 #CDPARANOIA=cdparanoia
 #CDDA2WAV=cdda2wav
 #CDDAFS=cp
 #CDDISCID=cd-discid
 #CDDBTOOL=cddb-tool
 #EJECT=eject
 #MD5SUM=md5sum
 #DISTMP3=distmp3
 #VORBISCOMMENT=vorbiscomment
 #NORMALIZE=normalize
 #CDSPEED=eject
 
 # Options to call programs with:
 
 # If HTTPGET is modified, the HTTPGETOPTS options should also be defined 
 # accordingly. If HTTPGET is changed, the default options will be set,
 # if HTTPGETOPTS is empty or not defined.
 #HTTPGET=wget
 # for fetch (FreeBSD): HTTPGETOPTS="-q -o -"
 # for wget: HTTPGETOPTS="-q -O -"
 # for curl (MacOSX): HTTPGETOPTS="-f -s"
 #HTTPGETOPTS="-q -O -"
 
 # MP3:
 #LAMEOPTS=
 #GOGOOPTS=
 #BLADEENCOPTS=
 #L3ENCOPTS=
 #XINGMP3ENCOPTS=
 #MP3ENCOPTS=
 
 # Ogg:
 #VORBIZEOPTS=
 #OGGENCOPTS=
 
 # FLAC:
 #FLACOPTS=
 
 # Speex:
 #SPEEXENCOPTS=
 
 #ID3OPTS=
 #ID3V2OPTS=
 #CDPARANOIAOPTS=
 #CDDA2WAVOPTS=
 #CDDAFSOPTS="-f"
 #CDDBTOOLOPTS=
 #EJECTOPTS=
 #DISTMP3OPTS=
 #NORMALIZEOPTS=
 #CDSPEEDOPTS="-x"
 #CDSPEEDVALUE=""
 
 # Actions to take
 # Comma-separated list of one or more of the following:
 # cddb,read,normalize,encode,tag,move,playlist,clean
 # encode implies read
 # normalize implies read
 # tag implies cddb,read,encode
 # move implies cddb,read,encode,tag
 # playlist implies cddb
 # The default action list is defined in the following comment.
 #ACTIONS=cddb,read,encode,tag,move,clean
 
 # CDDB options
 # If NOSUBMIT is set to y, then abcde will never prompt asking if you
 # wish to submit your edited cddb file.
 #NOSUBMIT=n
 # If NOCDDBQUERY is set to y, then abcde will never even try to access
 # the CDDB server; running abcde will automatically drop you into a
 # blank cddb file to edit at your leisure. This is the same as the
 # -n option. NOCDDBQUERY=y implies NOSUBMIT=y.
 #NOCDDBQUERY=n
 
 # CD device you want to read from
 #CDROM=/dev/cdrom
 
 # If you'd like to make a default location that overrides the current
 # directory for putting mp3's, uncomment this.
 #OUTPUTDIR=`pwd`
 
 # Or if you'd just like to put the temporary .wav files somewhere else
 # you can specify that here
 #WAVOUTPUTDIR=`pwd`
 
 # OUTPUTTYPE can be either "ogg", "mp3", "flac" or "spx", or a combination
 # of them separated with ",": "ogg,mp3".
 #OUTPUTTYPE=ogg
 
 # Output filename format - change this to reflect your inner desire to
 # organize things differently than everyone else 
 # You have the following variables at your disposal:
 # OUTPUT, GENRE, ALBUMFILE, ARTISTFILE, TRACKFILE, and TRACKNUM.
 # Make sure to single-quote this variable. abcde will automatically create
 # the directory portion of this filename.
 # NOTICE: OUTPUTTYPE has been deprecated in the OUTPUTFORMAT string.
 # Since multiple-output was integrated we always append the file type
 # to the files. Remove it from your user defined string if you are getting
 # files like ".ogg.ogg".
 #OUTPUTFORMAT='${ARTISTFILE}-${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'
 
 # Like OUTPUTFORMAT but for Various Artists discs.
 #VAOUTPUTFORMAT='${ARTISTFILE}/${TRACKFILE}'
 
 # Define how many encoders to run at once. This makes for huge speedups
 # on SMP systems. Defaults to 1. Equivalent to -j.
 #MAXPROCS=2
 
 # Support for systems with low disk space:
 # n: Default parallelization (read entire CD in while encoding)
 # y: No parallelization (rip, encode, rip, encode...)
 #LOWDISK=n
 
 # Set the playlist file location format. Uses the same variables and format
 # as OUTPUTFORMAT. If the playlist is specified to be in a subdirectory, it
 # will be created for you and the playlist will reference files from that
 # subdirectory.
 #PLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u'
 # If you want to prefix every filename in a playlist with an arbitrary
 # string (such as 'http://you/yourstuff/'), use this option
 #PLAYLISTDATAPREFIX=''
 
 #Like PLAYLIST{FORMAT,DATAPREFIX} but for Various Artists discs:
 #VAPLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u'
 #VAPLAYLISTDATAPREFIX=''
 
 #This will give the playlist CR-LF line-endings, if set to "y".
 #(some hardware players insist on CR-LF line-endings
 #DOSPLAYLIST=n
 
 # Custom filename munging:
 # By default, abcde will do the following to CDDB data to get a useful
 # filename:
 # * Translate colons to a space and a dash for Windows compatibility
 # * Eat control characters, single quotes, and question marks
 # * Translate spaces and forward slashes to underscores
 # To change that, redefine the mungefilename function.
 # mungefilename recieves the CDDB data (artist, track, title, whatever)
 # as $1 and outputs it on stdout.
 #mungefilename ()
 #{
 # echo "$@" | sed s,:,\ -,g | tr \ / __ | tr -d '\"\?\[:cntrl:\]
 #}
 
 # Custom pre-read function
 # By default it does nothing.
 # You can set some things to get abcde funtion in better ways:
 # * Close the CD tray using eject -t (if available in eject and supported by 
 # your CD device.
 # * Set the CD speed. You can also use the built-in options, but you can also 
 # set it here. In Debian, eject -x and cdset -x do the job.
 #pre_read ()
 #{
 #:
 #}
 
 # If you'd like to have abcde eject the cdrom after all the tracks have been
 # read, uncomment the following line.
 #EJECTCD=y
 
 # To encode on the remote machines foo, bar, baz, quux, and qiix, as well as
 # on the local machine (requires distmp3 to be installed on local machine and
 # distmp3host to be installed and running on all remote machines - see README)
 #REMOTEHOSTS=foo,bar,baz,quux,qiix