Комментарии 7
photo.append(len(post['attachments']))
В attachments могут быть не только фотографии. Там вообще все аттачи к посту: фото, видео, аудио и тд.
Неплохо, остается визуализировать и проанализировать)
Непонятно зачем было использовать python, если в Google Spreadsheets есть встроенный Apps Script. При его использовании:
Не нужно выполнять аутентификацию на сервисах Google для доступа к Spreadsheet;
Не потребуется отдельный сервер;
Запуск выполнения может выполняться автоматически таймером;
Не нужны дополнительные библиотеки.
Разработка проводится на js.
Так как у меня аналогичные скрипты, то отвечу за себя
Никакой проблемы в аутентификации нет .
Запуск локальный и руками, то есть прям кнопку нажимаю запуска скрипта когда требуется
Предположу, что в рамках задачи сбор по таймеру не требовался, а если бы даже сбор скажем раз в месяц, то опять же можно и по будильнику скрипты запустить, если не хочется разбираться с тем, что не особо доставляет проблем. Если нужен таймер, то смотрим в сторону Serveless в Яндекс.Облаке (облачные функции, триггер по времени)
В чем проблема дополнительных библиотек?
Зачем разбираться как работает Apps Script , какие там ограничения, да еще и js нужен ? Временные затраты на изучение не соизмеримы с тем эффектом, который можно получить (при условии его наличия)
С учетом ограничений самих таблиц бывает недостаточно размера таблиц и приходится считать сводные таблицы в питоне, а потом уже записывать их в Google Sheets для конечного заказчика . Скорость работы с таблицами в питоне через pandas будет гораздо быстрее скорости работы Apps Script
Ваша рекомендация в сторону Apps Script не предлагает решение конкретных проблем, возникших у автора в статье, так как их особо и не было, а то что вы привели списком - не проблемы.
У меня не возникло трудностей при написание кода. Ваше предложение может быть и решила мою задачу, не погружен в Apps Script. Однако дополнительно разбираться в js затратное мероприятия по времени.
df['date']= [datetime.fromtimestamp(df['date'][i]) for i in range(len(df['date']))]
Вот тут проще и наверное быстрее df['date'] = pd.to_datetime(df['date'], unit='s')
https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html
В методе API VK wall.get параметр 'count' можно до 100 установить (сейчас у вас 10).
Если захочется ускорять этот процесс - смотрите в сторону VK Exexute , если еще ускорять, то через несколько токенов от пользователей (если нужна расширенная статистика, то нужно всех будет добавить в админы), если еще ускорять, то собирать асинхронно (для себя открыл import grequests
и сбор обычной статистики постов в группах с 10к-15к постов занимает 5 секунд).
Скорость сбора расширенной статистики удалось разогнать до 700 постов в секунду (через vk execute) при условии большого сбора постов. Вынес часть наработок в итоге в пользовательский интерфейс c графиками - https://hitalama-aea54.web.app/
Парсинг данных через api vk и google sheets api на python