instagram api java_java – 实时抓住标记的instagram照片

newMediaCount = getMediaCount();

delta = newMediaCount - mediaCount;

if (delta > 0) {

// if mediaCount changed by now,realDelta > delta,so realDelta - delta photos won't be grabbed and on next poll if mediaCount didn't change again realDelta - delta would be duplicated else ...

// if photo posted from private account last photo will be duplicated as counter changes but nothing is added to recent

recentMedia = getRecentMedia(delta);

// persist recentMedia

mediaCount = newMediaCount;

}@H_301_3@

第二个问题可以用某种类型的我来解决.但首先真的打扰了我.我已经把两个呼叫转移到instagram api尽可能的接近,但这是否足够?

编辑

由于Amir建议我使用min / max_tag_ids重写了代码.但它仍然跳过照片.我找不到比在磁盘上保存图像一段时间的更好的测试方法,并将结果与​​instagram.com/explore/tags/进行比较.

public class LousyInstagramApiTest {

@Test

public void testFeedContinuity() throws Exception {

Instagram instagram = new Instagram(Settings.getClientId());

final String TAG_NAME = "portrait";

String id = instagram.getRecentMediaTags(TAG_NAME).getPagination().getMinTagId();

HashtagEndpoint endpoint = new HashtagEndpoint(instagram,TAG_NAME,id);

for (int i = 0; i < 10; i++) {

Thread.sleep(3000);

endpoint.recentFeed().forEach(d -> {

try {

URL url = new URL(d.getImages().getLowResolution().getImageUrl());

BufferedImage img = ImageIO.read(url);

ImageIO.write(img,"png",new File("D:\\tmp\\" + d.getId() + ".png"));

} catch (Exception e) {

e.printStackTrace();

}

});

}

}

}

class HashtagEndpoint {

private final Instagram instagram;

private final String hashtag;

private String minTagId;

public HashtagEndpoint(Instagram instagram,String hashtag,String minTagId) {

this.instagram = instagram;

this.hashtag = hashtag;

this.minTagId = minTagId;

}

public List recentFeed() throws InstagramException {

TagMediaFeed Feed = instagram.getRecentMediaTags(hashtag,minTagId,null);

List dataList = Feed.getData();

if (dataList.size() == 0) return Collections.emptyList();

String maxTagId = Feed.getPagination().getNextMaxTagId();

if (maxTagId != null && maxTagId.compareTo(minTagId) > 0) dataList.addAll(paginateFeed(maxTagId));

Collections.reverse(dataList);

// dataList.removeIf(d -> d.getId().compareTo(minTagId) < 0);

minTagId = Feed.getPagination().getMinTagId();

return dataList;

}

private Collection extends MediaFeedData> paginateFeed(String maxTagId) throws InstagramException {

System.out.println("pagination required");

List dataList = new ArrayList<>();

do {

TagMediaFeed Feed = instagram.getRecentMediaTags(hashtag,null,maxTagId);

maxTagId = Feed.getPagination().getNextMaxTagId();

dataList.addAll(Feed.getData());

} while (maxTagId.compareTo(minTagId) > 0);

return dataList;

}

}@H_301_3@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值