From f788607ff771a47bc60d6a86e00b3433c40f3d2c Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 24 九月 2021 15:22:03 +0800 Subject: [PATCH] 接入视频直播 --- src/main/java/com/yeshi/buwan/util/DouBanUtil.java | 429 +++++++++++++++++++++++++++++++++++----------------- 1 files changed, 286 insertions(+), 143 deletions(-) diff --git a/src/main/java/com/yeshi/buwan/util/DouBanUtil.java b/src/main/java/com/yeshi/buwan/util/DouBanUtil.java index 47b17c5..3fdb58d 100644 --- a/src/main/java/com/yeshi/buwan/util/DouBanUtil.java +++ b/src/main/java/com/yeshi/buwan/util/DouBanUtil.java @@ -18,162 +18,305 @@ @Entity public class DouBanUtil { - public static String baseUrl = "https://movie.douban.com/subject_search?cat=102&"; - public static int maxCount = 1; + public static String baseUrl = "https://movie.douban.com/subject_search?cat=102&"; + public static int maxCount = 1; - public static List<VideoInfo> startSearch(String st) throws IOException { - Document doc = Jsoup - .connect( - baseUrl + "search_text=" - + URLEncoder.encode(st, "UTF-8")) - .userAgent( - "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.81 Safari/537.36") - .timeout(20000).get(); - Element el = doc.getElementById("content"); - Elements els = el.getElementsByTag("table"); - List<VideoInfo> list = new ArrayList<VideoInfo>(); - int count = els.size() >= maxCount ? maxCount : els.size(); + /** + * @title: + * @description: 鎼滅储 + * @author Administrator + * @date 2021/9/22 17:46 + */ + public static List<VideoInfo> startSearch(String st) throws IOException { + Document doc = Jsoup + .connect( + baseUrl + "search_text=" + + URLEncoder.encode(st, "UTF-8")) + .userAgent( + "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.81 Safari/537.36") + .timeout(20000).get(); + Element el = doc.getElementById("content"); + Elements els = el.getElementsByTag("table"); + List<VideoInfo> list = new ArrayList<VideoInfo>(); + int count = els.size() >= maxCount ? maxCount : els.size(); - for (int i = 0; i < count; i++) { - try { - String url = els.get(i).getElementsByTag("a").get(0) - .attr("href"); - LogUtil.i(url); - Document detailDoc = Jsoup - .connect(url) - .timeout(20000) - .userAgent( - "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.81 Safari/537.36") - .get(); - Element detail = detailDoc.getElementById("content"); - Element vinfo = detailDoc.getElementById("info"); + for (int i = 0; i < count; i++) { + try { + String url = els.get(i).getElementsByTag("a").get(0) + .attr("href"); + LogUtil.i(url); + Document detailDoc = Jsoup + .connect(url) + .timeout(20000) + .userAgent( + "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.81 Safari/537.36") + .get(); + Element detail = detailDoc.getElementById("content"); + Element vinfo = detailDoc.getElementById("info"); - String name = detail.getElementsByTag("h1").get(0) - .getElementsByTag("span").get(0).text(); + String name = detail.getElementsByTag("h1").get(0) + .getElementsByTag("span").get(0).text(); - String year = ""; - String picture = detail.getElementById("mainpic") - .getElementsByTag("img").get(0).attr("src") - .replace("/spst/", "/lpst/"); - String actor = ""; - try { - Elements actors = detail - .getElementsByAttributeValue("class", "actor") - .get(0) - .getElementsByAttributeValue("class", "attrs") - .get(0).getElementsByTag("span").get(0) - .getElementsByTag("a"); + String year = ""; + String picture = detail.getElementById("mainpic") + .getElementsByTag("img").get(0).attr("src") + .replace("/spst/", "/lpst/"); + String actor = ""; + try { + Elements actors = detail + .getElementsByAttributeValue("class", "actor") + .get(0) + .getElementsByAttributeValue("class", "attrs") + .get(0).getElementsByTag("span").get(0) + .getElementsByTag("a"); - for (Element w : actors) { - actor += w.text() + " "; - } - } catch (Exception e) { - // e.printStackTrace(); - } - Elements beiz = detail.getElementsByAttributeValue("property", - "v:genre"); - String beizhu = ""; - for (Element e : beiz) { - beizhu += e.text() + " "; - } + for (Element w : actors) { + actor += w.text() + " "; + } + } catch (Exception e) { + // e.printStackTrace(); + } + Elements beiz = detail.getElementsByAttributeValue("property", + "v:genre"); + String beizhu = ""; + for (Element e : beiz) { + beizhu += e.text() + " "; + } - String duration = "0"; - try { - detail.getElementsByAttributeValue("property", "v:runtime") - .get(0).attr("content"); - } catch (Exception e) { + String duration = "0"; + try { + detail.getElementsByAttributeValue("property", "v:runtime") + .get(0).attr("content"); + } catch (Exception e) { - } - String introduction = ""; - try { - introduction = detailDoc - .getElementsByAttributeValue("property", - "v:summary").get(0).text(); - } catch (Exception e) { + } + String introduction = ""; + try { + introduction = detailDoc + .getElementsByAttributeValue("property", + "v:summary").get(0).text(); + } catch (Exception e) { - } - String score = detailDoc - .getElementsByAttributeValue("property", "v:average") - .get(0).text(); + } + String score = detailDoc + .getElementsByAttributeValue("property", "v:average") + .get(0).text(); - String data = ""; - try { - data = detailDoc - .getElementsByAttributeValue("property", - "v:initialReleaseDate").get(0).text(); - } catch (Exception e) { + String data = ""; + try { + data = detailDoc + .getElementsByAttributeValue("property", + "v:initialReleaseDate").get(0).text(); + } catch (Exception e) { - } - try { - score = detail - .getElementsByAttributeValue("property", - "v:average").get(0).text(); - } catch (Exception e) { + } + try { + score = detail + .getElementsByAttributeValue("property", + "v:average").get(0).text(); + } catch (Exception e) { - } - String director = ""; - try { - Elements directors = detail.getElementsByAttributeValue( - "rel", "v:directedBy"); - for (int n = 0; n < directors.size(); n++) { - director += directors.get(n).text() + " "; - } + } + String director = ""; + try { + Elements directors = detail.getElementsByAttributeValue( + "rel", "v:directedBy"); + for (int n = 0; n < directors.size(); n++) { + director += directors.get(n).text() + " "; + } - } catch (Exception e) { + } catch (Exception e) { - } + } - if (director.endsWith(" ")) - director = director.substring(0, director.length() - 1); - Pattern pattern = Pattern - .compile("[0-9]{4}[-][0-9]{1,2}[-][0-9]{1,2}"); - Matcher matcher = pattern.matcher(data); - String dateStr = null; - if (matcher.find()) { - dateStr = matcher.group(0); - } - String month = "0"; - String day = "0"; - if (dateStr != null) { - year = dateStr.split("-")[0]; - month = dateStr.split("-")[1]; - day = dateStr.split("-")[2]; - } - String area =""; - String[] infoSt = vinfo.toString().split("<br />"); - for (String ist : infoSt) { - if (ist.contains("锟斤拷片锟斤拷锟�")) { - try{ - int start = ist.indexOf("</span>"); - area = ist.substring(start + 7, ist.length()) - .replace("\"", "").trim(); - System.out.println(area); - }catch(Exception e) - { - e.printStackTrace(); - } - break; - } - } + if (director.endsWith(" ")) + director = director.substring(0, director.length() - 1); + Pattern pattern = Pattern + .compile("[0-9]{4}[-][0-9]{1,2}[-][0-9]{1,2}"); + Matcher matcher = pattern.matcher(data); + String dateStr = null; + if (matcher.find()) { + dateStr = matcher.group(0); + } + String month = "0"; + String day = "0"; + if (dateStr != null) { + year = dateStr.split("-")[0]; + month = dateStr.split("-")[1]; + day = dateStr.split("-")[2]; + } + String area = ""; + String[] infoSt = vinfo.toString().split("<br />"); + for (String ist : infoSt) { + if (ist.contains("锟斤拷片锟斤拷锟�")) { + try { + int start = ist.indexOf("</span>"); + area = ist.substring(start + 7, ist.length()) + .replace("\"", "").trim(); + System.out.println(area); + } catch (Exception e) { + e.printStackTrace(); + } + break; + } + } - VideoInfo info = new VideoInfo(); - info.setName(name); - info.setBeizhu(beizhu); - info.setDuration(duration); - info.setIntroduction(introduction); - info.setMainActor(actor); - info.setPicture(picture); - info.setScore(score); - info.setYear(year); - info.setDay(day); - info.setMonth(month); - info.setDirector(director); - info.setArea(area); - list.add(info); - } catch (Exception e) { - e.printStackTrace(); - } - } - return list; - } + VideoInfo info = new VideoInfo(); + info.setName(name); + info.setBeizhu(beizhu); + info.setDuration(duration); + info.setIntroduction(introduction); + info.setMainActor(actor); + info.setPicture(picture); + info.setScore(score); + info.setYear(year); + info.setDay(day); + info.setMonth(month); + info.setDirector(director); + info.setArea(area); + list.add(info); + } catch (Exception e) { + e.printStackTrace(); + } + } + return list; + } + + private static DouBanStar getStarInfo(Element item) { + DouBanStar star = new DouBanStar(); + String avatarStyle = item.getElementsByClass("avatar").get(0).attr("style"); + String avatar = avatarStyle.replace("background-image: url(", "").replace(")", "").trim(); + String name = item.getElementsByTag("a").get(0).attr("title"); + if (name.contains(" ")) { + String chaineseName = name.split(" ")[0].trim(); + String englishName = name.substring(chaineseName.length()).trim(); + star.setChineseName(chaineseName); + star.setEnglishName(englishName); + } + + String href = item.getElementsByTag("a").get(0).attr("href"); + if (href.endsWith("/")) + href = href.substring(0, href.length() - 1); + String[] sts = href.split("/"); + String id = sts[sts.length - 1]; + if (!avatar.contains("default")) + star.setAvatar(avatar); + star.setId(id); + star.setUrl(href); + return star; + } + + private static List<DouBanStar> getStarList(Element root) { + Elements items = root.getElementsByTag("li"); + List<DouBanStar> list = new ArrayList<>(); + for (int i = 0; i < items.size(); i++) { + Element item = items.get(i); + DouBanStar star = getStarInfo(item); + if (star != null) { + list.add(star); + } + } + return list; + } + + //鑾峰彇鐢靛奖鐨勫奖浜轰俊鎭� + public static Celebrities getMovieStars(String movieId) throws IOException { + String url = String.format("https://movie.douban.com/subject/%s/celebrities", movieId); + Document doc = Jsoup.connect(url).timeout(60000).userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.81 Safari/537.36").get(); + + Elements eles = doc.getElementById("celebrities").getElementsByClass("list-wrapper"); + + Celebrities celebrities = new Celebrities(); + + for (int i = 0; i < eles.size(); i++) { + String type = eles.get(i).getElementsByTag("h2").get(0).ownText(); + if (type.contains("瀵兼紨")) { + List<DouBanStar> list = getStarList(eles.get(i)); + celebrities.setDirectors(list); + } else if (type.contains("婕斿憳")) { + List<DouBanStar> list = getStarList(eles.get(i)); + celebrities.setStars(list); + } + } + return celebrities; + } + + + static class Celebrities { + + private List<DouBanStar> directors; + private List<DouBanStar> stars; + + public List<DouBanStar> getDirectors() { + return directors; + } + + public void setDirectors(List<DouBanStar> directors) { + this.directors = directors; + } + + public List<DouBanStar> getStars() { + return stars; + } + + public void setStars(List<DouBanStar> stars) { + this.stars = stars; + } + } + + + static class DouBanStar { + + private String id; + private String chineseName; + private String englishName; + private String avatar; + private String url; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getChineseName() { + return chineseName; + } + + public void setChineseName(String chineseName) { + this.chineseName = chineseName; + } + + public String getEnglishName() { + return englishName; + } + + public void setEnglishName(String englishName) { + this.englishName = englishName; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + } + + + public static void main(String[] args) throws IOException { + getMovieStars("26309788"); + } + } -- Gitblit v1.8.0