Java解析快手视频去水印教程--2020年08月最新有效代码

实现代码 

去水印视频,目前只能适用于2020年以前发的快手视频,大家可以评论研究新的办法

import cn.hutool.core.map.MapUtil;
import cn.hutool.http.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


/**
 * 快手去水印
 *
 * @author taishan
 * @version 1.0
 * @date 2020/8/4
 * @since JDK1.8
 */
@Slf4j
public class KuaiShou {

    //视频保存目录
    private static final String videoSavePath="d:/快手视频/";

    //分享链接(手动修改)
    private static String targetPath = "奇怪,刚刚和妈妈的衣架子交心攀谈后,怎么感觉头上有一圈星星呢~ http://v.kuaishou.com/s/mhn5haAq 复制此链接,打开【快手App】直接观看!";

    public static void main(String[] args) {
       parseUrl(filterUrl(targetPath));
    }

    /**
     * 方法描述: 解析下载视频
     *
     * @param url
     * @author tarzan
     * @date 2020年08月04日 10:33:40
     */
    public static void parseUrl(String url) {
        HashMap<String, String> headers = MapUtil.newHashMap();
        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");
        String redirectUrl = HttpUtil.createGet(url).addHeaders(headers).execute().header("Location");
        String body= HttpUtil.createGet(redirectUrl).addHeaders(headers).execute().body();
        Document doc=Jsoup.parse(body);
        Elements videoElement = doc.select("video[id=video-player]");
        String videoUrl = videoElement.get(0).attr("src");
        String title = videoElement.get(0).attr("alt");
        log.debug(videoUrl);
        log.debug(title);
        downVideo(videoUrl,videoSavePath+title+".mp4");
    }

    /**
     * 方法描述: 下载视频到本地
     *
     * @param httpUrl
     * @param saveFile
     * @author tarzan
     * @date 2020年08月04日 10:34:09
     */
    public static void downVideo(String httpUrl, String saveFile) {
        int byteRead;
        try {
            URL url = new URL(httpUrl);
            //获取链接
            URLConnection conn = url.openConnection();
            //输入流
            InputStream inStream = conn.getInputStream();
            //封装一个保存文件的路径对象
            File fileSavePath = new File(saveFile);
            //注:如果保存文件夹不存在,那么则创建该文件夹
            File fileParent = fileSavePath.getParentFile();
            if(!fileParent.exists()){
                fileParent.mkdirs();
            }
            //写入文件
            FileOutputStream fs = new FileOutputStream(fileSavePath);
            byte[] buffer = new byte[1024];
            while ((byteRead = inStream.read(buffer)) != -1) {
                fs.write(buffer, 0, byteRead);
            }
            inStream.close();
            fs.close();
            System.out.println("\n-----视频保存路径-----\n"+fileSavePath.getAbsolutePath());
        } catch (FileNotFoundException e) {
            log.error(e.getMessage());
        } catch (IOException e) {
           log.error(e.getMessage());
        }
    }

    /**
     * 方法描述: 过滤分享链接的中文汉字
     *
     * @param url
     * @Return {@link String}
     * @author tarzan
     * @date 2020年08月03日 17:36:33
     */
    public static String filterUrl(String url) {
        String regex = "https?://(\\w|-)+(\\.(\\w|-)+)+(/(\\w+(\\?(\\w+=(\\w|%|-)*(\\&\\w+=(\\w|%|-)*)*)?)?)?)+";//匹配网址
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(targetPath);
        if(m.find()){
          return   targetPath.substring(m.start(),m.end());
        }
        return "";
    }

}

问题交流

微信:vxhqqh 

猜你喜欢

转载自blog.csdn.net/weixin_40986713/article/details/107781311