@python_beginnersЭта группа больше не существует

Страница 880 из 1885
Vadim
06.12.2016
11:03:45
https://docs.python.org/3/library/functions.html#repr тебе в помощь.

Pavel
06.12.2016
11:04:25
да! небось статью на хабре кто-то написал
это какая-то убогая статья, судя по всему.

Igor
06.12.2016
11:05:25
это какая-то убогая статья, судя по всему.
как и 80% остального контента у ТМ

Pavel
06.12.2016
11:05:54
как и 80% остального контента у ТМ
но два человека подряд ровно с одними и теми же симптомами - это перебор.

Google
Dmitry
06.12.2016
11:06:01
for my_message in api.messages.get(out=1, offset=i, count=2): print(type(my_message)) ^^тут я пытаюсь читать по 2 сообщения соответственно если сделать json.dump(api.messages.get(...)) будут два словаря через запятую

никто никакую статью не писал...

Pavel
06.12.2016
11:06:22
for my_message in api.messages.get(out=1, offset=i, count=2): print(type(my_message)) ^^тут я пытаюсь читать по 2 сообщения соответственно если сделать json.dump(api.messages.get(...)) будут два словаря через запятую
Результат После успешного выполнения возвращает объект, содержащий число результатов в поле count и массив объектов, описывающих диалоги, в поле items.

Сделай print(api.messages.get(out=1, offset=i, count=50)) и посмотри, что тебе приходит.

Vadim
06.12.2016
11:07:13
Repr сделай.

Pavel
06.12.2016
11:08:26
это другой count, там их несколько - там есть count внутри словаря...
пожалуйста, добавь в скрипт строку print(api.messages.get(out=1, offset=i, count=50)) и покажи её вывод.

Dmitry
06.12.2016
11:10:46
Сделай print(api.messages.get(out=1, offset=i, count=50)) и посмотри, что тебе приходит.
{count: ... , "items":[{}]}, {count: ... , "items":[{}]}, {count: ... , "items":[{}]}, ...

Pavel
06.12.2016
11:11:08
первое же блять слово в строке: count.

Dmitry
06.12.2016
11:11:55
да я понимаю... но мне нужен конкретный "items"

тут словари через запятую

а мне нужно итерировать по словарям

Google
Igor
06.12.2016
11:15:47
тогда так messages = api.messages.get(..) for message in messages: message['items'] # вот те словарик

не?

Dmitry
06.12.2016
11:16:48
print(type(api.messages.get(out=1, offset=i, count=50))) - он говорит, что это словарь, а на деле словари через запятую

Pavel
06.12.2016
11:17:39
vk_api библиотека?

Dmitry
06.12.2016
11:17:52
Igor
06.12.2016
11:18:28
она почти не документирована

типа читайте оригинальную vk api

https://vk.readthedocs.io/en/latest/

https://vk.com/dev/messages.get

Результат После успешного выполнения возвращает объект, содержащий число результатов в поле count и массив объектов, описывающих личные сообщения, в поле items.

бля, стоп

такое чувство, будто он делает [vk.messages.get() for _ in range(5)]

раз там такое {count: ... , "items":[{}]}, {count: ... , "items":[{}]}, {count: ... , "items":[{}]}, ...

или так и надо?

Pavel
06.12.2016
11:20:38
такое чувство, будто он делает [vk.messages.get() for _ in range(5)]
я очень подозреваю, что эта vk как-то маскирует это дело, и отдаёт не dict, а какую-то шнягу.

Dmitry
06.12.2016
11:21:00
так и смысл, что если бы ко всему это снаружи прикрутить {}

то полчился бы список словарей

.
06.12.2016
11:21:53
Гайс, нужно сделать ранжирование статей, по кол-ву просмотром и комментов, какой самый оптимальный вариант? Просто добавить колонку в бд и докидывать значения при каждом просмотре и комменте?

Dmitry
06.12.2016
11:21:56
что мне как раз и нужно

Igor
06.12.2016
11:24:10
охх. короче, ты хочешь делать запросы по 50 сообщений несколько раз? а потом что с ними сделать? запихнуть в один общий объект?

Google
Dmitry
06.12.2016
11:24:38
мне нужно сказать 300к сообщений

*скачать

Igor
06.12.2016
11:25:48
аэыыы. т.е. у тебя all_messages = [] for i in range(10): response = api.messages.get(out=1, offset=i, count=50) messages = response['items'] all_messages.extend(messages) че-т типа того должно быть. но, вероятно, надо делать не offset=i, а offset=i*50

по доке не совсем понятно, как поступает vk с оффсетом. но по идее он должен делать оффсет по одному сообщению, а не по целой пачке (кол-ву, указанному в count)

поэтому скорее все-таки i*50, но я не уверен

если будешь в итоге кучу дублей получать, то i*50 попробуй

Igor
06.12.2016
11:28:09
проверь, не получается ли так, что не скачивается последнее сообщение диалога

опять же лишь предположение, но оффсеты с нуля начинаются обычно

Pavel
06.12.2016
11:31:17
Гайс, нужно сделать ранжирование статей, по кол-ву просмотром и комментов, какой самый оптимальный вариант? Просто добавить колонку в бд и докидывать значения при каждом просмотре и комменте?
Только две колонки (кол-во просмотров, кол-во комментов) (ну или количество комментов выгребать из таблицы комментариев). Потому что если завтра покажется, что один комментария стоит пяти просмотров, то ранг очень просто пересчитать будет, нежели хранить одно число.

Dmitry
06.12.2016
11:31:32
проблема в том, что vk.api.messages.get при count>1 возвращает строку

Andrew
06.12.2016
11:32:47
проблема в том, что vk.api.messages.get при count>1 возвращает строку
https://vk.com/dev/messages.get?params[out]=1&params[offset]=1&params[count]=20&params[filters]=0&params[v]=5.60 вот что он возвращает

Igor
06.12.2016
11:35:03
проблема в том, что vk.api.messages.get при count>1 возвращает строку
арр last_message = api.messages.get(out=1, offset=0, count=1) last_3_messages = api.messages.get(out=1, offset=0, count=3) last_message_offset_1 = api.messages.get(out=1, offset=1, count=1) print('%r' % last_message) print('%r' % last_3_messages) print('%r' % last_message_offset_1)

Pavel
06.12.2016
11:36:12
а ещё можно всё-таки запустить какой-нибудь дебагер и глазами посмтреть, что происходит.

Igor
06.12.2016
11:36:33
дебаггер - идеально, да

но челу с ним еще разбираться придется

Dmitry
06.12.2016
11:36:59
арр last_message = api.messages.get(out=1, offset=0, count=1) last_3_messages = api.messages.get(out=1, offset=0, count=3) last_message_offset_1 = api.messages.get(out=1, offset=1, count=1) print('%r' % last_message) print('%r' % last_3_messages) print('%r' % last_message_offset_1)
{'items': [{'id': 328722, 'user_id': 5660622, 'read_state': 1, 'title': ' ... ', 'random_id': 175523984, 'out': 1, 'body': 'не спорь со мной', 'date': 1481016330}], 'count': 87795} {'items': [{'id': 328722, 'user_id': 5660622, 'read_state': 1, 'title': ' ... ', 'random_id': 175523984, 'out': 1, 'body': 'не спорь со мной', 'date': 1481016330}, {'id': 328720, 'user_id': 5660622, 'read_state': 1, 'title': ' ... ', 'random_id': 916325330, 'out': 1, 'body': 'у тебя норм', 'date': 1481015992}, {'id': 328719, 'user_id': 5660622, 'read_state': 1, 'title': ' ... ', 'random_id': 466694194, 'out': 1, 'body': ')', 'date': 1481015975}], 'count': 87795} {'items': [{'id': 328720, 'user_id': 5660622, 'read_state': 1, 'title': ' ... ', 'random_id': 916325330, 'out': 1, 'body': 'у тебя норм', 'date': 1481015992}], 'count': 87795}

Andrew
06.12.2016
11:37:11
items это массив

Roman
06.12.2016
11:37:19
не спорь со мной у тебя норм

как я выпал

Google
Andrew
06.12.2016
11:37:23
несколько их быть не должно

Igor
06.12.2016
11:37:39
не понял, в чем проблема

и в случае, если count=1, и в случае, если count>1, тебе возвращается items: [{}, {}, {}]

Andrew
06.12.2016
11:38:03
все понял это ответы

Dmitry
06.12.2016
11:38:33
это другой count

Igor
06.12.2016
11:38:44
а какой count ты хочешь-то ааааа

Andrew
06.12.2016
11:38:55
это другой count
читай документацию, там и примеры есть

Admin
ERROR: S client not available

Dmitry
06.12.2016
11:40:34
есть count, который указывается при получении api = количество сообщений, count в словаре же показывает номер сообщения

Igor
06.12.2016
11:40:40
нет

count в результате показывает кол-во сообщений в этом диалоге

очевидно

> Результат > После успешного выполнения возвращает объект, содержащий число результатов в поле count и массив объектов, описывающих личные сообщения, в поле items.

Igor
06.12.2016
11:41:22
жесть :(

ты делаешь api.messages.get(), она возвращает ВСЕГДА конструкцию вида { count: 12345, # кол-во сообщений в диалоге items: [ # список! даже если один элемент всего! { id: .., date: .., .., body: .. }, # словарь! содержит инфу об ОДНОМ сообщении { id: .., date: .., .., body: .. }, # еще словарь! { id: .., date: .., .., body: .. } # еще словарь! # и так ты там получаешь столько словарей, сколько указал в count при вызове функции ]

Zart
06.12.2016
11:44:07
http://bash.im/quote/442500 дебилы, блядь...

Pavel
06.12.2016
11:44:18
Я уже нихуя не понимаю. Dmitry Torshin, [06.12.16 16:10] [In reply to Pavel Zagrebelin] {count: ... , "items":[{}]}, {count: ... , "items":[{}]}, {count: ... , "items":[{}]}, ... было вот так, теперь вообще всё по-другому.

Igor
06.12.2016
11:44:22
я забыл кавычки для ключей в словарях, получился json какой-то, блядь, но надеюсь все меня поняли

Google
Dmitry
06.12.2016
11:44:55
я сам уже запутался

Igor
06.12.2016
11:44:57
но мне кажется, что если сделать вот так:

аэыыы. т.е. у тебя all_messages = [] for i in range(10): response = api.messages.get(out=1, offset=i, count=50) messages = response['items'] all_messages.extend(messages) че-т типа того должно быть. но, вероятно, надо делать не offset=i, а offset=i*50

Pavel
06.12.2016
11:45:06
http://bash.im/quote/442500 дебилы, блядь...
икея-книга. вот тебе строчки кода - а дальше ебись сам.

Igor
06.12.2016
11:45:12
(только еще offset=i*50) то все будет заебись

Zart
06.12.2016
11:46:13
мне нужно сказать 300к сообщений
на этом этапе надо выкидывать нахер ту обёртку вокруг апи и брать нормальный фреймворк для спайдеров

Igor
06.12.2016
11:50:44
на масштабах типа 300к лучше не хранить это все в памяти, а дампить сразу в файл

но до этого еще далеко, похоже(

Dmitry
06.12.2016
11:52:17
на этом этапе надо выкидывать нахер ту обёртку вокруг апи и брать нормальный фреймворк для спайдеров
толку, если к апи максимум 3 запроса в секунду... Да нет, бд я поднял уже

Roman
06.12.2016
11:52:37
Гайс, из-за чего в проекте нельзя импортировать`` from forms import LoginForm вот так `` Приходится вот так импортировать from app.models.forms

pulat
06.12.2016
11:52:47
кто нид работал pyinstaller м. После компиляции выдает такую ошибку Import Error: px not found.

Dmitry
06.12.2016
11:56:27
execute позволяет делать messages.get?
execute Универсальный метод, который позволяет запускать последовательность других методов, сохраняя и фильтруя промежуточные результаты. ну а мне больше ничего не надо по сути

Zart
06.12.2016
12:02:27
а для какой конечной цели все эти люди дёргают вк апи?

Igor
06.12.2016
12:02:43
ну чел вон хочет 300к сообщений скачать, для истории/бекапов, видимо

Zart
06.12.2016
12:03:03
ну мне любопытно не "видимо", а поконкретнее

Страница 880 из 1885

Эта группа больше не существует Эта группа больше не существует