Files
KJD_WebService/TEMUKJD/DashBoardForms/DashBoardForm.cs
T

829 lines
37 KiB
C#

using AllBase;
using AllBase.Helper;
using CefSharp;
using CefSharp.WinForms;
using TemuKJD.Helper;
using TemuKJD.KJDForms.BaseForms;
using NaiBa.CefHelper;
using NaiBa.Util;
using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TemuKJD.DashBoardForms
{
public partial class DashBoardForm : Form
{
public enum InviteTypeEnum
{
Invite,
Chat,
}
public class DaRenSettings
{
/// <summary>
/// 要采集的总页码数量
/// </summary>
public int TotalPage { get; set; } = 10;
/// <summary>
/// 发送邀约操作操作间隔时间
/// </summary>
public int Interval { get; set; } = 10;
/// <summary>
/// 翻页操作间隔时间
/// </summary>
public int PageInterval { get; set; } = 10;
public string ChatWords { get; set; } = "老板您好!";
public InviteTypeEnum InviteType { get; set; } = InviteTypeEnum.Invite;
}
private Point mouseOffset; // 记录鼠标指针的坐标
private bool isMouseDown; // 记录鼠标左键是否按下
private ChromiumWebBrowser cefWebBrowser = null;
private ChromiumWebBrowser cefWebBrowserDetail = null;
private DaRenSettings drSetting;
private bool IsOpenDaRenPage = false;
public DashBoardForm()
{
InitializeComponent();
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
}
private void DashBoardForm_Load(object sender, EventArgs e)
{
if (BaseClass.Ico != null)
this.Icon = BaseClass.Ico;
this.WindowState = FormWindowState.Maximized;
max.Style.BackgroundImage = Properties.Resources.normal;
max.StyleMouseOver.BackgroundImage = Properties.Resources.normal_hover;
this.Padding = new Padding(2);
this.drSetting = NaiBa.Util.Helper.ConfigHelper.LoadConfig<DaRenSettings>("daren_settings");
if (drSetting == null)
drSetting = new DaRenSettings();
this.txtChatWords.Text = drSetting.ChatWords;
this.txtInterval.Text = drSetting.Interval.ToString();
this.txtTotalPage.Text = drSetting.TotalPage.ToString();
this.rbInvite.CheckedChanged -= rbInvite_CheckedChanged;
this.rbChat.CheckedChanged -= rbChat_CheckedChanged;
if (drSetting.InviteType == InviteTypeEnum.Invite)
this.rbInvite.Checked = true;
else
this.rbChat.Checked = true;
this.rbInvite.CheckedChanged += rbInvite_CheckedChanged;
this.rbChat.CheckedChanged += rbChat_CheckedChanged;
rbInvite.Checked = true;
for (int i = 0; i < GlobalConfig.ShopLoginList.Count; i++)
{
var shop = GlobalConfig.ShopLoginList[i];
this.cmbShop.Items.Add(shop.ShopAccount);
}
this.cmbShop.SelectedIndex = 0;
string cookie = "";
if (GlobalConfig.ShopLoginList.Count > 0)
{
cookie = GlobalConfig.ShopLoginList[0].Cookies;
}
InitCef(cookie);
}
private void close_Click(object sender, EventArgs e)
{
{
if (BaseMsgForm.ShowConfirm("是否关闭客户端?", "系统提示", FormLevel.SMALL).DialogResult.Equals(DialogResult.Cancel))
return;
else
Process.GetCurrentProcess().Kill();
}
}
private void max_Click(object sender, EventArgs e)
{
if (WindowState.Equals(FormWindowState.Normal))
{
WindowState = FormWindowState.Maximized;
max.Style.BackgroundImage = Properties.Resources.normal;
max.StyleMouseOver.BackgroundImage = Properties.Resources.normal_hover;
this.Padding = new Padding(0);
}
else if (WindowState.Equals(FormWindowState.Maximized))
{
WindowState = FormWindowState.Normal;
max.Style.BackgroundImage = Properties.Resources.max;
max.StyleMouseOver.BackgroundImage = Properties.Resources.max_hover;
this.Padding = new Padding(1);
}
}
private void min_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Minimized;
ShowInTaskbar = true;
}
private void pnlBanner_MouseDoubleClick(object sender, MouseEventArgs e)
{
max_Click(null, null);
}
private void pnlBanner_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOffset = new Point(-e.X, -e.Y);
isMouseDown = true;
}
}
private void pnlBanner_MouseMove(object sender, MouseEventArgs e)
{
if (isMouseDown)
{
//获取鼠标的位置
Point mousePos = MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
Location = mousePos;
}
}
private void pnlBanner_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown = false;
}
void InitCef(string cookie = "")
{
string mainUrl = "https://fxg.jinritemai.com/ffa/mshop/homepage/index";
//mainUrl = "https://buyin.jinritemai.com/mpa/account/roles-select?target_url=/dashboard/servicehall/daren-square";
string darenUrl = "https://buyin.jinritemai.com/dashboard/servicehall/daren-square";
// GlobalConfig.DouUserCookies;
if (cefWebBrowser == null)
{
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", true);
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
lifeSapnHandler.OnPop += LifeSapnHandler_OnPop;
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
cefWebBrowser.KeyboardHandler = new NaiBa.CefHelper.Handler.KeyboardHandler();
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
cefWebBrowser.Dock = DockStyle.Fill;
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowser.RequestContext.GetCookieManager(null));
var cookieManager = Cef.GetGlobalCookieManager();
//cookieManager.SetStoragePath(Environment.CurrentDirectory, true);
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cookieManager);
splitContainer1.Panel2.Controls.Add(cefWebBrowser);
Task.Run(() =>
{
while (true)
{
Thread.Sleep(15000);
//var jsCode = "window.localStorage;";
//var task = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
//task.Wait(5000);
//var result = task.Result.Result;
//var dic = result as IDictionary<string, object>;
//GlobalConfig.dicLocalStorage = dic;
//StartUp.SaveDouLocalStorage();
}
});
Task.Run(() =>
{
do
{
Thread.Sleep(10);
}
while (cefWebBrowser == null || !cefWebBrowser.IsBrowserInitialized || cefWebBrowser.IsLoading);
var jsCode = "";
if (GlobalConfig.dicLocalStorage != null)
{
foreach (var key in GlobalConfig.dicLocalStorage.Keys)
{
if (GlobalConfig.dicLocalStorage[key] is string)
{
jsCode += "localStorage.setItem('" + key + "', '" + GlobalConfig.dicLocalStorage[key] + "');\r\n";
}
}
var ta0 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
ta0.Wait(5000);
}
cefWebBrowser.Load("https://fxg.jinritemai.com/ffa/mshop/homepage/index");
do
{
Thread.Sleep(1000);
}
while (cefWebBrowser.IsLoading);
Thread.Sleep(AllBase.Randomx.GetId(5000, 6000));
var jsStr = clickJsElementStr + "getElement('精选联盟').click();";
var ta2 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
ta2.Wait(8000);
do
{
Thread.Sleep(1000);
}
while (cefWebBrowser.IsLoading);
Thread.Sleep(AllBase.Randomx.GetId(2000, 3000));
retry:
jsStr = "window.location.href='" + darenUrl + "';";
var ta3 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
ta3.Wait(8000);
do
{
Thread.Sleep(1000);
}
while (cefWebBrowser.IsLoading);
Thread.Sleep(AllBase.Randomx.GetId(4000, 5000));
jsStr = clickJsElementStr +
"function clickBtn(txt) {\r\n" +
" if (document.body.innerHTML.indexOf('加载失败') >= 0)\r\n" +
" return '加载失败';\r\n" +
" return 'ok';\r\n" +
"}\r\n" +
"clickBtn('添加商品');\r\n";
var ta4 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
ta4.Wait();
if (ta4.Result?.Result?.ToString() == "加载失败" || ta4.Result?.Result?.ToString() == null)
goto retry;
var sleepTime = 2500;
while (true)
{
try
{
Thread.Sleep(sleepTime);
var jsStr1 =
"function ClosePopWindow(txt) {\r\n" +
" var result = 'no_pop'\r\n" +
" var item = document.getElementsByClassName(txt);\r\n" +
" if (document.body.innerHTML.indexOf('重要消息') < 0) return result;\r\n" +
" for(i = 0; i < item.length; i++) {\r\n" +
" item[i].click();\r\n" +
" result = 'success'\r\n" +
" }\r\n" +
" return result;\r\n" +
"}\r\n" +
"ClosePopWindow('anticon-close-circle');\r\n" +
"ClosePopWindow('ant-modal-close-x');\r\n";
var jsStr2 = "function clickPopWindow(txt) {\r\n"
+ "var child = document.body.firstElementChild;\r\n"
+ "var element1 = null;\r\n"
+ " while (child) {\r\n"
+ " if (child.innerHTML.indexOf(txt) >= 0) {\r\n"
+ " element1 = child;\r\n"
+ " if (child.firstElementChild) {\r\n"
+ " child = child.firstElementChild; continue;\r\n"
+ " } else break;\r\n"
+ " }\r\n"
+ " child = child.nextElementSibling;\r\n"
+ " }\r\n"
+ " if (element1 && element1.innerHTML === txt) {\r\n"
+ " element1.click(); return 'success';\r\n"
+ " } else return 'no_pop';\r\n"
+ "}\r\n"
//+ "clickPopWindow('我知道了');\r\n"
+ "clickPopWindow('知道了');\r\n"
+ "clickPopWindow('完 成');\r\n"
+ "clickPopWindow('下一个');\r\n";
var success1 = false;
if (cefWebBrowser.IsBrowserInitialized && !cefWebBrowser.IsLoading)
{
var t1 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr1);
t1.Wait(1000);
var t2 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr2);
t2.Wait(1000);
if (t1.Result?.Result?.ToString() == "success" || t2.Result?.Result?.ToString() == "success")
success1 = true;
else
success1 = false;
}
var success2 = false;
if (cefWebBrowserDetail != null && cefWebBrowserDetail.IsBrowserInitialized && !cefWebBrowserDetail.IsLoading)
{
var t1 = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsStr1);
t1.Wait(1000);
var t2 = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsStr2);
t2.Wait(1000);
if (t1.Result?.Result?.ToString() == "success" || t2.Result?.Result?.ToString() == "success")
success2 = true;
else
success2 = false;
}
if (success1 || success2)
{
sleepTime = Randomx.GetId(550, 650);
}
else
sleepTime = Randomx.GetId(1500, 2000);
}
catch (Exception ex) { }
}
});
}
else
{
//CEFBrowser.DeleteCookie(cefWebBrowser.RequestContext.GetCookieManager(null));
CEFBrowser.DeleteCookie(Cef.GetGlobalCookieManager());
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowser.RequestContext.GetCookieManager(null));
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, Cef.GetGlobalCookieManager());
t.Wait(5000);
cefWebBrowser.Load(mainUrl);
}
}
private void LifeSapnHandler_OnPop(object sender, PopData e)
{
if (e.Url == "https://fxg.jinritemai.com/alliance/common/redirectBuyin?target_url=%2Fdashboard")
{
cefWebBrowser.Load(e.Url);
return;
}
string cookie = GlobalConfig.DouUserCookies;
if (cefWebBrowserDetail == null)
{
//cefWebBrowserDetail = CEFBrowser.CreateChromiumWebBrowser(e.Url, false);
cefWebBrowserDetail = CEFBrowser.CreateChromiumWebBrowser(e.Url);
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
lifeSapnHandler.OnPop += LifeSapnHandler_OnPop;
cefWebBrowserDetail.LifeSpanHandler = lifeSapnHandler;
cefWebBrowserDetail.KeyboardHandler = new NaiBa.CefHelper.Handler.KeyboardHandler();
cefWebBrowserDetail.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
cefWebBrowserDetail.AddressChanged += CefWebBrowser_AddressChanged;
cefWebBrowserDetail.Dock = DockStyle.Fill;
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowserDetail.RequestContext.GetCookieManager(null));
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, Cef.GetGlobalCookieManager());
Task.Run(() =>
{
while (true)
{
Thread.Sleep(15000);
//var jsCode = "window.localStorage;";
//var task = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsCode, null);
//task.Wait(5000);
//var result = task.Result.Result;
//var dic = result as IDictionary<string, object>;
//GlobalConfig.dicLocalDetailStorage = dic;
//StartUp.SaveDouLocalDetailStorage();
}
});
Invoke(new Action(() =>
{
splitContainer1.Panel2.Controls.Add(cefWebBrowserDetail);
btnDetailForm_Click(null, null);
pnlDetailForm.Visible = true;
}));
}
else
{
cefWebBrowserDetail.Load(e.Url);
Invoke(new Action(() =>
{
btnDetailForm_Click(null, null);
}));
}
Task.Run(() =>
{
for (int i = 0; i < 1000 && (cefWebBrowserDetail.IsBrowserInitialized == false || cefWebBrowserDetail.IsLoading); i++)
{
Thread.Sleep(10);
}
var jsCode = "";
if (GlobalConfig.dicLocalDetailStorage != null)
{
foreach (var key in GlobalConfig.dicLocalDetailStorage.Keys)
{
if (GlobalConfig.dicLocalDetailStorage[key] is string)
{
jsCode += "localStorage.setItem('" + key + "', '" + GlobalConfig.dicLocalDetailStorage[key] + "');\r\n";
}
}
cefWebBrowserDetail.GetBrowser().MainFrame.ExecuteJavaScriptAsync(jsCode);
}
// 达人邀约
if (drSetting.InviteType == InviteTypeEnum.Invite)
{
if (IsOpenDaRenPage)
{
while (cefWebBrowserDetail.IsLoading)
Thread.Sleep(Randomx.GetId(500, 800));
retry1:
Thread.Sleep(Randomx.GetId(500, 1000));
jsCode = "function jsFunc1() {" +
" if (document.body.innerHTML.indexOf('>待回复</span>') > 0 || document.body.innerHTML.indexOf('>已同意</span>') > 0) " +
" return 'had';" +
" if (document.getElementsByClassName('contact-btn-text text4').length > 0) {" +
" document.getElementsByClassName('contact-btn-text text4')[0].click(); " +
" return 'ok';" +
" }" +
" return document.body.innerHTML.indexOf('加载失败,请稍后重试') >= 0 ? 'error' : 'noBtn'; " +
"} " +
"jsFunc1();";
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
t1.Wait(2000);
if (t1.Result?.Result?.ToString() == "had")
{
IsOpenDaRenPage = false;
return;
}
else if (t1.Result?.Result?.ToString() != "ok")
{
Thread.Sleep(Randomx.GetId(800, 1500));
if (t1.Result?.Result?.ToString() == null || t1.Result?.Result?.ToString() == "error")
{
cefWebBrowserDetail.Reload();
}
goto retry1;
}
Thread.Sleep(Randomx.GetId(500, 800));
}
if (IsOpenDaRenPage)
{
Thread.Sleep(Randomx.GetId(500, 800));
jsCode = "function jsFx() {var btns = document.getElementsByClassName('ant-btn ant-btn-primary');" +
" for (i = 0; i < btns.length; i++) " +
" {" +
" if (btns[i].innerHTML.indexOf('我知道了') > 0)" +
" {" +
" btns[i].click();" +
" }" +
" }" +
"} jsFx();";
var tx = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
tx.Wait(2000);
Thread.Sleep(Randomx.GetId(500, 800));
retry2:
Thread.Sleep(Randomx.GetId(1200, 2400));
jsCode = "function jsFunc2() { document.getElementsByClassName('text4 add-product-last-operate')[0].click(); return 'ok'} jsFunc2();";
var t2 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
t2.Wait(2000);
if (t2.Result?.Result?.ToString() != "ok")
{
Thread.Sleep(Randomx.GetId(300, 500));
goto retry2;
}
Thread.Sleep(Randomx.GetId(500, 800));
}
if (IsOpenDaRenPage)
{
Thread.Sleep(Randomx.GetId(500, 800));
jsCode = "function jsFunc3() {" +
" var btns = document.getElementsByClassName('auxo-btn auxo-btn-primary');" +
" for (i = 0; i < btns.length; i++) " +
" {" +
" if (btns[i].innerHTML.indexOf('发送邀约') > 0)" +
" {" +
" btns[i].click(); return 'ok';" +
" }" +
" }" +
"} " +
"jsFunc3();";
var t3 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
t3.Wait(2000);
Invoke(new Action(() =>
{
this.txtSuccessCount.Text = (Convert.ToInt32(this.txtSuccessCount.Text) + 1).ToString();
}));
IsOpenDaRenPage = false;
}
}
// 在线沟通
else
{
// 点击沟通按钮
if (IsOpenDaRenPage)
{
chatRetry:
while (cefWebBrowserDetail.IsLoading)
Thread.Sleep(Randomx.GetId(500, 1000));
jsCode = "function jsFunc1() { " +
" if (document.body.innerHTML.indexOf('>待回复</span>') > 0 || document.body.innerHTML.indexOf('>已同意</span>') > 0) {" +
" return 'had';" +
" }" +
" var btns = document.getElementsByClassName('contact-btn-text text4');" +
" for (i = 0; i < btns.length; i++) {" +
" if (btns[i].innerHTML.indexOf('在线沟通') >= 0) {" +
" btns[i].click(); return 'ok';" +
" }" +
" }" +
" return document.body.innerHTML.indexOf('加载失败,请稍后重试') >= 0 ? 'error' : 'noBtn'; " +
"}" +
"jsFunc1();";
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
t1.Wait(2000);
if (t1.Result?.Result?.ToString() == "had")
{
IsOpenDaRenPage = false;
return;
}
else if (t1.Result?.Result?.ToString() != "ok")
{
Thread.Sleep(Randomx.GetId(800, 1500));
if (t1.Result?.Result?.ToString() == "error")
{
cefWebBrowserDetail.Reload();
}
goto chatRetry;
}
Thread.Sleep(Randomx.GetId(500, 800));
}
// 点击沟通对话框
if (IsOpenDaRenPage)
{
chatRetry:
while (cefWebBrowserDetail.IsLoading)
Thread.Sleep(Randomx.GetId(500, 1000));
Thread.Sleep(2500);
jsCode = "function jsFuncChat() {" +
" if (document.getElementsByClassName('im-textarea text-area')[0]) {" +
" var txt1 = document.getElementsByClassName('im-textarea text-area')[0];" +
" txt1.focus(); txt1.click(); txt1.innerHTML = '" + drSetting.ChatWords + " ';" +
" return 'ok';" +
" }" +
" return 'noBtn'" +
"}" +
"jsFuncChat();";
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
t1.Wait(2000);
if (t1.Result?.Result?.ToString() != "ok")
{
Thread.Sleep(Randomx.GetId(300, 500));
if (t1.Result?.Result?.ToString() == null || t1.Result?.Result?.ToString() == "error")
{
//cefWebBrowserDetail.Reload();
}
goto chatRetry;
}
Thread.Sleep(Randomx.GetId(500, 800));
chatSendRetry:
var host = cefWebBrowserDetail.GetBrowser().GetHost();
host.SendKeyEvent(new CefSharp.KeyEvent() { WindowsKeyCode = 8, Type = KeyEventType.RawKeyDown, Modifiers = CefEventFlags.None });
Thread.Sleep(250 + new Random(DateTime.Now.Millisecond).Next(250));
while (cefWebBrowserDetail.IsLoading)
Thread.Sleep(Randomx.GetId(500, 1000));
while (true)
{
break;
}
Thread.Sleep(2500);
jsCode = "function jsFuncChatSend() { " +
" document.getElementsByClassName('send-button')[0].click();" +
" return 'ok';" +
"}" +
"jsFuncChatSend();";
var t2 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
t2.Wait(2000);
if (t2.Result?.Result?.ToString() != "ok")
{
Thread.Sleep(Randomx.GetId(300, 500));
if (t2.Result?.Result?.ToString() == null || t2.Result?.Result?.ToString() == "error")
{
//cefWebBrowserDetail.Reload();
}
goto chatSendRetry;
}
Invoke(new Action(() =>
{
this.txtSuccessCount.Text = (Convert.ToInt32(this.txtSuccessCount.Text) + 1).ToString();
}));
IsOpenDaRenPage = false;
}
}
});
}
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
{
Invoke(new Action(() => { this.textBox3.Text = e.Address; }));
if (e.Address.Contains("https://buyin.jinritemai.com/dashboard")) //https://fxg.jinritemai.com/ffa/mshop/homepage/index
{
Task.Run(() =>
{
//AllBase.Helper.GlobalConfig.DouUserCookies = CEFBrowser.GetCookie("", cefWebBrowser.RequestContext.GetCookieManager(null));
GlobalConfig.DouUserCookies = CEFBrowser.GetCookie("jinritemai.com", Cef.GetGlobalCookieManager());
StartUp.SaveDouUserCookies();
});
}
}
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
}
//int totalPage = 10;
int currentPage = 1;
//int pageTimeInterval = 10; // 翻页间隔秒数
private void btnSend_Click(object sender, EventArgs e)
{
try
{
this.txtSuccessCount.Text = "0";
Task.Run(() => { GetDaRen(); });
}
catch
{
BaseMsgForm.ShowError("请注意参数格式。");
}
}
void GetDaRen()
{
while (currentPage <= drSetting.TotalPage)
{
var html = GetCefHtml(cefWebBrowser);
var items = BaseRegex.GetMatchRegex(ref html, "data-item-uid=\"([\\s\\S]+?)\"");
List<string> daRenIdList = new List<string>();
foreach (Match m in items)
{
daRenIdList.Add(m.Groups[1].ToString());
}
var jsCode = "";
for (int i = 0; i < daRenIdList.Count; i++)
{
Invoke(new Action(() => { btnMainForm_Click(null, null); }));
jsCode = "document.getElementsByClassName('daren-card')[" + i + "].click();";
cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
//i += 20; // 测试翻页
IsOpenDaRenPage = true;
while (IsOpenDaRenPage)
{
Thread.Sleep(50);
}
//while (cefWebBrowserDetail == null || !daRenIdList.Any(d => cefWebBrowserDetail.Address.Contains(d)))
//{
// Thread.Sleep(50);
//}
//while (cefWebBrowserDetail.IsLoading)
//{
// Thread.Sleep(50);
//}
Thread.Sleep(drSetting.Interval * Randomx.GetId(1000, 1200));
}
Invoke(new Action(() => { btnMainForm_Click(null, null); }));
Thread.Sleep(Randomx.GetId(1000, 1200));
jsCode = "document.getElementsByClassName('anticon anticon-right')[0].click();";
cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
Thread.Sleep(drSetting.PageInterval * Randomx.GetId(1000, 1200));
currentPage++;
Invoke(new Action(() => { txtCurrentPage.Text = "" + currentPage; }));
}
}
string GetCefHtml(ChromiumWebBrowser browser)
{
if (browser.IsBrowserInitialized)
{
var task = browser.GetBrowser().MainFrame.GetSourceAsync();
task.Wait();
Thread.Sleep(50);
return task.Result;
}
return "";
}
private void btnMainForm_Click(object sender, EventArgs e)
{
if (cefWebBrowser != null)
cefWebBrowser.BringToFront();
pnlDetailForm.Style.BackColor1.Color = pnlDetailForm.Style.BackColor2.Color = Color.FromArgb(175, 210, 255);
pnlMainForm.Style.BackColor1.Color = pnlMainForm.Style.BackColor2.Color = Color.White;
pnlDetailForm.Location = new Point(pnlDetailForm.Location.X, 44);
pnlMainForm.Location = new Point(pnlMainForm.Location.X, 42);
}
private void btnDetailForm_Click(object sender, EventArgs e)
{
if (cefWebBrowserDetail != null)
cefWebBrowserDetail.BringToFront();
pnlDetailForm.Style.BackColor1.Color = pnlDetailForm.Style.BackColor2.Color = Color.White;
pnlMainForm.Style.BackColor1.Color = pnlMainForm.Style.BackColor2.Color = Color.FromArgb(175, 210, 255);
pnlDetailForm.Location = new Point(pnlDetailForm.Location.X, 42);
pnlMainForm.Location = new Point(pnlMainForm.Location.X, 44);
}
private void btnLoginDouyin_Click(object sender, EventArgs e)
{
string cookie = "";
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopAccount == cmbShop.SelectedItem.ToString());
if (shop != null)
cookie = shop.Cookies;
InitCef(cookie);
}
private void rbInvite_CheckedChanged(object sender, EventArgs e)
{
if (rbInvite.Checked)
{
drSetting.InviteType = InviteTypeEnum.Invite;
SaveDRSetting();
}
}
private void rbChat_CheckedChanged(object sender, EventArgs e)
{
if (rbChat.Checked)
{
drSetting.InviteType = InviteTypeEnum.Chat;
SaveDRSetting();
}
}
private void txtChatWords_TextChanged(object sender, EventArgs e)
{
drSetting.ChatWords = txtChatWords.Text;
SaveDRSetting();
}
private void txtInterval_TextChanged(object sender, EventArgs e)
{
if (txtInterval.Text.ParseToInt() < 10)
txtInterval.Text = "10";
drSetting.Interval = drSetting.PageInterval = txtInterval.Text.ParseToInt();
SaveDRSetting();
}
private void txtTotalPage_TextChanged(object sender, EventArgs e)
{
drSetting.TotalPage = txtInterval.Text.ParseToInt();
SaveDRSetting();
}
private void SaveDRSetting()
{
NaiBa.Util.Helper.ConfigHelper.SaveConfig("daren_settings", drSetting);
}
private void textBox3_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
cefWebBrowser.Load(textBox3.Text);
}
}
public string clickJsElementStr = "function getElement(txt, elem) {\r\n" +
" var child = document.body.firstElementChild;\r\n" +
" if (elem) child = elem\r\n" +
" var element1 = null;\r\n" +
" while (child) {\r\n" +
" if (child.innerHTML.indexOf(txt) >= 0) {\r\n" +
" element1 = child;\r\n" +
" if (child.firstElementChild) {\r\n" +
" child = child.firstElementChild; continue;\r\n" +
" } else break;\r\n" +
" }\r\n" +
" child = child.nextElementSibling;\r\n" +
" }\r\n" +
" if (element1) {\r\n" +
" return element1;\r\n" +
" } else return error;\r\n" +
"}\r\n";
}
}