Да это не спам, а таргетинг // Парсер + рассылка в 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 с базой пользователей.

Они там и причины написали, что-то вроде того, что каждая цифра в квадратных скобках в данной строке соответствует определенной функции, и так программа может понять, что от нее хотят или что-то типа того. Возможно, даже близко не это, но не суть. Скрипт-то заработал.

Но как-то не очень писать команду длинной в две строки, когда можно обойтись двумя словами, поэтому, началась модернизация кода из этого:

input_file = sys.argv[1]

в это:

m_file = input(gr+"[+] Введите название базы для рассылки: "+re) input_file = "/Users/_/PythonProg/TGPars-main2/"+m_file+".csv"

Да, я в курсе, что, вроде как, ценится очень лаконичный код и все дела, но для личного пользования, с учётом того, что это работает + это маленький скрипт, а не громоздкое приложение, пойдёт.

Вдобавок, как можно увидеть, сделал возможность выбора базы из директории скрипта. Зачем? А потому что до кучи прикрутил возможность вручную создавать файлы баз с кастомными названиями при парсинге (по-умолчанию все базы пишутся в один файл "members.csv", перезаписывая его после каждого выполнения скрипта), заменив в скрипте парсинга это:

with open("members.csv","w",encoding='UTF-8') as f: // // print(gr+'[+] Members scraped successfully.')

на это:

m_file = input(gr+"[+] Введите название базы для сохранения: "+re) with open(m_file+".csv","w",encoding='UTF-8') as f: // // print((gr+"[+] Участники группы ")+(re+ g_name)+(gr+" сохранены в базу ")+(re+ m_file+".csv"))

Ну и до кучи локализовал скрипт, чтобы поприятнее было (эстетичная хуйня):

Было
Было
Стало
Стало

Также, занёс базы данных в отдельную папку, так как теперь их можно делать несколько, чтобы не захламляли основную директорию и переписал под это дело код, чтобы скрипт не терялся и не начинал плакать file or directory is missing. Короче косметику навёл.

Писать подробную инструкцию по установке не буду, так как предполагаю, что если, вдруг, это кому-то и понадобится, человек будет разбираться в том, что он делает и зачем, но энивей, readme помог мне, поможет и Вам.

22
3 комментария

бро, привет
а как скачать Scare Past?

На гитхабе зеленая кнопка -> local -> скачать

отлично, большое спасибо!
я сейчас "пыхчу" над этим все - могли бы мы обменяться контактами?