...
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.

Soft I recommend
Py lib I recommend

I'm using these libraries so you can ask me about them.

Django + Python 3.4 + WAMP Apache 2.4.23 + Pycharm

Finally worked instance for hosting DEV site code on python and ability to resolve is as "on live" web server just on my laptop.

A lot of different configurations changed but this is one working for me, and maybe can help you also.

Better use EVERYTHING 32 bit for Window, you will suffer if you try to find some needed wheels for python 64bit on Windows 7 64bit.

 

WAMP Apache 2.4.23

Download: wampserver3.0.6_x86_apache2.4.23_mysql5.7.14_php5.6.25-7.0.10 Here

NOTE: Install all needed C++ Redistr. packages which are listed in WAMP install guide!

Download mod_wsgi.so Here or Here (for everythin 32 bit and python 3.4 on Win7 you need: mod_wsgi-py34-VC10.so)

NOTE: Use mod_wsgi version which corresponds your python version! (Above in links you can find more info, just read carefully)

After WAMP install - you don't need to run full programm (I just did not see any advantages of this and disable wampmysql service)

All you …

Read...

Gjango, Pycharm - static files Windows

This topic for those who broke his mind trying to understand how to make Pycharm run Django with static files I've made it, but be carefull it can break your mind too!

The settings

I use the most portable way to configure settings - so I can move it into centos web server without paths changes Win\Unix (I HOPE). There are common DIRs

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# BASE DIR: D:\Projects\CODE\WEB\sites\www\smm_tools\smm_site
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
# PROJECT_ROOT:     D:\Projects\CODE\WEB\sites\www\smm_tools\smm_site\main_code
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
#Static root:      D:\Projects\CODE\WEB\sites\www\smm_tools\smm_site\static
STATIC_URL = '/static/'

Looks like ot works, but in really weird way:

  • static files are working fine
  • web page as template is loading
  • some scc and js are loading and some are not

Working css:

In works in different ways - this is one of them which I think correct.

In HTML code:

<link href="{% static 'css/bootstrap.css' %}" rel="stylesheet" type="text/css">
<link href="{% static …

Read...

Пост с именинниками Вконтакте

Публикация поста с именинниками Вконтакте:

py_vk Старый скриптец, который я использовал около года назад для выборки именинников и публикации поста с ними на стену сообществ Вконтакте. Выкладываю в публичный доступ, так как морально он устарел и код в нем выглядит ужасно, но подходит чисто для образовательных целей и "авось кому пригодится" мне бы он помог на первых порах изучения, может быть … [su_quote]"На тобі боже, що мені негоже."[/su_quote] Сам код можете смотреть здесь: В ближайшие дни, недели, месяцы я буду выкладывать все эти прошлые поделки, по мере того, как полностью перепишу их на новый манер, сейчас у меня основная задача - полностью унифицировать эти отрывки кода и сделать из них полноценную систему управления и автоматизации, поэтому, эти вот отрывки сами по себе уже никакой ценности не несут для меня, но могут кому-то помочь. По себе знаю, что даже кривой но рабочий пример какой-то вещи - может помочь продвинуться в понимании каких-то …

Read...

vk execute wall get comments automation

Как использовать vk execute для получения всех комментариев со всех постов?

py_vk Как и обещал, пришло время выложить исходники (исподники) скриптов, которые я использую для собирания комментов с постов в группе. [su_note]Почему "исподники"? Потому что этот самый код на самом деле такая глючная тварь и такой "грязный" что его стыдно показывать на людях![/su_note] [su_quote]Эту конструкцию я использую в двух модулях, один собирает статистику, другой удаляет комментарии, если они оставлены не участником группы\сообщества. Обновляться и рассматриваться эта конструкция будет в ключе использования её именно как парсилки комментариев, для последующего удаления оных. Главная проблема заключалась в том, что возвращался крайне запутанный список, в котором могли возникать пробелы, из-за которых удалялись не те комментарии, которые следовало бы удалять.[/su_quote] Суть в следующем, у вас есть группа, в которой есть посты, в которых есть комментарии. Вначале вы отбираете ТОЛЬКО те посты, в которых комментов больше нуля и формируете их них список, разделенный запятыми, это …

Read...

Python schedule how to

Задачка на вечер: Дано: задание, которое нужно выполнять в заданные промежутки времени, модуль Python schedule. Задача: запускать одну и ту же задачу с разными значениями offset раз в 10 сек, так, чтобы 0ffset=119 запускался в 10 сек от начала каждой минуты, offset=219 на 20й секунде каждой минуты и так далее. Все что пока смог сделать - заставить выполняться задачу каждую 10ю секунду, НО! это грозит тем, что каждые 10 сек в очередь добавляется каждая след. задача, так что может выполняться все куда чаще, чем раз в 10 сек. Есть идея - сделать задержку в 10 сек после каждого добавления задачи в очередь, тогда может получиться задержка в 20 сек, потом выполнение подряд нескольких задач, и снова 20 сек задержки. Сломал голову себе, сломаю и вам.

from time import strftime, sleep
import schedule


def del_comments_offset(offset):
    print("Func start")
    try:
        delete_comments_older(logFile, token, tk_owner_id, tk_group_id, tk_domain, offset)
    except:
        log_block("ERROR!!! : Connection error!")

offsets = …

Read...

Atlassian Confluence REST API Making request and keep the session (Eng)

In this topic I'll show you how to make session to Atlassian Confluence with python requests and keep it in memory.

Atlassian Confluence Based on:

For someone who found this topic by "search machines", there is some more detailed how-to - probably can help you:

Python requests module:

At first you should know and understand how requests works, basically.

Check how your confluence works:

Next - you should know the point, where is your Confluence server make authorisation, in my situation it lies here (this is looks cozy, but this is our company's way. In your situation it can be simpler, as documented in links above): https://docs.YOURCOMPANYMAME.com/docs/dashboard.action?os_username=configipedia_service_account&os_password=PASSWORD

Then you compose a request like:

import json
import requests

confluence_auth_url = 'https://docs.YOURCOMPANYMAME.com/docs/dashboard.action?os_username=configipedia_service_account&os_password=PASSWORD'
session = requests.session()
session.post(confluence_auth_url)

This will execute and save the session in memory, so you will not need to authorise each next request.

REST URL composing:

Then …

Read...

Atlassian Confluence REST API Logic structure (Eng)

Read this article after you know how to make REST API request to Atlassian Confluence! atlassian_con This topic will show you some part of internal scheme of Confluence API and hierarchy. Based on:

So, looking on the Confluence docs all this scheme looks like well-structured logical system, but it has some difficulties, just as for me. Before you POST of GET something will be better if you make a probing GET request to see the whole structure in your organisation. In this example you will get those arguments:

# Confluence stats
space_page = '625685389'
space_root_page = '625685397'
space_id = '624689178'
space_key = '~configipedia_service_account'
space_name = 'DocBot+space'
child_page_1 = '625685424'
child_page_2 = '625685428'
confPedia_root = 'https://docs.YOURCOMPANYMAME.com'
confPediaUser = '~configipedia_service_account'

# api keys
# Usage example: "confPedia_root+conf_content+space_id" - request to get space homepage content
api = '/rest/api/'
conf_space = '/rest/api/space/'
conf_content = '/rest/api/content/'
conf_children = '/child/page/'

 

# Confluence stats …

Read...

Atlassian Confluence REST API (Eng)

How to work with REST API Confluence.

Rus [caption id="attachment_2385" align="aligncenter" width="609"]Atlassian Confluence REST API Atlassian Confluence REST API[/caption]

What is this topic about?

  • API structure in Atlassian Confluence.
  • Objects, files, relations etc.
  • How to compose API request in Atlassian Confluence?
  • How to open session and hold it on - !
  • Making headers with requests and - json !
  • Send a file or file content with wiki markup on Confluence - !
  • Interpret server answers.
  • What is the difference between "representation":"storage" and "markup" in Atlassian Confluence?
    • Macro and markup

About "Atlassian Confluence" you can read here.

  • https://www.atlassian.com/software/confluence
  • https://wikipedia.org/wiki/Confluence

Who need this?

For those, who wants to automate documentation stage of DEV. For those, who wants to understand how does python requests working? For my own - to not forger this lesson. When I started to make this bot - I know nothing, just like a John Snow, I also …

Read...

Atlassian Confluence REST API

Как работать с REST API Confluence.

Eng Atlassian_Python О чем этот топик?

  • Структура API в системе Confluence.
  • Объекты, файлы, статьи, родство и проч.
  • Формирование запроса(адреса) в API Confluence
  • Открытие сессии и удержание её в памяти - !
  • Формирование заголовков при помощи модуля requests и - json !
  • Отправка файла, содержания файла, вики-разметки на сервер Confluence - !
  • Интерпретируем ответы от сервера

Что такое Atlassian Confluence вы можете почитать здесь:

  • https://www.atlassian.com/software/confluence
  • https://ru.wikipedia.org/wiki/Confluence

Кому нужен этот топик?

Тем мученикам, которые хотят автоматизировать процесс написания/отправки документации в разработке. Тем мученикам, которые как и я, по очевидным примерам не могут разобраться в модуле requests касаемо работе с заголовками. Мне самому, чтобы не забыть свой "подвиг" и все его наработки, так как память имеет свойство "стираться".   В тот момент, когда я решил заняться автоматизацией процесса документации в своей компании я не знал, насколько кастрирована наша Confluence и насколько убогий, окажется в принципе сам её API, как долго придется возиться с тем, чтобы …

Read...

Python Run External Command And Get Output On Screen or In Variable

Отседова: http://www.cyberciti.biz/faq/python-run-external-command-and-get-output/ The basic syntax is:

import subprocess
subprocess.call("command-name-here")
subprocess.call(["/path/to/command", "arg1", "-arg2"])

Run ping command to send ICMP ECHO_REQUEST packets to www.cyberciti.biz:

#!/usr/bin/python
import subprocess
subprocess.call(["ping", "-c 2", "www.cyberciti.biz"])

Свой вариант:

C:\Python34>python.exe
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.call(["ping", "-t", "8.8.8.8"])

Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=49ms TTL=43
Reply from 8.8.8.8: bytes=32 time=42ms TTL=43
Reply from 8.8.8.8: bytes=32 time=42ms TTL=43
Reply from 8.8.8.8: bytes=32 time=42ms TTL=43
Reply from 8.8.8.8: bytes=32 time=43ms TTL=43
Reply from 8.8.8.8: bytes=32 time=42ms TTL=43
Reply from 8.8.8.8: bytes=32 time=42ms TTL=43
Reply from 8.8.8.8: bytes=32 time=42ms TTL=43

Ping statistics for 8.8.8.8:
    Packets: Sent = 8, Received = 8, Lost = 0 (0% loss),

Чисто чтобы не забыть, себе шпора. Быть может очень скоро пригодится. С аутпутами пока не разбирался, как-то …

Read...