抖音之获取粉丝数

某音有开放平台,可以走官方oauth 某音开放平台:某音开放平台

本项目仅供学习使用,请勿商业使用! 本项目仅供学习使用,请勿商业使用!

某音有开放平台,可以走oauth授权。 不过由于wx小程序封杀了某音,所以wx小程序要走某音官方这条路就行不通了。不多说,直接上源码

DyUtils

package com.zengp.demo.util;

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import com.zengp.demo.constant.CommConstants;
import com.zengp.demo.model.DyUser;
/**
  * 获取抖音粉丝等相关信息(不走官方授权)
  * 此工具类可直接使用,也可根据其逻辑自行优化
 * @author zengp
 * 
 */
public class DyUtils {
	// 短链转长链,目的是将短链解析出来拿到sec_uid,可自行优化
	private static String shortchainUrl = "https://duanwangzhihuanyuan.bmcx.com/web_system/bmcx_com_www/system/file/duanwangzhihuanyuan/get/";
	// 抖音官方接口(未开放)
	private static String dyUrl = "https://www.iesdouyin.com/web/api/v2/user/info/";
	
	public static DyUser dyFans (String link) {
		link = clearDyHomeLink(link);
		RestTemplate restT = new RestTemplate();
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
		MultiValueMap<String,String> map = new LinkedMultiValueMap<>();
		map.add("turl", link);
		HttpEntity<MultiValueMap<String,String>> request = new HttpEntity<>(map,headers);
		ResponseEntity<String> response = restT.postForEntity(shortchainUrl, request, String.class);
		String dyResult = response.getBody();
		String secUid = getSecUid(dyResult);
		DyUser dyUser = getDyFans(secUid);
		return dyUser;
	}
	
	/**
	  * 获取抖音的sec_uid
	 * @param str
	 * @return
	 */
	private static String getSecUid (String str) {
		String result = "";
		StringBuffer sb = new StringBuffer(str);
		int start = sb.indexOf(CommConstants.secUid) + CommConstants.secUid.length() + CommConstants.cursor;
		int end = start + CommConstants.uidLength;
		result = sb.substring(start, end);
		return result;
	}
	/**
	  *  获取抖音相关信息
	 * @param secUid
	 * @return
	 */
	private static DyUser getDyFans (String secUid) {
		RestTemplate restT = new RestTemplate();
		String url = dyUrl + CommConstants.secUidUrl + secUid;
		ResponseEntity<DyUser> response = restT.getForEntity(url, DyUser.class);
		DyUser dyUser = response.getBody();
		return dyUser;
	}
	
	/**
	  *  纯净化抖音主页分享链接
	  * 保险起见建议还是让用户自行去掉中文
	 * @param link
	 * @return
	 */
	private static String clearDyHomeLink (String link) {
		String result = "";
		// 这里可以优化
		result = link.replaceAll(CommConstants.REGEX_CHINESE, "");
		result = result.replaceAll(CommConstants.REGEX_COMMA, "");
		result = result.replaceAll(CommConstants.REGEX_EXCLAMATORY_MARK, "");
		result = result.trim();
		return result;
	}
}

}

主要是通过某音的分享链接短链解析长链拿到secuid,然后通过某音非官方接口请求到数据。所以就做到了通过用户主页链接就能拿到该用户的所有公开资料,可以自行选取自己要的字段,我主要是要粉丝数、点赞数和关注数。

使用示例

用雷猴的某音主页分享链接

运行结果

实际对比,实际对比本来有的 因为一些原因就没了

源码中涉及到的接口,如有侵权,请联系博主。

原创不易,转载请标明出处。

本文仅供学习使用,请勿商业使用。

完整源码

MediaFanshttps://github.com/Zeng49487/MediaFansMediaFans

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值