Skip to the content.

Фото из «безлимита»

← назад к README

В чём проблема

При безлимитной автозагрузке (тарифы Яндекс 360) фото и видео с телефона не лежат в папке «Фотокамера» и не занимают место. Их видно только в разделе «Фото» (справка Яндекса). Мы проверили: ни REST API, ни WebDAV их не видят (DiskAreaDoesNotExistsError, 404), поэтому rclone и любые программы для бэкапа их не скопируют.

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

Сколько у вас в безлимите

В веб-версии: Фото → ⋯ → «Безлимит». Точный объём в байтах показывает API (поле photounlim_size), токен тот же, что и для rclone:

curl -s -H "Authorization: OAuth ТОКЕН" "https://cloud-api.yandex.net/v1/disk/?fields=photounlim_size,total_space,used_space"

В Windows замените curl на curl.exe. Свободно = total_space − used_space, этого должно хватить на photounlim_size.

Способ 1. Десктоп-приложение Яндекса (официальный, без переноса)

Приложение Яндекс Диска для Windows и macOS умеет скачать все фото с Диска на компьютер, в том числе из безлимита: Настройки → Автозагрузка → «Копировать фото и видео на компьютер» → все (справка). Нужно место на диске и подписка Яндекс 360: с 3 июня 2026 года без неё клиент не синхронизирует файлы (3DNews). Во время ограничений Яндекса этот способ мы не проверяли.

Способ 2. Вручную в браузере (до 500 фото за раз)

  1. Создайте на Диске папку, например Безлимит.
  2. Откройте Фото → ⋯ → «Безлимит».
  3. Щёлкните первое фото, затем с Shift — последнее. Больше 500 за раз выделить нельзя.
  4. Переместить → папка Безлимит → Переместить.
  5. Повторяйте, пока раздел не опустеет.

Работает, но на тысячах фото это долго. Мы так проверяли перенос: квота сдвигается ровно на размер файлов.

Способ 3. Автоматически, скриптом yd.js

Скрипт делает то же, что веб-версия, только сам: собирает список безлимита и переносит его пачками по 40 (больше Яндекс не принимает: Too many items). Запросы идут из вашего браузера с вашей сессией, скрипт только нажимает за вас. На тестовом аккаунте он перенёс 30 738 файлов (152 ГиБ) примерно за 6 часов, не перенеслось 49 (ошибки 500 на стороне Яндекса).

[!WARNING] Это внутренний, недокументированный API веб-версии Диска. Яндекс может изменить его в любой момент. Скрипт ничего не удаляет, только перемещает, но используйте на свой риск.

Нужны: Node.js 18+, Google Chrome (или другой браузер на Chromium), репозиторий:

git clone https://github.com/KenGuru66/yandex-disk-rescue.git
cd yandex-disk-rescue/tools
npm install

1. Создайте на Диске папку Безлимит (или другую: тогда задайте её в YD_DEST).

2. Запустите отдельный экземпляр браузера с портом отладки и отдельным профилем:

# Windows
& "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="$env:TEMP\yd-profile" https://disk.yandex.ru/client/photo
# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir=/tmp/yd-profile https://disk.yandex.ru/client/photo
# Linux (в WSL добавьте --ozone-platform=wayland --disable-gpu, иначе может не работать мышь)
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/yd-profile https://disk.yandex.ru/client/photo

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

3. Войдите в этом окне в свой аккаунт Яндекса и оставьте открытой вкладку Диска.

4. Соберите список (только чтение, 5–15 минут на 30 тысяч фото) и перенесите:

node yd.js list state
node yd.js move state 100000 40

state — папка, куда скрипт пишет список и журнал переносов. Повторный move продолжит с места остановки и повторит только неудачные. Если Яндекс покажет капчу, скрипт остановится: пройдите её в окне браузера и запустите move снова.

5. Когда закончите, закройте окно браузера и удалите папку профиля (yd-profile): в ней cookies вашей сессии.

Проверено на Linux (WSL) с Chrome 155. На Windows и macOS команды те же, но мы их не прогоняли: если что-то пойдёт не так, напишите в issues.

После переноса

← назад к README