29 Мая 2023
393

Парсим яндекс диск при помощи Python

В данный момент я работаю контент-менеджером в "крупном" интернет - магазине. В моём случае, это больше 100 000 позиций.

Иногда приходится сталкиваться с такой проблемой: поставщик присылает фотографии со ссылками на яндекс диск. Это крайне неудобно, потому что приходится ходить по каждой ссылке и скачивать изображение к себе, а затем уже загружать на сервер и т.д.

Готового решения я не нашел и решил написать свою реализацию работы с яндекс диском. Хорошо, что я знаю python.

У меня было 2 версии программы:

  1. когда по ссылке находится папка с картинками, python скачивает эту папку как зип файл, затем распаковывает. Все манипуляции записываются в csv файл, путь до файла с картинками

  2. когда по ссылке идёт только одна картинка, в данном случаи все немного проще, не нужны лишние действия с распаковкой картинок

p.s. ещё были 2 побочные небольшие программки: 1-я для уменьшения размера картинки, 2-я для переименования картинок (менялся пробел на дефис)

Приступим к реализации

  1. скачать и установить python c официального сайта https://www.python.org/downloads

  2. открыть любимый редактор кода (я использую vscode) https://code.visualstudio.com

  3. подключить следующие стандартные библиотеки: urllib.parse, csv, os, zipfile. Установить библиотеку requests https://pypi.org/project/requests/ (для отправки запроса на сервер)

  4. для полного фен-шуя можно использовать виртуальное окружение, дабы не засорять систему ненужными пакетами. Подробнее о virtualenv можно ознакомится по ссылке https://docs.python.org/3/tutorial/venv.html или же использовать poetry.

Ссылки на яндекс диск имеют вид: https://disk.yandex.ru/d/xNBn7lE1_Y5knQ. Чтобы их можно было скачать, они должны быть публичными.

Обратимся к API яндекс. После ключа public_key="вставляем_ссылку_на_файл"

https://cloud-api.yandex.net/v1/disk/public/resources/downlo...https://disk.yandex.ru/d/xNBn7lE1_Y5knQ

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

Пожалуй, на этом хватит теории, теперь, постараюсь внятно объяснить, как всё это можно применить в контексте python.

# создаем новый файл и подключаем нужные нам библиотеки

import requests

from urllib.parse import urlencode

import csv

import os

import zipfile

Для начало создадим функцию, которая будет возвращать нам ссылку для скачивания:

final_url = base_url + urlencode(dict(public_key=public_link))

response = requests.get(final_url)

parse_href = response.json()['href']

return parse_href

Файлы могут быть в разных форматах: ссылки могут быть на одну или несколько картинок. В первом случае можно напрямую скачивать картинку по ссылке. Во втором, если по ссылке несколько картинок, то при скачивании мы получаем архив, который требует дополнительных действий (распаковку).

resources = "https://cloud-api.yandex.net/v1/disk/public/resources?"

requests_url = resources + urlencode(dict(public_key=public_link))

r =  requests.get(requests_url)

type_file = r.json()['type']

return type_file

Далее, мы скачиваем файлы и в зависимости от его типа выполняем действия: просто записываем в результирующий файл или же переходим к его распаковке с последующей записью.

В итоге, мы получаем файл result_data.csv со ссылками на фотографии на нашем жестком диске:

В добавок, у нас на жёстком диске появляется папка со скаченными картинками в папке download_files.

Полностью посмотреть код можно в репозитории на гитхаб.

p.s. Официальная документация по API Яндекс. Диска

Братишка с пикабу подсказал готовую библиотеку на питоне. Спасибо b4ro тык.

p.s.s. Немного поразмышляв, я подумал, что неплохо было бы написать, тесты. Пройтись линтером по коду. Добавить функцию переименования файлов. Может быть что-нибудь ещё?)

Спасибо за прочтение! Комментарии, лайки, дизлайки, предложения, пожелания крайне приветствуются.

Показать полностью 2
38

Страховка или независимая экспертиза?

Доброго времени суток.
Прошу совета у разбирающихся людей.
Сегодня в меня въехала дама, засмотрелась в телефон.

Вызвали аварийного комиссара.
Всё оформили по европротоколу.
Комиссар после дтп сказал что нужно ехать в независимую экспертизу до того как поеду в страховую. Мол дверь багажника и бампер замяли хорошо мне и страховая насчитает копейки, езжай в независимую.
Ну стало интересно, я поехал в независимую. Там мне сказали что правильно сделал, что поехал к ним до страховой. Якобы страховые дают на подпись документ сначала, подписав который я не могу оспорить их решение. И вообще страховая считает по минимуму. А они (независимая) от моего лица и оценят верно (в присутствии страховой) и деньги выбьют на нормальный ремонт.
Дали договор- отправили подписать (сказал что с собой паспорта нет).
В договоре по сути указано что они от моего лица будут иметь дело со страховой и выбьют деньги, а комиссию заберут себе. Комиссию за свои услуги тоже со страховой взыщут.( Тут у меня вопрос, с чего страховой оплачивать для меня услуги посредника? Но независимая уверила меня что это в порядке вещей).
Также в договоре указана сумма к выплате мне 10000, но после оценки эта сумма соответственно изменится допником к договору на оценённую.

Так вот вопрос к знатокам (я просто далёк от этих дтп хитростей), стоит ли пользоваться услугами независимой экспертизы как посредником до поездки в стоаховую? Это какая то водительская хитрость, потому что страховая и правда обманывает или не стоит их слушать и нужно ехать сначала в страховую и потом оспаривать в суде её результат оценки?
Мб кто-нибудь из пикабушников варится в этой каше и объяснит где собака зарыта?
Вдруг был у кого то опыт подобный.
Заранее благодарен.

Показать полностью 4
9

Портрет

Близился конец восьмого класса, а наша русалка постоянно задавала на дом сочинения на темы русской литературы, и ставила две оценки за язык и литературу. Мало того, что я не особо любил описывать характеры героев хрестоматии, так еще и лезла наружу моя безграмотность. Чтоб обойти эту засаду, я пошел в свою библиотеку и взял несколько книг разных издательств с произведением, по которому пишу сочинение. Из предисловий к книгам я навыхватывал нужные мне куски, скомпановал их в единый текст и вуаля, сочинение готово. Без ошибок (если правильно переписать), с критическим описанием героев - не подкопаешься. Мои оценки пошли вверх. Я уговаривал моих одноклассников последовать моему примеру. Обещал молочные реки и кисельные берега. Никто не хотел идти в библиотеку. Наконец, мне удалось уговорить Анфису и Чапу с Каней пойти со мной. В библиотеке набрали кучу книг. У нас были разные темы, но моя идея работала как часы и мы крепко засели за работу в читальном зале. Я закончил свой опус быстрее их всех и стал разглядывать других школьников и школьниц, которые видимо были заняты тем же что и мы.

Почти сразу, напротив меня, через несколько длинных столов я увидел ее. Худенькая, с острыми плечиками и тонкими запястьями сидела девочка моего возраста. Каре из черных волос, тонкие черты лица. Еще пока не заметная в кругу подруг, но через год или два, будет писанная красавица. Это, я как специалист, сразу понял. Колокольчик внутри меня, связанный с внутренним детектором выбора пары, звенел как колокол на Спасской башне. А он звонил крайне редко! Всего раз или два до этого.

Я все сидел и бросал украдкой взгляды на эту девочку. Анфиса сразу увидела мою заинтересованность и тут же начала шептать мне на ухо:

- Сережа, опомнись! Ты на кого хочешь меня променять? На этот тремпель? На эту дэ два эс? Ты посмотри на меня, ты даже не представляешь, что ты теряешь!

В эту игру на публику она играла великолепно! Каня с Чапой сочувствующе улыбались, гляда на меня. Думаю, надо немного разъяснить, что же сказала моя пассия.

Тремпель - это плечики, или вешалка для одежды из дерева с крючком посредине. На Слободской Украине вешалку или плечики для одежды по другому не называют. По моей информации, до революции в Харькове была фабрика, выпускавшая деревянные вешалки для одежды. Она принадлежала некоему Тремпелю. Его рабочие выжигали на каждом изделии его фамилию. Так его фамилия стала названием изделия. Анфиса хотела подчеркнуть, что у девочки еще детская угловатая фигура, не то что у нее.

Дэ два эс - это сокращение от описательного выражения "доска два соска". У Анфисы была красивая грудь, немного меньше третьего размера. А девочке напротив, пока похвастаться было почти не чем.

Анфиса говорила еще что то, а я уже не слышал и меня волновал лишь один вопрос - как познакомиться? Девчонка на меня не обращала никакого внимания. И я решил написать ее портрет, вот прямо сейчас взять и написать! И подарить ей! Хорошая идея, если учесть, что рисовать я просто не умею. Чапа и Анфиса ходили в школу рисования имени Репина (в миру Репинка), а я туда даже не совался, т.к. задатков к рисованию у меня не было. Но у меня перед глазами стоял розовый туман, и я, не раздумывая, вынул из тетради промокашку.

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

Итак, мольберт готов, а рисовать по промокашке можно только шариковой ручкой. У меня уже такая была, и взяв в руки кисть Дали начал рисовать. Если честно, то рисовал не я. Я как сторонний наблюдатель смотрел как рука сама резкими и быстрыми движениями рисует портрет. А я даже дышать боялся, чтоб не спугнуть это наваждение. Я лишь чувствовал, как сзади, через мое плечо, Анфиса с пацанами молча смотрят на мои художества. Ручка и промокашка не давали шанса на исправление ошибки, а я и не ошибался. Точнее, тот внутри меня не ошибался. Ваял быстро и красиво. Я бы так не смог. Через пять минут портрет был готов. Зрители за спиной просто молчали от удивления, а я встал и пошел к девочке. Столы в читальном зале были длинные и путь к ней занял некоторое время. Еле дошкандыбав на ватных ногах, я вручил портрет со словами:

- Это подарок от меня!

Девочка взяла портрет, мельком взглянув на меня. Ни тебе спасибо, ни бумажки с номером телефона! А я, помявшись, побрел назад к своей компании. Вскоре, мы ушли из библиотеки, и я ее больше никогда не видел.

Много позже, когда в очередной раз зазвонил колокольчик внутри (уже с будущей женой), сквозь розовый туман я пытался повторить состояние того читального зала. Безрезультатно. Рука просто не двигалась и мне приходилось управлять ею. Портрет получался невзрачный и неправильный. Таких попыток я сделал две, и обе были неудачными.

После этого случая все классы стали толпой ходить бибиотеку Короленко, писать сочинения. Моя идея вновь жила без меня. А я в одиночестве все ходил в мою библиотеку, безнадежно надеясь на встречу. Contra spem spero!

Показать полностью
31

Грибное настроение

Здравствуйте!

Вот такие милые ёлочные игрушки из липы делает мой муж. Игрушки можно вешать не только на ёлку, но и, например, использовать для тематических фотосессий, как сезонный декор, украшение детской.

Показать полностью 6
4

Что смотреть туристу в Москве?

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

Уже был в других поездках в Кремле, Третьяковской галерее, Пушкинском музее, ВДНХ, Историческом музее, Лужниках, Воробьёвых горах, Палеонтологическом музее, Бородинской панораме, Музее Победы, Царицыно.

В этот раз пока в планах музей Космонавтики, Зоологический и Отечественной войны 1812 года. В какие музеи ещё стоит выбраться? Есть ли какие-нибудь интересные смотровые площадки по типу Исаакиевского собора в Питере, про Останкино и Москов-Сити знаю, но не интересно смотреть на город за стеклом.

Ещё в планах парк Горькова, и Московский зоопарк. Но про зоопарк какие-то странные отзывы, что там ремонт и большинства животных нет. Может кто знает стоит ли идти в зоопарк?

Может кто-нибудь посоветует не очень культурную программу? Всякие развлечения, но без баров и набухания.

2

Мегафон, вы в себе?

Доброго времени суток дорогие товарищи пикабушники! Суть поста такова, недавно пришлось менять паспортные данные у мегафона в тц на точке данной компании, после чего меня постоянно донимают разные смс от микрозаймов и прочих мошенников. Я подозреваю что номер и паспортные данные были слиты сотрудником данной точки. Если вдруг компания Мегафон соизволит разобраться точка находится в городе Люберцы, тц Светофор. Смс идут постоянно и днем и ночью, некоторые блокируются сразу как спам, некоторые проходят. Кстати не нашел как призвать мегафон через @, кто знает помогите в комментах.

Мегафон, вы в себе?

Вот такое как на скрине постоянно и по нескольку раз с одного или разных номеров.

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

Отличная работа, все прочитано! Выберите