|
@@ -18,7 +18,7 @@ import requests |
|
|
|
|
|
|
|
|
# TODO: “何もしなぃ” を意味する None と区別可能にするため,NULL クラスを別途用意すること |
|
|
# TODO: “何もしなぃ” を意味する None と区別可能にするため,NULL クラスを別途用意すること |
|
|
DbNull = None |
|
|
DbNull = None |
|
|
DbNullType = None |
|
|
|
|
|
|
|
|
DbNullType = type (None) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VideoSearchParam (TypedDict): |
|
|
class VideoSearchParam (TypedDict): |
|
@@ -33,7 +33,7 @@ class VideoSearchParam (TypedDict): |
|
|
class VideoResult (TypedDict): |
|
|
class VideoResult (TypedDict): |
|
|
contentId: str |
|
|
contentId: str |
|
|
title: str |
|
|
title: str |
|
|
tags: list[str] |
|
|
|
|
|
|
|
|
tags: str |
|
|
description: str |
|
|
description: str |
|
|
viewCounter: int |
|
|
viewCounter: int |
|
|
startTime: str |
|
|
startTime: str |
|
@@ -91,6 +91,7 @@ def update_tables ( |
|
|
) -> None: |
|
|
) -> None: |
|
|
video_ids: list[int] = [] |
|
|
video_ids: list[int] = [] |
|
|
for datum in api_data: |
|
|
for datum in api_data: |
|
|
|
|
|
tag_names = datum['tags'].split () |
|
|
video = VideoDto (code = datum['contentId'], |
|
|
video = VideoDto (code = datum['contentId'], |
|
|
title = datum['title'], |
|
|
title = datum['title'], |
|
|
description = datum['description'], |
|
|
description = datum['description'], |
|
@@ -107,12 +108,12 @@ def update_tables ( |
|
|
for vt in video_tags: |
|
|
for vt in video_tags: |
|
|
tag = tag_dao.find (vt.tag_id) |
|
|
tag = tag_dao.find (vt.tag_id) |
|
|
if (tag is not None |
|
|
if (tag is not None |
|
|
and (tag.name not in datum['tags']) |
|
|
|
|
|
|
|
|
and (tag.name not in tag_names) |
|
|
and (tag.id_ is not None)): |
|
|
and (tag.id_ is not None)): |
|
|
tag_ids.append (tag.id_) |
|
|
tag_ids.append (tag.id_) |
|
|
video_tag_dao.untag_all (video.id_, tag_ids, now) |
|
|
video_tag_dao.untag_all (video.id_, tag_ids, now) |
|
|
tags: list[TagDto] = [] |
|
|
tags: list[TagDto] = [] |
|
|
for tag_name in datum['tags']: |
|
|
|
|
|
|
|
|
for tag_name in tag_names: |
|
|
tag = tag_dao.fetch_by_name (tag_name) |
|
|
tag = tag_dao.fetch_by_name (tag_name) |
|
|
if tag is None: |
|
|
if tag is None: |
|
|
tag = TagDto (name = tag_name) |
|
|
tag = TagDto (name = tag_name) |
|
@@ -139,12 +140,12 @@ def update_tables ( |
|
|
vpos_ms = com['vposMs']) |
|
|
vpos_ms = com['vposMs']) |
|
|
comment_dao.upsert (comment, False) |
|
|
comment_dao.upsert (comment, False) |
|
|
|
|
|
|
|
|
alive_video_ids = [d['contentId'] for d in api_data] |
|
|
|
|
|
|
|
|
alive_video_codes = [d['contentId'] for d in api_data] |
|
|
|
|
|
|
|
|
lost_video_ids: list[int] = [] |
|
|
lost_video_ids: list[int] = [] |
|
|
videos = video_dao.fetch_alive () |
|
|
videos = video_dao.fetch_alive () |
|
|
for video in videos: |
|
|
for video in videos: |
|
|
if video.id_ is not None and video.id_ not in alive_video_ids: |
|
|
|
|
|
|
|
|
if video.id_ is not None and video.code not in alive_video_codes: |
|
|
lost_video_ids.append (video.id_) |
|
|
lost_video_ids.append (video.id_) |
|
|
|
|
|
|
|
|
video_dao.delete (lost_video_ids, now) |
|
|
video_dao.delete (lost_video_ids, now) |
|
@@ -573,7 +574,7 @@ class VideoTagDao: |
|
|
self, |
|
|
self, |
|
|
video_id: int, |
|
|
video_id: int, |
|
|
tag_ids: list[int], |
|
|
tag_ids: list[int], |
|
|
now: datetime |
|
|
|
|
|
|
|
|
now: datetime, |
|
|
) -> None: |
|
|
) -> None: |
|
|
if not tag_ids: |
|
|
if not tag_ids: |
|
|
return |
|
|
return |
|
|