Compare commits

...

5 Commits

Author SHA1 Message Date
ischmidt20
824d9c2917
Merge 3b8e915274 into 4b5eec0aaa 2024-11-25 14:44:19 +05:30
Jakob Kruse
4b5eec0aaa
[ie/chaturbate] Fix support for non-public streams (#11624)
Fix bug in 720b3dc453

Closes #11623
Authored by: jkruse
2024-11-24 22:20:30 +00:00
ischmidt20
3b8e915274
Merge branch 'yt-dlp:master' into decrypt 2024-09-02 11:34:17 -04:00
Isaac Schmidt
732929ae38 use actual filename 2023-06-28 21:07:26 -04:00
Isaac Schmidt
aa1f5c7689 save decrypted fragments using my preferred naming scheme 2023-06-28 21:05:29 -04:00
2 changed files with 17 additions and 11 deletions

View File

@ -497,7 +497,11 @@ class FragmentFD(FileDownloader):
'fragment_filename_sanitized': frag_filename,
'fragment_index': frag_index,
})
if not append_fragment(decrypt_fragment(fragment, self._read_fragment(ctx)), frag_index, ctx):
decrypted_fragment = decrypt_fragment(fragment, self._read_fragment(ctx))
if self.params.get('keep_fragments', False):
f, _ = self.sanitize_open(ctx.get('fragment_filename_sanitized'), 'wb')
f.write(decrypted_fragment)
if not append_fragment(decrypted_fragment, frag_index, ctx):
return False
except KeyboardInterrupt:
self._finish_multiline_status()
@ -511,8 +515,11 @@ class FragmentFD(FileDownloader):
break
try:
download_fragment(fragment, ctx)
result = append_fragment(
decrypt_fragment(fragment, self._read_fragment(ctx)), fragment['frag_index'], ctx)
decrypted_fragment = decrypt_fragment(fragment, self._read_fragment(ctx))
if self.params.get('keep_fragments', False):
f, _ = self.sanitize_open(ctx.get('fragment_filename_sanitized'), 'wb')
f.write(decrypted_fragment)
result = append_fragment(decrypted_fragment, fragment['frag_index'], ctx)
except KeyboardInterrupt:
if info_dict.get('is_live'):
break

View File

@ -59,16 +59,15 @@ class ChaturbateIE(InfoExtractor):
'Accept': 'application/json',
}, fatal=False, impersonate=True) or {}
status = response.get('room_status')
if status != 'public':
if error := self._ERROR_MAP.get(status):
raise ExtractorError(error, expected=True)
self.report_warning('Falling back to webpage extraction')
return None
m3u8_url = response.get('url')
if not m3u8_url:
status = response.get('room_status')
if error := self._ERROR_MAP.get(status):
raise ExtractorError(error, expected=True)
if status == 'public':
self.raise_geo_restricted()
self.report_warning(f'Got status "{status}" from API; falling back to webpage extraction')
return None
return {
'id': video_id,