Rasmus Antons 2024-04-27 17:37:45 +00:00 zatwierdzone przez GitHub
commit 425b047cfd
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
1 zmienionych plików z 16 dodań i 1 usunięć

Wyświetl plik

@ -1,3 +1,5 @@
import json
from .common import InfoExtractor
from .youtube import YoutubeIE
from ..utils import (
@ -8,6 +10,7 @@ from ..utils import (
url_or_none,
)
from ..utils.traversal import traverse_obj
from ..compat import compat_urllib_parse_unquote
class BoostyIE(InfoExtractor):
@ -162,9 +165,19 @@ class BoostyIE(InfoExtractor):
def _real_extract(self, url):
user, post_id = self._match_valid_url(url).group('user', 'post_id')
auth_cookie = self._get_cookies('https://boosty.to/').get('auth')
auth_headers = {}
if auth_cookie is not None:
try:
auth_data = json.loads(compat_urllib_parse_unquote(auth_cookie.value))
auth_headers['Authorization'] = f'Bearer {auth_data["accessToken"]}'
except (json.JSONDecodeError, KeyError):
self.report_warning('Failed to extract token from auth cookie.')
post = self._download_json(
f'https://api.boosty.to/v1/blog/{user}/post/{post_id}', post_id,
note='Downloading post data', errnote='Unable to download post data')
note='Downloading post data', errnote='Unable to download post data', headers=auth_headers)
post_title = post.get('title')
if not post_title:
@ -202,6 +215,8 @@ class BoostyIE(InfoExtractor):
'thumbnail': (('previewUrl', 'defaultPreview'), {url_or_none}),
}, get_all=False)})
if not post.get('hasAccess'):
self.raise_login_required('This post requires a subscription', True, method='cookies')
if not entries:
raise ExtractorError('No videos found', expected=True)
if len(entries) == 1: