私はembed.lyをテストしており、連結されたカンマ区切りのリンク文字列を使用して、1回のリクエストで複数のリンクの詳細をリクエストしています。
何かのようなもの:
http://api.embed.ly/1/oembed?key=_key_&urls=url1,url2,url3
結果には、説明、タイトル、サムネイルなどのリンクに関する詳細が含まれます。
URL フィールドがない場合もあります。ほとんどの場合、1 つです。このフィールドには URL が含まれており、私が知る限り、リクエスト文字列の URL と同じです。
この URL フィールドを外部キーのように使用したため、結果を明確に識別する必要があります。
これは、embed.ly から json データをロードするために使用する関数です。別の関数で抽出されたいくつかの URL を含む配列をループし、クエリ文字列に implode() します。
json を受け取った後、エラーをチェックし、エラーがある場合は、リンクの bbcode をリッチ html から基本的なリンク タグに復元します。
しかし、送信データに使用されている URL がない場合、データが属するリンクをどのように識別すればよいでしょうか?
private function getOPGdata(){
$linklist = array();
foreach ( $this->_extractions['ogp'] as &$v ) {
$linklist[] = urlencode( $v );
}
$apicall = $this->_embedkey . implode( ',', $linklist );
$data = $this->file_get_contents_curl( $apicall );
$data = json_decode( $data, true );
// we replace ogp tagged links if we don't get results
// and reverse them to normal links
$replace = array();
$replaceWith = array();
unset( $apicall );
unset( $linklist );
unset( $this->_extractions['ogp'] );
foreach ($data as &$v) {
// check for errors
if( isset( $v['error_code'] ) ){
$replace[] = '[ogp]'.$v['url'].'[ogp]';
$replaceWith[] = '[url]'.$v['url'].'[url]';
}
else {
$r = array(
'provider_url' => $v['provider_url'],
'provider_name' => $v['provider_name'],
'title' => $v['title'],
'description' => $v['description'],
'thumbnail_url' => $v['thumbnail_url'],
'html' => $v['html'],
'type' => $v['type']
);
$this->setOPGdata( $v['url'], $r );
}
}
// finally remove links with no results
$this->_text = str_replace( $replace, $replaceWith, $this->_text );
return true;
}
embedly.js では、結果を追跡するためにこれを行います。
// Put everything into batches, even if these is only one.
var batches = batch(valid_urls, options.batch), self = this;
// Actually make those calls.
$.each(batches, function(i, batch){
$.ajax({
url: self.build(method, batch, options),
dataType: 'jsonp',
success: function(data){
// We zip together the urls and the data so we have the original_url
$.each(zip([batch, data]), function(i, obj){
var result = obj[1];
result.original_url = obj[0];
result.invalid = false;
keeper.notify(result);
});
}
});
});
これはPHPで何を意味しますか?
URL の例:
[1]=>
array(11) {
["provider_url"]=>
string(24) "http://stackoverflow.com"
["description"]=>
string(143) "I'm testing embed.ly and use a concatenated comma separated link string to request details for multiple links with one request. Something like:"
["title"]=>
string(79) "embed.ly Problems to identify results beauser somtimes the url field is missing"
["mean_alpha"]=>
float(191.25)
["thumbnail_width"]=>
int(316)
["url"]=>
string(123) "http://stackoverflow.com/questions/23095192/embed-ly-problems-to-identify-results-beauser-somtimes-the-url-field-is-missing"
["thumbnail_url"]=>
string(78) "http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon@2.png?v=fde65a5a78c6"
["version"]=>
string(3) "1.0"
["provider_name"]=>
string(13) "Stackoverflow"
["type"]=>
string(4) "link"
["thumbnail_height"]=>
int(316)
}
[2]=>
array(11) {
["provider_url"]=>
string(15) "http://embed.ly"
["description"]=>
string(118) "Embedly allows developers to pull full article text for text analysis or building a read it later type applications..."
["title"]=>
string(27) "Artiicle Tutorial | Embedly"
["mean_alpha"]=>
float(32.7480314961)
["thumbnail_width"]=>
int(399)
["url"]=>
string(38) "http://embed.ly/docs/tutorials/article"
["thumbnail_url"]=>
string(58) "http://embed.ly/static/images/logos/logo_color.png?v=4b245"
["version"]=>
string(3) "1.0"
["provider_name"]=>
string(5) "Embed"
["type"]=>
string(4) "link"
["thumbnail_height"]=>
int(127)
}
}
そして、no to urlが付いているもの:
[0]=>
array(14) {
["provider_url"]=>
string(18) "https://vimeo.com/"
["description"]=>
string(316) "Writers' Block is a short film written and directed by Tom Gran and Martin Woolley and produced by WONKY Films with the support of IdeasTap. Set in a prison for criminally poor writers, it follows a gang of cons who get ahold of the script to their own lives and attempt to re-write it in order to make their escape."
["title"]=>
string(14) "Writers' Block"
["author_name"]=>
string(12) "WÖNKY Films"
["height"]=>
int(720)
["thumbnail_width"]=>
int(1280)
["width"]=>
int(1280)
["html"]=>
string(389) ""
["author_url"]=>
string(27) "http://vimeo.com/wonkyfilms"
["version"]=>
string(3) "1.0"
["provider_name"]=>
string(5) "Vimeo"
["thumbnail_url"]=>
string(46) "http://i.vimeocdn.com/video/468861310_1280.jpg"
["type"]=>
string(5) "video"
["thumbnail_height"]=>
int(720)
}