tweet.nim 816 B

12345678910111213141516171819202122232425262728293031
  1. import httpclient, asyncdispatch, strutils, uri
  2. import ".."/[types, parser]
  3. import utils, consts, media
  4. proc getTweet*(username, id, agent: string): Future[Conversation] {.async.} =
  5. let headers = newHttpHeaders({
  6. "Accept": jsonAccept,
  7. "Referer": $base,
  8. "User-Agent": agent,
  9. "X-Twitter-Active-User": "yes",
  10. "X-Requested-With": "XMLHttpRequest",
  11. "Accept-Language": lang,
  12. "pragma": "no-cache",
  13. "x-previous-page-name": "profile"
  14. })
  15. let
  16. url = base / username / tweetUrl / id
  17. html = await fetchHtml(url, headers)
  18. if html == nil: return
  19. result = parseConversation(html)
  20. let
  21. vidsFut = getConversationVideos(result, agent)
  22. pollFut = getConversationPolls(result, agent)
  23. cardFut = getConversationCards(result, agent)
  24. await all(vidsFut, pollFut, cardFut)