Подробно инфу смотреть в шаблоне - 1. Делегаты и общий код в ProjectMaker
Дополнительно: 1.OwnCodeUsings 2.Ссылки из GAC System System.Core System.Drawing System.Daya mscorlib System.Windows.Forms Microsoft.CSharp
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;
namespace ZennoLab.OwnCode
{
/// <summary>
/// A simple class of the common code
/// </summary>
public class CommonCode
{
/// <summary>
/// Lock this object to mark part of code for single thread execution
/// </summary>
public static object SyncObject = new object();
// Insert your code here
}
}
namespace SuperBot
{
public class Thread {
public IZennoPosterProjectModel Project;
public Instance Instance;
public List<Job> JobList = new List<Job>();
}
public class Job {
public string JobType; //постинг, лайкинг, подписка, отписка
public string JobData; //данные задания в формате JSON
public Job (string Type, string Data){
this.JobType = Type;
this.JobData = Data;
}
}
public class Account {
public string Login;
public string Password;
private SuperBot.Thread CurrThread;
public Account(SuperBot.Thread BotExe) {
CurrThread = BotExe;
}
public static int MaxAge;
public void Logon() {
IZennoPosterProjectModel project = this.CurrThread.Project;
Instance instance = this.CurrThread.Instance;
project.SendInfoToLog(String.Format("Успешно залогинились под пользователем {0} с паролем {1}.", this.Login, this.Password), true);
}
}
public static class Vkontakte {
public static SuperBot.Thread CurrThread;
public static void Execute(Job CurrJob) {
switch(CurrJob.JobType) {
case "постинг":
Post(CurrJob.JobData);
break;
case "лайкинг":
Like(CurrJob.JobData);
break;
case "подписка":
Follow(CurrJob.JobData);
break;
case "отписка":
Unfollow(CurrJob.JobData);
break;
}
}
public static void Post(string JobDataString) {
IZennoPosterProjectModel project = CurrThread.Project;
Instance instance = CurrThread.Instance;
project.SendInfoToLog(String.Format("Успешно опубликовали пост с данными {0}.", JobDataString), true);
}
public static void Like(string JobDataString) {
IZennoPosterProjectModel project = CurrThread.Project;
Instance instance = CurrThread.Instance;
project.SendInfoToLog(String.Format("Успешно лайкнули по ссылке {0}.", JobDataString), true);
}
public static void Follow(string JobDataString) {
IZennoPosterProjectModel project = CurrThread.Project;
Instance instance = CurrThread.Instance;
project.SendInfoToLog(String.Format("Успешно зафрендили по данным {0}.", JobDataString), true);
}
public static void Unfollow(string JobDataString) {
IZennoPosterProjectModel project = CurrThread.Project;
Instance instance = CurrThread.Instance;
project.SendInfoToLog(String.Format("Успешно расфрендили по данным {0}.", JobDataString), true);
}
}
}
using SuperBot;
//получение входных настроек (5-10 разных активностей в соцсети)
SuperBot.Thread BotExe = new SuperBot.Thread();
BotExe.Instance=instance;
BotExe.Project=project;
Vkontakte.CurrThread=BotExe;
//формирование внутреннего списка с заданиями (постинг, лайкинг, отписка и прочее)
BotExe.JobList.Add(new Job("лайкинг", "данные лайкинга"));
BotExe.JobList.Add(new Job("постинг", "данные постинга"));
BotExe.JobList.Add(new Job("подписка", "данные подписки"));
BotExe.JobList.Add(new Job("отписка", "данные отписки"));
project.SendInfoToLog("Заданий добавлено в список: " + BotExe.JobList.Count.ToString());
//получение аккаунта и вход в соцсеть
Account AccOne = new Account(BotExe);
//from file
AccOne.Login="login";
AccOne.Password="pass";
AccOne.Logon();
//цикл перебора заданий в списке
foreach (Job CurrJob in BotExe.JobList) {
Vkontakte.Execute(CurrJob);
}
//алгоритм выполнения заданий лайкинга (100500 строк кода)
//внутренний цикл лайкинга (лайкнуть х пользователей)
//алгоритм выполнения заданий постинга (100500 строк кода)
//внутренний цикл постинга (запостить х записей)
//алгоритм выполнения заданий отписки (100500 строк кода)
//внутренний цикл отписки (отписаться от х пользователей)
//алгоритм выполнения заданий подписки (100500 строк кода)
//внутренний цикл подписки (подписаться на х пользователей)
//алгоритм выполнения заданий парсинга (100500 строк кода)
//внутренний цикл парсинга (распарсить х страниц)
//всё это сдобрено:
// работой со входными настройками
// работой с таблицами и списками
// работой с файлами (картинки, текстовые файлы)
// работой с базами данных
// работой со внешними библиотеками
// механизмами отлова и обработки ошибок
// механизмами для диагностики нештатного поведения сайтов (чтобы не вываливаться сразу в ошибку)