Как стать автором
Обновить

Комментарии 28

Отличная идея


Если решите развивать, было бы круто добавить многопоточность и оформить в виде питоновского пакета (чтобы можно было pip install habrArticleSrcDownloader)

Спасибо. Многопоточность из головы выпала. Добавлю ваши замечания.

Многопоточность добавил, теперь все зависит от кол-ва ваших процессоров.

А вот чтоб еще и с комментами - можно такое?

Да, доработаю.

Добавил, пока кривовато. Не придумал как их красиво сохранять (а главное вытащить).

Спасибо! Вообще, идея супер.

До сих пор пытаюсь найти скрипт, который будет сохранять статьи из списка ссылок на хабр и отдельно комментарии выше определенного рейтинга, в отдельные маркдаун файлы, например выше +2. В идеале вообще, скрипт добавлял бы ссылки на комментарий во фронтматтер.

Можно попросить вас добавить возможность скачать только одну статью по айди?

Если нужна только одна статья именно в формате md и прямо сейчас, то можно использовать плагин (работает в хроме и опере (через прокладку) https://chrome.google.com/webstore/detail/markdownload-markdown-web/pcmpcfapbekmbjjkdalcgopdkipoggdi
А так - да, действительно было бы замечательно - иметь возможность скачивать не все статьи пользователя сразу, а только какую-то одну конкретную. Ну, и как выше уже писали - если бы еще вместе с комментариями - было бы еще лучше.

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

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

Хотелось бы уточнить по поводу трекера. Не совсем понимаю, что Вы имеете в виду?

Из Вашего комментария - "возможность скачать только одну статью по айди"

Как я понимаю, т.е. уже есть какой-то подготовленный список статей, которые Вам интересны, с url-ами, содержащими ID статьи?, как, например, обсуждаемая статья
https://habr.com/ru/post/665254/
Если есть список - почему бы не использовать специализированные инструменты, именно и предназначенные для скачивания файлов любого типа из интернета - первое, что приходит на ум - wget или curl.

Если же интересует именно формат md, то после (или даже во время загрузки по пайпу) файлы в формате html уже локально можно переконвертировать в md (вроде как pandoc это умеет искаропки)

Или я опять делаю поспешные выводы?

Можно попросить вас уточнить как вы предлагаете использовать wget? Спрашиваю потому, что если сделать wget -r -np https://habr.com/ru/post/665254/, то скачиваются 2 файла: с содержимым статьи и с комментариями:
$ find . -type f
./habr.com/ru/post/665254/index.html
./habr.com/ru/post/665254/comments/index.html
./habr.com/robots.txt
$

В результате я вижу 2 проблемы: как скачать прочие ресурсы, например картинки, не выкачивая весь хабр. И как склеить тело статьи с комментариями.
Добавил возможность скачивать свои закладки.

Скачиваем статьи пользователя:
./src/main.py -u jessy_james

Скачиваем закладки пользователя:

./src/main.py -f jessy_james
Огромное спасибо!

Интересно а это можно как то оформить в формате плагина для обсидиан?

Спасибо! Отличный скрипт! Скачал уже 2 Гб статей.

Столкнулся с такой особенностью. Если заголовок статьи содержит, например, знак вопроса, то имя папки и файлов будут включать экранированный знак вопроса '/?'. Если эти файлы потом перенести в Win, то их имена не читаются. Можно добавить в скрипт игнорирование спецсимволов при создании файлов/папок?

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

Хороший инструмент! Я обычно сохраняю в pdf. Но это не всегда удобно. Если есть анимированные картинки, то уже совсем грустно становится. Кстати, в некоторых статьях есть картинки с форматом jpeg и с форматом PNG. Вот jpeg почему-то портит картинку в браузере и VS Code. Только отдельным просмотрщиком можно смотреть. А вот PNG уже нормально. Есть ли возможность указать на принудительное сохранение картинок в нужном формате? А также сделать сохранение только конкретной статьи, а не всех?

Принудительный формат картинок не укажешь, картинка скачивается по ссылке которая указана в статье (Что автор поставил, то и будет.).

Есть предложение использовать в именовании каталогов 3-значную порядковую нумерацию, дополняя слева незначащими нулями (например, 001 — каталог с публикацией #1, 078 — каталог с публикацией #78). Дабы на выходе, при отображении каталогов в файловом менеджере, была сортировка, как вы и задумывали — от последней написанной к первой (хотя при загрузке своих публикаций я получил обратную сортировку, которая как мне кажется и правильная — от первой написанной к последней).


image

Я писал, что скачивается от последней статьи к первой. Нумерация же как раз шла от первой написанной к последней. Сейчас же из за многопоточности порядок скачивания как получится.

В моем случае они скачались ровно по порядку от старой к новой, с соответствующей нумерацией. По трехзначной нумерации, эстетики ради, подумайте...

Сделал нумерацию.

Супер. Отдельное спасибо за реализацию пожеланий!

Добавил возможность скачивания одиночной статьи:
./src/main.py -s 665634
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации