mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-12-22 20:51:49 +00:00
[ie/MixchMovie] Add extractor (#10897)
Closes #10765 Authored by: Sakura286
This commit is contained in:
parent
c673731061
commit
0ec9bfed4d
2 changed files with 56 additions and 2 deletions
|
@ -1156,6 +1156,7 @@
|
|||
from .mixch import (
|
||||
MixchArchiveIE,
|
||||
MixchIE,
|
||||
MixchMovieIE,
|
||||
)
|
||||
from .mixcloud import (
|
||||
MixcloudIE,
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
class MixchIE(InfoExtractor):
|
||||
IE_NAME = 'mixch'
|
||||
_VALID_URL = r'https?://(?:www\.)?mixch\.tv/u/(?P<id>\d+)'
|
||||
_VALID_URL = r'https?://mixch\.tv/u/(?P<id>\d+)'
|
||||
|
||||
_TESTS = [{
|
||||
'url': 'https://mixch.tv/u/16943797/live',
|
||||
|
@ -74,7 +74,7 @@ def _get_comments(self, video_id):
|
|||
|
||||
class MixchArchiveIE(InfoExtractor):
|
||||
IE_NAME = 'mixch:archive'
|
||||
_VALID_URL = r'https?://(?:www\.)?mixch\.tv/archive/(?P<id>\d+)'
|
||||
_VALID_URL = r'https?://mixch\.tv/archive/(?P<id>\d+)'
|
||||
|
||||
_TESTS = [{
|
||||
'url': 'https://mixch.tv/archive/421',
|
||||
|
@ -116,3 +116,56 @@ def _real_extract(self, url):
|
|||
'formats': self._extract_m3u8_formats(info_json['archiveURL'], video_id),
|
||||
'thumbnail': traverse_obj(info_json, ('thumbnailURL', {url_or_none})),
|
||||
}
|
||||
|
||||
|
||||
class MixchMovieIE(InfoExtractor):
|
||||
IE_NAME = 'mixch:movie'
|
||||
_VALID_URL = r'https?://mixch\.tv/m/(?P<id>\w+)'
|
||||
|
||||
_TESTS = [{
|
||||
'url': 'https://mixch.tv/m/Ve8KNkJ5',
|
||||
'info_dict': {
|
||||
'id': 'Ve8KNkJ5',
|
||||
'title': '夏☀️\nムービーへのポイントは本イベントに加算されないので配信にてお願い致します🙇🏻\u200d♀️\n#TGCCAMPUS #ミス東大 #ミス東大2024 ',
|
||||
'ext': 'mp4',
|
||||
'uploader': 'ミス東大No.5 松藤百香🍑💫',
|
||||
'uploader_id': '12299174',
|
||||
'channel_follower_count': int,
|
||||
'view_count': int,
|
||||
'like_count': int,
|
||||
'comment_count': int,
|
||||
'timestamp': 1724070828,
|
||||
'uploader_url': 'https://mixch.tv/u/12299174',
|
||||
'live_status': 'not_live',
|
||||
'upload_date': '20240819',
|
||||
},
|
||||
}, {
|
||||
'url': 'https://mixch.tv/m/61DzpIKE',
|
||||
'only_matching': True,
|
||||
}]
|
||||
|
||||
def _real_extract(self, url):
|
||||
video_id = self._match_id(url)
|
||||
data = self._download_json(
|
||||
f'https://mixch.tv/api-web/movies/{video_id}', video_id)
|
||||
return {
|
||||
'id': video_id,
|
||||
'formats': [{
|
||||
'format_id': 'mp4',
|
||||
'url': data['movie']['file'],
|
||||
'ext': 'mp4',
|
||||
}],
|
||||
**traverse_obj(data, {
|
||||
'title': ('movie', 'title', {str}),
|
||||
'thumbnail': ('movie', 'thumbnailURL', {url_or_none}),
|
||||
'uploader': ('ownerInfo', 'name', {str}),
|
||||
'uploader_id': ('ownerInfo', 'id', {int}, {str_or_none}),
|
||||
'channel_follower_count': ('ownerInfo', 'fan', {int_or_none}),
|
||||
'view_count': ('ownerInfo', 'view', {int_or_none}),
|
||||
'like_count': ('movie', 'favCount', {int_or_none}),
|
||||
'comment_count': ('movie', 'commentCount', {int_or_none}),
|
||||
'timestamp': ('movie', 'published', {int_or_none}),
|
||||
'uploader_url': ('ownerInfo', 'id', {lambda x: x and f'https://mixch.tv/u/{x}'}, filter),
|
||||
}),
|
||||
'live_status': 'not_live',
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue