示例:动态转发抽奖

  1. """
  2. 请注意,获取转发数量有限制,上限大概在 540 个左右
  3. 若转发人数超过这个数字,将产生不公平,请勿使用该脚本
  4. """
  5. from bilibili_api import dynamic, sync
  6. import random
  7. # 动态 ID
  8. DYNAMIC_ID = 0
  9. # 抽取人数
  10. COUNT = 3
  11. async def main():
  12. # 初始化
  13. dy = dynamic.Dynamic(DYNAMIC_ID)
  14. # 存储所有转发信息
  15. reposters = []
  16. # 存储下一页起始位置
  17. offset = "0"
  18. while True:
  19. # 循环拉取动态
  20. r = await dy.get_reposts(offset)
  21. # 存入
  22. reposters.extend(r['items'])
  23. print(f'拉取转发信息中 {len(reposters)} / {r["total"]}')
  24. if r['has_more'] != 1:
  25. # 无更多,退出循环
  26. break
  27. # 设置下一页起始位置
  28. offset = r['offset']
  29. # 中奖名单
  30. lucky_dogs = []
  31. for i in range(COUNT):
  32. # 随机取
  33. index = random.randint(0, len(reposters) - 1)
  34. lucky_dogs.append(reposters[index])
  35. # 取完后删除,以免重复
  36. reposters.remove(reposters[index])
  37. # 打印中奖名单
  38. print('中奖名单:')
  39. for p in lucky_dogs:
  40. print(f'{p["desc"]["user_profile"]["info"]["uname"]} https://space.bilibili.com/{p["desc"]["user_profile"]["info"]["uid"]}')
  41. sync(main())