LeonardoCardoso / SwiftLinkPreview

It makes a preview from an URL, grabbing all the information such as title, relevant texts and images.
https://leocardz.com/swift-link-preview-5a9860c7756f
MIT License
1.37k stars 196 forks source link

No preview is loaded for a link to a tweet on Twitter #134

Open smaljaar opened 3 years ago

smaljaar commented 3 years ago

Using: SwiftLinkPreview 3.3.0 Xcode 12.4

Example: If you provide https://twitter.com/joshdholtz/status/1359219485543182337?s=20 as text to SwiftLinkPreview's preview(text:onSuccess:onFailure) method it responds in the success block with

Response(url: Optional(https://twitter.com/joshdholtz/status/1359219485543182337?s=20), finalUrl: Optional(https://twitter.com/joshdholtz/status/1359219485543182337?s=20), canonicalUrl: Optional("twitter.com"), title: nil, description: Optional("We’ve detected that JavaScript is disabled in this browser. Please enable JavaScript or switch to a supported browser to continue using twitter.com. You can see a list of supported browsers in our Help Center."), images: Optional(["https://abs.twimg.com/errors/logo46x38.png"]), image: Optional("https://abs.twimg.com/errors/logo46x38.png"), icon: Optional("https://abs.twimg.com/responsive-web/client-web-legacy/icon-ios.b1fc7275.png"), video: nil, price: nil)

The title is nil, and the images are generic Twitter icons not related to the Tweet.

kodekarim commented 3 years ago

Tested with some random Twitter link, the same error message of javascript is coming

chrysb commented 3 years ago

Anyone have a workaround for this? Would love to be able to embed tweets

chrysb commented 3 years ago

I actually figured a workaround using nitter.net (this site mirrors twitter.com and is non-javascript friendly). If I detect twitter.com, I swap out the domain to nitter.com for the unfurling, and then I switch it back before sending the data along:

if url.contains("/status/") && url.contains("twitter.com") {
  url = String(url).replacingOccurrences(of: "twitter.com", with: "nitter.net")
}
chadpav commented 2 years ago

Just tested the twitter link using the patch I submitted in https://github.com/LeonardoCardoso/SwiftLinkPreview/pull/155 and it works.

Looks like the user agent might be the root issue of multiple issues.

Razanajam commented 2 years ago

@LeonardoCardoso Can you please check this issue, I believe you have done an amazing job on this module. Can you please fix some of the issues?