Tumblr图像删除限制

时间:2015-12-02 14:38:11

标签: javascript html css3 tumblr

我想从我的Tumblr博客中获取所有图片,(无限制)

即使我将限制更改为大数字,默认情况下它变成了20张图片,我只是想知道我创建的代码有什么问题,请帮助..提前感谢

请检查上面的小提琴以检查结果。

此处my code on jsFiddle



$(document).ready(function(){
  
  var tumblrUrl = 'http://api.tumblr.com/v2/blog/';
  var blogUrl = 'blog.campbrandgoods.com';
  var apiType = '/posts';
  var apiKey = 'VtZPFbyp0dLYfOespTdo6oJyOE0nZx4anBSa46j9OoJO4SBIjg';
  var limit = 995;
  
  var postUrl = tumblrUrl + blogUrl + apiType + '?api_key=' + apiKey + '&limit=' + limit;
  
  var tileContainer = $('ul#tiles');
 
  $.ajax({
    url: postUrl,
    type: 'get',
    dataType: 'jsonp',
    complete: function(){
      
    },
    success: function( strData ){
      
      console.log(strData.response.posts);
      
      var posts = strData.response.posts;
      $.each(posts, function (i, v) {
        if(typeof v.photos !== 'undefined') {
          var n = Math.floor(Math.random() * 6);
          var info = $($.parseHTML(v.caption)).text();
          tileContainer.append('<li class="item"><div class="tile-img-container"><img src="' + v.photos[0].alt_sizes[2].url + '"></div><div class="tile-info-container"><a class="various fancybox" href="' + v.post_url + '">' + info + '</a></div></li>');
          //tileContainer.append('<li class="item"><div class="tile-img-container"><img src="' + v.photos[0].alt_sizes[2].url + '"></div><div class="tile-info-container"><a title="' + info + '" class="various fancybox" href="' + v.photos[0].original_size.url + '">' + info + '</a></div></li>');
        }
      });
           
      tileContainer.gridalicious({selector: '.item', gutter: 5, animate: true});
      
      $('ul#tiles').on('click', 'li.item', function (e) {
      	var href = $(this).find('.tile-info-container').find('a').attr('href');
        $(this).parents('.item').find('.tile-info-container').find('a').trigger('click');
        window.open(href);
        //$(this).find('.tile-info-container').find('a').trigger('click');
 		
      });
      
      $('ul#tiles').on('click', 'li.item a', function (e) {
        e.preventDefault();
      });
      /*
      
      $("a.fancybox").fancybox({
        'type': 'image',
		'transitionIn'	:	'elastic',
		'transitionOut'	:	'elastic',
		'speedIn'		:	600, 
		'speedOut'		:	200, 
		'overlayShow'	:	true,
        'autoScale'     :   false,         
    	'autoSize'      :   false,
         overlayOpacity: 0.7,
         overlayColor: '#000',
         onStart		:function () {
        
          $('#fancybox-inner').css('width', '97%');
           $('#fancybox-inner').css('height', '97%');
          
        },
        onComplete: function(){
			$('#fancybox-inner').css('width', '97%');
          $('#fancybox-inner').css('height', '97%');
		}
	  });
      */
      
      $('.tile-img-container').on('click', function (e) {
      	$(this).parents('.item').find('.tile-info-container').find('a').trigger('click');
      	e.preventDefault();
      });
      
      
    }
  });
  
  
});
&#13;
#tiles li.item .tile-info-container {
    background-color: rgba(0,0,0,0.7);
    cursor: pointer;
    display: none;
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    font-size: 11px;
}
&#13;
<div class="container-fluid">

<div id="page" class="row">
  
  <div class="col-md-12 details">
	<ul id="tiles">
    </ul>
  </div>
  
</div>
  
</div>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

Tumblr api docs上,明确指出,对于请求/posts,您只能获得从1到20的限制。

我采用的方法是一个带有offset参数的递归函数。 (从下面我删除了一些不起作用的代码/被注释掉了)

function GetImages(offset) {
    var postUrl = tumblrUrl + blogUrl + apiType + '?api_key=' + apiKey + '&limit=20&offset=' + offset;
    $.ajax({
        url: postUrl,
        type: 'get',
        dataType: 'jsonp',
        complete: function(){

        },
        success: function( strData ){

            console.log(strData.response.posts);

            var posts = strData.response.posts;
            $.each(posts, function (i, v) {
                if(typeof v.photos !== 'undefined') {
                    var n = Math.floor(Math.random() * 6);
                    var info = $($.parseHTML(v.caption)).text();
                    tileContainer.append('<li class="item"><div class="tile-img-container"><img src="' + v.photos[0].alt_sizes[2].url + '"></div><div class="tile-info-container"><a class="various fancybox" href="' + v.post_url + '">' + info + '</a></div></li>');
                    //tileContainer.append('<li class="item"><div class="tile-img-container"><img src="' + v.photos[0].alt_sizes[2].url + '"></div><div class="tile-info-container"><a title="' + info + '" class="various fancybox" href="' + v.photos[0].original_size.url + '">' + info + '</a></div></li>');
                }
            });


            $('ul#tiles').on('click', 'li.item', function (e) {
                var href = $(this).find('.tile-info-container').find('a').attr('href');
                $(this).parents('.item').find('.tile-info-container').find('a').trigger('click');
                window.open(href);
                //$(this).find('.tile-info-container').find('a').trigger('click');

            });


            $('ul#tiles').on('click', 'li.item a', function (e) {
                e.preventDefault();
            });

            $('.tile-img-container').on('click', function (e) {
                $(this).parents('.item').find('.tile-info-container').find('a').trigger('click');
                e.preventDefault();
            });

            // actual changed part
            if (typeof offset === "undefined") {
                offset = 0;
            }
            // (to avoid having to load a hundred pages for each time it was tested, there was also this in the if: `offset < 100 &&`)
            if (((offset + 20) < strData.response.total_posts)) {
                GetImages(offset + 20);
            }
        }
    });
}
GetImages(0);