Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature]: 通过api调用播放器功能 #1886

Closed
2 tasks done
xuan06zyx opened this issue May 9, 2024 · 8 comments
Closed
2 tasks done

[Feature]: 通过api调用播放器功能 #1886

xuan06zyx opened this issue May 9, 2024 · 8 comments
Labels
enhancement New feature or request

Comments

@xuan06zyx
Copy link

解决方案检查

问题描述

我在开发自用的直播点歌机,能否做到调用api从而达到播放、切歌、删除列表中的某首歌之类的功能?我已经有一个仅有点歌功能的项目了,如果可以的话我还是希望能有一个播放器样式的(但是我对前端一窍不通又不会做T-T)

描述你想要的解决方案

通过api调用播放函数(应该是这样的吧?)或修改如播放列表之类的

描述你考虑过的替代方案

No response

附加信息

No response

@lyswhut
Copy link
Owner

lyswhut commented May 11, 2024

你是指开放API吗?你想要新增哪些API?由于目前LX的播放列表机制,播放列表不好暴露到外部,不过播放控制这些还是很容易添加的,播放/暂停、切歌、收藏/取消收藏歌曲、不喜欢歌曲、桌面歌词开关/置顶这些API可以加

@xuan06zyx
Copy link
Author

是的,目前来讲仅对我个人而言能做到播放/暂停、切歌就够用了,播放列表我自己可以解决,我具体想要实现的功能是这样的:我的程序调用开放api在当前播放列表中添加下一首歌曲,

@lyswhut
Copy link
Owner

lyswhut commented May 12, 2024

如果是本地程序调用的话,可以通过已经有的 Scheme URL API去调用,你还可以通过 Scheme URL API 启动 LX,例如:在 LX 未启动时,Win+r打开windows运行对话框,输入 lxmusic://player/play 回车,可以启动 LX 并播放歌曲, Scheme URL API 无论在 LX 是否运行的情况下都可调用

@xuan06zyx
Copy link
Author

xuan06zyx commented May 12, 2024

我抄文档里issue别人的代码进行测试发现基本上没问题。不过添加歌曲到下一首、切换歌曲之类的功能没有。只传歌名,通过搜索列表默认选择播放第一首歌曲的功能(类似功能做到只传歌名点歌的)会出吗?如果不传入及其详细的歌曲参数貌似就没法播放了,我尝试播放歌单是可以正常播放的
QQ截图20240513005427

#python
from urllib.parse import quote
import webbrowser
import json

func = "播放歌曲"  # 功能名,支持打开歌单、播放歌单、搜索歌曲、播放歌曲
name = "希望有羽毛和翅膀"  # 歌曲名
singer = ""  # 艺术家名
source = "tx"  # 源,支持kw/kg/tx/wy/mg
func_list = {
    "打开歌单": "songlist/open",
    "播放歌单": "songlist/play",
    "搜索歌曲": "music/search",
    "播放歌曲": "music/play",
}
data = {
    "打开歌单": {
        "source": "tx",  # 支持 kw/kg/tx/wy/mg
        "id": "",
        "url": "",  # id和url必须传一个
    },
    "播放歌单": {
        "id": "",
        "url": "",  # id和url必须传一个
        "index": 0,  # 播放第几首,从0开始
    },
    "搜索歌曲": {
        "keywords": name,
        "source": source,
    },
    "播放歌曲": {
        "name": name,  # 歌曲名,必须
        "singer": singer,  # 艺术家,必须
        "source": source,  # 源,必须
        "songmid": "",  # 歌曲id,必须
        "img": "",  # 歌曲图片了解,选传
        "albumId": "",  # 歌曲专辑id,选传
        "interval": "",  # 格式化后歌曲时长,选传,例如 03:55
        "albumName": "",  # 歌曲专辑名称,宣传
        "types": [{"type": "flac", "size": "", "hash": ""}],  # type 128k/320k/flac/flac24bit
        "hash": "",  # kg必须
        "strMediaMid": "",  # tx必传
        "copyrightId": "",  # tx选传
        "lrcUrl": "",  # mg选传
    },
}
url = f"lxmusic://{func_list[func]}?data=" + quote(f"{json.dumps(data[func], ensure_ascii=False)}")
print("编码后的url:", repr(url))

webbrowser.open(url=url)

@lyswhut
Copy link
Owner

lyswhut commented May 13, 2024

不过添加歌曲到下一首、切换歌曲之类的功能没有。

这个之前开那个issue的时候没有,但现在已经有了,看文档

只传歌名,通过搜索列表默认选择播放第一首歌曲的功能(类似功能做到只传歌名点歌的)会出吗?

现在确实没有这个,也是那个issue后面我提的,但一直没有加,我在下个版本加上

@lyswhut lyswhut added the enhancement New feature or request label May 13, 2024
@xuan06zyx
Copy link
Author

非常感谢!另外播放器本身以及各个API可以加一个搜索&播放专辑的功能吗?就像歌单一样

@lyswhut
Copy link
Owner

lyswhut commented May 13, 2024

软件本身不支持歌手、专辑的获取,这些功能没有实现,所以这两块功能的api无法提供,现在也没有添加它们的计划

@xuan06zyx
Copy link
Author

软件本身不支持歌手、专辑的获取,这些功能没有实现,所以这两块功能的api无法提供,现在也没有添加它们的计划

好的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants