せかいろぐ

ほぼ自分用備忘録

ニコニコ動画のAPIを叩いてマイリストをコピーする(Perl)

Perlでマイリストをコピーしてみます。

コチラもどうぞ
PerlでニコニコAPIを叩いてマイリストの動画をすべて保存 - せかいろぐ

続きを読む

Twitter公式の検索機能を使って過去のツイートを検索(PHP)

Twitter REST APIにはsearch/tweetsってのがあるけど、コレだと過去一週間分くらいのツイートしか取得できない……

公式の検索機能だとそれ以上昔のツイートも取得できるようなので、コレを使ってツイートを取得してみる。
HTMLで返ってくるので、適当にスクレイピングして必要な情報を抜き出す必要がある。

以下やってみた例。
必要な情報を切り出してJSONで返しています。

<?php
	$query = array_key_exists("query", $_GET) ? $_GET["query"] : "";
	$cursor = array_key_exists("cursor", $_GET) ? $_GET["cursor"] : "";
	
	$ch = curl_init();
	curl_setopt_array($ch, array(
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_SSL_VERIFYPEER => false,
		CURLOPT_URL => "https://twitter.com/i/search/timeline?" . http_build_query(array(
			"f" => "realtime",
			"include_available_feature" => 1,
			"include_entities" => 1,
			"last_note_ts" => time(),
			"q" => $query,
			"scroll_cursor" => $cursor,
			"src" => "typd"
		))
	));
	
	$resp = json_decode(curl_exec($ch), true);
	curl_close($ch);
	
	preg_match_all('@screen-name="(\w+)".+?data-name="(.+?)".+?src="(.+?)".+?time="(\d+)".+?js-tweet-text.+?>(.+?)</p>@s', $resp["items_html"], $tweets, PREG_SET_ORDER);
	foreach($tweets as &$entry){
		$entry = array(
			"time" => (int)$entry[4],
			"id" => $entry[3],
			"name" => $entry[2],
			"text" => preg_replace("@<.+?>@", "", preg_replace("@>(pic\.twitter\.com)@s", ">http://$1", $entry[5]))
		);
	}
	
	$cursor = $resp["scroll_cursor"];
	$next = "http://{$_SERVER["SERVER_NAME"]}{$_SERVER["SCRIPT_NAME"]}?" . http_build_query(compact("query", "cursor"));
	
	header("Content-Type: application/json; charset=utf-8");
	echo(json_encode(compact("next", "tweets")));
?>


この方法だとAPIみたくRate Limitingに引っかからないのかな?
というかコレ使っていいのかな……

ConoHa VPSにArchLinuxをインストール(2013.10.01)

ConoHa VPSにArchLinuxをインストールした時の手順メモ

2014-03-30 : さらに修正
2014-01-24 : 少し修正

続きを読む

テーブルをCSVファイルで出力・入力(MySQL)

テーブルをCSVファイルに出力したり、CSVファイルから入力したりするには

続きを読む

JavaScriptとPHPの無名関数内での変数の扱い

無名関数内で外側のスコープの変数へアクセスする時の違い(JavaScript, PHP 5.3以降)

続きを読む

JavaScriptのwith文に要注意

JavaScriptのwith文について。

続きを読む

HTML5の独自データ属性にアクセスする

HTML5の独自データ属性にアクセスする話。

続きを読む