[extractor/truth] Add extractor (#4609)

Closes #3865
Authored by: palewire
pull/4663/head
Ben Welsh 2022-08-14 13:06:04 -07:00 zatwierdzone przez GitHub
rodzic 63be30e3e0
commit cb7cc448c0
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 70 dodań i 0 usunięć

Wyświetl plik

@ -1794,6 +1794,7 @@ from .trovo import (
) )
from .trueid import TrueIDIE from .trueid import TrueIDIE
from .trunews import TruNewsIE from .trunews import TruNewsIE
from .truth import TruthIE
from .trutv import TruTVIE from .trutv import TruTVIE
from .tube8 import Tube8IE from .tube8 import Tube8IE
from .tubetugraz import TubeTuGrazIE, TubeTuGrazSeriesIE from .tubetugraz import TubeTuGrazIE, TubeTuGrazSeriesIE

Wyświetl plik

@ -0,0 +1,69 @@
from .common import InfoExtractor
from ..utils import (
clean_html,
format_field,
int_or_none,
strip_or_none,
traverse_obj,
unified_timestamp,
)
class TruthIE(InfoExtractor):
_VALID_URL = r'https?://truthsocial\.com/@[^/]+/posts/(?P<id>\d+)'
_TESTS = [
{
'url': 'https://truthsocial.com/@realDonaldTrump/posts/108779000807761862',
'md5': '4a5fb1470c192e493d9efd6f19e514d3',
'info_dict': {
'id': '108779000807761862',
'ext': 'qt',
'title': 'Truth video #108779000807761862',
'description': None,
'timestamp': 1659835827,
'upload_date': '20220807',
'uploader': 'Donald J. Trump',
'uploader_id': 'realDonaldTrump',
'uploader_url': 'https://truthsocial.com/@realDonaldTrump',
'repost_count': int,
'comment_count': int,
'like_count': int,
},
},
{
'url': 'https://truthsocial.com/@ProjectVeritasAction/posts/108618228543962049',
'md5': 'fd47ba68933f9dce27accc52275be9c3',
'info_dict': {
'id': '108618228543962049',
'ext': 'mp4',
'title': 'md5:debde7186cf83f60ff7b44dbb9444e35',
'description': 'md5:de2fc49045bf92bb8dc97e56503b150f',
'timestamp': 1657382637,
'upload_date': '20220709',
'uploader': 'Project Veritas Action',
'uploader_id': 'ProjectVeritasAction',
'uploader_url': 'https://truthsocial.com/@ProjectVeritasAction',
'repost_count': int,
'comment_count': int,
'like_count': int,
},
},
]
def _real_extract(self, url):
video_id = self._match_id(url)
status = self._download_json(f'https://truthsocial.com/api/v1/statuses/{video_id}', video_id)
uploader_id = strip_or_none(traverse_obj(status, ('account', 'username')))
return {
'id': video_id,
'url': status['media_attachments'][0]['url'],
'title': '',
'description': strip_or_none(clean_html(status.get('content'))) or None,
'timestamp': unified_timestamp(status.get('created_at')),
'uploader': strip_or_none(traverse_obj(status, ('account', 'display_name'))),
'uploader_id': uploader_id,
'uploader_url': format_field(uploader_id, None, 'https://truthsocial.com/@%s'),
'repost_count': int_or_none(status.get('reblogs_count')),
'like_count': int_or_none(status.get('favourites_count')),
'comment_count': int_or_none(status.get('replies_count')),
}