Sniff RTSP URL в китайській камері

Прийшла китайська ІР-камера, а задокументований rtsp URL не запрацював, хоча в браузері відео виконується.

Просніфити шлях просто:

ngrep -q -d wlan0 -W byline port 554




vkontakte пост на власну стіну з аплоадом фотографії на python

session = vk.Session(access_token='blahblahblah')
api = vk.API(session)
upload_server = api.photos.getWallUploadServer()
r = requests.post(upload_server['upload_url'], files={'photo': open("/home/gsv/photo.jpg","rb")})
params = {'server': r.json()['server'], 'photo': r.json()['photo'], 'hash': r.json()['hash']}
wallphoto = api.photos.saveWallPhoto(**params)
photoID = wallphoto[0]['id']
params = {'attachments': str(photoID), 'message': 'Тест'}
api.wall.post(**params)

Налаштування додаткового віртуального Wi-Fi в MikroTik

Постала задачка, на MikroTik RB951Ui-2HnD підняти дві Wi-Fi точки доступу. Перша (point1) - доступ по паролю. Друга (point1) - доступ безпарольний по mac-адресах. point1 працює у мережі 192.168.88.0/24, point2 у 192.168.89.0/24. Шлюз і DNS 192.168.x.1.

Вибірка Django: Групування об'єктів по днях з їх підрахунком

from django.db import connection
from django.db.models import Count
truncate_date = connection.ops.date_trunc_sql('day', 'created')
qs = NewsContent.objects.extra({'day':truncate_date})
news_report = qs.values('day').annotate(Count('pk')).order_by('day')
і на виході маємо:

[{'pk__count': 110, 'day': u'2015-11-21'}, {'pk__count': 83, 'day': u'2015-11-22'}]

Python Selenium PhantomJS робота з Facebook

По замовчуванні PhantomJS на відріз відмовився працювати з Facebook, хоча webdriver.Firefox() працює прекрасно. Методом гугління, проб і помилок вияснилось, що проблема при роботі з SSL. Отже, робочий "сніпєтс":

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = \
    ("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87")
wd = webdriver.PhantomJS(desired_capabilities=dcap, service_args=['--ssl-protocol=tlsv1'])
wd.set_window_size(1120, 550)
wd.get("https://www.facebook.com/")

Прочитати змінений скриптами DOM в Selenium

Простенькі сайти можна парсити через curl+lxml чи щось інше. Динамічні сайти, які генеруються за допомогою скриптів на стороні клієнта можна парсити через Selenium і отримувати код сторінки через driver.page_source. Але є ще більш комплексні сайти (наприклад Facebook), які після завантаження і генерації сторінки додатково змінюють DOM і page_source вже не допоможе. Для вирішення питання треба запустити скрипт:

outerhtml = wd.execute_script("return document.documentElement.outerHTML")
tree = etree.parse(StringIO(outerhtml), parser)