Библиотека LinkedIn API Python

Linkedin — это влиятельная социальная сетевая платформа, связанная с бизнесом, которая позволяет людям из разных мест, культур и отраслей создавать и расширять свои сети, поэтому LinkedIn является одним из важных инструментов в любом мешке успеха.

Профессиональные организации и сотрудники также сегодня рассматривают Linkedin как основную социальную платформу для своего бизнеса, организации используют LinkedIn для поиска талантливых людей, а талантливые люди заботятся о своих профилях и деятельности, чтобы быть найденными лучшей организацией.

Чтобы сделать все это легко и быстро для организаций и сотрудников, существует множество инструментов, которые взаимодействуют с API Linkedin и возвращают вам результат за несколько секунд. Одним из таких инструментов является Linkedin Python API Давайте погрузимся в него!

Оглавление 📒

  • Что такое LinkedIn Python API? ❓
  • Начало работы ▶️
  • Получение информации о профиле ℹ️
  • Управление связями 🌐
  • Получение и ответ на сообщения 💬.
  • Что дальше? ⏭

Что такое Linkedin Python API? ❓

Python обертка для Linkedin API, которая поможет вам взаимодействовать с LinkedIn API из ваших собственных скриптов, чтобы делать различные вещи, такие как отправка сообщений, поиск профилей, получение работы и т.д. Самое интересное, что все, что вам нужно, это обычный аккаунт LinkedIn, без создания официального приложения LinkedIn.

Перед использованием этого проекта, пожалуйста, ознакомьтесь с Условиями и положениями и Юридическим уведомлением.

Начало работы ▶️

⚠️ Требуется Python >= 3.6.

Проверьте установку python.

Для установки пакета выполните следующую команду:

pip3 install linkedin-api
Войти в полноэкранный режим Выйти из полноэкранного режима

Пример использования

from linkedin_api import Linkedin

# Authenticate using any Linkedin account email and password
try:
    api = Linkedin('me@mail.com', 'password')
    profile = api.get_profile('muhammedmoussa')
    print(profile)
except:
  print("An exception occurred")
Войти в полноэкранный режим Выйти из полноэкранного режима

Пример ответа на выборку профиля.

{
  "summary": "...",
  "industryName": "Financial Services",
  "lastName": "Moussa ✪",
  "address": "Hurghada, Egypt",
  "locationName": "Egypt",
  "student": false,
  "geoCountryName": "Egypt",
  "geoCountryUrn": "urn:li:******",
  "geoLocationBackfilled": false,
  "elt": false,
  "birthDate": {},
  "industryUrn": "urn:li:fs_industry:43",
  "firstName": "Muhammed ",
  "entityUrn": "urn:li:fs_profile:ACoAABT1wOkBUgS77T0NG2puPbStCWKVLIJHUaE",
  "geoLocation": {},
  "geoLocationName": "Hurghada, Al Bahr al Ahmar",
  "location": {},
  "headline": "JavaScript Developer at Paymob",
  "displayPictureUrl": "https://media-exp2.licdn.com/dms/image/C5603AQHwEFZkUOXalw/profile-displayphoto-shrink_",
  "img_100_100": "100_100/0/1647527431537?e=1663804800&v=beta&t=ILGlsVPFkYE6ScB9IXx8JX1o5j4SqVCFGVRlKgPPpmg",
  "img_200_200": "200_200/0/1647527431537?e=1663804800&v=beta&t=VfEVqlmBJPPgan1tBguYDmRHPTTHSgcY83fSp7GNd-E",
  "img_400_400": "400_400/0/1647527431537?e=1663804800&v=beta&t=zN_GOz0Y4PG3ZZMa2xqpNAyg704CE5qkP-_m-wyBl3w",
  "img_800_800": "800_800/0/1647527431537?e=1663804800&v=beta&t=k7971X7dfIT-iY-Ng0QNuInX74BhahiRviMyZESBW8w",
  "profile_id": "ACoAABT1wOkBUgS77T0NG2puPbStCWKVLIJHUaE",
  "profile_urn": "urn:li:fs_miniProfile:ACoAABT1wOkBUgS77T0NG2puPbStCWKVLIJHUaE",
  "member_urn": "urn:li:member:351650025",
  "experience": [],
  "education": [],
  "languages": [],
  "publications": [],
  "certifications": [],
  "volunteer": [],
  "honors": [],
  "projects": []
}
Войти в полноэкранный режим Выход из полноэкранного режима

Получение сведений о профиле ℹ️

Пакет имеет набор магических методов для взаимодействия с данными профиля LinkedIn, в дополнение к методу get_profile(), упомянутому выше, ниже приведен список некоторых из этих методов.

from linkedin_api import Linkedin

try:
    api = Linkedin('me@mail.com', 'password')

    # Getting profile skills using Linkedin public profile id
    skills = api.get_profile_skills('muhammedmoussa')
    print(skills)

    # Getting profile contact info using Linkedin public profile id
    contact_info = api.get_profile_contact_info('muhammedmoussa')
    print(contact_info)

    # Getting profile badges using Linkedin public profile id
    badges = api.get_profile_member_badges('muhammedmoussa')
    print(badges)

except:
  print("An exception occurred")
Войти в полноэкранный режим Выйти из полноэкранного режима

Для лучшего представления о плагине ниже приведен пример ответа на эти методы.

// skills
[
  {"name": "JavaScript"},
  {
    "name": "TypeScript",
    "standardizedSkillUrn": "urn:li:fs_miniSkill:50517",
    "standardizedSkill": {
      "name": "TypeScript",
      "entityUrn": "urn:li:fs_miniSkill:50517"
    }
  },
  {"name": "Node.js"},
  {"name": "MongoDB"},
  {"name": "Python"},
  ...
]

// contact_info
{
   "email_address":"muhammedmoussa@hotmail.com",
   "websites":[
      {
         "url":"https://muhammedmoussa.github.io/",
         "label":"PERSONAL"
      }
   ],
   "twitter":[
      {
         "name":"muhammedMoussa",
         "credentialId":"urn:li:member:351650025;345345825"
      }
   ],
   ...
}

// badges
{
   "premium":false,
   "influencer":false,
   "entityUrn":"urn:li:fs_memberBadges:******",
   "openLink":false,
   "jobSeeker":false,
   "$type":"com.linkedin.voyager.identity.profile.MemberBadges"
}
Войти в полноэкранный режим Выход из полноэкранного режима

Управление соединениями 🌐

Пакет также имеет набор магических методов для управления и контроля различных сетевых соединений, таких как добавление, удаление существующих соединений, получение и принятие приглашений, а также список некоторых из этих методов.

from linkedin_api import Linkedin

try:
    api = Linkedin('me@mail.com', 'password')

    # Send connection request to a given profile id, will return a boolean.
    api.add_connection('muhammedmoussa')

    # Remove a connection with a given profile id, will return a boolean.
    api.remove_connection('muhammedmoussa')

    # Fetch connection invitations for the currently logged in user with start and limit params.
    invitations = api.get_invitations(start=0, limit=3)
    print(invitations)

    # Unfollow a given profile id, will return a boolean.
    api.unfollow_entity('muhammedmoussa')

except:
  print("An exception occurred")
Войти в полноэкранный режим Выход из полноэкранного режима

Образец ответа при получении приглашений.

[
  {
    "mailboxItemId": "*******",
    "toMemberId": "*******",
    "fromMember": {
      "memorialized": false,
      "firstName": "Muhammed ",
      "lastName": "Moussa",
      "entityUrn": "urn:li:fs_miniProfile:******",
      "publicIdentifier": "muhammedmoussa",
      "trackingId": "P8mZOe9HRLO5L84xOoN16g=="
    },
    "invitee": {},
    "invitationType": "PENDING",
    "entityUrn": "urn:li:fs_relInvitation:6954589454917320704",
    "toMember": {},
    "inviterActors": [],
    "sentTime": 1658103366339,
    "customMessage": false,
    "sharedSecret": "******",
    "unseen": true
  }
]
Войти в полноэкранный режим Выход из полноэкранного режима

Получение и ответ на сообщения 💬.

Наконец, пакет также имеет набор магических методов для работы с разговорами, такими как получение и отправка сообщений, вот список некоторых из этих методов ниже.

from linkedin_api import Linkedin

try:
    api = Linkedin('me@mail.com', 'password')

    # Fetch list of conversations logged in user. return list.
    conversations = api.get_conversations()
    print(conversations)

    # Fetch conversation (message thread) details for a given LinkedIn profile. return dictionary.
    api.get_conversation_details('urn:li:fs_miniProfile:********')

    # Send a message to a given conversation. return boolean
    api.send_message('Hello There!', 'urn:li:fsd_conversation:********')

    # Send `seen` to a given conversation. return boolean.
    mark_conversation_as_seen('urn:li:fsd_conversation:********')

except:
  print("An exception occurred")
Войти в полноэкранный режим Выход из полноэкранного режима

Образец ответа при получении сообщений.

{
  "metadata": {
    "unreadCount": 0
  },
  "elements": [
    {
      "dashEntityUrn": "urn:li:fsd_conversation:*****",
      "notificationStatus": "ACTIVE",
      "read": true,
      "groupChat": false,
      "totalEventCount": 2,
      "unreadCount": 0,
      "lastActivityAt": 1658148419804,
      "firstMessageUrn": "urn:li:fs_event:(*****,2-MTY1ODEwNDYyNzczOGI4ODE2Mi0wMDQmY2I0M2UwZDctZmM5ZS00NmY0LTg3OWQtNGVhMGIyYzgxZmM1XzAxMw==)",
      "backendUrn": "urn:li:messagingThread:*****",
      "receipts": [
        {
          "fromEntity": "urn:li:fs_miniProfile:******",
          "seenReceipt": {
            "seenAt": 1658148419629,
            "eventUrn": "urn:li:fs_event:(*****,******)"
          },
          "fromParticipant": {
            "string": "urn:li:member:351650025"
          }
        }
      ],
      "lastReadAt": 1658148672641,
      "archived": false,
      "blocked": false,
      "entityUrn": "urn:li:fs_conversation:*****",
      "sdkEntityUrn": "urn:li:msg_conversation:(urn:li:fsd_profile:******,*****)",
      "viewerCurrentParticipant": true,
      "featureTypes": [],
      "withNonConnection": false,
      "muted": false,
      "events": [
        {
          "createdAt": 1658148419796,
          "reactionSummaries": [],
          "dashEntityUrn": "urn:li:fsd_message:******",
          "quickReplyRecommendations": [],
          "entityUrn": "urn:li:fs_event:(*****,******)",
          "eventContent": {
            "com.linkedin.voyager.messaging.event.MessageEvent": {
              "messageBodyRenderFormat": "DEFAULT",
              "body": "",
              "attributedBody": {
                "text": "How are you?"
              }
            }
          },
          "subtype": "MEMBER_TO_MEMBER",
          "from": {
            "com.linkedin.voyager.messaging.MessagingMember": {
              "miniProfile": {
                "memorialized": false,
                "firstName": "Muhammed ",
                "lastName": "Moussa ✪",
                "dashEntityUrn": "urn:li:fsd_profile:******",
                "entityUrn": "urn:li:fs_miniProfile:******",
                "backgroundImage": {},
                "publicIdentifier": "muhammedmoussa",
                "picture": {},
                "trackingId": "gHcY3a/hRK6s0z/HDf7cTg=="
              },
              "entityUrn": "urn:li:fs_messagingMember:(*****,******)",
              "nameInitials": "MM"
            }
          },
          "previousEventInConversation": "urn:li:fs_event:(*****,2-MTY1ODEwNDczMDM3OWIyMzUzMi0wMDQmY2I0M2UwZDctZmM5ZS00NmY0LTg3OWQtNGVhMGIyYzgxZmM1XzAxMw==)",
          "backendUrn": "urn:li:messagingMessage:******"
        }
      ],
      "participants": []
    }
  ],
  "paging": {
    "count": 20,
    "start": 0,
    "links": []
  }
}
Войти в полноэкранный режим Выход из полноэкранного режима

Вы можете заметить некоторые отличия в параметрах, здесь вместо URL мы передаем urn, это приводит к одному из самых важных ключевых понятий здесь URN IDs и public IDs.

  • URN ID: Унифицированное имя ресурса (URN) — это унифицированный идентификатор ресурса (URI), использующий схему urn. URN являются глобально уникальными. пример URN профиля LinkedIn: urn:li:fs_miniProfile:ACoAABQ11fIBQLGQbB1V1XPBZJsRwfK5r1U2Rzt.

  • URL: Единый локатор ресурсов (URL), в просторечии называемый веб-адресом, — это ссылка на веб-ресурс, определяющая его местоположение в компьютерной сети. пример URL профиля LinkedIn: https://www.linkedin.com/in/muhammedmoussa/.

Для получения дополнительной информации об этом и о том, как пакет работает с API LinkedIn, ознакомьтесь с документацией API LinkedIn.

Что дальше? ⏭

Мы рассмотрели пакет LinkedIn Python API и некоторые его возможности. Как мы уже упоминали выше, LinkedIn является важным инструментом для каждого профессионала, особенно для организаций, когда они хотят усовершенствовать традиционное размещение вакансий, поиск талантов или процесс найма в целом. Поэтому сегодня у нас есть множество инструментов, которые работают поверх LinkedIn или данных о людях и предлагают отличные инструменты, которые могут изменить игру:

  • Proxycurl от Nubela
  • LinkDB
  • LinkedIn API

Оцените статью
devanswers.ru
Добавить комментарий