Логика работы шаблона и заданий

Многопоточность

В разных софтах этот термин может подразумевать немного разную логику. В VK-Magick параллельно/одновременно (многопоточно) работает сразу множество аккаунтов и каждый из них последовательно выполняет свои задания. Более того, задания выполняются не сразу целиком, а малыми частями (порциями), но об этом далее...

Давайте представим что у вас 50 аккаунтов и 20 потоков. Это означает что в один момент времени паралелльно/одновременно может работать 20 аккаунтов из 50. При освобождении какого-то потока в работу будет браться условный 21-й аккаунт, следующий освободившийся поток возьмет условный 22-й аккаунт и тд. Таким образом задействованы в любом случаче будут все аккаунты, просто одновременная/паралелльная работа в моменте идет с 20 аккаунтами.

Каждый аккаунт выполняет свои задания (порции заданий) последовательно в случайном порялке!

Порядок взятия аккаунтов в работу

Чуть выше при объяснении многопоточности использовались фразы "условный 21-й аккаунт" и "условный 22-й аккаунт". Условные они потому что у них нет какого-то четкого порядкого номера 1,2,3,... в соответствии с которым они берутся в работу, логика их взятия чуть более сложная. У каждого потока одна и та же цель - взять аккаунт в работу и начать выполнять задания. Давайте более детально рассмотрим логику действий одного потока. Как только он запустился он начинает искать аккаунт со статусом OK или Новый + состояние Свободен + не противоречит настройке ограничивающей количество аккаунтов одновременно работающих на одной прокси/IP. Допустим таких нашлось 20 штук, но потоку нужен всего 1 аккаунт. И он всегда выберет тот аккаунт, активности на котором небыло дольше всего. Если все эти аккаунты будут иметь одинаковое время последней активности (например все они еще ни разу не работали), то каждый из них имеет одинаковые шансы быть взятым в работу. Таким образом можно сказать что аккаунты при прочих равных берутся в соответствии с временем прошедшим с их последней активности. Берется тот который не активничал дольше всего.

В момент назначения аккаунтам заданий их время последней активности сбрасывается и они принудительно становятся на вершине очереди.

Так же можно отметить нужные аккаунты в админке и через селект [Что делать с отмеченными] установить статус Новый ... это то же вытолкнет аккаунт(ы) на вершину очереди.

Типы заданий и логика их выполнения

Все задания в VK-Magick можно условно поделить на разовые и периодически выполняемые.

Разовые - это те которые каждый аккаунт (которому назначено задание) выполняет строго 1 раз и далее выходит из задания. Когда все аккаунты вышли из задания, то и само задание удаляется. Яркие представители этой группы заданий: "Настройки приватности", "Настройки уведомлений", "Чистка аккаунта", "Изменить пароль" и тп. Нет никакой надобности/логики в выполнении этих заданий, например, каждый час.

Периодически выполняемые - это те задания которые выполняются каждым аккаунтом (которому назначено задание) с некоторой заданной периодичностью. Почти все такие задания работают по единой логике: аккаунт выполняет какое-то небольшое количество действий с заданной паузой, а далее для этого конкретного аккаунта наступает Перерыв (большая пауза) в выполнении этого задания. Например, аккаунт A1 может делать пост на стены 1-3 сообществ из списка с паузой 30-90 сек, а потом уйти на Перерыв (большую паузу) на 30 минут. Этот перерыв распространяется исключительно на аккаунт A1. Как только Перерыв в выполнении этого задания закончится для аккаунта A1, он вновь выполнит пост на стены 1-3 сообществ из списка с паузой 30-90 сек и вновь для него наступит Перерыв. Именно это и подразумевается когда мы говорим о том что задания выполняются каждым аккаунтом как бы небольшими порциями. Настройка Перерыва и Суточного лимита есть в каждом периодически выполняемом задании!

Пример для закрепления:

Аккаунту A1 назначены 5 задний - ЗД1, ЗД2, ЗД3. ЗД4, ЗД5. Аккаунтов значительно больше чем потоков, поэтому есть некая очередность работы с ними. До аккаунта дошла очередь и поток берет его в работу (меняя состояние аккаунта на Работает). Начинается выполнение заданий в случайном порядке (например ЗД2, ЗД5, ЗД1, ЗД3, ЗД4). Сначала выполнилась порция ЗД2, далее пауза между разными заданиями, потом выполнилась порция ЗД5, снова пауза между разными заданиями, потом порция ЗД1 ... и так до завершения выполнения порции ЗД4. Далее поток отпускает аккаунт меняя его состояние на Свободен. Через некоторое время очередь вновь доходит до аккаунта A1, поток вновь берет его в работу и меняет состояние на Работает. Вноввь начинает пытаться выполнить порции заданий (уже в другом порядке), но у 3 из 5 заданий все еще действует Перерыв для этого аккаунта (прошло слишком мало времени), поэтому они пропускаются. Оставшиеся 2 задания вновь выполняются порциями и вновь для данного аккаунта наступает Перерыв в их выполнениии. Поток отпускает аккаунт и меняет его состояние на Свободен. Таким образом аккаунты работают как бы "кругами" и на каждом таком круге выполняют вслучайном порядке "порции" свох заданий.

Индивидуальные папки с фото/видео/постами/комментариями/....

В VK-Magick много заданий где в настройках необходимо указать название папки в которой содержатся нужные для работы задания данные - фото, видео, посты, комментарии, сообщения и тп. Однако, иногда хочется что бы отдельные аккаунты выполняющие задание брали данные из своих индивидуальных папок. В большинстве заданий это делается путем создания в общей папке с данными вложенных папок вида uXXXXX ( где XXXXX - это VK_ID аккаунта )

ПРИМЕР: Задание "Комментирование постов (по списку сообществ)". В настройках этого задания необходимо указать название папки содержащей комментарии (по умолчанию эта папка называется comments). Каждый комментарий это вложенная папка в которой хранятся текст и медиа. При выполнении аккаунтом задания выбирается 1 случайная вложенная папка из содержимого которой и формируется комментарий. И так это работает для всех аккаунтов выполняющих задание. Что бы задать индивидуальную папку с комментариями для аккаунта с VK ID = 12345, необходимо в общей папке с комментариями создать вложенную папку вида u12345 и уже в нее положить комментарии (вложенные папки). Если для аккаунта имеется индивидуальная папка с комментариями, то аккаунт берет их там, если нет, то берет из общей папки.

Итого имеем такую структуру папок:

comments
    comment1
    comment2
    comment3
    u12345
        aaaaa
        bbbbb
        cccccc

Резюмируем: при такой структуре все аккаунты будут формировать комментарии из папок comment1, comment2 и comment3 ( каждый раз выбирая одну случайную). И только аккаунт с VK_ID = 12345 будет брать комментарии из индивидуальной папки u12345 т.е он будет выбирать случайным образом из папок aaaaa, bbbbb и ccccc. Названия папок с комментариями может быть любым, поэтому не удивляйтесь что где-то они называются comment1, comment2, а где-то ccccc ... название может быть любым!

Такая схема задания индивидуальных папок работает практически во всех заданиях где необходимо указать название папки с какими-то данными ( фото, видео, комментариями, ...)

Файлы с текстом и макросы

В VK-Magick много заданий где в настройках необходимо указать название папки в которой содержатся нужные для работы задания данные - фото, видео, посты, комментарии. Среди этих данных присутствуют и тексты ( тексты постов, тексты комментов, тексты с описанием фото и тд).

Название файлов

Файлы с текстами (независимо от задания) всегда имеют одинаковый формат названия: text*.txt (где вместо звездочки могут быть любые символы). Кодировка текста в этих файлах всегда должна быть UTF-8

Правиальные названия:
text.txt
text1.txt
text001112233.txt
textABCDEF.txt

Spintax

Во всех файлах с текстом (независимо от задания) можно испольховать Spintax т.е писать текст в виде: {Привет|Здравствуйте}. Вы уже {ходили|ездили} {на склад|в офис}?

Макрос взятия ссылок

Во всех файлах с текстом (независимо от задания) можно использовать макрос для взятия ссылок из Списка ссылок. Списки ссылок создаются в админке и их может быть сколь угодно много (под разные задачи свой). У каждого списка есть свой ID, его видно в админке.

$link15 - будет заменён на ссылку из списка ссылок с ID=15 ( см. меню Списки -> Списки ссылок ... рядом с названием списка указан его ID)
$link13d - будет заменён на ссылку из списка ссылок с ID=13 + удалит саму ссылку из списка

Автосокращение ссылок

Во всех файлах с текстом (независимо от задания) можно использовать макросы сокращения ссылок через сервисы vk.cc и clck.ru :

vkcc:https://https://www.google.com/ - будет заменено на короткую ссылку через vk.cc
clckru:https://translate.yandex.ru/?utm_source=yamain&utm_medium=personal - будет заменено на короткую ссылку через clck.ru
vkcc:$link8 - заменит на ссылку из списка ссылок с ID=8 предварительно скоратив ее через vk.cc
clck:$link10 - заменит на ссылку из списка ссылок с ID=10 предварительно скоратив ее через clck.ru

ВАЖНО: Сокращать уже сокращенные ссылки нельзя, будет ошибка!

Множество файлов с текстом

Во всех заданиях где используются файлы с текстом можно задать не 1, а несколько разных файлов с текстом. Например, в каждой папке с комментарием или постом может быть 10 разных файлов с текстом, в каждом свой текст со своим Spintax-ом. Каждый раз при выполнении задания шаблон будет выбирать из множества файлов text*.txt один случайный и использовать его.