@@ -140,32 +140,17 @@ def _yt_choose_url(ytdl, info, metadata):
140140 is_video = metadata ['format' ] == 'video'
141141 is_high_quality = metadata ['quality' ] == 'high'
142142
143- if not is_video :
143+ if is_video :
144+ fmt = 'best[ext=mp4]' if is_high_quality else 'worst[ext=mp4]'
145+ else :
144146 fmt = 'bestaudio' if is_high_quality else 'worstaudio'
145- selector = ytdl .build_format_selector (fmt )
146- try :
147- selected = next (selector (info ))
148- if 'fragment_base_url' in selected :
149- return selected ['fragment_base_url' ]
150- except KeyError :
151- pass
152-
153- # Filter formats by file extension
154- ext = 'mp4' if is_video else 'm4a'
155- fmt_list = [x for x in info ['formats' ] if x ['ext' ] == ext and 'acodec' in x and x ['acodec' ] != 'none' ]
156- if not len (fmt_list ):
157- return info ['url' ]
158-
159- # Sort list by field (width for videos, file size for audio)
160- sort_field = 'width' if is_video else 'filesize'
161- # Sometime 'filesize' field can be None
162- if not all (x [sort_field ] is not None for x in fmt_list ):
163- sort_field = 'format_id'
164- ordered = sorted (fmt_list , key = lambda x : x [sort_field ], reverse = True )
165-
166- # Choose an item depending on quality, better at the beginning
167- item = ordered [0 ] if is_high_quality else ordered [- 1 ]
168- return item ['url' ]
147+
148+ selector = ytdl .build_format_selector (fmt )
149+ selected = next (selector (info ))
150+ if 'fragment_base_url' in selected :
151+ return selected ['fragment_base_url' ]
152+
153+ return selected ['url' ]
169154
170155
171156def _vimeo_choose_url (info , metadata ):
0 commit comments