账号模块视频和弹幕api

This commit is contained in:
welsir
2023-09-09 23:27:13 +08:00
parent 90f773aa5c
commit 611b7fd24e
22 changed files with 7362 additions and 7083 deletions
+27
View File
@@ -0,0 +1,27 @@
w
Gchopperbot-hot/src/main/java/org/example/core/guard/HotModuleGuard.java,a\0\a041720980ce8572991a33b197c3d81b7cb2e69d
q
Achopperbot-live/src/main/java/org/example/api/DouyuRecordApi.java,8\f\8f191dc97b4e0d2571f649a1600c703d34ad26c2
x
Hchopperbot-common/src/main/java/org/example/init/InitPluginRegister.java,5\a\5a133c519459ad4a22878928f82def26862acd31
{
Kdoc/docs/01.指å—/01.开呿Œ‡å—/02.系统æ’ä»¶/03.热度监控æ’ä»¶.md,c\4\c4fa3a693a39c9b1847c5eaf7059cca997527b45
{
Kdoc/docs/01.指å—/01.开呿Œ‡å—/02.系统æ’ä»¶/01.文件缓存æ’ä»¶.md,c\1\c1323f01e0736fea6d2fb87e88e904a79a9a30a8
p
@chopperbot-account/src/main/java/org/example/core/VideoType.java,2\6\265ab5b7137a542213410da8195b02b06a7692d0

Qdoc/docs/01.指å—/01.开呿Œ‡å—/02.系统æ’ä»¶/04.爬虫任务中心æ’ä»¶.md,e\8\e83a2fa7f8f76b2daf1183cff7572f224a44ac6b

Vchopperbot-barrage/src/main/java/org/example/init/module/BarrageModuleInitMachine.java,a\f\af71a49d825f2b79243dc2df9f134a7cb4640b2e
n
>chopperbot-hot/src/main/java/org/example/config/FollowDog.java,7\4\74b76b9d2bd43d07054d9e6eb36e9ee4507da3e1
t
Dchopperbot-console/src/main/java/org/example/ConsoleApplication.java,a\b\abdd1c60a367131d127a01ca5bc834e95020a4e3
O
config/Hot/hotModuleConfig.json,5\0\50eb6bdb4a00f0b15b783cfc947a7a759c934449
v
Fchopperbot-creeper/src/main/java/org/example/api/MonitorCenterApi.java,5\c\5c440003ab53fc4466023bd8249cb4898ddeb5d8
w
Gchopperbot-creeper/src/main/java/org/example/api/CreeperManagerApi.java,5\d\5d5897de24b870055a6792786f1de4b6fe558b74
+27
View File
@@ -0,0 +1,27 @@
w
Gchopperbot-hot/src/main/java/org/example/core/guard/HotModuleGuard.java,a\0\a041720980ce8572991a33b197c3d81b7cb2e69d
q
Achopperbot-live/src/main/java/org/example/api/DouyuRecordApi.java,8\f\8f191dc97b4e0d2571f649a1600c703d34ad26c2
x
Hchopperbot-common/src/main/java/org/example/init/InitPluginRegister.java,5\a\5a133c519459ad4a22878928f82def26862acd31
p
@chopperbot-account/src/main/java/org/example/core/VideoType.java,2\6\265ab5b7137a542213410da8195b02b06a7692d0
{
Kdoc/docs/01.指å—/01.开呿Œ‡å—/02.系统æ’ä»¶/01.文件缓存æ’ä»¶.md,c\1\c1323f01e0736fea6d2fb87e88e904a79a9a30a8
{
Kdoc/docs/01.指å—/01.开呿Œ‡å—/02.系统æ’ä»¶/03.热度监控æ’ä»¶.md,c\4\c4fa3a693a39c9b1847c5eaf7059cca997527b45

Qdoc/docs/01.指å—/01.开呿Œ‡å—/02.系统æ’ä»¶/04.爬虫任务中心æ’ä»¶.md,e\8\e83a2fa7f8f76b2daf1183cff7572f224a44ac6b

Vchopperbot-barrage/src/main/java/org/example/init/module/BarrageModuleInitMachine.java,a\f\af71a49d825f2b79243dc2df9f134a7cb4640b2e
t
Dchopperbot-console/src/main/java/org/example/ConsoleApplication.java,a\b\abdd1c60a367131d127a01ca5bc834e95020a4e3
n
>chopperbot-hot/src/main/java/org/example/config/FollowDog.java,7\4\74b76b9d2bd43d07054d9e6eb36e9ee4507da3e1
O
config/Hot/hotModuleConfig.json,5\0\50eb6bdb4a00f0b15b783cfc947a7a759c934449
v
Fchopperbot-creeper/src/main/java/org/example/api/MonitorCenterApi.java,5\c\5c440003ab53fc4466023bd8249cb4898ddeb5d8
w
Gchopperbot-creeper/src/main/java/org/example/api/CreeperManagerApi.java,5\d\5d5897de24b870055a6792786f1de4b6fe558b74
+21
View File
@@ -29,11 +29,32 @@
<artifactId>edgegrid-signer-core</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.8.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>chopperbot-common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>chopperbot-file</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,40 @@
package org.example.api;
import org.example.cache.FileCacheManager;
import org.example.constpool.ConstPool;
import org.example.constpool.GlobalFileCache;
import org.example.constpool.PluginName;
import org.example.init.InitPluginRegister;
import org.example.plugin.CommonPlugin;
import org.junit.Test;
import java.io.File;
import java.security.Key;
import java.util.*;
/**
* @Description
* @Author welsir
* @Date 2023/9/9 12:36
*/
public class BarrageApi {
private static final String BARRAGE_FILE_ROOT_PATH = (String) GlobalFileCache.ModuleSrcConfigFile.get("src", ConstPool.BARRAGE);
private static final HashMap<String,List<File>> barrageFileMap = new HashMap<>();
private static final String[] platForms = {"bilibili","douyu","douyin","huya","tiktok","twitch"};
public HashMap getAllBarrageFile(){
for (String plathForm : platForms) {
File platformDir = new File(BARRAGE_FILE_ROOT_PATH + "/" + plathForm);
for (File anchorDir : Objects.requireNonNull(platformDir.listFiles())) {
if(anchorDir.isDirectory()){
String anchor = anchorDir.getName();
List<File> fileList = new ArrayList<>(Arrays.asList(Objects.requireNonNull(anchorDir.listFiles())));
barrageFileMap.put(anchor, fileList);
}
}
}
return barrageFileMap;
}
}
@@ -0,0 +1,34 @@
package org.example.api;
import org.example.constpool.ConstPool;
import org.example.constpool.GlobalFileCache;
import java.io.File;
import java.util.*;
/**
* @Description
* @Author welsir
* @Date 2023/9/9 12:36
*/
public class VideoApi {
private static final String VIDEO_FILE_ROOT_PATH = (String) GlobalFileCache.ModuleSrcConfigFile.get("src", ConstPool.LIVE_RECORD);
private static final HashMap<String, Map<String,List<File>>> liveRecordMap = new HashMap<>();
public HashMap getAllLiveRecord(){
for (File type : Objects.requireNonNull(new File(VIDEO_FILE_ROOT_PATH).listFiles(File::isDirectory))) {
Map<String, List<File>> recordMap = new HashMap<>();
for (File platform : Objects.requireNonNull(type.listFiles(File::isDirectory))) {
List<File> videoFiles = Arrays.asList(Objects.requireNonNull(platform.listFiles()));
recordMap.put(platform.getName(), videoFiles);
}
liveRecordMap.put("online".equals(type.getName()) ? "online" : "record", recordMap);
}
return liveRecordMap;
}
}
@@ -0,0 +1,28 @@
package org.example.api;
import org.example.constpool.PluginName;
import org.example.core.guard.VideoPushGuard;
import org.example.init.InitPluginRegister;
import org.example.plugin.CommonPlugin;
/**
* @Description 视频推送插件api
* @Author welsir
* @Date 2023/9/5 22:36
*/
public class VideoPublishApi {
public static void pushVideo(Object obj){
VideoPushGuard plugin = InitPluginRegister.getPlugin(PluginName.VIDEO_PUSH_PLUGIN, VideoPushGuard.class);
if (plugin != null) {
plugin.sendVideo(obj);
}else {
System.out.println("plugin is null!");
}
}
public static void main(String[] args) {
pushVideo("hello");
}
}
@@ -10,7 +10,7 @@ import java.util.*;
* @Date 2023/9/4 22:07
*/
public class Exchange {
private final Map<String, List<VideoQueue>> bindings = new HashMap();
private final Map<String, List<VideoQueue>> bindings = new HashMap<>();
public Exchange() {
}
@@ -20,9 +20,10 @@ public class Exchange {
this.bindings.get(routingKey).add(queue);
}
public void publish(String routingKey, Object message) {
if (this.bindings.containsKey(routingKey)) {
List<VideoQueue> queues = (List)this.bindings.get(routingKey);
List<VideoQueue> queues = this.bindings.get(routingKey);
Iterator var4 = queues.iterator();
while(var4.hasNext()) {
@@ -30,7 +31,6 @@ public class Exchange {
queue.enqueue(message);
}
}
}
public boolean isEmpty() {
@@ -1,186 +0,0 @@
package org.example.core.guard;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.example.core.VideoType;
import org.example.core.exchange.Exchange;
import org.example.plugin.GuardPlugin;
import org.example.pojo.Video;
import org.example.pojo.VideoQueue;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Description
* @Author welsir
* @Date 2023/9/4 22:10
*/
public class VideoPublishGuard extends GuardPlugin {
private Exchange exchange;
private static String PATH = "config/Account/account.json";
private BlockingQueue<Object> receiveVideo;
public VideoPublishGuard(String module, String pluginName, List<String> needPlugins, boolean isAutoStart) {
super(module, pluginName, needPlugins, isAutoStart);
}
@Override
public boolean init() {
exchange = new Exchange();
JSONObject object = null;
try {
object = JSON.parseObject(Files.readString(Path.of(PATH)));
} catch (IOException var16) {
throw new RuntimeException(var16);
}
Iterator<Map.Entry<String, Object>> iterator = object.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, Object> entry = iterator.next();
String platform = entry.getKey();
JSONObject platformData = (JSONObject)entry.getValue();
System.out.println("Platform: " + platform);
System.out.println("platformData: " + platformData);
Iterator<Map.Entry<String, Object>> iterator1 = platformData.entrySet().iterator();
while(true) {
Object types;
Object isMatch;
do {
Map.Entry<String, Object> next = iterator1.next();
JSONObject value = (JSONObject)next.getValue();
types = value.get("type");
isMatch = value.get("isMatch");
} while(types == null);
Pattern pattern = Pattern.compile("\"([^\"]+)\"");
Matcher matcher = pattern.matcher(types.toString());
while(matcher.find()) {
String type = matcher.group(1);
Iterator var14 = platformData.keySet().iterator();
while(var14.hasNext()) {
String s = (String)var14.next();
exchange.bind(new VideoQueue(platform + "-" + s, "true".equals(isMatch)), type);
}
}
}
}
receiveVideo = new ArrayBlockingQueue<>(1024);
return true;
}
@Override
public void start() {
try {
Object videoMsg = receiveVideo.poll(5L, TimeUnit.SECONDS);
if (videoMsg != null && videoMsg instanceof Video) {
Video video = (Video)videoMsg;
Iterator var3 = video.getVideoType().iterator();
while(var3.hasNext()) {
VideoType videoType = (VideoType)var3.next();
exchange.publish(videoType.toString(), video.getMessage());
}
}
} catch (InterruptedException var5) {
throw new RuntimeException(var5);
}
}
public void sendVideo(Object msg) {
receiveVideo.offer(msg);
}
// public static void main(String[] args) {
// exchange = new Exchange();
// JSONObject object = null;
//
// try {
// object = JSON.parseObject(Files.readString(Path.of(PATH)));
// } catch (IOException var16) {
// throw new RuntimeException(var16);
// }
//
// Iterator<Map.Entry<String, Object>> iterator = object.entrySet().iterator();
//
// Iterator iterator1;
// label68:
// while(iterator.hasNext()) {
// Map.Entry<String, Object> entry = (Map.Entry)iterator.next();
// String platform = (String)entry.getKey();
// JSONObject platformData = (JSONObject)entry.getValue();
// System.out.println("Platform: " + platform);
// System.out.println("platformData: " + platformData);
// iterator1 = platformData.entrySet().iterator();
//
// while(true) {
// Object types;
// Object isMatch;
// do {
// if (!iterator1.hasNext()) {
// continue label68;
// }
//
// Map.Entry<String, Object> next = (Map.Entry)iterator1.next();
// JSONObject value = (JSONObject)next.getValue();
// types = value.get("type");
// isMatch = value.get("isMatch");
// } while(types == null);
//
// Pattern pattern = Pattern.compile("\"([^\"]+)\"");
// Matcher matcher = pattern.matcher(types.toString());
//
// while(matcher.find()) {
// String type = matcher.group(1);
// Iterator var14 = platformData.keySet().iterator();
//
// while(var14.hasNext()) {
// String s = (String)var14.next();
// exchange.bind(new VideoQueue(platform + "-" + s, "true".equals(isMatch)), type);
// }
// }
// }
// }
//
// receiveVideo = new ArrayBlockingQueue(1024);
//
// try {
// Video video1 = new Video();
// video1.setVideoType(List.of(VideoType.SAD, VideoType.HAPPY));
// video1.setMessage("hello");
// sendVideo(video1);
// Object videoMsg = receiveVideo.poll(5L, TimeUnit.SECONDS);
// if (videoMsg != null && videoMsg instanceof Video) {
// Video video = (Video)videoMsg;
// iterator1 = video.getVideoType().iterator();
//
// while(iterator1.hasNext()) {
// VideoType videoType = (VideoType)iterator1.next();
// exchange.publish(videoType.toString(), video.getMessage());
// }
// }
//
// System.out.println(exchange.getBindings());
// } catch (InterruptedException var17) {
// throw new RuntimeException(var17);
// }
// }
}
@@ -0,0 +1,136 @@
package org.example.core.guard;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.example.core.VideoType;
import org.example.core.exchange.Exchange;
import org.example.plugin.GuardPlugin;
import org.example.pojo.Video;
import org.example.pojo.VideoQueue;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Description
* @Author welsir
* @Date 2023/9/4 22:10
*/
public class VideoPushGuard extends GuardPlugin {
private static Exchange exchange;
private static String PATH = "config/Account/account.json";
private static BlockingQueue<Object> receiveVideo;
public VideoPushGuard(String module, String pluginName, List<String> needPlugins, boolean isAutoStart) {
super(module, pluginName, needPlugins, isAutoStart);
}
@Override
public boolean init() {
// exchange = new Exchange();
// try {
// String jsonData = Files.readString(Path.of(PATH));
// JSONObject jsonObject = JSON.parseObject(jsonData);
//
// for (Map.Entry<String, Object> platformEntry : jsonObject.entrySet()) {
// String platform = platformEntry.getKey();
// JSONObject platformData = (JSONObject) platformEntry.getValue();
//
// System.out.println("Platform: " + platform);
// System.out.println("platformData: " + platformData);
//
// String types = getStringValueOrDefault(platformData, "type", "");
// boolean isMatch = getBooleanValueOrDefault(platformData, "isMatch", false);
//
// Pattern pattern = Pattern.compile("\"([^\"]+)\"");
// Matcher matcher = pattern.matcher(types);
//
// while (matcher.find()) {
// String type = matcher.group(1);
// for (String queueName : platformData.keySet()) {
// exchange.bind(new VideoQueue(platform + "-" + queueName, isMatch), type);
// }
// }
// }
//
// receiveVideo = new ArrayBlockingQueue<>(1024);
return true;
// } catch (IOException e) {
// throw new RuntimeException(e);
// }
}
@Override
public void start() {
// try {
// Object videoMsg = receiveVideo.poll(5, TimeUnit.SECONDS);
// if (videoMsg instanceof Video) {
// Video video = (Video)videoMsg;
// Iterator<VideoType> iterator = video.getVideoType().iterator();
// while(iterator.hasNext()) {
// VideoType videoType = iterator.next();
// exchange.publish(videoType.toString(), video.getMessage());
// }
// }
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// }
}
public void sendVideo(Object msg) {
receiveVideo.offer(msg);
}
public static void main(String[] args) {
exchange = new Exchange();
try {
String jsonData = Files.readString(Path.of(PATH));
JSONObject jsonObject = JSON.parseObject(jsonData);
for (Map.Entry<String, Object> platformEntry : jsonObject.entrySet()) {
String platform = platformEntry.getKey();
JSONObject platformData = (JSONObject) platformEntry.getValue();
System.out.println("Platform: " + platform);
System.out.println("platformData: " + platformData);
String types = getStringValueOrDefault(platformData, "type", "");
boolean isMatch = getBooleanValueOrDefault(platformData, "isMatch", false);
Pattern pattern = Pattern.compile("\"([^\"]+)\"");
Matcher matcher = pattern.matcher(types);
while (matcher.find()) {
String type = matcher.group(1);
for (String queueName : platformData.keySet()) {
exchange.bind(new VideoQueue(platform + "-" + queueName, isMatch), type);
}
}
}
receiveVideo = new ArrayBlockingQueue<>(1024);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private static String getStringValueOrDefault(JSONObject jsonObject, String key, String defaultValue) {
Object value = jsonObject.get(key);
return value != null ? value.toString() : defaultValue;
}
private static boolean getBooleanValueOrDefault(JSONObject jsonObject, String key, boolean defaultValue) {
Object value = jsonObject.get(key);
return value != null ? (boolean) value : defaultValue;
}
}
@@ -30,7 +30,7 @@ public class VideoQueue {
public VideoQueue(String name, boolean isStrongMatch) {
this.name = name;
this.messages = new ArrayList();
this.messages = new ArrayList<>();
this.isStrongMatch = isStrongMatch;
}
@@ -30,6 +30,11 @@ public class PluginName {
//Barrage
public static final String BARRAGE_FILE_PLUGIN= "BarrageFileListen";
//Account
public static final String VIDEO_PUSH_PLUGIN = "VideoPush";
public static final String LIVE_CONFIG_PLUGIN= "LiveConfig";
public static final String LIVE_MANAGER_PLUGIN= "LiveDownLoadManager";
@@ -0,0 +1,10 @@
package org.example.controller;
/**
* @Description
* @Author welsir
* @Date 2023/9/7 17:49
*/
public class VideoPushController {
}
@@ -22,8 +22,6 @@ import java.util.List;
//TODO 待重构
public class HotModuleApi {
public static HotModuleList getDouyuAllHotModule(){
return new DouyuHotModuleLoadTask(new DouyuHotModuleConfig()).start();
}
@@ -17,7 +17,6 @@ public class DouyuHotModuleLoadTask extends HotModuleLoadTask<HotModuleList> {
public DouyuHotModuleLoadTask(DouyuHotModuleConfig loadConfig) {
super(loadConfig);
}
@Override
+3
View File
@@ -0,0 +1,3 @@
{
}
@@ -0,0 +1,65 @@
{
"data":[
{
"timeIndex":0,
"timeReal":1694233199000,
"mid":"5658479E",
"content":"假如命都没了,是不是狗也已经无所谓了"
},
{
"timeIndex":0,
"timeReal":1694233152000,
"mid":"2F6CEA30",
"content":"溜了溜了,再不溜,命没了"
},
{
"timeIndex":0,
"timeReal":1694232561000,
"mid":"F17AD68D",
"content":"吃饭咯"
},
{
"timeIndex":0,
"timeReal":1694232556000,
"mid":"D1252A3A",
"content":"溜了[dog]"
},
{
"timeIndex":0,
"timeReal":1694232522000,
"mid":"B2044534",
"content":"那几个算纯赚了[dog]"
},
{
"timeIndex":0,
"timeReal":1694232499000,
"mid":"628892D3",
"content":"但是她一个就回本[dog]"
},
{
"timeIndex":0,
"timeReal":1694232413000,
"mid":"3787D64C",
"content":"她一个盒子顶你不知道了几个了"
},
{
"timeIndex":0,
"timeReal":1694232356000,
"mid":"E6CB38B2",
"content":"你不如森晚"
},
{
"timeIndex":0,
"timeReal":1694232284000,
"mid":"BEB58DAF",
"content":"两个极端"
},
{
"timeIndex":0,
"timeReal":1694232146000,
"mid":"C6D18502",
"content":"[爱]"
}
],
"updateTime":"2023-09-09 12:40:15"
}
+79
View File
@@ -0,0 +1,79 @@
{
"data":{
"task":[
{
"taskByteStream":"rO0ABXNyACxvcmcuZXhhbXBsZS5jb3JlLnRhc2tjZW50ZXIudGFzay5SZXB0aWxlVGFza+61Zzf94WEnAgAGTAAHZW5kVGltZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wACGxvYWRUYXNrdAAkTG9yZy9leGFtcGxlL2NvcmUvbG9hZHRhc2svTG9hZFRhc2s7TAAHcmVxdWVzdHQANExvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvcmVxdWVzdC9SZXB0aWxlUmVxdWVzdDtMAAlzdGFydFRpbWVxAH4AAUwABnRhc2tJZHEAfgABTAAEdHlwZXQALUxvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvdGFzay9UYXNrU3RhdHVzO3hwdAADbmlsc3IAPG9yZy5leGFtcGxlLmNvcmUuY3JlZXBlci5sb2FkdGFzay5CaWxpYmlsaUxpdmVPbmxpbmVMb2FkVGFza0FPZu3db77SAgAAeHIANG9yZy5leGFtcGxlLmNvcmUuY3JlZXBlci5sb2FkdGFzay5MaXZlT25saW5lTG9hZFRhc2t7p9n3gx22bQIAAHhyAChvcmcuZXhhbXBsZS5jb3JlLmxvYWR0YXNrLkNvbW1vbkxvYWRUYXNrgsGE0jqnYxYCAAFMAApsb2FkQ29uZmlndAAoTG9yZy9leGFtcGxlL2NvcmUvbG9hZGNvbmZpZy9Mb2FkQ29uZmlnO3hwc3IAPG9yZy5leGFtcGxlLmNvcmUuY3JlZXBlci5sb2FkY29uZmlnLkJpbGliaWxpTGl2ZU9ubGluZUNvbmZpZzGoSPZj3vmnAgAAeHIAMm9yZy5leGFtcGxlLmNvcmUuY3JlZXBlci5sb2FkY29uZmlnLkxvYWRMaXZlQ29uZmlnSY1xRYrAsVYCAAVaAAxjb252ZXJ0VG9NcDRaABFzaG93RG93bmxvYWRUYWJsZUwACWxpdmVyTmFtZXEAfgABTAAGcm9vbUlkcQB+AAFMAAhyb29tTmFtZXEAfgABeHIAM29yZy5leGFtcGxlLmNvcmUuY3JlZXBlci5sb2FkY29uZmlnLkxvYWRWaWRlb0NvbmZpZ3kpnLXoPhmNAgAESQAHY2xhcml0eUwACHBsYXRmb3JtcQB+AAFMAAl2aWRlb05hbWVxAH4AAUwACXZpZGVvUGF0aHEAfgABeHIAJm9yZy5leGFtcGxlLmNvcmUubG9hZGNvbmZpZy5Mb2FkQ29uZmlncA3DW3/AuVkCAAdMAAZPcmlnaW5xAH4AAUwAB1JlZmVyZXJxAH4AAUwACVVzZXJBZ2VudHEAfgABTAAGY29va2lldAAPTGphdmEvdXRpbC9NYXA7TAAGaGVhZGVycQB+ABBMAAlzdGFydFRpbWVxAH4AAUwAA3VybHEAfgABeHB0ABlodHRwczovL2xpdmUuYmlsaWJpbGkuY29tdAAaaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbS90AHNNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTIuMC40NTE1LjEzMSBTYWZhcmkvNTM3LjM2cHB0ABMyMDIzLTA5LTA5IDEyOjQwOjE1cAAAD6B0AAhiaWxpYmlsaXQAKuS4jeacn+iAjOmBhy3po57puJ/lhqBfMzAyMzY0OTVfMjAyMy0wOS0wOXQAIy5cY29uZmlnXExpdmVSZWNvcmRcb25saW5lXGJpbGliaWxpAQF0ABbkuI3mnJ/ogIzpgYct6aOe6bif5YagdAAIMzAyMzY0OTV0AB/ov5vmnaXmiaMx77yM6aKG5Y+W5LiA5Liq5aWz5Y+Lc3IAMm9yZy5leGFtcGxlLmNvcmUudGFza2NlbnRlci5yZXF1ZXN0LlJlcHRpbGVSZXF1ZXN0lLxjHBQ1M0sCAARMAAhjYWxsYmFja3QAG0xvcmcvZXhhbXBsZS9jb3JlL0NhbGxiYWNrO0wADGNyZWVwZXJHcm91cHEAfgABTAALY3JlZXBlck5hbWVxAH4AAUwABXBhcmFtdAASTGphdmEvbGFuZy9PYmplY3Q7eHBzcgAhamF2YS5sYW5nLmludm9rZS5TZXJpYWxpemVkTGFtYmRhb2HQlCwpNoUCAApJAA5pbXBsTWV0aG9kS2luZFsADGNhcHR1cmVkQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtMAA5jYXB0dXJpbmdDbGFzc3QAEUxqYXZhL2xhbmcvQ2xhc3M7TAAYZnVuY3Rpb25hbEludGVyZmFjZUNsYXNzcQB+AAFMAB1mdW5jdGlvbmFsSW50ZXJmYWNlTWV0aG9kTmFtZXEAfgABTAAiZnVuY3Rpb25hbEludGVyZmFjZU1ldGhvZFNpZ25hdHVyZXEAfgABTAAJaW1wbENsYXNzcQB+AAFMAA5pbXBsTWV0aG9kTmFtZXEAfgABTAATaW1wbE1ldGhvZFNpZ25hdHVyZXEAfgABTAAWaW5zdGFudGlhdGVkTWV0aG9kVHlwZXEAfgABeHAAAAAGdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAHZyAC1vcmcuZXhhbXBsZS5jb3JlLnJlY29tbWVuZC5IZWF0UmVjb21tZW5kYXRpb25B6JuGaBmp+gIAAUwAFHBsYXRmb3JtRm9sbG93RG9nTWFwcQB+ABB4cgAfb3JnLmV4YW1wbGUucGx1Z2luLkNvbW1vblBsdWdpboScLxL3aHXZAgAFWgALaXNBdXRvU3RhcnRMAAZsb2dnZXJ0ABJMb3JnL3NsZjRqL0xvZ2dlcjtMAAZtb2R1bGVxAH4AAUwAC25lZWRQbHVnaW5zdAAQTGphdmEvdXRpbC9MaXN0O0wACnBsdWdpbk5hbWVxAH4AAXhwdAAZb3JnL2V4YW1wbGUvY29yZS9DYWxsYmFja3QACGNhbGxiYWNrdAAVKExqYXZhL2xhbmcvT2JqZWN0OylWdAAtb3JnL2V4YW1wbGUvY29yZS9yZWNvbW1lbmQvSGVhdFJlY29tbWVuZGF0aW9udAAdbGFtYmRhJGhhbmRsZUV2ZW50JDc5NjI0Mjc1JDFxAH4ALXEAfgAtdAANYmlsaWJpbGlfbGl2ZXBzcgAib3JnLmV4YW1wbGUuYmVhbi5saXZlLkJpbGlCaWxpTGl2ZeTqA+CQgXyAAgAHTAAHYXJlYV9pZHEAfgABTAAJYXJlYV9uYW1lcQB+AAFMAAhncm91cF9pZHEAfgABTAAOcGFyZW50X2FyZWFfaWRxAH4AAUwAEHBhcmVudF9hcmVhX25hbWVxAH4AAUwACnNlc3Npb25faWRxAH4AAUwAA3VpZHEAfgABeHIAFW9yZy5leGFtcGxlLmJlYW4uTGl2ZWtWV4yhuR7bAgAISQAKd2F0Y2hlck51bUwAC2Rlc2NyaXB0aW9ucQB+AAFMAAZsaXZlSWRxAH4AAUwACGxpdmVOYW1lcQB+AAFMAAVsaXZlcnEAfgABTAAIbW9kdWxlSWRxAH4AAUwACm1vZHVsZU5hbWVxAH4AAUwACHBsYXRmb3JtcQB+AAF4cAAOcYlxAH4AG3EAfgAacQB+ABtxAH4AGXQAAzc0MHQACeiBiuWkqeWupHEAfgAWcHB0AAcxMDAwMjY4dAABMXQABuWoseS5kHQARTJiZDg4NjcxMDI2YWU5MjIwMWM0YmU2YTBmNjRmYmY3XzY5QkY3QjUzLUY0QUUtNDNGNC1CQkU3LTUxOTE5QjFFMjZERHQAEDM0OTQzNzMwMTg4MzE2NDBxAH4ABnQANmxpdmVfb25saW5lX2JpbGliaWxpX+S4jeacn+iAjOmBhy3po57puJ/lhqBfMjAyMy0wOS0wOX5yACtvcmcuZXhhbXBsZS5jb3JlLnRhc2tjZW50ZXIudGFzay5UYXNrU3RhdHVzAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAHQWxyZWFkeQ==",
"reptileTask":{
"request":{
"creeperGroup":"bilibili_live",
"param":{
"liver":"不期而遇-飞鸟冠",
"moduleName":"聊天室",
"description":"进来扣1,领取一个女友",
"session_id":"2bd88671026ae92201c4be6a0f64fbf7_69BF7B53-F4AE-43F4-BBE7-51919B1E26DD",
"liveName":"进来扣1,领取一个女友",
"liveId":"30236495",
"platform":"bilibili",
"uid":"3494373018831640",
"group_id":"1000268",
"watcherNum":946569,
"parent_area_name":"娱乐",
"moduleId":"740",
"parent_area_id":"1"
},
"callback":{}
},
"loadTask":{
"running":false,
"cacheSize":0
},
"startTime":"nil",
"endTime":"nil",
"type":"already",
"taskId":"live_online_bilibili_不期而遇-飞鸟冠_2023-09-09"
},
"startTime":"2023-09-09 12:40:15",
"endTime":"nil",
"type":"running",
"taskId":"live_online_bilibili_不期而遇-飞鸟冠_2023-09-09"
},
{
"taskByteStream":"rO0ABXNyACxvcmcuZXhhbXBsZS5jb3JlLnRhc2tjZW50ZXIudGFzay5SZXB0aWxlVGFza+61Zzf94WEnAgAGTAAHZW5kVGltZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wACGxvYWRUYXNrdAAkTG9yZy9leGFtcGxlL2NvcmUvbG9hZHRhc2svTG9hZFRhc2s7TAAHcmVxdWVzdHQANExvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvcmVxdWVzdC9SZXB0aWxlUmVxdWVzdDtMAAlzdGFydFRpbWVxAH4AAUwABnRhc2tJZHEAfgABTAAEdHlwZXQALUxvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvdGFzay9UYXNrU3RhdHVzO3hwdAADbmlsc3IAPW9yZy5leGFtcGxlLmNvcmUuY3JlZXBlci5sb2FkdGFzay5CaWxpYmlsaUxpdmVCYXJyYWdlTG9hZFRhc2v8Xz1lr5OzEwIAAHhyACdvcmcuZXhhbXBsZS5jb3JlLmxvYWR0YXNrLkFTeW5jTG9hZFRhc2u06u51X10lLAIAAUwABnJlc3VsdHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hyAChvcmcuZXhhbXBsZS5jb3JlLmxvYWR0YXNrLkNvbW1vbkxvYWRUYXNrgsGE0jqnYxYCAAFMAApsb2FkQ29uZmlndAAoTG9yZy9leGFtcGxlL2NvcmUvbG9hZGNvbmZpZy9Mb2FkQ29uZmlnO3hwc3IAQW9yZy5leGFtcGxlLmNvcmUuY3JlZXBlci5sb2FkY29uZmlnLkJpbGliaWxpTGl2ZUxvYWRCYXJyYWdlQ29uZmlniX3Axc3lyTACAAFMAAZyb29tSWRxAH4AAXhyADVvcmcuZXhhbXBsZS5jb3JlLmNyZWVwZXIubG9hZGNvbmZpZy5Mb2FkQmFycmFnZUNvbmZpZyL9R0jyNtXkAgADTAAGYWN0aW9ucQB+AAFMAAphbmNob3JOYW1lcQB+AAFMAAhwbGF0Zm9ybXEAfgABeHIAJm9yZy5leGFtcGxlLmNvcmUubG9hZGNvbmZpZy5Mb2FkQ29uZmlncA3DW3/AuVkCAAdMAAZPcmlnaW5xAH4AAUwAB1JlZmVyZXJxAH4AAUwACVVzZXJBZ2VudHEAfgABTAAGY29va2lldAAPTGphdmEvdXRpbC9NYXA7TAAGaGVhZGVycQB+ABBMAAlzdGFydFRpbWVxAH4AAUwAA3VybHEAfgABeHBwcHBwcHQAEzIwMjMtMDktMDkgMTI6NDA6MTV0ADZodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS9hamF4L21zZz9yb29taWQ9MzAyMzY0OTV0AARsaXZldAAW5LiN5pyf6ICM6YGHLemjnum4n+WGoHQACGJpbGliaWxpdAAIMzAyMzY0OTVwc3IAMm9yZy5leGFtcGxlLmNvcmUudGFza2NlbnRlci5yZXF1ZXN0LlJlcHRpbGVSZXF1ZXN0lLxjHBQ1M0sCAARMAAhjYWxsYmFja3QAG0xvcmcvZXhhbXBsZS9jb3JlL0NhbGxiYWNrO0wADGNyZWVwZXJHcm91cHEAfgABTAALY3JlZXBlck5hbWVxAH4AAUwABXBhcmFtcQB+AAl4cHNyACFqYXZhLmxhbmcuaW52b2tlLlNlcmlhbGl6ZWRMYW1iZGFvYdCULCk2hQIACkkADmltcGxNZXRob2RLaW5kWwAMY2FwdHVyZWRBcmdzdAATW0xqYXZhL2xhbmcvT2JqZWN0O0wADmNhcHR1cmluZ0NsYXNzdAARTGphdmEvbGFuZy9DbGFzcztMABhmdW5jdGlvbmFsSW50ZXJmYWNlQ2xhc3NxAH4AAUwAHWZ1bmN0aW9uYWxJbnRlcmZhY2VNZXRob2ROYW1lcQB+AAFMACJmdW5jdGlvbmFsSW50ZXJmYWNlTWV0aG9kU2lnbmF0dXJlcQB+AAFMAAlpbXBsQ2xhc3NxAH4AAUwADmltcGxNZXRob2ROYW1lcQB+AAFMABNpbXBsTWV0aG9kU2lnbmF0dXJlcQB+AAFMABZpbnN0YW50aWF0ZWRNZXRob2RUeXBlcQB+AAF4cAAAAAZ1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAAAdnIALW9yZy5leGFtcGxlLmNvcmUucmVjb21tZW5kLkhlYXRSZWNvbW1lbmRhdGlvbkHom4ZoGan6AgABTAAUcGxhdGZvcm1Gb2xsb3dEb2dNYXBxAH4AEHhyAB9vcmcuZXhhbXBsZS5wbHVnaW4uQ29tbW9uUGx1Z2luhJwvEvdoddkCAAVaAAtpc0F1dG9TdGFydEwABmxvZ2dlcnQAEkxvcmcvc2xmNGovTG9nZ2VyO0wABm1vZHVsZXEAfgABTAALbmVlZFBsdWdpbnN0ABBMamF2YS91dGlsL0xpc3Q7TAAKcGx1Z2luTmFtZXEAfgABeHB0ABlvcmcvZXhhbXBsZS9jb3JlL0NhbGxiYWNrdAAIY2FsbGJhY2t0ABUoTGphdmEvbGFuZy9PYmplY3Q7KVZ0AC1vcmcvZXhhbXBsZS9jb3JlL3JlY29tbWVuZC9IZWF0UmVjb21tZW5kYXRpb250AB1sYW1iZGEkaGFuZGxlRXZlbnQkNzk2MjQyNzUkMnEAfgAocQB+ACh0ABViaWxpYmlsaV9saXZlX2JhcnJhZ2Vwc3IAIm9yZy5leGFtcGxlLmJlYW4ubGl2ZS5CaWxpQmlsaUxpdmXk6gPgkIF8gAIAB0wAB2FyZWFfaWRxAH4AAUwACWFyZWFfbmFtZXEAfgABTAAIZ3JvdXBfaWRxAH4AAUwADnBhcmVudF9hcmVhX2lkcQB+AAFMABBwYXJlbnRfYXJlYV9uYW1lcQB+AAFMAApzZXNzaW9uX2lkcQB+AAFMAAN1aWRxAH4AAXhyABVvcmcuZXhhbXBsZS5iZWFuLkxpdmVrVleMobke2wIACEkACndhdGNoZXJOdW1MAAtkZXNjcmlwdGlvbnEAfgABTAAGbGl2ZUlkcQB+AAFMAAhsaXZlTmFtZXEAfgABTAAFbGl2ZXJxAH4AAUwACG1vZHVsZUlkcQB+AAFMAAptb2R1bGVOYW1lcQB+AAFMAAhwbGF0Zm9ybXEAfgABeHAADnGJdAAf6L+b5p2l5omjMe+8jOmihuWPluS4gOS4quWls+WPi3EAfgAXcQB+AC9xAH4AFXQAAzc0MHQACeiBiuWkqeWupHEAfgAWcHB0AAcxMDAwMjY4dAABMXQABuWoseS5kHQARTJiZDg4NjcxMDI2YWU5MjIwMWM0YmU2YTBmNjRmYmY3XzY5QkY3QjUzLUY0QUUtNDNGNC1CQkU3LTUxOTE5QjFFMjZERHQAEDM0OTQzNzMwMTg4MzE2NDBxAH4ABnQAN2xpdmVfYmFycmFnZV9iaWxpYmlsaV/kuI3mnJ/ogIzpgYct6aOe6bif5YagXzIwMjMtMDktMDl+cgArb3JnLmV4YW1wbGUuY29yZS50YXNrY2VudGVyLnRhc2suVGFza1N0YXR1cwAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQAB0FscmVhZHk=",
"reptileTask":{
"request":{
"creeperGroup":"bilibili_live_barrage",
"param":{
"liver":"不期而遇-飞鸟冠",
"moduleName":"聊天室",
"description":"进来扣1,领取一个女友",
"session_id":"2bd88671026ae92201c4be6a0f64fbf7_69BF7B53-F4AE-43F4-BBE7-51919B1E26DD",
"liveName":"进来扣1,领取一个女友",
"liveId":"30236495",
"platform":"bilibili",
"uid":"3494373018831640",
"group_id":"1000268",
"watcherNum":946569,
"parent_area_name":"娱乐",
"moduleId":"740",
"parent_area_id":"1"
},
"callback":{}
},
"loadTask":{
"running":false,
"cacheSize":0
},
"startTime":"nil",
"endTime":"nil",
"type":"already",
"taskId":"live_barrage_bilibili_不期而遇-飞鸟冠_2023-09-09"
},
"startTime":"2023-09-09 12:40:15",
"endTime":"nil",
"type":"running",
"taskId":"live_barrage_bilibili_不期而遇-飞鸟冠_2023-09-09"
}
]
},
"updateTime":"2023-09-09 12:40:34"
}
+8
View File
@@ -0,0 +1,8 @@
{
"data":{
"LiveDownload":{
"showDownloadTable":false
}
},
"updateTime":"2023-09-09 12:40:14"
}
+1 -1
View File
@@ -24,5 +24,5 @@
"HotRecommendation":true
}
},
"updateTime":"2023-09-07 19:16:14"
"updateTime":"2023-09-09 12:40:34"
}
@@ -0,0 +1,5 @@
---
title: 视切片推送通道插件
date: 2023-09-08 02:09:42
permalink: /pages/ce57b2/
---
+6869 -6889
View File
File diff suppressed because it is too large Load Diff