часть 1, выгружаем все фото из альбома
Этой статьей мы открываем небольшую серию материалов по VK API. Все что вам понадобится для работы – базовые знания Python.
Для работы мы будем использовать Python третьей версии и модуль VK для работы c api вконтакте. Установить модуль можно через pip:
# Windows pip3 install vk # Debian-based linux sudo pip3 install vk
На *nix системах могут возникнуть проблемы с установкой через pip, поэтому вот еще один способ установки. Скачайте исходники, положите их в удобный каталог и исполните в терминале:
python3 setup.py build sudo python3 setup.py install
Чтобы не нагружать код сторонними библиотеками, для загрузки фото будем использовать базовую urllib.
Для начала залогинимся.
# Импортируем нужные модули from urllib.request import urlretrieve import vk, os, time, math # Авторизация login = '' password = '' vk_id = 'ID_ВАШЕГО_ПРИЛОЖЕНИЯ' session = vk.AuthSession(app_id=vk_id, user_login=login, user_password=password) vkapi = vk.API(session)
Учтите, что для работы с VK API одного только модуля для питона недостаточно, нужно создать еще и приложение на самом сайте.
Для удобства, входными данными будут ссылки на альбомы. Только целиком url не подойдет, нам понадобится id хозяина альбома (группы или человека) и id самого альбома, которые и можно достать из ссылки. К примеру, в https://vk.com/album-54530371_212428070 id владельца (в данном случае сообщества) это -54530371, а id альбома – 212428070. Обратите внимание, если загружать из альбома сообщества, то «-» (дефис) перед id владельца обязателен.
url = input("Введите url альбома: ") # Разбираем ссылку album_id = url.split('/')[-1].split('_')[1] owner_id = url.split('/')[-1].split('_')[0].replace('album', '')
Как вы поняли, мы получаем на вход ссылку на альбом, затем разбираем ее и раскладываем по переменным album_id и owner_id соответствующие id.
Теперь нужно получить количество фото, а также инициализировать переменные для статитстики.
photos_count = vkapi.photos.getAlbums(owner_id=owner_id, album_ids=album_id)[0][‘size’] counter = 0 # текущий счетчик prog = 0 # процент загруженных breaked = 0 # не загружено из-за ошибки time_now = time.time() # время старта
Проблема при загрузке большого количества фото в том, что за один запрос нельзя забрать больше 1000 фото, в то время как в альбоме их может быть десяток тысяч.
Процесс загрузки:
# Создадим каталоги if not os.path.exists('saved'): os.mkdir('saved') photo_folder = 'saved/album{0}_{1}'.format(owner_id, album_id) if not os.path.exists(photo_folder): os.mkdir(photo_folder) for j in range(math.ceil(photos_count / 1000)): # Подсчитаем сколько раз нужно получать список фото, так как число получится не целое - округляем в большую сторону photos = vkapi.photos.get(owner_id=owner_id, album_id=album_id, count=1000, offset=j*1000) # Получаем список фото for photo in photos: counter += 1 url = photo[‘src_big’] # Получаем адрес изображения print('Загружаю фото № {} из {}. Прогресс: {} %'.format(counter, photos_count, prog)) prog = round(100/photos_count*counter,2) try: urlretrieve(url, photo_folder + "/" + os.path.split(url)[1]) # Загружаем и сохраняем файл except Exception: print('Произошла ошибка, файл пропущен.') breaked += 1 continue
И немного статитстики:
time_for_dw = time.time() - time_now print("\nВ очереди было {} файлов. Из них удачно загружено {} файлов, {} не удалось загрузить. Затрачено времени: {} сек.". format(photos_count, photos_count-breaked, breaked, round(time_for_dw,1)))
На этом все! В следующем туториале напишем небольшой скрипт для слежки за пользователем.
В АГУ продолжается обсуждение траектории развития образовательных процессов
16.05.2023
В Астраханском государственном университете имени В. Н. Татищева в рамках программы стратегического развития «Приоритет 2030» проходит проектно-аналитическая сессия. Мероприятие открыла презентация экспертов ФАГНУ «Социоцентр».
Выступление проректора по проектно-инновационной деятельности Евгения Муханова началось с рассказа о том, чем предстоит заниматься участникам ближайшие два дня.
«Как и в прошлом году, сегодня команда „Социоцентра“ приехала, не для того, чтобы провести аудит, проверку или выездную комиссию. Мы здесь, чтобы вместе попробовать подойти к донастройке вашего программного развития», — сказал спикер.
В цели экспертной группы также входят:
- помочь команде развития университета «восстановить» модель функционирования «как есть»;
- обнаружить и зафиксировать «разрывы» между декларируемыми действиями по трансформации университета (в модель «как должно быть») и реальностью;
- при необходимости — помочь скорректировать план действий реализации программы.
Евгений Муханов пояснил, что работа будет проходить в модельном поле: все рабочие понятия оформляются в схемы и модели. Он отметил, что нет неправильных ответов и что участникам, которым предстоит разделиться на секции, будет оказываться методическая поддержка экспертов.
«Мы работаем по группам над тематической областью. Каждая секция имеет свою направленность, стратегический проект. Работая над проблематикой, необходимо сформировать общее понимание темы и взгляда на неё.
Важно отметить, что мы смотрим на университет как на целостную систему. То есть обсуждая отдельный проект, нужно помнить о том, что после мы подходить к нему как к доработке общей программы развития университета», — утвердил проректор по проектно-инновационной деятельности.
После присутствующих познакомили с принципами работы в группе для повышения эффективности, а также перечислили аспекты, которые необходимо удерживать при работе в группе.
Далее участники разделились на секции по направлениям, в рамках которых им предстоит разработать проект и презентовать его. Всего направлений пять:
- Университет как целое и управление программой развития;
- Образовательная политика;
- Научно-исследовательская политика и политика в области коммерциализации разработок;
- Стратегические проекты;
- Партнёрства.
Управление по информационной политике и связям с общественностью
Метки новости
Приоритет 2030
Предыдущая записьВ АГУ подвели итоги первого дня проектно-аналитической сессии
Следующая записьВ АГУ прошёл креативный мастер-класс
ПОХОЖИЕ НОВОСТИ
16мая2023
Митап-встреча «Социальная адаптация и трудоустройство цифровых пенсионеров» состоялась сегодня в АГУ
16мая2023
Представители АГУ принимают участие в образовательном интенсиве ИТМО
16мая2023
В АГУ подвели итоги первого дня проектно-аналитической сессии
15мая2023
В АГУ три дня будут работать эксперты «Социоцентра»
Социальная ссылка — Инструменты — Codefling
Социальная ссылка
Ознакомьтесь с новой версией Social Link здесь.
Сайт, который позволяет пользователю связать свою учетную запись Discord/Steam и получать привилегии или вознаграждения.
Содержание
- Введение
- Мотивация
- Функции
- Начиная
- Требования
- Монтаж
- Настройка CRON
- Планирование работы
- Конфигурация панели мониторинга
Введение
Social Link — это сайт, который позволяет пользователю связать свою учетную запись Discord/Steam и получить привилегии или вознаграждения . Это простой сервис, который проверяет, присутствует ли пользователь в группе Steam и/или на сервере Discord (он также может автоматически назначать роль Discord), а затем может отправлять пользовательские команды через RCON (совместимо с несколькими серверами). Этот проект в первую очередь был сделан для
Особенности
- Steam-аутентификация
- Discord-аутентификация
- Проверка группы Steam
- Проверка гильдии Discord
- Распределение ролей в дискорде
- Отправляет пользовательские команды RCON
- Возможность иметь несколько серверов Rust или команды RCON будут отправлены
- Возможность включить/отключить Steam Group Check / Аутентификация Discord / Назначение роли Discord / Команды RCON
- Панель администратора
- Журналы Discord Webhooks
- Возможность деаутентификации пользователя
- Администратор может отменить аутентификацию пользователя
- Пользовательское имя группы Discord/Steam oxide
- Настройка названия сайта, логотипа, дизайна, ссылок (Discord/группа Steam/магазин)
- Проверка всех пользователей, есть ли они в группе Steam и/или в Discord ( Автоматически и вручную ).
Начало работы
- Ubuntu или Debian
- Nginx
- PHP
- SQLite
- Композитор
- Node.js с npm
- Супервайзер
- VPS с минимум 2 Гб оперативной памяти и 2 ядрами.
Установка
- Загрузите исходный код.
- Перейти в каталог:
компакт-диск Социальная ссылка
- Создайте файл базы данных с:
сенсорная база данных/social-link.sqlite
- Установить:
установка композитора
- Переименуйте или скопируйте env.example в .env :
cp .env.example .env
- Сгенерировать новый ключ приложения
Ключ ремесленника php: сгенерировать
Вы можете найти свой Ключ API Steam здесь.
Настройка входа в Discord:
- Создайте новое приложение здесь
- Перейдите на OAuth3 и добавьте перенаправить ( используйте этот формат: « https://domain.com/discord/callback»).
Настройка входа в ВК:
- Создайте новое приложение здесь
- Перейдите в Управление -> Настройки и добавьте Authorized URI перенаправления: ( используйте этот формат: « https://domain.com/vk/callback»)
Прежде чем продолжить, вы должны изменить «.env», иначе остальное не будет работать.
Эту информацию необходимо изменить в .env , другую информацию необходимо будет изменить на панели инструментов.
DB_DATABASE= # полный путь к вашему файлу базы данных "/path/to/project/database/social-link.sqlite" ADMIN_STEAM_ID= # Первый пользователь, который будет иметь роль администратора (позже у вас будет возможность добавить другого администратора). STEAM_KEY= # Ключ API Steam для аутентификации через Steam. STEAM_REDIRECT_URI= # URL-адрес перенаправления (он должен быть в следующем формате: https://domain.com/auth/steam/callback) # Если вы хотите использовать Discord: DISCORD_CLIENT_ID= # ID КЛИЕНТА для аутентификации через Discord DISCORD_CLIENT_SECRET= # СЕКРЕТ КЛИЕНТА для аутентификации через разногласия (НЕ ТОКЕН-БОТ) DISCORD_REDIRECT_URI= # URL-адрес перенаправления (должен быть в следующем формате: https://domain.com/discord/callback) # Если вы хотите использовать ВК (ВКонтакте) (https://vk.com/apps?act=manage): VKONTAKTE_CLIENT_ID= # идентификатор приложения VKONTAKTE_CLIENT_SECRET= # Ключ безопасности VKONTAKTE_REDIRECT_URI= # URL перенаправления (должен быть в таком формате: https://domain.com/vk/callback)
После завершения файла .env :
Планирование работы
Чтобы отправлять RCON-команды и проверять всех пользователей, находятся ли они в группе Steam и/или в Discord в фоновом режиме, вам необходимо установить Supervisor или использовать такие инструменты, как Forge или Ploi.