Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2499 linkedin saved post #2501

Merged
merged 5 commits into from
Feb 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
306 changes: 306 additions & 0 deletions LinkedIn/LinkedIn_Get_saved_posts_URL.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "9a08b929-eb2d-4382-940b-dcc7cc8cf223",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"<img width=\"8%\" alt=\"LinkedIn.png\" src=\"https://raw.githubusercontent.com/jupyter-naas/awesome-notebooks/master/.github/assets/logos/LinkedIn.png\" style=\"border-radius: 15%\">"
]
},
{
"cell_type": "markdown",
"id": "a5b2c509-2c29-49e8-af91-4f3f1e386da3",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"# LinkedIn - Get saved posts URL\n",
"<a href=\"https://app.naas.ai/user-redirect/naas/downloader?url=https://raw.githubusercontent.com/jupyter-naas/awesome-notebooks/master/LinkedIn/LinkedIn_Setup_connection.ipynb\" target=\"_parent\"><img src=\"https://naasai-public.s3.eu-west-3.amazonaws.com/Open_in_Naas_Lab.svg\"/></a><br><br><a href=\"https://bit.ly/3JyWIk6\">Give Feedback</a> | <a href=\"https://github.com/jupyter-naas/awesome-notebooks/issues/new?assignees=&labels=bug&template=bug_report.md&title=LinkedIn+-+Setup+connection:+Error+short+description\">Bug report</a>"
]
},
{
"cell_type": "markdown",
"id": "d77fe283-4edd-42d3-a909-8e207d4b842f",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**Tags:** #linkedin #naas #posts #saved"
]
},
{
"cell_type": "markdown",
"id": "b90f2d91-c886-4e36-8265-b09d06bb1c7f",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**Author:** [Sohaib Anwaar](https://www.linkedin.com/in/sohaibanwaar/)"
]
},
{
"cell_type": "markdown",
"id": "6bbf7807-dda4-4b8a-b016-fe258a0fa33f",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**Last update:** 2024-02-23 (Created: 2024-02-23)"
]
},
{
"cell_type": "markdown",
"id": "214749fe-7f0b-4755-b7ea-1d200c234cc6",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**Description:** This notebook extracts saved posts and articles URL from your LinkedIn."
]
},
{
"cell_type": "markdown",
"id": "a1329bea-ad80-4981-874c-8776b11f89a8",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**References:**\n",
"- [Learn how to get your cookies on LinkedIn](https://www.notion.so/LinkedIn-driver-Get-your-cookies-d20a8e7e508e42af8a5b52e33f3dba75)\n",
"- [Naas Secret Documentation](https://site.naas.ai/docs/developers/jobs/secret)"
]
},
{
"cell_type": "markdown",
"id": "cff349c8-2816-4ae4-9229-027c068eeb51",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"## Input"
]
},
{
"cell_type": "markdown",
"id": "80266a9e-fe54-4f3e-aeb2-01483bbc53f9",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"### Import libraries"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cc038b10-2679-42bc-909e-09a298339df4",
"metadata": {
"papermill": {},
"tags": []
},
"outputs": [],
"source": [
"import naas\n",
"import json\n",
"import requests"
]
},
{
"cell_type": "markdown",
"id": "30127040-e487-4115-8317-5084823b3a6f",
"metadata": {
"papermill": {},
"tags": [
"variables"
]
},
"source": [
"### Setup variables\n",
"**Mandatory**\n",
"- `li_at`: Cookie used to authenticate Members and API clients. This value will be stored under the secret 'LINKEDIN_LI_AT'.\n",
"- `JSESSIONID`: Cookie used for Cross Site Request Forgery (CSRF) protection and URL signature validation. This value will be stored under the secret 'LINKEDIN_JSESSIONID'."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "916a9fe8-c806-4542-94d5-2a7a7e5c8028",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Mandatory\n",
"li_at = naas.secret.get(\"LINKEDIN_LI_AT\") or \"YOUR_LINKEDIN_LI_AT\"\n",
"JSESSIONID = naas.secret.get(\"LINKEDIN_JSESSIONID\") or \"YOUR_LINKEDIN_JSESSIONID\""
]
},
{
"cell_type": "markdown",
"id": "1b0ae044-cac2-479f-b1fc-a3318696adf5",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"## Model"
]
},
{
"cell_type": "markdown",
"id": "98ed1327-8787-4e28-99e2-2c15fb447298",
"metadata": {},
"source": [
"### Get Saved Posts URL"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9f05e02c-f9ae-440a-bcc8-047ff0bd5e99",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def get_saved_posts_and_articles(\n",
" li_at,\n",
" JSESSIONID\n",
"):\n",
" # Define headers and cookies\n",
" headers = {\n",
" \"X-Li-Lang\": \"en_US\",\n",
" \"Accept\": \"application/vnd.linkedin.normalized+json+2.1\",\n",
" \"Cache-Control\": \"no-cache\",\n",
" \"X-Requested-With\": \"XMLHttpRequest\",\n",
" \"X-Restli-Protocol-Version\": \"2.0.0\",\n",
" \"Csrf-Token\": JSESSIONID\n",
" }\n",
" cookies = {\n",
" \"li_at\": li_at,\n",
" \"JSESSIONID\": JSESSIONID\n",
" }\n",
" # replace this with your url \n",
" url = \"https://www.linkedin.com//voyager/api/graphql?variables=(start:0,query:(flagshipSearchIntent:SEARCH_MY_ITEMS_SAVED_POSTS))&queryId=voyagerSearchDashClusters.a6589bc963659630adee73df22e9384c\"\n",
" \n",
" try:\n",
" all_save_urls = []\n",
" # Make the request\n",
" response = requests.get(url, headers=headers, cookies=cookies)\n",
" response.raise_for_status() # Raise an exception for 4xx or 5xx status codes\n",
"\n",
" # Check the response status code\n",
" if response.status_code == 200:\n",
" all_data = response.json()\n",
" for each in all_data.get('included'):\n",
" if each.get('navigationUrl'):\n",
" all_save_urls.append(each.get('navigationUrl'))\n",
" # Return the urls\n",
" return all_save_urls \n",
" else:\n",
" print(\"Error:\", response.status_code)\n",
" return None\n",
"\n",
" except requests.exceptions.RequestException as e:\n",
" print(\"Error:\", e)\n",
" print(\"Please provide a new li_at or JSESSIONID as the previous one has expired.\")\n",
" return None\n",
" \n",
"result = get_saved_posts_and_articles(li_at, JSESSIONID)\n",
"result"
]
},
{
"cell_type": "markdown",
"id": "7c97931b-4ce8-46f9-a70c-45393c5669ee",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"## Output"
]
},
{
"cell_type": "markdown",
"id": "760ec150-d79a-4208-adfe-d0336d443dc8",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"### Display result"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "18edeb44-7e6c-4ea9-97ea-7581eff0ae58",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"result"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "66803641-1822-4894-a45b-83cae9b938a4",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.6"
},
"naas": {
"notebook_id": "2c8d11e1766e5b73434b99d74a5eb94415e244c13a00986210282bbc6117660c",
"notebook_path": "LinkedIn/LinkedIn_Setup_connection.ipynb"
},
"papermill": {
"default_parameters": {},
"environment_variables": {},
"parameters": {},
"version": "2.4.0"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
2 changes: 1 addition & 1 deletion LinkedIn/LinkedIn_Setup_connection.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -271,4 +271,4 @@
},
"nbformat": 4,
"nbformat_minor": 5
}
}
Loading