mirror of
https://github.com/hanxi/xiaomusic.git
synced 2025-12-12 15:48:13 +08:00
Auto-Generate docs 🤖
This commit is contained in:
191
docs/issues/378.md
Normal file
191
docs/issues/378.md
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
---
|
||||||
|
title: 求助:如何自动或口令刷新本地音乐列表?
|
||||||
|
---
|
||||||
|
|
||||||
|
# 求助:如何自动或口令刷新本地音乐列表?
|
||||||
|
|
||||||
|
docker容器部署的xiaomusic,目前是[0.3.74]最新版,音响是小米AI音箱二代。目前可以正常通过口令 “小爱同学,播放本地音乐 XXX”来 播放容器外挂载的目录 /music 中的mp3、flac等音乐歌曲。
|
||||||
|
|
||||||
|
但是,每次往 /music 里面新拷入一些音乐之后,xiaomusic 既没有自动刷新本地音乐列表,也不能通过“小爱同学,刷新列表”、“小爱同学,本地音乐 刷新列表”、“小爱同学,刷新本地列表”、“小爱同学,刷新本地音乐列表”等口令来刷新列表,必须在电脑上打开 xiaomusic 的后台管理页面并点一下那个刷新列表的按钮,然后本地音乐列表中才能刷新看见新增的音乐。
|
||||||
|
|
||||||
|
请问有没有办法做到每次往 /music 拷入音乐后自动刷新列表,或者通过口令刷新列表?谢谢~
|
||||||
|
|
||||||
|
## 评论
|
||||||
|
|
||||||
|
|
||||||
|
### 评论 1 - hanxi
|
||||||
|
|
||||||
|
刷新列表口令默认不在唤醒口令里,你可以先说播放歌曲,在播放中再说刷新列表,或者把刷新列表口令加到唤醒口令里。
|
||||||
|
|
||||||
|
`允许唤醒的命令:`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 2 - foxfire881
|
||||||
|
|
||||||
|
> 刷新列表口令默认不在唤醒口令里,你可以先说播放歌曲,在播放中再说刷新列表,或者把刷新列表口令加到唤醒口令里。
|
||||||
|
>
|
||||||
|
> `允许唤醒的命令:`
|
||||||
|
|
||||||
|
每次都要这样操作很麻烦欸~
|
||||||
|
|
||||||
|
注意到xiaomusic是用python写的,python有个可以监控文件系统变化的库 watchdog 使用很方便,可否增加一个自动刷新列表的功能?当监控到音乐目录发生变化时(增、删、改),自动刷新xiaomusic的音乐列表 —— 这样连口令都不用说了,xiaomusic自动实时刷新列表,更方便了!期待~~ @hanxi
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 3 - foxfire881
|
||||||
|
|
||||||
|
豆包给了个demo:
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
from watchdog.observers import Observer
|
||||||
|
from watchdog.events import FileSystemEventHandler
|
||||||
|
|
||||||
|
class MyEventHandler(FileSystemEventHandler):
|
||||||
|
def on_modified(self, event):
|
||||||
|
print(f"File modified: {event.src_path}")
|
||||||
|
|
||||||
|
def on_created(self, event):
|
||||||
|
print(f"File created: {event.src_path}")
|
||||||
|
|
||||||
|
def on_deleted(self, event):
|
||||||
|
print(f"File deleted: {event.src_path}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
event_handler = MyEventHandler()
|
||||||
|
observer = Observer()
|
||||||
|
path = '.' # 要监控的目录
|
||||||
|
observer.schedule(event_handler, path, recursive=True)
|
||||||
|
observer.start()
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
time.sleep(1)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
observer.stop()
|
||||||
|
observer.join()
|
||||||
|
```
|
||||||
|
代码解释
|
||||||
|
|
||||||
|
- 定义一个继承自 FileSystemEventHandler 的类 MyEventHandler,并重写 on_modified、on_created 和 on_deleted 方法,用于处理文件修改、创建和删除事件。
|
||||||
|
- 创建一个 Observer 对象,并将事件处理程序和要监控的目录传递给它。
|
||||||
|
- 启动观察者,并进入一个无限循环,直到用户按下 Ctrl+C 停止程序。
|
||||||
|
|
||||||
|
watchdog 库的优点是实时性好,能够及时响应文件系统的变化,并且支持多种操作系统。因此,推荐使用 watchdog 库来监控文件目录变化。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 4 - hanxi
|
||||||
|
|
||||||
|
@foxfire881 谢谢,有空我实现一下吧。需要做个队列延迟处理的,要不然拷贝一堆文件的时候会刷新多次。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 5 - foxfire881
|
||||||
|
|
||||||
|
刷新多次好像也影响不大,xiaomusic刷新列表挺快的,我的音乐目录有大概有100G左右近5000个mp3、flac音乐,几乎是秒刷,点一下按钮瞬间就更新了。
|
||||||
|
|
||||||
|
所以是不是也可以另外开个线程在后台定时每隔一段时间(用户可设置)自动刷新一下列表,这样实现快速、简单点。
|
||||||
|
|
||||||
|
队列方案更完美,实现也更复杂些,可以作远期目标持续优化。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 6 - foxfire881
|
||||||
|
|
||||||
|
@hanxi 另外还有一个问题想请教下如何解决?
|
||||||
|
|
||||||
|
一首歌曲往往有多个版本,例如王菲、梁静茹都唱过《红豆》:
|
||||||
|
|
||||||
|
/music/王菲/红豆.mp3
|
||||||
|
/music/梁静茹/红豆.mp3
|
||||||
|
/music/张惠妹/红豆生南国.mp3
|
||||||
|
/music/其他/张学友-红豆.mp3
|
||||||
|
|
||||||
|
如果我想听梁静茹的《红豆》,应该说什么指令?
|
||||||
|
“小爱同学,播放本地歌曲 红豆” —— 这个指令好像只能定位到第一个匹配到的文件,后面的文件都忽略了。
|
||||||
|
|
||||||
|
“小爱同学,播放本地歌曲 梁静茹 红豆” —— 这个指令无效,小爱同学没有反应。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 7 - hanxi
|
||||||
|
|
||||||
|
> [@hanxi](https://github.com/hanxi) 另外还有一个问题想请教下如何解决?
|
||||||
|
>
|
||||||
|
> 一首歌曲往往有多个版本,例如王菲、梁静茹都唱过《红豆》:
|
||||||
|
>
|
||||||
|
> /music/王菲/红豆.mp3 /music/梁静茹/红豆.mp3 /music/张惠妹/红豆生南国.mp3 /music/其他/张学友-红豆.mp3
|
||||||
|
>
|
||||||
|
> 如果我想听梁静茹的《红豆》,应该说什么指令? “小爱同学,播放本地歌曲 红豆” —— 这个指令好像只能定位到第一个匹配到的文件,后面的文件都忽略了。
|
||||||
|
>
|
||||||
|
> “小爱同学,播放本地歌曲 梁静茹 红豆” —— 这个指令无效,小爱同学没有反应。
|
||||||
|
|
||||||
|
文件名需要唯一,像张学友-红豆一样命名。然后说张学友红豆就行。相同的文件名是会覆盖的,只有一首生效。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 8 - foxfire881
|
||||||
|
|
||||||
|
> > [@hanxi](https://github.com/hanxi) 另外还有一个问题想请教下如何解决?
|
||||||
|
> > 一首歌曲往往有多个版本,例如王菲、梁静茹都唱过《红豆》:
|
||||||
|
> > /music/王菲/红豆.mp3 /music/梁静茹/红豆.mp3 /music/张惠妹/红豆生南国.mp3 /music/其他/张学友-红豆.mp3
|
||||||
|
> > 如果我想听梁静茹的《红豆》,应该说什么指令? “小爱同学,播放本地歌曲 红豆” —— 这个指令好像只能定位到第一个匹配到的文件,后面的文件都忽略了。
|
||||||
|
> > “小爱同学,播放本地歌曲 梁静茹 红豆” —— 这个指令无效,小爱同学没有反应。
|
||||||
|
>
|
||||||
|
> 文件名需要唯一,像张学友-红豆一样命名。然后说张学友红豆就行。相同的文件名是会覆盖的,只有一首生效。
|
||||||
|
|
||||||
|
原来如此。改文件名有点麻烦,能否做到把关键字搜出来的结果作为一个播放列表顺序播放?例如 “小爱同学,播放本地音乐 红豆”,然后 xiaomusic 把上述所有包含 “红豆” 关键字的歌曲全部搜索出来,作为一个临时播放列表顺序播放?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 9 - hanxi
|
||||||
|
|
||||||
|
可以用 music tag web 工具自动改名。不能同名是最早的基础设定,改动比较大,现在不好改了。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 10 - foxfire881
|
||||||
|
|
||||||
|
> 可以用 music tag web 工具自动改名。不能同名是最早的基础设定,改动比较大,现在不好改了。
|
||||||
|
|
||||||
|
关键是网上下载的很多mp3、flac文件没有 tag 或者 tag 不规范,要重命名得先把 tag 整理一遍,那个工程量就太太太大了
|
||||||
|
|
||||||
|
没关系,先这样用着吧,不着急。以后有空了还是希望可以重构一下,解决同名文件的问题。
|
||||||
|
|
||||||
|
或者也可以考虑下不一定要严格按照文件名去匹配,可以把文件路径、目录名也包含在模糊匹配规则里面,这样也可以大大提高命中准确率。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 11 - AisukaYuki
|
||||||
|
|
||||||
|
其实你可以用定时任务定时刷新列表。暂时先实现一下,隔几分钟刷新一下。
|
||||||
|
```
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"expression": "*/10 * * * *",
|
||||||
|
"name": "refresh_music_list"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 评论 12 - newmanfung
|
||||||
|
|
||||||
|
> > 可以用 music tag web 工具自动改名。不能同名是最早的基础设定,改动比较大,现在不好改了。
|
||||||
|
>
|
||||||
|
> 关键是网上下载的很多mp3、flac文件没有 tag 或者 tag 不规范,要重命名得先把 tag 整理一遍,那个工程量就太太太大了
|
||||||
|
>
|
||||||
|
> 没关系,先这样用着吧,不着急。以后有空了还是希望可以重构一下,解决同名文件的问题。
|
||||||
|
>
|
||||||
|
> 或者也可以考虑下不一定要严格按照文件名去匹配,可以把文件路径、目录名也包含在模糊匹配规则里面,这样也可以大大提高命中准确率。
|
||||||
|
|
||||||
|
用mp3tag,通过网上的的歌曲meta数据自动更改tag的,之前几十张专辑的时候大概3个小时就搞定了。现在我都弄了几百张专辑了。
|
||||||
|
|
||||||
|
---
|
||||||
|
[链接到 GitHub Issue](https://github.com/hanxi/xiaomusic/issues/378)
|
||||||
@@ -4,7 +4,7 @@ title: 微信交流群二维码
|
|||||||
|
|
||||||
# 微信交流群二维码
|
# 微信交流群二维码
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
如果你刚好在买流量卡,可以在我的微信卡店里看看有没有合适的。
|
如果你刚好在买流量卡,可以在我的微信卡店里看看有没有合适的。
|
||||||

|

|
||||||
|
|||||||
Reference in New Issue
Block a user