ใน repo นี้ฉันรวบรวมและสำรวจข้อมูลที่เกี่ยวข้องกับแทร็กที่โดดเด่นในชาร์ต Spotify ฉันสร้างงานที่ฉันทำใน repo นี้ที่ฉันทำสิ่งต่างๆมากมาย น่าเสียดายที่การประมวลผลข้อมูลในโครงการนี้ยุ่งมากดังนั้นฉันจึงตัดสินใจเริ่มต้นจากศูนย์เพื่อสร้างชุดข้อมูลที่สะอาดกว่า
ฉันได้มาพร้อมกับสคริปต์ CLI สำหรับการดึงข้อมูลที่เกี่ยวข้องกับแผนภูมิ Spotify พวกเขาสามารถพบได้ในโฟลเดอร์ย่อย cli_scripts ของโครงการนี้ ตามชื่อโฟลเดอร์แนะนำสคริปต์ทั้งหมดสามารถเรียกใช้โดยตรงจากบรรทัดคำสั่ง คุณสามารถเรียกแต่ละสคริปต์ด้วยตัวเลือก -h เพื่อรับข้อมูลเกี่ยวกับอาร์กิวเมนต์ที่ยอมรับได้ (ตัวอย่าง: python cli_scripts/get_all.py -h )
ก่อนอื่นฉันมาพร้อมกับสคริปต์สำหรับการรวบรวมข้อมูลสำหรับแทร็กของ Spotify Daily Top 200 โชคไม่ดีที่ข้อมูลนี้ไม่สามารถใช้ได้ผ่าน API นอกจากนี้เราต้องดาวน์โหลดไฟล์ CSV แผนภูมิสำหรับแต่ละภูมิภาคและติดตามแยกต่างหาก (โดยการนำทางไปยังหน้าแผนภูมิ Spotify และคลิกปุ่มดาวน์โหลด) ซึ่งไม่สะดวกมาก
อย่างไรก็ตามฉันทำสิ่งนี้โดยการสร้างสคริปต์สองรายการ (ดูโฟลเดอร์ย่อย spotify_charts ):
download.py : โดยอัตโนมัติกระบวนการดาวน์โหลดแผนภูมิไฟล์ CSV สำหรับหลายภูมิภาค (ไม่ว่าจะเป็นทั้งหมดหรือชุดย่อยที่ระบุผ่านอาร์กิวเมนต์) และช่วงวันที่ที่กำหนด (เริ่มต้น + วันที่สิ้นสุด) โดยใช้ selenium (ต้องใช้บัญชี/ข้อมูลรับรอง Spotify!)combine_charts.py : รวมไฟล์ Spotify ที่ดาวน์โหลด .parquet ข้อมูลที่น่าสนใจมากมายและข้อมูลเมตาเกี่ยวกับดนตรีบน Spotify สามารถดึงได้จาก API อย่างเป็นทางการของ Spotify สคริปต์ทั้งหมดที่ใช้ Spotify API (ผ่าน wrapper Python API spotipy ) สามารถพบได้ใน spotify_api :
get_track_metadata.py : ดึงข้อมูลข้อมูลเมตาจากจุดสิ้นสุด API /tracks สำหรับรหัสแทร็กที่ไม่ซ้ำกันที่กล่าวถึงในไฟล์ .parquet ที่ให้มา เอาต์พุตโฟลเดอร์ของข้อมูลเมตาหลายไฟล์ .parquetget_album_metadata.py : ทำสิ่งเดียวกันกับข้างต้นเฉพาะสำหรับอัลบั้มแทนที่จะเป็นแทร็ก (ใช้ /albums API Endpoint)get_artist_metadata.py : ดึงข้อมูลข้อมูลเมตาของศิลปินสำหรับ ID ศิลปินที่ไม่ซ้ำกันทั้งหมดในหลาย ๆ ไฟล์อินพุต (แต่ละคอลัมน์มีคอลัมน์ artists_id ) รวมถึงการจัดเก็บข้อมูลเมตาในโฟลเดอร์เช่นสคริปต์อื่น ๆ ด้านบนget_all.py : รวมสคริปต์ทั้งหมดรับข้อมูลเมตาติดตามก่อนจากนั้นอัลบั้มข้อมูลเมตาสำหรับอัลบั้มทั้งหมดที่เกี่ยวข้องกับแทร็กและในที่สุดศิลปินเมตาดาต้าสำหรับศิลปินเพลงและอัลบั้มทั้งหมด น่าเสียดายที่ข้อมูลสำหรับเครดิตการติดตาม (โดยเฉพาะนักแต่งเพลงและผู้ผลิต) ยังไม่สามารถใช้งานได้ผ่านทาง Spotify API สาธารณะ อย่างไรก็ตามฉันคิดหาวิธีแก้ไขปัญหานั้น หนึ่งสามารถแยกส่วนหัวคำขอที่ใช้สำหรับคำขอเฉพาะที่ทำโดย Spotify Web App เช่นเมื่อเปิดการ Show Credits ป๊อปอัพบนหน้าแทร็กและนำกลับมาใช้ใหม่เพื่อทำการร้องขออื่น ๆ ไปยังจุดสิ้นสุด API (ไม่เป็นทางการ/ภายใน) เดียวกัน
วิธีการนี้สามารถใช้เพื่อ
# download CSVs; might take a loooong time, can be interrupted and restarted/resumed later
python cli_scripts/spotify_charts/download.py -s 2022-01-01 -e 2022-12-31 -o data/scraper_downloads
# combine downloaded CSVs into single parquet file
python cli_scripts/spotify_charts/combine.py -o data/top200_2022python cli_scripts/spotify_api/get_all.py -i data/top200_2022/charts.parquetTODO: เพิ่มคำสั่งที่เหมาะสมเมื่อสคริปต์เสร็จสิ้น '(ดีพอ)
ในการทำให้ทุกอย่างทำงานได้คุณสามารถทำตามคำแนะนำเหล่านี้ (สมมติว่าคุณติดตั้ง Python เวอร์ชันล่าสุด)
หากคุณต้องการคุณสามารถสร้างสภาพแวดล้อมใหม่เช่น conda :
conda env create --name=spotify-charts-analysis
conda activate spotify-charts-analysis
เพื่อให้สคริปต์ทั้งหมดทำงานนอกกรอบคุณสามารถติดตั้งแพ็คเกจ helpers โดยใช้งาน
pip install -e .
อีกทางเลือกหนึ่งคุณสามารถติดตั้งแพ็คเกจแบบทีละตัวได้ในขณะที่คุณกำลังพบปัญหาในการพยายามดำเนินการสิ่งต่าง ๆ ฮ่า ๆ
เนื้อเพลงติดตามเกี่ยวกับ Spotify สามารถไม่ถูกต้องแม้สำหรับเพลงที่ค่อนข้างเป็นที่นิยม (ตัวอย่างเช่นแทร็กเครื่องมือนี้ด้วยเหตุผลบางอย่างมีเนื้อเพลง)