用於將本地離線歌曲導入到Spotify的腳本
发布时间:2026-03-18 12:35:36
這其實是來源於我的一部教學影片來的。
在這裡可以直接觀看影片:[點擊觀看](https://youtu.be/OysCqljWGf4?si=MMWoIMz_D3EiK6yr)
<div style="text-align: center;">
<iframe width="560" height="315"
src="https://www.youtube.com/embed/OysCqljWGf4" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope;
picture-in-picture" allowfullscreen>
</iframe>
</div>
這裡是影片中提到的腳本,大家可以自行取用。
##### 用於匯出電腦中離線音樂清單的腳本
腳本名:
> `export_music.py`
```python
import os
import csv
from mutagen.easyid3 import EasyID3
from mutagen import File
def extract_music_info(folder_path, output_csv):
headers = ['title', 'album', 'artist']
music_data = []
# 定義支持的副檔名
valid_extensions = ('.mp3', '.m4a', '.flac', '.wav')
print(f"正在掃描:{folder_path}")
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.lower().endswith(valid_extensions):
file_path = os.path.join(root, file)
try:
# 優先嘗試讀取標籤信息
audio = File(file_path, easy=True)
# 提取數據,若標籤不存在則使用檔名或預設值
title = audio.get('title', [os.path.splitext(file)[0]])[0]
album = audio.get('album', ['Unknown Album'])[0]
artist = audio.get('artist', ['Unknown Artist'])[0]
music_data.append({
'title': title,
'album': album,
'artist': artist
})
except Exception as e:
print(f"解析失敗 {file}: {e}")
# 導出為 CSV (使用 utf-8-sig 以便 Excel 正確顯示中文)
with open(output_csv, 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.DictWriter(f, fieldnames=headers)
writer.writeheader()
writer.writerows(music_data)
print(f"成功!已導出 {len(music_data)} 首歌曲至 {output_csv}")
# 設定路徑
source_dir = '/Volumes/Idioteque/Entertainment/Music/Music on Air'
output_name = 'music_library.csv'
if __name__ == "__main__":
extract_music_info(source_dir, output_name)
```
##### 用於從清單搜索並匯入Spotify的腳本
腳本名:
> `spotify.py`
```python
import csv
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import time
# --- 配置區 ---
CLIENT_ID = 'YOUR CLIENT_ID FOR SPOTIFY'
CLIENT_SECRET = 'YOUR CLIENT_SECRET FOR SPOTIFY'
REDIRECT_URI = 'http://127.0.0.1:8888/callback'
PLAYLIST_NAME = 'My Local Music Sync' # 你想創建的播放列表名稱
CSV_FILE = 'music_library.csv'
# --- 認證與初始化 ---
scope = "playlist-modify-public"
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
redirect_uri=REDIRECT_URI,
scope=scope
))
def sync_to_spotify():
user_id = sp.current_user()['id']
# 1. 創建播放列表
playlist = sp.user_playlist_create(user_id, PLAYLIST_NAME, public=True)
playlist_id = playlist['id']
print(f"已創建播放列表: {PLAYLIST_NAME}")
track_uris = []
# 2. 讀取 CSV 並搜索歌曲
with open(CSV_FILE, mode='r', encoding='utf-8-sig') as f:
reader = csv.DictReader(f)
for row in reader:
# 構造搜索關鍵字:標題 + 歌手
query = f"track:{row['title']} artist:{row['artist']}"
try:
results = sp.search(q=query, limit=1, type='track')
tracks = results['tracks']['items']
if tracks:
uri = tracks[0]['uri']
track_uris.append(uri)
print(f"找到: {row['title']} - {row['artist']}")
else:
print(f"❌ 未找到: {row['title']}")
# 稍微停頓,避免觸發 API 頻率限制
time.sleep(0.1)
except Exception as e:
print(f"搜索出錯: {e}")
# 3. 批量添加歌曲 (Spotify API 每次最多添加 100 首)
if track_uris:
for i in range(0, len(track_uris), 100):
sp.playlist_add_items(playlist_id, track_uris[i:i+100])
print(f"\n✅ 同步完成!共添加 {len(track_uris)} 首歌曲。")
else:
print("\n⚠️ 沒有找到任何可添加的歌曲。")
if __name__ == "__main__":
sync_to_spotify()
```
如果大家喜歡也請多多支持我們的影片!
感謝感謝!
分类:AI技術分享
标签: AI, ChatGPT, 技巧, 導入, 匯出, 離線, 提問, Gemini, 歌單, 匯入, 音樂, 導出, Spotify, 腳本, 搜索, 歌曲, API, Prompt, 小白
Leave a Comment