Fix a crash when downloading a disabled pornhub video
This commit is contained in:
@@ -6,6 +6,7 @@ from typing import Optional
|
|||||||
|
|
||||||
from praw.models import Submission
|
from praw.models import Submission
|
||||||
|
|
||||||
|
from bdfr.exceptions import SiteDownloaderError
|
||||||
from bdfr.resource import Resource
|
from bdfr.resource import Resource
|
||||||
from bdfr.site_authenticator import SiteAuthenticator
|
from bdfr.site_authenticator import SiteAuthenticator
|
||||||
from bdfr.site_downloaders.youtube import Youtube
|
from bdfr.site_downloaders.youtube import Youtube
|
||||||
@@ -22,10 +23,15 @@ class PornHub(Youtube):
|
|||||||
'format': 'best',
|
'format': 'best',
|
||||||
'nooverwrites': True,
|
'nooverwrites': True,
|
||||||
}
|
}
|
||||||
|
if video_attributes := super().get_video_attributes(self.post.url):
|
||||||
|
extension = video_attributes['ext']
|
||||||
|
else:
|
||||||
|
raise SiteDownloaderError()
|
||||||
|
|
||||||
out = Resource(
|
out = Resource(
|
||||||
self.post,
|
self.post,
|
||||||
self.post.url,
|
self.post.url,
|
||||||
super()._download_video(ytdl_options),
|
super()._download_video(ytdl_options),
|
||||||
super().get_video_attributes(self.post.url)['ext'],
|
extension,
|
||||||
)
|
)
|
||||||
return [out]
|
return [out]
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from unittest.mock import MagicMock
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from bdfr.exceptions import SiteDownloaderError
|
||||||
from bdfr.resource import Resource
|
from bdfr.resource import Resource
|
||||||
from bdfr.site_downloaders.pornhub import PornHub
|
from bdfr.site_downloaders.pornhub import PornHub
|
||||||
|
|
||||||
@@ -13,6 +14,7 @@ from bdfr.site_downloaders.pornhub import PornHub
|
|||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
@pytest.mark.parametrize(('test_url', 'expected_hash'), (
|
@pytest.mark.parametrize(('test_url', 'expected_hash'), (
|
||||||
('https://www.pornhub.com/view_video.php?viewkey=ph6074c59798497', 'd9b99e4ebecf2d8d67efe5e70d2acf8a'),
|
('https://www.pornhub.com/view_video.php?viewkey=ph6074c59798497', 'd9b99e4ebecf2d8d67efe5e70d2acf8a'),
|
||||||
|
('https://www.pornhub.com/view_video.php?viewkey=ph5ede121f0d3f8', ''),
|
||||||
))
|
))
|
||||||
def test_find_resources_good(test_url: str, expected_hash: str):
|
def test_find_resources_good(test_url: str, expected_hash: str):
|
||||||
test_submission = MagicMock()
|
test_submission = MagicMock()
|
||||||
@@ -23,3 +25,15 @@ def test_find_resources_good(test_url: str, expected_hash: str):
|
|||||||
assert isinstance(resources[0], Resource)
|
assert isinstance(resources[0], Resource)
|
||||||
resources[0].download()
|
resources[0].download()
|
||||||
assert resources[0].hash.hexdigest() == expected_hash
|
assert resources[0].hash.hexdigest() == expected_hash
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.online
|
||||||
|
@pytest.mark.parametrize('test_url', (
|
||||||
|
'https://www.pornhub.com/view_video.php?viewkey=ph5ede121f0d3f8',
|
||||||
|
))
|
||||||
|
def test_find_resources_good(test_url: str):
|
||||||
|
test_submission = MagicMock()
|
||||||
|
test_submission.url = test_url
|
||||||
|
downloader = PornHub(test_submission)
|
||||||
|
with pytest.raises(SiteDownloaderError):
|
||||||
|
downloader.find_resources()
|
||||||
|
|||||||
Reference in New Issue
Block a user