|
|
@ -11,7 +11,8 @@ from .. import text
|
|
|
|
from ..cache import memcache
|
|
|
|
from ..cache import memcache
|
|
|
|
import re
|
|
|
|
import re
|
|
|
|
|
|
|
|
|
|
|
|
BASE_PATTERN = (
|
|
|
|
BASE_PATTERN = r"(?:https?://)?(?:www\.)?fanbox\.cc"
|
|
|
|
|
|
|
|
USER_PATTERN = (
|
|
|
|
r"(?:https?://)?(?:"
|
|
|
|
r"(?:https?://)?(?:"
|
|
|
|
r"(?!www\.)([\w-]+)\.fanbox\.cc|"
|
|
|
|
r"(?!www\.)([\w-]+)\.fanbox\.cc|"
|
|
|
|
r"(?:www\.)?fanbox\.cc/@([\w-]+))"
|
|
|
|
r"(?:www\.)?fanbox\.cc/@([\w-]+))"
|
|
|
@ -290,7 +291,7 @@ class FanboxExtractor(Extractor):
|
|
|
|
class FanboxCreatorExtractor(FanboxExtractor):
|
|
|
|
class FanboxCreatorExtractor(FanboxExtractor):
|
|
|
|
"""Extractor for a Fanbox creator's works"""
|
|
|
|
"""Extractor for a Fanbox creator's works"""
|
|
|
|
subcategory = "creator"
|
|
|
|
subcategory = "creator"
|
|
|
|
pattern = BASE_PATTERN + r"(?:/posts)?/?$"
|
|
|
|
pattern = USER_PATTERN + r"(?:/posts)?/?$"
|
|
|
|
example = "https://USER.fanbox.cc/"
|
|
|
|
example = "https://USER.fanbox.cc/"
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, match):
|
|
|
|
def __init__(self, match):
|
|
|
@ -305,7 +306,7 @@ class FanboxCreatorExtractor(FanboxExtractor):
|
|
|
|
class FanboxPostExtractor(FanboxExtractor):
|
|
|
|
class FanboxPostExtractor(FanboxExtractor):
|
|
|
|
"""Extractor for media from a single Fanbox post"""
|
|
|
|
"""Extractor for media from a single Fanbox post"""
|
|
|
|
subcategory = "post"
|
|
|
|
subcategory = "post"
|
|
|
|
pattern = BASE_PATTERN + r"/posts/(\d+)"
|
|
|
|
pattern = USER_PATTERN + r"/posts/(\d+)"
|
|
|
|
example = "https://USER.fanbox.cc/posts/12345"
|
|
|
|
example = "https://USER.fanbox.cc/posts/12345"
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, match):
|
|
|
|
def __init__(self, match):
|
|
|
@ -316,6 +317,28 @@ class FanboxPostExtractor(FanboxExtractor):
|
|
|
|
return (self._get_post_data(self.post_id),)
|
|
|
|
return (self._get_post_data(self.post_id),)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FanboxHomeExtractor(FanboxExtractor):
|
|
|
|
|
|
|
|
"""Extractor for your Fanbox home feed"""
|
|
|
|
|
|
|
|
subcategory = "home"
|
|
|
|
|
|
|
|
pattern = BASE_PATTERN + r"/?$"
|
|
|
|
|
|
|
|
example = "https://fanbox.cc/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def posts(self):
|
|
|
|
|
|
|
|
url = "https://api.fanbox.cc/post.listHome?limit=10"
|
|
|
|
|
|
|
|
return self._pagination(url)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FanboxSupportingExtractor(FanboxExtractor):
|
|
|
|
|
|
|
|
"""Extractor for your supported Fanbox users feed"""
|
|
|
|
|
|
|
|
subcategory = "supporting"
|
|
|
|
|
|
|
|
pattern = BASE_PATTERN + r"/home/supporting"
|
|
|
|
|
|
|
|
example = "https://fanbox.cc/home/supporting"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def posts(self):
|
|
|
|
|
|
|
|
url = "https://api.fanbox.cc/post.listSupporting?limit=10"
|
|
|
|
|
|
|
|
return self._pagination(url)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FanboxRedirectExtractor(Extractor):
|
|
|
|
class FanboxRedirectExtractor(Extractor):
|
|
|
|
"""Extractor for pixiv redirects to fanbox.cc"""
|
|
|
|
"""Extractor for pixiv redirects to fanbox.cc"""
|
|
|
|
category = "fanbox"
|
|
|
|
category = "fanbox"
|
|
|
|