Spaces:
Running
Running
image_src
Browse files
app.py
CHANGED
@@ -127,7 +127,14 @@ def upload_img_directly(service, file_name, folder_id, file_path):
|
|
127 |
file_metadata = {'name': file_name, 'parents': [folder_id]}
|
128 |
media = MediaFileUpload(file_path, mimetype='image/jpeg')
|
129 |
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
|
132 |
def process_file(file):
|
133 |
# 读取文件
|
@@ -275,22 +282,29 @@ def download_youtube_video(youtube_id, output_path=OUTPUT_PATH):
|
|
275 |
|
276 |
|
277 |
def screenshot_youtube_video(youtube_id, snapshot_sec):
|
278 |
-
# 这里假设视频已经在适当的位置
|
279 |
-
video_path = f'{OUTPUT_PATH}/{youtube_id}.mp4'
|
280 |
-
|
281 |
-
# Load the video and take a screenshot
|
282 |
-
with VideoFileClip(video_path) as video:
|
283 |
-
screenshot_path = f'{OUTPUT_PATH}/{youtube_id}_{snapshot_sec}.jpg'
|
284 |
-
video.save_frame(screenshot_path, snapshot_sec)
|
285 |
-
|
286 |
-
# 上传截图到Google Drive
|
287 |
service = init_drive_service()
|
288 |
-
parent_folder_id = '1GgI4YVs0KckwStVQkLa1NZ8IpaEMurkL' #
|
289 |
folder_id = create_folder_if_not_exists(service, youtube_id, parent_folder_id)
|
290 |
file_name = f'{youtube_id}_{snapshot_sec}.jpg'
|
291 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
|
293 |
-
|
|
|
294 |
|
295 |
def get_screenshot_from_video(video_link, start_time):
|
296 |
# 实现从视频中提取帧的逻辑
|
|
|
127 |
file_metadata = {'name': file_name, 'parents': [folder_id]}
|
128 |
media = MediaFileUpload(file_path, mimetype='image/jpeg')
|
129 |
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
|
130 |
+
return file.get('id') # 返回文件ID
|
131 |
+
|
132 |
+
def set_public_permission(service, file_id):
|
133 |
+
service.permissions().create(
|
134 |
+
fileId=file_id,
|
135 |
+
body={"type": "anyone", "role": "reader"},
|
136 |
+
fields='id',
|
137 |
+
).execute()
|
138 |
|
139 |
def process_file(file):
|
140 |
# 读取文件
|
|
|
282 |
|
283 |
|
284 |
def screenshot_youtube_video(youtube_id, snapshot_sec):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
285 |
service = init_drive_service()
|
286 |
+
parent_folder_id = '1GgI4YVs0KckwStVQkLa1NZ8IpaEMurkL' # 替换为实际的Google Drive文件夹ID
|
287 |
folder_id = create_folder_if_not_exists(service, youtube_id, parent_folder_id)
|
288 |
file_name = f'{youtube_id}_{snapshot_sec}.jpg'
|
289 |
+
|
290 |
+
# 检查Google Drive是否已有截图
|
291 |
+
exists, file_id = check_file_exists(service, folder_id, file_name)
|
292 |
+
if not exists:
|
293 |
+
# 如果没有找到截图,处理视频并上传
|
294 |
+
video_path = f'{OUTPUT_PATH}/{youtube_id}.mp4'
|
295 |
+
with VideoFileClip(video_path) as video:
|
296 |
+
screenshot_path = f'{OUTPUT_PATH}/{file_name}'
|
297 |
+
video.save_frame(screenshot_path, snapshot_sec)
|
298 |
+
# 上传并获取文件ID
|
299 |
+
file_id = upload_img_directly(service, file_name, folder_id, screenshot_path)
|
300 |
+
print(f"截图已上传到Google Drive, 文件ID: {file_id}")
|
301 |
+
set_public_permission(service, file_id)
|
302 |
+
|
303 |
+
# 上传后删除本地临时截图文件
|
304 |
+
os.remove(screenshot_path)
|
305 |
|
306 |
+
image_src = f"https://drive.google.com/uc?export=view&id={file_id}"
|
307 |
+
return image_src
|
308 |
|
309 |
def get_screenshot_from_video(video_link, start_time):
|
310 |
# 实现从视频中提取帧的逻辑
|