fix video stats indexing and serializing
This commit is contained in:
parent
e5ee808473
commit
9d4ecdf9b7
|
|
@ -55,6 +55,7 @@ class Command(BaseCommand):
|
|||
self._mig_set_channel_tabs()
|
||||
self._mig_set_video_channel_tabs()
|
||||
self._mig_fix_playlist_description()
|
||||
self._mig_fix_missing_stats()
|
||||
|
||||
def _make_folders(self):
|
||||
"""make expected cache folders"""
|
||||
|
|
@ -329,6 +330,29 @@ class Command(BaseCommand):
|
|||
},
|
||||
)
|
||||
|
||||
def _mig_fix_missing_stats(self) -> None:
|
||||
"""migrate from 0.5.8 to 0.5.9, fix missing stats values"""
|
||||
fields = [
|
||||
"like_count",
|
||||
"average_rating",
|
||||
"view_count",
|
||||
"dislike_count",
|
||||
]
|
||||
for field in fields:
|
||||
self._run_migration(
|
||||
index_name="ta_video",
|
||||
desc=f"fix missing stats field {field}",
|
||||
query={
|
||||
"bool": {
|
||||
"must_not": [{"exists": {"field": f"stats.{field}"}}]
|
||||
}
|
||||
},
|
||||
script={
|
||||
"source": f"ctx._source.stats.{field} = 0",
|
||||
"lang": "painless",
|
||||
},
|
||||
)
|
||||
|
||||
def _run_migration(
|
||||
self, index_name: str, desc: str, query: dict, script: dict
|
||||
):
|
||||
|
|
|
|||
|
|
@ -44,10 +44,10 @@ class SponsorBlockSerializer(serializers.Serializer):
|
|||
class StatsSerializer(serializers.Serializer):
|
||||
"""serialize stats"""
|
||||
|
||||
like_count = serializers.IntegerField(required=False)
|
||||
average_rating = serializers.FloatField(required=False)
|
||||
view_count = serializers.IntegerField(required=False)
|
||||
dislike_count = serializers.IntegerField(required=False)
|
||||
like_count = serializers.IntegerField()
|
||||
average_rating = serializers.FloatField()
|
||||
view_count = serializers.IntegerField()
|
||||
dislike_count = serializers.IntegerField()
|
||||
|
||||
|
||||
class StreamItemSerializer(serializers.Serializer):
|
||||
|
|
|
|||
|
|
@ -255,10 +255,10 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle):
|
|||
def _add_stats(self):
|
||||
"""add stats dicst to json_data"""
|
||||
stats = {
|
||||
"view_count": self.youtube_meta.get("view_count", 0),
|
||||
"like_count": self.youtube_meta.get("like_count", 0),
|
||||
"dislike_count": self.youtube_meta.get("dislike_count", 0),
|
||||
"average_rating": self.youtube_meta.get("average_rating", 0),
|
||||
"view_count": self.youtube_meta.get("view_count") or 0,
|
||||
"like_count": self.youtube_meta.get("like_count") or 0,
|
||||
"dislike_count": self.youtube_meta.get("dislike_count") or 0,
|
||||
"average_rating": self.youtube_meta.get("average_rating") or 0,
|
||||
}
|
||||
self.json_data.update({"stats": stats})
|
||||
|
||||
|
|
@ -379,8 +379,8 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle):
|
|||
return
|
||||
|
||||
dislikes = {
|
||||
"dislike_count": result.get("dislikes", 0),
|
||||
"average_rating": result.get("rating", 0),
|
||||
"dislike_count": result.get("dislikes") or 0,
|
||||
"average_rating": result.get("rating") or 0,
|
||||
}
|
||||
self.json_data["stats"].update(dislikes)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue