twitterからエロ画像を取得してみる(PHP)
twitterからエロ画像を取得できないかとやってみました。
(コンテンツとしては現在公開はしていませんが、取得はできました)
②twitterアプリケーション登録
このあたりを参考に、Consumer Key (API Key)とConsumer Secret (API Secret)、accessToken とaccessSecretを取得。syncer.jp
③画像を取得するphp
まずは基本設定。
require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //NOTE:認証 $consumerKey = "********"; $consumerSecret = "********"; $accessToken = "********"; $accessTokenSecret = "********"; //NOTE:接続 $connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
そして画像のURLを取得する方法。
これはリストに入れているユーザーがアップした画像を取得する方法。
まずはエロ写真をアップするユーザーをリストに入れておきます。この時に、純粋にエロ画像だけをアップするユーザーだけを選ぶのがポイント。
list_idはこのあたりで
Twitterの公開リストのIDを簡単に調べる方法 | Webstjam
//データベースへ接続する $db_link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); $statuses = $connection->get("lists/statuses", array("list_id"=>"****","count"=>100,"include_entities"=>1,"include_rts"=>0)); foreach($statuses as $statuse){ $medias = $statuse->entities->media; foreach((array)$medias as $media){ if($media -> media_url){ $url = $media -> media_url; } } }
こんな感じで取得しました。
それをサーバーに保存するもよし、データベースにバイナリで保存するもよし。
ちなみにバイナリで保存するのは
//データベースへ接続する $db_link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); $statuses = $connection->get("lists/statuses", array("list_id"=>"****","count"=>100,"include_entities"=>1,"include_rts"=>0)); foreach($statuses as $statuse){ $medias = $statuse->entities->media; foreach((array)$medias as $media){ if($media -> media_url){ $url = $media -> media_url; $img_file = file_get_contents($url); //DB接続 $img_binary = mysqli_real_escape_string( $db_link, $img_file ); $result = mysqli_query( $db_link, 'INSERT INTO テーブル (img_blob) VALUES ( "'.$img_binary.'")'); } } }
こんな感じにして、
表示は
//データベースへ接続する $db_link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); //指定したidのimgを検索、$target_idは別途指定 $serch_query = mysqli_query($db_link,"SELECT * FROM img_table WHERE id ='".$target_id."'"); $row = mysqli_fetch_array($serch_query); mysqli_close($db_link); //画像として表示 header("Content-type: image/jpeg"); print $row['img_blob'];
ちなみにこれはjpgの場合なので、本当はデータベースにおさめるときにファイル形式を判別して、ファイル形式もデータベースに保存して
header("Content-type: image/jpeg");
この部分を出し分ける必要があるかと思います。