Да это не спам, а таргетинг // Парсер + рассылка в Telegram
disclamer:
1. Автор не программист, не изучал ни один язык программирования и абсолютно в этом не разбирается
2. Автор против использования предоставленного кода в злых умыслах, но он на лицензии MIT, так что дело ваше
3. Это мой личный блог, моё личное мнение, моё личное видение
Доброго времени бытия.
Не буду вдаваться в подробности, какая задача родила эту необходимость, но появилась острая потребность в инструменте, который будет делать автоматическую рассылку большому количеству пользователей в Telegram.
Конечно же, мне на ум пришел самый легкий способ, который я знаю - спарсить аккаунты и автоматом всё это дело сделать.
Думаю, не стоит объяснять, сколько это сэкономит времени по сравнению с мануальным выбором контакта, вставкой текста ему в чат, отправкой и повторением алгоритма с другим человеком.
Пошёл в гугл и по первой же ссылке в выдаче наткнулся на библиотеку Telethon на Python.
Так как, повторюсь, я ни разу не программист, максимум любитель, который может вывести "Hello, world", я обратился к готовому решению TGPars на GitHub от пользователя elizhabs (кредитсы ей).
Но, как это заведено, зайдя в Visual Studio Code, мне по лбу ебанули грабли с ошибкой. Пришлось немного посидеть, понять, в чём дело и исправить ситуацию.
Собственно, именно поэтому и решил об этом рассказать: как я исправил готовое решение (недостаток реально был, не баг, не мой косяк) и модернизировал его, добавив полезные (лично для меня) свистоперделки.
Установил питона, установил библиотеку Telethon, запускаю скрипт по инструкции, и он, конечно же, выдает ошибку. Причём, не на самом старте, а уже под конец выполнения задачи.
Давайте объясню (зачем?): последовательно выполняются 3 различных скрипта;
первый не знаю, за что отвечает, но называется он setup.py и без него остальные отказываются работать. Спасибо, что он без ошибок.
второй скрипт, pars.py, отвечает, собственно, за парсинг пользователей в файл формата .csv. Спасибо, и тут без проблем.
третий скрипт, smsbot.py, как раз и совершает рассылку сообщений пользователям, добытым с помощью парсера. Но он сразу же при запуске выкидывает ошибку со скриншота ниже
Ничего не понимая в разработке и питоне, конечно же, пошел на Stack Overflow. Там добрые люди подсказали, что стоит всего-то добавить в написание команды путь до файла .csv с базой пользователей.
Они там и причины написали, что-то вроде того, что каждая цифра в квадратных скобках в данной строке соответствует определенной функции, и так программа может понять, что от нее хотят или что-то типа того. Возможно, даже близко не это, но не суть. Скрипт-то заработал.
Но как-то не очень писать команду длинной в две строки, когда можно обойтись двумя словами, поэтому, началась модернизация кода из этого:
в это:
Да, я в курсе, что, вроде как, ценится очень лаконичный код и все дела, но для личного пользования, с учётом того, что это работает + это маленький скрипт, а не громоздкое приложение, пойдёт.
Вдобавок, как можно увидеть, сделал возможность выбора базы из директории скрипта. Зачем? А потому что до кучи прикрутил возможность вручную создавать файлы баз с кастомными названиями при парсинге (по-умолчанию все базы пишутся в один файл "members.csv", перезаписывая его после каждого выполнения скрипта), заменив в скрипте парсинга это:
на это:
Ну и до кучи локализовал скрипт, чтобы поприятнее было (эстетичная хуйня):
Также, занёс базы данных в отдельную папку, так как теперь их можно делать несколько, чтобы не захламляли основную директорию и переписал под это дело код, чтобы скрипт не терялся и не начинал плакать file or directory is missing. Короче косметику навёл.
Писать подробную инструкцию по установке не буду, так как предполагаю, что если, вдруг, это кому-то и понадобится, человек будет разбираться в том, что он делает и зачем, но энивей, readme помог мне, поможет и Вам.