import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class DownloadVoice {
public static void main(String[] args) {
try {
// 第一步:访问页面
String url = "https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzA4NDA4MTkyMA==&scene=1&album_id=1605028060288876547#wechat_redirect";
if (getUrlConnectFlag(url)) {
Document document = Jsoup.connect(url).get();
// 第二步:解析页面
// Elements titleElements = document.getElementsByTag("title");
// String title = titleElements.get(0).text();
for (int i = 0; i < 77; i++) {
Elements elements = document.select("li[class=album__list-item js_album_item]").get(i).getElementsByAttribute("data-voiceid");
String voiceId = elements.attr("data-voiceid");
String fileName = elements.text();
System.out.println(fileName + "|" + voiceId);
String voiceFileUrl = "https://res.wx.qq.com/voice/getvoice?mediaid=" + voiceId;
downloadFile(voiceFileUrl,"C:\\voice\\" + fileName + ".mp3");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean getUrlConnectFlag(String urlString) {
try {
URL url = new URL(urlString);
InputStream in = url.openStream();
return true;
} catch (Exception e1) {
return false;
}
}
public static void downloadFile(String fileUrl, String fileLocal) throws Exception {
URL url = new URL(fileUrl);
HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
urlCon.setConnectTimeout(6000);
urlCon.setReadTimeout(6000);
int code = urlCon.getResponseCode();
if (code != HttpURLConnection.HTTP_OK) {
throw new Exception("文件读取失败");
}
//读文件流;
DataInputStream in = new DataInputStream(urlCon.getInputStream());
DataOutputStream out = new DataOutputStream(new FileOutputStream(fileLocal));
byte[] buffer = new byte[2048];
int count = 0;
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
}
out.close();
in.close();
}
}