findClusters

機能

  • 指定したURLから生きているγクラスタのURLを探す。
  • クラスタ情報はサーバ側にキャッシュされる。
    最終更新から時間が経っていない場合はコンコレサーバにアクセスせずにキャッシュされた情報を返す。
    キャッシュ期限30秒。
  • アクセスログを取る。

URL

パラメータ

:callback|コールバック関数名 :url|チェックするURL :includeDead|1を指定すると死んでいるクラスタの情報も表示する

戻り値

:results|クラスタ情報の配列 ::URL|γクラスタのURL ::IsPowerful|1:強敵 0:普通 ::LastUpdate|最終更新時刻 ::IsDead|1:死亡 0:生存 ::TimeLimit|γクラスタが逃げる時刻 ::Power|勢力 0:普通 1:炎 2:光 3:風 :code, message|指定URLへのアクセス結果 :param|呼び出し時のパラメータ :remote_addr, time, user_agent|アクセスユーザ情報

ブックマークレット

  • 今開いているページを対象にこのAPIを呼び出す。 <!---- ポップアップとして表示されるのでセキュリティ設定でそのサイトのポップアップを許可する必要あり。-->
  • findClusters.user.zip
    javascript: (function(global) {
    	var panelBaseId = 'FindClusters-Panel';
    	var panelClustersId = 'Clusters-Panel';
    	var scriptElmId = 'findClusterScript';
    	var callbackName = 'findClusters';
    	addPanel();
    	if (!global[callbackName]) {
    		global[callbackName] = {};
    	}
    	callApi(scriptElmId, callbackName);
    
    	function addPanel() {
    		if (document.getElementById(panelBaseId)) {
    			return;
    		}
    		var panelBase = document.createElement('div');
    		panelBase.id = panelBaseId;
    		panelBase.style.position = 'fixed';
    		panelBase.style.right = '0em';
    		panelBase.style.bottom = '0em';
    		panelBase.style.textAlign = 'right';
    		document.getElementsByTagName('body')[0].appendChild(panelBase);
    		var panelClusters = document.createElement('div');
    		panelClusters.id = panelClustersId;
    		panelBase.appendChild(panelClusters);
    		var btnCheck = document.createElement('input');
    		btnCheck.type = 'button';
    		btnCheck.value = 'check';
    		btnCheck.addEventListener('click', (function(panelId, fn, scriptId, callbackName) {
    			return function() {
    				var panel = document.getElementById(panelId);
    				panel.innerHTML = '';
    				fn(scriptId, callbackName);
    			};
    		})(panelClustersId, callApi, scriptElmId, callbackName), false);
    		panelBase.appendChild(btnCheck);
    	}
    
    	function callApi(scriptId, callbackName) {
    		var existingScript = document.getElementById(scriptId);
    		if (existingScript) {
    			existingScript.parentNode.removeChild(existingScript);
    		}
    		var now = new Date - 0;
    		global[callbackName]['_' + now] = function(data) {
    			var power = {
    				0: '普通',
    				1: '',
    				2: '',
    				3: ''
    			};
    			var panel = document.getElementById(panelClustersId);
    			var results = data.results;
    			if (results.length) {
    				var html = '<table><tr><th>URL</th><th>勢力</th><th>強敵</th></tr>\n';
    				for (var i = 0, cl; cl = results[i]; ++i) {
    					html += '<tr>' +
    						'<td><a href="' + cl.URL + '" target="coopPage" >' + cl.URL + '</a></td>' +
    						'<td>' + power[cl.Power || 0] + '</td>' +
    						'<td>' + (cl.IsPowerful * 1 ? '強敵' : '') + '</td>' +
    						'</tr>';
    				}
    				html += '</table>';
    				panel.innerHTML = html;
    			} else {
    				alert(data.code == '200' ? 'No Living Cluster' : data.message);
    			}
    		};
    		var findClusterScriptElm = document.createElement('script');
    		findClusterScriptElm.id = scriptId;
    		findClusterScriptElm.type = 'text/javascript';
    		findClusterScriptElm.charset = 'utf-8';
    		findClusterScriptElm.src = 'http://www.takeash.net/CCCAPI/findClusters.cgi' +
    			'?callback=' + callbackName + '._' + now +
    			'&url=' + encodeURIComponent(location.href);
    		document.body.appendChild(findClusterScriptElm);
    	}
    })(this);

リンク