feat(reader): the channels a Takeout history shows watched but not followed

The import asks YouTube how long the watched videos of the candidate
channels are (five or more watched, none the user follows, blocked, put
out or owns), keeps the length on the Takeout row and names the channels
that make the list: five videos of five minutes or more. The shorts job
asks what an import could not. A channel's counted videos come in as an
exploration's when its list is opened, ready to play; a channel can be put
out of the list and back.
This commit is contained in:
2026-10-23 23:45:54 +02:00
parent 84af92aa29
commit bd2340c204
10 changed files with 895 additions and 16 deletions
+3
View File
@@ -45,6 +45,7 @@ UNIT_MODELS = {
"SavedView",
"ComfortPin",
"TakeoutItem",
"TakeoutChannelDismissal",
"VideoUnmark",
"Tag",
"ChannelTag",
@@ -367,6 +368,8 @@ UNIT_COMMITS = {
"reader/takeout.py:run_import",
# Run inside the Shorts job, on its session: each user's waiting rows land on their own.
"reader/takeout.py:apply_waiting",
# Inside either of those: the lengths YouTube gave land before the channels are asked for.
"reader/takeout.py:_channel_list",
},
# The catalog's ingest jobs commit per page or batch, a YouTube call between each: a page
# fetched and stored is not lost when the next call fails, and an enrich that fails rolls back