Twitter タグが付けられた記事一覧を表示しています。

Twitterでの「自動フォロー返し」のようなものを5行程度のPHPスクリプトで実現する方法。

5行程度のPHPスクリプトでTwitter自動フォロー返し(のようなもの)を実現する方法です。
単に「実現方法」の紹介で、ソレを推奨する気はありませんし、そもそも、ここで紹介するスクリプトはエラー処理とか一切していないので、「たぶん動作はするけれど、実際には使えないもの」です。(色々な意味で。)
ちなみにフォローまたはフォロワーが5000を超えてるアカウントでは正常に動作しないと思います。ネタ記事にそこまでこだわる必要無いと思いますし。
一度の実行で最大15件のフォロー返しが可能なはずです。
cron等で、20分に1回実行~とかで「自動フォロー返し」のような事が実現出来るかもしれません
エラー処理してないので、そのまま使う事はおすすめしませんし、そもそも自動フォロー返しというもの自体おすすめしませんが。

ライブラリ twitteroauthを利用する必要があります。
ソースは以下。

<?php
require  'twitteroauthのパス';
$tw = new TwitterOAuth('こんしゅーまきー','こんしゅーまきーしーくれっと' , 'あくせすとーくん', 'あくせすとーくんしーくれっと');
$targets = array_chunk(array_diff($tw->get('followers/ids', array('stringify_ids'=>'true','count'=>5000))->ids,$tw->get('friends/ids', array('stringify_ids'=>'true','count'=>5000))->ids), 15)[0];
foreach($targets as $id){$tw->post('friendships/create', array('user_id' => $id));}

twitteroauthのパス、こんしゅーまきー、こんしゅーましーくれっと、あくせすとーくん、あくせすとーくんしーくれっと はそれぞれ適宜置き換える必要があります。

cute

公開日:2014年11月21日
タグ:, , ,

Linkis(?)とかいうTwitter連携サービスがちょっと個人的に「迷惑」みたいな話。

別に「きけんだああ!」なんてあったまの悪い事を叫ぶつもりはありませんが…。
linkis.comというサービスが「個人的にちょっと・・・。」という話です。

どういうサービスかというと…。
URLを含むツイートが投稿した場合に、そのツイートを削除して、URLを自身の短縮URL(短縮どころか長くなってるけれど)に置き換えて、再投稿する感じのサービスです。
んで、その再投稿されたURLを踏むと…。ln.isドメインからlinkis.comドメインにリダイレクトされ…。

d1

のような感じで、フレーム内に最初に投稿されたURLのウェブサイトが展開されます。
ついでに、「Linkis.comでTwitterへの共有は特別なものになります!」的な宣伝ポップアップ付き。※一度閉じるとCookie消えるまで表示されないようですが。

とりあえず…。
uza
みたいな。

んで、上記のConnect Twitter accountをクリックするとおなじみのアプリケーション認可画面。

auth

ちなみに、私が実際に認可してみた感じだと、これを認可しただけでは、「URLを含むツイートの削除→再投稿」は行われませんでした。
ていうか、link.isにログインしてSetting画面を見てみると…。

setting

みたいな感じで、Twitter automation(リンクの置換)はデフォルトでは無効です。
「利用するなら利用規約とプライバシーポリシーに同意する必要があるよ!」的な注釈付きで。

んで、これをあえて有効化する事で、この記事の冒頭で触れたような、リンク置換(つぅか、ツイートを削除した上で置き換え)が行われるようになります。

「ユーザが認可した上であえてオプションを有効化して利用しているのならそれでいいじゃないか。」って感じではあるのですが、そのURL置換が個人的に「大迷惑」なのです。

置換されたURLはフレーム内に元のURLのウェブサイトを表示する事になるので…。
元のURLがTwitter連携サービス等であるなら、Twitter は X-Frame-Options が設定されているので…。
フレーム内の元のURLのウェブサイト認可画面に飛んだ時点でブラウザによって白紙ページなりエラーページ等が表示され、認可画面さえ開く事ができません。(ブラウザによってその表示は変わるのですが、めんどくさいので省略します。)
要は、折角URLを共有してもらっても、共有者(URLの投稿者)がlinkis.comのサービスを利用していると、そのリンクが置き換えられてしまい、そのリンクからやってきた方は、結果としてサービスを利用出来ないということです。

とりあえずFirefoxでは、白紙ページが表示されるのみで、デベロッパーツールでのエラーは以下のような感じ。

devtool-x-frame-options

まぁ、これだけなら、そのリンクを踏んでやってきたユーザがサービスを認可出来ないだけなのでそれ程大きな問題ではないです。

ただ…。
他所のフレーム内に表示された広告がクリックされたとして、その収益が反映されるのか否かが超問題です。(実際確認してないのでどういう扱いになるのかは知りませんけど)
他人のせいで、たとえ一円でも損するかもしれないと想像するだけで軽く発狂しそうです。
気持ちとしては、

huzake

みたいな。
バフたんおこです。激おこです。

ていうか、ln.isでtwitter検索してそのユーザの発言等を見てみた感じ、それを「認可する」まではともかくとして、わざわざ設定ページでURL置換機能を有効化するようなユーザ層・・・?うーん。とか。
中には、まったく意識せずに、寝ぼけて、アプリケーションを認可した上で、意図しないままに設定画面へ行き、URL置換オプションを有効化している方もいらっしゃるかもしれないので、一応、自身のアカウントでURL置換が行われてないか「なんとなく」確認する方法を書いておきますね!

https://twitter.com/search?f=realtime&q=ln.is from:○○&src=typd

↑のURLの○○の部分に自分のスクリーンネーム入れて、ブラウザのロケーションバーに貼り付けてね!

もしも貴方が意図せず、「寝ぼけて「linkis.com」を認可した上で設定画面へ〜(略)」って感じでURL付きツイートがln.isに置換されてしまっている状態で、それを好ましく無いと考えるのであれば、Twitter公式(WEB)の設定→アプリ連携から連携解除とかすると良いかもしれませんね!

Twitter連携アプリの解除方法については以下の記事でも説明しています。
http://www.oteage.com/entry/2015/01/07/010500

最後にとても大切なこと

私自身が「個人的に迷惑」だと言っているだけで、linkis.comのサービスを否定する気はありません。
好きで利用している方は別にソレでよいと思います。
「自覚した上で好きで使っている」のなら。

追記 2014/11/17

ブログを書いた事をFaceBookページに投稿しようとしたら怒られてしまいました。
facebook

linkis.comへのリンクを含むという事ではじかれたぽいです。
こまった。

公開日:2014年11月17日
タグ:,

Twitterのディスプレイガイドラインに関する話。(ツイート本文編)

確か、表示ルールが厳格化されたのは、TwitterAPI1.1に移行してからなので、いまさらの話ではあるのだけれど…。

Twitterのツイートを利用する場合…。
たとえば、ツイート本文(text)において…。

  1. @スクリーンネーム が含まれている場合は対象のアカウントへリンク
  2. #ハッシュタグ が含まれてる場合は対象のハッシュタグの検索ページへリンク
  3. URL が含まれている場合は、textに含まれる短縮済みのURLを元のURLに展開した上でディスプレイURLとしてリンクする

みたいなルールがあったりする。(他にもたくさんあるけれど、今回は本文の話のみ。)

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として記事にしてみました。(ここ数日、どんなに下らない事でもブログ更新しよう!みたいなノリなので。)

公開日:2014年11月16日
タグ:, ,

TwitterAPIで取得したツイートの投稿時間を「○分前」といった相対表記に変換する方法。

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 みたいな時間表示の方が、データの取得時間を意識する必要がないので好きなので「めんどくさいなー」と思ったのですが、↑の書いてるうちに「あぁ。そうか。」と。
補足で書いているように、相対表示、やり方によっては、タイムゾーンを意識する必要がないのはメリットかもれないかな〜と。世界広いし。
どちらにしても、相対表記のみでは情報不足なので、完全な時間表示は必要になるけれど。

公開日:2014年11月16日
タグ:, , , ,

Twitterの「非公開アカウント」(鍵アカウント?)の発言を推測する方法。

釣りのような・・・というかモロに釣りな感じのタイトルですが、最近PV低迷気味なので、今後こういう糞みたいなタイトル多用して、糞みたいな記事量産してみようかと。(あ。糞とか言っちゃった。キャ☆)

さて、Twitterにおける非公開アカウントは承認されたアカウントしか閲覧する事が出来ませんが…。
非公開アカウントのつぶやきに対して公開アカウントが飛ばした、メンションやリプライ等は普通に閲覧することが出来ます。

Twitter検索では特定のスクリーンネーム宛のリプライ等を検索する事ができます。
これを利用します。

Twitter検索で…。
toオプション(リプライのみ)
to:対象のスクリーンネーム

@オプション(リプライ・メンション)
@対象のスクリーンネーム

などと検索し、非公開アカウントに対するリプライ・メンションを参照する事で、非公開アカウントの発言を「推測」する事が出来るかもしれません。元のツイートを引用した上でリプライとかされてたら、モロですよね。
逆に言えば、非公開アカウントの方は、それらのリプライ等から自身のツイートを推測される可能性があるという事を意識した方が良いかもしれません。

「Twitter検索のオプションってなんだよ!!」って方向けに
Twitterの高度な検索のURLも貼っておきます。
https://twitter.com/search-advanced?lang=ja

このユーザー宛ての返信 がtoオプション
このユーザーへの@ツイート が@オプション(?)

にそれぞれ該当します。

どうでも良いけど。

というか、「相手が非公開アカウントであることを良いことに、そのアカウントが実際にはしていない発言を非公式RTした風にリプ飛ばしちゃう!」みたいなイタズラする人とかいたら、地味にヤな感じかもしれませんね…。

damedazo

公開日:2014年11月13日
タグ:,
スポンサード リンク