forked from CHKZL/DDTV
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RoomInit.cs
222 lines (205 loc) · 8.25 KB
/
RoomInit.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
using Auxiliary;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DDTV_New
{
public static class ARoomInit
{
public static string RoomConfigFile = MMPU.getFiles("RoomConfiguration");
public static List<RL> 房间主表 = new List<RL>();
public static List<RL> 之前的房间主表状态 = new List<RL>();
public static List<RL> 现在的房间主表状态 = new List<RL>();
public static bool 首次启动 = true;
public static int B站更新刷新次数 = 0;
public static bool 首次更新提醒列表 = true;
public static int 房间主表长度 = 0;
public static int 房间信息更新次数 = 0;
public class RL
{
public string 名称 { set; get; }
public string 原名 { set; get; }
public bool 直播状态 { set; get; }
public string 平台 { set; get; }
public bool 是否提醒 { set; get; }
public bool 是否录制 { set; get; }
public string 唯一码 { set; get; }
}
public static bool 根据唯一码获取直播状态(string GUID)
{
foreach (RL item in 房间主表)
{
try
{
if (item.唯一码 == GUID)
{
if (item.直播状态)
return true;
else
return false;
}
}
catch (Exception)
{
}
}
return false;
}
public static void start()
{
InitializeRoomConfigFile();
InitializeRoomList();
Auxiliary.bilibili.start();
Task.Run(async () =>
{
while (true)
{
刷新B站房间列表();
房间信息更新次数++;
await Task.Delay(5 * 1000).ConfigureAwait(false);
}
});
}
private static void 刷新B站房间列表()
{
if (!MMPU.是否能连接阿B)
return;
之前的房间主表状态.Clear();
List<RL> 临时主表 = new List<RL>();
foreach (var item in 房间主表)
{
之前的房间主表状态.Add(item);
临时主表.Add(item);
}
int A = 临时主表.Count();
for (int i = 0; i < A; i++)
{
if (临时主表[i].平台 == "bilibili")
{
临时主表.Remove(临时主表[i]);
i--;
}
A--;
}
foreach (var 最新的状态 in bilibili.RoomList)
{
foreach (var 之前的状态 in 之前的房间主表状态)
{
if (B站更新刷新次数>5)
{
if (之前的状态.唯一码 == 最新的状态.房间号)
{
if (之前的状态.直播状态 == false && 最新的状态.直播状态 == true && 之前的状态.是否提醒)
{
MMPU.弹窗.Add(3000, "直播提醒", 最新的状态.名称 + "/" + 最新的状态.原名 + "的直播状态发生了变化");
}
if (之前的状态.直播状态 == false && 最新的状态.直播状态 == true && 之前的状态.是否录制 == true)
{
MMPU.弹窗.Add(3000, "自动录制", 最新的状态.名称 + "/" + 最新的状态.原名 + "开始直播了,开始自动录制");
Downloader.新建下载对象(之前的状态.平台, 之前的状态.唯一码, bilibili.根据房间号获取房间信息.获取标题(之前的状态.唯一码), Guid.NewGuid().ToString(), bilibili.根据房间号获取房间信息.下载地址(之前的状态.唯一码), "自动录制", true, 之前的状态.名称,false,null).DownIofo.备注 = "自动录制下载中";
}
break;
}
}
}
int B = 之前的房间主表状态.Count();
临时主表.Add(new RL { 名称 = 最新的状态.名称, 唯一码 = 最新的状态.房间号, 平台 = "bilibili", 是否录制 = 最新的状态.是否录制视频, 是否提醒 = 最新的状态.是否提醒, 直播状态 = 最新的状态.直播状态, 原名 = 最新的状态.原名 });
}
房间主表.Clear();
foreach (var item in 临时主表)
{
房间主表.Add(item);
}
房间主表长度 = 房间主表.Count();
B站更新刷新次数++;
}
/// <summary>
/// 初始化房间配置文件
/// </summary>
private static void InitializeRoomConfigFile()
{
try
{
ReadConfigFile(RoomConfigFile);
}
catch (Exception)
{
File.WriteAllText(RoomConfigFile, "{}");
}
}
/// <summary>
/// 读取房间配置文件
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
public static string ReadConfigFile(string file)
{
if (!File.Exists(file))
File.Move("./RoomListConfig.ini", file);
return File.ReadAllText(file);
}
public static bool 初始化储存房间储存一次 = true;
/// <summary>
/// 初始化房间列表
/// </summary>
public static void InitializeRoomList()
{
var rlc = new RoomBox();
rlc = JsonConvert.DeserializeObject<RoomBox>(ReadConfigFile(RoomConfigFile));
List<RoomCadr> RoomConfigList = new List<RoomCadr>();//房间信息1List
RoomConfigList = rlc?.data;
if (RoomConfigList == null)
RoomConfigList = new List<RoomCadr>();
bilibili.RoomList.Clear();
if(初始化储存房间储存一次)
{
string JOO = JsonConvert.SerializeObject(rlc);
MMPU.储存文本(JOO, RoomConfigFile);
初始化储存房间储存一次 = false;
}
foreach (var item in RoomConfigList)
{
if (item.Types == "bilibili")
{
bilibili.RoomList.Add(new bilibili.RoomInfo
{
房间号 = item.RoomNumber,
标题 = "",
是否录制弹幕 = item.VideoStatus,
是否录制视频 = item.VideoStatus,
UID = "",
直播开始时间 = "",
名称 = item.Name,
直播状态 = item.LiveStatus,
原名 = item.OfficialName,
是否提醒=item.RemindStatus
});
if (首次启动)
{
bilibili.RoomList[bilibili.RoomList.Count - 1].直播状态 = false;
}
}
}
首次启动 = false;
}
public class RoomBox
{
public List<RoomCadr> data { get; set; }
}
public class RoomCadr
{
public string Name { get; set; }
public string OfficialName { set; get; } = "";
public string RoomNumber { get; set; }
public string Types { get; set; } = "NU";
public bool status { get; set; } = false;
public bool VideoStatus { get; set; } = false;
public bool RemindStatus { get; set; } = true;
public bool LiveStatus { get; set; } = false;
}
}
}