-= Polite MangaDex Downloader =- Copyright 2023 Ron Dippold - sizer99 at gmail dot com For now, no redistribution without permission. This POLITELY downloads your new manga chapters from Mangadex. It's (slightly) less burden on the server than if you were reading it on the site. It only looks at your follows pages to find new chapters, so even if you have 800 follows it only has to look at one or two pages. Cheap! It's got a queue, but only fetches one page at a time, and it waits a few seconds between pages. It takes a while to download. That's okay, just fire it up and read it all later that night. It's for people who like reading manga offline fullscreen on our tablets with a full-featured reader like Perfect Reader. - Only supports Mangadex now. I will not support crappy pirate sites like MangaFox or MangaPanda. - Only Windows version for now, though Mono could be possible. - You must have a Mangadex account, because it needs your favorites page to work. - Manage your favorites on the Mangadex site. If you add a new favorite on the site, it'll pick it up automatically. - Manage your language or other filter preferences on Mangadex, not in the app. - Supports extra-favorite series (Komi-saaaaan) for priority download. - You can only find new series on the Mangadex site. It doesn't keep its own list of every single series on the site. - For speed, it will keep a local database of what you've already gotten, and supports manual download of old chapters- Supports translation group ignore for crummy speed groups who hijack good series with bad xlations. - Supports cbz or individual image save. Supports fairly arbitrary filenames / cbz / zip / subdirectories. - Nothing is ever sent to me, and there are no ads - I don't care what you're reading, I've got too much to read already. Getting Started: - Install and run PMDL. - Choose 'Create New Database' and choose a new file. You should back this up occasionally! - On the 'Mangadex Login' tab, set your username and password. These are stored encrypted. - TEMPORARY: API doesn't support OpenID app secrets yet. If you created a new account or changed your password in the last year, well you can't log in using the old user/pw method. You have to go to your settings (upper right, settings), 'API Clients', '+ Create', and give it a name of 'Personal PMDL Access', and add a description like 'Logging in with PMDL', 'Create'. It should be auto-approved after a while. Copy the personal key name from MD (should look like 'personal-client-xxxx-xxx') - in PMDL go to Options -> Mangadex Login and paste that API Key Name. On the MD website, Get Secret, Copy, and paste that into PMDL's API Secret. Now you should be able to 'Find New' and hopefully it'll log in! - On the 'Save Optons' tab, set your Save Directory and File Format. - You can try setting the naming if you want, though it has a decent default of [SERIES]\[SERIES] v[VOL] c[CHAP] [TITLE] - [PAGE] [GROUP].zip - Go to 'Known Series' tab, right click the upper grid, 'Recheck Favorite Series' Say yes, and it'll fetch all your favorites from MangaDex - You're good! Normal Use: - 'Download Queue' tab, hit 'Find New', 'Download' - You can also set 'Options -> General -> On Start' to 'Find and Download New Chapters' - There are lots of other options - try right clicking things or typing the start of a series name in the series box. - Set series priority so your favorites get downloaded first! TODO: TODO: New series watch TODO Fix: Don't mark new follows as 'follow' on site if it's marked as 'completed'. ---= History =--- -2024-03-28 V6.6.4 Fix: 6.3.3 was using the wrong endpoint for auth token refresh with OpenID, so you'd get 404s and have to log in new again. This would only show up after running for a while. -2024-03-23 V6.6.3 New: Support for MD OpenID auth. If you create a new account or changed your password since 2023, well you can't log in using the old user/pw method. Go to Options -> Mangadex Login to see the steps you need to take. This is hopefully temporary till MD allows application API keys. -2024-02-08 V6.6.2 Fix: MD no longer wants the Authorization header when DLing images. Not sure it ever did, but now it throws lots of 400s! -2023-12-11 V6.6.1 Fix: Follows link on Known Series page needed updating. Fix: Authors/Artists list could cause non-crashing error on startup with enough deleted authors/artists. -2023-12-09 V6.6.0 Meta: The purpose of this release is to get Everything Else done before tackling New Series Watch V7.0.0, though there may be more 6.6.x bugfixes. New: F1 shows key shortcuts for the main pages. Pops up only once the first time you run PMDL after this update. New: Options -> Advanced. If we see a new chapter and it's been more than N days|weeks|months (default 1 month) since we checked this series, re-check series info looking for name, author, cover updates. You'll see all series get initial rechecks for new chapters. New: Don't warn if the name has changed on a series and we've already warned about it. New: Add Site -> Recheck Known Authors/Artists to go with groups/series. New: Options -> Advanced has a new option to NOT automatically add new chapters to the DL Queue. You'll have to manually add anything you want to download from Series -> Chapters. Change: For Delete/Resize Covers, move progress updates to progress bar. Change: Flush the database when a favorites check/download finishes to trim the .wal (pending changes) file. If for some reason the .db file gets backed up while PMDL is still running this will help keep it self-contained. You should not notice! Fix: The Options -> On Start dropdown has had an editable text box since version 1.0.0! Didn't hurt, no complaints, finally noticed and made it read only. -2023-12-03 V6.5.2 Fix: When I was fixing the Resize All Covers option I forgot to fix the Delete All Covers option which had the same issue. -2023-12-01 V6.5.1 Fix: Rechecking old Translation Groups worked okay, but updating new groups would add new rows to the end instead of replacing the current line so you'd get till restart. Fix: Using the filter box in Translation Groups could crash in some circumstances. -2023-11-30 V6.5.0 New: Add 'Official Publisher' check for translation groups. Official Publishers are assumed to provide only fake chapters and will automatically be ignored. First time you run PMDL 6.5.0 it will re-check all groups. New: Add option to right click group(s) and re-check them in the Translation Groups List. New: Add Site -> Recheck Known Groups (SLOW). Fix: Don't show blank group in Translation Groups -2023-11-27 V6.4.2 New: Add J-Novel Club, Nukku, Pocket Comics, and Alpha Manga (twice!) groups to those that only post fake chapters. Fix: Resize All Covers option was crashing out. -2023-08-16 V6.4.1 Fix: If you have 'Skip GIFs' on, a chapter that was nothing BUT a gif could cause a crash. In that case, still get it. Fix: In Options -> Advanced -> Run Program after cbz Save, the checkbox managed to get detached from its action, so it wouldn't change state. -2023-05-21 V6.4.0 TODO: mangadex moved to oauth. This is a pain in the ass. I am actively working on it. Update: on hold till they add oauth to the API. Fix: ME. Two months ago I got hit by a car with four kids watching their tiktok who ran a red light. I've been in the ICU, hospital, and recovering. Catching up! Fix: If checking new chapters fails, doesn't automatically schedule next check. Fix: Warn about username/password not being set before even trying to log in. New: Add Genkina Tajimi Co. Ltd to list of fake chapter uploaders. New: Add Bookwalker Global to list of fake chapter uploaders. New: Add Viz Media to list of fake chapter uploaders. New: Add New Series Priority (H) on Options -> Advanced to go with New Series Priority New: Add Options -> Advanced -> Skip gifs New: Add Options -> Advanced -> Skip last color page if chapter is less than [x] pages. Specifically because of two groups. -2023-01-08 V6.3.0 Fix: MD changed authentication, always force new login when PMDL runs again. -2022-11-26 V6.2.0 Fix: MD has yet another new way to mark chapters as read, using that. New: Add INKR Comics to automatically ignored groups. New: Add more MD@Home fail statuses to those that cause temporary server bans (Page NotFound, actively refused). Fix: Custom save formats could load as the series id. Change: Reduce the server blacklist time from 12 to 6 hours. -2022-09-09 V6.1.1 New: Bulk install option. New: When a MD@Home server fails with a 403 or 503 blacklist it for 12 hours and just download from the central server. This will reduce the number of ominous looking 'failed' and 'switching to main mangadex server' messages. We can't just go to the main server all the time because that would be very Impolite (and they have threatened bans). We will continue to use the MD@Home servers whenever they're working properly. -2022-09-08 V6.1.0 New: When MD@Home throws a 503 or 403, switch to main image server -2022-08-15 V6.0.2 New: Options -> Advanced has new series priority option (default 0) Fix: MD broke its own API for marking chapters read a while ago. Fix for that. Change: Attempt to do my own DNS for host names (sfqqzpy2e4ppm.xnvda7fch4zhr.mangadex.network) that are deliberately being DNS poisoned - this didn't really work, sorry. -2022-06-09 V6.0.1 Fix: Deleting series image would crash, because DB null handling works different now. Fix: Ignore 'marking as read' errors - mangadex is having problems Change: Get rid of 'download' going to 'stop', just use 'cancel'. It was confusing. -2022-05-31 V6.0.0 New: Upgraded to .NET 6 (from 4.8). Quite a lot of work, but means we won't be obsoleted, and it runs much faster (though no change in DL speed!) New: For speed, SQLite is in WAL mode, which means you will have small .db-shm and .db-wal files next to your .db file while running. They should go away when closing, but if a crash shutdown happens WAL is part of your DB, DO NOT DELETE! New: Highlight 'disk I/O Error' in crashes since that's most crashes now New: Installer will wipe all DLL files in existing install directory to prevent the old .NET 4 DLLs from confusing the .NET 6 executable. This also means future versions will be self-contained, so you can roll them back easily. Fix: No longer cache the old chapter info for retries, so we won't miss when MD moves it from a dead server to a working server. Fix: One more edge case where names can get > 400 chars, which causes errors even with long file name support. (A Genius' Isekai Overlord Legend...) Fix: 'Fix dups/orphans' should clear the fetch list first. Fix: File -> Exit (Alt-X) was no longer connected to its routine (VS loves to do that) Other: Big thanks to 왝읍가드뿔이 for all his QA with this one. -2022-03-12 V5.5 New API means we can favorite and unfavorite at MD too New: Global toggle for 'Ignore any remote title changes' (Options->Advanced). It's annoying when someone decides to change the name halfway through. New: You can favorite and unfavorite series in PMDL and have it remotely applied at MD. New: You can completely delete a series and all its chapters locally. Though if PMDL also unfavorite it at MD. ever sees it again in your updates it will find it all over again, so this will Fix: If an entire page of favorites is full of fake chapters, don't stop because we think MD stopped returning chapters. This was also causing us to read 100 favorites pages after that happened. Fix: If we crash after getting new (unknown) chapters, weren't getting info to rename them properly on startup. -2022-02-11 V5.4.2 The Bugfixes Edition New: Add {%<30x} formatting for files - will trim x to 30 chars, but won't pad to 30 Fix: MD has a lot of chapters that look perfectly normal and return without error, but have no images. These cause lots of problems. Detect them in _GetChapterPageUrls2_cb and make it an error. Fix: Crash on downloading non-favorited chapters (updateSeriesRow error) Fix: Crash on selecting a hidden series (invisibile cell error) Fix: Rare starting error on no db in AddDbFetchItems() Fix: Visual Studio created some layout errors in the various screens, move things back to where they should be. Fix: We're still getting errors in _image_cb. The second fix should help a lot. Unfortunately, that routine is huge, so I've added a big try/catch around it that logs the error, chapter ID, and line number. Sending this in will help track down more MD issues. -2022-01-08 V5.4.1 New: Add Azuki Manga as only posting fake chapters (thanks Phillip!) -2022-01-08 V5.4.0 Emergency release Fix: MD Broke the API. Get new favorites no longer includes page data and chapter hashes - that's only in specific chapter info now. Fix: MD was returning 2021 dates for 2022, confusing things. Patch to Jan 01 2022 if seen. Fix: With the new API we can no longer tell fake chapters up front, will ignore MangaPlus and Comikey, but others might appear then be errored later. If you know other 'groups' that only post fake chapters, let me know. New: Remember main window location and size New: Resort Dlqueue after series changes from to something, since they're nearly random. New: Add Site -> Force Logoff and Login for when MD is acting weird about auth. Change: We used to load unfavorited series into the Known Series grid as hidden. It was slowing things and there are going to be a lot more unfavorited series in the DB now, so only load them when needed. -2021-11-22 V5.3.2 Fix: DLL error for some people caused by mixing .NET 4.5.2 and .NET 4.7.2 -2021-11-21 V5.3.1 Fix: Don't include +/- keys in the search for series since they're used for setting priority -2021-11-21 V5.3.0 General: This is not a required update, but it's all heading towards big new functionality that the MD site doesn't offer. New: Make groups and authors grids sortable too New: Update Search by Typing to work for Download Queue, Groups, Author and make it a bit more forgiving. Also add a display for what you're current searching for. New: Add Authors tab with favorite and ignore. These don't do anything yet, but will soon. New: Make text filter search functionality generic for series, groups, authors, and add slight delay to make it less sloggy. New: Add 'Fix MangaDex Authors' option for authors that MangaDex has combined/deleted. Change: Default color theme for new databases is now Perfect Blue. It's my oshi. Fix: Theme export, import, and save windows: center like other popups, color with theme. -2021-11-18 V5.2.0 New: The freqently requested Custom name format per series! On the Known Series page there is now a 'Cust Save' checkbox that is checked if this series has a custom format. If you click it a window will pop up letting you edit (or delete) it. This overrides the Save Options -> File Name setting if it's not blank. Fix: Even with Long File Name support, some series names are so ridiculously long (200 chars) that writing pages as {%s}\{%s} (etc) fails with illegal file name error. Limit individual variables to 150 characters each when creating file names. -2021-11-7 V5.1.5 New: Show total favorite series count with 'Recheck All Favorite Series' Fix: I was using the oldest chapter on the Follows -> Updates page to determine when to stop checking pages, but new MD can also list older chapters, which could keep us from checking the next page. I now use the newest chapter on the page to do the stop, which means we always get at least one extra new favorites page so we won't miss any. Fix: Follows -> Updates check now explicitly needs H specified to get new H chapters. -2021-11-6 V5.1.4 Fix: Further fixes for MD not returning 100 series when you are checking all series. We can't guess how many it will return, so just stop when it returns 0. This seems to work well. Fix: If you accidentally double clicked the left side menu tree you could close the Options branch, which was confusing since I don't show the +/-. Disabled that. -2021-11-5 V5.1.3 Fix: If you don't have a DB, it will crash on start because of showing the main form earlier. -2021-11-5 V5.1.2 Change: Show main form earlier, because loading all series can take quite a while if you have thousands of series. Fix?: When you ask for info on 100 series, MD has a new bug where they return only 99 - I was using less than requested as a trigger to stop asking about all series, now allowing for the one offset. Fix: Ctrl-C, Ctrl-D, and F5 hotkeys got disconnected by Visual Studio's usual wankery. -2021-10-02 V5.1.1 Fix: Recheck Series Chapters from Series list wasn't finding chapters for H series. Fix: Recheck (All) Favorite Series wasn't working since the API changed in 5.0.13 Fix: DlMinTime could get internally set to 0 seconds New: Add 'Remove From Queue and Mark as Read' right click option for Download Queue - also shift-Del. This can be useful after a Recheck Favorite Series. New: Speed up deleting from download queue. Other: Some people are getting a null reference error in _GetChapterPageUrls2_cb - I can't reproduce this but have added some more checking and debug output. -2021-09-13 V5.1.0 Fix: When rechecking chapters for the currently displayed series, the shown chapters list wasn't updated live (visual only, the database was properly updated). -2021-09-12 V5.0.13 Fix: Group parsing for new API. Series parsing for new API. Cover parsing for new API. Series chapters parsing for new API. At least they're consistent with previous changes. -2021-09-12 V5.0.12 Hack: MD API is inconsistent between calls. Parse both old and new ways, use the one that works. -2021-09-12 V5.0.11 Fix: MD radically changed the return format for chapter lists again. -2021-09-12 V5.0.10 Fix: MD changed their return format for chapter lists (node.relationships -> node.data.relationships). As fixup for this, I will delete any chapters that have no associated series on startup, then we can find them again. -2021-09-09 V5.0.9 Change: If more than 2 authors or 2 artists, use 'Various' so series zip names/folder names don't get ridiculously long. Fix: Catch some small crashes. -2021-08-31 V5.0.8 Fix: If bad password, crash on startup. Catch the error and print it as usual. -2021-08-27 V5.0.7 Fix: Ignore fake chapters that have no pages and no hash because they're only there to point you at an official site. Fix: Hide the Re-Sort button if not on DL Queue -2021-08-26 V5.0.6 Fix: Found one more place /report 400 errors were not being ignored Fix: More tracking down on the race condition where series name could be for pages and zip files. Fix? Set Upgrade-Insecure-Requests for systems that can't properly authenticate. -2021-08-22 V5.0.5 Fix: Some people have a crash when doing a ctrl-c in the log window - if copying rtf fails, I just copy raw text now. Fix: Some people are crashing when trying to parse dates. Force JSON deserializer to ignore the local date format and use "yyyy-MM-ddTHH:mm:ssK" since that's what MD uses. Fix: /report errors when fetching covers Change: Do page fetch reporting lower down so we properly report page fetch failures. Not something you need to worry about, just for identifying bad MD@H servers. -2021-08-21 V5.0.4 Fix: Could end up using a series name of if a new series is the first chapter downloaded. Fix: Was not automatically downloading new chapters if the group was not set (because we couldn't find the group). TO RE-GET THESE if you ran 5.0.0-5.0.3: Options -> New Chapters Check -> Reset to '365' days ago -> Set, then Download Queue -> Find New Favorites -2021-08-20 V5.0.3 Fix: Was sometimes finding your old database instead of current one when you upgraded (an oooold problem). -2021-08-20 V5.0.2 Fix: Completely new DB would force the wrong settings tab open, couldn't set userid/pw -2021-08-20 V5.0.1 Credit: Big thanks to Kyle and Philip W for being my guinea pigs for this. Fix: Recheck all series wasn't working. It really will take a LONG time, because I have to query the chapters and read chapters status separately for every single series, so be patient. I successfully did it for my 4000+ series, so it does work for me (TM). Fix: On Known Series, dragging the splitter just added more blank space on top. Now expands the top grid as you'd expect. Fix: Move follows link from /follows to /titles/follows Fix: Make version check only trigger for greater version, not just different. This issue is as old as version check itself. Fix: Ignore /report errors - the endpoint is flaky. -2021-08-19 V5.0.0 Change: This is the big one, everything is on a completely new API, and Everything's Changed. Series, group, and chapter Ids have changed from simple integers to giant GUIDs. Artist and Author are now assigned GUIDs as well, where before they were just strings. I pretty much had to rewrite all the site handling. New: Added DbConverter.exe to convert the old format to new format. New: Add Options -> Language Options to set which languages you want to download and which languages to use for choosing series title. Change: Given the new faster servers, the random wait time between pages has been reduced to just 1 second. Change: Speed up some string matching. -2021-03-18 V4.1.11 Fix: Handle DB groups with null data. This Should Not Happen (TM) because I only write full group data, but might be caused by crash or kill at just the wrong time. I'll ignore and delete them now. -2021-03-10 V4.1.10 Change: As per https://mangadex.org/thread/440192 , the API URL we're using ( https://api.mangadex.org/v2/ ) IS GOING AWAY in a few days and we need to start using https://api.mangadex.org/v2/. It seems to be working okay this time. Fix: Fix 403 error every time we startup by accessing main site page first. API doesn't seem to like the cookies without that. New: Add ' ... retry OK' message after successful retry of a page, to ease worries. Fix: Ancient bug - new group rows don't get proper theme color. -2021-03-08 V4.1.9 Fix: internal redo - clean up handling of Deleted, Delayed, Retry chapters for new API. Finally caught a deleted one to test. -2021-03-03 V4.1.8 Fix: Possible cross-thread update error when getting new cover image. New: Add new 'Get Plan to Read' Chapters option in main Options tab. Some people want this, others don't. Thanks to Juan D for extensive testing on this. -2021-03-02 V4.1.7 Fix: Now that we're using the API, if you get logged out it just throws a 403 instead of telling you to login. So re-login on 403 for non-binary pages. Change: Don't ask for type=1 (followed) on asking for new favorites. Allow it to get plan to follow, etc. -2021-02-28 V4.1.6 Fix: PMDL can't launch browser or run downloaded installer on some systems with tight security settings. Catch and report this. -2021-02-27 V4.1.5 New: Add 'Ignore site Chapter Read setting' option in Options -> New Chapters Check. Some people are still having MD not mark their gotten chapters as read, so we keep auto re-downloading if this is not set. Change: Instead of asking just for your actively following chapters, I Ask for all follows, which should get 'Plan to Read', etc. Unfortunately the API isn't showing a newly added 'Plan to Read' series, though it is showing old ones, so this is hard to test. New: 'Show unfollowed series' checkbox on Series page, which will let you see the series that PMDL knows about but you aren't actively following. These will be italic. Fix: Better handling for all the 404s and 502s and 504s MD is throwing recently (they're being DDoSed again). This should fix the two chapters being downloaded at once when the first should have been cancelled problem. -2021-02-27 V4.1.4 Fix: Windows 7 doesn't have System.ValueTuple - include that in the installer. New: Add some extra outputs to the log window for starting chapters and looking for new favorites - makes it easier to tell old errors are old. Fix: Download old chapters for new series. This may cause you to redownload some really old chapters till our database is fully synced with MD's state. -2021-02-25 V4.1.3 Fix: Creating a new database fails because col langId isn't used any more. New: Automatically take you to login credentials tab after creating a new DB. New: Complain loudly if your login credentials aren't set, because this will cause everything else to fail strangely. Fix: Old bug where update link would take you to sizer99.com/pmd/pmd instead of sizer99.com/pmd Fix: Possible fix for old RenameSeriesFolder issue I can't reproduce - it should at least not crash now. -2021-02-25 V4.1.2 Fix: Found another possible crash while checking your language preferences. -2021-02-25 V4.1.1 Fix: Well, there's our first bug - some of you don't even have a 'language' column in your database, which causes crashing. We create it now. -2021-02-24 V4.1.0 NOTE: If things are working for you this is not a required upgrade. We are now Doing the Right Thing, which should make things more reliable, but there may be lurking bugs since so much has changed under the covers. New: Completely convert PMDL over to the new Mangadex APIv2. Previously I just replaced getting the chapter images. Now *everything* is using the new API. This is a lot like replacing the engine in a car - it's a huge amount of internal rework, ripping out and rewriting half the site-specific logic. And there are a lot of issues that pop up, like series chapters in the new API aren't filtered by your preferred languages, so I have to fetch that info separately and do my own filtering so you don't get chapters in Botswanian (unless you want that). Fix: Hopefully this will fix the issues with blank artist/author and H being wrong. It does for me (TM). New: Added ctrl-R as a shortcut to re-sort the download queue New: Add Site menu (upper left) as a better place for some generic and new items. New: Option to check all series that have missing author/artist info from the old API. You should only need to do this once. New: Add options to recheck user preferred language, and your user ID number. This will happen once automatically since I need that info to get your new chapters. Change: New API uses language abbreviations, like 'gb' for English instead of '1', so when we start the first time, convert the database. Change: Change 'chapter read' handling back to how it used to be since the newest API URL handles that correctly. New: Make 'Download' change Retry to Get like Find New does. Fix: Change 'Downloading' entries back to 'Get' on cancel. Fix: Make delayed chapters work again with the new API. -2021-02-02 V4.0.6 Fix: Turns out api.mangadex.org is completely broken but mangadex.org/api works great. Using that now. Fix: 'View at Mangadex' on Series -> Chapter list was adding the server name twice. -2021-02-01 V4.0.5 New: It's become obvious that 3 retries aren't enough with how slow the API is, so the default is now 10 and it's settable in Options. -2021-02-01 V4.0.4 New: Since retries are the new normal for a while, it looks nasty when they show up as 'Error' and you don't know if they'll be retried, so add a 'Retry' status to download queue with a different color. Only shows up if you have Options -> Retry 'Error' Chapters on. -2021-01-31 V4.0.3 New: New 'Retry Error chapters (once)' option, on by default, to compensate for chapters sometimes taking an hour to show up in the new API when MD is really overloaded. The next time PMDL runs, it will change 'Error' chapters to 'Get' again, up to 3 times per chapter. You can always manually mark them as 'Get' again for more tries. Fix: Fixed two ways we could get two chapters downloading at once after an error. -2021-01-29 V4.0.2 Fix: Handle 451 error code (unavailable for legal reasons) Fix: Handle API responses that have no pages better. New: For now, when there is a chapter page parse error, I will save a file 'debug.json' in your downloads directory. That would be a big help debugging errors, because I can't reproduce some of yours. -2021-01-28 V4.0.1 Fix: mark read support with API V2 doesn't seem to work, so chapters are always 'unread', so we will always re-download them. Turn this off for now and don't re-download chapters we've already downloaded. Fix: 'View Chapter on Mangadex' goes to view URL instead of API url. -2021-01-28 V4.0.0 - Goodbye legacy reader support Fix: *Support for Mangadex API v2 since Legacy reader support is dead.* THIS WILL PROBABLY NOT HANDLE ERRORS WELL, but will at least let you read new stuff right now. Fix: Rename save folder when series name changes option resets Fix: Checkboxes on Save Options wouldn't move properly on resize -2020-11-28 V3.8.12 - Not released None: Add support for brotli compression, but don't use it because MD's servers can timeout with it. -2020-11-27 V3.8.11 Fix: Don't tell the image server we support br encoding, because we don't. This was causing broken images mostly on old manga depending on which server you got it from. Thanks to Mr.Fry for pinpointing the issue. -2020-10-11 V3.8.10 Fix: 'Run program after cbz/zip save' setting wasn't registering changes. -2020-10-11 V3.8.9 Fix: Limit chapter names to 80 characters. Ridiculous long names were causing all sorts of filesystem problems and were the cause of invalid filename errors. Fix: If we can't find chapter data, see if page is blank (no connection) before suggesting you update your PMDL. Fix: Properly load known series and groups when loading a different DB Fix: Crash race condition in RecheckChaptersForSeries New: Add Re-sort button to upper right, in case you drag or reprioritize -2020-06-07 V3.8.8 - One more reported bug Fix: Default save name had {%g} at the end, should be {%e}. How long has that been there? -2020-06-07 V3.8.7 - Swatting Bugs Fix: Properly fail with a 'failed to get image' on a 404 instead of just a null reference error. Fix: Full proper fix for 3.8.6's issue since that was a rush job. "\" will be changed to "_" if it shows up in a chapter title, but won't be filtered out if it shows up in your save file name. Fix: Index out of range if you clear the DL queue at the wrong moment. -2020-06-05 V3.8.6 Fix: Well that was dumb, if you had \ in the save file name to make a subdirectory I was sanitizing the \ right out. Fixed. -2020-06-05 V3.8.5 Fix: This is a longstanding issue. Turns out some chapter names on Mangadex have tab characters in them, which look okay but Windows doesn't allow in file names and PMD errors out. I now replace \t with a space, and also ask .NET what every invalid filename character is (who knew about that function?) to delete the ones I'm not already translating (like * to @). New: Don't allow database close or open new while currently running. New: Add 'Copy This Text to Clipboard' and 'Copy Log Text to Clipboard' buttons on crash reporter. Since you can't copy from the log when crashed! -2020-05-30 v3.8.4 Fix: (I think) occasional colChaptersDone columnName in non-English locales New: 'Only initial # for chapter left pad' option. If this is on and you have {c%04c} in your file format, for chapter 3 you would get 'c0003'. For chapter 3.5, you'd get 'c0003.5' - the 3 would be left padded ignoring the .5. If this option was off you'd get 'c03.5', which is probably not what you want next to 'c0003' and 'c0004' New: Add timestamps to log window New: ctrl-c will now properly copy rich text and text from the log window so you can ctrl-a + ctrl-c or select some and then ctrl-c - 2020-05-25 v3.8.3 Fix: Priorities no longer getting sorted by absolute value. - 2020-05-25 V3.8.2 Fix: Check for cancel before retrying, add missing '(' to '(1 of 5)' Fix: 'could not create SSL/TLS secure channel' errors due to how some of MD's regional image servers are set up. See https://stackoverflow.com/questions/2859790/the-request-was-aborted-could-not-create-ssl-tls-secure-channel for more details. I didn't see it, so thanks to those who reported. - 2020-5-18 V3.8.1 - The Major UI Cleanups release * This is a huge update, I suggest you actually read each New item, since there's a lot of new convenience stuff * New: You could always mouse drag selected chapters in the download queue, but now you can use alt-up arrow and alt-down arrow to move them 1 row at a time or ctrl-up and ctrl-down to move them 5 rows at a time. New: Checkbox option to automatically download old chapters for newly followed series. You no longer have to go to the series page and choose the old chapters. New: *Real MultiColumn Sorting!* The windows grid control doesn't do sorting on multiple columns. So I took over all the sorting behavior for the control (a big job), and now we can properly sort by multiple columns. Rows are sorted by the last header you clicked, but then sub-sorted by the previous headers you clicked. So it's reverse order. Ex: if you want it sorted by priority, then series name, then vol #, then chap # - click Chap, Vol, Name, Pri. You can click a header twice in a row to reverse the sort order. Default for Queue is Pri (hi->lo), Series, Vol, Chap; Default for Series is Series (name); Default for Chapters is Vol (hi->lo), Chap (hi->lo), Time (hi->lo) New: ctrl-click any column header to resort the download queue grid without changing the sort order. Useful after changing new series priorities. New: Now that we have sane sorting, new chapters will be inserted into the download queue in the proper position. It starts at the top and looks for the first row it's before in sorted order and puts it ahead of that. If you've manually moved some rows this may confuse it. Fix: Hitting space on DLQueue row should act just like clicking 'Get'. Fix: The old bug where new chapters could double up in the chapter list if you were viewing the series while checking for new chapters. - 2020-05-14 V3.8.0 New: Added option in main Options tab to limit the size of saved cover images. There's no reason to be saving 4k images for our little cover image box. A button to the right will resize your existing large cover images and compress the database. In my experience with 3200 covers this will cut your database down to *1/8th the original size* (not bad)! Besides saving space this will speed things up a tiny bit. Any new covers will be resized as needed (if you have the button checked) so you shouldn't have to do the recompression ever again unless you reduce the maximum size you allow. - 2020-05-13 V3.7.4 Fix: Don't throw a fit on the update check if the website doesn't have what we expect. - 2020-05-13 V3.7.3 Change: Increase the error timeout from 2 seconds to 5 seconds. Looks like it takes longer for the caching to catch up. - 2020-05-13 V3.7.2 Change: Holy crap, an actual update? Yeah, since MangaDex is no longer depending on those incompetent twits at CloudFlare (thanks to Path networks) and most errors now are actually real errors instead of just CloudFlare being stupid, I've finally updated the program to assume that any errors now should get a retry, which seems to fix most errors when you try to download old manga (over a year old). A lot of 502 (bad gateway) and the 'unable to read transport connection' that seem to fix themselves after a single retry. Because PMDL was written in the trenches of the times of Chinese manga pirate sites trying to crush MangaDex with DDoS and CloudFlare clumsily flailing in all directions, PMDL mostly assumed that errors were CloudFlare being context insensitive dumbasses. This was true at the time, which really limited its options. But since that's no longer the case it can be more generous. I do understand that a lot of you in certain regions were hit particularly hard by this, and I hope it helps. - 2020-01-13 V3.7.01 Change: Mangadex moved back to .org, .cc no longer works - 2020-01-04 V3.7.00 Change: Mangadex moved to mangadex.cc, new image download scheme (ContentLength is invalid) - 2019-06-04 V3.6.15 Fix: Chapters in followed list could suddenly start having a null group name even though the group id was okay. In this case we will just ignore the blank group name instead of trying to do anything with it. - 2019-05-22 V3.6.14 Fix: Null reference in _recheckChapters_cb - 2019-05-19 V3.6.13 Fix: 'Object reference not set to an instance of an object at .. _recheckChaptersForSeries()' Several people reported this (thank you!). - 2019-04-30 V3.6.12 New: Options tab has new min/max settings for random delay between page gets. This is now upped from 2-5 seconds to 5-10 seconds to keep CloudFlare from triggering. If you are getting a lot of CloudFlare redo errors (403, 503), try setting this higher. New: Will try doing CloudFlare re-auth if it happens during an image get. This doesn't happen in the US, but apparently some countries are getting 503 errors on individual pages. Note that *some chapters have 403 errors on a single page no matter what*, like chapter 12 of Isekai Ekisha no Kissaten - this seems to be an issue on Mangadex's side. - 2019-04-18 V3.6.10 Fix: Running new version with old PMDL databases throws a 'can't find image column' error. - 2019-03-28 V3.6.9 Fix: Harden database reading against rare bug which shows up as 'Specified cast is not valid'. - 2019-03-27 V3.6.8 Improve: New version detection shows change notes and offers to install. Fix: Clearing series search filter would show unfavorited (deleted) series. We remember but hide them in case they show up again. This unhid them. - 2019-03-23 V3.6.7 Fix: Panel layout changed for series pages, so adding series from URL was getting a blank title. Tried changing to something more robust for future changes. - 2019-03-21 V3.6.6 Fix: One more leftover from language changeover. I need to start testing with new dbs, my apologies. - 2019-03-21 V3.6.5 Fix: stray reference to 'language' could cause a problem on find new. Improve: Just look at the last part of the cover name to see if we need new cover. - 2019-03-20 V3.6.4 Fix: Error creating chapter table when starting from scratch. - 2019-03-20 V3.6.3 New: PMDL now fetches the translated language info for each chapter, and makes it available as an Options -> Save -> File Name entry. Use {%L} for full name ('French') and {%l} for 2-letter abv ('fr'). For example: {%s}\{v%02v }{c%03c }{%t }{ - %03p} -> Aria\Aria v02 c07 Utopia.zip Using {[%l] } {%s}\{[%l] }{v%02v }{c%03c }{%t }{ - %03p} -> Aria\[fr] Aria v02 c07 Utopie.zip You can put the {[%l] } anywhere you want between the other {} - 2019-03-16 V3.6.2 Fix: Title wasn't being included in chapter name even if you had %t in the format. It was being put in the %T (time) variable instead. Improve: Internal cleanup for 3.5.x CloudFlare fixes. Bypassing DDoS protections in an hour was not always the cleanest thing. - 2019-03-15 V3.6.1 Fix: New version check should be working again. CloudFlare workarounds had broken the new version check because it's on a site that doesn't use CloudFlare. This was reported to me earlier and I spaced on fixing it for V3.6.0, sorry. - 2019-03-14 V3.6.0 New: Add 'Colors' tab - yes, we now have themes! Try *Perfect Blue. Mostly because I wanted a Dark theme, but also because I've never tried color theming an app. These are saved in your database. If you make a good theme, Export it and email me, I'll add it with credit if I like it. There are a few things that aren't themed, like MessageBoxes, but all the main tabs are. Improve: To go with the theming, much nicer looking rounded buttons. Improve: Progress Bar also looks better, with bi-color text for done/undone. Improve: Don't forget where database was on version upgrade. This is some .NET dumb stuff. It automatically forgets unless you smack it in the head. Fix: For all this time, clicking the 'Done' box in the Chapters list didn't do anything useful. It only worked if you used space or mark as read/unread. Clicking the box works now! Fix: Found the root cause of the problem that was throwing errors on the groups page. - 2019-03-11 V3.5.3 New: Handle Mangadex throwing bad cert errors on some image pages. I almost suspect that's on purpose at this point. - 2019-03-11 V3.5.2 New: Ugh, now they're doing CAPTCHA. This is the worst. Well, okay, if you need to solve a CAPTCHA, I now pop up an extra browser window for you to do the stupid 'pick the boxes with the bikes' or whatever they want, then I take the auth tokens when that's done. It's too annoying to do automatically, which is the entire point. New: I'll reget the page if it's blank. - 2019-03-11 V3.5.1 New: Mangadex is now doing CloudFlare on the images - emergency update for that. New: Add 'Advanced Options' tab New: On 'Advanced Options' tab, checkbox will attempt to rename a series folder if the series name changes. It won't try to rename files, that got crazy real fast, but at least your series files will be together. New: On 'Advanced Options' tab, you can set an external program to run after each cbz/zip download. I use it to auto-move new high priority chapters to my SugarSync folder to load onto my tablet for reading. Everything's automated! It can be a .bat file, .exe, whatever you can run from a command window. New: Add File -> Pack Database option. Normally this is not useful, because PMDL only adds new series and chapters and deletes nothing. It is only useful after you delete all existing covers. - 2019-03-01 V3.5.0 New: Support for database(s) in any location. You can now Open/Close/New from the File menu. Default location is c:\users\[YOU]\documents\PoliteMangadexDL\PMDL.db - if you don't like it there, just move it and Open at new location. Maybe make a backup first - you should be doing that regularly anyhow. New: If database is not found on startup, it will look in the PoliteMangadexDL.exe directory for a '*.db' file. This lets you run it portably. New: On 'Options Save' tab there is now a '~ to -' checkbox. If you are saving to FAT filesystem or network, the ~ (tilde) char may cause problems. This will turn them into - (hyphen) chars. Improve: Changing series priority in one list visibly updates it in the other lists. If the series is selected multiple times only change once. Improve: Don't stop downloads if one chapter fails, for instance if it's deleted between the time you find it and try to download it. Fix: Crash on group info not found. - 2019-02-11 V3.4.1 Fix: Disable web proxy on CloudFlare auth - IP needs to match normal request IP. Fix: Make 100% sure old login cookies are expired when we try a new login. Fix: Try harder to kill auth WebBrowser when we're done with it so it doesn't lead to strange COM timeout errors. New: Show covers as download queue progresses - disables for a minute if you click a row or press a key in the Download Queue, so you can do things. Honestly, I just wanted to do something not related to two weeks of DDoS and auth/login changes. - 2019-02-10 V3.4.0 Update: Major change to how authentication works. MangaDex added full CloudFlare protection, which means I have to run a CloudFlare solver - CF sends an arbitrary webpage and expects the result to be evaluated including possibly making other requests, so you need a full web browser. For now, I'm opening a WebBrowser in the background, doing the authentication, then using the results to make the rest of my requests. This is very preliminary since it relies on using the ActiveX browser on your system. It Works on Mine (TM), but I'm not sure how back compatible this is. Improve: fail after 5 login attempts - 2019-02-05 v3.3.3 Update: More DDoS! Login/cookies/headers have changed since last night, emergency update. - 2019-02-03 v3.3.2 Fix: Mangadex is moving some content to https://cdndex.com - handle that new domain. - 2019-02-02 v3.3.1 Improve: Mangadex is now throwing new errors thanks to the DDoS. Instead of calling it an error and moving on to the next chapter,retry on these too, up to 5 times. We'll still abort on a 403 or 404. New: Use + and - on the Download Queue or Known Series tabs to increment or decrement the series priority. Those fussy dropdowns are annoying. Improve: Change the cryptic 'couldn't find dataurl' error to suggest making sure you're in classic reader mode. - 2019-01-22 v3.3.0 New: By request, 'Options' tab, you can choose not to download H covers even if you're downloading covers. New: Cover management! Mangadex now allows multiple covers per manga. PMDL still grabs the default one on the series page, but now you can right click the picture area and choose to force the cover to blank (if you don't want an image) or enter any picture URL. New: Allow save format to have a max size. {%!1s} will trim to 1 char, so you can get 1st char of series (or authors) to file them in subdirs. ex: '\{%!1s}\{%s}\' would get you '\T\Tenju no Kuni\' Fix: 'Go to Chapter in Series Tab' would crash on blank download queue. - 2019-01-12 v3.2.7 Fix: Crash when save options contains a lone { with nothing after it. Fix: Favorites URL I was using would occasionally show 'Dropped' manga chapter and we'd grab it. Use a different URL which has only 'Reading' manga. Fix: If you have a very custom date/time format (like '0859 011219') C# would write it, but crash on read. Force DB datetime to be standard format. Improve: Have InnoSetup installer grab the actual current version (ex '3.2.7.0') and show that in the add/remove programs list. - 2019-01-04 v3.2.6 New: Retry 5 times on Mangadex throwing a 502 error (with the usual waits). Fix: VS 2017 can now handle monitor scaling properly. Redo the windows in scaling agnostic form, hope things don't creep around any more. Improve: Make progress bar visible on all tabs. Improve: Move the sort by chapter numerically code to all views. Also use volume where available. When sorting by series, next sort by vol then chap, etc. Sort by time (not string) on time columns. - 2019-01-02 v3.2.5 - Fix: Mangadex changed the way author and artist are given in the html, so those were getting lost. I wasn't ready for a new version, but this is major. Improve: Move Download Oneshots from URLs to textbox instead of rich text box. RTB has too many ways to die on cut and paste input. Improve: Also trim any "\ " to "\" as this will also cause errors. Improve: Handling of cover image when things are changing fast. Now looks at what the cover should be given current status rather than update msgs. - 2018-12-27 v3.2.4 Fix: Pre-trim '.' and ' ' from end of directory names. It confuses windows especially with long file name functions. Ex: if series is "Yet Another Isekai...", creating the directory creates "Yet Another Isekai\", so page writes fail with 'system cannot find the path specified'. - 2018-11-25 v3.2.3 Improve: Clear cover on DlQueue clear (last one would remain) Fix: Sanitize \ before adding subdirectories - this is what happens when you don't work on something for two months and forget how it works New: Add library credits - they deserve it Fix: Add \ to list of sanitized characters. We should now handle the full set of forbidden filename chars: :/\*?"<>| Fix: Downloading oneshots, c# textbox crashes if you try to read lines without new line on last entry, so do our own line splitting. Fix: On Windows 7 or XP in Classic UI mode, trying to use fancy progress bar crashes due to lack of Visual Styles. Check for it and do our own progress bar drawing. Improve: Going to selected chapter activates chapter list, not series list New: Added manual support for NTFS long filenames (> 260 chars). Surprisingly this is not just built in these days. Improve: Other file errors like non-existent drive go in the log in red, not just in the progress bar, so at least you can see them. New: Add editable H column in series list Improve: Double-click row in DLQueue takes you to series chapters, like ctrl-s Improve: Sort chapters numbers as floating point, then fall back to string, so '40.5' is between '40' and 41' but '20' is after '19', not '2' - 2018-09-17 v3.1.0 Major feature update, so up to 3.1 Fix: Crasher bug when trying to go to series and series is hidden Fix: Handle deleted series on Mangadex Improve: Get rid of Options General, make it just Options (was duplicated) New: Get author(s) and artist(s), available as %a for save names New: Option to check for program updates on startup (Options) New: DLQueue has right click option (Ctrl-O) to download series without adding them to favorites. Perfect for oneshots. Won't DL cover. New: Allow ctrl-enter to click OK on series by URL boxes. New: Optional separate directory for H series (Options Save) New: Option to turn off cover downloads (Options) New: Option to delete all cover images (Options) New: Home and End key go to top and bottom in Series list - 2018-08-26 v3.0.8 Fix: Handle deleted chapters - between check and download they're erased. - 2018-08-20 v3.0.7 Improve: Fundamentally redo 'check all favorites' to restore old favorites and remove unfavorites. Improve: 'Add Series from URL' now supports old /manga/xxxx form and new /manga/xxxx form Fix: Expand special characters box for file name saving - VS crunched it. - 2018-08-19 v3.0.6 Fix: Recheck all series working again. New: Add local unfavorite series right click option so you don't have to see it. but this will be overwritten unless you actually set it on Mangadex. - 2018-08-17 v3.0.5 New: Add exception reporting dialogue - thanks to Hi-FiMan - 2018-08-16 v3.0.4 New: H series are cookie only config - set the 'H series allowed' cookie so we can see them. - 2018-08-12 v3.0.3 Fix: V3 almost completely working again New: Add a lot more keyboard shortcuts for right menu items. 2018-08-10 v3.0.2 Fix: Get add new series from URL working again Fix: Get recheck series chapters working again 2018-08-09 v3.0.1 Fix: Convert timestamps from UTC to local time zone Fix: Properly get 'chapter was read' flag from server - 2018-08-08 v3.0.0 New: Leap to version 3.0 since Mangadex rolled out 'v3' Fix: Make downloads work again with Mangadex v3 legacy mode. - 2018-08-04 v1.3.0 New: Swore I'd never add series covers, but added series covers Grabbed on new series, or when you recheck series chapters - 2018-08-03 v1.2.2 Improve: Make series override behave nicer - only warn the first time when changed Improve: Make 'Delay' chapters red instead of grey Fix: Obscure race which could result in double downloads - 2018-08-03 v1.2.1 Improve: Add group to the default file file name - 2018-07-30 v1.2.0 New: Add a bunch of keyboard shortcuts New: Allow series name override for when series owners are silly - 2018-07-21 v1.1.9 Fix: Handle group delay policy warning (no chapter actually available). Improve: Update new series chapters automatically, always want to do it anyhow. - 2018-06-18 v1.1.6 New:'Add Series From URL' option on series list right click. - 2018-06-17 v1.1.5 Fix: 'Go to Chapter in Series Tab' not working on new series - 2018-06-11 v1.1.4 Fix: a strange column sizing issue when chapter title too long Fix: sometimes DLing chapter twice - 2018-05-19 v1.1.3 New: Do scheduled new chapter check after system sleep resume Fix: Startup was limiting scheduled check hours to 4 minimum New: Do download after find new if start option is set to find and get - 2018-05-17 v1.1.2 New: 'Go to Chapter in Series Tab' right click from DLQueue - 2018-05-15 v1.1.1 Fix: Don't disable clear button while downloading - works fine. Improve: Internal cleanup. - 2018-05-13 v1.1.0 New: Allow drag and drop reorder of rows in DLQueue. New: Save DLQueue when quitting, reload on start, so you don't lose anything unless explicitly cleared. Improve: Make hitting spacebar in Chapters window mark as done/undone more intuitively. Fix: Handle all Mangadex's series view formats. - 2018-05-12 v1.0.6 Fix: Make sure scheduled check changes queue in GUI thread - 2018-05-12 v1.0.5 Fix: Search by typing series name ignores filtered out series - 2018-05-11 v1.0.4 New: Can check for new chapters every two hours (or longer) - 2018-05-10 v1.0.3 New: Warn about fave series needs to be set to 'simple list' till I can fix this Fix: Handle Mangadex's login cookie issues better - 2018-05-10 v1.0.2 Fix: chapters -> and start download not starting after first download - 2018-05-10 v1.0.1 Fix: Download/Stop button could get out of sync - 2018-05-09 v1.0.0 New: Initial Release FAQ: - Do you save my password? Yes, using .NET's ProtectedData class. Only the same user can decode it even if they know where to look. - Do you send my info anywhere? No, if I want to find out what you're reading I can just go look on Mangadex. It will check for new versions by downloading http://sizer99.com/pdm/index.html, but doesn't send anything and you can turn that off in options. - What's the database? SQLite. It's good enough for this small amount of data. - Mac and Linux versions? It's C#/WinForms, so a Mono version might be possible... - Open source? Maybe - it was a rush job, and while the design worked great it needs some clean up and more internal documentation first. Library Credits: - HtmlAgilityPack for html parsing - https://html-agility-pack.net/ - System.Data.SQlite for database - https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki - ZetaLongPaths for filenames over 260 characters - crazy this isn't part of .net yet https://github.com/UweKeim/ZetaLongPaths - Color picker column for DataGridView - Joe20033 http://www.codeproject.com/Articles/24614/How-to-Host-a-Color-Picker-Combobox-in-Windows-For - Rounded rectangle drawing library - Arun Reginald Zaheeruddin https://www.codeproject.com/Articles/38436/Extended-Graphics-Rounded-rectangles-Font-metrics