话不多说,直接上代码Java语言,仅供个人研究学习

[复制链接]
查看853 | 回复0 | 2020-2-11 17:13:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1. import cn.hutool.core.map.MapUtil;
  2. import cn.hutool.core.util.StrUtil;
  3. import cn.hutool.crypto.SecureUtil;
  4. import cn.hutool.http.HttpResponse;
  5. import cn.hutool.http.HttpUtil;
  6. import cn.hutool.json.JSON;
  7. import cn.hutool.json.JSONUtil;
  8. import com.video.dewatermark.model.Video;
  9. import com.video.dewatermark.service.VideoService;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.jsoup.Jsoup;
  12. import org.jsoup.nodes.Document;
  13. import org.jsoup.select.Elements;

  14. import java.util.HashMap;

  15. @Slf4j
  16. public class KuaiShouService{

  17.     public static void main(String[] args) {
  18.         Video video = new KuaiShouService().parseUrl("http://m.chenzhongtech.com/s/mhn5haAq/");
  19.         System.out.println(video);
  20.     }

  21.     public Video parseUrl(String url) {
  22.         HashMap<String, String> headers = MapUtil.newHashMap();
  23.         headers.put("User-Agent", "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36");
  24.         String redirectUrl = HttpUtil.createGet(url).addHeaders(headers).execute().header("Location");
  25.         Document doc = null;
  26.         try {
  27.             doc = Jsoup.connect(redirectUrl).headers(headers).timeout(5000).get();
  28.         } catch (Exception e) {
  29.             e.printStackTrace();
  30.         }
  31.         Elements select1 = doc.select("div[id=hide-pagedata]");
  32.         String resultJson = select1.get(0).attr("data-pagedata");
  33.         log.debug(resultJson);
  34.         JSON json = JSONUtil.parse(resultJson);
  35.         String photoId = json.getByPath("photoId").toString();

  36.         String param = "client_key=56c3713c&photoIds=" + photoId;

  37.         String replace = StrUtil.replace(param, "&", "") + new String(new byte[]{50, 51, 99, 97, 97, 98, 48, 48, 51, 53, 54, 99});
  38.         String sig = SecureUtil.md5().digestHex(replace);
  39.         HttpResponse execute = HttpUtil.createPost("http://api.gifshow.com/rest/n/photo/info?" + param + "&sig=" + sig)
  40.                 .contentType("application/x-www-form-urlencoded").contentType("kwai-android").addHeaders(headers)
  41.                 .execute();
  42.         String body = execute.body();
  43.         log.debug(body);
  44.         JSON res = JSONUtil.parse(body);
  45.         String title = JSONUtil.getByPath(res, "photos.0.caption").toString();
  46.         String playAddr = JSONUtil.getByPath(res, "photos.0.main_mv_url").toString();
  47.         String cover = JSONUtil.getByPath(res, "photos.0.thumbnail_url").toString();
  48.         String author = JSONUtil.getByPath(res, "photos.0.user_name").toString();
  49.         String avatar = JSONUtil.getByPath(res, "photos.0.headurl").toString();
  50.         Video video = Video.builder().title(title).author(author).avatar(avatar).coverPicture(cover).playAddr(playAddr).build();
  51.         return video;
  52.     }
  53. }
复制代码
  1. import lombok.*;

  2. @Setter
  3. @Getter
  4. @Builder(toBuilder = true)
  5. @ToString
  6. public class Video {
  7.         // 作者
  8.         private String author;
  9.         // 标题
  10.         private String title;
  11.         // 头像
  12.         private String avatar;
  13.         // 封面图
  14.         private String coverPicture;
  15.         // 播放地址
  16.         private String playAddr;
  17. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

灌水成绩
406
主题
410
帖子
1577
积分
等级头衔
积分成就
  • 威望: 0
  • 贡献: 1167
  • 金钱: 0
  • 违规:
  • 在线时间:156 小时
  • 注册时间:2020-2-11
  • 最后登录:2020-8-23
个人勋章

最佳新人活跃会员热心会员突出贡献优秀版主论坛元老精贴王灌水之王荣誉管理

联系方式