admin
2021-04-29 e404b19151ef1786aded572ed9bbaec4b5266e45
直播初步集成
1个文件已修改
8个文件已添加
407 ■■■■■ 已修改文件
src/main/java/com/yeshi/buwan/domain/live/TVLiveCategory.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/domain/live/TVLiveCategoryChannelMap.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/domain/live/TVLiveChannel.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/domain/live/TVLiveChannelResourceMap.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/domain/live/TVLiveResource.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/live/TVLiveOtherRecourceChannel.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/live/migu/MiGuLiveListInfo.java 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/live/migu/MiguLiveApiUtil.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/hxh/spring/test/video/BilibiliTest.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/domain/live/TVLiveCategory.java
New file
@@ -0,0 +1,19 @@
package com.yeshi.buwan.domain.live;
import java.util.Date;
/**
 * 电视直播分类
 */
public class TVLiveCategory {
    private String id;
    private String name;
    private String icon;
    private Integer weight;
    private Date createTime;
    private Date updateTime;
}
src/main/java/com/yeshi/buwan/domain/live/TVLiveCategoryChannelMap.java
New file
@@ -0,0 +1,15 @@
package com.yeshi.buwan.domain.live;
import java.util.Date;
public class TVLiveCategoryChannelMap {
    private  String id;
    private String channelId;
    private String categoryId;
    private Integer weight;
    private Date createTime;
    private Date updateTime;
}
src/main/java/com/yeshi/buwan/domain/live/TVLiveChannel.java
New file
@@ -0,0 +1,26 @@
package com.yeshi.buwan.domain.live;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
/**
 * 电视直播渠道
 */
@Document(collection = "tvLiveChannel")
public class TVLiveChannel {
    @Id
    private String id;
    private String name;
    private String hPicture;
    private String vPicture;
    private String nowProgram;
    private String nowProgramTime;
    private String nextProgram;
    private String nextProgramTime;
    private Date createTime;
    private Date updateTime;
}
src/main/java/com/yeshi/buwan/domain/live/TVLiveChannelResourceMap.java
New file
@@ -0,0 +1,17 @@
package com.yeshi.buwan.domain.live;
import java.util.Date;
public class TVLiveChannelResourceMap {
    private String channelId;
    private TVLiveResource resource;
    //第三方主键
    private String rid;
    private Integer weight;
    private Date createTime;
}
src/main/java/com/yeshi/buwan/domain/live/TVLiveResource.java
New file
@@ -0,0 +1,5 @@
package com.yeshi.buwan.domain.live;
public enum TVLiveResource {
    migu, other;
}
src/main/java/com/yeshi/buwan/live/TVLiveOtherRecourceChannel.java
New file
@@ -0,0 +1,5 @@
package com.yeshi.buwan.live;
public class TVLiveOtherRecourceChannel {
}
src/main/java/com/yeshi/buwan/live/migu/MiGuLiveListInfo.java
New file
@@ -0,0 +1,275 @@
package com.yeshi.buwan.live.migu;
import java.io.Serializable;
public class MiGuLiveListInfo implements Serializable {
    /**
     * name : 北京卫视高清
     * pID : 630287636
     * assetID : 5101042960
     * videoType : LIVE
     * nowPlaying : 暖暖的味道精华版
     * startTime : 16:36
     * endTime : 17:25
     * pics : {"lowResolutionH":"https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_H169_720.webp","lowResolutionV":"https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_V23_720.webp","highResolutionH":"https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_H169_1080.webp","highResolutionV":"https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_V34_1080.webp"}
     * h5pics : {"lowResolutionH":"https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_H169_720.jpg","lowResolutionV":"https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_HSJ720V.jpg","highResolutionH":"https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_H169_1080.jpg","highResolutionV":"https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_HSJ1080V.jpg"}
     * now : {"playbillId":"63028763620210429030","startTime":"16:36","endTime":"17:25","playName":"暖暖的味道精华版","ranking":"30","sequence":"550032115420210429030","status":0,"isLookBack":"0","isShield":"0"}
     * next : {"playbillId":"63028763620210429031","startTime":"17:25","endTime":"18:30","playName":"养生堂","ranking":"31","sequence":"550032115420210429031","status":0,"isLookBack":"0","isShield":"0"}
     * hdFlag : 0
     */
    private String id;
    private String name;
    private String pID;
    private String assetID;
    private String videoType;
    private String nowPlaying;
    private String startTime;
    private String endTime;
    private PicsBean pics;
    private PicsBean h5pics;
    private ProgramBean now;
    private ProgramBean next;
    private String hdFlag;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPID() {
        return pID;
    }
    public void setPID(String pID) {
        this.pID = pID;
    }
    public String getAssetID() {
        return assetID;
    }
    public void setAssetID(String assetID) {
        this.assetID = assetID;
    }
    public String getVideoType() {
        return videoType;
    }
    public void setVideoType(String videoType) {
        this.videoType = videoType;
    }
    public String getNowPlaying() {
        return nowPlaying;
    }
    public void setNowPlaying(String nowPlaying) {
        this.nowPlaying = nowPlaying;
    }
    public String getStartTime() {
        return startTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public PicsBean getPics() {
        return pics;
    }
    public void setPics(PicsBean pics) {
        this.pics = pics;
    }
    public PicsBean getH5pics() {
        return h5pics;
    }
    public void setH5pics(PicsBean h5pics) {
        this.h5pics = h5pics;
    }
    public ProgramBean getNow() {
        return now;
    }
    public void setNow(ProgramBean now) {
        this.now = now;
    }
    public ProgramBean getNext() {
        return next;
    }
    public void setNext(ProgramBean next) {
        this.next = next;
    }
    public String getHdFlag() {
        return hdFlag;
    }
    public void setHdFlag(String hdFlag) {
        this.hdFlag = hdFlag;
    }
    public static class PicsBean {
        /**
         * lowResolutionH : https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_H169_720.webp
         * lowResolutionV : https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_V23_720.webp
         * highResolutionH : https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_H169_1080.webp
         * highResolutionV : https://wapx.cmvideo.cn/publish/poms/image/5500/321/154/202010151505_5101042960_V34_1080.webp
         */
        private String lowResolutionH;
        private String lowResolutionV;
        private String highResolutionH;
        private String highResolutionV;
        public String getLowResolutionH() {
            return lowResolutionH;
        }
        public void setLowResolutionH(String lowResolutionH) {
            this.lowResolutionH = lowResolutionH;
        }
        public String getLowResolutionV() {
            return lowResolutionV;
        }
        public void setLowResolutionV(String lowResolutionV) {
            this.lowResolutionV = lowResolutionV;
        }
        public String getHighResolutionH() {
            return highResolutionH;
        }
        public void setHighResolutionH(String highResolutionH) {
            this.highResolutionH = highResolutionH;
        }
        public String getHighResolutionV() {
            return highResolutionV;
        }
        public void setHighResolutionV(String highResolutionV) {
            this.highResolutionV = highResolutionV;
        }
    }
    public static class ProgramBean {
        /**
         * playbillId : 63028763620210429030
         * startTime : 16:36
         * endTime : 17:25
         * playName : 暖暖的味道精华版
         * ranking : 30
         * sequence : 550032115420210429030
         * status : 0
         * isLookBack : 0
         * isShield : 0
         */
        private String playbillId;
        private String startTime;
        private String endTime;
        private String playName;
        private String ranking;
        private String sequence;
        private int status;
        private String isLookBack;
        private String isShield;
        public String getPlaybillId() {
            return playbillId;
        }
        public void setPlaybillId(String playbillId) {
            this.playbillId = playbillId;
        }
        public String getStartTime() {
            return startTime;
        }
        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }
        public String getEndTime() {
            return endTime;
        }
        public void setEndTime(String endTime) {
            this.endTime = endTime;
        }
        public String getPlayName() {
            return playName;
        }
        public void setPlayName(String playName) {
            this.playName = playName;
        }
        public String getRanking() {
            return ranking;
        }
        public void setRanking(String ranking) {
            this.ranking = ranking;
        }
        public String getSequence() {
            return sequence;
        }
        public void setSequence(String sequence) {
            this.sequence = sequence;
        }
        public int getStatus() {
            return status;
        }
        public void setStatus(int status) {
            this.status = status;
        }
        public String getIsLookBack() {
            return isLookBack;
        }
        public void setIsLookBack(String isLookBack) {
            this.isLookBack = isLookBack;
        }
        public String getIsShield() {
            return isShield;
        }
        public void setIsShield(String isShield) {
            this.isShield = isShield;
        }
    }
}
src/main/java/com/yeshi/buwan/live/migu/MiguLiveApiUtil.java
New file
@@ -0,0 +1,39 @@
package com.yeshi.buwan.live.migu;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yeshi.buwan.util.HttpUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.lang.reflect.Type;
import java.util.List;
public class MiguLiveApiUtil {
    private static String LIVE_CATE = "[{\"name\":\"热门\",\"vomsID\":\"e7716fea6aa1483c80cfc10b7795fcb8\"},{\"name\":\"央视\",\"vomsID\":\"a5f78af9d160418eb679a6dd0429c920\"},{\"name\":\"卫视\",\"vomsID\":\"0847b3f6c08a4ca28f85ba5701268424\"},{\"name\":\"地方\",\"vomsID\":\"855e9adc91b04ea18ef3f2dbd43f495b\"},{\"name\":\"追剧\",\"vomsID\":\"dd5311d848b54c56acba186ff1107236\"},{\"name\":\"影视\",\"vomsID\":\"10b0d04cb23d4ac5945c4bc77c7ac44e\"},{\"name\":\"体育\",\"vomsID\":\"7538163cdac044398cb292ecf75db4e0\"},{\"name\":\"新闻\",\"vomsID\":\"c584f67ad63f4bc983c31de3a9be977c\"},{\"name\":\"教育\",\"vomsID\":\"af72267483d94275995a4498b2799ecd\"},{\"name\":\"熊猫\",\"vomsID\":\"e76e56e88fff4c11b0168f55e826445d\"},{\"name\":\"娱乐\",\"vomsID\":\"192a12edfef04b5eb616b878f031f32f\"},{\"name\":\"少儿\",\"vomsID\":\"fc2f5b8fd7db43ff88c4243e731ecede\"},{\"name\":\"纪实\",\"vomsID\":\"e1165138bdaa44b9a3138d74af6c6673\"},{\"name\":\"印象天下\",\"vomsID\":\"72504196e156468b873a39734f0af7db\"},{\"name\":\"特色\",\"vomsID\":\"f24ab89d1ad94b66b623945ae0c1350e\"},{\"name\":\"购物\",\"vomsID\":\"5938b5e060964fae9fe22ca20fbd5d6a\"}]";
    public static List<MiGuLiveListInfo> getLiveList(String vomsID) {
        String url = "https://webapi.miguvideo.com/gateway/live/v2/tv-data/" + vomsID;
        String result = HttpUtil.get(url);
        System.out.println(result);
        JSONObject resultJSON = JSONObject.fromObject(result);
        if (resultJSON.optInt("code") != 200)
            return null;
        JSONArray array = resultJSON.optJSONObject("body").optJSONArray("dataList");
        Type type = new TypeToken<List<MiGuLiveListInfo>>() {
        }.getType();
        List<MiGuLiveListInfo> mList = new Gson().fromJson(array.toString(), type);
        return mList;
    }
    public static void main(String[] args) {
        List<MiGuLiveListInfo> list = getLiveList("a5f78af9d160418eb679a6dd0429c920");
        System.out.println(list);
    }
}
src/test/java/com/hxh/spring/test/video/BilibiliTest.java
@@ -40,15 +40,15 @@
    public void test2() throws Exception {
        BilibiliApiUtil.MediaUrlResult result = BilibiliApiUtil.getMediaList(BilibiliUtil.TYPE_DIANSHIJU, 2, 1);
        int page = result.getTotal() % 20 == 0 ? result.getTotal() / 20 : result.getTotal() / 20 + 1;
        for (int i = 0; i < page; i++) {
            System.out.println("page:"+i);
        for (int i = 30; i < 40; i++) {
            System.out.println("page:" + i);
            result = BilibiliApiUtil.getMediaList(BilibiliUtil.TYPE_DIANSHIJU, 2, i + 1);
            if (result.getResult() != null)
                for (String url : result.getResult()) {
                    try {
                        BilibiliMediaInfo mediaInfo = BilibiliApiUtil.parseMediaInfo(url);
                        bilibiliVideoService.addToInternetSearch(mediaInfo);
                        Thread.sleep(200);
                        Thread.sleep(1000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }