Jquery Flickr API-获取原始标记

Jquery Flickr API-获取原始标记,jquery,flickr,Jquery,Flickr,我正在尝试修改一个简化与FlickrAPI通信的程序,以获得Flickr标记的完整性,而不是 库的下面部分负责使用flickr.tags.getListUser方法获取干净的标记: // handles requesting list of tags $.flickr.tags = function(method, options, select) { var options = $.extend($.flickr.settings, options || {}),

我正在尝试修改一个简化与FlickrAPI通信的程序,以获得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
标记,返回如下:

<who id="12037949754@N01">
  <tags>
    <tag>gull</tag>
    <tag>tag1</tag>
    <tag>tag2</tag>
    <tag>tags</tag>
    <tag>test</tag>
  </tags>
</who>
<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)
    }
  }

福
福
f:oo
因此,我对代码进行了如下修改:

<who id="12037949754@N01">
  <tags>
    <tag>gull</tag>
    <tag>tag1</tag>
    <tag>tag2</tag>
    <tag>tags</tag>
    <tag>test</tag>
  </tags>
</who>
<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=函数(方法、选项、选择){
var options=$.extend($.flickr.settings,options |{}),
元素=$.flickr.self,标记
返回元素。每个(函数(){
$.getJSON($.flickr.url(方法、选项)、函数(数据){
var list=$.flickr.tags.selectList(data.who.tags,选择);
元素。追加(列表);
})
})
}
//将标记转换为选择列表。
$.flickr.tags.selectList=函数(标记、选项){
var optionList=$.map(tags.tag,函数(tag){
返回[''+标记.原始._内容+'']
}).join(“\n”)
var selectList=$('');
如果(options.multiple==true)
selectList.attr('multiple','multiple');
如果(options.size!==未定义&&options.size>0)
selectList.attr('size',options.size);
/*
如果(options.size==未定义)
selectList.attr('size',tags.size);
*/
如果(options.prompt!==未定义&&options.prompt!='')
selectList.append(“”+options.prompt+“”);
if(typeof(options.onchange)==“function”)
选择list.change(options.onchange);
返回selectList.append(选项列表)
}
//用于保存可用API方法的命名空间
$.flickr.methods={
// http://www.flickr.com/services/api/flickr.tags.getListUserRaw.html
标记选择:功能(选项,选择){
$.flickr.tags('flickr.tags.getListUserRaw',选项,选择)
}
}

但它不起作用。我确信我错过了一些东西,如果能为我指出正确的方向,我将不胜感激。

我认为这种方法已经失败,或者至少没有像广告宣传的那样有效。为了获得某些标记的原始版本,您可能必须使用flickr.tags.getListPhoto方法来解决问题:-由于您无法直接传递标记,因此您必须首先使用机器可读版本进行照片搜索,获取返回的第一张照片的id,并将其传递给getListPhoto