{"record":{"id":"766aaf16c757a904","repo":"ytdl-org/youtube-dl","slug":"video-s-has-been-removed-766aaf","errorCode":null,"errorMessage":"Video %s has been removed","messagePattern":"Video (.+?) has been removed","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/yapfiles.py","lineNumber":70,"sourceCode":"                'player url', default=None, group='url')\n\n        if not player_url:\n            player_url = 'http://api.yapfiles.ru/load/%s/' % video_id\n            query = {\n                'md5': 'ded5f369be61b8ae5f88e2eeb2f3caff',\n                'type': 'json',\n                'ref': url,\n            }\n\n        player = self._download_json(\n            player_url, video_id, query=query)['player']\n\n        playlist_url = player['playlist']\n        title = player['title']\n        thumbnail = player.get('poster')\n\n        if title == 'Ролик удален' or 'deleted.jpg' in (thumbnail or ''):\n            raise ExtractorError(\n                'Video %s has been removed' % video_id, expected=True)\n\n        playlist = self._download_json(\n            playlist_url, video_id)['player']['main']\n\n        hd_height = int_or_none(player.get('hd'))\n\n        QUALITIES = ('sd', 'hd')\n        quality_key = qualities(QUALITIES)\n        formats = []\n        for format_id in QUALITIES:\n            is_hd = format_id == 'hd'\n            format_url = url_or_none(playlist.get(\n                'file%s' % ('_hd' if is_hd else '')))\n            if not format_url:\n                continue\n            formats.append({\n                'url': format_url,","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/yapfiles.py#L52-L88","documentation":"Raised by the YapFiles extractor when the player JSON reports the video as deleted: either player['title'] equals the Russian string 'Ролик удален' ('video deleted') or the poster/thumbnail URL contains 'deleted.jpg'. Both are YapFiles' markers for removed files.","triggerScenarios":"Downloading a yapfiles.ru URL where the player metadata (fetched from the player_url JSON with type=json and ref=url) has the deleted title or the deleted.jpg poster.","commonSituations":"Files deleted by the uploader or for ToS/abuse reasons on the Russian hosting service; dead links in third-party embeds.","solutions":["Confirm removal by opening the yapfiles page in a browser.","Look for the content on another hosting service.","Drop the URL from your queue; deleted files do not return under the same ID."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    info = ydl.extract_info(url)\nexcept ExtractorError as e:\n    if 'has been removed' in str(e):\n        drop_from_queue(url)\n    else:\n        raise","preventionTips":["Treat removal as permanent — prune yapfiles links after first failure.","Verify suspect links in a browser before adding them to batches.","Keep mirrors of important content; Russian file hosts have high churn."],"tags":["deleted","file-not-found","extractor","yapfiles"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}