gpt4 book ai didi

javascript - Instagram API 分页 - 上一页

转载 作者:搜寻专家 更新时间:2023-11-01 05:29:39 46 4
gpt4 key购买 nike

我正在使用 Jquery 获取 Instagram 用户的媒体。

我需要获取所有用户媒体,但 Instagram API 媒体限制仅为 20,API 分页仅返回下一个链接。没有以前的链接。

我写的代码有点像那样,这适用于 next 但不适用于 previous。我堆在这里

function instaPhotos(page) {


var $limit = 1;
var $token = $('.instagram').data('instagramtoken');
var $nextId = $('.instagram').attr('data-instagramnext');
var $pageNumber = parseInt(localStorage.getItem('page'));


switch (page){
case 'next':

localStorage.setItem('page', ($pageNumber+1));
var $url = 'https://api.instagram.com/v1/users/self/media/recent/?access_token=' + $token + '&count=' + $limit + '&max_id=' + $nextId


break;
case 'prev':

localStorage.setItem('page', ($pageNumber-1));
var $url = 'https://api.instagram.com/v1/users/self/media/recent/?access_token=' + $token + '&count=' + $limit + '&min_id=' + $nextId

break;
default:

localStorage.setItem('page', 1);
var $url = 'https://api.instagram.com/v1/users/self/media/recent/?access_token=' + $token + '&count=' + $limit

}


console.log($pageNumber);
console.log($url);

$.ajax({
method: "GET",
url: $url,
dataType: "jsonp",
context: this,
success: function (r) {

if (r.pagination.next_max_id){
$('.instagram').attr('data-instagramnext', r.pagination.next_max_id);
}

// photo actions here.
}

});

}

最佳答案

首先:您最多可以将媒体限制增加到 33 张照片。您应该在查询字符串上使用 count 参数:

https://api.instagram.com/v1/tags/nofilter/media/recent?count=33&access_token=YOUR_ACCESS_TOKEN

关于导航到上一页,在我看来,Instagram 响应将始终包含最新发布的照片​​。

来自 Instagram API:

MIN_TAG_ID  Return media before this min_tag_id.
MAX_TAG_ID Return media after this max_tag_id.

让我们考虑 3 个页面(从 id #1 到 id #100):

第一页:

next_min_id #0
photo #1
photo #2
photo #3
...
photo #33
next_max_tag_id #34

第二页:

next_min_id #34 (equals to next_max_tag_id of first page) 
photo #35
photo #36
photo #37
...
photo #66
next_max_tag_id #67

第三页:

next_min_id #67 (equals to next_max_tag_id of second page)
photo #68
photo #69
photo #70
...
photo #99
next_max_tag_id #100

虽然查询字符串参数 max_tag_id 限制了结果的顶部,但 min_tag_id 限制了它的底部。因此,如果您仅使用 min_tag_id 作为参数,则响应将等于第一页,尽管页面 min_tag_id 值来自。毕竟第一页(#1、#2、#3...)的所有照片都在任何其他页面(#34 和#67)的 min_tag_id 之前,并且是最新的。

我认为完成此任务的唯一方法是使用 max_tag_id 查询字符串参数或 next_url 结果(整个 url 准备好使用 - 更容易)。

您应该保存或 max_tag_id 或(甚至更好更快)整个结果并控制代码的逻辑。工作示例:

var token = "<your_access_token>";
var nextURL = "https://api.instagram.com/v1/tags/riodejaneiro/media/recent?count=33&access_token=" + token;

var currentPage = 0;
var pages = new Array();

$(function() { requestInstagram(); });

function previousPage() {

currentPage = (currentPage>0) ? currentPage-1 : 0;
// show photos of currentPage

console.log("Page " + currentPage);
console.log("First photo:" + pages[currentPage][0].id);

}

function nextPage() {

if (++currentPage < pages.length ) {
// show photos of currentPage
console.log("Page " + currentPage);
console.log("First photo:" + pages[currentPage][0].id);
} else {
requestInstagram();
}
}

function requestInstagram() {
$.ajax({
method: "GET",
url: nextURL ,
dataType: "jsonp",
context: this,
success: function (r) {

if (r.meta.code == "200") {

pages[pages.length] = r.data;
// show photos here
console.log("Page " + currentPage);
console.log("First photo:" + pages[currentPage][0].id);

nextURL = r.pagination.next_url; // you should implement a way to identify the last page
console.log(nextURL);

}
}

});

}

祝你好运!

关于javascript - Instagram API 分页 - 上一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35131041/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com