[ie/unsupported] Update unsupported sites (#17085)

Closes #10045
Closes #10368
Closes #16117

Authored by: bashonly
This commit is contained in:
bashonly 2026-06-28 17:29:02 -05:00 committed by GitHub
parent 55a58debec
commit 5678b282e2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 35 additions and 105 deletions

View File

@ -691,7 +691,6 @@ from .gmanetwork import GMANetworkVideoIE
from .go import GoIE
from .godresource import GodResourceIE
from .godtube import GodTubeIE
from .gofile import GofileIE
from .golem import GolemIE
from .goodgame import GoodGameIE
from .googledrive import (
@ -2120,6 +2119,7 @@ from .unitednations import UnitedNationsWebTvIE
from .unity import UnityIE
from .unsupported import (
KnownDRMIE,
KnownLiabilityIE,
KnownPiracyIE,
)
from .uol import UOLIE

View File

@ -1,104 +0,0 @@
import hashlib
from .common import InfoExtractor
from ..utils import ExtractorError, try_get
class GofileIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?gofile\.io/d/(?P<id>[^/]+)'
_TESTS = [{
'url': 'https://gofile.io/d/AMZyDw',
'info_dict': {
'id': 'AMZyDw',
},
'playlist_mincount': 2,
'playlist': [{
'info_dict': {
'id': 'de571ac1-5edc-42e2-8ec2-bdac83ad4a31',
'filesize': 928116,
'ext': 'mp4',
'title': 'nuuh',
'release_timestamp': 1638338704,
'release_date': '20211201',
},
}],
}, {
'url': 'https://gofile.io/d/is8lKr',
'info_dict': {
'id': 'TMjXd9',
'ext': 'mp4',
},
'playlist_count': 0,
'skip': 'No video/audio found at provided URL.',
}, {
'url': 'https://gofile.io/d/TMjXd9',
'info_dict': {
'id': 'TMjXd9',
},
'playlist_count': 1,
}, {
'url': 'https://gofile.io/d/gqOtRf',
'info_dict': {
'id': 'gqOtRf',
},
'playlist_mincount': 1,
'params': {
'videopassword': 'password',
},
}]
_STATIC_TOKEN = '4fd6sg89d7s6' # From https://gofile.io/dist/js/config.js
_TOKEN = None
def _real_initialize(self):
token = self._get_cookies('https://gofile.io/').get('accountToken')
if token:
self._TOKEN = token.value
return
account_data = self._download_json(
'https://api.gofile.io/accounts', None, 'Getting a new guest account', data=b'{}')
self._TOKEN = account_data['data']['token']
self._set_cookie('.gofile.io', 'accountToken', self._TOKEN)
def _entries(self, file_id):
query_params = {}
if password := self.get_param('videopassword'):
query_params['password'] = hashlib.sha256(password.encode()).hexdigest()
files = self._download_json(
f'https://api.gofile.io/contents/{file_id}', file_id, 'Getting filelist',
query=query_params, headers={
'Authorization': f'Bearer {self._TOKEN}',
'X-Website-Token': self._STATIC_TOKEN,
})
status = files['status']
if status == 'error-passwordRequired':
raise ExtractorError(
'This video is protected by a password, use the --video-password option', expected=True)
elif status != 'ok':
raise ExtractorError(f'{self.IE_NAME} said: status {status}', expected=True)
found_files = False
for file in (try_get(files, lambda x: x['data']['children'], dict) or {}).values():
file_type, file_format = file.get('mimetype').split('/', 1)
if file_type not in ('video', 'audio') and file_format != 'vnd.mts':
continue
found_files = True
file_url = file.get('link')
if file_url:
yield {
'id': file['id'],
'title': file['name'].rsplit('.', 1)[0],
'url': file_url,
'filesize': file.get('size'),
'release_timestamp': file.get('createTime'),
}
if not found_files:
raise ExtractorError('No video/audio found at provided URL.', expected=True)
def _real_extract(self, url):
file_id = self._match_id(url)
return self.playlist_result(self._entries(file_id), playlist_id=file_id)

View File

@ -303,6 +303,7 @@ class KnownPiracyIE(UnsupportedInfoExtractor):
r'xanimu\.com',
r'musicdex\.org',
r'duboku\.io',
r'gofile\.io',
)
_TESTS = [{
@ -311,9 +312,42 @@ class KnownPiracyIE(UnsupportedInfoExtractor):
}, {
'url': 'https://thisav.com/en/terms',
'only_matching': True,
}, {
'url': 'https://gofile.io/d/',
'only_matching': True,
}]
def _real_extract(self, url):
raise ExtractorError(
f'This website is no longer supported since it has been determined to be primarily used for piracy.{LF}'
f'{self._downloader._format_err("DO NOT", self._downloader.Styles.ERROR)} open issues for it', expected=True)
class KnownLiabilityIE(UnsupportedInfoExtractor):
"""Sites that would be a liability to the project if supported
In order for this to not end up being a catalog of sketchy sites,
only sites that were once supported should be added to this list
"""
URLS = (
r'motherless\.com',
r'suno\.com',
r'udio\.com',
)
_TESTS = [{
'url': 'https://motherless.com/',
'only_matching': True,
}, {
'url': 'https://suno.com/song/',
'only_matching': True,
}, {
'url': 'https://www.udio.com/songs/',
'only_matching': True,
}]
def _real_extract(self, url):
raise ExtractorError(
f'This website is not supported and will not be supported.{LF}'
f'{self._downloader._format_err("DO NOT", self._downloader.Styles.ERROR)} open issues for it', expected=True)