|
|
@ -55,6 +55,7 @@ class PatreonBaseIE(InfoExtractor):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PatreonIE(PatreonBaseIE):
|
|
|
|
class PatreonIE(PatreonBaseIE):
|
|
|
|
|
|
|
|
IE_NAME = 'patreon'
|
|
|
|
_VALID_URL = r'https?://(?:www\.)?patreon\.com/(?:creation\?hid=|posts/(?:[\w-]+-)?)(?P<id>\d+)'
|
|
|
|
_VALID_URL = r'https?://(?:www\.)?patreon\.com/(?:creation\?hid=|posts/(?:[\w-]+-)?)(?P<id>\d+)'
|
|
|
|
_TESTS = [{
|
|
|
|
_TESTS = [{
|
|
|
|
'url': 'http://www.patreon.com/creation?hid=743933',
|
|
|
|
'url': 'http://www.patreon.com/creation?hid=743933',
|
|
|
@ -433,8 +434,12 @@ class PatreonIE(PatreonBaseIE):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PatreonCampaignIE(PatreonBaseIE):
|
|
|
|
class PatreonCampaignIE(PatreonBaseIE):
|
|
|
|
|
|
|
|
IE_NAME = 'patreon:campaign'
|
|
|
|
_VALID_URL = r'https?://(?:www\.)?patreon\.com/(?!rss)(?:(?:m|api/campaigns)/(?P<campaign_id>\d+)|(?P<vanity>[-\w]+))'
|
|
|
|
_VALID_URL = r'''(?x)
|
|
|
|
|
|
|
|
https?://(?:www\.)?patreon\.com/(?:
|
|
|
|
|
|
|
|
(?:m|api/campaigns)/(?P<campaign_id>\d+)|
|
|
|
|
|
|
|
|
(?P<vanity>(?!creation[?/]|posts/|rss[?/])[\w-]+)
|
|
|
|
|
|
|
|
)(?:/posts)?/?(?:$|[?#])'''
|
|
|
|
_TESTS = [{
|
|
|
|
_TESTS = [{
|
|
|
|
'url': 'https://www.patreon.com/dissonancepod/',
|
|
|
|
'url': 'https://www.patreon.com/dissonancepod/',
|
|
|
|
'info_dict': {
|
|
|
|
'info_dict': {
|
|
|
@ -496,10 +501,6 @@ class PatreonCampaignIE(PatreonBaseIE):
|
|
|
|
'only_matching': True,
|
|
|
|
'only_matching': True,
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
|
|
|
def suitable(cls, url):
|
|
|
|
|
|
|
|
return False if PatreonIE.suitable(url) else super().suitable(url)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _entries(self, campaign_id):
|
|
|
|
def _entries(self, campaign_id):
|
|
|
|
cursor = None
|
|
|
|
cursor = None
|
|
|
|
params = {
|
|
|
|
params = {
|
|
|
|