biliob/src/main/java/com/yutou/bilibili/BiliBili/Controllers/BiliVideoController.java
Yutousama 44272a609f 新增日志输出类
修复直播检测不绿的情况
2021-04-01 21:11:15 +08:00

140 lines
5.7 KiB
Java

package com.yutou.bilibili.BiliBili.Controllers;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yutou.bilibili.BiliBili.LiveUtils;
import com.yutou.bilibili.BiliBili.Services.IBiliBiliLiveService;
import com.yutou.bilibili.BiliBili.Tools.BiliTools;
import com.yutou.bilibili.Services.ISystemConfigService;
import com.yutou.bilibili.Services.IUserService;
import com.yutou.bilibili.Tools.AppTools;
import com.yutou.bilibili.Tools.Config;
import com.yutou.bilibili.Tools.FFmpegUtils;
import com.yutou.bilibili.Tools.ServiceTools;
import com.yutou.bilibili.mybatis.Bili.mybatis.model.BilibiliUpInfo;
import com.yutou.bilibili.mybatis.model.UUser;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Controller
public class BiliVideoController {
@Resource
IUserService service;
@Resource
IBiliBiliLiveService liveService;
@Resource
ISystemConfigService configService;
@ResponseBody
@RequestMapping("/bili/video/get/list.do")
public JSONObject videoList(HttpServletRequest request) {
JSONObject json = new JSONObject();
String token = AppTools.getLoginToken(request);
UUser user = service.getUserToToken(token);
if (user == null) {
json.put("code", -1);
json.put("msg", "未登录");
json.put("data", new JSONObject());
return json;
}
if (ServiceTools.getInstance().auth(request, user.getUser(), "/bili/video/get/")) {
File file = new File("live");
if (!file.exists() || Objects.requireNonNull(file.listFiles()).length == 0) {
json.put("code", 0);
json.put("msg", "文件夹为空");
json.put("data", new JSONObject());
} else {
List<File> list = AppTools.scanFilePath("live");
JSONArray array = new JSONArray();
for (File f : list) {
JSONObject item = new JSONObject();
String _time = f.getName().split(" ")[0].substring(1);
File mpeg = new File("ffmpeg_out" + File.separator + _time + File.separator + f.getName());
if (mpeg.exists()) {
f = mpeg;
item.put("ffmpeg", true);
} else {
item.put("ffmpeg", false);
}
String date = f.getName().split(" ")[0].substring(1);
String time = f.getName().split(" ")[1].split("\\]")[0];
String roomid = f.getName().split("\\]")[1].replace(".mp4", "").replace("_ffmpeg", "").trim();
BilibiliUpInfo info = liveService.queryUpToRoomId(Integer.parseInt(roomid));
long size = f.length();
String _size;
if (size < 1024) {
_size = size + "B";
} else if (size < 1048576) {
_size = (size / 1024) + "KB";
} else if (size < 1073741824) {
_size = (size / 1048576) + "MB";
} else {
_size = (size / 1073741824) + "GB";
}
item.put("fileName", f.getName());
item.put("fileSize", _size);
item.put("date", date);
item.put("time", time);
item.put("name", info == null ? roomid : info.getName());
array.add(item);
}
json.put("code", 0);
json.put("msg", "ok");
json.put("data", array);
}
} else {
json.put("code", -2);
json.put("msg", "未授权");
json.put("data", new JSONObject());
}
return json;
}
@RequestMapping("/bili/video/download/get.do")
public ResponseEntity<FileSystemResource> download(String fileName) {
String time = fileName.split(" ")[0].substring(1);
File file = new File("ffmpeg_out" + File.separator + time + File.separator + fileName);
if (!file.exists())
file = new File("live" + File.separator + time + File.separator + fileName);
com.yutou.bilibili.Tools.Log.i(file.getAbsolutePath());
return AppTools.getFile(file);
}
@ResponseBody
@RequestMapping("/bili/video/set/ffmpeg.do")
public JSONObject ffmpegOut(String fileName) throws UnsupportedEncodingException {
fileName= URLDecoder.decode(fileName,"UTF-8");
JSONObject json=new JSONObject();
json.put("code",0);
json.put("msg","ok");
String time = fileName.split(" ")[0].substring(1);
File file = new File("live" + File.separator + time + File.separator + fileName);
int i= FFmpegUtils.add(configService.getConfig(Config.SYSTEM_VIDEO_FFMPEG),file,new File("ffmpeg_out"+File.separator+time));
json.put("model",i);
switch (i){
case 0:
json.put("msg","已添加到后台转码");
case 1:
json.put("msg","已经转码,无须二次转码");
break;
case 2:
json.put("msg","正在转码");
break;
}
return json;
}
}