bbz

twitter api

_
previous | next | edit
1: 10/02/12(Fri) 01:59
perlで、twitter apiを使って投稿してみる。
BOTのようなことをするわけだが、BOTを作ることが目的ではない。
2: 10/02/12(Fri) 02:05
あるサイトを参考にする。あとで謝辞をのべます。
必要なモジュールをインストール。
YAML::Tiny
Net::Twitter

Tinyはcpanでできたが、Twitterは64bitではどうのこうのと言ってエラーになるので、
ppm install Net::Twitter
でインストールする。

前にもなんかで失敗して、ppmを使った覚えがある。
3: 10/02/12(Fri) 02:16
以下のように書いて、アカウントとパスワードを書いた config.yml というファイルを作る。

[pre]
#! /usr/bin/perl

use strict;
use warnings;
use YAML::Tiny;
use Net::Twitter;

my $config = (YAML::Tiny->read('config.yml'))->[0];
my $twit = Net::Twitter->new(username=>$config->{'username'},
password=>$config->{'password'});

$twit->update('I am not an animal.');

[/pre]

<config.yml>
[pre]
username: [i]your_account[/i]
password: [i]your_password[/i]
[/pre]
4: 10/02/12(Fri) 02:20
>>3のスクリプトを実行する。

[i]my_account[/i] I am not an animal.
half a minute ago from Perl Net::Twitter

となる。

from Perl Net::Twitter は出したくないなあ・・・
まあいっか。
5: 10/02/12(Fri) 02:25
日本語はエンコードしないとダメか・・・・
と調べかけるが、とりあえずやってみたら、いけた。

さっき書き忘れたが、perlのスクリプトの文字コードは utf-8 で保存する。

よし、これができれば、後は発想しだい。
このページのポストを押したときに更新通知をするとか、
ワンクリックでスクリーンショットをアップロードしてURLを通知するとか、
やらないけど、spam的なこともできる。

6: 10/02/12(Fri) 02:31
参考にさせていただいたサイトは、とくに紹介しなくても多分有名なので検索すればすぐ見つかるでしょう。
非常に親切で、ステップを追って説明されており、
内容そのものもですが、表現・説明の仕方も参考になりました。
7: 10/02/12(Fri) 02:36
今回は下準備の段階のみ参考にした。
ここが大事。
いろんなことをやろうとしていつもつまづくのは最初。
環境の問題、OSとかバージョンとかなんとか。

これは、何かするときに机の上を片付けるようなもの。
または、本を参照させるときにしおりを挟んでおくようなもの。

「そこにあるよ」と雑然とした机を指差したり、
「これ読めよ。目次でさがせよ」
みたいな説明のしかたは、ダメ。

手取り足取り教えてられない、社会は仕事はそんなに甘くない、というのはウソだ。

それが仕事だ。サービスだ。
われわれがしているのは奴隷の労働でも刑務所の作業でもないのだ。
8: 10/02/12(Fri) 02:39
仕事というのは、同じ事の繰り返し、単調な退屈なことの繰り返しがどうしてもある。
だが、それはことごとく根絶すべきである。
それを根絶するのが仕事でありサービスである。

メンドクサイとかタイクツだというのは、別に甘えでもワガママでもない。
機械にできることは機械にやらせる。

道を歩いていて、真ん中に石が落ちていたら脇にどける。

仕事では、自分が通るためにどけた石を、また元の位置に戻して進んでいくような人が、
たまにいる。




9: 10/02/12(Fri) 02:56
最近山登りをするようになったのだが、登り始めに必ず「一山」ある。息が切れ、足が重くなり、「こんな調子じゃとても頂上は無理だ」
という気にさせられる。

が、そこを越えるとすいすいと進む段階が現れる。

そして、その後も苦痛や困難は訪れるが、一回乗り越えることを知っているので対処することができる。
10: 10/02/12(Fri) 02:58
しかし、先ほど言ったような前人が石を置いたような困難に出会うと、ダメだ。
そういう困難に人は勝てない。
そりゃうつ病にもなるさ。
そういう道を行くと、そういう人が先に待っているということだ。
そして知らず知らず、自分も先人のようになってしまう。
11: Fri Feb 26 01:15:25 2010
ARGV[0]をtweetしてみた。日本語がダメだ。utf-8で保存したテキストファイルを読んで書いたらいけた。
140字を超える文字列を渡すと書けない。
12: Wed Mar 10 06:24:41 2010
こんどは、皆の発言を表示させてみた。
私は公式のWEBでほとんど十分なのだが、オートリロードしないのだけが不満だったので、
それだけをやりたかった。
tweetdeckとかtweenとかを使ってみたが、みなフォントが小さすぎるのだ。
もっと大きく表示させたい。
13: Wed Mar 10 06:27:16 2010
friendsというAPIがあって、簡単に表示させることができた。
適当に整形しながら、一向に発言内容が更新されないことに気付いていた。
APIのアクセス制限にしては早すぎる。しばらく時間を置くと更新されたが、また更新されない。
調べると、デフォルトでは100件しか表示できないとのことだった。
更新日時を指定すれば、最近の発言を表示させることができる。が、それをどうやるのか・・・?
14: Wed Mar 10 06:27:16 2010
friendsというAPIがあって、簡単に表示させることができた。
適当に整形しながら、一向に発言内容が更新されないことに気付いていた。
APIのアクセス制限にしては早すぎる。しばらく時間を置くと更新されたが、また更新されない。
調べると、デフォルトでは100件しか表示できないとのことだった。
更新日時を指定すれば、最近の発言を表示させることができる。が、それをどうやるのか・・・?
15: Wed Mar 10 06:27:38 2010
あー、2回postするとそのまま書いちゃうな・・・
16: Wed Mar 10 07:06:51 2010
と、よく見たら、friends APIというのは、followしている人の一覧から、最後のtweetを集めて、100件まで表示するものだった。最近フォローした人からチェックしていき、100人分のつぶやきを表示したところで終わり。
これは「フォローしている人の一覧」を表示するのと同じことだ。
公式のWEBだと、ページ指定で100人以上表示させられる。Net::Twitter ではページ指定ができないようだ。
表示したいのは、「自分がフォローしている人達の発言の中で、最新のもの」であるから、これではない。

17: Wed Mar 10 07:08:26 2010
friendsで取得して並びかえる必要があるのかな?
面倒なので、その前にsearchを試してみる。
18: Wed Mar 10 07:26:28 2010
さっきのは、friends_timeline というAPIだった。
簡単にできた。
19: Wed Mar 10 07:27:35 2010
おっと、フランス語が化けている。ファイルをutf-8で保存しないといけない。
20: Sat Mar 20 05:44:38 2010
public timelineというAPIがある。
これは、そのときの最新の20個のつぶやきを表示するものである。
APIはURLで指定し、xmlで帰ってくる。

perlでは LWP::Simpleを使って、xmlを変数に格納する。

そこでかっこつけて「xmlをパースしよう」などと考えたのだが、
めんどくさいので正規表現で必要なものを取り出してhtmlとして書いた。

とりあえず、textと、アイコンと、screen_name。
リロードしていくと、まず同じアイコンは見当たらない。
なんせ世界中のtweetを見てるわけだから。
「風速」はどれくらいなんだろう?

これだけ速くてなんの脈絡もないと、もはやtweetを読まないので、
プロフィールにリンクしたアイコンだけを並べた。
ひたすらF5を押して、目に留まったアイコンがあったらプロフィールを開く。


21: Sat Mar 20 07:00:34 2010
public_timelineは、url形式のapiを呼ぶことができたが、
friends_timelineは、Net::Twitterを使った。
これは便利ではあるが、さくらサーバで使えない。
friendsも、homeも、url形式で使いたい。

22: Sat Apr 3 13:02:06 2010
search apiを使ってみる。
公式ページでは、userしか検索できない。エチョフォンではtweetや場所から検索できる。
public timelineはあまりに膨大というか速いというか混沌としている。
しかし、今この瞬間に吐かれているtweetを見たい、ということはよくある。
たとえば今、LAAの松井の様子を見ているひととか、何か事件があったときとか。
23: Sat Apr 3 13:04:46 2010
searchのAPIは簡単で、例によってURL形式でパラメータを渡すだけだ。
結果はjsonまたはatomのいずれかを選ぶ。
どちらともxmlのようなタグが付いている。jsonはjavascriptで使うためのフォーマットのようだ。
atomというのは確か、rssみたいな用途で使われるものだと思う。
いずれもテキストのカタマリだから、perlであれば自由に検索して必要なところだけ取り出せばいい。
でも、せっかくjsonとかatomのフォーマットで帰ってきているのだから、そのフォーマットを扱うやり方でスマートに取り出したい・・・。
24: Sat Apr 3 14:01:22 2010
と思ったが結局得意のsplit&正規表現ですませた。
とりあえずはこれでOK
25: Sat Apr 3 23:25:42 2010
よく見たら、オフィシャルのページの横に、検索のためのテキストエリアとボタンがあった。
そりゃそうだよな。
というわけでだいたい最後はオフィシャルページに帰ってくる。
26: Sat Apr 3 23:30:58 2010
twitterの魅力のひとつは、公的なものと私的なものの境目が曖昧なところだ。
作家や政治家が昼食に何を食べたとか、寒いとか、どこへ行ったとかカゼをひいたなどをつぶやく。
かと思えばどこの誰だかわからない人が景気回復の方法を論じたり、民主党を批判したりする。
27: Sat Apr 3 23:33:28 2010
なかにはtwitterを自分のブログの更新通知に使ったり、イベントなどの告知をしたり、著作や出演番組の宣伝をしたりする人もいる。
というか、いわゆる有名人、ジャーナリスト、芸能人、作家等はそれが主目的であろう。
特にジャーナリストや作家は、自分達の仕事である文章表現を使って、無料で宣伝や広報ができるのだから、使わない手はない。
28: Sat Apr 3 23:35:49 2010
しかし、ただ「無料で文章を書く」というだけなら、インターネット自体はずいぶん前からあって、自身のウェブサイト、メール、ブログ、掲示板、ミクシイなどのSNSと呼ばれるものでもよかったはずだ。そしてtwitterをやるような人はだいたいそれらも利用していた人たちだ。
29: Sat Apr 3 23:37:31 2010
でも、twitterほど大勢が利用しなかったし、twitterほど異業種・異文化の人が対等に会話できるものはなかった。
その違いは一体なんだろうか?「ミニブログ」などと言われるように140字という文字数の少なさだろうか?
30: Sat Apr 3 23:41:45 2010
それよりも、followという仕組みのほうが重要なのではないだろうか。followというのは一見なにも目新しいことのない機能に見える。ブログだったら読者になるとか、やったことはないがmixiならマイミクになるとかと同じようなものだと私も何の抵抗も無く理解した。
31: Sat Apr 3 23:46:07 2010
しかし、私がtwitterを始めて誰かをfollowするまでには少し時間を要した。twitterは、自分が誰かをfollowしないと、まったく他人の発言が読めないのである。一言たりとも。
followをブログの読者のようなものだと考えていた私は、どこの誰だかわからない人をfollowすることに抵抗があった。followする人はサーチしなければならないが、その検索するキーワードも思い浮かばない。
ところがtwitter利用者が増えて、購読しているブログの書き手もtwitterを話題にすることが多くなってきた。
32: Sat Apr 3 23:48:43 2010
そんなある日、誰かが私のアカウントをfollowしたことを告げるメールが届いた。
そのときの私のツイートなんて、「メシ食った」くらいしかなかったはずなのに。
多分、その人も適当な言葉や文字列で検索してfollowしたのだと思う。
わたしはちょっと驚きつつもその人をfollowした。
この、「followされたら自分もその人をfollowする」ということは、なんだか当たり前のマナーのようになっているが、
私はそれは間違いではないかと思っている。
33: Sat Apr 3 23:51:24 2010
そこから、followした人がfollowしている人をfollowする、ということを繰り返したら、発言が表示され始めた。
何の関係もない、誰宛かもわからない発言が雑多に表示される。なんだこれは・・・・。
34: Sat Apr 3 23:54:54 2010
しばらくしておもしろいと思い始めたのは、有名人のツイートが読めることだった。孫正義、ホリエモン、芸能人、作家・・・。
「あの人もこんなことを言うのか」というギャップに驚いたり、親しみを感じたりする。
総じて不満を吐き出したり泣き言を言ったり暴露したりするようなネガティブな発言が非常に少ないと感じた。
これはよいことでもあるが、本音がないとか、刺激がないとか退屈だとかいうマイナスなことでもある。
35: Sun Apr 4 00:00:53 2010
最初に作ったアカウントは匿名である。アイコンも自分で適当に描いたマンガの顔である。
つぶやきは当たり障りのないこと、テレビを見ながら思ったことや、どうでもいいことを誰にともなくつぶやいていた。
しかし、次第に他人のつぶやきの内容が高度というか、内容が濃いことに劣等感というか、恥ずかしさを感じ始めた。
さらに多くの人が実名と顔を公表しているのも気になった。
36: Sun Apr 4 00:03:01 2010
そこで、あるとき、実名と顔を公表するアカウントを作って、それまでのアカウントは削除した。
一応、このアカウントはやめて実名をさらす、と宣言した。
実名にするとやはり発言内容に慎重になる。うかつなことは言えない。ますます自分の発言がつまらなくなるのを感じた。
37: Sun Apr 4 00:07:44 2010
followする人はどんどん増やして300人くらいになった。そのうち8割から9割はfollowされた。
基本的に、有名人で何千何万というfollowerがいるような人以外は、だいたいfollowするとfollowし返す。

わたしはこれがなんだかうっとおしくなってきた。
他人の発言はたくさん読みたいのだが、自分のつぶやきはあまり読まれたくない。
そこで、followする人を一気に減らした。そして、followを返さないであろう人を探してfollowし始め、
followされたくないもしくはfollowしていることを気付かれたくない人はfollowせずにprivateなlistに登録した。
38: Sun Apr 4 00:11:16 2010
原則としてfollowするのは自分の顔をアイコンにしていて、名前を名乗っている人。
ボットや企業の宣伝みたいなのは避ける。
あと、やたらめったらRTしたり、あいさつばっかりしてたり、ニュースなどを引用してくる人も避ける。
39: Sun Apr 4 00:15:18 2010
というわけで、私はfollowした人が自分のことをfollowしなくても全然気にしない。
むしろその方がありがたい。followされたからfollowしないと失礼だな、なんてことは思わせたくないし、思わない。
そしてそれは、私のtwitterのやり方ではなく、皆がそうするべきなのではないか、
それがtwitterの自由さというか、垣根の低さというか、孫正義とその辺の人が気軽に話せるよさなのではないか。
40: Sun Apr 4 00:18:35 2010
2ちゃんねるを始めたばかりの頃も、実質上誰も管理・検閲していない場に、ある秩序が存在していることに驚いたが、twitterの場合はそれよりもっと、自然な、おおらかな、それでいて有益でおもしろい場になっている。
それは、ユーザーがすでにインターネットやSNSの利用に慣れてきたこともあるだろうが、やはりtwitterの仕組み自体が、うまくできているのだと思う。
41: Sun Apr 4 00:22:06 2010
いろんな人が、私と同様にtwitterの魅力、twitterの優れたところについて語っているのを見聞きしてきたが、多くの人が、有益で濃密なコミュニケーションが瞬時に広範囲に可能である、というようなことを言っていた。
しかし、わたしがtwitterに感心しているのも、求めているのも、そういうものではない。
42: Sun Apr 4 00:24:43 2010
わたしは最初、twitterというのが「ゆるいつながり」だというのを聞いて、「これは2ちゃんねるの実況みたいなものだ!」とピンと来て始めたのだが、実際はゆるくなどないのでがっかりした。
しかし、始めて数ヶ月たった今では、やはりゆるいつながりになっている。
自分のツイートになんの反応がなくても気にならない。というか、基本的に反応はない。反応されないようなことをつぶやいている。たまに淋しくなって特定の人あてにツイートしたりするが、その後は必ず後悔する。
43: Sun Apr 4 00:44:37 2010
だいたい、ツイートというものは、follower全員が見るのである。
そのようなものであるのに、特定の一人だけにあいさつの様なことをするのは、失礼と言ってもいいのではないか。
44: Sun Apr 4 00:49:53 2010
わたしはいつも2ちゃんねるとtwitterを比較する。それは非常によく似ているからだ。
2ちゃんねるは1スレッド1000レスというのが絶妙だった、という話をきいたことがある。
同じように、twitterでは140文字が絶妙だったとも。あとは、板の種類の豊富さとかカテゴリ分けがよかったとか、
書き込みが自分で削除できないこと、ほぼなんでも書ける、などが長所としてあげられた。
twitterも、140字と言う気軽に書ける文字数であることとか、APIが公開されているとかがあげられている。
それらはおそらく正しい指摘であろう。
しかし、本当に2ちゃんねるとtwitterが価値を持つようになった理由はただひとつ、ユーザー数が膨大だったから、
これに尽きる。
45: Sun Apr 4 00:51:51 2010
先ほどあげたような長所があったからユーザーが集まって膨大になったのだ、と言えるかもしれないが、
twitterと同じようなサービスはたくさんある。google buzz, アメーバなう、など。
2ちゃんねるだって、ただの掲示板である。まったく同じ形式の掲示板を見たことがある。
しかし、いずれもユーザーが少なければ価値がない。
46: Sun Apr 4 01:03:32 2010
WindowsやMS Officeも同じである。よいソフトウェアであったのは確かであろうが、それを大勢が使用してファイル等が交換可能になったこと、ここに意味がある。つまり、独占したから意味がある。独占がユーザーに利益となったのである。
47: Sun Apr 4 01:08:57 2010
twitterがアメーバなうやgoogle buzzと競い合うことは、ユーザーのためにならない。
この手のものはとっかえひっかえするのが面倒だからだ。
いろんなところに簡単にフィットしてしみこんで言った、それがtwitterであったのだろう。
48: Sun Apr 4 01:18:25 2010
そうそう、これが書きたかったのだが、twitterでは国境の壁が高い。異なる言語間でのコミュニケーションが難しい。
私はいろんな国の言葉がTLに表示されるのがおもしろくて外国人をテキトウにfollowしてきたが、followし返されることはまずなかった。逆に、私のことをfollowする外国人もいない。
これは、ツイートが短文で流れる速度も速いため、外国語をじっくり読んだり翻訳するヒマがないというのと、
ツイートが形式ばらずに自由で慣用的な文句を多様するためではないかと思う。
49: Sun Apr 4 01:20:54 2010
たぶんこれは日本人同士でも、話の合う・合わないが普通よりも強くでるのではないだろうか。
気軽な発言は仲のよい気心のしれた人同士でしか通じない。
万人に理解されるためには形式がしっかりして、普遍的なものでなければならない。
50: Sun Apr 4 01:24:02 2010
わたしはネットでも、日常生活でも、深い仲になること、徒党を組むことが嫌いである。
集団においてはのけものになって、自分の所属以外の人と仲良くすることが好きである。
51: Sat May 15 13:13:43 2010
今public timelineを見ていたが遅い。
>>20の頃はあっという間に流れていったが、今は秒速1ツイートくらいか。
昨夜なんだか重かったから、みんな控えているのだろうか。日本は土曜でいい天気だから少ないか。
52: Tue Jul 27 03:06:43 2010
アイコンの分類。
1.自分の顔写真
2.猫
3.アニメ的な顔
4.自分の全身の写真
5.顔の一部
6.挿絵のようなイラスト
7.ロゴ
53: Sun Aug 22 23:58:28 2010
public_timelineは 20tweetsずつしか取得できないのだが、実際にtweetされているのは600/secくらいあるそうだ。
public_timelineではそのうちの20コだけを取得する。

しかしもっと多くのtweetを取得できるストリームapiというのがあるそうだ。
それは取得できるtweetの量に応じて3種類に分かれていて、100%取得するにはtwitter社と契約する必要があるという。
まあ、誰も彼もが取得できるようになったらどうなるかは想像がつく。

しかし、普通なら、サービスを作ったらpublic_timelineのようなものは誰でもすべて表示するようにと考えるのが普通だろう。それがないのは意図されたものか、パフォーマンス的に無理なのかは不明だが、twitterの大きな特徴のひとつである。
このために、アカウントを作った直後には何も表示されないという淋しいことになる。

ところで先ほどのストリームAPIだが、誰でも取得できるのは5%を表示するものだという。
しかし、600tweets/secとしてその5%といったら、30コしかない。
54: Sat Mar 19 21:42:23 2011
blockしているユーザの一覧が見たくて、検索するとそういうページがあるのだが、
その解除が一括でできない。
半分くらい解除して、メンドクサイしこれくらいは簡単に作れるだろうと、やってみる。
api辞典みたいな本は持っているのでblock一覧APIをタイプしてみるが Could not authenticate you となってしまう。

そうだ、アプリを登録しないといけないのだ。
55: Sat Mar 19 22:14:38 2011

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Net::Twitter;

my $twit = Net::Twitter->new(
traits => [qw/API::REST OAuth WrapError/],
consumer_key => 'xxxxxxxxxxxxxxxxxxxxxxx',
consumer_secret => 'xxxxxxxxxxxxxxxxxxxxxxx',
ssl => 1,
);
$twit->access_token ('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$twit->access_token_secret('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

my $array_ref = $twit->blocking();

#print Dumper $array_ref;

foreach my $hash_ref(@$array_ref){
print "$hash_ref->{'screen_name'}\n";
}


exit;
__END__


できた。
これでブロックしているユーザの一覧が表示される。
WindowsXPで、ActivePerlをインストールして、Net::Twitterをインストールしておいて、
Twitterのホームページでアプリケーションの登録をして、
cosumuer_keyとかはその結果を書く。
酒を飲みながらいろいろサーチしながら、すぐできました。

次は、これらのユーザのブロック解除ですね。
56: Sat Mar 19 22:23:04 2011

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Net::Twitter;

my $twit = Net::Twitter->new(
traits => [qw/API::REST OAuth WrapError/],
consumer_key => 'xxxxxxxxxxxxxxxxxxxx',
consumer_secret => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
ssl => 1,
);
$twit->access_token ('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$twit->access_token_secret('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

my $array_ref = $twit->blocking();

foreach my $hash_ref(@$array_ref){
$twit->destroy_block($hash_ref->{'id'});
}

exit;
__END__


blockしているユーザを取得するまでは同じで、それに対して destroy_block をするだけ。
ただし、このときの引数はscreen_nameではなくてidです。
57: Sat Mar 19 22:24:10 2011
いいなあ、twitter。
今回の震災でも、強さがはっきりわかりました。
apiを公開するかどうかが、流行るかどうかですね。
58: Sat Mar 19 22:29:55 2011
こんな感じで、followしている・されているユーザの一覧、followされてるユーザ全員のfollow, followしているユーザ全員のunfollowなども一瞬でできる。
59: Sat Mar 19 22:32:39 2011
これを公開してみんなに使ってもらうにはどうすればいいのかな?
60: Sun Mar 20 07:26:20 2011
指定したユーザーの最新のツイートを30件表示する。
PHP。
perlの例は少ないので。


<?php
$num_of_tweets = 30;
$user_name = "your_name";

$contents = file_get_contents('http://search.twitter.com/search.atom?q=from:'.$user_name.'&rpp='.$num_of_tweets);

$xml = simplexml_load_string($contents);

print '<h2>'.$user_name.'</h2>';

print '<blockquote>';

for ($i = 0; $i < $num_of_tweets; $i++ ) {

$tweet = $xml->entry[$i]->title;
$tweet = mb_convert_encoding($tweet,"SJIS","UTF-8");

$date_tweeted = $xml->entry[$i]->published;
$date_tweeted = date('Y/m/d H:i:s',strtotime($date_tweeted));

print $tweet.' ('.$date_tweeted.')<br><br>';

}

print '</blockquote>';

?>



件数を100件にしてもうまくいかなかった。
61: Sun Mar 20 08:52:50 2011
phpでoauthを使う場合の定番とされているものがあるようだ。
https://github.com/abraham/twitteroauth

OAuth.php
twitteroauth.php

この二つのファイルをダウンロードしておく。
下記がサンプル。上記二つのファイルはこのスクリプト自体と同じ場所においておく。



<?php
require_once('twitteroauth.php');

$consumer_key = 'xxxxxxxxxxxxxxx';
$consumer_secret = 'xxxxxxxxxxxxxxxxx';
$oauth_token = 'xxxxxxxxxxxxxxxxxxxx';
$oauth_secret = 'xxxxxxxxxxxxxxxxxxxxx';

$connection = new TwitterOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_secret);
$content = $connection->get('account/verify_credentials');

$connection->post('statuses/update', array('status' => date(DATE_RFC822)));

?>


実行しても何も表示されないが、twitterの自分のページを見ると、日付と時刻がtweetされているだろう。
62: Sun Mar 20 09:10:33 2011
今は自分のアプリケーションで自分のアカウントでツイートしているから、スクリプトに自分のconsumer key/secret, oauth token/secretを書き込んでいるが、実際には oauth token/secretは、利用者のそれを取得する必要がある。

そのやり方も公開している人がいて、今ためしたらoauthによる認証まではできているようなのだが、
肝心のそのあとのAPI操作ができない・・・

63: Sun Mar 20 09:15:39 2011

<?php
session_start();
require_once('twitteroauth.php');

$consumer_key = 'xxxxxxxxxx';
$consumer_secret = 'xxxxxxxxxxxxxxx';
$state = $_SESSION['oauth_state'];
$session_token = $_SESSION['oauth_request_token'];
$oauth_token = $_REQUEST['oauth_token'];
$section = $_REQUEST['section'];

if ($_REQUEST['test'] === 'clear') {
session_destroy();
session_start();
}

if ($_REQUEST['oauth_token'] != NULL && $_SESSION['oauth_state'] === 'start') {
$_SESSION['oauth_state'] = $state = 'returned';
}

switch ($state) {
default:
$to = new TwitterOAuth($consumer_key, $consumer_secret);
$tok = $to->getRequestToken();

$_SESSION['oauth_request_token'] = $token = $tok['oauth_token'];
$_SESSION['oauth_request_token_secret'] = $tok['oauth_token_secret'];
$_SESSION['oauth_state'] = "start";

$request_link = $to->getAuthorizeURL($token);

$content = 'Click on the link to go to twitter to authorize your account.';
$content .= '<br /><a href="'.$request_link.'">'.$request_link.'</a>';

//(A)
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"test"));

header("Location: $request_link");

break;

case 'returned':

if ($_SESSION['oauth_access_token'] === NULL && $_SESSION['oauth_access_token_secret'] === NULL) {

$to = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['oauth_request_token'],$_SESSION['oauth_request_token_secret']);

$tok = $to->getAccessToken();

$_SESSION['oauth_access_token'] = $tok['oauth_token'];
$_SESSION['oauth_access_token_secret'] = $tok['oauth_token_secret'];

//(B)
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"test"));
}

$_SESSION['username'] = $tok["screen_name"];

//(C)
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"test"));

header("Location: /");

}

?>



最初は(C)のところだろうと書いてみたが、internal server errorになる。
(A),(B)に書いてみるとエラーにならないがtweetもされない。

Sat May 7 11:19:24 2011
自分がブロックしているユーザー一覧


#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Net::Twitter;

my $twit = Net::Twitter->new(
traits => [qw/API::REST OAuth WrapError/],
consumer_key => 'xxxxxxxxxxxxxxxxxxxxx',
consumer_secret => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
ssl => 1,
);
$twit->access_token ('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$twit->access_token_secret('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

my $array_ref = $twit->blocking();

foreach my $hash_ref(@$array_ref){
print "$hash_ref->{'screen_name'}\n";
}


exit;
__END__
64: Sat May 7 11:20:26 2011
そのブロックを解除する

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Net::Twitter;

my $twit = Net::Twitter->new(
traits => [qw/API::REST OAuth WrapError/],
consumer_key => 'xxxxxxxxxxxxxxxx',
consumer_secret => 'xxxxxxxxxxxxxxxx',
ssl => 1,
);
$twit->access_token ('xxxxxxxxxxxxxxxxxxxxx');
$twit->access_token_secret('xxxxxxxxxxxxxxxxxxxxx');

my $array_ref = $twit->blocking();

foreach my $hash_ref(@$array_ref){
$twit->destroy_block($hash_ref->{'id'});
}


exit;
__END__
65: Fri Oct 31 05:14:59 2014
python3で

https://github.com/sixohsix/twitter

を使う。

---
from twitter import *

con_secret = 'xxxxxxx'
con_secret_key = 'xxxxxxxxxxx'
token = 'xxxxxxxxx'
token_key = 'xxxxxxxxxxxxxxxxx'

t = Twitter(
auth=OAuth(token, token_key, con_secret, con_secret_key))


t.statuses.update(
status="hello, tweeps!")
---


が、

results = t.blocks.list()

とやるとblockしたユーザのリストが取得できるのだが、
そのまま表示するとモジコードに関するエラーがでる。

さらに、上記のlistは単なる文字列ではないので、
しかるべき情報、screen_nameなどを取り出す必要がある、が、
そのやり方がわからない。

イライライライラ・・・・
^
previous | next | edit