Получение данных через API VK на Python 3.8

Подскажите пожалуйста, как сделать так чтобы при вводе либо самого id номера или полного адреса с протоколом или без, я всегда получал нужные данные ну скажем имя и фамилию нужного пользователя вконтакте???

Например ввожу в поле графического интерфейса: https://vk.com/id1 получаю: Павел Дуров. Либо ввожу в поле графического интерфейса: 1 получаю тоже самое: Павел Дуров. Либо ввожу в поле графического интерфейса: vk.com/id1 получаем также: Павел Дуров.


Ответы (1 шт):

Автор решения: Стас

Вот это регулярное выражение (только для числовых id)

(http:\/\/|https:\/\/)?(vk\.com\/)?(\/?id)?(\d+)

подходит под разные вариации ссылки на аккаунт ВК. Если ссылка будет неверна синтаксически или будет являться ссылкой на другой ресурс, то выражение не даст совпадений.


Подробнее в коде:

import re

reg = re.compile("""(http:\/\/|https:\/\/)?(vk\.com\/)?(\/?id)?(\w+)""")

urls = [
    "http://vk.com/id132",
    "https://vk.com/id451",
    "vk.com/id100",
    "/id832",
    "id194",
    "38",
    "vkcom/id123",
    "google.com/id234980",
    "/idQWERTY"
]

for url in urls:
    result = reg.match(url)
    aId = int(result.group(4) if result else -1)
    print("'{0}' -> {1}".format(url, aId))

OUTPUT:

'http://vk.com/id132' -> 132
'https://vk.com/id451' -> 451
'vk.com/id100' -> 100
'/id832' -> 832
'id194' -> 194
'38' -> 38
'vkcom/id123' -> -1
'google.com/id234980' -> -1
'/idQWERTY' -> -1
→ Ссылка