Парсим яндекс диск при помощи Python
В данный момент я работаю контент-менеджером в "крупном" интернет - магазине. В моём случае, это больше 100 000 позиций.
Иногда приходится сталкиваться с такой проблемой: поставщик присылает фотографии со ссылками на яндекс диск. Это крайне неудобно, потому что приходится ходить по каждой ссылке и скачивать изображение к себе, а затем уже загружать на сервер и т.д.
Готового решения я не нашел и решил написать свою реализацию работы с яндекс диском. Хорошо, что я знаю python.
У меня было 2 версии программы:
когда по ссылке находится папка с картинками, python скачивает эту папку как зип файл, затем распаковывает. Все манипуляции записываются в csv файл, путь до файла с картинками
когда по ссылке идёт только одна картинка, в данном случаи все немного проще, не нужны лишние действия с распаковкой картинок
p.s. ещё были 2 побочные небольшие программки: 1-я для уменьшения размера картинки, 2-я для переименования картинок (менялся пробел на дефис)
Приступим к реализации
скачать и установить python c официального сайта https://www.python.org/downloads
открыть любимый редактор кода (я использую vscode) https://code.visualstudio.com
подключить следующие стандартные библиотеки: urllib.parse, csv, os, zipfile. Установить библиотеку requests https://pypi.org/project/requests/ (для отправки запроса на сервер)
для полного фен-шуя можно использовать виртуальное окружение, дабы не засорять систему ненужными пакетами. Подробнее о 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 Яндекс. Диска
p.s.s. Немного поразмышляв, я подумал, что неплохо было бы написать, тесты. Пройтись линтером по коду. Добавить функцию переименования файлов. Может быть что-нибудь ещё?)
Спасибо за прочтение! Комментарии, лайки, дизлайки, предложения, пожелания крайне приветствуются.
Страховка или независимая экспертиза?
Доброго времени суток.
Прошу совета у разбирающихся людей.
Сегодня в меня въехала дама, засмотрелась в телефон.
Вызвали аварийного комиссара.
Всё оформили по европротоколу.
Комиссар после дтп сказал что нужно ехать в независимую экспертизу до того как поеду в страховую. Мол дверь багажника и бампер замяли хорошо мне и страховая насчитает копейки, езжай в независимую.
Ну стало интересно, я поехал в независимую. Там мне сказали что правильно сделал, что поехал к ним до страховой. Якобы страховые дают на подпись документ сначала, подписав который я не могу оспорить их решение. И вообще страховая считает по минимуму. А они (независимая) от моего лица и оценят верно (в присутствии страховой) и деньги выбьют на нормальный ремонт.
Дали договор- отправили подписать (сказал что с собой паспорта нет).
В договоре по сути указано что они от моего лица будут иметь дело со страховой и выбьют деньги, а комиссию заберут себе. Комиссию за свои услуги тоже со страховой взыщут.( Тут у меня вопрос, с чего страховой оплачивать для меня услуги посредника? Но независимая уверила меня что это в порядке вещей).
Также в договоре указана сумма к выплате мне 10000, но после оценки эта сумма соответственно изменится допником к договору на оценённую.
Так вот вопрос к знатокам (я просто далёк от этих дтп хитростей), стоит ли пользоваться услугами независимой экспертизы как посредником до поездки в стоаховую? Это какая то водительская хитрость, потому что страховая и правда обманывает или не стоит их слушать и нужно ехать сначала в страховую и потом оспаривать в суде её результат оценки?
Мб кто-нибудь из пикабушников варится в этой каше и объяснит где собака зарыта?
Вдруг был у кого то опыт подобный.
Заранее благодарен.
Портрет
Близился конец восьмого класса, а наша русалка постоянно задавала на дом сочинения на темы русской литературы, и ставила две оценки за язык и литературу. Мало того, что я не особо любил описывать характеры героев хрестоматии, так еще и лезла наружу моя безграмотность. Чтоб обойти эту засаду, я пошел в свою библиотеку и взял несколько книг разных издательств с произведением, по которому пишу сочинение. Из предисловий к книгам я навыхватывал нужные мне куски, скомпановал их в единый текст и вуаля, сочинение готово. Без ошибок (если правильно переписать), с критическим описанием героев - не подкопаешься. Мои оценки пошли вверх. Я уговаривал моих одноклассников последовать моему примеру. Обещал молочные реки и кисельные берега. Никто не хотел идти в библиотеку. Наконец, мне удалось уговорить Анфису и Чапу с Каней пойти со мной. В библиотеке набрали кучу книг. У нас были разные темы, но моя идея работала как часы и мы крепко засели за работу в читальном зале. Я закончил свой опус быстрее их всех и стал разглядывать других школьников и школьниц, которые видимо были заняты тем же что и мы.
Почти сразу, напротив меня, через несколько длинных столов я увидел ее. Худенькая, с острыми плечиками и тонкими запястьями сидела девочка моего возраста. Каре из черных волос, тонкие черты лица. Еще пока не заметная в кругу подруг, но через год или два, будет писанная красавица. Это, я как специалист, сразу понял. Колокольчик внутри меня, связанный с внутренним детектором выбора пары, звенел как колокол на Спасской башне. А он звонил крайне редко! Всего раз или два до этого.
Я все сидел и бросал украдкой взгляды на эту девочку. Анфиса сразу увидела мою заинтересованность и тут же начала шептать мне на ухо:
- Сережа, опомнись! Ты на кого хочешь меня променять? На этот тремпель? На эту дэ два эс? Ты посмотри на меня, ты даже не представляешь, что ты теряешь!
В эту игру на публику она играла великолепно! Каня с Чапой сочувствующе улыбались, гляда на меня. Думаю, надо немного разъяснить, что же сказала моя пассия.
Тремпель - это плечики, или вешалка для одежды из дерева с крючком посредине. На Слободской Украине вешалку или плечики для одежды по другому не называют. По моей информации, до революции в Харькове была фабрика, выпускавшая деревянные вешалки для одежды. Она принадлежала некоему Тремпелю. Его рабочие выжигали на каждом изделии его фамилию. Так его фамилия стала названием изделия. Анфиса хотела подчеркнуть, что у девочки еще детская угловатая фигура, не то что у нее.
Дэ два эс - это сокращение от описательного выражения "доска два соска". У Анфисы была красивая грудь, немного меньше третьего размера. А девочке напротив, пока похвастаться было почти не чем.
Анфиса говорила еще что то, а я уже не слышал и меня волновал лишь один вопрос - как познакомиться? Девчонка на меня не обращала никакого внимания. И я решил написать ее портрет, вот прямо сейчас взять и написать! И подарить ей! Хорошая идея, если учесть, что рисовать я просто не умею. Чапа и Анфиса ходили в школу рисования имени Репина (в миру Репинка), а я туда даже не совался, т.к. задатков к рисованию у меня не было. Но у меня перед глазами стоял розовый туман, и я, не раздумывая, вынул из тетради промокашку.
Промокашка - лист розовой бумаги, чуть меньше тетрадного листа. Бумага пористая, немного волосатая, как тончайший войлок, и очень хорошо впитывающая чернила. Без такой промокашки писать чернильной авторучкой в тетради очень трудно. Если ее не подкладывать под руку, страница тетради впитывает пот и жир с руки, и написанное расплывается. Каждая тетрадка тогда имела внутри промокашку.
Итак, мольберт готов, а рисовать по промокашке можно только шариковой ручкой. У меня уже такая была, и взяв в руки кисть Дали начал рисовать. Если честно, то рисовал не я. Я как сторонний наблюдатель смотрел как рука сама резкими и быстрыми движениями рисует портрет. А я даже дышать боялся, чтоб не спугнуть это наваждение. Я лишь чувствовал, как сзади, через мое плечо, Анфиса с пацанами молча смотрят на мои художества. Ручка и промокашка не давали шанса на исправление ошибки, а я и не ошибался. Точнее, тот внутри меня не ошибался. Ваял быстро и красиво. Я бы так не смог. Через пять минут портрет был готов. Зрители за спиной просто молчали от удивления, а я встал и пошел к девочке. Столы в читальном зале были длинные и путь к ней занял некоторое время. Еле дошкандыбав на ватных ногах, я вручил портрет со словами:
- Это подарок от меня!
Девочка взяла портрет, мельком взглянув на меня. Ни тебе спасибо, ни бумажки с номером телефона! А я, помявшись, побрел назад к своей компании. Вскоре, мы ушли из библиотеки, и я ее больше никогда не видел.
Много позже, когда в очередной раз зазвонил колокольчик внутри (уже с будущей женой), сквозь розовый туман я пытался повторить состояние того читального зала. Безрезультатно. Рука просто не двигалась и мне приходилось управлять ею. Портрет получался невзрачный и неправильный. Таких попыток я сделал две, и обе были неудачными.
После этого случая все классы стали толпой ходить бибиотеку Короленко, писать сочинения. Моя идея вновь жила без меня. А я в одиночестве все ходил в мою библиотеку, безнадежно надеясь на встречу. Contra spem spero!
Что смотреть туристу в Москве?
Планирую на несколько дней выбраться в Москву, где уже был несколько раз. Сейчас составляю планы где не был и куда стоит сходить. Интересует как культурная так и не культурная программы.
Уже был в других поездках в Кремле, Третьяковской галерее, Пушкинском музее, ВДНХ, Историческом музее, Лужниках, Воробьёвых горах, Палеонтологическом музее, Бородинской панораме, Музее Победы, Царицыно.
В этот раз пока в планах музей Космонавтики, Зоологический и Отечественной войны 1812 года. В какие музеи ещё стоит выбраться? Есть ли какие-нибудь интересные смотровые площадки по типу Исаакиевского собора в Питере, про Останкино и Москов-Сити знаю, но не интересно смотреть на город за стеклом.
Ещё в планах парк Горькова, и Московский зоопарк. Но про зоопарк какие-то странные отзывы, что там ремонт и большинства животных нет. Может кто знает стоит ли идти в зоопарк?
Может кто-нибудь посоветует не очень культурную программу? Всякие развлечения, но без баров и набухания.
Мегафон, вы в себе?
Доброго времени суток дорогие товарищи пикабушники! Суть поста такова, недавно пришлось менять паспортные данные у мегафона в тц на точке данной компании, после чего меня постоянно донимают разные смс от микрозаймов и прочих мошенников. Я подозреваю что номер и паспортные данные были слиты сотрудником данной точки. Если вдруг компания Мегафон соизволит разобраться точка находится в городе Люберцы, тц Светофор. Смс идут постоянно и днем и ночью, некоторые блокируются сразу как спам, некоторые проходят. Кстати не нашел как призвать мегафон через @, кто знает помогите в комментах.
Вот такое как на скрине постоянно и по нескольку раз с одного или разных номеров.













