x330122
Участник
- Сообщения
- 357
- Реакции
- 152
Привет народ, в этом гайде я вам расскажу как сделать виджет для группы вконтакте наподобии такого:
Для создания сей чуда я использовал Python 2.7 и VK Api.
Что вам надо:
Python 2.7
VK Api
pip
Linux сервер (для хостинга)
LiveWidget в группе ВК
Установка:
Для начала надо подготовить питон для получения данных с сервера.
Выполните следующие команды: pip install python-valve pip install vk
Как все будет установлено, создаем .py файл и вставляем код(он будет ниже).
(Желательно)Установить все это детище на любой хостинг.
Принцип работы:
Виджет парсит статус с профиля вконтакте и передает его пользователю, следовательно работал я через выставление онлайна в статус профиля.
Подготовим ВК для работы со скриптом:
В администрировании сообщества, установите в нем LiveWidget.
После установки, на главной странице сообщества нажмите Открыть приложение
У вас откроется окно с типом виджета, там открываете Редактор кода туда вставьте код (ниже) и сохраните и опубликуйте:
После публикации, сделайте виджет публичным, в настройках приложения сделайте видимость приложения: Для всех пользователей
Вроде все. Ссылки на скрипты выложу на пейстбин если будет проблема с табуляцией :pardon:

Что вам надо:
Python 2.7
VK Api
pip
Linux сервер (для хостинга)
LiveWidget в группе ВК
Установка:
Для начала надо подготовить питон для получения данных с сервера.
Выполните следующие команды: pip install python-valve pip install vk
Как все будет установлено, создаем .py файл и вставляем код(он будет ниже).
(Желательно)Установить все это детище на любой хостинг.
Принцип работы:
Виджет парсит статус с профиля вконтакте и передает его пользователю, следовательно работал я через выставление онлайна в статус профиля.
Подготовим ВК для работы со скриптом:
- Для начала необходимо создать приложение в ВК(тут)
- Платформу выберите Standalone приложение
- В настройках приложения переключите статус на Включено
- Далее скопируйте ID приложения и запишите его куда либо.
- Далее необходимо получить токен для изменения статуса профиля
- В адресную строку напшите эту строку:
-
C-подобный:
oauth.vk.com/authorize?client_id=<ИД ПРИЛОЖЕНИЯ>&display=page&scope=status,offline&response_type=token&v=5.84&state=123456
- Затем в адресной строке у вас будет токен для изменения статуса профиля.
- Всё, его можно скопировать в блокнот на время чтобы вставить в .py скрипт
C-подобный:
import requests
import json
import time
import valve.source
import valve.source.a2s
import valve.source.master_server
playersnum = ""
import vk
import time
session = vk.Session(access_token='ТУТ ТОКЕН')
api = vk.API(session)
with valve.source.master_server.MasterServerQuerier() as msq:
try:
address = ("<ИП АДРЕСА>", <ПОРТ>)
with valve.source.a2s.ServerQuerier(address) as server:
info = server.info()
players = server.players()
playersnum = "{player_count}/11".format(**info)
print(playersnum)
except valve.source.NoResponseError:
print "Master server request timed out!"
def infinity():
while True:
yield
for _ in infinity():
with valve.source.master_server.MasterServerQuerier() as msq:
try:
address = ("46.174.52.18", 27237)
with valve.source.a2s.ServerQuerier(address) as server:
info = server.info()
players = server.players()
playersnum = "{player_count}/11".format(**info)
print(playersnum)
except valve.source.NoResponseError:
print "Master server request timed out!"
api.status.set(text=playersnum, version="5.84")
time.sleep(35)
- Возьмите код из спойлера выше и вставьте его в .py скрипт. Можно использовать IDLE редактор и вставить код туда.
- Далее вставьте данные которые необходимы для работы скрипта, а именно: Токен из адресной строки,IP сервера,Порт сервера,id страницы профиля
- Далее запустите скрипт, после запуска в статус должно установится: кол-во игроков/11
- Если все работает, приступаем к настройке виджета.
Если что-то не запускается проверьте правильность ввода данных, IP и порта. порт должен быть написан без скобок.
Настраиваем виджет:
В администрировании сообщества, установите в нем LiveWidget.
После установки, на главной странице сообщества нажмите Открыть приложение
У вас откроется окно с типом виджета, там открываете Редактор кода туда вставьте код (ниже) и сохраните и опубликуйте:
C-подобный:
var gid = id вашей группы; // id группы
var wall = API.wall.get({ // Получаем стену группы
owner_id: -gid,
count: 1
}).items;
// Переделываем записи под ячейки таблиц
var i = wall.length;
var text = "";
var status = API.users.get({
user_ids: "ТУТ ID СТРАНИЦЫ",
fields: "status"
});
while (i) {
i = i - 1;
text = wall[i].text;
if (!text) text = "";
text = text.split("\n")[0].substr(0, 50); // Обрезаем текст по первой строке и 50 символов
if (!text) text = "Нет текста";
wall.splice(i, 1, [{
text: text,
}, {
}]);
}
return {
"title": "Наши сервера",
"title_counter": 1,
"rows": [{
"title": "Заголовок",
"button": "Играть",
"button_url": "ссылка на кнопку",
"descr": status[0]["status"] + " сейчас играют на сервере",
"cover_id": "71072365_191117",
}],
"more": "Тут ссылка",
"more_url": "Ссылка",
};
После публикации, сделайте виджет публичным, в настройках приложения сделайте видимость приложения: Для всех пользователей
Вроде все. Ссылки на скрипты выложу на пейстбин если будет проблема с табуляцией :pardon:
Последнее редактирование: