[英]Flickr API - getting raw tags
我正在嘗試修改jQuery庫 ,以簡化與Flickr API的通信,以獲取Flickr標簽的原始版本 ,而不是干凈的/機器可讀的版本 。
庫的以下摘錄負責使用flickr.tags.getListUser
方法獲取干凈的標簽:
// handles requesting list of tags
$.flickr.tags = function(method, options, select) {
var options = $.extend($.flickr.settings, options || {}),
elements = $.flickr.self, tags
return elements.each(function() {
$.getJSON($.flickr.url(method, options), function(data) {
var list = $.flickr.tags.selectList(data.who.tags, select);
elements.append(list);
})
})
}
// converts tags into select list.
$.flickr.tags.selectList = function(tags, options) {
var optionList = $.map(tags.tag, function(tag) {
return ['<option value="' + tag._content + '">' + tag._content + '</option>']
}).join("\n")
var selectList = $('<select class="flickr"></select>');
if (options.multiple === true)
selectList.attr('multiple', 'multiple');
if (options.size !== undefined && options.size > 0)
selectList.attr('size', options.size);
if (options.prompt !== undefined && options.prompt != '')
selectList.append('<option value="" selected="selected">' + options.prompt + '</option>');
if (typeof(options.onchange) === 'function')
selectList.change(options.onchange);
return selectList.append(optionList)
}
// namespace to hold available API methods
$.flickr.methods = {
// http://www.flickr.com/services/api/flickr.tags.getListUser.html
tagSelect: function(options, select) {
$.flickr.tags('flickr.tags.getListUser', options, select)
}
}
到目前為止,使用flickr.tags.getListUserRaw
方法修改上述內容一直沒有成功。 兩種方法之間的區別在於如何返回標簽:
對於flickr.tags.getListUser
標簽,返回如下:
<who id="12037949754@N01">
<tags>
<tag>gull</tag>
<tag>tag1</tag>
<tag>tag2</tag>
<tag>tags</tag>
<tag>test</tag>
</tags>
</who>
對於flickr.tags.getListUserRaw
標簽,返回的方式如下:
<who id="12037949754@N01">
<tags>
<tag clean="foo">
<raw>foo</raw>
<raw>Foo</raw>
<raw>f:oo</raw>
</tag>
</tags>
</who>
因此,我修改了如下代碼:
// handles requesting list of tags
$.flickr.tags = function(method, options, select) {
var options = $.extend($.flickr.settings, options || {}),
elements = $.flickr.self, tags
return elements.each(function() {
$.getJSON($.flickr.url(method, options), function(data) {
var list = $.flickr.tags.selectList(data.who.tags, select);
elements.append(list);
})
})
}
// converts tags into select list.
$.flickr.tags.selectList = function(tags, options) {
var optionList = $.map(tags.tag, function(tag) {
return ['<option value="' + tag.attr('clean') + '">' + tag.raw._content + '</option>']
}).join("\n")
var selectList = $('<select class="flickr-tags" data-placeholder="Choose a tag..."></select>');
if (options.multiple === true)
selectList.attr('multiple', 'multiple');
if (options.size !== undefined && options.size > 0)
selectList.attr('size', options.size);
/*
if (options.size == undefined)
selectList.attr('size', tags.size);
*/
if (options.prompt !== undefined && options.prompt != '')
selectList.append('<option value="" selected="selected">' + options.prompt + '</option>');
if (typeof(options.onchange) === 'function')
selectList.change(options.onchange);
return selectList.append(optionList)
}
// namespace to hold available API methods
$.flickr.methods = {
// http://www.flickr.com/services/api/flickr.tags.getListUserRaw.html
tagSelect: function(options, select) {
$.flickr.tags('flickr.tags.getListUserRaw', options, select)
}
}
但這是行不通的。 我確定我錯過了一些東西,並希望向正確的方向指點我。
我認為此方法已損壞或至少不能像廣告中所述那樣工作。 為了獲取某些標簽的原始版本,您可能必須使用flickr.tags.getListPhoto方法來使用變通方法: https ://www.flickr.com/services/api/explore/flickr.tags.getListPhoto-自從您開始無法直接傳遞標簽,您首先必須使用機器可讀的版本進行照片搜索,獲取返回的第一張照片的ID,然后將其傳遞給getListPhoto。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.