質問編集履歴
1
教えて頂いた修正によるコード変更
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -95,4 +95,106 @@ 
     | 
|
| 
       95 
95 
     | 
    
         
             
            python 3.7.4
         
     | 
| 
       96 
96 
     | 
    
         
             
            (VScodeの拡張機能を使用しておらず、別々でダウンロードしてpython側を環境変数に入れて使用してます)
         
     | 
| 
       97 
97 
     | 
    
         | 
| 
       98 
     | 
    
         
            -
            その他ライブラリ最新バージョンです。
         
     | 
| 
      
 98 
     | 
    
         
            +
            その他ライブラリ最新バージョンです。
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
            以下追記になります。
         
     | 
| 
      
 101 
     | 
    
         
            +
            先ほどは失礼しました。
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            教えて頂き有難うございます。
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            ご指摘頂いた部分を含めてコードを以下の様に訂正しました。
         
     | 
| 
      
 106 
     | 
    
         
            +
            ```
         
     | 
| 
      
 107 
     | 
    
         
            +
            import re, sys, os, time, subprocess
         
     | 
| 
      
 108 
     | 
    
         
            +
            from bs4 import BeautifulSoup
         
     | 
| 
      
 109 
     | 
    
         
            +
            from urllib.request import urlopen, urlretrieve
         
     | 
| 
      
 110 
     | 
    
         
            +
            import tkinter as tk
         
     | 
| 
      
 111 
     | 
    
         
            +
            from tkinter import *
         
     | 
| 
      
 112 
     | 
    
         
            +
            from tkinter import ttk,filedialog,messagebox
         
     | 
| 
      
 113 
     | 
    
         
            +
            from tkinter.ttk import Combobox
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            #URL
         
     | 
| 
      
 116 
     | 
    
         
            +
            main_links = [
         
     | 
| 
      
 117 
     | 
    
         
            +
            "https://www.youtube.com/",
         
     | 
| 
      
 118 
     | 
    
         
            +
            "https://soundcloud.com/",
         
     | 
| 
      
 119 
     | 
    
         
            +
            "https://www.nicovideo.jp/"
         
     | 
| 
      
 120 
     | 
    
         
            +
            ]
         
     | 
| 
      
 121 
     | 
    
         
            +
            m_window=tk.Tk()
         
     | 
| 
      
 122 
     | 
    
         
            +
            m_window.title("動画 DLソフト")
         
     | 
| 
      
 123 
     | 
    
         
            +
            m_window.geometry("640x360")
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            m_frame=ttk.Frame(m_window)
         
     | 
| 
      
 126 
     | 
    
         
            +
            URL_Label=ttk.Label(m_frame,text="URL")
         
     | 
| 
      
 127 
     | 
    
         
            +
            URL=str()
         
     | 
| 
      
 128 
     | 
    
         
            +
            URL_box=ttk.Entry(m_frame,textvariable=URL)
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            #mainframe
         
     | 
| 
      
 131 
     | 
    
         
            +
            m_frame.grid(column=0,row=0,sticky=tk.NSEW,padx=5,pady=10)
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            def dl_click():
         
     | 
| 
      
 134 
     | 
    
         
            +
            URL=str(URL_box.get())
         
     | 
| 
      
 135 
     | 
    
         
            +
            dl_extension=str(file_extension.get())
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
            if any(s in URL for s in (main_links)):
         
     | 
| 
      
 138 
     | 
    
         
            +
            ans = dl_extension
         
     | 
| 
      
 139 
     | 
    
         
            +
            if "https://www.youtube.com/" in URL and "list=" in URL:
         
     | 
| 
      
 140 
     | 
    
         
            +
            th_list = str(re.sub("list=","",URL))
         
     | 
| 
      
 141 
     | 
    
         
            +
            else:
         
     | 
| 
      
 142 
     | 
    
         
            +
            th_list = URL
         
     | 
| 
      
 143 
     | 
    
         
            +
            if ans=="mp3":
         
     | 
| 
      
 144 
     | 
    
         
            +
            cmd = 'youtube-dl -o ./%(playlist)s/%(title)s.%(ext)s -ci --extract-audio --audio-format mp3 --add-metadata ' + th_list
         
     | 
| 
      
 145 
     | 
    
         
            +
            if ans=="mp4":
         
     | 
| 
      
 146 
     | 
    
         
            +
            cmd = 'youtube-dl -o ./%(playlist)s/%(title)s.%(ext)s -i -f mp4 --add-metadata ' + th_list
         
     | 
| 
      
 147 
     | 
    
         
            +
            subprocess.check_call(cmd.split())#ここでエラーがでます
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
            sys.exit()
         
     | 
| 
      
 150 
     | 
    
         
            +
            #widget
         
     | 
| 
      
 151 
     | 
    
         
            +
            dl_extension=str()
         
     | 
| 
      
 152 
     | 
    
         
            +
            file_extension=ttk.Combobox(m_frame,textvariable=dl_extension,width=10)
         
     | 
| 
      
 153 
     | 
    
         
            +
            file_extension["values"]=["mp4","mp3"]
         
     | 
| 
      
 154 
     | 
    
         
            +
            dl_button=ttk.Button(m_frame,text="ダウンロードする",command=dl_click)
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
            #widget_position
         
     | 
| 
      
 157 
     | 
    
         
            +
            URL_Label.grid(column=0,row=0,pady=10)
         
     | 
| 
      
 158 
     | 
    
         
            +
            URL_box.grid(column=1,row=1,sticky=tk.EW,padx=5)
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
            file_extension.grid(column=3,row=2,sticky=tk.EW,padx=5)
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
            m_window.columnconfigure(0,weight=1)
         
     | 
| 
      
 163 
     | 
    
         
            +
            m_window.rowconfigure(0,weight=1)
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
            m_frame.columnconfigure(1,weight=1)
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
            dl_button.grid(column=2,row=1)
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
            m_window.mainloop()
         
     | 
| 
      
 170 
     | 
    
         
            +
            ```
         
     | 
| 
      
 171 
     | 
    
         
            +
            そうしますとウィンドウが開き→URLを入力、拡張子を選択→ダウンロードする
         
     | 
| 
      
 172 
     | 
    
         
            +
            とクリックして目的の動画がダウンロードできたのですが
         
     | 
| 
      
 173 
     | 
    
         
            +
            以下の様にエラーがでてしまいました。
         
     | 
| 
      
 174 
     | 
    
         
            +
            ```
         
     | 
| 
      
 175 
     | 
    
         
            +
            Exception in Tkinter callback
         
     | 
| 
      
 176 
     | 
    
         
            +
            Traceback (most recent call last):
         
     | 
| 
      
 177 
     | 
    
         
            +
            File "C:\Users\kotar\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py",
         
     | 
| 
      
 178 
     | 
    
         
            +
            line 1705, in __call__
         
     | 
| 
      
 179 
     | 
    
         
            +
            return self.func(*args)
         
     | 
| 
      
 180 
     | 
    
         
            +
            File "dl-movie.py", line 41, in dl_click
         
     | 
| 
      
 181 
     | 
    
         
            +
            subprocess.check_call(cmd.split())#ここでエラーがでます
         
     | 
| 
      
 182 
     | 
    
         
            +
            File "C:\Users\kotar\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 347, in check_call
         
     | 
| 
      
 183 
     | 
    
         
            +
            raise CalledProcessError(retcode, cmd)
         
     | 
| 
      
 184 
     | 
    
         
            +
            subprocess.CalledProcessError: Command '['youtube-dl', '-o', './%(playlist)s/%(title)s.%(ext)s', '-i', '-f', 'mp4', '--add-metadata', 'ダウンロードしたYouTube動画のURL']' returned non-zero exit status 1.
         
     | 
| 
      
 185 
     | 
    
         
            +
            Traceback (most recent call last):
         
     | 
| 
      
 186 
     | 
    
         
            +
            File "dl-movie.py", line 63, in <module>
         
     | 
| 
      
 187 
     | 
    
         
            +
            m_window.mainloop()
         
     | 
| 
      
 188 
     | 
    
         
            +
            File "C:\Users\kotar\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py",
         
     | 
| 
      
 189 
     | 
    
         
            +
            line 1283, in mainloop
         
     | 
| 
      
 190 
     | 
    
         
            +
            self.tk.mainloop(n)
         
     | 
| 
      
 191 
     | 
    
         
            +
            ```
         
     | 
| 
      
 192 
     | 
    
         
            +
            原因が subprocess.check_call(cmd.split())であり、変数cmdの中に入れた文字列に問題があるだろうとは思っているのですが対処法がわかりません。
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
      
 194 
     | 
    
         
            +
            print(cmd.split())で確認してみましたが、特に問題ありませんでした。
         
     | 
| 
      
 195 
     | 
    
         
            +
            以下print(cmd.split())で表示されたリストになります。
         
     | 
| 
      
 196 
     | 
    
         
            +
            ```
         
     | 
| 
      
 197 
     | 
    
         
            +
            ['youtube-dl', '-o', './%(playlist)s/%(title)s.%(ext)s', '-i', '-f', 'mp4', '--add-metadata', 'ダウンロードした動画のURL']
         
     | 
| 
      
 198 
     | 
    
         
            +
            ```
         
     | 
| 
      
 199 
     | 
    
         
            +
            cmdの型宣言も同じように確認してみましたが間違いが見つけられません。
         
     | 
| 
      
 200 
     | 
    
         
            +
            どうかよろしくお願いします。
         
     |