
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

Pavel
06.12.2016
11:05:54

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
Сделай print(api.messages.get(out=1, offset=i, count=50)) и посмотри, что тебе приходит.

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

Dmitry
06.12.2016
11:07:47

Pavel
06.12.2016
11:08:26

Dmitry
06.12.2016
11:10:46

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

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 попробуй

Dmitry
06.12.2016
11:27:44

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

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
все понял это ответы

Pavel
06.12.2016
11:38:10
{'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}
вот и появились словари с ключами items и count, про которые я говорю уже больше часа.

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

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

Andrew
06.12.2016
11:38:55

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.

Pavel
06.12.2016
11:41:04

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

Igor
06.12.2016
11:44:36
я тоже, честно, уже нихуя не понимаю

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

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

Zart
06.12.2016
11:46:13

Dmitry
06.12.2016
11:49:25

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

Dmitry
06.12.2016
11:52:17

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.

Zart
06.12.2016
11:53:09
это относительный импорт

Pavel
06.12.2016
11:54:39

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
ну мне любопытно не "видимо", а поконкретнее
Эта группа больше не существует