bash: Rip audio disc to mp3
มีงานต้องเก็บแผ่นซีดีธรรมะลงไว้ในฮาร์ดดิสก์เป็นจำนวนมาก เพื่อให้สะดวก จึงทำเป็นสคริปต์ให้ใช้งานได้สะดวก
ลักษณะของโปรแกรมคือ เมื่อเราใส่แผ่นแล้วสั่งรันโปรแกรม เขาจะถอดไฟล์เสียงทั้งหมดมาเป็นไฟล์ mp3 ที่ไดเรกทอรีปัจจุบัน โดยเอาข้อมูลชื่อเพลงจากแผ่นมาเป็นชื่อไฟล์
ก่อนอื่นติดตั้งแพกเกจที่จำเป็นก่อน
$ sudo aptitude install lame cdda2wav
สคริปต์มีดังนี้
$ sudo vi /usr/local/bin/d.audio2mp3
#!/bin/bash # Rip audio disc to mp3 # # USAGE: $0 prefix # exam1: $0 T2 # -> T2-01-Title1.mp3 # T2-02-Title2.mp3 # ... # in current dir # # Requist: aptitude install lame cdda2wav if [ $1 ]; then PREFIX="$1-"; fi DEV='/dev/cdrom' TMP="/tmp/$USER/`basename $0`_$RANDOM" mkdir -p $TMP pushd $TMP #to wave cdda2wav -L 1 -D $DEV -B #to mp3 for i in *wav; do NUM=`echo ${i%.*} | cut -d_ -f 2`- TITLE=`grep 'Tracktitle=' ${i%.*}.inf | cut -d\' -f2` lame -h -V 2 $i $PREFIX$NUM$TITLE.mp3 done popd mv $TMP/*mp3 . rm -rf $TMP
ทำให้รันได้
$ sudo chmod 777 /usr/local/bin/d.audio2mp3
เสร็จแล้ว
การใช้งานคือ ใส่แผ่น audio แล้วสั่งรัน d.audio2mp3 จะได้ไฟล์ mp3 มาอยู่ในไดเรกทอรีปัจจุบัน
การทำงานของสคริปต์คือ
- แปลงข้อมูลเสียงมาเป็นไฟล์ wav ด้วยโปรแกรม cdda2wav โดยนำไปใส่ในไดเรกทอรีชั่วคราวใน /tmp (เพื่อป้องกันผู้ใช้หลายคน จึงใส่ตัวแปร $USER ไว้ด้วย เพราะโค๊ดต้นฉบับ เขียนบนเซิร์ฟเวอร์ที่มีผู้ใช้หลายคน)
- แปลงไฟล์ wav ที่ได้มาเป็น mp3 โดยใช้โปรแกรม lame (ซึ่งอาจมีปัญหาว่าตอนนี้หา lame บน lenny กับ sid ไม่ได้แล้ว ให้ลองดูวิธีปรุงขึ้นมาเองได้ที่ วิธีปรุง lame โดยคุณโดม http://thisk.org/dr/node/32)
โดยเอาข้อมูล Tracktitle จากไฟล์นามสกุล inf มาเป็นชื่อไฟล์ mp3 ที่ได้ รวมถึงใส่คำนำหน้า (จากตัวแปร $PREFIX) ให้ด้วย
- Log in to post comments
![]() |
ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้ |