นี่คือคำตอบแบบกึ่งเพราะฉันไม่ทราบว่าสภาพแวดล้อมของคุณและรหัสที่ฉันให้ไว้มีไว้เพื่อเป็นตัวอย่างเท่านั้น - การใช้งานอย่างที่ไม่ควรทำอันตราย แต่ฉันไม่สามารถรับประกันได้
งานแบบนี้สามารถจัดการกับการใช้สคริปต์ทุบตีแบบง่าย ๆ เช่นในตัวอย่างต่อไปนี้ฉันใช้ eyeD3 เพื่อแยกศิลปินและชื่อจากนั้นกระจกวิกิลีตีฟรีเพื่อดึงเนื้อเพลงและจากนั้น eyeD3 อีกครั้งเพื่อบันทึกแท็กใหม่ ฉันขอแนะนำให้ทุกคนที่จะใช้รหัสนี้เพื่อค้นหา API เพลงอื่นเนื่องจากการใช้บริการเดียวกันซ้ำไปซ้ำมาอาจถือได้ว่าเป็นอันตราย
#!/bin/bash
_TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>'
_SRY="Sorry, We don't have lyrics for this song yet."
[ "$1" ] && _PATH="$1" || _PATH=$PWD
cd $_PATH
for _FILE in {*.mp3,*.m4a}; do
if [[ -r $_FILE ]]; then
_SONG=$(eyeD3 --no-color "$_FILE" | grep title)
_ARTIST="${_SONG#*"artist: "}"
_TITLE="${_SONG%"artist: "*}"
_TITLE="${_TITLE#"title: "}"
echo -n "$_ARTIST - $_TITLE"
_ARTIST="${_ARTIST// /+}"
_TITLE="${_TITLE// /+}"
_URL="${_TPL//"<artist>"/$_ARTIST}"
_URL="${_URL//"<title>"/$_TITLE}"
_LYRICS=$(wget -qO- $_URL)
if [ "$_LYRICS" != "$_SRY" ]; then
eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null
else
echo "No lyrics found... skipping!"
fi
fi
done
cd $OLDPWD
คำแนะนำ (เรียกใช้คำสั่งในเทอร์มินัล):
- ติดตั้ง
wget
และeyeD3
โดยการออกsudo apt-get install wget eyed3
- บันทึกรหัสข้างต้นเป็นไฟล์เช่น
/home/user/lyrics_fetcher.sh
- เพิ่มสิทธิ์ในการเรียกใช้ไฟล์:
chmod u+x /home/user/lyrics_fetcher.sh
- เรียกใช้ไฟล์ (คำนึงถึงคำพูด):
/home/user/lyrics_fetcher.sh "path_to_my_album"
- คุณสามารถหยุดการทำงานของสคริปต์ได้ตลอดเวลาโดยกดctrl+c
ฉันตรวจสอบรหัสนี้ด้วยอัลบั้ม "AM" โดย Arctic Monkeys และมันก็หอมหวาน
หากคุณต้องการเรียกเนื้อเพลงสำหรับอัลบั้มทั้งหมดของคุณในครั้งเดียวคุณสามารถเรียกใช้สคริปต์แบบวนซ้ำสำหรับแต่ละไดเรกทอรีได้ฉันเดา ถึงกระนั้นฉันจะไม่ใช้มันเป็นทางออกสุดท้าย - wikilyrics และทุกคนที่สนับสนุนโดยการมิเรอร์เป็นคนดีและคำตอบนี้อยู่ที่นี่เพื่อส่งเสริมการคิดไม่ใช่การละเมิด