joshuatz / linkedin-to-jsonresume

Browser extension to turn a LinkedIn profile page into a JSON Resume export.
https://joshuatz.com/projects/web-stuff/linkedin-profile-to-json-resume-exporter/
MIT License
238 stars 59 forks source link

Profile photo not saved #75

Closed bormaxi8080 closed 1 year ago

bormaxi8080 commented 2 years ago

Hi, how about this bug?

Profile photo not saved: I scra profile https://www.linkedin.com/in/diana-ponomareva/ and report this JSON:

{ "$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json", "basics": { "name": "Diana Ponomareva", "label": "Руководитель рекрутингового агентства IT.и Пишите мне в телегу @diana_com только IT специалисты Темы публикаций: #crypto, #blockchain и #recruiting", "image": "", "email": "diana.4681@mail.ru", "phone": "+35795148563", "url": "", "summary": "Phone : +357 95 148563\nE-mail: diana.4681@mail.ru\nSkype: diana ponomareva\nTelegram @diana_com", "location": { "countryCode": "RU", "address": "" }, "profiles": [ { "network": "LinkedIn", "username": "diana-ponomareva", "url": "https://www.linkedin.com/in/diana-ponomareva/" }, { "network": "Twitter", "username": "Diana_Redcode", "url": "https://twitter.com/Diana_Redcode" } ] }, "work": [ { "name": "RedCode", "position": "Senior IT Recruiter", "startDate": "2014-06-30", "endDate": "", "highlights": [], "summary": "Я знаю всех ваших будущих сотрудников. Хантинг. Точечный поиск. Выстраивание работы команды рекрутеров. Формирование команды поиска и обучение it рекрутеров с нуля. \nПолный цикл подбора и других обязанностей:\n\n- Снятие заявки/ТЗ\n- Составление текста вакансии\n- Сорсинг на всех возможных площадках\n- Скрининг резюме\n- Первичные собеседования\n- Общение в чатах с заказчиками\n- Общение с кандидатам\n- Сопровождение кандидатов на этапе испытательного срока\n- Корректировка поиска кандидатов после технических собеседований\n- Team lead команды\n- Наставничество новых сотрудников\n- Составление регламентов\n- Анализ рынка заработных плат по вакансии\n\nСписок вакансий которые были в работе:\n- Системный аналитик\n- Devops engineer\n- Руководитель группы разработчиков Java\n- Solidity developer\n- Senior C# developer\n- PHP разработчик\n- Архитектор DWH\n- Product Owner\n- Senior Ruby Developer\n- Аналитик DWH (Senior)\n- Senior Software Engineer\n- Full Stack Developer\n- Game designer\n- Senior Developer (Unity 3D)\n- Unity 3D developer\n- Java (ETL) разработчик\n- Senior Frontend engineer\n- Senior Software Engineer, C++\n\n\nОткрыта к предложениям на позицию руководителя отдела подбора. Рассматриваю вакансии с релокацией. \n\n\nIT-рекрутер", "url": "https://www.linkedin.com/company/redcod/", "location": "Москва, Россия" }, { "name": "RedCode", "position": " Chief Executive Officer", "startDate": "2018-06-30", "endDate": "", "highlights": [], "summary": "Управляю и развиваю рекрутинговое агентство специализирующееся на поиске it специалистов. Разработка и сопровождение всех цифровых продуктов.", "url": "https://www.linkedin.com/company/redcod/", "location": "Москва, Россия" }, { "name": "Recruitment Freelancer", "position": "IT Recruter", "startDate": "2010-12-31", "endDate": "2014-12-31", "highlights": [], "summary": "Закрытие различных вакансий в сфере IT\nРазработка, тестирование, администрирование , сетевая инженерия, сопровождение, техподдержка, 1С", "url": "https://www.linkedin.com/company/rustic-candles-events/", "location": "Москва, Россия" } ], "volunteer": [], "education": [], "awards": [], "certificates": [], "publications": [], "skills": [ { "name": "Высшее руководство", "level": "", "keywords": [] }, { "name": "Искусство публичного выступления", "level": "", "keywords": [] }, { "name": "Executive search", "level": "", "keywords": [] }, { "name": "Обучение", "level": "", "keywords": [] }, { "name": "Обучение и развитие", "level": "", "keywords": [] }, { "name": "Подбор персонала", "level": "", "keywords": [] }, { "name": "Сорсинг", "level": "", "keywords": [] }, { "name": "Формирование команды", "level": "", "keywords": [] }, { "name": "Командная работа", "level": "", "keywords": [] } ], "languages": [ { "language": "ru", "fluency": "Native Speaker" } ], "interests": [], "references": [], "projects": [], "meta": { "version": "v1.0.0", "canonical": "https://github.com/jsonresume/resume-schema/blob/v1.0.0/schema.json" } }

, so an "image" json section is empty.

Photo address: https://media-exp1.licdn.com/dms/image/C4D03AQErAGm00RkXCw/profile-displayphoto-shrink_200_200/0/1660039683799?e=1668038400&v=beta&t=YgKPZ-oXA-Ezzehew1iQ_e8AdvNKUi-xkjhtQ0N2xRY

Thanks!

joshuatz commented 2 years ago

This has come up before and I did not categorize it as a bug that can be "fixed", and I'm still reluctant to do so.

The URL that LinkedIn provides for the profile picture is not actually a permanent URL - it looks like some variant of a temporary signed URL. If I make a guess that the e={int} portion of that URL corresponds with expiration, and the integer is a unix timestamp, then it looks like that image should expire in a few months (November). I'm also not sure how consistent LinkedIn is in setting the future expiration - it almost looks like they might batch generate these instead of dynamically generating them on-demand, as loading up my own profile today showed that same e={int} value.

With the knowledge that the profile picture URL might expire at a time outside my control, I'm still torn on whether or not this would be good to include in the JSON output. On the one hand, resumes are often used in the same time period they are generated, so maybe expiring images aren't that big of a deal. On the other hand, I don't want to get blamed if someone uses the image URL as part of their job application or website and it suddenly fails to load.

The easiest solution here, which I mentioned the last time this came up, is for everyone to just not rely on LinkedIn for image hosting; upload your profile picture to something like imgur and then manually fill in the basics.image field.

bormaxi8080 commented 2 years ago

Joshua, thanks for the detailed explanations! I got the concept.