Skip to content

About

Проверка доступности ваших файлов на Yandex Диск

Topics

Resources

Stars

139 stars

Watchers

0 watching

Forks

Latest commit

 

History

12 Commits

Folders and files

Repository files navigation

yaDisk-Health

Проверьте, какие файлы на вашем Яндекс Диске доступны для скачивания после первых чисел октября...

Что это?

yaDisk-Health - утилита на Python с оконным интерфейсом и режимом работы в терминале (командной строке). Она получает список файлов вашего Яндекс Диска, запрашивает ссылки на скачивание и пробует прочитать начало каждого файла.

По умолчанию yaDisk-Health читает первые 1024 байта. Если файл меньше, он читает его целиком. Полученные данные не сохраняются на компьютер. Файлы на Диске не изменяются и не удаляются.

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

image image image

Возможности

  • Загрузка списка файлов, включая вложенные папки, без содержимого корзины.
  • Вы можете использовать графический интерфейс или терминал (командная строка) в Windows, Ubuntu и macOS.
  • Проверка всего сохранённого списка, ранее недоступных файлов или случайной части ранее доступных.
  • Проверка выбранных файлов.
  • Показ результата, времени проверки, объёма полученных данных и причины ошибки.
  • Сохранение истории отдельных файлов и итогов каждого запуска.
  • Экспорт текущего состояния (перечень файлов на Диске, их состояние) в CSV формат.
  • Попытка скачивания интересующего файла через веб-интерфейс Yandex Диска.

Для кого этот проект?

Для пользователей Яндекс Диска, которые хотят найти файлы с ошибками скачивания, повторно проверить их доступность или сохранить отчёт.

Как установить и использовать

1. Что понадобится

  • Учётная запись Яндекса с файлами на Диске.
  • Подключение к интернету.
  • Python 3.10 или новее — программа для запуска скрипта. Ниже для Windows и macOS используется Python 3.13.
  • Библиотека requests — компонент для сетевых запросов. Команды установки приведены ниже; зависимость urllib3 установится вместе с ней.
  • Tkinter — компонент Python для оконного интерфейса.

База данных SQLite входит в Python. Отдельный сервер базы данных не нужен. Приложение Яндекс Диска для компьютера также не требуется.

Команды вводите в терминале (командной строке) по одной строке и нажимайте Enter. Если команда завершилась с ошибкой, сначала устраните её.

2. Скачайте проект

  1. Откройте yaDisk-Health.
  2. Нажмите Code → Download ZIP.
  3. Распакуйте архив. Найдите папку, в которой лежит yaDiskHealth.py, и переименуйте её в yaDisk-Health.
  4. Переместите эту папку в домашнюю папку пользователя:
    • Windows: нажмите Win+R, введите %USERPROFILE% и нажмите Enter. Поместите папку проекта в открывшуюся папку.
    • Ubuntu: откройте «Файлы» → «Домашняя папка».
    • macOS: откройте Finder → «Переход» → «Домой».

Дальнейшие команды используют это расположение. Не запускайте скрипт внутри ZIP-архива.

3. Подготовьте Windows 10/11

  1. Откройте страницу Python для Windows. Установите Python install manager по ссылке в начале страницы.
  2. Откройте PowerShell через меню «Пуск». Если он был открыт до установки, закройте его и откройте заново.
  3. Выполните команды ниже:
py install 3.13
py -3.13 --version

Ожидаемый результат второй команды — Python 3.13.x, где x — номер исправления. Этот способ установки описан в документации Python.

  1. Выполните команды ниже:
cd "$HOME\yaDisk-Health"
py -3.13 -m venv .venv
.\.venv\Scripts\python.exe -m pip install requests
  1. Проверьте оконный компонент:
.\.venv\Scripts\python.exe -m tkinter

Должно открыться небольшое тестовое окно. Закройте его и запустите программу:

.\.venv\Scripts\python.exe yaDiskHealth.py

4. Подготовьте Ubuntu

Инструкция рассчитана на Ubuntu 22.04 и новее с рабочим столом. На сервере без рабочего стола используйте режим терминала из раздела ниже.

  1. Откройте терминал (командную строку) сочетанием Ctrl+Alt+T.
  2. Выполните команды ниже:
sudo apt update
sudo apt install python3 python3-venv python3-pip python3-tk
python3 --version

При запросе sudo введите пароль пользователя. Символы пароля не отображаются — это нормально. Подтвердите установку пакетов, если система запросит подтверждение.

  1. Выполните команды ниже:
cd ~/yaDisk-Health
python3 -m venv .venv
.venv/bin/python -m pip install requests
  1. Проверьте оконный компонент:
.venv/bin/python -m tkinter

Закройте тестовое окно и запустите программу:

.venv/bin/python yaDiskHealth.py

5. Подготовьте macOS

  1. Откройте страницу Python для macOS. Выберите выпуск Python 3.13.x, скачайте установщик .pkg и установите его с обычными параметрами. Установщик universal2 подходит для Intel и Apple Silicon; проверьте требования к версии macOS на странице выпуска.
  2. В Finder откройте «Программы» → «Python 3.13» и запустите Install Certificates.command. Дождитесь завершения. Этот шаг описан в инструкции Python для macOS.
  3. Нажмите Command+Пробел, найдите «Терминал» и откройте его.
  4. Выполните команды ниже:
python3.13 --version
cd ~/yaDisk-Health
python3.13 -m venv .venv
.venv/bin/python -m pip install requests
  1. Проверьте оконный компонент:
.venv/bin/python -m tkinter

Закройте тестовое окно и запустите программу:

.venv/bin/python yaDiskHealth.py

6. Получите OAuth-токен Яндекса

OAuth-токен — ключ, который разрешает программе обращаться к вашему Диску. Минимально требуется право чтения cloud_api:disk.read.

  1. Откройте Полигон Яндекс Диска. Эту же страницу открывает ссылка «OAuth-токен:» в графическом интерфейсе.
  2. Нажмите «Получить OAuth-токен».
  3. Войдите в нужный аккаунт Яндекса, проверьте запрошенные права и подтвердите доступ.
  4. Скопируйте полученный токен.

Вставляйте только сам токен, без слова OAuth и без кавычек. Пароль аккаунта в программу вводить не нужно. Не публикуйте токен в GitHub, и прочих публичных ресурсах как социальные сети, чаты телеграм и пр.

7. Выполните первую проверку через окно

  1. Скопируйте токен и нажмите «Вставить» рядом с полем «OAuth-токен:» или вставьте его с клавиатуры. На macOS сочетание ⌘V работает с английской и русской раскладками. Вставка заменяет содержимое поля и убирает пробелы и переводы строк по краям.
  2. Нажмите «Загрузить список файлов» и дождитесь завершения. Этот шаг получает только список файлов и он может занять неопредленное время, всё зависит от количества файлов на диске, скорости сети и состояния инфраструктуры Яндекс.
  3. Выберите режим «Полная проверка».
  4. В строке «Режим» нажмите «Проверить» после поля объёма выборки. Результаты будут появляться в таблице.

Первый запуск «Полной проверки» проверяет весь сохранённый список. Объём чтения каждого файла по умолчанию равен 1024 байтам.

После остановки или аварийного закрытия снова откройте приложение и нажмите «Продолжить проверку» в полном режиме. Эта подпись появляется, когда есть сохранённый остаток полной проверки. Сохранённые успехи и отказы сервера пропускаются, а прерванные попытки, сетевые ошибки и неопределённые результаты повторяются. Окно показывает общий прогресс: «Завершено 6000 из 10000. Осталось 4000». При открытии приложения проверка сама не запускается.

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

Продолжение использует список файлов и объём чтения, сохранённые в начале проверки. Обновление каталога не меняет начатую проверку. Чтобы использовать обновлённый список или другой объём чтения, нажмите «Начать заново». Число потоков при продолжении можно менять.

Индикатор Значение
Зелёный Требуемый объём данных получен.
Красный Проверка завершилась ошибкой: например, сервер отказал в доступе или возник сетевой сбой.
Серый Файл ещё не проверен, проверка остановлена или результат не подтверждён.

Красный индикатор сам по себе не доказывает потерю файла. Проверьте интернет и повторите проверку. Подробности доступны через «История файла» в контекстном меню и в CSV.

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

  • «Только недоступные» — повторно проверить файлы с ранее сохранённой ошибкой.
  • «Случайная проверка доступных» — проверить часть ранее доступных файлов. Укажите процент или количество; по умолчанию выбрано 10%. Для первой проверки используйте полный режим.
  • «Проверить выбранные» — выделите нужные строки и нажмите эту кнопку. Основная кнопка «Проверить» или «Продолжить проверку» запускает выбранный режим для списка, независимо от выделения строк.
  • Правая кнопка мыши по файлу → «Проверить файл» — проверить только файл под указателем, независимо от выделения строк и выбранного режима. На macOS можно использовать Control+щелчок.

Другие действия:

  • «Остановить» — прекратить работу; уже сохранённые результаты останутся в истории. Сначала отметьте флажок без подписи рядом с кнопкой: он разрешает остановку во время работы. Снятие отметки снова отключает кнопку. После завершения работы отметка сбрасывается. Завершение текущих запросов может занять время.
  • «Начать заново» — начать новую полную проверку текущего списка вместо продолжения остатка. Если есть остаток незавершённой полной проверки, программа покажет число оставшихся файлов и запросит подтверждение. Ответ «Нет» сохранит текущую очередь. История сохраняется. Кнопка доступна только в полном режиме.
  • «История проверок» — посмотреть итоги каждого прохода: время, режим, количество проверенных файлов, результаты и статус. Продолжения связаны с исходным проходом. Двойной щелчок по строке откроет результаты этого прохода. Статус «Проход завершён» означает окончание одного прохода; файлы с временными ошибками могут оставаться для повторной проверки. Остаток полной проверки показан в главном окне.
  • Правая кнопка мыши по файлу → «История файла» — посмотреть все проверки этого файла и изменения доступности. Открывается история файла под указателем, независимо от выделения других строк. Если проверок ещё не было, окно покажет «Файл ещё не проверялся». На macOS можно использовать Control+щелчок.
  • «CSV…» — сохранить текущую таблицу для Excel или LibreOffice. Файл содержит дату проверки, результат, HTTP-код, объём чтения и причину ошибки.
  • Правая кнопка мыши по файлу → «Скачать» — открыть ссылку на скачивание в браузере. На macOS можно использовать Control+щелчок. При этом браузер может скачать файл целиком.

Для повторного запуска откройте терминал, перейдите в папку проекта командой cd из инструкции вашей системы и выполните команду запуска программы. Создавать .venv и устанавливать библиотеку каждый раз не нужно.

8. Работа через терминал

Этот режим подходит для любителей командной строки, операционных систем без графического интерфейса. Tkinter для этого режима не нужен, но Python, requests и токен необходимы.

Перейдите в папку проекта. Замените ВАШ_ТОКЕН своим токеном. Сначала загрузите список командой list, затем запустите проверку командой check.

Windows, PowerShell: Выполните команды ниже:

$env:YANDEX_DISK_TOKEN = "ВАШ_ТОКЕН"
.\.venv\Scripts\python.exe yaDiskHealth.py --cli list
.\.venv\Scripts\python.exe yaDiskHealth.py --cli check
.\.venv\Scripts\python.exe yaDiskHealth.py --cli history

Ubuntu и macOS: Выполните команды ниже:

export YANDEX_DISK_TOKEN="ВАШ_ТОКЕН"
.venv/bin/python yaDiskHealth.py --cli list
.venv/bin/python yaDiskHealth.py --cli check
.venv/bin/python yaDiskHealth.py --cli history

Переменная YANDEX_DISK_TOKEN действует в текущем сеансе терминала. В новом сеансе задайте её снова. Оконный интерфейс также может получить токен из этой переменной. Команда history читает локальную историю и работает без токена и интернета.

Команда check использует сохранённый список. В полном режиме она продолжает остаток последней незавершённой проверки и выводит общий прогресс. После завершения всех файлов команда начинает новый полный обход. Чтобы добавить новые файлы или обновить сведения о них, выполните list, затем check --restart.

Дополнительные параметры добавляйте после --cli check:

Параметры Действие
--mode full Продолжить полную проверку или начать новую, если остатка нет; это режим по умолчанию.
--restart Начать полную проверку всего текущего списка заново; только для полного режима без --path.
--mode failed Проверить ранее недоступные файлы.
--mode random --sample-percent 10 Проверить случайные 10% ранее доступных файлов.
--mode random --sample-count 100 Проверить до 100 случайных ранее доступных файлов.
--path "disk:/Документы/отчёт.pdf" Проверить один файл по точному пути из списка; параметр можно повторить для нескольких файлов.
--workers 3 Выполнять до трёх проверок одновременно. По умолчанию — 6, допустимо от 1 до 12.
--probe-bytes 4096 Читать первые 4096 байт вместо 1024 при новом запуске. Продолжение использует сохранённый объём.

Например, повторная проверка файлов с ошибками:

.\.venv\Scripts\python.exe yaDiskHealth.py --cli check --mode failed
.venv/bin/python yaDiskHealth.py --cli check --mode failed

Не сочетайте --path с --mode и параметрами случайной выборки. Процент и количество файлов задаются по отдельности. Остановить проверку можно сочетанием Ctrl+C. Справку по всем параметрам открывает --help вместо --cli check.

9. Где хранятся результаты

Рядом с yaDiskHealth.py создаётся файл yaDiskHealthHistory.sqlite3. В нём находятся список файлов, история проверок, итоги запусков и очередь полной проверки. Папка проекта должна быть доступна для записи.

Файл yaDiskHealthHistory.sqlite3.lock служит для блокировки одновременных проверок. Его наличие после выхода из программы нормально.

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

Токен доступа в эту базу не записывается! Для другого аккаунта Яндекса используйте отдельную папку проекта: база не разделяет данные по аккаунтам. CSV сохраняется в место, которое вы выбрали в окне сохранения.

10. Если что-то не работает

Проблема Что сделать
Windows не находит py Установите Python install manager и откройте PowerShell заново. Если старый py не понимает install, выполните pymanager install 3.13.
No module named requests Повторите команду установки requests для вашей системы. Запускайте скрипт через Python из .venv.
Tkinter отсутствует или No module named tkinter В Ubuntu установите sudo apt install python3-tk. В Windows и macOS используйте полную установку Python из инструкции выше.
Не удаётся открыть окно на Ubuntu Server или через SSH Используйте команды с --cli. Для окна нужен рабочий стол.
can't open file ... yaDiskHealth.py Проверьте распаковку архива и перейдите в папку, где находится yaDiskHealth.py.
HTTP 401 Получите новый токен и вставьте его без лишних символов.
HTTP 403 Проверьте аккаунт и наличие права cloud_api:disk.read у токена.
HTTP 429 Достигнут лимит запросов. Программа делает паузы и повторяет запросы; при повторных сбоях уменьшите --workers.
Тайм-аут или ошибка сети Проверьте интернет и доступность Яндекс Диска, затем повторите проверку.
Не удалось открыть или сохранить историю Проверьте право записи в папку проекта. Не запускайте скрипт из архива.

About

Проверка доступности ваших файлов на Yandex Диск

Topics

Resources

Stars

139 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages