fix: Commonified function and updated scheduler events

Co-authored-by: marination <maricadsouza221197@gmail.com>
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 3beae3b..f8b6be7 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -284,7 +284,7 @@
 scheduler_events = {
 	"cron": {
 		"0/30 * * * *": [
-			"erpnext.utilities.doctype.video.video.update_youtube_data_half_hourly",
+			"erpnext.utilities.doctype.video.video.update_youtube_data",
 		]
 	},
 	"all": [
@@ -302,7 +302,6 @@
 		"erpnext.projects.doctype.project.project.collect_project_status",
 		"erpnext.hr.doctype.shift_type.shift_type.process_auto_attendance_for_all_shifts",
 		"erpnext.support.doctype.issue.issue.set_service_level_agreement_variance",
-		"erpnext.utilities.doctype.video.video.update_youtube_data"
 	],
 	"daily": [
 		"erpnext.stock.reorder_item.reorder_item",
diff --git a/erpnext/utilities/doctype/video/video.py b/erpnext/utilities/doctype/video/video.py
index 6971beb..7918b82 100644
--- a/erpnext/utilities/doctype/video/video.py
+++ b/erpnext/utilities/doctype/video/video.py
@@ -50,45 +50,37 @@
 			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")
 
-def get_frequency(value):
-	if not value:
-		return None
 
-	# Return frequency in hours
+def get_frequency(value):
+	# Return numeric value from frequency field, return 1 as fallback default value: 1 hour
 	if value != "Daily":
 		return frappe.utils.cint(value[:2].strip())
-	else:
-		# 24 hours for Daily
+	elif value:
 		return 24
-
-
-def update_youtube_data_half_hourly():
-	# Called every 30 mins via hooks
-	frequency = get_frequency(frappe.db.get_single_value("Video Settings", "frequency"))
-	if not is_tracking_enabled() or not frequency:
-		return
-
-	if frequency == 30:
-		batch_update_youtube_data()
+	return 1
 
 
 def update_youtube_data():
-	# Called every hour via hooks
-	frequency = get_frequency(frappe.db.get_single_value("Video Settings", "frequency"))
+	# Called every 30 minutes via hooks
+	enable_youtube_tracking, frequency = frappe.db.get_value("Video Settings", "Video Settings", ["enable_youtube_tracking", "frequency"])
 
-	# if frequency is 30 mins dont proceed, as its handled in another method
-	if not is_tracking_enabled() or not frequency or frequency == 30:
+	if not enable_youtube_tracking:
 		return
 
+	frequency = get_frequency(frequency)
 	time = datetime.now()
 	timezone = pytz.timezone(frappe.utils.get_time_zone())
 	site_time = time.astimezone(timezone)
 
-	if site_time.hour % frequency == 0:
+	if frequency == 30:
 		batch_update_youtube_data()
+	elif site_time.hour % frequency == 0:
+		batch_update_youtube_data()
+
 
 def get_formatted_ids(video_list):
 	# format ids to comma separated string for bulk request
@@ -98,6 +90,7 @@
 
 	return ','.join(ids)
 
+
 @frappe.whitelist()
 def get_id_from_url(url):
 	"""
@@ -128,7 +121,8 @@
 				'like_count' : video_stats.get('likeCount'),
 				'view_count' : video_stats.get('viewCount'),
 				'dislike_count' : video_stats.get('dislikeCount'),
-				'comment_count' : video_stats.get('commentCount')
+				'comment_count' : video_stats.get('commentCount'),
+				'video_id': video_id
 			}
 
 			frappe.db.sql("""
@@ -138,7 +132,7 @@
 					view_count = %(view_count)s,
 					dislike_count = %(dislike_count)s,
 					comment_count = %(comment_count)s
-				WHERE youtube_video_id = '{0}'""".format(video_id), stats)
+				WHERE youtube_video_id = %(video_id)s""", stats)
 
 	video_list = frappe.get_all("Video", fields=["youtube_video_id"])
 	if len(video_list) > 50:
@@ -150,4 +144,4 @@
 			start += 50
 			end += 50
 	else:
-		prepare_and_set_data(video_list)
\ No newline at end of file
+		prepare_and_set_data(video_list)