Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3494 posts.

Python для новичков » Потоки и 1 список » Май 30, 2016 21:30:44

Рандомно получаю 1 прокси из списка(config.PROXY). Могут ли возникнуть какие-нибудь коллизии со списком из за потоков для такого решения:
    valid_proxy = None
    while not valid_proxy:
        random_item = random.randrange(0,len(config.PROXY))
        random_proxy = config.PROXY[random_item]
        if not is_bad_proxy(proxy_type,proxy):
            valid_proxy = random_proxy
            break
        else:
            del(config.PROXY[random_proxy])
?

Флейм » Разработчик расширений для Google Chrome » Май 30, 2016 13:10:48

Доброго времени суток.
Необходимо разработать расширение для Google Chrome, которое будет решать ряд задач по добавлению кнопок в страницу Todoist, Toggl, и подмены номера телефона (вызов SIP программы).
Расширение должно автоматом раз в час, либо по нажатию кнопки SYNC считывать настройки (из справочника), например из Excel файла (расширение файла не принципиально).
В этом файле будет несколько справочников (По листам), которые нужны будут расширению для работы.
Оплата по часам. По каждому ТЗ мы согласовываем объем рабочих часов необходимые для реализации функционала и соответственно оплачиваем по частям или после реализации функционала.

Более подробное описание задачи в приложенном pdf-документе.
Почта для связи: gazetmurin@mail.ru

Обсуждение новостей » Предварительная программа PyCon Russia готова. Выступят докладчики из США, Англии, Франции, Чехии, Украины и России » Май 30, 2016 11:33:56

3-4 июля недалеко от Москвы пройдет четвертая конференция для python-разработчиков PyCon Russia.

Программа PyCon-2016 получается отличной — Raymond Hettinger (Python core developer с 2001 года, автор и мэйнтейнер многих частей языка, США), Martin Görner (Google, Франция), Nathaniel Manista (Google, США), Armin Ronacher (Flask framework, Австрия), David MacIver (Hypothesis, Великобритания), Jackie Kazil (Capital One, США), Александр Кошкин (Positive Technologies, США), Александр Сибиряков (Scrapinghub, Чехия), Андрей Светлов (DataRobot, Украина), докладчики из HeadHunter, Rambler&Co, Яндекса, Toptal — и это еще не все.

Тезисы докладов и подробности — на сайте конференции.

Python для новичков » Вызов в коде класс с сервисом разгадывания капчи » Май 29, 2016 20:14:25

Здравствуйте, есть класс, который при помощи сервиса antigate разгадывает капчу с сайта ВК. Подскажите, как его интегрировать с рабочим кодом?
from selenium.webdriver.common.keys import Keys
import webbrowser
import re
import os
import json
import requests
import random
import selenium
from robobrowser import RoboBrowser
import time
 
class vk_captcha:
    """Класс для работы с каптчей. Вырезает img со страницы, отправляет
    в antigate, получает результат, возвращает введенную каптчу в виде строки"""
 
    def decode(page, root_path):
        """Объединение функций _send_captcha и _check_captcha"""
        print("Каптча...")
 
        key = "4517fb23f100hvyg87gy87gvhj"
        a_captchaID = vk_captcha._send_captcha(page, root_path, key) #antigate captcha ID [OK, 406704123]
        if a_captchaID[0] != "OK":
            print("Неудалось отправить запрос на antigate\n%s" % a_captchaID)
            return 0
        while True:
            time.sleep(7)
            a_captchaRESULT = vk_captcha._check_captcha(a_captchaID[1], key)  #antigate captcah RESULT [OK, Fgv4Kl]
            if a_captchaRESULT[0] != "OK":
                continue
            print("Готово. %s" % a_captchaRESULT[1])
            return a_captchaRESULT[1]
       
 
    def _send_captcha(page, root_path, key):
        """Получает страницу, возвращает массив формата [OK, 406704123]"""
        img_tag = page.find(id="captcha")
        if not img_tag:
            img_tag = page.find("img", {"class":"captcha_img"})
        if not img_tag:
            print("Тега с id=captcha не найдено")
            return 0
        img = vk_captcha.request_with_retry(root_path + img_tag["src"]).content
        data = {
            "key": key,
            "method": "post",
        }
        response = vk_captcha.request_with_retry('http://antigate.com/in.php', data=data, files={"file": img})
        return (response.text.split("|"))
 
    def _check_captcha(captcha_id, key):
        response = vk_captcha.request_with_retry("http://antigate.com/res.php?key=" + key + "&action=get&id=" + captcha_id)
        return (response.text.split('|'))
 
    def request_with_retry(url, data="", files=""):
        TIMEOUT = 0.5
        while True:
            try:
                if data or files:
                    response = requests.post(url, data=data, files=files, timeout=TIMEOUT)
                else:
                    response = requests.get(url, timeout=TIMEOUT)
            except requests.exceptions.ReadTimeout:
                continue
            break
        return response

#Код в котором нужно встроить класс разгадывания капчи
def create_group(wd):
        with open("file.txt", "r") as f:
            line = f.readline()
            for i, line in enumerate(f):
                if i == 10:
                    break
                else:
                    try:
                        wd.get('http://vk.com/' + line)
                        wd.find_element_by_xpath("//a[@id='profile_photo_link']/img").click()
                        # time.sleep(4)
                        # wd.find_element_by_id("pv_like_count").click()
                    except:
                       
            f.close()

Network » Как установить прокси для imaplib и poplib? » Май 25, 2016 16:54:39

Можно ли установить прокси для imaplib и poplib? Пробовал
socks.setdefaultprox
, но я так понимаю для всех запросов? Можно ли как то установить прокси именно для объекта imaplib и poplib или для определенного потока?

Python для экспертов » Ищу разработчика Python/Django в Москве » Май 25, 2016 11:42:43

В активно развивающуюся компанию ищем разработчика Python/Django.
З/п 100-150К
Обязанности:
- Участие в командной разработке крупных систем и платформ на всех уровнях;
- Разработка архитектуры сервисов системы;
- Реализация новых сервисов и модулей платформы;
- Доработка, оптимизация существующих модулей системы;

Обязательные требования:
- Знание Python + Django;
- Высшее техническое образование;
- Опыт программирования на Python от 1 года.

Желательно:
- django rest framework
- Понимание клиент-серверных технологий;
- Навыки работы Linux.

Условия:
- Официальное оформление по ТК;
- Гибкий график работы;
- 10 мин пешком от м.Достоевская.
- Полная занятость, полный день.
- Возможна работа удаленно

Звоните: +79296416239
Высылайте CV: e.pilat@gwheels.co

Python проекты »  Требуются Python - Django - Full stack разработчики или команда разработчиков » Май 24, 2016 14:57:53

Требуются Python - Django - Full stack разработчики или команда разработчиков в штат для участия в крупном e-commerce проекте известного fashion-бренда. ЗП выше рынка.

skype yes_max
email max_own@mail.ru

Django » Требуются Python-Django разработчики или команда разработчиков » Май 24, 2016 14:53:53

Требуются Python-Django разработчики или команда разработчиков в штат для участия в крупном e-commerce проекте известного fashion-бренда. ЗП выше рынка.

skype yes_max
email max_own@mail.ru

Python для экспертов » JIRA_SOAP_API » Май 24, 2016 09:41:37

Добрый день.
Кто нибудь работал с JIRA SOAP API https://docs.atlassian.com/rpc-jira-plugin/3.13.4-1/com/atlassian/jira/rpc/soap/JiraSoapService.html

В частности интересует updateWorklogAndAutoAdjustRemainingEstimate. Не могу понять каким образом править worklog, какие параметры указать….Если по доке, что привел выше, то думаю будет как то так:
updateWorklogAndAutoAdjustRemainingEstimate(auth, {'id': '588801', 'timeSpent': '2h', 'timeSpentInSeconds': 7200})
Но выдает ошибку:
Traceback (most recent call last):
    connect.updateWorklogAndAutoAdjustRemainingEstimate(auth, {'id': '588801', 'timeSpent': '2h', 'timeSpentInSeconds': 7200})
  File "/usr/local/lib/python2.7/dist-packages/SOAPpy/Client.py", line 547, in __call__
    return self.__r_call(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/SOAPpy/Client.py", line 569, in __r_call
    self.__hd, self.__ma)
  File "/usr/local/lib/python2.7/dist-packages/SOAPpy/Client.py", line 482, in __call
    raise p
SOAPpy.Types.faultType: <Fault soapenv:Server.userException: com.atlassian.jira.rpc.exception.RemoteValidationException: Errors: {startDate=You must specify a date on which the work occurred.}
Error Messages: []: <SOAPpy.Types.structType detail at 140554129182232>: {'hostname': 'xxxx', 'com.atlassian.jira.rpc.exception.RemoteValidationException': ''}>
Errors: {startDate=You must specify a date on which the work occurred.} - Здесь понятно, хотя и не совсем…. требует указать дату, но по документации этого не указано.

Network » Проверка прокси на валидность » Май 23, 2016 23:03:15

Да тема может и не первая, скажите пожалуйста правильно ли я делаю:
PROXY = [] #заполненный список строками вида ип:порт
#...
default_proxy = socks.socksocket
for proxy in PROXY:
proxy_ip,proxy_port = proxy.replace('\n','').replace('\t','').replace('\r','').split(':')
try:
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,proxy_ip,int(proxy_port),True)
socket.socket = socks.socksocket
req=urllib2.Request('http://google.com/')
urllib2.urlopen(req)
break
except Exception as E:
print E
continue
finally:
socks.setdefaultproxy(default_proxy)
socket.socket = socks.socksocket

Python для новичков » Python 3, IBM DB2, Windows 10 -> UnicodeDecodeError: 'ascii' codec » Май 23, 2016 18:59:37

Пытаюсь в Питоне запустить простенький запрос к базе DB2, однако, в итоге получаю следующее:

>>> import ibm_db
>>> conn = ibm_db.connect("sample","root","root")
>>> ibm_db.exec_immediate(conn, "select * from act")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
Exception
>>> print(ibm_db.stmt_errormsg())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc8 in position 38: ordinal not in range(128)

Проверил, какая стоит кодировка по умолчанию - оказалось ‘utf8’:

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> quit()

Подскажите, пожалуйста, какой еще дебаг сделать, чего может не хватать и какие действия предпринять, чтобы устранить эту проблему. Спасибо!

Django »  django mptt "A node may not be made a sibling of any of its descendants" » Май 23, 2016 11:54:08

Добрый день

при копировании возникает ошибка “A node may not be made a sibling of any of its descendants”

def create_copy_node_new(self, node, parent):
    old_foreignkey_field = node.foreignkey_field
    node.pk = None
    node.id = None
    node.parent = parent
    node.save()
    if old_foreignkey_field:
        node.foreignkey_field = old_foreignkey_field
    node.save()
    return node
не могу понять почему так происходит

Python для новичков » Парсинг сайта, не могу конвертировать » Май 21, 2016 00:49:53

Люди добрый, здравствуйте.
Не могу понять, как формируется колонка Time вот тут http://www.tennisabstract.com/cgi-bin/player.cgi?p=RobinHaase
Данные подгружаются от сюда: http://www.minorleaguesplits.com/tennisabstract/cgi-bin/jsmatches/RobinHaase.js , могу конечно заблуждаться уже.

Там есть переменные:
"2016-6120-283" которые, вероятно, становятся 2:27
"2016-M009-232" - 2:01
"2016-M009-220" - 0:53

Быть может другие переменные формирую это время? Подскажите, я в тупике.
Спасибо, что уделили моему вопросу своё время.

Web » Можно ли в tornado фоном запустить метод? » Май 19, 2016 12:38:23

Добрый день.

Есть задача по get запросу отдавать данные из БД. Но если в базе данных нет нужного значения, то отдать ответ self.write'у, пользователь получит загруженную страницу, а в это время запустить в фоне парсер, который достанет нужные значения и запишет их в БД. И при повторном запросе ответом уже будут записанные данные.

Мне смотреть в сторону Асинхронных запросов? Типа:

from tornado.httpclient import AsyncHTTPClient
def asynchronous_fetch(url, callback):
    http_client = AsyncHTTPClient()
    def handle_response(response):
        callback(response.body)
    http_client.fetch(url, callback=handle_response)


Или все же, тут надо потоки подключать?

Django » Ображение к БД » Май 16, 2016 11:58:02

Здравтвуйте! Помогите пожалуйста c тестовым заданием.

Даны модели:

[code python]class Category(models.Model):
    name = models.CharField(‘Группа товара’, max_length=64)
    
class Product(models.Model):
    category = models.ForeignKey(Category, verbose_name=‘Группа’)
    name = models.CharField(‘Название товара’, max_length=128)
    price = models.DecimalField(‘Стоимость единицы, руб., max_digits=10, decimal_places=2)[/code]

а) С помощью Django ORM выбрать товары, цена которых больше или равна 100 руб., сгруппировать по категориям и посчитать количество товаров в каждой категории.
б) То же самое, но оставить лишь категории, в которых строго больше 10 товаров
в) Написать код python, который выводит в консоль перечень всех товаров. Каждая строка должна содержать следующие данные:
название категории товара,
наименование товара,
цена.

Django » Django ORM » Май 16, 2016 11:50:49

Здравтсвуйте! Помогите пожалуйста с тестовым заданием, необходимо выбрать правильные ответы.

1. Suppose we have model with a custom manager:

class CustomManager(models.Manager):
    def get_queryset(self):
        return CustomQuerySet(self.model, using=self._db)
class Item(models.Model):
    name = models.CharField('Item', max_length=100)
    active = models.BooleanField('Active', default=True)
    objects = CustomManager()

Now we want the following code to work:
Item.objects.filter(pk=1).delete()
- should set “active” attribute to False on matched records.


Item.objects.filter(pk=1).delete_real()
- should delete matched records from db.

What is the correct CustomQuerySet implementation?


i.
class CustomQuerySet(QuerySet):
    def delete(self):
        self.update(active=False)
    def delete_real(self):
        super(CustomQuerySet, self).delete_real()


ii.
class CustomQuerySet(QuerySet):
    def delete(self):
        self.update(active=False)
    def delete_real(self):
        super(CustomQuerySet, self).delete()

iii.
class CustomQuerySet(QuerySet):
    def delete(self):
        self.active = False
    def delete_real(self):
        super(CustomQuerySet, self).delete()

iv.
class CustomQuerySet(QuerySet):
    def delete(self):
        self.active = False
    def delete_real(self):
        super(CustomQuerySet, self).delete_real()



2. Suppose we have model:

class Person(models.Model):
    name = models.CharField('Item', max_length=100)
    birthday = models.DateField(...)

We want to define a model field “birthday” such that django admin interface doesn't allow this field to be empty, but we can create persons with empty birthday using orm (
Person.objects.create(name='Name 1')
should work).

What is the correct field definition?
i.
birthday = models.DateField(null=True, blank=True)
ii.
birthday = models.DateField(null=False, blank=True)
iii.
birthday = models.DateField(null=True, blank=False)
iv.
birthday = models.DateField(null=False, blank=False)

Python для новичков » pyinstaller + UAC » Май 16, 2016 00:30:08

Добрый вечер!
Есть программа, которая преобразовывается в exe с помощью pyinstaller. Всё бы хорошо, но мне надо, чтобы при запуске полученного исполнимого файла на Win с UAC происходил запрос на повышение прав. Данного эффекта не удаётся достичь, используя параметр –uac-admin.
Python 3.4.4, pyinstaller 3.2
Подскажите, плиз, как реализовать запрос админских прав для моего случая?

Флейм » Есть те, кто использует PyPy? » Май 14, 2016 20:49:19

Решил поинтересоваться, есть ли тут люди, которые используют PyPy в своих проектах?
PyPy - реализация интерпретатора Python на подмножестве RPython с Just-In-Time компиляцией(опционально, но по умолчанию используется она).
Т.е. сам PyPy написан на RPython, и он, при создании исполняемого файла, транслирует код RPython в C.
PyPy очень, очень сильно ускоряет математические операции, тем более, если они в циклах.
Вот пример( два скрипта,вычисляющие числа Фибоначчи):
Первый скрипт - рекурсивный метод
from sys import argv
def fib(n):
    if n <= 2:
        return 1
    return fib(n - 1) + fib(n - 2)
n = int(argv[1])
print(fib(n))
Результаты выполнения на моей машине - вычисление числа Фибоначчи для 25 чисел: Python 2.7.11 - real 0m0.085s
PyPy - real 0m0.116s
Второй скрипт(вычисление через цикл):
import sys
def fibonacci(n):
    a = 0
    b = 1
    for i in range(0, n):
	temp = a
	a = b
	b = temp + b
    return a
print(fibonacci(int(sys.argv[1])))
Результаты выполнения на моей машине - вычисление числа Фибоначчи для 50000 чисел: Python 2.7.11 - real 0m0.447s
PyPy - real 0m0.131s
Версия PyPy - 5.1.1
Во втором скрипте я взял такое большое число, т.к. PyPy начинает работать в полную силу при большом количестве циклов. - Он может вычислить число Фибоначчи для 500000 чисел ЗА 5.174s
Выводы делайте сами
PyPy совместим со всеми (или может 1-2 библиотеки имеют проблемы) библиотеками из PyPI, которые ПОЛНОСТЬЮ написаны на Python
Так же имеется совместимость с C модулями, но PyPy тут не поможет со скоростью…
Есть сайт, на котором можно смотреть результаты PyPy в бенчмарках(всё измеряется автоматически) - speed.pypy.org
Если ваши скрипты маленьких размеров - использовать PyPy вам не нужно, т.к. у PyPy при запуске идёт разогрев Just-In-Time компилятора, но для ресурсоёмких задач с вычислениями он очень даже подходит!

Web » sqlalchemy и иньекции » Май 13, 2016 14:16:59

используя sqlalchemy нужно ли беспокоиться об экранировании при запросах или sqlalchemy делает за нас это?

Django » django TimedRotatingFileHandler file preffix » Май 12, 2016 15:07:09

Доброго времени суток, господа!
Хотелось бы сделать логирование по времени и чтоб в преффиксе названия файла была дата.
Сейчач файлы такого вида: myproject.log.2016-05-12_11-37

settings.py

LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'verbose': {
                'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
                'datefmt' : "%d/%b/%Y %H:%M:%S"
            },
            'simple': {
                'format': '%(levelname)s %(message)s'
            },
        },
        'handlers': {
            'file': {
                'level': 'INFO',
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'filename': 'log/myproject.log',
                'when': 'M', # this specifies the interval
                'interval': 1, # defaults to 1, only necessary for other values
                #'backupCount': 10, # how many backup file to keep, 10 days
                'formatter': 'verbose',
            },
        },
        'loggers': {
            'django': {
                'handlers': ['file'],
                'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
            },
            '': {
                'handlers': ['file'],
                'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
            }
        },
    }