Just my blog
Blog about everything, mostly about tech stuff I made. Here is the list of stuff I'm using at my blog. Feel free to ask me about implementations.
- Mobaxterm SSH RDP FTP...
- Thunderbird Email client
- Filezilla FTP client/server
- Nirsoft Win utils
- Sysinternals Win utils
- Pi-Hole AD block by DNS
- NUT UPS manager
- Rpi MON Raspberry monitoring
- Free CAD 3D modelling
- Free Commander Far-like filemanager
- Bitwarden Password manager
- Django web framework
- celery multi-tasking
- celery-beat Celery + Django
- celery-results Celery + Django
- Pillow Python image lib
- wsgi mod Apache + Python
- requests best in WEB requests
- openpyxl make Excell docs
- p4python Perforce + Python
- paramiko SSH + Python
- pyvmomi ESXi Vcenter + Python
I'm using these libraries so you can ask me about them.
Django fast hints
Here some fast hints to remember: Migration:
cd ~/myproject python manage.py makemigrations python manage.py migrate
Alias /static/ "/var/www/smm_tools/site/"
Read...Вождь Бот возможности и функции
[caption id="attachment_2226" align="alignright" width="297"] Вождь Бот[/caption] "Вождь Бот" это автоматизированная система ведения рубрик в сообществах и группах в социальных сетях "Вконтакте" и "Facebook" (частично). Над его разработкой трудится пока только один человек, поэтому многие новые функции будут еще появляться, а улучшение уже существующих может занимать много времени. У проекта пока даже нет веб-версии, которая могла бы служить центром управления этими функциями, поэтому их настройка пока происходит вручную, лично разработчиком и частично администратором группы, к которой система будет подключаться. Возможности системы "Вождь Бот" на данный момент следующие:
Возможности Вождь Бота:
- Поздравление участников группы с днем рождения: https://vk.com/wall-46631810_451052
- Прогнозы погоды:
- Стандартный прогноз на день: https://vk.com/wall-46631810_450842
- "Угадай погоду": https://vk.com/wall-46631810_451001
- Публикация списка последних 100 забаненных пользователей: https://vk.com/wall-46631810_449891
- Проверка наличия предложенных новостей в нескольких группах, и кол-во постов уже вышедших на стену.
- Автоматическое удаление комментариев, которые оставили не участники группы (вроде антиспама).
- Выбор случайного (random) участника по конкурсам репостов сразу …
python script as centos service
Task completed! I made a vkontakte Bot which delete all comments are not from group members! But I do not want to run it by cron, because it will SPAM all my system with cron emails. But I found resolution:
- make a worker.py
- allow worker to run delete scripts on time periods
- add worker as centos service
- have fun!
Maybe later I'll add more code, but now just for example I'll show only worker and bash script:
#!/usr/local/bin/python3 # coding=utf-8 from time import strftime, sleep import schedule from vk_del_comments import * from vk_del_comments_older import * import os pid = os.getpid() op = open("/var/us.pid","w") op.write("%s" % pid) op.close() token = '' tk_owner_id = "-000000000" tk_group_id = "000000000" tk_domain = "group_domain" curr_date = strftime("%d-%m-%Y - %H:%M:%S") logFile = 'comments_deleter_log.txt' # print("Start Comments Bot Worker!") def del_comments_30_sec(): del_comments_regular(logFile, token, tk_owner_id, tk_group_id, tk_domain) def del_comments_5_min(): delete_comments_older(logFile, token, tk_owner_id, tk_group_id, tk_domain) # schedule.every(30).seconds.do(del_regular_comments_19) schedule.every(30).seconds.do(del_comments_30_sec) schedule.every(5).minutes.do(del_comments_5_min) while …Read...
How tired I am of Google way how get API tokens
- Create application and take its id and secret.
- Make a GET request to send secret and id with needed scopes of access.
- Obtain TEMPORARY access token and refresh token (first lives about 3000 - 5000 sec, the second can probably live infinite)
- Use this access token to GET something through REST, check if this token is not expires already.
- You want to GET something ELSE? First check if your token is not expired, then if expired - use refresh token to get NEW TEMPORARY token.
- Do something else.
Nice turn google! You are the best of masters of creating shitcode. Before starting real work on google API and my own project with Google Drive I'll learn pythons "requests" perfectly, first! Thanks google you will make me smarter! Example of shitcode which is needed to get the token first, then check if it is not expired and then request NEW …
Read...Better, then best vk execute and python part. 2
Крайняя степень эффективности. Теперь скрипт не парсит данные, их парсит сам ВК и возвращает мне лишь списки: айди, комменты, репосты и т.п. Для каждого набора свой список - длина списков всегда одинакова. Дело в том, что ВК не позволяет производить более 24-х итераций за раз в vk execute, поэтому, прежде чем отправить списки постов, я дроблю их на группы по 20. Мало того, благодаря вот этому вкраплению: https://toster.ru/q/234399 я теперь могу производить сбор постов по 100 штук по 20 раз за итерацию в Python, то есть на стороне ВК происходит 20 итераций по 100 постов за одну итерацию в python Далее списки zipаются в один большой список списков по 2000 элементов в каждом. Based on: http://www.trianglesis.org.ua/python-i-vk-execute-40-tysyach-postov-za-3-minuty Время выполнения сократилось почти в два раза! 40 тысяч элементов за полторы минуты! Уже даже не знаю, можно ли быстрее или потолок в высшей степени проходимости сети.
Bot has started it's work …Read...
Python и vk execute = 40 тысяч постов за 3 минуты!
Да, сучка, это Python и vk execute! Собрать 39000 постов за 3 минуты! Закончил очередную партию парсеров, теперь этот парсер умеет делать сбор постов несколько быстрее, чем раньше. В прошлый раз, одними только силами Python while - мне удалось спарсить стену с 39 тысячами постов минимум за 15-20 минут, при этом с вероятностью в 50% поймать timeout error и запускать все заново или дробить сбор постов по дате или кол-ву. Вуаля, упорство и немного логики:
Get posts from wall from VK wall.get Posts present: 39143| Runs: 20| Iters: 20| Offset of posts is: 2000 Posts present: 39143| Runs: 20| Iters: 20| Offset of posts is: 4000 Posts present: 39143| Runs: 20| Iters: 20| Offset of posts is: 6000 Posts present: 39143| Runs: 20| Iters: 20| Offset of posts is: 8000 Posts present: 39143| Runs: 20| Iters: 20| Offset of posts is: 10000 Posts present: 39143| Runs: 20| Iters: 20| …Read...
vk execute VS python while
Итак, финишная прамая на сегодня:
- скрипт на Python, получающий комментарии из 57 постов за последних 7 дней
- скрипт Python, отправляющий аргументы для vk execute порциями по 24 поста за раз со sleep(1) - во избежание флуда
Дано 57 постов и 797 комментариев под ними.
Старый вариант:
- достается список элементов из таблицы БД где дата элемента между сегодня и -7 дней
- для каждого изъятого из таблицы элемента с index[0] производится забор комментариев
- если index[1] - значение содержит число > 100 - значит в посте больше 100 комментов (ВК не отдает более 100 коментов за один запрос) то запустить while и счетчик, до тех пор, пока индекс итераций(offset_comments) не достигнет числа равному кол-ву комментов(post_com);
all_post_comments = [] for item in post_id_comm_list: post_id = item[0] post_com = int(item[1]) if post_com > 100: offset_comments = 0 # Start value always = 0 while offset_comments < post_com: # Until post comments count …Read...
vk execute + args + python + requests
Продолжаю закреплять выученное своим горьким опытом и методом тыка по теме vk execute и python, наконец мои рученьки-загребученьки добрались до последнего оплота и просто приятного и некогда непонятного метода, и также к хранению процедур в приложении! Ура. В прошлом посте я рассказывал как передать строку с vk script сразу таки прям по воздуху, сырую и некрасивую, сегодня мне покорился вариант "хранимые процедуры" который позволяет тело скрипта хранить в приложении вк, а передавать по "воздуху" только необходимые и меняющиеся аргументы: id группы, id поста и так далее. Ближе к делу:
- каждая переменная, которая будет записываться переданным аргументом должна иметь такой вид: Args.var_name
var comments = API.wall.getComments( {"owner_id":(Args.owner_id), "post_id":(Args.post_id), "need_likes":"1", "offset":"0", "count":"100", "sort":"asc", "preview_length":"1", "extended":"0", "v":"5.27"}); var comments_cnt = comments.count; comments = comments.items; var offset_comments = 100; while (offset_comments < comments_cnt) {comments = comments + API.wall.getComments( {"owner_id":(Args.owner_id), "post_id":(Args.post_id), "need_likes":"1", "offset":(offset_comments), "count":"100", "sort":"asc", "preview_length":"1", "extended":"0", "v":"5.27"} ).items; offset_comments = …Read...
vk execute
https://vk.com/dev/execute Продолжаю линейку ознакомительных постов на тему "в мире эльфийских языков программирования" или "говнокод - как стиль жизни". Был вот такой вот пост, который вроде как-бы объяснял как сделать execute при помощи javascript и все такое: http://habrahabr.ru/post/248725/ но язык, которым была написана статья - выглядит настолько эльфийским, я уже не говорю про сраную разметку, которая съехала набикрень просто, как и моя голова, с несозревшими пайтоновскими правилами отступов тоже съехала. Так вот, пытаясь разобраться в этих письменах и отделить зерна от плевел, чтобы наконец понять, как работает этот долбанный vk execute мне пришлось убрать весь говнокод, чтобы найти чистый vk execute, также используя хорошую, но не очевидную, документацию ВК по ссылке выше, я смог родить то, чего пока, мне кажется, никто не родил: Простой и понятный пример того, как работает этот, ослицу его мать, vk execute. Вот очень простой пример while:
var a = 1; var …Read...
vk execute method working example on python 3
vk execute
РУС: Сраный интернет и хабрахабры просто завален всякими говнопримерами про vk execute method, каждый круче предыдущего, и никто так и не смог написать нормальный код, я два дня пытался читать тот эльфийский говнокод, в который хабровчанин превратил пайтон, силясь понять что он куда передает, до тех пор, пока не послал все к "%s собачим" и не сделал методом тыка сам. Все оказалось пипецки просто, смотрите сами, код внизу спокойно себе возвращает то, что нам нужно. python(vk execute method):
import requests owner_id = "-PAGE_ID" token = 'TOKEN' # may use return%20API.wall.get where "%20" is for HTTP encode of space symbol # also can work with regular space sybmol - in my version is working fine r = requests.post('https://api.vk.com/method/execute?access_token='+token+'&code=return API.wall.get({"owner_id":"'+owner_id+'","count":"1"});') response_data = r.json() print(response_data)
Далее просто нужно будет разобраться, как работает этот вк скрипт и написать соотв. запросы для своих нужд. Передавать, как оказалось - можно в сыром виде, …
Read...