user5305031

user5305031

Для связи - @rendleks
Пикабушник
Дата рождения: 27 августа
544 рейтинг 6 подписчиков 10 подписок 10 постов 1 в горячем
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

PostgreSQL установка и подключение к демо базе данных

Сейчас узучаю базы данных, скачал учебник для ознакомления. В нём приведены примеры для демо базы данных, которую я замонался подключать. Вот небольшая инструкция: Как подключить демо базу данных. Книгу можно найти тут.

Небольшая ремарочка, я использую линукс минт на английском языке.

  1. установка postgres в вашу систему, для линукс:

    sudo apt-get update

    sudo apt-get install postgrespro-std-14

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

    export LC_CTYPE=ru_RU.UTF8

    export LC_COLLATE=ru_RU.UTF8

  3. далее заходим в рабочию среду postgres, вводим в терминале

    sudo su - postgres

  4. скачаем демо базу данных

    wget https://edu.postgrespro.ru/demo-small.zip

  5. проверяем скачалась ли база, вводим в терминале ls

  6. в руководстве было написано использовать команду: zcat demo-small.zip | psql Но, она у меня так и не заработала. Пришлось распаковать базу данных.

    unzip demo-small.zip

  7. Далее вводим

    postgres# \i demo-small-20170815.sql

  8. Поздравляю! Вы подключись! Вы великолепны! После подключения и выполнения запроса, терминал выглядит так:

Надеюсь, Вам поможет моё руководство. Спасибо за внимание!

Предложения, пожелания приветствуются.

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

Лучшие - враг хорошего

В общем, привет. Давно не было постов. Хочется немного поделиться своими переживаниями.

Я заметил за собой такую вещь: если что-то делать, делать нужно идеально или вообще не делать. Как оказалось, это очень сильно мешает мне продвигаться по жизни, потому что срабатывает такой механизм: появляется идея или мысль, приступаю к её реализации, понимаю, где можно сделать лучше, недостаточно знаний или умений. Бросаю дело, так и не заканчивая его. То есть, до своего логического завершения так ничего и не доходит. Скорее всего, это психология, и мне нужно обратиться к специалистам. Что вы думаете, господа и дамы.

Лучшие - враг хорошего

p.s.:

Вот что ответил ChatGPT:

Чувство совершенства может быть источником мотивации и драйва, но может также привести к негативным последствиям, таким как перфекционизм, прокрастинация и чрезмерный стресс. Вот несколько советов, которые могут помочь вам справиться с этим чувством:

  1. Признайте, что идеальность недостижима. Никто не идеален, и все мы делаем ошибки. Принимая это, вы можете сократить ожидания, которые вы накладываете на себя, и стать более терпимыми к себе.

  2. Установите реалистичные цели. Разработайте конкретные, измеримые и достижимые цели. Это поможет вам сосредоточиться на конкретных задачах и избежать чувства, что все должно быть идеально.

  3. Уважайте свои достижения. Не забывайте отмечать свои успехи, как маленькие, так и большие. Признавая свои достижения, вы можете чувствовать большую уверенность и мотивацию.

  4. Практикуйте медитацию и/или йогу. Эти практики могут помочь вам научиться справляться со стрессом и беспокойством, а также научиться принимать себя таким, какой вы есть.

  5. Используйте свое стремление к совершенству в качестве стимула. Используйте свое стремление к совершенству как мотивацию для улучшения своих навыков и знаний, но не позволяйте ему контролировать вашу жизнь.

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

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

Есть ли жизнь после нового года 2023

Здравствуйте, друзья. Небольшое наблюдение или пост боли. Пошёл уже третий по счёту месяц 2023 года и что-то он совсем меня не радует. Вернее радует, но не совсем. Денег как будто стало меньше хватать, причем снижения зарплаты не было, траты не увеличивались, а денег хватает в притык от зарплаты до зарплаты.

Вот нужно за квартиру платить, а зарплату будет лишь 10-го числа. Для того чтобы проанализировать свои расходы я веду гугл-таблицу и еженедельно заношу траты в нее.

Кому интересно, можно перейти по ссылке глянуть - таблица ведения бюджета.

Суть её очень проста, к такому формату пришёл сам. Есть 3 колонки:

  1. комментарии - на что тратим, от чего получаем

  2. приход - приход денег (зарплата, продажа вещей, дивиденды, дни рождения, праздники)

  3. расход - можно подстроить под свои нужды

    Если лень переходить на гугл - вот скриншот.

Есть ли жизнь после нового года 2023

Больше всего денег уходит на аренду квартиры, бензин и еду. Но с этими тратами по своей сути ничего поделать нельзя.

Дальше по расходам идёт - еда на работе, да, мы офисные планктоны любим пожрать в рабочее время и в не рабочее тоже 😁. Вот с этими тратами уже можно что-то сделать, например, брать с собой еду из дома, но тогда будет лишний раз напрягать хозяюшку на готовку. Нужно провести эксперемент, кто быстрее устанет: я таскать на работу контейнеры или жена делать еду на одну порцию больше, чем обычно.

Февраль, подкинул ещё незапланированных трат на одежду и лечение зубов в районе 10 тыс.

Прихожу к такому выводу, что нужно больше зарабатывать, а не уменьшать расходы. Как думаете уважаемые читатели?

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

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

Как правильно работать в офисе

  1. Приходим на работу, чуть пораньше, минут за 5, не более.

  2. Включаем компьютер и открываем что-нибудь по работе. Работать пока не нужно.

  3. Тупим часик в интернете, читая статьи и листая соц. сети или телеграмчик.

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

  5. Прошло ещё пол часа, можно и покурить, если не куришь, сходи в туалет.

  6. Теперь можно поработать, а между тем прошло 2 часа рабочего времени.

  7. В это время лучше не отвлекаться, а усердно сосредоточится на работе, ведь скоро обед.

  8. Время 12 часов дня. Пора закинуться калориями, для этого нужно позвать коллег или коллегу, чтобы было с кем потрещать, пообсуждать рабочие моменты и вообще.

  9. После обеденное время, морфей одолевает, боремся всеми силами. Обычно помогает увлеченная работа.

  10. Часы подходят к 16, время сделать перерыв. Надеемся, что устали мы не сильно. Надо чайку попить.

  11. Осталось несчастные 1.5 часа до свободы. В это время не стоит себя утруждать, ведь ещё нужны силы для похода домой. По пути надо зайти в магазин и купить себе или своим родным вкусняшки.

  12. За пол часа до окончания рабочего дня нужно начать собираться, чтобы не делать это впопыхах в последние 10 минут.

  13. Ура! Рабочий день подошёл к концу. Прощаемся с коллегами!

p.s. : lf gjikj jyj dc`/ elfxb!

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества