From c15351641cb260e081077c2adceaf7cc84e65d7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Po=C5=82tyn?= <Holek@users.noreply.github.com>
Date: Thu, 30 Jan 2025 15:20:10 +0100
Subject: [PATCH 1/2] [Eporner] Check if video was deleted

This gives user a friendly error message, instead of a stacktrace
---
 youtube_dl/extractor/eporner.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/youtube_dl/extractor/eporner.py b/youtube_dl/extractor/eporner.py
index bfecd3a41..6608cc0d3 100644
--- a/youtube_dl/extractor/eporner.py
+++ b/youtube_dl/extractor/eporner.py
@@ -59,6 +59,11 @@ class EpornerIE(InfoExtractor):
 
         video_id = self._match_id(urlh.geturl())
 
+        deleted = self._html_search_regex(r'<strong>Video has been deleted</strong>', webpage, 'deleted', default=False, fatal=False, group=0)
+        if deleted:
+            raise ExtractorError(
+                'Video %s has been deleted' % video_id, expected=True)
+
         hash = self._search_regex(
             r'hash\s*[:=]\s*["\']([\da-f]{32})', webpage, 'hash')
 

From 8d2170c713253c02eee11d3b1822a6dd808545fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Po=C5=82tyn?= <Holek@users.noreply.github.com>
Date: Sat, 8 Mar 2025 22:01:54 +0100
Subject: [PATCH 2/2] Relax HTML constraints on error message

Co-authored-by: dirkf <fieldhouse@gmx.net>
---
 youtube_dl/extractor/eporner.py | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/youtube_dl/extractor/eporner.py b/youtube_dl/extractor/eporner.py
index 6608cc0d3..1cf52d899 100644
--- a/youtube_dl/extractor/eporner.py
+++ b/youtube_dl/extractor/eporner.py
@@ -59,10 +59,12 @@ class EpornerIE(InfoExtractor):
 
         video_id = self._match_id(urlh.geturl())
 
-        deleted = self._html_search_regex(r'<strong>Video has been deleted</strong>', webpage, 'deleted', default=False, fatal=False, group=0)
-        if deleted:
+        missing = self._html_search_regex((
+            r'<strong>\s*(Video has been deleted)\s*</strong>',
+        ), webpage, 'missing', default=None)
+        if missing:
             raise ExtractorError(
-                'Video %s has been deleted' % video_id, expected=True)
+                'Video %s is not available: "%s"' % (video_id, missing), expected=True)
 
         hash = self._search_regex(
             r'hash\s*[:=]\s*["\']([\da-f]{32})', webpage, 'hash')