URL папки: https://disk.yandex.ru/d/qjKx1sj375BcZw
# Список файлов в корне папки
python3 projects/infra-yandex-disk/solution/scripts/yd_public.py list \
--url "https://disk.yandex.ru/d/qjKx1sj375BcZw"
# Список файлов в подпапке "номенклатура"
python3 projects/infra-yandex-disk/solution/scripts/yd_public.py list \
--url "https://disk.yandex.ru/d/qjKx1sj375BcZw" \
--path "/номенклатура"
# Скачать конкретный файл
python3 projects/infra-yandex-disk/solution/scripts/yd_public.py download \
--url "https://disk.yandex.ru/d/qjKx1sj375BcZw" \
--file "/номенклатура/1с-nomen-zapas.xlsx" \
--output "/tmp/номенклатура.xlsx"
# Скачать ВСЮ папку целиком
python3 projects/infra-yandex-disk/solution/scripts/yd_public.py download-all \
--url "https://disk.yandex.ru/d/qjKx1sj375BcZw" \
--output "/tmp/yandex-data"
#!/bin/bash
# Скрипт для загрузки номенклатуры с Яндекс.Диска
YDISK_URL="https://disk.yandex.ru/d/qjKx1sj375BcZw"
OUTPUT_DIR="/opt/data/nomenclature"
# Скачать файл
python3 projects/infra-yandex-disk/solution/scripts/yd_public.py download \
--url "${YDISK_URL}" \
--file "/номенклатура/1с-nomen-zapas.xlsx" \
--output "${OUTPUT_DIR}/nomenclature-$(date +%Y%m%d).xlsx"
echo "Номенклатура загружена: ${OUTPUT_DIR}/nomenclature-$(date +%Y%m%d).xlsx"
# Добавить в crontab -e
# Скачивать обновлённую номенклатуру каждый день в 03:00
0 3 * * * /usr/bin/python3 $WORKSPACE/projects/infra-yandex-disk/solution/scripts/yd_public.py download-all --url "https://disk.yandex.ru/d/qjKx1sj375BcZw" --output /opt/data/ydisk-sync >> /var/log/ydisk-sync.log 2>&1
#!/usr/bin/env python3
"""Интеграция с публичной папкой Яндекс.Диска"""
import sys
sys.path.insert(0, '$WORKSPACE/projects/infra-yandex-disk/solution/scripts')
# Импортировать класс
import importlib.util
spec = importlib.util.spec_from_file_location(
"yd_public",
"$WORKSPACE/projects/infra-yandex-disk/solution/scripts/yd_public.py"
)
yd_public = importlib.util.module_from_spec(spec)
spec.loader.exec_module(yd_public)
# Использовать
client = yd_public.YandexPublicDisk("https://disk.yandex.ru/d/qjKx1sj375BcZw")
# Получить список файлов
files = client.list_files("/номенклатура")
print(f"Найдено файлов: {len(files['_embedded']['items'])}")
# Скачать файл
client.download_file(
"/номенклатура/1с-nomen-zapas.xlsx",
"/tmp/nomenclature.xlsx"
)
print("Файл скачан!")
https://disk.yandex.ru/d/qjKx1sj375BcZw
└── номенклатура/
├── 1с-nomen-zapas.xlsx (441 KB)
└── 1с-тщьутлдфегкф.pdf (2.2 MB)
✅ Список файлов - просмотр содержимого папки
✅ Скачивание файлов - загрузка отдельных файлов
✅ Скачивание папок - рекурсивная загрузка всей структуры
✅ БЕЗ авторизации - не требует OAuth токена
✅ Безопасность - доступ только к публичной папке, только чтение
❌ Только чтение - нельзя загружать/изменять/удалять файлы
❌ Только эта папка - доступ только к публичной ссылке
⚠️ Требует публичный доступ - папка должна быть открыта по ссылке
# Проверьте путь - он должен начинаться со слэша
# Неправильно:
--path "номенклатура"
# Правильно:
--path "/номенклатура"
Возможные причины:
1. Папка перестала быть публичной
2. Ссылка изменилась
3. Файл был удалён или переименован
# Проверить что папка доступна
python3 projects/infra-yandex-disk/solution/scripts/yd_public.py list \
--url "https://disk.yandex.ru/d/qjKx1sj375BcZw"
# Если работает - всё в порядке
# Если ошибка - проверьте ссылку в браузере
python3 yd_public.py list --url "URL" [--path "PATH"]
Параметры:
- --url - публичная ссылка на папку (обязательно)
- --path - путь внутри папки (опционально)
Вывод:
- Имя папки/файла
- Тип (dir/file)
- Даты создания/изменения
- Список содержимого
python3 yd_public.py download --url "URL" --file "FILE" --output "OUTPUT"
Параметры:
- --url - публичная ссылка на папку (обязательно)
- --file - путь к файлу внутри папки (обязательно)
- --output - куда сохранить локально (обязательно)
python3 yd_public.py download-all --url "URL" --output "OUTPUT"
Параметры:
- --url - публичная ссылка на папку (обязательно)
- --output - директория для сохранения (обязательно)
Особенности:
- Рекурсивно скачивает всю структуру
- Создаёт подпапки автоматически
- Показывает прогресс для каждого файла
#!/bin/bash
# /opt/scripts/sync-ydisk-nomenclature.sh
YDISK_URL="https://disk.yandex.ru/d/qjKx1sj375BcZw"
LOCAL_DIR="/opt/data/nomenclature"
SCRIPT_PATH="$WORKSPACE/projects/infra-yandex-disk/solution/scripts/yd_public.py"
LOG_FILE="/var/log/ydisk-nomenclature-sync.log"
echo "=== Sync started: $(date) ===" >> "${LOG_FILE}"
# Создать директорию если не существует
mkdir -p "${LOCAL_DIR}"
# Скачать всю папку
python3 "${SCRIPT_PATH}" download-all \
--url "${YDISK_URL}" \
--output "${LOCAL_DIR}" >> "${LOG_FILE}" 2>&1
if [ $? -eq 0 ]; then
echo "=== Sync completed: $(date) ===" >> "${LOG_FILE}"
else
echo "=== Sync FAILED: $(date) ===" >> "${LOG_FILE}"
fi
Сделать исполняемым:
chmod +x /opt/scripts/sync-ydisk-nomenclature.sh
Добавить в cron:
# Синхронизация каждые 6 часов
0 */6 * * * /opt/scripts/sync-ydisk-nomenclature.sh
Последнее обновление: 2025-11-16
Проверено: ✅ Работает
Путь к скрипту: projects/infra-yandex-disk/solution/scripts/yd_public.py