Гайд Forum Post Downloader - скрипт для Tampermonkey

Пришлось поменять настройку в TamperMonkey, чтобы это вернуть. Кажется это было в разделе 'Downloads BETA', настройка 'Download Mode:' Я поменял выпадающий список на 'Native'
 
Пара релизов для тех, кто хочет потестить:
Бета-версия 3.21.b03 - фикс для старых ссылок bunkr (cdn.bunkr.*):
https://github.com/courtneydax/sc-postdl/blob/main/scpostdl-beta.user.js
Версия Violentmonkey 3.21.vm02 (с фиксом bunkr):
https://github.com/courtneydax/sc-postdl/blob/main/scpostdl-vm.user.js
xandominiriNeed2Sleep
Версия Violentmonkey протестирована в Chrome и Firefox (sideload с developer-версией), и должна в основном работать, но понадобится бета-версия v2.45.5 ViolentMonkey. У Firefox/VM всё ещё проблемы с прямыми blob-загрузками, но обычные загрузки должны работать.
Не знаю, буду ли поддерживать VM дальше, так как сам им не пользуюсь, но хотел хотя бы дать базу для поддержки VM в 3.21. Плюс, с последними обновлениями не так много изменений нужно относительно основного скрипта. Попробуйте и дайте знать.
 
Странно, видимо пришлось перезапустить браузер, потому что внезапно снова заработало.
 
willowbranch
Протестировал 3.21.b04 с Firefox/Tampermonkey, и старые ссылки Bunkr работают корректно.
Также протестировал 3.21.vm03 с Firefox/Violentmonkey, но там старые ссылки Bunkr не работают. И обычные, и прямые загрузки не проходят.
Резолвер находит data-file-id, но ответ API _001_v2 возвращается как [object HTMLDocument]. JSON.parse после этого падает, и скрипт откатывается на мёртвый legacy-CDN URL, который пропускается как HTML/maintenance ответ.
Обычная загрузка:
Код:
[Bunkr] data-file-id from https://bunkr.cr/v/indiefoxx-355326119664164865-HzPcRSPX.mp4: 2961368
[Bunkr] api _001_v2 id=2961368: bytes=21 head=[object HTMLDocument]
[Bunkr] tryNewApi threw: JSON.parse: unexpected character at line 1 column 2 of the JSON data
[Bunkr] UNRESOLVED -> falling back to the page URL, which will download as HTML: https://cdn.bunkr.ru/indiefoxx-355326119664164865-HzPcRSPX.mp4
BUNKR SKIPPED (HTML/MAINTENANCE RESPONSE)
Прямая загрузка имеет ту же проблему с нумерованным legacy-CDN:
Код:
https://cdn8.bunkr.ru/Kimberly-Kane-and-Ryan-Keely.1080p-0oQsNc0x.mp4

[Bunkr] data-file-id from https://bunkr.cr/v/Kimberly-Kane-and-Ryan-Keely.1080p-0oQsNc0x.mp4: 13453971
[Bunkr] api _001_v2 id=13453971: bytes=21 head=[object HTMLDocument]
[Bunkr] tryNewApi threw: JSON.parse: unexpected character at line 1 column 2 of the JSON data
BUNKR SKIPPED (HTML/MAINTENANCE RESPONSE)
Похоже, что само обнаружение legacy-ссылок работает в VM, но запрос к API Bunkr возвращает HTML-документ вместо JSON.
 
iNeed2Sleep
Исправлено в vm04. Я в общем-то взял это почти дословно из твоего скрипта XenForoPostDownloader-3.17-VM2.
Новое в vm05. Из того же скрипта я вернул поддержку мобильных, так как это можно было перенести почти так же, хотя стилизация была завязана на isMobile, так что вид на десктопе не пострадал.
 
Спасибо за скрипт!
Есть ли простой способ настроить его так, чтобы скачивались только картинки?
Предполагаю, что один из способов — убрать разрешённые расширения файлов в Tampermonkey, но это повлияет на другие скрипты, так что лучше этого не делать без необходимости. Есть ли настройка или строка в скрипте, которую можно поменять для того же эффекта?
Только нашёл этот скрипт, так что все видео, которые нужны, уже есть, не хватает только всех выложенных картинок.
 
willowbranch
Теперь работает. Так и не собрался добавить старую поддержку Bunkr в свою сборку VM2, так что приятно, что теперь она есть.
 
Можешь навести курсор на кнопку скачивания и снять галочки с видео-провайдеров для поста, где есть, скажем, видео с bunkr и картинки с goonbox. Либо можно зайти в Tampermonkey Settings->Downloads BETA->Whitelisted File Extensions и убрать все видео-расширения, но это повлияет на все скрипты, использующие Browser API для загрузок.
Круто. :)
Новая версия b06:
https://github.com/courtneydax/sc-postdl/raw/refs/heads/main/scpostdl-beta.user.js
Версия VM vm06:
https://github.com/courtneydax/sc-postdl/raw/refs/heads/main/scpostdl-vm.user.js
- Исправления Filester (раньше не было возможности протестировать миграцию постов filester, так что теперь должно быть норм)
 
willowbranch
Похоже, Filester ещё кое-что поменял после моего первого фикса. Пришлось обновить и свою версию, потому что их серверная валидация отклоняла ответы API вроде fsc3.cdn.cr.
Одиночные ссылки /d/ теперь работают в b06 и vm06, но альбомы /f/ всё ещё переключаются обратно на старый формат прямого URL: https://fsc1.cdn.cr/v/
Затем он повторно пробует тот же URL /v/ на fsc2 и fsc3, но теперь все возвращают 404.
Слаги альбомов должны использовать тот же V2-резолвер, что и одиночные ссылки /d/: /v2/?token=&download=true&n=
Протестировано с b06 в TM/Firefox и vm06 в VM/Firefox.
 
Ребят, кто-нибудь знает, есть ли лимит на размер поста? Пытался скачать эти 5 турбо-видео тут: https://simpcityopen.com/posts/6435/, но после завершения процесса скачивания ничего не появляется. Ни zip-папки, ничего.
 
Лимита на размер поста нет, но эти пять турбо-видео весят в сумме около 3 ГБ. Если включена опция ZIP, браузер может не справиться с созданием такого большого архива, из-за чего в итоге ничего не сохранится. Попробуй снять галочку с ZIP и скачать файлы по отдельности.
 
iNeed2Sleep
b07/vm07 уже выложен с этими исправлениями, но, вероятно, я выпущу ещё одно обновление в эти выходные, в зависимости от результатов тестов. Если всё будет хорошо, упакую и выложу в основной репозиторий. Версию VM оставлю в своём репо, не знаю, хочет ли POKI официально поддерживать VM в основном репо.
 
Не знаю, новая это проблема или я только сейчас заметил, но полноразмерные картинки Goonbox не скачиваются.
 
willowbranch
Запросы к API Goonbox возвращают 403 в Firefox, потому что GM_xmlhttpRequest из вкладки SimpCity не содержит нужных first-party куки Goonbox/Cloudflare.
Я обошёл это с помощью небольшого same-origin моста. Добавь // @match https://goonbox.cr/*, затем используй одну неактивную вкладку Goonbox, открытую через GM_openInTab. Вкладка Goonbox читает пути API из очереди в GM storage, запрашивает их через fetch(url, { credentials: 'include' }) и записывает JSON-ответ обратно через GM_setValue/GM_getValue.
Существующий прямой запрос к API можно оставить как первую попытку. Если он возвращает 403, пустые данные или невалидный JSON, отправь тот же запрос через мост. Используй его и для /api/images/{id}, и для /api/albums/{slug}/images?page={page}, и переиспользуй одну и ту же вспомогательную вкладку на весь батч.
Сохрани дескриптор вкладки, возвращённый GM_openInTab, и закрой его через tab.close() через несколько секунд после последнего запроса. Один window.close() не всегда срабатывал в Chrome.
 
У меня то же самое. Такое было раньше на этой неделе, и я исправил это, вручную обновив скрипт. Но в этот раз не сработало.
 
iNeed2Sleep
Хорошо подметил. Включил в b08/vm08. Мне ещё нужно протестировать filester, был занят на выходных и в течение недели. Реальная жизнь порой бесит, лол.
 
willowbranch
Ничего страшного, реальная жизнь важнее.
Протестировал b08/vm08. Chrome + Tampermonkey и Firefox + Violentmonkey оба сработали и скачали оригинальные картинки Goonbox.
А вот с Firefox + Tampermonkey всё ещё проблемы.
На посте с JPGX-картинками и https://goonbox.cr/a/apX4HA JPGX-картинки резолвились сразу, а запрос к API Goonbox вернул ожидаемый 403. Потом он ждал почти ровно 20 секунд, и альбом не резолвился, так что похоже, что helper-вкладка так и не отправила свежий heartbeat "ready". Посты с одной картинкой в таком случае тоже могут откатываться на превью в низком разрешении.
У меня в моей версии сработало открытие настоящего URL картинки или альбома Goonbox вместо https://goonbox.cr/, с добавлением bridge-маркера в URL. Bridge worker запускается только когда этот маркер присутствует. Он переиспользует одну неактивную helper-вкладку, пока есть активные запросы, сбрасывает таймер закрытия при каждом новом запросе, и закрывает вкладку только через пару секунд после того, как очередь и активные запросы опустеют.
Я бы ещё чистил старое значение ready перед открытием helper'а. Если свежий heartbeat не приходит за 20 секунд, закрывал бы существующий хендл вкладки и пробовал открыть заново один раз перед включением circuit breaker. Same-origin fetch тоже может ретраиться пару раз на случай, если Cloudflare ещё грузится.
 
Это мелочь, но есть ли способ проверить, что всё на странице скачалось, не перебирая каждый zip-файл вручную и не сверяя его с постами на странице?
 
Кажется, в конце он ставит реакцию peepolove, так что если она есть, значит пост скачался (полностью?)?
 
Назад
Верх