fix: Separate function to get bulk and single youtube stats
diff --git a/erpnext/utilities/doctype/video/video.py b/erpnext/utilities/doctype/video/video.py
index f519146..c2e414e 100644
--- a/erpnext/utilities/doctype/video/video.py
+++ b/erpnext/utilities/doctype/video/video.py
@@ -14,31 +14,21 @@
class Video(Document):
def validate(self):
- self.set_video_id()
- self.set_youtube_statistics()
+ if self.provider == "YouTube" and is_tracking_enabled():
+ self.set_video_id()
+ self.set_youtube_statistics()
def set_video_id(self):
- if self.provider == "YouTube" and self.url and not self.get("youtube_video_id"):
+ if self.url and not self.get("youtube_video_id"):
self.youtube_video_id = get_id_from_url(self.url)
- def set_youtube_statistics(self, video_ids=None, update=True):
- if self.provider == "YouTube" and not is_tracking_enabled():
- return
-
+ def set_youtube_statistics(self):
api_key = frappe.db.get_single_value("Video Settings", "api_key")
api = Api(api_key=api_key)
try:
- video_id = video_ids or self.youtube_video_id
- video = api.get_video_by_id(video_id=video_id)
-
- if video_ids:
- video_stats = video.items
- else:
- video_stats = video.items[0].to_dict().get('statistics')
-
- if not update:
- return video_stats
+ video = api.get_video_by_id(video_id=self.youtube_video_id)
+ video_stats = video.items[0].to_dict().get('statistics')
self.like_count = video_stats.get('likeCount')
self.view_count = video_stats.get('viewCount')
@@ -49,7 +39,6 @@
title = "Failed to Update YouTube Statistics for Video: {0}".format(self.name)
frappe.log_error(title + "\n\n" + frappe.get_traceback(), title=title)
-
def is_tracking_enabled():
return frappe.db.get_single_value("Video Settings", "enable_youtube_tracking")
@@ -107,10 +96,20 @@
@frappe.whitelist()
def batch_update_youtube_data():
+ def get_youtube_statistics(video_ids):
+ api_key = frappe.db.get_single_value("Video Settings", "api_key")
+ api = Api(api_key=api_key)
+ try:
+ video = api.get_video_by_id(video_id=video_ids)
+ video_stats = video.items
+ return video_stats
+ except Exception:
+ title = "Failed to Update YouTube Statistics"
+ frappe.log_error(title + "\n\n" + frappe.get_traceback(), title=title)
+
def prepare_and_set_data(video_list):
video_ids = get_formatted_ids(video_list)
- video_doc = frappe.new_doc("Video")
- stats = video_doc.set_youtube_statistics(video_ids=video_ids, update=False)
+ stats = get_youtube_statistics(video_ids)
set_youtube_data(stats)
def set_youtube_data(entries):