From d86a9c794b1fca471888e961a549e378439d994c Mon Sep 17 00:00:00 2001 From: cosven Date: Sat, 30 Nov 2024 18:01:28 +0800 Subject: [PATCH] show rcmd videos in rec_a_collection_of_videos --- fuo_bilibili/model.py | 20 +++++++++++++++++++- fuo_bilibili/provider.py | 6 ++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/fuo_bilibili/model.py b/fuo_bilibili/model.py index 7282533..a5554c3 100644 --- a/fuo_bilibili/model.py +++ b/fuo_bilibili/model.py @@ -13,7 +13,8 @@ FavoriteSeasonResourceResponse, HistoryLaterVideoResponse, HomeDynamicVideoResponse, UserInfoResponse, \ UserBestVideoResponse, UserVideoResponse, AudioFavoriteSongsResponse, AudioFavoriteListResponse, AudioPlaylist, \ AudioPlaylistSong, VideoHotCommentsResponse, SearchResultUser, LiveFeedListResponse, SearchResultLiveRoom, \ - SearchResultMedia, MediaGetListResponse, VideoWeeklyListResponse, VideoMostPopularResponse + SearchResultMedia, MediaGetListResponse, VideoWeeklyListResponse, VideoMostPopularResponse, \ + HomeRecommendVideosResponse from fuo_bilibili.util import format_timedelta_to_hms PROVIDER_ID = __identifier__ @@ -489,6 +490,23 @@ def create_live_model(cls, live: LiveFeedListResponse.LiveFeedListResponseData.L cover=live.cover, ) + @classmethod + def create_recommend_video_model(cls, result: HomeRecommendVideosResponse.HomeRecommendVideosResponseData.Video): + return VideoModel( + source=PROVIDER_ID, + identifier=result.bvid, + title=get_text_from_html(result.title), + artists=[BriefArtistModel( + source=PROVIDER_ID, + identifier=result.owner.mid, + name=result.owner.name + )], + duration=result.duration.total_seconds(), + cover=wrap_pic(result.pic), + play_count=result.stat.view, + ) + + @classmethod def create_popular_video_model(cls, result: VideoMostPopularResponse.VideoMostPopularResponseData.PopularVideo): return VideoModel( diff --git a/fuo_bilibili/provider.py b/fuo_bilibili/provider.py index 254200c..fe21383 100644 --- a/fuo_bilibili/provider.py +++ b/fuo_bilibili/provider.py @@ -635,8 +635,10 @@ def g(): return SequentialReader(g(), total) def rec_a_collection_of_videos(self): - resp = self._api.video_most_popular() - return [BVideoModel.create_popular_video_model(v) for v in resp.data.list] + if self.has_current_user(): + resp = self._api.home_recommend_videos(HomeRecommendVideosRequest(ps=12)) + return [BVideoModel.create_recommend_video_model(v) for v in resp.data.item] + return [] @property def identifier(self):