From 4d248e29d20d983ededab0b03d4fe69dff9eb4ed Mon Sep 17 00:00:00 2001
From: pukkandan <pukkandan.ytdlp@gmail.com>
Date: Tue, 28 Feb 2023 23:09:20 +0530
Subject: [PATCH] [extractor/GoogleDrive] Fix some audio

Only those with source url, but no confirmation page
---
 yt_dlp/extractor/googledrive.py | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/yt_dlp/extractor/googledrive.py b/yt_dlp/extractor/googledrive.py
index e027ea7c4..9e2ccde00 100644
--- a/yt_dlp/extractor/googledrive.py
+++ b/yt_dlp/extractor/googledrive.py
@@ -3,8 +3,8 @@ import re
 from .common import InfoExtractor
 from ..compat import compat_parse_qs
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     get_element_by_class,
     int_or_none,
     lowercase_escape,
@@ -163,15 +163,13 @@ class GoogleDriveIE(InfoExtractor):
         video_id = self._match_id(url)
         video_info = compat_parse_qs(self._download_webpage(
             'https://drive.google.com/get_video_info',
-            video_id, query={'docid': video_id}))
+            video_id, 'Downloading video webpage', query={'docid': video_id}))
 
         def get_value(key):
             return try_get(video_info, lambda x: x[key][0])
 
         reason = get_value('reason')
         title = get_value('title')
-        if not title and reason:
-            raise ExtractorError(reason, expected=True)
 
         formats = []
         fmt_stream_map = (get_value('fmt_stream_map') or '').split(',')
@@ -216,6 +214,11 @@ class GoogleDriveIE(InfoExtractor):
         urlh = request_source_file(source_url, 'source')
         if urlh:
             def add_source_format(urlh):
+                nonlocal title
+                if not title:
+                    title = self._search_regex(
+                        r'\bfilename="([^"]+)"', urlh.headers.get('Content-Disposition'),
+                        'title', default=None)
                 formats.append({
                     # Use redirect URLs as download URLs in order to calculate
                     # correct cookies in _calc_cookies.
@@ -251,7 +254,10 @@ class GoogleDriveIE(InfoExtractor):
                             or 'unable to extract confirmation code')
 
         if not formats and reason:
-            self.raise_no_formats(reason, expected=True)
+            if title:
+                self.raise_no_formats(reason, expected=True)
+            else:
+                raise ExtractorError(reason, expected=True)
 
         hl = get_value('hl')
         subtitles_id = None