GPTfree api commited on
Commit
ef4c690
·
verified ·
1 Parent(s): 7d8fcf6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -12
app.py CHANGED
@@ -1,6 +1,7 @@
1
  from flask import Flask, request, send_file, jsonify
2
  import os
3
  import subprocess
 
4
 
5
  app = Flask(__name__)
6
 
@@ -14,23 +15,27 @@ def download_video():
14
 
15
  # ダウンロード先ディレクトリ
16
  output_path = "downloads"
17
- os.makedirs(output_path, exist_ok=True)
18
 
19
- # yt-dlpのコマンド設定
20
  output_file = os.path.join(output_path, '%(title)s.%(ext)s')
21
- cookies_file = 'cookies.txt' # エクスポートしたクッキーを指定
22
 
23
- # yt-dlpコマンドの実行
24
- cmd = [
25
- 'yt-dlp',
26
- '--cookies', cookies_file,
27
- '--output', output_file,
28
- video_url
29
- ]
30
- subprocess.run(cmd, check=True)
 
 
 
 
 
 
31
 
32
  # ダウンロードされたファイルを返す
33
- downloaded_file = output_file % {'title': video_url.split('=')[-1], 'ext': 'mp4'} # 動画IDをタイトルとして使用
34
  return send_file(downloaded_file, as_attachment=True)
35
 
36
  except Exception as e:
 
1
  from flask import Flask, request, send_file, jsonify
2
  import os
3
  import subprocess
4
+ from yt_dlp import YoutubeDL
5
 
6
  app = Flask(__name__)
7
 
 
15
 
16
  # ダウンロード先ディレクトリ
17
  output_path = "downloads"
18
+ os.makedirs(output_path, exist_ok=True) # ダウンロード先ディレクトリが存在しない場合、作成する
19
 
20
+ # 出力ファイルパスのテンプレート
21
  output_file = os.path.join(output_path, '%(title)s.%(ext)s')
 
22
 
23
+ # クッキーのファイルパス(事前にブラウザからエクスポートしたクッキーを指定)
24
+ cookies_file = 'cookies.txt'
25
+
26
+ # yt-dlpのオプション設定
27
+ ydl_opts = {
28
+ 'cookies': cookies_file, # クッキーを指定
29
+ 'outtmpl': output_file, # 出力ファイルのパスとテンプレート
30
+ 'format': 'bestvideo+bestaudio/best', # 最高画質で動画と音声を選択
31
+ }
32
+
33
+ # yt-dlpで動画をダウンロード
34
+ with YoutubeDL(ydl_opts) as ydl:
35
+ info = ydl.extract_info(video_url, download=True) # ダウンロード実行
36
+ downloaded_file = ydl.prepare_filename(info) # ダウンロードされたファイルのパスを取得
37
 
38
  # ダウンロードされたファイルを返す
 
39
  return send_file(downloaded_file, as_attachment=True)
40
 
41
  except Exception as e: