เครื่องมือสำหรับการย้ายจาก Spotify ไปยัง YTMusic
นี่คือชุดสคริปต์สำหรับการคัดลอกเพลงและเพลย์ลิสต์ที่ "ชอบ" จาก Spotify ไปยัง YTMusic มันมีทั้งเครื่องมือ CLI และ GUI (ใช้งานโดย Yoween เดิมเรียกว่า spotify_to_ytmusic_gui)
ขอขอบคุณ @RadicalArti และ Meet Vora สำหรับการบริจาคเงินให้กับโครงการนี้
คุณจะต้องมี Python 3.10 เวอร์ชันล่าสุดและใหม่กว่าที่ทราบว่าใช้งานได้ ส่วน 3.8-3.10 อาจใช้งานได้
ดาวน์โหลด Python สำหรับ Windows จาก: https://www.python.org/downloads/windows/
คุณยังสามารถใช้ choco เพื่อติดตั้งได้: choco install python
วิ่ง:
brew install python
brew install python-tk
ติดตั้งใบรับรองโดยทำ:
Macintosh HD > แอปพลิเคชัน > โฟลเดอร์ Python > ดับเบิลคลิกที่ไฟล์ "Install Certificates.command"
คุณอาจติดตั้งมันแล้ว ดูผู้จัดการแพ็คเกจที่คุณเลือกเพื่อติดตั้ง
แพ็คเกจนี้มีให้ใช้งานบน pip ดังนั้นคุณจึงสามารถติดตั้งได้โดยใช้:
pip install spotify2ytmusic
หรือ:
python3 -m pip install spotify2ytmusic
(ไม่แนะนำ)
อีกทางเลือกหนึ่ง แทนที่จะใช้ pip คือเพียงโคลน repo นี้และเรียกใช้จากแหล่งที่มาโดยตรง อย่างไรก็ตาม คุณจะต้องติดตั้งแพ็คเกจ "ytmusicapi" ดังนั้นคุณอาจต้องการใช้ pip เพื่อติดตั้งอย่างน้อยที่สุด
หากต้องการเรียกใช้โดยตรงจากแหล่งที่มา:
git clone [email protected]:linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
pip install ytmusicapi
pip install tk # If using the GUI
จากนั้นคุณสามารถใส่คำนำหน้าคำสั่งที่คุณต้องการรันด้วย python3 -m spotify2ytmusic
ได้ เช่น:
python3 -m spotify2ytmusic gui
python3 -m spotify2ytmusic list_playlists
python3 -m spotify2ytmusic load_liked
[etc...]
หากคุณติดตั้งผ่าน PIP คุณควรจะสามารถเรียกใช้: s2yt_gui
มิฉะนั้น หากทำงานจากแหล่งที่มา:
บน Windows: python -m spotify2ytmusic gui
หรือบน Linux: python3 -m spotify2ytmusic gui
login
บนแท็บแรกหรือ
เรียกใช้ ytmusicapi oauth
ในคอนโซล
หรือ
เรียกใช้ s2yt_ytoauth
หรือ
เรียกใช้ python -m spotify2ytmusic ytoauth
สิ่งนี้จะให้ URL แก่คุณ เยี่ยมชม URL นั้นและอนุญาตการสมัคร เมื่อนำเข้าเสร็จแล้ว คุณสามารถลบการอนุญาตสำหรับแอปนี้ได้
สิ่งนี้จะเขียนไฟล์ "oauth.json" เก็บไฟล์นี้ไว้เป็นความลับในขณะที่แอปได้รับอนุญาต ไฟล์นี้มีโทเค็นเซสชันที่เข้าสู่ระบบ
ytmusicapi ขึ้นอยู่กับซอฟต์แวร์นี้ และควรติดตั้งเป็นส่วนหนึ่งของ "การติดตั้ง pip"
Backup
และรอจนกว่าจะเสร็จสิ้นและสลับไปที่แท็บถัดไปหรือ ทำตามขั้นตอนด้านล่างทั้งหมด
ดาวน์โหลด Spotify-Backup.
เรียกใช้ spotify-backup.py
และจะช่วยให้คุณอนุญาตการเข้าถึงบัญชี Spotify ของคุณ
เรียกใช้: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
วิธีนี้จะบันทึกเพลย์ลิสต์และเพลงที่ชอบของคุณลงในไฟล์ "playlists.json"
ตามที่กล่าวไว้ด้านล่าง โปรแกรมต้นฉบับจะเพิ่มเพลงตามลำดับที่ 'ผิด' นั่นเป็นคุณสมบัติที่ฉันไม่ชอบ ดังนั้นฉันจึงสร้างสคริปต์เพื่อย้อนกลับมัน ดูเหมือนว่าจะเชื่อถือได้ แต่ถ้าคุณพบสิ่งแปลก ๆ โปรดเปิดปัญหา มันจะสร้างการสำรองข้อมูลของไฟล์ต้นฉบับในกรณีนี้
ตัวอย่าง: python3 .reverse_playlist.py ./playlists.json -r
import
และรอจนกว่าจะเสร็จสิ้นและสลับไปที่แท็บถัดไปมันจะดูเพลงที่คุณชอบใน Spotify และชอบพวกเขาบน YTMusic มันจะแสดงเพลงจาก Spotify ตามด้วยเพลงที่พบใน YTMusic ที่ชอบ ฉันได้ตรวจสอบเพลงของฉันแล้ว และดูเหมือนว่าจะทำงานได้ดีในการจับคู่เพลง YTMusic กับ Spotify จนถึงตอนนี้ ฉันยังไม่เห็นความล้มเหลวแม้แต่ครั้งเดียวในเพลงสองสามร้อยเพลง แต่ชื่อที่ลึกลับกว่านี้อาจมีปัญหาด้วย
list
และรอจนกว่าจะเสร็จสิ้นและสลับไปที่แท็บถัดไปนี่จะแสดงเพลย์ลิสต์ที่คุณมีทั้ง Spotify และ YTMusic เพื่อให้คุณสามารถคัดลอกทีละรายการได้
คุณสามารถคัดลอกเพลย์ลิสต์ ทั้งหมด หรือทำสำเนาเพลย์ลิสต์แต่ละเพลย์ลิสต์เพิ่มเติมได้ การคัดลอกเพลย์ลิสต์ทั้งหมดจะใช้ชื่อของเพลย์ลิสต์ Spotify เป็นชื่อเพลย์ลิสต์ปลายทางบน YTMusic
copy
และรอจนกว่าจะเสร็จสิ้นและสลับไปที่แท็บถัดไปหมายเหตุ : นี่จะไม่คัดลอกเพลย์ลิสต์ที่ชอบ (ดูด้านบนเพื่อดำเนินการดังกล่าว)
ในเอาต์พุตรายการ ให้ค้นหา "รหัสเพลย์ลิสต์" (คอลัมน์แรก) ของเพลย์ลิสต์ Spotify และของเพลย์ลิสต์ YTMusic
copy
เพลย์ลิสต์คัดลอกจะใช้ชื่อของเพลย์ลิสต์ YTMusic และจะสร้างเพลย์ลิสต์หากไม่มีอยู่ หากคุณเริ่มเพลย์ลิสต์ YTMusic ด้วย "+":
เรียกใช้ "copy_playlist" หรือ "load_liked" อีกครั้งในกรณีที่ล้มเหลวควรจะปลอดภัย โดยจะไม่ทำซ้ำรายการในเพลย์ลิสต์
ytmusicapi oauth
หรือ s2yt_ytoauth
หรือ python -m spotify2ytmusic ytoauth
สิ่งนี้จะให้ URL แก่คุณ เยี่ยมชม URL นั้นและอนุญาตการสมัคร เมื่อนำเข้าเสร็จแล้ว คุณสามารถลบการอนุญาตสำหรับแอปนี้ได้
สิ่งนี้จะเขียนไฟล์ "oauth.json" เก็บไฟล์นี้ไว้เป็นความลับในขณะที่แอปได้รับอนุญาต ไฟล์นี้มีโทเค็นเซสชันที่เข้าสู่ระบบ
ytmusicapi ขึ้นอยู่กับซอฟต์แวร์นี้ และควรติดตั้งเป็นส่วนหนึ่งของ "การติดตั้ง pip"
ดาวน์โหลด Spotify-Backup.
เรียกใช้ spotify-backup.py
และจะช่วยให้คุณอนุญาตการเข้าถึงบัญชี Spotify ของคุณ
เรียกใช้: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
วิธีนี้จะบันทึกเพลย์ลิสต์และเพลงที่ชอบของคุณลงในไฟล์ "playlists.json"
เรียกใช้: s2yt_load_liked
มันจะดูเพลงที่คุณชอบใน Spotify และชอบพวกเขาบน YTMusic มันจะแสดงเพลงจาก Spotify ตามด้วยเพลงที่พบใน YTMusic ที่ชอบ ฉันได้ตรวจสอบเพลงของฉันแล้ว และดูเหมือนว่าจะทำงานได้ดีในการจับคู่เพลง YTMusic กับ Spotify จนถึงตอนนี้ ฉันยังไม่เห็นความล้มเหลวแม้แต่ครั้งเดียวในเพลงสองสามพันเพลง แต่ชื่อที่ลึกลับกว่านี้อาจมีปัญหาด้วย
เรียกใช้: s2yt_load_liked_albums
ร้านค้า Spotify ชอบอัลบั้มที่อยู่นอกเพลย์ลิสต์ "เพลงที่ชอบ" นี่คือคำสั่งให้โหลดอัลบั้มที่คุณชอบลงในเพลงที่ชอบของ YTMusic
เรียกใช้ s2yt_list_playlists
นี่จะแสดงรายการเพลย์ลิสต์ที่คุณมีทั้ง Spotify และ YTMusic คุณจะต้องคัดลอกทีละรายการ
คุณสามารถคัดลอกเพลย์ลิสต์ ทั้งหมด หรือทำสำเนาเพลย์ลิสต์แต่ละเพลย์ลิสต์เพิ่มเติมได้ การคัดลอกเพลย์ลิสต์ทั้งหมดจะใช้ชื่อของเพลย์ลิสต์ Spotify เป็นชื่อเพลย์ลิสต์ปลายทางบน YTMusic หากต้องการคัดลอกเพลย์ลิสต์ทั้งหมด ให้รัน:
s2yt_copy_all_playlists
หมายเหตุ : นี่จะไม่คัดลอกเพลย์ลิสต์ที่ชอบ (ดูด้านบนเพื่อดำเนินการดังกล่าว)
ในเอาต์พุตรายการด้านบน ให้ค้นหา "รหัสเพลย์ลิสต์" (คอลัมน์แรก) ของเพลย์ลิสต์ Spotify และเพลย์ลิสต์ YTMusic จากนั้นเรียกใช้:
s2yt_copy_playlist
หากคุณต้องการสร้างเพลย์ลิสต์ คุณสามารถเรียกใช้:
s2yt_create_playlist "
หรือ คัดลอกเพลย์ลิสต์สามารถใช้ชื่อของเพลย์ลิสต์ YTMusic และจะสร้างเพลย์ลิสต์หากไม่มีอยู่ หากคุณเริ่มเพลย์ลิสต์ YTMusic ด้วย "+":
s2yt_copy_playlist
ตัวอย่างเช่น:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
เรียกใช้ "copy_playlist" หรือ "load_liked" อีกครั้งในกรณีที่ล้มเหลวควรจะปลอดภัย โดยจะไม่ทำซ้ำรายการในเพลย์ลิสต์
ส่วนใหญ่ใช้สำหรับการแก้ไขข้อบกพร่อง แต่มีคำสั่งให้ค้นหาแทร็กใน YTMusic:
s2yt_search --artist
ฟังก์ชันจะค้นหาอัลบั้มตามชื่อศิลปินที่กำหนดใน YTMusic ก่อน
จากนั้นจะวนซ้ำผลลัพธ์ของอัลบั้มสามรายการแรกและพยายามค้นหาแทร็กที่มีชื่อตรงกับชื่อแทร็กที่ระบุทุกประการ หากพบการจับคู่ก็จะส่งคืนข้อมูลแทร็ก
หากฟังก์ชันไม่พบแทร็กในอัลบั้ม ระบบจะค้นหาเพลงตามชื่อแทร็กและชื่อศิลปินที่กำหนด
ขึ้นอยู่กับพารามิเตอร์ yt_search_algo จะดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้:
หาก yt_search_algo เป็น 0 ก็จะส่งคืนผลลัพธ์เพลงแรก
หาก yt_search_algo เป็น 1 ระบบจะวนซ้ำผลลัพธ์เพลงและส่งกลับเพลงแรกที่ตรงกับชื่อแทร็ก ชื่อศิลปิน และชื่ออัลบั้มทุกประการ หากไม่พบรายการที่ตรงกัน จะทำให้เกิด ValueError
หาก yt_search_algo เป็น 2 จะทำการจับคู่แบบคลุมเครือ โดยจะลบทุกอย่างในวงเล็บในชื่อเพลง และตรวจสอบการจับคู่กับชื่อแทร็ก ชื่อศิลปิน และชื่ออัลบั้ม หากไม่พบรายการที่ตรงกัน ระบบจะค้นหาวิดีโอด้วยชื่อแทร็กและชื่อศิลปิน หากยังไม่พบรายการที่ตรงกัน จะทำให้เกิด ValueError
หากฟังก์ชันไม่พบแทร็กโดยใช้วิธีการข้างต้น จะทำให้เกิด ValueError
ไม่ สิ่งนี้ทำงานบน Linux/Windows/MacOS
ฉันได้รับข้อความ "ไม่พบการเผยแพร่ที่ตรงกันสำหรับ Spotify2ytmusic"
สิ่งนี้ได้รับการรายงานในฉบับที่ 39 และดูเหมือนว่าจะไม่ตรงกันระหว่างเวอร์ชันหลาม ผู้ใช้ที่นั่นบน MacOS จำเป็นต้องติดตั้ง Python เวอร์ชันเฉพาะ จากนั้นใช้ PIP เวอร์ชันที่ตรงกัน:
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
อัลกอริธึมการค้นหาทำงานอย่างไร
เมื่อพิจารณาจากข้อมูลแทร็กของ Spotify แล้ว ระบบจะค้นหาอัลบั้มของศิลปินคนเดียวกันบน YTMusic จากนั้นจึงดูเพลงฮิต 3 อันดับแรกเพื่อค้นหาเพลงที่มีชื่อเหมือนกันทุกประการ ในกรณีที่ไม่พบเพลงที่แน่ชัด ระบบจะค้นหาเพลงสำหรับชื่อเพลงของศิลปินคนเดียวกันและส่งคืนเพลงฮิตครั้งแรก
แนวคิดก็คือการค้นหาอัลบั้มและศิลปินแล้วมองหาการจับคู่แทร็กที่ตรงกันจะมีความแม่นยำมากกว่าการค้นหาเพลงและศิลปิน และอาศัยอัลกอริธึมของ YTMusic เพื่อค้นหาสิ่งต่าง ๆ โดยเฉพาะสำหรับแทร็กสั้น ๆ ที่อาจมี เพลงฮิตที่ขัดแย้งกันมากมายเช่น "Survival by Yes"
สำเนาของฉันล้มเหลวด้วยข้อผิดพลาด "ข้อผิดพลาด: (ลองใหม่) เซิร์ฟเวอร์ส่งคืน HTTP 400: คำขอไม่ถูกต้อง" ซ้ำแล้วซ้ำอีก
ลองใช้อาร์กิวเมนต์ "--track-sleep=3" เพื่อพัก 3 วินาทีระหว่างแทร็ก การดำเนินการนี้อาจใช้เวลานานกว่ามาก แต่อาจประสบความสำเร็จในกรณีที่อัตราที่เร็วกว่าล้มเหลว
Creative Commons Zero v1.0 สากล
Spotify-backup.py ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT ดู https://github.com/caseychu/spotify-backup สำหรับข้อมูลเพิ่มเติม