rediffusion
11/11/2017 - 10:48 PM

Cоздаём собственную объектную модель

Подробно инфу смотреть в шаблоне - 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);
		}
		
	}
}
//получение входных настроек (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 строк кода)
		//внутренний цикл парсинга (распарсить х страниц)


	


//всё это сдобрено:
// работой со входными настройками
// работой с таблицами и списками
// работой с файлами (картинки, текстовые файлы)
// работой с базами данных
// работой со внешними библиотеками
// механизмами отлова и обработки ошибок
// механизмами для диагностики нештатного поведения сайтов (чтобы не вываливаться сразу в ошибку)