an e621 download-o-match for a danish good boy
  • C# 92.2%
  • HTML 5.4%
  • Shell 2.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-11 14:01:29 -04:00
Api Release v1.11.0 2026-08-11 14:01:29 -04:00
assets Release v1.7.3 2026-08-09 19:23:27 -04:00
docs README: screenshot of Search mode 2026-08-07 17:40:52 -04:00
installer Release v1.4.0 2026-08-07 23:39:13 -04:00
Themes Release v1.11.0 2026-08-11 14:01:29 -04:00
.gitignore Release v1.3.3 2026-08-07 22:26:52 -04:00
AboutDialog.xaml About dialog shows the changelog; full version history in CHANGELOG.md; v1.3.1 2026-08-07 22:02:26 -04:00
AboutDialog.xaml.cs Release v1.4.9 2026-08-09 12:31:08 -04:00
ApiNudgeDialog.xaml Release v1.4.3 2026-08-07 23:54:03 -04:00
ApiNudgeDialog.xaml.cs Release v1.4.2 2026-08-07 23:53:35 -04:00
app.manifest Danish Fapcache: WPF e621 client with search, filtered downloads, DB export mode 2026-08-07 10:35:32 -04:00
App.xaml Video thumbnails via hidden WebView2 frame capture, cached as PNGs; v1.3.0 2026-08-07 22:00:25 -04:00
App.xaml.cs Release v1.7.2 2026-08-09 19:03:47 -04:00
CHANGELOG.md Release v1.11.0 2026-08-11 14:01:29 -04:00
CredentialStore.cs Date range, per-result actions, metadata tooltips, login dialog, dark calendar 2026-08-07 16:39:20 -04:00
DanishFapcache.csproj Release v1.11.0 2026-08-11 14:01:29 -04:00
DarkTitleBar.cs Polish pass: custom control theme, dark title bars 2026-08-07 16:07:26 -04:00
DbNagDialog.xaml Release v1.8.0 2026-08-10 10:30:42 -04:00
DbNagDialog.xaml.cs Release v1.8.0 2026-08-10 10:30:42 -04:00
deploy.sh Release v1.8.0 2026-08-10 10:30:42 -04:00
DownloadModeDialog.xaml Polish pass: custom control theme, dark title bars 2026-08-07 16:07:26 -04:00
DownloadModeDialog.xaml.cs Polish pass: custom control theme, dark title bars 2026-08-07 16:07:26 -04:00
GalleryView.xaml Release v1.11.0 2026-08-11 14:01:29 -04:00
GalleryView.xaml.cs Release v1.11.0 2026-08-11 14:01:29 -04:00
GalleryViewer.xaml Viewer chrome moved into the page: WebView2 airspace hid all WPF overlays; v1.2.10 2026-08-07 21:28:53 -04:00
GalleryViewer.xaml.cs Release v1.9.0 2026-08-10 12:36:54 -04:00
GifInfo.cs Release v1.4.6 2026-08-08 14:29:21 -04:00
LoginDialog.xaml Date range, per-result actions, metadata tooltips, login dialog, dark calendar 2026-08-07 16:39:20 -04:00
LoginDialog.xaml.cs Date range, per-result actions, metadata tooltips, login dialog, dark calendar 2026-08-07 16:39:20 -04:00
MainWindow.xaml Release v1.11.0 2026-08-11 14:01:29 -04:00
MainWindow.xaml.cs Release v1.11.0 2026-08-11 14:01:29 -04:00
make-installer.sh Release v1.3.3 2026-08-07 22:26:52 -04:00
NaturalComparer.cs Gallery name sort is natural order: digit runs compare numerically; v1.2.8 2026-08-07 21:17:18 -04:00
OptionsWindow.xaml Release v1.8.0 2026-08-10 10:30:42 -04:00
OptionsWindow.xaml.cs Release v1.8.0 2026-08-10 10:30:42 -04:00
PostMetadata.cs Release v1.6.0 2026-08-09 15:34:34 -04:00
README.md Revise SPEC.md and README.md to reflect changes through v1.4.6 2026-08-08 14:39:58 -04:00
release.sh release.sh: safe to re-run after a partial failure 2026-08-07 23:56:31 -04:00
Settings.cs Release v1.11.0 2026-08-11 14:01:29 -04:00
SPEC.md Release v1.10.0 2026-08-10 16:22:04 -04:00
UpdateService.cs Release v1.4.0 2026-08-07 23:39:13 -04:00
version.json Release v1.11.0 2026-08-11 14:01:29 -04:00
VideoThumbnailer.cs Options: clear thumbnail cache with size readout; v1.3.2 2026-08-07 22:21:07 -04:00
ViewerItem.cs Release v1.5.0 2026-08-09 12:54:26 -04:00

Danish Fapcache

A native Windows (WPF, .NET 8) client for e621: log in with your API key, search by tags, skip posts with unwanted tags, and batch-download in your chosen order.

Screenshots

Search mode: tag search with pills, date range, order/count/source controls, and the live downloads panel

Features

  • Login via a Log in/Log out button and dialog — get an API key at https://e621.net/api_keys (also linked in the dialog). The key is stored encrypted with Windows DPAPI under %APPDATA%\DanishFapcache; logging out deletes it.
  • Tag pills: hitting space commits a typed tag into a removable pill; skip-tag pills are tinted red. An optional date range narrows results (API metatags; local created_at filter in export mode).
  • Result actions: hover for full metadata, double-click for a resizable preview window, right-click to download one post or open it on e621.
  • Gallery mode: browse downloaded folders with thumbnails — paged 500 at a time so 100k-file libraries stay fast — with filename filtering, type filtering (images/animations), sorting (newest/oldest/recently downloaded/natural AZ), a fullscreen WebView2 viewer (webm/mp4/gif included, with remembered volume), and a slideshow over the whole filtered set, not just the visible page.
  • Slideshow niceties: controls and cursor stay out of the way while it runs, images change with a subtle dip-to-black (manual browsing stays instant), + / adjust the speed on the fly, and with play-through (⇥) on, videos advance when they finish and animated gifs finish their loop first — short loops repeat until your delay is filled.
  • Installer & updates: make-installer.sh builds a per-user MSI (Start-menu shortcut, Add/Remove entry, no elevation) and stages it with a version.json manifest in the repo, which doubles as the update channel — the app checks it on startup and offers one-click updates.
  • Artist blacklist in Options: their posts never appear, from either source.
  • Search with include tags and skip tags; order by latest, oldest, most popular (order:score), or most favourited (order:favcount).
  • Two sources: live API queries, or e621's daily DB export — a ~2 GB posts.csv.gz dump downloaded once and imported into a local indexed database (a couple of minutes, once per dump), after which even huge searches answer in milliseconds and cost the site nothing.
  • Downloads panel showing each file's thumbnail, name, size, resolution, score, favourites, rating, and live status/progress.
  • Options: User-Agent template, API request interval (clamped to e621's 2 req/s hard limit), delay between downloads, download folder, and filename template ({id} {artist} {md5} {score} {rating} {ext}).
  • Files land in Downloads\DanishFapcache\<tag-slug>\ by default; already downloaded files are skipped.

Building from WSL

The app is cross-built from Linux with EnableWindowsTargeting and run on the Windows side (needs the .NET 8 Windows Desktop runtime there):

./deploy.sh            # publish, copy to %LOCALAPPDATA%\DanishFapcache, launch
./deploy.sh --no-launch

Being a good API citizen

The client sends a descriptive User-Agent identifying the app (your username is included only if you add {username} to the template yourself), paces API calls at ~1/sec by default, and never exceeds the 2 req/s hard limit — the Options dialog clamps whatever you enter.