※タイトル変更しました。「脚注記法」ですね。
はてなブログや、はてなダイアリーには、脚注機能みたいなのがあります。
(さらに…)
※タイトル変更しました。「脚注記法」ですね。
はてなブログや、はてなダイアリーには、脚注機能みたいなのがあります。
(さらに…)
確か、表示ルールが厳格化されたのは、TwitterAPI1.1に移行してからなので、いまさらの話ではあるのだけれど…。
Twitterのツイートを利用する場合…。
たとえば、ツイート本文(text)において…。
みたいなルールがあったりする。(他にもたくさんあるけれど、今回は本文の話のみ。)
1と2に関しては正規表現でどうにでもなるとはいえ…。(実際そのように対応している方もいらっしゃる模様)
問題は3つ目。「え…?わざわざリクエストを試みて元URLを取得した上で置換しないとダメなの…うざっ!」とか最初は思ってたのだけれど…。
ドキュメントをよく見てみると、ツイート取得系のAPIリクエスト時にinclude_entitiesをtrueにしてやる事で…。
以下のようにテキストに含まれるハッシュタグ・メンション(スクリーンネーム)・URL等についての情報が返ってくる。
["entities"]=> array(4) { ["hashtags"]=> array(0) { } ["symbols"]=> array(0) { } ["user_mentions"]=> array(0) { } ["urls"]=> array(1) { [0]=> array(4) { ["url"]=> string(22) "http://t.co/rOptxPlCAj" ["expanded_url"]=> string(31) "https://otapps.net/archives/3662" ["display_url"]=> string(24) "otapps.net/archives/3662" ["indices"]=> array(2) { [0]=> int(47) [1]=> int(69) } } } }
なので、スクリーンネームやらハッシュタグは勿論、URLに関してもこれらのデータを用いる事で、単純な「置換」でどうにでもなる感じ。
何か色々みてると正規表現駆使して頑張ってる方もいらっしゃるようなので、一応、Tipsとして記事にしてみました。(ここ数日、どんなに下らない事でもブログ更新しよう!みたいなノリなので。)
Twitterではツイートの投稿時間の表示方法として、「○分前に投稿」といったツイートが投稿された時間からの経過時間表記を標準としています。
んで、TwitterAPIで取得したツイートの投稿時間を投稿からの経過時間で表示する方法です。
以下PHPで。
/* * 投稿時間からの経過時間を返す * @param string $created_at 投稿時間 * */ function getPassedTime($created_at) { $now = date_create(date('Y-m-d H:i:s'));//(*1) $created = date_create(date('Y-m-d H:i:s', strtotime($created_at)));//(*2) $passed = date_diff($now, $created); switch (true) : case ($passed->y):return $passed->y . '年前'; case ($passed->m):return $passed->m . 'ヶ月前'; case ($passed->w):return $passed->w . '週間前'; case ($passed->d):return $passed->d . '日前'; case ($passed->h):return $passed->h . '時間前'; case ($passed->i):return $passed->i . '分前'; default: return $passed->s . "秒前"; endswitch; }
こんな感じ。
補足:
記事の都合上、(*1)で現在時間を第二引数無しのdateで取ってしまってるので、ローカルの時計と、ローカルのタイムゾーン(Asia/Tokyo)が反映されるため、(*2)でちょっと面倒なことになってるけれど…。
現在時間もヘッダから拾ってきて、それぞれGMTな現在時間・投稿時間を直にdate_createすれば、もう少しシンプルになるはず。(タイムゾーンを意識する必要がないし、結果となる経過時間がローカルの時間に依存しないから。)
正直、個人的には2014/01/01 02:15:01 JST みたいな時間表示の方が、データの取得時間を意識する必要がないので好きなので「めんどくさいなー」と思ったのですが、↑の書いてるうちに「あぁ。そうか。」と。
補足で書いているように、相対表示、やり方によっては、タイムゾーンを意識する必要がないのはメリットかもれないかな〜と。世界広いし。
どちらにしても、相対表記のみでは情報不足なので、完全な時間表示は必要になるけれど。
釣りのような・・・というかモロに釣りな感じのタイトルですが、最近PV低迷気味なので、今後こういう糞みたいなタイトル多用して、糞みたいな記事量産してみようかと。(あ。糞とか言っちゃった。キャ☆)
さて、Twitterにおける非公開アカウントは承認されたアカウントしか閲覧する事が出来ませんが…。
非公開アカウントのつぶやきに対して公開アカウントが飛ばした、メンションやリプライ等は普通に閲覧することが出来ます。
Twitter検索では特定のスクリーンネーム宛のリプライ等を検索する事ができます。
これを利用します。
Twitter検索で…。
toオプション(リプライのみ)
to:対象のスクリーンネーム
@オプション(リプライ・メンション)
@対象のスクリーンネーム
などと検索し、非公開アカウントに対するリプライ・メンションを参照する事で、非公開アカウントの発言を「推測」する事が出来るかもしれません。元のツイートを引用した上でリプライとかされてたら、モロですよね。
逆に言えば、非公開アカウントの方は、それらのリプライ等から自身のツイートを推測される可能性があるという事を意識した方が良いかもしれません。
「Twitter検索のオプションってなんだよ!!」って方向けに
Twitterの高度な検索のURLも貼っておきます。
https://twitter.com/search-advanced?lang=ja
このユーザー宛ての返信 がtoオプション
このユーザーへの@ツイート が@オプション(?)
にそれぞれ該当します。
というか、「相手が非公開アカウントであることを良いことに、そのアカウントが実際にはしていない発言を非公式RTした風にリプ飛ばしちゃう!」みたいなイタズラする人とかいたら、地味にヤな感じかもしれませんね…。
Android端末でTwitter( twitter.com )を開いても、モバイル版Twitter( mobile.twitter.com )にリダイレクトされてしまいます。
んで、モバイル用のTwitterには、Twitter連携アプリ解除用の画面が(多分)存在しないので、PC版Twitterを表示し、そこからTwitter連携アプリの連携を解除する方法を紹介します。
(さらに…)