Repository: yt-dlp/yt-dlp

Issue:
[InfoQ] Unable to extract mp3Form form
### Checklist

- [X] I'm reporting a broken site
- [X] I've verified that I'm running yt-dlp version **2022.04.08** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
- [X] I've checked that all provided URLs are alive and playable in a browser
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/ytdl-org/youtube-dl#video-url-contains-an-ampersand-and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues including closed ones. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [ ] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

_No response_

### Description

InfoQ support currently fails, e.g., for <https://www.infoq.com/presentations/rr-reversible-debugging/>:
```
yt-dlp https://www.infoq.com/presentations/rr-reversible-debugging/

[InfoQ] rr-reversible-debugging: Downloading webpage
ERROR: [InfoQ] rr-reversible-debugging: Unable to extract mp3Form form; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out th
e appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
```

### Verbose log

```shell
[debug] Command-line config: ['-vU', 'https://www.infoq.com/presentations/rr-reversible-debugging/']
[debug] Encodings: locale cp1252, fs utf-8, out utf-8 (No ANSI), err utf-8 (No ANSI), pref cp1252
[debug] yt-dlp version 2022.04.08 [7884ade] (win_exe)
[debug] Python version 3.8.10 (CPython 64bit) - Windows-2012ServerR2-6.3.9600
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg N-81036-g2b14204 (needs_adtstoasc), ffprobe 5.0.1-essentials_build-www.gyan.dev
[debug] Optional libraries: brotli, certifi, Cryptodome, mutagen, sqlite, websockets
[debug] Proxy map: {}
Latest version: 2022.04.08, Current version: 2022.04.08
yt-dlp is up to date (2022.04.08)
[debug] [InfoQ] Extracting URL: https://www.infoq.com/presentations/rr-reversible-debugging/
[InfoQ] rr-reversible-debugging: Downloading webpage
ERROR: [InfoQ] rr-reversible-debugging: Unable to extract mp3Form form; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out th
e appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp\extractor\common.py", line 641, in extract
  File "yt_dlp\extractor\infoq.py", line 128, in _real_extract
  File "yt_dlp\extractor\infoq.py", line 93, in _extract_http_audio
  File "yt_dlp\extractor\common.py", line 1638, in _form_hidden_inputs
  File "yt_dlp\extractor\common.py", line 1229, in _search_regex
```



Discussion:

Resolving patch:
diff --git a/yt_dlp/extractor/infoq.py b/yt_dlp/extractor/infoq.py
--- a/yt_dlp/extractor/infoq.py
+++ b/yt_dlp/extractor/infoq.py
@@ -4,8 +4,10 @@
     compat_urlparse,
 )
 from ..utils import (
+    ExtractorError,
     determine_ext,
     update_url_query,
+    traverse_obj,
 )
 from .bokecc import BokeCCBaseIE
 
@@ -34,6 +36,7 @@ class InfoQIE(BokeCCBaseIE):
             'ext': 'flv',
             'description': 'md5:308d981fb28fa42f49f9568322c683ff',
         },
+        'skip': 'Sorry, the page you visited does not exist',
     }, {
         'url': 'https://www.infoq.com/presentations/Simple-Made-Easy',
         'md5': '0e34642d4d9ef44bf86f66f6399672db',
@@ -86,8 +89,10 @@ def _extract_http_video(self, webpage):
         }]
 
     def _extract_http_audio(self, webpage, video_id):
-        fields = self._form_hidden_inputs('mp3Form', webpage)
-        http_audio_url = fields.get('filename')
+        try:
+            http_audio_url = traverse_obj(self._form_hidden_inputs('mp3Form', webpage), 'filename')
+        except ExtractorError:
+            http_audio_url = None
         if not http_audio_url:
             return []
 


Test patch: