Используем OneDrive для хостинга картинок

2016-09-08, 15:40 / Argon

Хотя OneDrive и позволяет расшаривать картинки, но ссылки, которые он выдаёт

https://1drv.ms/i/s!Amlzj8iXNyRkiugA0LRoWwrT8JZO3g

…на самом деле ведут не на сам файл с картинкой, а на веб-страницу с ней.

Что делать, если нужно получить истинный адрес файла, который можно будет использовать для вставки картинок на веб-страницы, а также в других местах вроде фотографии контакта в Lync / Skype for Business? Доступ к картинке, конечно, должен быть без какой-либо аутентификации (анонимно).

Раньше эта задача решалась весьма нетривиально, требовалось выявлять ID картинки и ключ анонимного доступа. Теперь же достатоно просто использовтаь кнопку Embed, чтобы получить честный путь к файлу

https://fktm3w-bn1306.files.1drv.com/y3mtpruDZtS5-aEcza1IHBB3PQG2jJgmlDG3iRYYqOyXLt6QGQ7JDexYEd_22NBKQzXQvBXFzjxTrNzlhQMbquRle4kF1x1AUwgtp8LJr2zxuTdObDNSVOwewTjfmXdm9jCuxYvQQ26xjkyjKaNNnvNG6q3lN4qCQ-2LL8ca4C3WFw?width=180&height=120&cropmode=none

Если вы видите вставленную ниже картинку, значит этот функционал работает.

Хотя, стоп! Обратите внимание, что полученная картинка искажена и содержит артефакты сжатия JPEG, хотя источник был в PNG.

Ну вот, всё оказалось не так просто. Чтобы получить оригинальный файл без искажений, придётся использовать API OneDrive

Из исходного адреса

https://1drv.ms/i/s!Amlzj8iXNyRkiugA0LRoWwrT8JZO3g

Берём строчку, начинающуюся с символов s! (это часть называется encodedUrl), и вставляем в следующий адрес

https://api.onedrive.com/v1.0/shares/{encodedUrl}/root/content

Получается

https://api.onedrive.com/v1.0/shares/s!Amlzj8iXNyRkiugA0LRoWwrT8JZO3g/root/content

Если вы видите вставленную ниже картинку, значит и этот функционал работает. И мы видим истинную картинку без искажений.

Тестовая картинка, OneDrive API

Предыдущие способы

Сохраняю их в этом посте только из жалости к уже потраченному времени на их поиск и описание.

Способ номер 2. Берём оригинальную ссылку

https://1drv.ms/i/s!Amlzj8iXNyRkiugA0LRoWwrT8JZO3g

Заходим по ней и нажимаем на View Original, видим картинку и (ужасающий) путь к ней в строке браузера

https://fktm3w-bn1306.files.1drv.com/y3pQcqH0DMvNvFzjCUFuECt5EHc3--psJ-7_qbXHTwXpxpWwVD49Wh1h2zY8XiHVqwhcozsTWBIb5LDgxWUC48JScj-rNESUHS6xIQM4MI190AV-iT56Q1si7vvx5eiiF9QhuhMttuIXkzk_SQSoibkOGO71aEddgJ09FE7VVDrZkg/arlogo_blog_180x120.png?psid=1

Если вы видите вставленную ниже картинку, значит и этот функционал работает. И мы видим истинную картинку без искажений. Однеако, не могу гарантировать что полученный URL — постоянный.

Способ номер 3. Выявил его в те дремучие времена, когда перечисленные выше способы не существовали.

Из исходного адреса

https://1drv.ms/i/s!Amlzj8iXNyRkiugA0LRoWwrT8JZO3g

С помощью сервиса hurl.it узнаем, куда же на самом деле мы будем перенаправлены

https://onedrive.live.com/redir?resid=64243797C88F7369!177152&authkey=!ANC0aFsK0_CWTt4&ithint=photo%2cjpg

Либо просто переходим браузером по изначальной ссылке, получаем адрес вида

https://onedrive.live.com/?authkey=%21ANC0aFsK0%5FCWTt4&cid=64243797C88F7369&id=64243797C88F7369%21177152&parId=64243797C88F7369%2113737&o=OneUp

В этих адресах нам нужны две вещи, идентификатор картинки и ключ доступа, они совпадают

resid=64243797C88F7369!177152
authkey=!ANC0aFsK0_CWTt4

С помощью этих данных конструируем новый URL вида

https://storage.live.com/Items/{resid}?authKey={authkey}
или
https://onedrive.live.com/download?resid={resid}&authkey={authkey}

В нашем случае это будет

https://storage.live.com/Items/64243797C88F7369!177152?authKey==!ANC0aFsK0_CWTt4
или
https://onedrive.live.com/download?resid=64243797C88F7369!177152&authkey=!ANC0aFsK0_CWTt4

Если вы видите картинки ниже, значит и эти способы ещё работают. И мы видим истинную картинку без искажений.



Добавить комментарий