mirror of
https://github.com/hanxi/xiaomusic.git
synced 2025-12-13 15:58:13 +08:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
28797edc7c | ||
|
|
be1a643071 | ||
|
|
ee6b9778ac | ||
|
|
881c34bcb5 | ||
|
|
c22fc99235 | ||
|
|
0874efe58b |
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "xiaomusic"
|
name = "xiaomusic"
|
||||||
version = "0.1.45"
|
version = "0.1.48"
|
||||||
description = "Play Music with xiaomi AI speaker"
|
description = "Play Music with xiaomi AI speaker"
|
||||||
authors = [
|
authors = [
|
||||||
{name = "涵曦", email = "im.hanxi@gmail.com"},
|
{name = "涵曦", email = "im.hanxi@gmail.com"},
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
__version__ = "0.1.45"
|
__version__ = "0.1.48"
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ class Config:
|
|||||||
) # "bilisearch:" or "ytsearch:"
|
) # "bilisearch:" or "ytsearch:"
|
||||||
ffmpeg_location: str = os.getenv("XIAOMUSIC_FFMPEG_LOCATION", "./ffmpeg/bin")
|
ffmpeg_location: str = os.getenv("XIAOMUSIC_FFMPEG_LOCATION", "./ffmpeg/bin")
|
||||||
active_cmd: str = os.getenv("XIAOMUSIC_ACTIVE_CMD", "play,random_play")
|
active_cmd: str = os.getenv("XIAOMUSIC_ACTIVE_CMD", "play,random_play")
|
||||||
|
exclude_dirs: str = os.getenv("XIAOMUSIC_EXCLUDE_DIRS", "@eaDir")
|
||||||
|
|
||||||
def __post_init__(self) -> None:
|
def __post_init__(self) -> None:
|
||||||
if self.proxy:
|
if self.proxy:
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ class XiaoMusic:
|
|||||||
self.search_prefix = config.search_prefix
|
self.search_prefix = config.search_prefix
|
||||||
self.ffmpeg_location = config.ffmpeg_location
|
self.ffmpeg_location = config.ffmpeg_location
|
||||||
self.active_cmd = config.active_cmd.split(",")
|
self.active_cmd = config.active_cmd.split(",")
|
||||||
|
self.exclude_dirs = set(config.exclude_dirs.split(","))
|
||||||
|
|
||||||
# 下载对象
|
# 下载对象
|
||||||
self.download_proc = None
|
self.download_proc = None
|
||||||
@@ -347,6 +348,7 @@ class XiaoMusic:
|
|||||||
self._all_music = {}
|
self._all_music = {}
|
||||||
all_music_by_dir = {}
|
all_music_by_dir = {}
|
||||||
for root, dirs, filenames in os.walk(self.music_path):
|
for root, dirs, filenames in os.walk(self.music_path):
|
||||||
|
dirs[:] = [d for d in dirs if d not in self.exclude_dirs]
|
||||||
self.log.debug("root:%s dirs:%s music_path:%s", root, dirs, self.music_path)
|
self.log.debug("root:%s dirs:%s music_path:%s", root, dirs, self.music_path)
|
||||||
dir_name = os.path.basename(root)
|
dir_name = os.path.basename(root)
|
||||||
if self.music_path == root:
|
if self.music_path == root:
|
||||||
@@ -523,17 +525,35 @@ class XiaoMusic:
|
|||||||
return ("stop", {})
|
return ("stop", {})
|
||||||
return (None, None)
|
return (None, None)
|
||||||
|
|
||||||
|
# 判断是否播放一下私募歌曲
|
||||||
|
def check_play_next(self):
|
||||||
|
# 当前没我在播放的歌曲
|
||||||
|
if self.cur_music == "":
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
filename = self.get_filename(self.cur_music)
|
||||||
|
# 当前播放的歌曲不存在了
|
||||||
|
if len(filename) <= 0:
|
||||||
|
return True
|
||||||
|
pass
|
||||||
|
return False
|
||||||
|
|
||||||
# 播放歌曲
|
# 播放歌曲
|
||||||
async def play(self, **kwargs):
|
async def play(self, **kwargs):
|
||||||
self._playing = True
|
self._playing = True
|
||||||
parts = kwargs["arg1"].split("|")
|
parts = kwargs["arg1"].split("|")
|
||||||
search_key = parts[0]
|
search_key = parts[0]
|
||||||
name = parts[1] if len(parts) > 1 else search_key
|
name = parts[1] if len(parts) > 1 else search_key
|
||||||
if search_key == "" and name == "":
|
|
||||||
await self.play_next()
|
|
||||||
return
|
|
||||||
if name == "":
|
if name == "":
|
||||||
name = search_key
|
name = search_key
|
||||||
|
|
||||||
|
if search_key == "" and name == "":
|
||||||
|
if self.check_play_next():
|
||||||
|
await self.play_next()
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
name = self.cur_music
|
||||||
|
|
||||||
self.log.debug("play. search_key:%s name:%s", search_key, name)
|
self.log.debug("play. search_key:%s name:%s", search_key, name)
|
||||||
filename = self.get_filename(name)
|
filename = self.get_filename(name)
|
||||||
|
|
||||||
@@ -625,7 +645,6 @@ class XiaoMusic:
|
|||||||
if self._next_timer:
|
if self._next_timer:
|
||||||
self._next_timer.cancel()
|
self._next_timer.cancel()
|
||||||
self.log.info("定时器已取消")
|
self.log.info("定时器已取消")
|
||||||
self.cur_music = ""
|
|
||||||
await self.force_stop_xiaoai()
|
await self.force_stop_xiaoai()
|
||||||
|
|
||||||
async def stop_after_minute(self, **kwargs):
|
async def stop_after_minute(self, **kwargs):
|
||||||
|
|||||||
Reference in New Issue
Block a user