using System.Collections;
using System.Collections.Generic;
using System.IO;
public class EngNickConvertChecker
{
string lastCheckedNickname = null;
private System.Threading.Thread proc;
public bool stopThreads = false;
public EngNickConvertChecker()
{
proc = new System.Threading.Thread(() => EngNickCheck());
proc.Start();
}
public static bool IsExistJongseong(int targetChar, bool isEunReun = false)
{
if ((targetChar == '않' && isEunReun) || targetChar == '없')
return false;
if (targetChar > 44000)
{
targetChar -= 44032;
if (targetChar % 28 == 0)
{
return false;
}
else
{
return true;
}
}
char toLower = char.ToLower((char)targetChar);
if (toLower >= 'a' && toLower <= 'z')
{
return false;
}
else
{
char[] existJongseongNumber = { '1', '3', '6', '7', '8', '9', '0' };
return existJongseongNumber.Contains(toLower);
}
}
public static bool IsEnglishNickname(string nickname)
{
for (int i = 0; i < nickname.Length; ++i)
{
if ((int)nickname[i] > 256)
return false;
}
return true;
}
void EngNickCheck()
{
while (!stopThreads)
{
List userNames = new List();
if (!Program.isBroadcastOn)
{
Program.AddChatText("전체 계정 순회 시작");
TwitchChatExample.instance.CreateCacheDirectory();
DirectoryInfo directory = new System.IO.DirectoryInfo("NickNameCache\\IdToNick");
foreach (var item in directory.GetFiles())
{
if (Program.isBroadcastOn)
{
Program.AddChatText("방송 시작으로 인한 계정 순회 중단");
break;
}
userNames.Add(item.Name);
if (userNames.Count >= 100)
{
while (Twitch.instance.rateRemain < 50)
System.Threading.Thread.Sleep(1);
var userInfos = Twitch.instance.GetUserInfo(userNames.ToArray());
System.Diagnostics.Debug.WriteLine(userInfos.Length);
userNames.Clear();
if (userInfos != null)
{
foreach (var user in userInfos)
{
Program.WriteFile("NickNameCache\\NickToId\\" + user.displayName, user.userID);
string prevNickNames = Program.ReadFile("NickNameCache\\IdToNick\\" + user.userID);
string prevNickName = null;
if (!string.IsNullOrWhiteSpace(prevNickNames))
{
prevNickName = prevNickNames.Split('\n')[0].Trim();
}
if (prevNickName != user.displayName)
{
Program.WriteFile("NickNameCache\\IdToNick\\" + user.userID, $"{user.displayName}\n{prevNickNames}");
}
}
}
}
}
Program.AddChatText("전체 계정 순회 완료");
}
if (userNames.Count > 0)
{
while (Twitch.instance.rateRemain < 50)
System.Threading.Thread.Sleep(1);
var userInfos = Twitch.instance.GetUserInfo(userNames.ToArray());
userNames.Clear();
if (userInfos != null)
{
foreach (var user in userInfos)
{
Program.WriteFile("NickNameCache\\NickToId\\" + user.displayName, user.userID);
string prevNickNames = Program.ReadFile("NickNameCache\\IdToNick\\" + user.userID);
string prevNickName = null;
if (!string.IsNullOrWhiteSpace(prevNickNames))
{
prevNickName = prevNickNames.Split('\n')[0].Trim();
}
if (prevNickName != user.displayName)
{
Program.WriteFile("NickNameCache\\IdToNick\\" + user.userID, $"{user.displayName}\n{prevNickNames}");
}
}
}
}
System.Threading.Thread.Sleep(3600000);
}
}
}
댓글 4개 ▼