Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
1770ac8
fix: handle additional redirect links (Xenforo)
NTFSvolume Feb 15, 2026
ac91600
feat: use original name (turbovid)
NTFSvolume Feb 13, 2026
7b5e318
fix: album title
NTFSvolume Feb 13, 2026
d17d026
fix: download of multipage profile albums (Chevereto)
NTFSvolume Feb 15, 2026
4f341aa
fix: update CDN overrides (bunkr)
NTFSvolume Feb 15, 2026
06f6100
feat: add filester support
NTFSvolume Feb 14, 2026
d031bf8
feat: add album support
NTFSvolume Feb 14, 2026
481aae3
feat: add folder support
NTFSvolume Feb 14, 2026
70f664f
refactor: simplify
NTFSvolume Feb 15, 2026
fbff84d
refactor: simplify css iget API
NTFSvolume Feb 15, 2026
09db220
feat: add upload.ee support
NTFSvolume Feb 15, 2026
3a3b11d
refactor: add nextjs13+ parsing utils
NTFSvolume Feb 15, 2026
0d2bd2c
refactor: some commnets and reorder
NTFSvolume Feb 15, 2026
5bed309
tests: add tests
NTFSvolume Feb 15, 2026
648f2e7
refactor: typeAlias
NTFSvolume Feb 15, 2026
0166f99
refactor: use external package (Mega.nz)
NTFSvolume Feb 16, 2026
9640c38
refactor: update transfer it
NTFSvolume Feb 16, 2026
5da4228
tests: add tests
NTFSvolume Feb 16, 2026
1d5df21
tests: update tests
NTFSvolume Feb 16, 2026
94e6865
refactor: update error handling
NTFSvolume Feb 16, 2026
c8a52a6
refactor: simplify
NTFSvolume Feb 16, 2026
53fa2cd
tests: add tests
NTFSvolume Feb 16, 2026
a66efe1
chore: add async-mega-py dep
NTFSvolume Feb 16, 2026
6f3cb00
chore: update poetry lock
NTFSvolume Feb 16, 2026
14c4dc0
Update bunkrr.py
Was213xzc Feb 28, 2026
0a9a7e9
Lock Ruff version
jbsparrow Mar 13, 2026
6d78d05
Update Ruff Version Requirement
jbsparrow Mar 13, 2026
9ffffc6
Merge branch 'dev' into fix_bunkr_thumbs
jbsparrow Mar 13, 2026
5342701
Merge branch 'dev' into next_js_13
jbsparrow Mar 13, 2026
8179963
Merge branch 'dev' into upload.ee
jbsparrow Mar 13, 2026
3e5a0b2
Merge branch 'dev' into css_iget
jbsparrow Mar 13, 2026
369c83e
Merge branch 'dev' into filester
jbsparrow Mar 13, 2026
6bda65b
Merge branch 'dev' into bunkr_cdns
jbsparrow Mar 13, 2026
dde38b9
Merge branch 'dev' into fix_chevereto_albums
jbsparrow Mar 13, 2026
be82e6c
Merge branch 'dev' into turbo_name
jbsparrow Mar 13, 2026
b26b943
Merge branch 'dev' into redirects_xenforo
jbsparrow Mar 13, 2026
7b8bc64
Merge pull request #1660 from jbsparrow/external_mega
jbsparrow Mar 13, 2026
21c89d0
Merge pull request #1659 from jbsparrow/fix_bunkr_thumbs
jbsparrow Mar 13, 2026
bf63463
Merge pull request #1653 from jbsparrow/next_js_13
jbsparrow Mar 13, 2026
f4418b5
Merge pull request #1652 from jbsparrow/upload.ee
jbsparrow Mar 13, 2026
b578068
Merge pull request #1651 from jbsparrow/css_iget
jbsparrow Mar 13, 2026
9385649
Merge pull request #1649 from jbsparrow/bunkr_cdns
jbsparrow Mar 13, 2026
3cad241
Merge pull request #1650 from jbsparrow/filester
jbsparrow Mar 13, 2026
fa36ab1
Merge pull request #1648 from jbsparrow/fix_chevereto_albums
jbsparrow Mar 13, 2026
d4afea1
Merge pull request #1647 from jbsparrow/turbo_name
jbsparrow Mar 13, 2026
31b3f7b
Merge pull request #1646 from jbsparrow/redirects_xenforo
jbsparrow Mar 13, 2026
25eb09b
fix: series name and chapter selection (Toonily)
Barbarella6666666 Mar 18, 2026
33cd8fc
ci: Updating tests
Barbarella6666666 Mar 18, 2026
d2b5d04
Merge pull request #2 from jbsparrow/dev
Was213xzc Mar 21, 2026
c79b2c9
Merge branch 'patch-1' into dev
Was213xzc Mar 21, 2026
b449c31
merge from dev
Was213xzc Mar 21, 2026
f15e256
Merge pull request #1675 from Barbarella6666666/toonily
jbsparrow Apr 1, 2026
79aa881
Merge pull request #1665 from Was213xzc/patch-1
jbsparrow Apr 1, 2026
84a2f78
Fix Bunkr child album discovery
Was213xzc Apr 17, 2026
5d5a1c0
Handle Bunkr pagination and Fileditch Turnstile
Was213xzc Apr 17, 2026
b7e65ee
Ignore local crawler temp artifacts
Was213xzc Apr 17, 2026
ac4edf7
Improve Bunkr scraping performance
Was213xzc Apr 17, 2026
f606c82
Keep Bunkr file links from expanding albums
Was213xzc Apr 18, 2026
c5e28bc
Handle terminal Bunkr album probe pages explicitly
Was213xzc Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,18 @@

# Python cache
__pycache__
/.pytest_cache/
/.ruff_cache/
/pytest-cache-files-*/

# Local crawler debug/temp artifacts
/bunkrr_*.txt
/output_bunkrr*.txt
/check_db.py
/tmp_*/
/tmp_*.html
/tmp_*.js

# venv
.venv
venv
Expand All @@ -23,6 +35,7 @@ venv

# Compiled package
/dist/
/scripts/release/

# MacOS system files
**.DS_Store
Expand Down
2 changes: 2 additions & 0 deletions cyberdrop_dl/crawlers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
from .fapello import FapelloCrawler
from .fileditch import FileditchCrawler
from .files_vc import FilesVcCrawler
from .filester import FilesterCrawler
from .flickr import FlickrCrawler
from .flugel_anime import FlugelAnimeCrawler
from .fourchan import FourChanCrawler
Expand Down Expand Up @@ -133,6 +134,7 @@
from .twitter_images import TwimgCrawler
from .twpornstars import TwPornstarsCrawler
from .txxx import TXXXCrawler
from .upload_ee import UploadEECrawler
from .upornia import UPorniaCrawler
from .vbulletin import VBULLETIN_CRAWLERS
from .vipr_dot_im import ViprImCrawler
Expand Down
2 changes: 1 addition & 1 deletion cyberdrop_dl/crawlers/_chevereto.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ async def profile(self, scrape_item: ScrapeItem, *, albums: bool = False) -> Non
for _, sub_album in self.iter_children(scrape_item, soup, Selector.ITEM):
self.create_task(self.run(sub_album))

return
continue

self._iter_album_files(scrape_item, soup)

Expand Down
9 changes: 6 additions & 3 deletions cyberdrop_dl/crawlers/_forum.py
Original file line number Diff line number Diff line change
Expand Up @@ -567,8 +567,9 @@ async def get_absolute_link(self, link: str | AbsoluteHttpURL) -> AbsoluteHttpUR

@error_handling_wrapper
async def resolve_confirmation_link(self, link: AbsoluteHttpURL) -> AbsoluteHttpURL | None:
if url := link.query.get("url"):
url = base64.b64decode(url).decode("utf-8")
if url := link.query.get("url") or link.query.get("to"):
padding = -len(url) % 4
url = base64.urlsafe_b64decode(url + "=" * padding).decode("utf-8")
if url.startswith("https://"):
return self.parse_url(url)

Expand Down Expand Up @@ -692,7 +693,9 @@ def clean_link_str(link: str) -> str:


def is_confirmation_link(link: AbsoluteHttpURL) -> bool:
return "masked" in link.parts or "link-confirmation" in link.path
return (
"masked" in link.parts or "link-confirmation" in link.path or ("redirect" in link.parts and "to" in link.query)
)


def check_post_id(init_post_id: int | None, current_post_id: int, scrape_single_forum_post: bool) -> tuple[bool, bool]:
Expand Down
Loading
Loading