feat(up): capture follower snapshots at ingest and backfill history
This commit is contained in:
1 parent
4942d1d161
commit
519fc39fca
8 files changed
+401
-14
No files matched your search
@@ -45,9 +45,17 @@ class FakeFavTransport:
|
||||
self.omit_ids_data = omit_ids_data
|
||||
self.ids_calls = []
|
||||
self.info_calls = []
|
||||
self.relation_calls = []
|
||||
|
||||
def request(self, method, url, headers, data=None, timeout=30):
|
||||
query = urllib.parse.parse_qs(urllib.parse.urlparse(url).query)
|
||||
if "/x/relation/stat" in url:
|
||||
mid = int(query["vmid"][0])
|
||||
self.relation_calls.append(mid)
|
||||
return http_json({
|
||||
"code": 0, "message": "0", "ttl": 1,
|
||||
"data": {"mid": mid, "following": 5, "follower": 1000 + mid},
|
||||
})
|
||||
if "/x/v3/fav/resource/ids" in url:
|
||||
media_id = int(query["media_id"][0])
|
||||
self.ids_calls.append(media_id)
|
||||
@@ -165,6 +173,13 @@ def test_initial_import_and_incremental_skip():
|
||||
assert repo.get_video(1104)["bvid"] == "BV1104"
|
||||
assert repo.folder_active_aids(F1) == {1101, 1102, 1103, 1104}
|
||||
assert repo.is_blacklisted(999)
|
||||
# 新入库视频记录入库时粉丝数;失效视频不再采集
|
||||
assert summary.followers_updated == 2
|
||||
assert summary.followers_failed == 0
|
||||
assert repo.get_video(1101)["up_follower"] == 1100
|
||||
assert repo.get_video(1101)["up_follower_backfilled"] == 0
|
||||
assert repo.get_video(1102)["up_follower"] == 1999
|
||||
assert sorted(transport.relation_calls) == [100, 999]
|
||||
|
||||
folder = repo.get_folder(F1)
|
||||
assert folder.media_count == 4
|
||||
@@ -173,10 +188,12 @@ def test_initial_import_and_incremental_skip():
|
||||
# 6 小时内再次运行:没有新增,不请求 infos
|
||||
clock[0] += 60
|
||||
info_before = len(transport.info_calls)
|
||||
relation_before = len(transport.relation_calls)
|
||||
summary2 = service.run()
|
||||
assert summary2.added == 0
|
||||
assert summary2.refreshed == 0
|
||||
assert len(transport.info_calls) == info_before
|
||||
assert len(transport.relation_calls) == relation_before
|
||||
assert summary2.folders[0].full_refresh is False
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
Reference in new issue
Block a user