Массовое скачивание: база шагов со всех курсов одной командой
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
Research direction
Start with python -m stepik_grader.downloader and build_task_directory to understand the existing download flow and path hierarchy. Add mocked HTTP tests for argument parsing, resume behavior, rate limiting, and protecting existing files. Done means a course ID supports a dry run reporting step counts, then downloads steps sequentially and resumes without overwriting existing work.
Written by the indexing model from the issue text.
Description
Часть эпика фазы L (#1053). Опирается на инвентарь #1015.
Зачем
Основа базы — сами шаги: условия, тест-кейсы, шаблоны, метаданные. Сейчас скачивание идёт по одному URL шага (python -m stepik_grader.downloader), то есть база пяти курсов набирается вручную сотнями повторов. Для фазы L это первый и самый механический кусок работы, и он должен быть одной командой.
Курсы: 58852, 68343, 82541 (не пройден), 227004, 174852.
Что сделать
- Команда, принимающая id курса (а не URL шага) и скачивающая все его шаги с кодом по иерархии
курс/секция/урок/шаг— той же, что строитbuild_task_directory. - Возобновляемость: прогон на сотни шагов прервётся (сеть, токен, Ctrl+C). Уже скачанное не перекачивается, журнал говорит, на чём остановились.
- Не затирать написанное:
task{N}_1.pyуже защищён (#554), но при массовом прогоне цена ошибки выше — проверить это явным тестом, а не понадеяться. - Уважать лимиты API: последовательно, с паузами; 429 уже обрабатывается транспортным слоем (
RETRY_STATUS_FORCELIST), но массовый прогон — первый случай, когда это реально проверяется. - Сухой режим (
--dry-run): сколько шагов, сколько с кодом, сколько уже на диске — до того, как что-то качать.
Границы
- Только чтение: ни одной отправки на Stepik этой командой.
- Скачанное не коммитится (
StepikTasks/уже в.gitignore). - Чужой контент (условия и тесты курса) живёт вне git.
Проверка
Выполнимо только локально: нужен живой токен и сеть до Stepik. В облаке закрывается разбор аргументов, построение путей, возобновление по журналу и поведение при 429 — на моках HTTP-слоя. Сам массовый прогон — задача локального окна.
- Dominant language
- Python
- Stars
- 3
- Forks
- 6
- Avg merge
- 2h 41m
- Merged PRs (30d)
- 48
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ArtVsMark/Stepik-Python-Grader
-
Difficulty 2/5 1-3 hours Newbie friendliness 48/100
ArtVsMark/Stepik-Python-Grader#1636 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 Half a day Newbie friendliness 35/100
ArtVsMark/Stepik-Python-Grader#1635 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 18/100
ArtVsMark/Stepik-Python-Grader#1634 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 32/100
ArtVsMark/Stepik-Python-Grader#1633 ·
Maintainers usually reply within 1 day
-
Каталог v1.12.0: Python 3.14 / 3.15 / 3.16 — 3.15 в основной CI, 3.16 в python-next, подъём действийOpen
Difficulty 3/5 1-2 days Newbie friendliness 30/100
ArtVsMark/Stepik-Python-Grader#1632 ·
Maintainers usually reply within 1 day
All issues in ArtVsMark/Stepik-Python-Grader
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 79/100
aws-samples/sample-per-model-bedrock#639 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 86/100
awslabs/visual-asset-management-system#937 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 79/100
project-codeflare/codeflare-sdk#1195 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
pandas-dev/pandas-stubs#2051 ·
Maintainers usually reply within 1 day