From 4ad6bcc636786ad866c54801273836810bf46fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B6=B5=E6=9B=A6?= Date: Thu, 20 Jun 2024 04:12:23 +0000 Subject: [PATCH] =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=88=97=E8=A1=A8=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E6=98=BE=E7=A4=BA=EF=BC=8C=E4=BF=AE=E5=A4=8D=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F=E6=92=AD=E6=94=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xiaomusic/static/app.js | 22 +++++++++++++++++++++- xiaomusic/xiaomusic.py | 5 +++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/xiaomusic/static/app.js b/xiaomusic/static/app.js index 048aed4..0ee9846 100644 --- a/xiaomusic/static/app.js +++ b/xiaomusic/static/app.js @@ -38,7 +38,8 @@ $(function(){ $('#music_list').change(function() { const selectedValue = $(this).val(); $('#music_name').empty(); - $.each(data[selectedValue], function(index, item) { + const sorted_musics = data[selectedValue].sort(custom_sort_key); + $.each(sorted_musics, function(index, item) { $('#music_name').append($('').val(item).text(item)); }); }); @@ -163,4 +164,23 @@ $(function(){ setInterval(() => { get_playing_music(); }, 3000); + + function custom_sort_key(a, b) { + // 使用正则表达式提取数字前缀 + const numericPrefixA = a.match(/^(\d+)/) ? parseInt(a.match(/^(\d+)/)[1], 10) : null; + const numericPrefixB = b.match(/^(\d+)/) ? parseInt(b.match(/^(\d+)/)[1], 10) : null; + + // 如果两个键都有数字前缀,则按数字大小排序 + if (numericPrefixA !== null && numericPrefixB !== null) { + return numericPrefixA - numericPrefixB; + } + + // 如果一个键有数字前缀而另一个没有,则有数字前缀的键排在前面 + if (numericPrefixA !== null) return -1; + if (numericPrefixB !== null) return 1; + + // 如果两个键都没有数字前缀,则按照常规字符串排序 + return a.localeCompare(b); + } + }); diff --git a/xiaomusic/xiaomusic.py b/xiaomusic/xiaomusic.py index faea3c0..173f226 100644 --- a/xiaomusic/xiaomusic.py +++ b/xiaomusic/xiaomusic.py @@ -392,9 +392,10 @@ class XiaoMusic: # 歌曲排序或者打乱顺序 def _gen_play_list(self): if self.play_type == PLAY_TYPE_RND: - self._play_list.sort(key=custom_sort_key) - else: random.shuffle(self._play_list) + else: + self._play_list.sort(key=custom_sort_key) + self.log.debug("play_list:%s", self._play_list) # 把下载的音乐加入播放列表 def add_download_music(self, name):