add new bili video collection url format

This commit is contained in:
aynakeya
2025-03-27 22:40:50 +08:00
parent 80819bdcd5
commit 6a9b5d60c3
2 changed files with 26 additions and 3 deletions

View File

@@ -25,6 +25,7 @@ func fetchParsedResult[P dphttp.ParserResultType](requester dphttp.IRequester, r
}
var playlistCollectionRegex = regexp.MustCompile(`space.bilibili.com/(\d+)/channel/collectiondetail\?sid=(\d+)`)
var playlistCollection1Regex = regexp.MustCompile(`space\.bilibili\.com/(\d+)/lists/(\d+)`)
var playlistFavRegex = regexp.MustCompile(`space.bilibili.com/(\d+)/favlist\?fid=(\d+)`)
func makePlaylistId(ptype string, id string) string {
@@ -50,6 +51,13 @@ func (n *BilibiliVideo) MatchPlaylist(uri string) (miaosic.MetaData, bool) {
Identifier: makePlaylistId(playlistCollection, matches[2]),
}, true
}
if playlistCollection1Regex.MatchString(uri) {
matches := playlistCollection1Regex.FindStringSubmatch(uri)
return miaosic.MetaData{
Provider: n.GetName(),
Identifier: makePlaylistId(playlistCollection, matches[2]),
}, true
}
if playlistFavRegex.MatchString(uri) {
matches := playlistFavRegex.FindStringSubmatch(uri)
return miaosic.MetaData{

View File

@@ -14,6 +14,10 @@ func TestBilibiliVideo_MatchPlaylist_Ok(t *testing.T) {
require.True(t, ok)
require.Equal(t, api.GetName(), meta.Provider)
require.Equal(t, playlistCollection+"_1889103", meta.Identifier)
meta, ok = api.MatchPlaylist("https://space.bilibili.com/346563107/lists/262019?type=season")
require.True(t, ok)
require.Equal(t, api.GetName(), meta.Provider)
require.Equal(t, playlistCollection+"_262019", meta.Identifier)
}
func TestBilibiliVideo_MatchPlaylist_Fail(t *testing.T) {
@@ -47,7 +51,7 @@ func TestBilibiliVideo_GetPlaylist_Fav(t *testing.T) {
require.NoError(t, err)
require.Equal(t, meta, playlist.Meta)
require.Equal(t, "AMV", playlist.Title)
require.GreaterOrEqual(t, len(playlist.Medias), 12)
require.GreaterOrEqual(t, 12, len(playlist.Medias))
}
func TestBilibiliVideo_GetPlaylist_Fav2(t *testing.T) {
@@ -58,7 +62,7 @@ func TestBilibiliVideo_GetPlaylist_Fav2(t *testing.T) {
require.NoError(t, err)
require.Equal(t, meta, playlist.Meta)
require.Equal(t, "歌", playlist.Title)
require.GreaterOrEqual(t, len(playlist.Medias), 26)
require.GreaterOrEqual(t, 26, len(playlist.Medias))
}
func TestBilibiliVideo_GetPlaylist_Fav3(t *testing.T) {
@@ -69,5 +73,16 @@ func TestBilibiliVideo_GetPlaylist_Fav3(t *testing.T) {
require.NoError(t, err)
require.Equal(t, meta, playlist.Meta)
require.Equal(t, "Vocaloid Music", playlist.Title)
require.Equal(t, len(playlist.Medias), 881)
require.Equal(t, 876, len(playlist.Medias))
}
func TestBilibiliVideo_GetPlaylist_Coll1(t *testing.T) {
uri := "https://space.bilibili.com/346563107/channel/collectiondetail?sid=1889103&ctype=0"
meta, ok := api.MatchPlaylist(uri)
require.True(t, ok)
playlist, err := api.GetPlaylist(meta)
require.NoError(t, err)
require.Equal(t, meta, playlist.Meta)
require.Equal(t, "合集·巴以冲突-世界在关注什么?", playlist.Title)
require.Equal(t, 876, 95)
}