diff --git a/timeline_v2.go b/timeline_v2.go index 2d7f10e..5dbfb8a 100644 --- a/timeline_v2.go +++ b/timeline_v2.go @@ -56,6 +56,7 @@ func (result *result) parse() *Tweet { if result.QuotedStatusResult.Result != nil { tw.QuotedStatus = result.QuotedStatusResult.Result.parse() } + tw.HTML = expandMediaURLs(tw.HTML, legacy.ExtendedEntities.Media) return tw } diff --git a/types.go b/types.go index 0118fb2..f18f109 100644 --- a/types.go +++ b/types.go @@ -99,6 +99,25 @@ type ( GIFs []GIF } + ExtendedMedia struct { + IDStr string `json:"id_str"` + MediaURLHttps string `json:"media_url_https"` + ExtSensitiveMediaWarning struct { + AdultContent bool `json:"adult_content"` + GraphicViolence bool `json:"graphic_violence"` + Other bool `json:"other"` + } `json:"ext_sensitive_media_warning"` + Type string `json:"type"` + URL string `json:"url"` + VideoInfo struct { + Variants []struct { + Type string `json:"content_type"` + Bitrate int `json:"bitrate"` + URL string `json:"url"` + } `json:"variants"` + } `json:"video_info"` + } + legacyTweet struct { ConversationIDStr string `json:"conversation_id_str"` CreatedAt string `json:"created_at"` @@ -121,24 +140,7 @@ type ( } `json:"user_mentions"` } `json:"entities"` ExtendedEntities struct { - Media []struct { - IDStr string `json:"id_str"` - MediaURLHttps string `json:"media_url_https"` - ExtSensitiveMediaWarning struct { - AdultContent bool `json:"adult_content"` - GraphicViolence bool `json:"graphic_violence"` - Other bool `json:"other"` - } `json:"ext_sensitive_media_warning"` - Type string `json:"type"` - URL string `json:"url"` - VideoInfo struct { - Variants []struct { - Type string `json:"content_type"` - Bitrate int `json:"bitrate"` - URL string `json:"url"` - } `json:"variants"` - } `json:"video_info"` - } `json:"media"` + Media []ExtendedMedia `json:"media"` } `json:"extended_entities"` IDStr string `json:"id_str"` InReplyToStatusIDStr string `json:"in_reply_to_status_id_str"` diff --git a/util.go b/util.go index f288a13..f6f74f5 100644 --- a/util.go +++ b/util.go @@ -388,6 +388,14 @@ func expandURLs(text string, urls []Url) string { return expandedText } +func expandMediaURLs(text string, extendedMediaEntities []ExtendedMedia) string { + expandedText := text + for _, entity := range extendedMediaEntities { + expandedText = strings.ReplaceAll(expandedText, entity.URL, entity.MediaURLHttps) + } + return expandedText +} + func parseProfileV2(user userResult) Profile { u := user.Legacy description := expandURLs(u.Description, u.Entities.Description.Urls)