Рубрики
Без рубрики

Получение электронной почты и номера телефона для настольного приложения из Google Contacts с помощью Python и Gmail API

Хотя python был создан Гвидо ван Россумом в качестве хобби-проекта в 90-е годы, сейчас он стал самым популярным языком. Благодаря своей способности работать в различных областях и простому синтаксису…

Автор оригинала: Aritra Roy.

Хотя python был создан Гвидо ван Россумом в качестве хобби-проекта в 90-е годы, сейчас он стал самым популярным языком. Благодаря своей способности работать в различных областях и простому синтаксису python теперь используется в анализе больших данных, ML & AI, глубоком обучении, обработке изображений, а также в веб-разработке, разработке игр и так далее. Кроме того, он имеет множество библиотек, которые можно использовать, чтобы легко и быстро выполнить поставленную задачу.

Получение номера телефона и идентификатора электронной почты можно получить от Google contact с помощью их API-сервиса. Чтобы получить доступ к контакту Google, нам нужно именно это разрешение от пользователя через уровень доступа API. Здесь “Gmail API” легко приходит нам на помощь. Хотя Google предоставляет еще два API, он же Contact API версии 3.0(запланирован на закат 15 июня 2021 года ) и People API, с моей точки зрения, “Gmail API” кажется намного проще выполнить эту работу.

Требования:

Мы использовали python для получения номера телефона и идентификатора электронной почты из контактов Google. Для этого требуется следующее — Python 2.6 или выше Инструмент управления пакетами pip Учетная запись Google с включенным Gmail

Процесс:

Шаг 1: Включение API Gmail Перейдите по ссылке ниже, чтобы включить API Gmail — https://developers.google.com/gmail/api/quickstart/python#step_1_turn_on_the 2. Затем нужно будет указать название проекта и нажать на кнопку “Далее”. 3. Следующий шаг-настройка клиента OAuth. Если кто-то хочет получить данные на своем компьютере, ему нужно установить его в качестве “настольного приложения”. В противном случае можно выбрать свой выбор или в соответствии с его требованиями и нажать на кнопку “Создать”. 4. Последний шаг “Включения API Gmail” – это загрузка “Конфигурации клиента”. Обратите внимание, что для успешного включения API необходимо загрузить “Конфигурацию клиента” специально в папку проекта. Шаг 2: Установка клиентской библиотеки Google Мы должны использовать/установить клиентскую библиотеку Google python library для доступа. Чтобы установить его через pip — pip install –upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib Шаг 3: Настройка с помощью кода

1*uzeizDdap_C3gNCRE_69pQ.jpeg
1*J7vrNEM04MMkv8Cg1d4oJA.jpeg
1*_dDakVlZ5vdjsKVaDmXbpw.jpeg
1*b5NLbBwtLCk8MPiyUeNPzw.jpeg
1*a0kLsXYp_BjCpeqW6NZ52g.jpeg

Пример кода, предоставленный клиентом Google

from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']

def main():
    """Shows basic usage of the Gmail API.
    Lists the user's Gmail labels.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('gmail', 'v1', credentials=creds)

    # Call the Gmail API
    results = service.users().labels().list(userId='me').execute()
    labels = results.get('labels', [])

    if not labels:
        print('No labels found.')
    else:
        print('Labels:')
        for label in labels:
            print(label['name'])

if __name__ == '__main__':
    main()

Обратите внимание, что имя проекта(заданное во время включения Gmail API) и имя файла python должны быть одинаковыми. Мы запустили файл python из “Windows PowerShell” — Он откроет окно браузера localhost для доступа к вашей учетной записи Gmail(откуда будут извлечены контакты), и следующие шаги — Выбор одной учетной записи Gmail, из которой будут извлечены контакты, появится предупреждающее сообщение: “Это приложение не проверено”. После этого следует нажать кнопку “Дополнительно”, а затем нажать кнопку ” Перейти к быстрому запуску(небезопасно)” для дальнейшего продолжения. Обратите внимание, что это слово “Быстрый старт” будет заменено именем проекта, если вы выберете другое имя проекта при включении API Gmail (шаг 1). Для разрешения нашей заявки следует выбрать опцию “Разрешить”. Опять же, опция “Разрешить” должна быть выбрана для того, чтобы наше приложение могло видеть и загружать наши контакты из Google Contacts. После завершения всех предыдущих шагов появится сообщение:

1*weYTS39nfhfuIIRayvAkjw.jpeg
1*0k6qC4yFYkN-G1LIQBBEHw.jpeg
1*p6uqY2Xq5zQDAzlfWNurjQ.jpeg
1*sq9MZ0E26iWZJ7YtoqaC9Q.jpeg

Код для получения электронной почты и телефона Нет.

from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import json

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/contacts.readonly']

def main():
    """Shows basic usage of the People API.
    Prints the name of the first 10 connections.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('people', 'v1', credentials=creds)

    # Call the People API
    print('List of all name with email id and phone number:\n')
    results = service.people().connections().list(
        resourceName='people/me',
        pageSize=1500,
        personFields='names,emailAddresses,phoneNumbers').execute()
    connections = results.get('connections', [])
    i=1
    for person in connections:
        names = person.get('names', [])
        emails = person.get('emailAddresses', [])
        phones = person.get('phoneNumbers')

        if names and emails:
            name = names[0].get('displayName')
            email = emails[0]['value']
            phone = phones[0]['value']
            print(f"\n{i}. {name} - {email}     {phone}")
            i+=1

if __name__ == '__main__':
    main()

Все шаги до “аутентификации”, то есть ранее описанный процесс 1, должны быть выполнены. После этого, если вы запустите приведенный выше код, который даст следующий результат— Обратите внимание, что все имена, их идентификаторы электронной почты и номера телефонов были извлечены из “Контактов Google”, связанных с этим аккаунтом Google.

1*2izvPyy8b40lLyw0jRnHbw.jpeg

Примечание:

Человек не может получить все электронные письма и телефонные номера из контактов Google, если он не получит разрешения от пользователя через уровень доступа API. Это простой способ получить все идентификаторы электронной почты и номера телефонов из “Контактов Google” без “Django”. Можно манипулировать результатами в соответствии со своим выбором, следует ли извлекать только имя-идентификатор электронной почты или имя-номер телефона или имя-и то, и другое, или что-нибудь еще, изменив в соответствии с его требованиями. Вывод может быть использован в любой дальнейшей работе, например, можно отправить почту с помощью голосового помощника или сделать телефонный звонок. “Конфигурация клиента” будет загружена в виде учетных данных.json Все детали будут сохранены в токене.файл pickle и никакого дальнейшего извлечения не будет происходить, если нет никаких изменений. Все файлы должны находиться в одном и том же пути к папке для процесса, который этот проект был выполнен в Windows 10. Но можно и дальше продвигать его вперед для Linux и iOS.

Спасибо, что прочитали. Я надеюсь, что вы нашли этот “Процесс извлечения электронной почты и телефона” полезным. Пожалуйста, оставляйте любые комментарии, чтобы сообщить нам свои мысли.

следуйте за мной:

GitHub — https://github.com/aritraroy24 LinkedIn — https://www.linkedin.com/in/aritraroy24/