python分数由高至低排序_通过Python实现Bilibili用户追番信息统计(分数排序、好评率统计)...

简介:

使用bilibili_api外部库,通过输入用户的uid从而读取追番情况,将所追番剧以从高到低的分数排序展示,评价人数不足的番剧放至最后。并显示所追番剧的优质率(大于等于9.5),良好率(大于等于8)。5ca5f088d4f5648cb6aa0b03a5473418.png

作者介绍:

爱偶像大师,爱LoveLive!同时也是一名普通的大学生~~近来正在学习Python等知识。

欢迎关注我的个人网站:https://www.fyf99170.top

欢迎关注我的B站账号:UID 32291160 萌萌哒汪帕斯4b9e904712c9a764f5efc636f08cfbe7.png

5ca5f088d4f5648cb6aa0b03a5473418.png

功能介绍:

今天在逛GitHub的时候,看到了由Passkou创建的bilibili_api的项目,该项目的介绍为:这是一个用Python写的调用 Bilibili 各种API的库,范围涵盖视频、音频、直播、动态、专栏、用户、番剧等。你可以使用很简短的代码去调用API,而不需要自己去寻找API,指定各种参数。

该外部库的功能非常强大,因此我在该库基础上进行了研究。在本文中,我仅使用了该库的user模块,使用该模块,通过输入用户的uid从而读取追番情况,将所追番剧以从高到低的分数排序展示,评价人数不足的番剧放至最后。并显示所追番剧的优质率(大于等于9.5),良好率(大于等于8)。

代码节选如下图所示,具体代码见文末:d1f38f4e9c1aa1e07208376eb61810d6.png

5ca5f088d4f5648cb6aa0b03a5473418.png

运行结果:

以我的账号uid32291160作为示例进行展示:44d186efe6efb60abe4ae8948d8f8b91.png

b47bb586b04dbfc1e3e9bd5882707f1b.png

82b662764c75e6ea2a00100b21f999d5.png

从上面三图可以看出,可以清晰的展示番剧的名称和评分,分数由高到低排序。追番数目、优质番剧率和良好番剧率也能体现。当然,我们可以观察其他用户的追番情况,以uid2,bishi为示例:ba8d94013db7f4e3e84bf92909c9895b.png

注意:仅可以用户在隐私设置中打开公开追番列表才能够获取到信息,我们输入uid1发现无法读取相应信息。af5255d69ce10b02e74ba4753fdce7f6.png

5ca5f088d4f5648cb6aa0b03a5473418.png

可执行文件下载(exe):

链接:https://pan.baidu.com/s/1wwbCnBOnJ6xkxkyWJjEjDA

提取码:wyjf

解压后打开exe文件即可使用。5ca5f088d4f5648cb6aa0b03a5473418.png

代码展示:

from bilibili_api import user  # 调用bilibili_api

def take_second(elem):

"""强制对第二个元素排序"""

return elem[1]

def video_load(uid):

"""用户视频信息读取"""

total = 0

vivid_num = 0

videos = []

score_video_list = []

no_score_video_list = []

user_generator = user.get_bangumi_g(uid)

for video in user_generator:

videos.append(video)

for bangumi in videos:

title = bangumi["title"]

score_pre = bangumi.get("rating", "无效")

total += 1

if score_pre != "无效":

score = score_pre["score"]

vivid_num += 1

score_video_list.append((title, float(score)))

else:

no_score_video_list.append((title, "暂无评分"))

return total, vivid_num, score_video_list, no_score_video_list

def score_soft(score_list):

"""按照分数对番剧排序"""

score_list.sort(key=take_second, reverse=True)

return score_list

def percent_determine(score_list, no_score_list):

"""优质率确定"""

perfect_num = 0

good_num = 0

bad_num = 0

for i in score_list:

print(i[0], ":", i[1])

if i[1] >= 9.5:

perfect_num += 1

elif 8 <= i[1] < 9.5:

good_num += 1

else:

bad_num += 1

for i in no_score_list:

print(i[0], ":", i[1])

return perfect_num, good_num

def main():

try:

uid = int(input("请输入uid:"))

total, vivid_num, score_video_list, no_score_video_list = video_load(uid)

score_video_list = score_soft(score_video_list)

perfect_num, good_num = percent_determine(score_video_list, no_score_video_list)

print("\n用户uid:", uid, "的追番情况如下:")

print("共追番剧数:", total, "有评分番剧数:", vivid_num)

print("优质番剧率:", round((perfect_num / vivid_num) * 100, 2), "%")

print("良好番剧率:", round(((good_num + perfect_num) / vivid_num) * 100, 2), "%")

except Exception as m:

print(m)

input("按下enter以结束程序")

main()5ca5f088d4f5648cb6aa0b03a5473418.png

结语/致谢:

本项目使用了外部库bilibili_api,作者为Passkou,对此表示感谢。该外部库GitHub链接为https://github.com/Passkou/bilibili_api。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值