• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:最後1行だけ…どのように書き直せばいいのでしょうか)

PHPでFC2ブログに投稿するスクリプトを作成していますが、Twitterのタイムラインをすべて拾える方法を知りたい

shimixの回答

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>foreach ($tweets as $tweet) { >echo "<li>".$tweet->text."</li>"; >} この記述で全部拾えているのですよね?であれば $str = ''; foreach ($tweets as $val) { $str .= $val->text . "\n"; } $bm->postEntry(" [". $str ."]"); などとすればいいのでは? >記事タイトルをその日のものに自動指定したり、時間を >指定して(例えば24時間など)その時間内にしたツイートを >限定して拾える方法、ツイート内にURLがあった場合自動 >リンクする書き方 とりあえず var_dump($tweets); として、どういうデータが拾えるのかを確認してみては如何ですか?多分、tweetした日時も取れているとは思いますが・・・

walsch
質問者

お礼

ありがとうございます! $val->retweeted_status->text ですね! 自己解決しました!

walsch
質問者

補足

shimix様。本当にありがとうございます! ご教授の通り行ない、調べたり試行錯誤して、見事にテキストから、時間日時、自動リンクまで作成することができました。この1ヶ月でのどに詰まっていたことがスッと解決しました! とても簡潔にわかりやすく回答を下さったshimix様に心から御礼申し上げます。 そしてvar_dump($tweets);でオブジェクトを引き出して入力できるようになりました! ただ、そこで少し疑問が生じまして、補足という名目で再度聞いて恐縮なのですが、 foreach ($tweets as $val) { $str .= $val->text .'<br />' .$val->created_at .'<br /><br />'."\n"; 現在は、このような形で、ツイートと時間を引き出していますが、リツイートのみテキストが途中で「 ...」と切られてしまって困っています。 例えば、var_dump($tweets);でオブジェクトを見てみるとこのような感じに、途中で途切れてに表示されているテキストと、 そのすぐ次の次のオブジェクトに、全部フルで表示されているオブジェクトがあります。 12 => object(stdClass)[25]    public 'text' => string 'RT @xxxxxxxx: 吾輩は猫である。名前はまだ無い。どこで生れたか頓(とん)と見當がつかぬ。何でも薄暗いじめじめした所でニヤーニヤー泣いて居た事丈は記憶して居る。吾輩はこゝで始めて人間といふものを見た。然(しか)もあとで聞くとそれは書生といふ人間中で一番獰悪(だうあく)な種族であつたさうだ。此書生といふのは時々我々を捕 ...' (length=344) ※(同じ12 =>内で、[26]、[27]と下位オブジェクトに並んでいます)↓    object(stdClass)[27] public 'text' => string ' 吾輩は猫である。名前はまだ無い。どこで生れたか頓(とん)と見當がつかぬ。何でも薄暗いじめじめした所でニヤーニヤー泣いて居た事丈は記憶して居る。吾輩はこゝで始めて人間といふものを見た。然(しか)もあとで聞くとそれは書生といふ人間中で一番獰悪(だうあく)な種族であつたさうだ。此書生といふのは時々我々を捕(つかま)へて煮て食ふといふ話である。' (length=388) 13 => object(stdClass)[29]     :     : 自分自身のツイートは文字数フルでツイートされていても、全テキスト表示されるのですが、リツイートの長いテキストのみ文末が「...」にされてしまいます。 おそらく「RT @xxxxxxxx:(これだと14文字)」分の文字数が多いので、押し出された文末が「...」に省略されてしまうのだと思います。(入力された文字の短いリツイートは全部表示されます) この場合、リツイートのツイートのみを、上のように「...」で省略せずに、 下の全部フルテキストのオブジェクトの方を指定して引き出したいのですが、この場合はどう指定して書けばいいでしょうか? 誠に勝手にも続けて質問して恐縮ですが、教えていただけたら幸いに存じ上げます。

関連するQ&A

  • js 現在のページURLのみ表示しない方法

    ツイッターのタイムラインを自分のサイトに表示しています。 ツイートテキスト内のURLは全てクリッカブルになっています。 ツイート内に現在表示しているページのURLがたまたま存在する場合、 リンクが飛んでも意味がないので、そのURLを非表示にしたいと思います。 return '<span class="jta-tweet-text">' + tweetText + '</span>'; ここへlocation.hrefや.replaceをつかって、現在のページURLのみ消すことは出来ないかと試したのですがうまくいきませんでした。タイムラインを設置したいページは複数あります。 初心者ですので、初歩的なこともわかりません。 もし可能であれば、おしえてください。

  • 2つのif 構文が1つしか動作してくれない

    唐突に質問失礼致します。PHP修行中の者です。 自分のTwitterのタイムラインをFC2ブログに投稿するスクリプトを書きたいと思い、ここ数ヶ月、PHPの本を片手に、200以上のPHPサイトのブラウザタブ開きながら試行錯誤しているのですが暗礁に乗り上げてしまって困っています。 恐縮ながら、どうか御教授いただけたら幸いに存じ上げます。 ブログに投稿することまではできるのですが、今できなくて困っていることは、 1、2つ設置しているif 構文が1つしか動いてくれないので2つ動かしたい。 2、1日分(昨日分=24時間前)の最新(更新分)のテキスト(ツイート)のみ抽出して1日毎に投稿するようにしたい。 3、テキスト(ツイート)の時間のならびを昇順(古い順)にしたい。 の3つです。 改善法をご存じの方がいらっしゃいましたら1~3のいずれか1つだけでもいいので御教授いただけたら幸いに存じ上げます。 今は下記のように書いています。↓ ///////////////////////////////// $url = "http://api.twitter.com/1/statuses/user_timeline.json?&include_rts=true&count=30&screen_name=(ユーザー名)&page=".$_POST['page']; $tweets = json_decode(file_get_contents($url)); $str = ''; $pat1='/^RT/'; $pat2='/@/'; $m1 = preg_match($pat1, $str); foreach ($tweets as $val) { if ($pat1 && $pat2){ echo $str .= $val->retweeted_status->text; } if (!$pat1){ echo $str .= $val->text; } $str .='<br />' .date('Y-m-d H:i:s', strtotime($val->created_at) + 9*3600) .'<br /><br />'."\n"; } var_dump($tweets); try{ $bm->postEntry("ユーザー名".date("Y年m月d日", $timestamp .= strtotime("-1 day"))."のつぶやきまとめ", " [". $str ."]"); ///////////////////////////////// これで実行すると、 1、if 構文に関しては、最初の「if ($pat1 && $pat2){echo $str .= $val->retweeted_status->text;」は読み込んでくれますが、次のif構文の「if (!$pat1){echo $str .= $val->text;」は読み込まれずに、「空白」が出力されてしまいます。 やりたいことは文頭がRTで始まる場合は$val->retweeted_status->textで、それ以外は$val->textにしたいのです。 (全てval->textに指定すれば空白なく全て表示できるのですが、RTが文頭につくval->textのものは文末が省略されてしまっているので、全文が書かれているretweeted_status->textに変えたいのです) 2、テキスト(ツイート)の最新のものを抽出するためには「$url = "http://api.twitter.com/1/statuses/user_timeline.json?&include_rts=true&count=30&screen_name=(ユーザー名)&page=".$_POST['page'];」のどこかを書き加えればいいとは思うのですが、どう書き加えれればいいか分からなくて困っています。 Twitter API仕様書によれば http://watcher.moe-nifty.com/memo/docs/twitterAPI20.txt (転載はじめ) //////////////////////////////// user_timeline 自分の過去24時間以内に update されたステータスから最大20件(count引数使用時は最大200件)を取得する。 引数 id を指定すれば、その id のユーザのステータスを取得できる URL: http://twitter.com/statuses/user_timeline.format http://twitter.com/statuses/user_timeline/id.format (format は xml, json, rss, atom のうちのいずれかを指定) since=日時 (オプション) 指定した日時以降に update されたステータスを取得する 指定した日時以降に update されたステータスを取得する 日時のフォーマットは RFC822(の「5. 日付と時刻仕様」) に従う なお、本オプションの代わりに http リクエストヘッダで If-Modified-Since を明示することで、日時を指定することもできる 例: http://twitter.com/statuses/user_timeline.rss?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT 2007年3月27日22時55分48秒GMT以降に update されたステータスを RSS 形式で取得する //////////////////////////////// (転載終わり) …と記載してありますが、実際に.jsonでフォーマットしてデフォルトで20件分の取得だったとしても、「過去24時間以内」ではなく、それより前(1日以上前)のものまで取得されてしまいます。 これをどのように書き変えればいいのでしょうか? 3、最後にこの上記のテキスト(タイムライン)を昇順(古い順)で出力したいのですが、urlからの入力書き換えで可能でしょうか? あるいは今回だと降順(新しい順)しか出力できず、昇順にするためには後から並び替えなければならないのでしょうか? その並び替え方を教えていただきたいです。 質問が多くて誠に申し訳ございません。 改善法をご存じの方がいらっしゃいましたら1~3のいずれか1つだけでもいいので御教授いただけたら幸いに存じ上げます。

    • ベストアンサー
    • PHP
  • TwitterをHTMLに埋め込む方法

    Twitterの個人のアカウントをHTMLに埋め込み表示させたいのですが、 <a class="twitter-timeline" data-width="220" data-height="500" href="https://twitter.com/OKWAVE">Tweets by OKWAVE</a> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> 公式(https://publish.twitter.com/#)でこのようなコードが生成されそれを埋め込むと リンクが埋め込まれた「Tweets by OKWAVE」としか表示されません 情報によるとこの部分にこのアカウントのツイートががタイムライン形式で表示されるはずなのですがどうも表示されません また、<div>,<head>(/)で囲むなどしましたが改善されません どうすればいいでしょうか

    • ベストアンサー
    • HTML
  • PHPでtwitterAPI利用時のサーバー設定

    TwitterAPI(ver1.1)を利用して自分のつぶやきをPHPで取得したいと思います。 認証は「OAuth.php」「twitteroauth.php」の外部ライブラリを利用しています。 下記のファイル構成でレンタルサーバーで試したところ、つぶやきのデータが取得できました。 しかし自分で構築したVPSのサーバーで実行しようとしたところ、処理に長く時間がかかり、「取得できません」という表示になってしまいます。 「OAuth」「twitteroauth」を使うにあたり、サーバーで設定すべき項目はあるのでしょうか? また、下記のプログラムで変数 $twObj にはAPIキーなどが配列で入られているのはわかったのですが、 $req 以降の変数はvar_dumpをしても何も表示されません。 TwitterAPIからどのようなメッセージが返ってきているかを表示させるには、どのようなプログラムを書けばよいのでしょうか? 以上、ご回答よろしくお願いいたします。 環境 ----------------------------- PHP 5.3.3 apach 2.2.3 CentOS 5.4(VPSで構築したLinuxサーバー) ----------------------------- ファイル構成 OAuth.php twitteroauth.php tweet.php を同じディレクトリに配置。 tweet.php ------------------------------------------------------------------------------ require_once 'twitteroauth.php'; $twObj = new TwitterOAuth($ConsumerKey,$ConsumerSecret,$AccessToken,$AccessTokenSecret); //APIのキーは取得したものを代入しています。(記載は省略) $req = $twObj->OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET',array('count'=>'10')); $tweets = json_decode($req); if (isset($tweets) && empty($tweets->errors)) { echo '<dl>'; foreach ($tweets as $val) { echo '<dd>' . $val->text . ''; } echo '</dd></dl>'; } else { echo '取得できません。'; } -----------------------------------------------------------------------

    • ベストアンサー
    • PHP
  • ハッシュタグ付きツイートが表示されない。

    ツイッター公式アカウントからハッシュタグ付きツイートを拾って、掲載するウィジェットをHTML上に組み込んだのですが、一部のアカウントのみ、問題なくハッシュタグ付きツイートが表示されます。 ツイッターボタンのaタグには、 https://twitter.com/intent/tweet?text=エンコードされたテキスト&url=URL&button_hashtag=ハッシュタグ としているのですが、できる人とそうでない人がおりまして、何か各アカウントに設定があるのでしょうか。

  • ツイッターで特定のコメントURLを表示させる方法

    ツイッターをしていて、たまに、タイムラインではなく、ある特定のツイートURLを表示させている方がいます。 私もしてみたいのですが、どのようにすればいいのでしょうか?

  • http://girlslog.jp/

    http://girlslog.jp/ 『ガールズログ』のようなサイトが作りたいのですがどうすればよいのでしょうか? ・サイトを通してTwitterに投稿。 (携帯で投稿出来るように…) ・登録してあるユーザーのツイートをタイムラインに表示 以上2点が主にやりたい内容です。 できればPHPで作りたいです。 なんか参考となるサイトやCMSなどあったら教えてください。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • Twitter4j javaについて

    私は現在Twitter4Jを使ってサンプルプログラムを動かそうと思い このサイトを参考にしました http://blog.goo.ne.jp/xmldtp/e/673a90905a44b770d7e3e74692c0e984  ・・・(1)  上記サイトの中にサンプルプログラムへ飛ぶリンクがあり http://blog.goo.ne.jp/xmldtp/e/edff0e2ede37dc7d335984e647271785 ・・・(2) ↑ここのページのサンプルプログラムをeclipceで(1)のURLの通りししたのですがTwitter4jのバージョンの違いのせい(?)で問題が発生しました。私がインストールしたTwitter4jは最新版の3.0.1で、(1)のサイトではバージョン2.5.5のTwitter4jを使っています。 具体的に何が問題かと言うと (2)のサイトのサンプルプログラムの 1:import twitter4j.Tweet; ができない 2:q.setPage(i);       が未定義 3:List<Tweet> tweets = result.getTweets(); のTweet型が解決できない 4:for (Tweet tweet : tweets) {         ののTweet型が解決できない の4つです。 私が考えた解決方法は以下の3つです。 1、(2)のサンプルプログラムを最新版のバージョン3.5.5に対応できるように書き換える 2、どうにかしてtwitter4jバージョン2.5.5を手に入れる 3、最新版のバージョン前提で作られたサンプルプログラムを探す なるべく2以外の方法でやりたいです。 最終的には(1)のサイトの通りに実行したいのです。現状のイメージとして私のeclipceの画像を添付します。 アドバイスをよろしくお願いします。

  • Twitterのキャンペーンボタン(?)の投稿方法

    Twitterの企業公式アカウントなどが添付画像の形式のツイート(キャンペーンボタン(?) …名称が分かりません)を投稿しています。 「Tweet #あいうえお」のようなのボタンを押すと同一のツイートが投稿入力画面に表示されます。 企業公式アカウント以外の個人アカウントが任意のテキストと画像を入れてこの形式のツイートを作ることはできますか? 特定の有名企業の不祥事を名指しで皮肉る内容で、個人が作ったとしか思えないものが個人アカウントで投稿されているのを見かけたので、疑問に思いました。

  • Twitterウィジェットの表示速度について

    webサイトにTwitterタイムラインを埋め込むことは多々あるのですが、お客様から「タイムラインの表示が遅く感じる」とご指摘を受けました。 外部のものなので難しいとは思っているのですが、できれば改善したいです。 自分でも調べていますが、ウィジェットを埋め込むことによってサイト全体の表示が遅くなる事案が多く、タイムライン単体の表示速度についてはありませんでした。 通常使用しているのは、公式から出ているものになります。↓ <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <a class="twitter-timeline" width="100%" data-lang="ja" data-theme="light" data-chrome="noheader nofooter noborders transparent noscrollbar" href="https://twitter.com/">Tweets by</a> お力添え頂けたら幸いです。 よろしくお願いします。