|
|
# create_music_data.py
|
|
|
import os
|
|
|
import django
|
|
|
from django.core.files import File
|
|
|
|
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'music.settings')
|
|
|
django.setup()
|
|
|
|
|
|
from index.models import Label, Song, Dynamic
|
|
|
|
|
|
def import_local_music():
|
|
|
# 基础路径
|
|
|
base_dir = r'C:\Users\27300\text\src\static'
|
|
|
|
|
|
# 获取现有的音乐文件
|
|
|
song_files_dir = os.path.join(base_dir, 'songFile')
|
|
|
song_img_dir = os.path.join(base_dir, 'songImg')
|
|
|
song_lyric_dir = os.path.join(base_dir, 'songLyric')
|
|
|
|
|
|
# 检查目录是否存在
|
|
|
if not os.path.exists(song_files_dir):
|
|
|
print(f"歌曲文件目录不存在: {song_files_dir}")
|
|
|
return
|
|
|
|
|
|
# 创建默认分类
|
|
|
pop_label, _ = Label.objects.get_or_create(label_name='流行音乐')
|
|
|
|
|
|
# 获取所有音乐文件
|
|
|
music_files = [f for f in os.listdir(song_files_dir) if f.endswith('.mp3')]
|
|
|
|
|
|
print(f"找到 {len(music_files)} 个音乐文件")
|
|
|
|
|
|
for music_file in music_files:
|
|
|
# 从文件名提取歌曲信息(假设文件名为 "歌手 - 歌曲名.mp3")
|
|
|
filename = os.path.splitext(music_file)[0]
|
|
|
if ' - ' in filename:
|
|
|
singer, song_name = filename.split(' - ', 1)
|
|
|
else:
|
|
|
singer = '未知歌手'
|
|
|
song_name = filename
|
|
|
|
|
|
# 检查对应的图片和歌词文件
|
|
|
img_file = f"{os.path.splitext(music_file)[0]}.jpg"
|
|
|
lyric_file = f"{os.path.splitext(music_file)[0]}.txt"
|
|
|
|
|
|
song_img_path = os.path.join(song_img_dir, img_file) if os.path.exists(os.path.join(song_img_dir, img_file)) else 'default.jpg'
|
|
|
song_lyric_path = os.path.join(song_lyric_dir, lyric_file) if os.path.exists(os.path.join(song_lyric_dir, lyric_file)) else '暂无歌词'
|
|
|
|
|
|
# 只保存文件名,不保存完整路径
|
|
|
song_img = os.path.basename(song_img_path) if song_img_path != 'default.jpg' else 'default.jpg'
|
|
|
song_lyric = os.path.basename(song_lyric_path) if song_lyric_path != '暂无歌词' else '暂无歌词'
|
|
|
|
|
|
# 创建或更新歌曲记录
|
|
|
song, created = Song.objects.get_or_create(
|
|
|
song_name=song_name,
|
|
|
defaults={
|
|
|
'song_singer': singer,
|
|
|
'song_time': '04:00', # 默认时长
|
|
|
'song_album': '未知专辑',
|
|
|
'song_languages': '中文',
|
|
|
'song_company': '未知公司',
|
|
|
'song_release': '2023-01-01',
|
|
|
'song_img': song_img,
|
|
|
'song_lyrics': song_lyric,
|
|
|
'song_file': music_file, # 只保存文件名
|
|
|
'label': pop_label
|
|
|
}
|
|
|
)
|
|
|
|
|
|
if created:
|
|
|
# 创建动态数据
|
|
|
Dynamic.objects.create(
|
|
|
song=song,
|
|
|
dynamic_plays=0,
|
|
|
dynamic_search=0,
|
|
|
dynamic_down=0
|
|
|
)
|
|
|
print(f"✅ 导入歌曲: {singer} - {song_name}")
|
|
|
else:
|
|
|
print(f"⏩ 歌曲已存在: {singer} - {song_name}")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
import_local_music()
|
|
|
print("🎵 音乐数据导入完成!") |