如何将t.co URL转换为原始推文?

时间:2012-12-01 13:47:37

标签: twitter url-shortener short-url

我正在浏览我们的网站分析,并且有大量的t.co网址,这些网址是我们正在进行的促销活动的推介。我试图弄清楚是否有办法通过Twitter API或其他方式将这些转回原始推文。我似乎无法找到一个很好的方法来做到这一点,是否有一个?

6 个答案:

答案 0 :(得分:1)

使用twitter提供的公共API无法做到这一点。

如果我理解正确,您希望找到最初嵌入了特定t.co链接的推文。即,随后的t.co解析到您的网站,而不是Twitter推文。

答案 1 :(得分:1)

  1. 找出缩短的网址指向的原始网址,例如:使用http://www.getlinkinfo.com
  2. 等服务
  3. 将原始网址粘贴到Google的搜索框
  4. 如果您是专门寻找来自Twitter的引用,请执行以下操作:len([], 0). len([H|T], N1) :- len(T, N), N1 is N+1.

答案 2 :(得分:0)

引用您网页的推文列表可在Social networks下找到,然后直接在Google Analytics中提供Trackbacks菜单。

答案 3 :(得分:0)

如果您使用Twitter搜索API,则可以找到提及t.co URL的推文(如果您可以看到它们)并以这种方式找到链接。

这里有一些Python,摘自longer blog post I wrote

from requests_oauthlib import OAuth1Session


sess = OAuth1Session(
    client_key=TWITTER_CONSUMER_KEY,
    client_secret=TWITTER_CONSUMER_SECRET,
    resource_owner_key=TWITTER_ACCESS_TOKEN,
    resource_owner_secret=TWITTER_ACCESS_TOKEN_SECRET
)


def find_tweets_using_tco(tco_url):
    """
    Given a shortened t.co URL, return a set of URLs for tweets that use this URL.
    """
    # See https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets.html
    resp = sess.get(
        "https://api.twitter.com/1.1/search/tweets.json",
        params={
            "q": tco_url,
            "count": 100,
            "include_entities": True
        }
    )

    statuses = resp.json()["statuses"]

    tweet_urls = set()

    for status in statuses:
        # A retweet shows up as a new status in the Twitter API, but we're only
        # interested in the original tweet.  If this is a retweet, look through
        # to the original.
        try:
            tweet = status["retweeted_status"]
        except KeyError:
            tweet = status

        # If this tweet shows up in the search results for a reason other than
        # "it has this t.co URL as a short link", it's not interesting.
        if not any(u["url"] == tco_url for u in tweet["entities"]["urls"]):
            continue

        url = "https://twitter.com/%s/status/%s" % (
            tweet["user"]["screen_name"], tweet["id_str"]
        )

        tweet_urls.add(url)

    return tweet_urls

答案 4 :(得分:-1)

这是您查找原始推文的方法:

  1. 点击t.co链接以找到原始URL
  2. 转到https://twitter.com/explore(#)
  3. 将链接复制并粘贴到“搜索Twitter”搜索框中
  4. 您将看到带有链接的推文

答案 5 :(得分:-2)

当t.co转发指向推文时,它会转到该推文的网页,该页面的HTML将包含规范网址。

获取此信息的丑陋方法是使用wget或curl来获取HTML目标,其中包含初始推文的URL。

更好的方法是使用Python模块Requests(您需要先安装此模块)。这是一个快速的命令行脚本:

#!/usr/bin/env python

import requests

shorturl = raw_input("Enter the shortened URL in its entirety: ")
r = requests.get(shorturl)

print("""
The shortened URL forwards to:

    %s
""" % r.url)

该代码适用于任何这些URL缩短服务,而不仅仅是Twitter的t.co网站。

我使用Python 2.7进行了测试,但上述代码很可能适用于Python 3.x.无论哪种方式,请求都是您的朋友,请参阅文档以获取详细信息:

http://docs.python-requests.org/en/latest/index.html

重定向和历史记录部分涵盖了此示例。

我不知道通过Twitter API做到这一点的方法,如果所有URL缩短都是自动的,则可能无法实现。仍然基于API的解决方案仅适用于t.co地址,而上述代码适用于任何其他缩短的URL或任何重定向(例如HTTP 301或302响应代码)到另一个位置的URL。

编辑(比以后更好一点):在使用上述内容找到t.co forward实际指向的位置后,将会有三种或四种可能的结果。最常见的是它是OP认为它们都是,缩短到粘贴到推文的URL,并且公平地说,这就是它们中的大多数。

其他可能性是它链接回到推文本身,这通常只出现一些相当长的推文(不确定频率随着字符限制的增加而增加多少);以及转发到独立于推文作者状态URL的状态的URL,这通常是嵌入式媒体(图像和视频)的情况;加上转发到Twitter推文或转发的推文的网址。

鉴于OP的原始场景,不应该看到任何内部的Twitter用法,只有“正常”转发才会引起关注。现在在twitter.com上搜索t.co地址,无论使用什么组合,都不会给我们带来任何好处。

然而,搜索目标地址,这个脚本就像在这个答案开头的那个脚本所揭示的那样,是另一回事。这将产生每条推文的结果,这些推文可公开访问并发布该链接。但是,有一些缺点,包括:

  1. 搜索结果将包括使用其他转发服务的推文。
  2. 无法判断链接到该网址的所有推文是否都生成了相同的t.co地址。
  3. 如果没有,则无法确定哪条推文使用了哪个推文。
  4. 然而,结合Web服务器上的完整引用者日志,可能会进一步缩小范围。假设引荐来源URL报告推文的URL而不仅仅是twitter.com。但是,这更可能取决于点击链接的人这样做的方式(即他们只是在流中看到推文,或者他们是否扩展它以显示其完整的URL)。

    我怀疑推荐人日志的有效性将是零星的,并且可能在智能手机和平板电脑上有所减少,其中使用的应用程序不太可能以这种方式扩展推文,以便随后将数据提供给第三方网站。

    #!/usr/bin/env python3
    
    import requests
    import urllib.parse
    
    shorturl = input("Enter the shortened URL in its entirety: ")
    r0 = requests.get(shorturl, verify=True)
    t0 = "https://twitter.com/search?f=tweets&q="
    t1 = urllib.parse.quote_plus(r0.url)
    r1 = requests.get("{0}{1}".format(t0, t1), verify=True)
    
    # the results will be in r1.content
    # there may be some benefit from cutting the http:// or 
    # https:// from r0.url before creating the quoted string in t1.
    

    然而,这种情况一样好......没有支付Twitter以增强数据访问权。