Compare commits
15 Commits
75a8ab3091
...
v4.3.0
Author | SHA1 | Date | |
---|---|---|---|
43ad0fa955 | |||
9e424631a9 | |||
ea0cc35f84 | |||
8fd22e05d2 | |||
a59ea236d5 | |||
2ba7e62ef0 | |||
9985d44424 | |||
867a49b2a2 | |||
19219015a6 | |||
09d10ea8c6 | |||
e841dcb2d0 | |||
3b8f1fcb5d | |||
d92cabc97d | |||
648dd7e090 | |||
9b9282b0c8 |
1
.idea/NFLmusic.iml
generated
1
.idea/NFLmusic.iml
generated
@ -3,6 +3,7 @@
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.6 (NFLmusic)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
|
87
NFLmusic.py
87
NFLmusic.py
@ -143,7 +143,7 @@ def download_music(song_name, choose):
|
||||
progressbar.place(x=10, y=300)
|
||||
br = br_dict[var.get()]
|
||||
if choice == "KUWO":
|
||||
resp = requests.get(f"{url}?msg={song_name}&n={choose}&br={br}&num=60&type=json")
|
||||
resp = requests.get(f"{url}?msg={song_name}&n={choose}&br={br}&num=60&type=json&key=Dragon5B887C2DC41AD03C93F06BAF4B7888C3")
|
||||
resp.close()
|
||||
id = resp.json()["link"].rsplit("/", 1)[1]
|
||||
try:
|
||||
@ -163,7 +163,7 @@ def download_music(song_name, choose):
|
||||
singer = resp.json()["song_singer"]
|
||||
music_url = resp.json()["flac_url"]
|
||||
elif choice == "WANGYIYUN":
|
||||
resp = requests.get(f"{url}?gm={song_name}&n={choose}&br={br}&num=60&type=json")
|
||||
resp = requests.get(f"{url}?gm={song_name}&n={choose}&br={br}&num=60&type=json&key=Dragon5B887C2DC41AD03C93F06BAF4B7888C3")
|
||||
resp.close()
|
||||
id = resp.json()["link"].rsplit("=", 1)[1]
|
||||
try:
|
||||
@ -177,7 +177,7 @@ def download_music(song_name, choose):
|
||||
singer = resp.json()["singer"]
|
||||
music_url = resp.json()["music_url"]
|
||||
elif choice == "QQ":
|
||||
resp = requests.get(f"{url}?msg={song_name}&n={choose}&num=60&type=json&br={br}")
|
||||
resp = requests.get(f"{url}?msg={song_name}&n={choose}&num=60&type=json&br={br}&key=Dragon5B887C2DC41AD03C93F06BAF4B7888C3")
|
||||
resp.close()
|
||||
try:
|
||||
lrc = resp.json()["data"]["lyric"]
|
||||
@ -187,39 +187,6 @@ def download_music(song_name, choose):
|
||||
music_name = resp.json()["data"]["song_name"]
|
||||
singer = resp.json()["data"]["song_singer"]
|
||||
music_url = resp.json()["data"]["music_url"]
|
||||
elif choice == "KUGOU":
|
||||
resp = requests.get(f"{url}?gm={song_name}&n={choose}&num=60&type=json&quality={br}")
|
||||
resp.close()
|
||||
try:
|
||||
lrc = resp.json()["lyrics"]
|
||||
except Exception as e:
|
||||
print(f"download_kugou_lrc: {e}")
|
||||
lrc = ""
|
||||
music_name = resp.json()["title"]
|
||||
singer = resp.json()["singer"]
|
||||
music_url = resp.json()["music_url"]
|
||||
elif choice == "DOUYIN":
|
||||
resp = requests.get(f"{url}?msg={song_name}&n={choose}&num=50&type=json")
|
||||
resp.close()
|
||||
try:
|
||||
lrc = resp.json()["data"]["lrc"]
|
||||
except Exception as e:
|
||||
print(f"download_qishui_lrc: {e}")
|
||||
lrc = ""
|
||||
music_name = resp.json()["data"]["title"]
|
||||
singer = resp.json()["data"]["singer"]
|
||||
music_url = resp.json()["data"]["url"]
|
||||
elif choice == "XIAOFEN":
|
||||
resp = requests.get(f"{url}?msg={song_name}&n={choose}&num=60&type=json&br={br}")
|
||||
resp.close()
|
||||
try:
|
||||
lrc = resp.json()["lrc"]
|
||||
except Exception as e:
|
||||
print(f"download_xiaofen_lrc: {e}")
|
||||
lrc = ""
|
||||
music_name = resp.json()["title"]
|
||||
singer = resp.json()["singer"]
|
||||
music_url = resp.json()["music_url"]
|
||||
else:
|
||||
lrc = ""
|
||||
lrc = lrc.replace("\\n", "\n")
|
||||
@ -327,17 +294,11 @@ def get_data_without_blocking(song_name):
|
||||
button0["state"] = "disabled"
|
||||
songlist.delete(*songlist.get_children())
|
||||
if choice == "KUWO":
|
||||
url1 = f"{url}?msg={song_name}&num=60&type=json"
|
||||
url1 = f"{url}?msg={song_name}&num=60&type=json&key=Dragon5B887C2DC41AD03C93F06BAF4B7888C3"
|
||||
elif choice == "WANGYIYUN":
|
||||
url1 = f"{url}?gm={song_name}&num=60&type=json"
|
||||
url1 = f"{url}?gm={song_name}&num=60&type=json&key=Dragon5B887C2DC41AD03C93F06BAF4B7888C3"
|
||||
elif choice == "QQ":
|
||||
url1 = f"{url}?msg={song_name}&num=60&type=json"
|
||||
elif choice == "KUGOU":
|
||||
url1 = f"{url}?gm={song_name}&num=60&type=json"
|
||||
elif choice == "DOUYIN":
|
||||
url1 = f"{url}?msg={song_name}&num=50&type=json"
|
||||
elif choice == "XIAOFEN":
|
||||
url1 = f"{url}?msg={song_name}&num=60&type=json"
|
||||
url1 = f"{url}?msg={song_name}&num=60&type=json&key=Dragon5B887C2DC41AD03C93F06BAF4B7888C3"
|
||||
resp = requests.get(url1)
|
||||
jsondata = resp.json()["data"]
|
||||
resp.close()
|
||||
@ -355,18 +316,6 @@ def get_data_without_blocking(song_name):
|
||||
full_name = jsondata[index]["song_title"]
|
||||
artist = jsondata[index]["song_singer"]
|
||||
album = ""
|
||||
elif choice == "KUGOU":
|
||||
full_name = jsondata[index]["title"]
|
||||
artist = jsondata[index]["singer"]
|
||||
album = ""
|
||||
elif choice == "DOUYIN":
|
||||
full_name = jsondata[index]["title"]
|
||||
artist = jsondata[index]["singer"]
|
||||
album = ""
|
||||
elif choice == "XIAOFEN":
|
||||
full_name = jsondata[index]["title"]
|
||||
artist = jsondata[index]["singer"]
|
||||
album = ""
|
||||
songlist.insert("", "end", values=(full_name, artist, album))
|
||||
except requests.exceptions.JSONDecodeError:
|
||||
resp_text = resp.text
|
||||
@ -430,26 +379,27 @@ def delete():
|
||||
os.remove(abs_path_lrc)
|
||||
except:
|
||||
pass
|
||||
music_dir_without_endswith.remove(filtered_list[listbox1.curselection()[0]])
|
||||
music_dir_without_endswith.remove(listbox1.get(0, END)[listbox1.curselection()[0]])
|
||||
music_dir.remove(music_dir[listbox1.curselection()[0]])
|
||||
listbox1.delete(listbox1.curselection()[0])
|
||||
except IndexError:
|
||||
tkinter.messagebox.showwarning(title=lang.get(la, "mbox.title.delete_fail"),
|
||||
message=lang.get(la, "mbox.text.delete_fail_no_target", ))
|
||||
except PermissionError:
|
||||
try:
|
||||
# try:
|
||||
stopmusic()
|
||||
os.remove(abs_path)
|
||||
try:
|
||||
os.remove(abs_path_lrc)
|
||||
except:
|
||||
pass
|
||||
music_dir_without_endswith.remove(filtered_list[listbox1.curselection()[0]])
|
||||
music_dir.remove(music_dir[listbox1.curselection()[0]])
|
||||
music_dir_without_endswith.remove(listbox1.get(0, END)[listbox1.curselection()[0]])
|
||||
del music_dir[listbox1.curselection()[0]]
|
||||
listbox1.delete(listbox1.curselection()[0])
|
||||
except:
|
||||
tkinter.messagebox.showerror(title=lang.get(la, "mbox.title.delete_fail"),
|
||||
message=lang.get(la, "mbox.text.delete_fail_no_permission", ))
|
||||
# except Exception as e:
|
||||
# print(e, type(e))
|
||||
# tkinter.messagebox.showerror(title=lang.get(la, "mbox.title.delete_fail"),
|
||||
# message=lang.get(la, "mbox.text.delete_fail_no_permission", ))
|
||||
except FileNotFoundError:
|
||||
tkinter.messagebox.showerror(title=lang.get(la, "mbox.title.delete_fail"),
|
||||
message=lang.get(la, "mbox.text.delete_fail_not_found", ))
|
||||
@ -511,9 +461,7 @@ def playmusic(music_path):
|
||||
try:
|
||||
music_player.play_music(music_path)
|
||||
except pygame.error:
|
||||
tkinter.messagebox.showerror(title=lang.get(la, "mbox.title.play_fail"),
|
||||
message=lang.get(la, "mbox.text.play_fail_unrecognized_format",
|
||||
{"_file_": music_name}))
|
||||
os.startfile(music_path)
|
||||
except:
|
||||
pass
|
||||
|
||||
@ -1331,7 +1279,7 @@ def search_local_song():
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
version = "4.2.5"
|
||||
version = "4.3.0"
|
||||
poem = ""
|
||||
appdata = os.getenv("APPDATA")
|
||||
make_resource()
|
||||
@ -1695,9 +1643,6 @@ repo_dict = {
|
||||
"酷我音乐": "KUWO",
|
||||
"网易云音乐": "WANGYIYUN",
|
||||
"QQ音乐": "QQ",
|
||||
"酷狗音乐": "KUGOU",
|
||||
"汽水音乐": "DOUYIN",
|
||||
"小粉音乐": "XIAOFEN"
|
||||
}
|
||||
repo_dict_reverse = {}
|
||||
for repo in repo_dict:
|
||||
|
@ -17,28 +17,19 @@ usercache = {
|
||||
}
|
||||
|
||||
api_data = {
|
||||
"QQ": ["https://www.hhlqilongzhu.cn/api/dg_QQmusicflac.php",
|
||||
"QQ": ["https://sdkapi.hhlqilongzhu.cn/api/QQmusic/",
|
||||
{
|
||||
"臻品母带": 10,
|
||||
"SQ无损": 1,
|
||||
"HQ高音质": 2
|
||||
}
|
||||
],
|
||||
"KUWO": ["https://www.hhlqilongzhu.cn/api/dg_kuwomusic.php",
|
||||
"KUWO": ["https://sdkapi.hhlqilongzhu.cn/api/dgMusic_kuwo/",
|
||||
{
|
||||
"无损音质": 1,
|
||||
"高品音质": 2,
|
||||
"高品音质": 2
|
||||
}
|
||||
],
|
||||
"KUGOU": ["https://www.hhlqilongzhu.cn/api/dg_kgmusic.php",
|
||||
{
|
||||
"蝰蛇全景声": "viper_atmos",
|
||||
"无损音质": "flac",
|
||||
"HQ高品音质": 320,
|
||||
"标准音质": 128
|
||||
}
|
||||
],
|
||||
"WANGYIYUN": ["https://www.hhlqilongzhu.cn/api/dg_wyymusic.php",
|
||||
"WANGYIYUN": ["https://sdkapi.hhlqilongzhu.cn/api/dgMusic_wyy",
|
||||
{
|
||||
"标准音质": 1,
|
||||
"极高音质": 2,
|
||||
@ -49,17 +40,6 @@ api_data = {
|
||||
"超清母带": 7
|
||||
}
|
||||
],
|
||||
"DOUYIN": ["https://www.hhlqilongzhu.cn/api/dg_douyinmusic.php",
|
||||
{
|
||||
"HQ高音质": 2,
|
||||
}
|
||||
],
|
||||
"XIAOFEN": ["https://www.hhlqilongzhu.cn/api/dg_mgmusic_24bit.php",
|
||||
{
|
||||
"无损音质": 1,
|
||||
"高品音质": 2,
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
|
4
test.py
Normal file
4
test.py
Normal file
@ -0,0 +1,4 @@
|
||||
import os
|
||||
|
||||
audio_file = "C:/Users/Administrator/Music/国风堂#哦漏 - 知我.mp3"
|
||||
os.startfile(audio_file)
|
@ -1,3 +1,3 @@
|
||||
4.2.5
|
||||
4.3.0
|
||||
http://pan.nanfengling.cn/f/4Qc2/update.exe
|
||||
http://pan.nanfengling.cn/f/lWPTv/NFLmusicv4.2.5.exe
|
||||
http://pan.nanfengling.cn/f/3mDtN/NFLmusicv4.3.0.exe
|
@ -1,5 +1,10 @@
|
||||
v4.2.5 - 2025.5.4
|
||||
修复了用户删除歌曲后频繁刷新的问题
|
||||
v4.3.0 - 2025.8.30
|
||||
修复了QQ音乐,酷我音乐源无法使用的问题
|
||||
移除汽水音乐,小粉音乐,酷狗音乐源
|
||||
修复了音乐删除时异常弹窗的问题
|
||||
修复了路径设置异常保存的问题
|
||||
修复了部分音质无法正常播放的问题
|
||||
(其实就是换成系统关联播放器而已 (ˉ▽ˉ;)...)
|
||||
|
||||
本产品是南凤科技旗下的音乐下载器
|
||||
旨在提升用户体验,
|
||||
|
@ -18,16 +18,16 @@
|
||||
{
|
||||
"version": "v3.6.1",
|
||||
"upload_time": "2024年3月1日",
|
||||
"url": "https://wwo.lanzout.com/iHciX21mccmh",
|
||||
"password": "chai",
|
||||
"url": "https://wwtx.lanzoup.com/iclud2vq9y2f",
|
||||
"password": "eeof",
|
||||
"log": "整合了下载源\n优化了数据格式",
|
||||
"brief": "2条优化"
|
||||
},
|
||||
{
|
||||
"version": "v3.6.2",
|
||||
"upload_time": "2024年3月15日",
|
||||
"url": "https://wwo.lanzout.com/i1byb21mcdfg",
|
||||
"password": "2dqj",
|
||||
"url": "https://wwtx.lanzoup.com/itI4r2vqa5mh",
|
||||
"password": "ey80",
|
||||
"log": "修复了搜索函数搜索失败问题\n修复了主题参数读取异常\n优化了搜索函数",
|
||||
"brief": "2条修复,1条优化"
|
||||
},
|
||||
|
Reference in New Issue
Block a user