私は私たちのサイト分析を行っています、そして私たちが行っていたプロモーションへのリファラーであったたくさんのt.coURLを持っています。Twitter APIやその他の方法で、元のツイートに戻す方法があるかどうかを調べています。私はこれを行うための良い手段を見つけることができないようですが、それはありますか?
6 に答える
t.co転送がツイートを指すと、そのツイートのWebページに移動し、ページのHTMLに正規URLが含まれます。
この情報を取得するための醜い方法は、wgetまたはcurlを使用して、最初のツイートのURLを含むHTML宛先を取得することです。
これを行うためのより良い方法は、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)
そのコードは、Twitterのt.coサイトだけでなく、これらのURL短縮サービスのいずれでも機能します。
私はPython2.7でテストを行いましたが、上記のコードがPython3.xで機能する可能性があります。いずれにせよ、Requestsはあなたの友達です。詳細については、ドキュメントを参照してください。
http://docs.python-requests.org/en/latest/index.html
リダイレクトと履歴のセクションでは、この例について説明します。
Twitter APIを介してそれを行う方法がわかりません。また、すべてのURL短縮が自動的に行われる場合は不可能な場合があります。それでも、APIベースのソリューションはt.coアドレスでのみ機能しますが、上記のコードは、他の短縮URLまたは別の場所にリダイレクトするURL(HTTP 301または302応答コードなど)で機能します。
編集(これまでより少し遅れて):上記を使用してt.coフォワードが実際に指している場所を見つけた後、3つまたは4つのタイプの可能な結果が得られます。最も一般的なのは、OPがそれらすべてを信じていることであり、ツイートに貼り付けられたURLの短縮であり、公平を期すために、それがほとんどのURLです。
他の可能性は、それがツイート自体にリンクしていることです。これは通常、かなり長いツイートでのみ表示されます(文字数制限の増加に伴って頻度がどれだけ増加するかはわかりません)。また、ツイート作成者のステータスURLとは独立したステータスのURLに転送します。これは、埋め込みメディア(画像とビデオ)の場合によくあることです。さらに、引用ツイートまたはリツイートされているツイートのURLに転送します。
OPの元のシナリオを考えると、これらの内部Twitterの使用法は見られないはずであり、ここでは「通常の」転送のみが問題になります。現在、twitter.comでt.coアドレスを検索しても、使用されている組み合わせに関係なく、何も利用できません。
ただし、この回答の冒頭にあるようなスクリプトによって明らかにされたターゲットアドレスを検索することは、まったく別の問題です。これにより、一般公開され、そのリンクを投稿したすべてのツイートの結果が生成されます。ただし、次のようないくつかの欠点があります。
- 検索結果には、他の転送サービスが使用されたツイートも含まれます。
- そのURLにリンクしているすべてのツイートが同じt.coアドレスを生成したかどうかを判断する方法はありません。
- そうでない場合、どのt.coフォワードがどのツイートによって使用されたかを確認する方法はありません。
それでも、Webサーバー上の完全なリファラーログと組み合わせて、それをさらに絞り込むことができる場合があります。リファラーURLが単にtwitter.comではなくツイートのURLを報告すると仮定します。ただし、それは、リンクをクリックした人がそうした方法によって決定される可能性が高くなります(つまり、ストリームでツイートを見ただけなのか、完全なURLを表示するのに十分に拡大したのか)。
リファラーログの有効性は散発的になり、使用中のアプリがそのデータをサードパーティのWebサイトに提供するためにそのようにツイートを拡張する可能性が低いスマートフォンやタブレットでは低下する可能性があります。
#!/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にお金を払わなくても。
- http://www.getlinkinfo.comなどのサービスを使用して、短縮URLが指している元のURLを確認します。
- その元のURLをGoogleの検索ボックスに貼り付けます
Twitterからの参照を特に探している場合は、次のようにしてください。site:twitter.com "https://example.com"
これは、twitterが提供するパブリックAPIでは不可能です。
私が正しく理解していれば、元々特定のt.coリンクが埋め込まれているツイートを見つけたいと思うでしょう。つまり、t.coをフォローすると、Twitterのツイートではなく、サイトに解決されます。
Twitter検索APIを使用すると、t.co URLに言及しているツイート(表示されている場合)を検索し、その方法でリンクを見つけることができます。
これを行うためのPythonをいくつか紹介します。これは、私が書いたより長いブログ投稿から抜粋したものです。
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
あなたのページを参照したツイートのリストは、GoogleAnalyticsのメニューから直接利用できSocial networks
ますTrackbacks
。
これは、元のツイートを見つける方法です。
- t.coリンクをクリックして、元のURLを見つけます
- https://twitter.com/explore(#)にアクセスします
- リンクをコピーして「Twitterの検索」検索ボックスに貼り付けます
- リンク付きのツイートが表示されます