mirror of
https://github.com/Lost-MSth/Arcaea-server.git
synced 2026-02-07 16:27:26 +08:00
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import os
|
|
import hashlib
|
|
from flask import url_for
|
|
|
|
|
|
def get_file_md5(file_path):
|
|
# 计算文件MD5
|
|
if not os.path.isfile(file_path):
|
|
return None
|
|
myhash = hashlib.md5()
|
|
f = open(file_path, 'rb')
|
|
while True:
|
|
b = f.read(8096)
|
|
if not b:
|
|
break
|
|
myhash.update(b)
|
|
f.close()
|
|
return myhash.hexdigest()
|
|
|
|
|
|
def get_one_song(song_id, file_dir='./database/songs'):
|
|
# 获取一首歌的下载链接,返回字典
|
|
dir_list = os.listdir(os.path.join(file_dir, song_id))
|
|
re = {}
|
|
for i in dir_list:
|
|
if os.path.isfile(os.path.join(file_dir, song_id, i)) and i in ['0.aff', '1.aff', '2.aff', '3.aff', 'base.ogg']:
|
|
if i == 'base.ogg':
|
|
re['audio'] = {"checksum": get_file_md5(os.path.join(file_dir, song_id, 'base.ogg')),
|
|
"url": url_for('download', file_path=song_id+'/base.ogg', _external=True)}
|
|
else:
|
|
if 'chart' not in re:
|
|
re['chart'] = {}
|
|
|
|
re['chart'][i[0]] = {"checksum": get_file_md5(os.path.join(file_dir, song_id, i)),
|
|
"url": url_for('download', file_path=song_id+'/'+i, _external=True)}
|
|
|
|
return {song_id: re}
|
|
|
|
|
|
def get_all_songs(file_dir='./database/songs'):
|
|
# 获取所有歌的下载链接,返回字典
|
|
dir_list = os.listdir(file_dir)
|
|
re = {}
|
|
for i in dir_list:
|
|
if os.path.isdir(os.path.join(file_dir, i)):
|
|
re.update(get_one_song(i))
|
|
|
|
return re
|