[ie/motherless] Support uploader playlists (#8994)

Authored by: dasidiot
This commit is contained in:
dasidiot 2024-01-20 21:46:53 -05:00 committed by GitHub
parent 5a63454b36
commit 9f1e9dab21
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 29 additions and 3 deletions

View file

@ -1111,6 +1111,7 @@
MotherlessIE, MotherlessIE,
MotherlessGroupIE, MotherlessGroupIE,
MotherlessGalleryIE, MotherlessGalleryIE,
MotherlessUploaderIE,
) )
from .motorsport import MotorsportIE from .motorsport import MotorsportIE
from .moviepilot import MoviepilotIE from .moviepilot import MoviepilotIE

View file

@ -177,6 +177,7 @@ def _real_extract(self, url):
class MotherlessPaginatedIE(InfoExtractor): class MotherlessPaginatedIE(InfoExtractor):
_EXTRA_QUERY = {}
_PAGE_SIZE = 60 _PAGE_SIZE = 60
def _correct_path(self, url, item_id): def _correct_path(self, url, item_id):
@ -199,7 +200,7 @@ def _real_extract(self, url):
def get_page(idx): def get_page(idx):
page = idx + 1 page = idx + 1
current_page = webpage if not idx else self._download_webpage( current_page = webpage if not idx else self._download_webpage(
real_url, item_id, note=f'Downloading page {page}', query={'page': page}) real_url, item_id, note=f'Downloading page {page}', query={'page': page, **self._EXTRA_QUERY})
yield from self._extract_entries(current_page, real_url) yield from self._extract_entries(current_page, real_url)
return self.playlist_result( return self.playlist_result(
@ -213,7 +214,7 @@ class MotherlessGroupIE(MotherlessPaginatedIE):
'url': 'http://motherless.com/gv/movie_scenes', 'url': 'http://motherless.com/gv/movie_scenes',
'info_dict': { 'info_dict': {
'id': 'movie_scenes', 'id': 'movie_scenes',
'title': 'Movie Scenes', 'title': 'Movie Scenes - Videos - Hot and sexy scenes from "regular" movies... Beautiful actresses fully',
}, },
'playlist_mincount': 540, 'playlist_mincount': 540,
}, { }, {
@ -244,7 +245,7 @@ class MotherlessGalleryIE(MotherlessPaginatedIE):
'id': '338999F', 'id': '338999F',
'title': 'Random', 'title': 'Random',
}, },
'playlist_mincount': 190, 'playlist_mincount': 171,
}, { }, {
'url': 'https://motherless.com/GVABD6213', 'url': 'https://motherless.com/GVABD6213',
'info_dict': { 'info_dict': {
@ -270,3 +271,27 @@ class MotherlessGalleryIE(MotherlessPaginatedIE):
def _correct_path(self, url, item_id): def _correct_path(self, url, item_id):
return urllib.parse.urljoin(url, f'/GV{item_id}') return urllib.parse.urljoin(url, f'/GV{item_id}')
class MotherlessUploaderIE(MotherlessPaginatedIE):
_VALID_URL = r'https?://(?:www\.)?motherless\.com/u/(?P<id>\w+)/?(?:$|[?#])'
_TESTS = [{
'url': 'https://motherless.com/u/Mrgo4hrs2023',
'info_dict': {
'id': 'Mrgo4hrs2023',
'title': "Mrgo4hrs2023's Uploads - Videos",
},
'playlist_mincount': 32,
}, {
'url': 'https://motherless.com/u/Happy_couple?t=v',
'info_dict': {
'id': 'Happy_couple',
'title': "Happy_couple's Uploads - Videos",
},
'playlist_mincount': 8,
}]
_EXTRA_QUERY = {'t': 'v'}
def _correct_path(self, url, item_id):
return urllib.parse.urljoin(url, f'/u/{item_id}?t=v')