If you're seeing 525 errors while trying to download fics off of Ao3 using Fanficfare + Calibre, I suggest turning on using the browser and browser cache only options for ao3 in the personal.ini - commenting out your login and password at the same time since the browser should be logged in already and it can potentially cause conflicts that prevent fic download or meta-data updates.
It'll take over your browser to download but should have fewer failures than having it run headless. It does mean that if something gets borked in the cache that you may need to clear your cache for Ao3 or potentially go as far as restarting your computer. Though usually one fic being held hostage by bad cache data won't affect other fics so you could also make a list of 'revisit these later' urls for after a reboot.
It is a bit of a nuclear option to have it take over your browser (admittedly if this were ffnet I was talking about it'd be the only way to be sure), but usually Ao3 settles down pretty quick when cloudflare gets cranky so hopefully this is a temporary work around or something I'll find a better option for later.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
ā Live Streamingā Interactive Chatā Private Showsā HD Qualityā Free Actions
Free to watch ⢠No registration required ⢠HD streaming
I use Calibre, anĀ open source eBook manager, to manage my fics collection and FanFicFare plugin to update WIPs [FanFicFare is a tool for making e-books from stories on different websites].
Since a few weeks ago, I started having problems downloading updates from certain @ao3org fics. Today I found the solution in this Reddit post. My level of computer use is basic, but the instructions there are very helpful, what I didn't understand so clearly [Given my high level of computer ignorance] I was able to look it up on the web with no problems.
Now I can happily update the WIPs I'm reading and send them to my e-reader with no extra fuss.
One of the many things I like about Ao3 is how it can so very easily group fics in a series. And one fic can even be in multiple series which is awesome for things like subseries or prompt challenges. But when you're downloading fanfics you probably noticed that for fics attached to multiple series, only the first series has it's information added to the downloaded fanfic's metadata. Or that if you download a series as both separate fics and as an anthology, the anthology isn't being marked as part of the series.
These are all fairly easy to fix, but lets start with the easiest to fix first. Which is the anthology issue.
Head into the FanFicFare menu and open the Configure FanFicFare model. Then choose the "Standard Columns" tab and take a look at the table of options for each standard column. Specifically the row of options for the 'Series' column. There should be three checkbox items: "New Only", "Set Calibre Series URL", and "Set 'Series [0]' for New Anthologies".
Make sure that last one is checked and the first one isn't. Then go to the OK button and click that, which will save and close the model.
Now go find either a new series to download as an anthology or one that's already downloaded (should have 'Anthology' in the title). For a new series use the "Get Story URLs from Web Page" option, choose the option for making an anthology, approve the URLs it finds, and let it download everything. For an existing anthology, select the fic in Calibre's book list and then use the FanFicFare option "Update Anthology Epub" in the FanFicFare menu (in the "Anthology Options" flyout) and walk through the update flow (basically the same as the add new anthology flow).
When it's done adding or updating the anthology, you should see it's added as "0 of <Series Name>".
Okay, that's the easy part. Now for adding some custom columns for those extra series listings.
First, lets take a look in the plugin-defaults.ini file. Well, I'm taking a look and pasting my findings here so you don't have to go digging, but it's pretty interesting to take a look through what's in the default settings for FanFicFare. (This file is found in the Configure FanFicFare modal in the "personal.ini" tab.)
Ao3 (and thus any supported Ao3 clones like SquidgeWorld) are going to have the following "extra_valid_entries:" options set in the plugin-defaults.ini file.
That's a lot of metadata that FanFicFare scrapes. Some of it's transformed into standardized metadata information already. 'byline' presumably becomes 'author', 'fandoms' gets funneled into 'category', and so on. Of course, what we care about for the sake of this tutorial is the series data.
Specifically, lets take a look at series00, series01, series02, and series03.
Series00 is going to be the same information already being populated into the existing column for Series. Which means that extra series data for a fic in more than one series will be in the series01, series02, and series03 entries that aren't currently being saved anywhere.
Time to make some custom columns.
Head into the Calibre Preferences and then choose "Add your own columns". Click the button to "Add custom column" and fill out the following info:
Lookup name: series01
Column heading: Series 01 (Note: this can be whatever you want to name it)
Column type: Text column for keeping series-like information
That should be all you really need. Hit OK and then add two more columns for series02 and series03.
It is important that the Lookup name matches the entry name for the metadata. For whatever reason, linking non matchy Lookup names to metadata entry names is a pain in the butt that I'm still working on figuring out. (It shouldn't be this hard and yet⦠sigh)
Once you've got your new columns added, hit Apply and restart Calibre. Now we can map the metadata entries to the new columns, we're officially halfway done. (It's all easy going again from here too.)
Time to go open up the FanFicFare personal.ini file to make a few minor changes. Under the "[archiveofourown.org]" section, before any metadata manipulation begins - so probably right beneath your username and password if you've set them - add the following four lines:
If you have a "[www.squidgeworld.org]" section you'll want to past those four lines there too.
Click the OK button to save and close the personal.ini file. Now go download a new fic associated with multiple series or find one you've already downloaded and update it's metadata only (unless you know it has new chapters). When the download/update process is done, you should see that the missing series data has been populated
Wait, however, there's one more thing you'll want to do. Because fic 1 in Series A might have Series A listed in the Series column but fic 2 might have it in the Series 01 column, searching just one column for all the fics in a series is no longer going to cut it. Searching 'series:"=Series A' won't return fic 2, but '#series01:"=Series A" will leave out fic 1. And if you want to combine the two search terms, it can be tedius to have to do that every single time.
The answer to this problem is to create a custom search term so that you can do 'allseries:"=Series A"' and have the search return Fic 1 and Fic 2. To do this, head back into Calibre's Preferences. In the top section labeled "Interface", the last option on the right should be "Searching" with a blue magnifying glass icon. Click that and then head to the "Grouped searches" tab.
In the Names input, type 'allseries'. Then head to the Value input. This one will offer auto-complete options as you type which is pretty useful - basically you want to type in the Lookup names for the columns you want the search to check and separate those Lookup names with commas. You'll want it to look like 'series, #series01, #series02, #series03,' when you're done filling it in. Note that the standard column series doesn't have a hashtag before it's Lookup name, but the custom columns do.
With the Names and Value inputs filled, the Save button should be available now. Click that to save the new search term and then click OK to close the modal. Exit from the Calibre Preferences and test out your new allseries search option.
You may need to go back and update metadata for a bunch of fics you've previously downloaded now, but it's definitely useful data to be able to keep track of.
I've talked before about using Calibre to download fic off of fiction archives, so that's where I decided to start with this series. If you're interested in learning more about how to download fanfic for offline reading/local archiving, then watch the #ficArchiving tag. And if you're not interested in seeing these posts then that's also the tag to block.
Edit (3/22/25) - I've updated the post due to changes in how FanFicFare works with regards to site ratings metadata - the type of column this information needs to be stored in has changed as it no longer works with selectable, pre-set options as originally outlined. Also adding note that additional plugins are required to make FanFicFare's anthology options available.
(Since this is a long post, I'm sticking it under the cut.)
First some background on what Calibre is. It's an open source eBook manager and is really quite versatile for it's usage, thanks in part to the robust library of plugins that it utilizes. The default Calibre app comes bundled not only with management software but an e-reader, server options for locally hosting your library (or libraries), and a whole host of options for managing metadata. Default metadata being tracked include title, author, series, publishing data, synopsis, and tags, but you can manually add columns for any additional data you want - which comes in handy when managing a local fanfiction archive. You can add columns for the fandom the fic is written for, the included ships, characters, completion status, whether it's a single fic or a series turned into an anthology. If the information is useful for you, then you can add a method to track it.
Now, for what Calibre does not do. Because it only runs on Windows/Mac/Linux systems - aka it only runs on a PC - you cannot install it on your phone or tablet. There's no official Calibre apps for Android or iPhones either, though there are unofficial ones that can work with Calibre in server mode. I've never tried the unofficial apps, however, as they tend to cost money that I don't really think they're worth. That's largely because in server mode you can log in to the local instance of Calibre with a regular old browser. Just book mark the page and, so long as your on a network where the local instance is running, your phone or tablet will have access to every book on your Calibre's library (or libraries, depending on how you set things up). You can then either read the eBook directly on the browser or, my preferred method, download the file and read it on the e-reader app of your choice. (You can also make the server available outside your local network, but I've never bothered to learn to set that up.)
Given everything Calibre can do, I'm not particularly bothered by the lack of official apps for phones or tablets - as far as I'm concerned it doesn't need one.
This post is going to be focused on using Calibre for fanfictions specifically, but if you want more information on the other things it can be used for, the Calibre FAQ pages are quite extensive and goes into detail about it's format support, eBook conversion abilities, device integration, news download services, library management, and more.
Alrighty, so first thing you'll want to do is download the version of Calibre that works with your computer. You can also create a portable version that runs off a USB drive if you prefer. Once you've downloaded and installed Calibre, it's time to decide where you want your fanfics to live. Do you want all your eBooks to live in one spot or do you want separate libraries for fanfiction vs original fiction? Since I like to collect more metadata for my fanfic collection than for my regular eBooks - and then completely different extra data for tracking my Star Trek books, or Doctor Who books - I like to have multiple libraries for managing my eBook files. And Calibre makes managing multiple libraries at one time very, very simple.
In Calibre's header there are going to be a lot of icons - Iāve modified the header toolbar for my Calibre instance, but most of the default options are still visible in the picture below.
Specifically you want the one that looks like four books leaning against each other on a shelf. It should have the default library name displayed there - Calibre Library.
Clicking on that will open the menu used for maintaining multiple libraries. While the application only sets up one library by default, it can link to multiple libraries located anywhere on your computer's filesystem. Since I like to use Dropbox to back up my libraries, I usually locate mine in my local Dropbox folder. You can import existing libraries from one instance of Calibre to another, which makes moving from one computer to another, or maintaining the same library across multiple computers, very simple.
Letās assume you want to have a separate library just for fanfiction. To that end, you'll want the first option on the menu - labeled "Switch/create library".
From there you'll want to select the folder - or create a new folder - with the name of the library you want to use in Calibre. I'd recommend something straightforward and call it "Fanfiction". Then you'll select the radio button labeled "Create an empty library at the new location".
You don't need to copy the current library's structure since every library is created with Calibre's default structure and you won't have added any specialized data tracking at this point to copy over. Once you've set your library location and selected the option for creating a new library, hit the OK button. It'll create the new library and immediately change so that it's managing that library instance instead of the default Calibre Library instance.
If you aren't sure which library is currently open in the Calibre app, then the icon with the four books in the header is where you want to check. It will always be labeled with the name of the currently open library. The most recently opened libraries will be listed at the bottom of the menu opened by that icon for easy switching between libraries and the "Quick switch" option will list all the available libraries registered to your Calibre instance. The icon with the four books is the default icon for a library - if you change the icon for a library then keep in mind that the icon will change in the header when the library is the currently selected on.
Alright, so step one is completed. You now have a dedicated Fanfiction library for maintaining any fics you choose to download. But the default metadata being tracked for the books isn't as robust as it could be. Time to bulk that information up. You'll want to look back at the header again, this time for an icon that looks like a crossed screwdriver and wrench. It's labeled Preferences. Click on that in the center of the icon to bring up the Preferences modal instead of just the menu (which you can access by clicking the associated down arrow beside the icon instead).
The Preferences modal is where you can access options to tweak the appearance, behavior, and various other functions of Calibre. And I certainly encourage experimenting with the application as it can be customized to your heart's desire to make it meet your accessibility needs. For now, however, we're only interested in the "Add your own columns" option on the top layer of the modal, under "Interface". The associated icon for the "Add your own columns" option is, appropriately, a small Greek column.
This will open the column maintenance modal which presents with a table listing all the existing columns - these all track some kind of metadata for the ebook - and will have checkboxes on the left most of the table indicating whether these columns are displayed on the main interface or are accessible only through the Edit Metadata modal. (We'll get to the Edit Metadata modal later.)
To the right of the table are options for moving a column up or down in the list order, a minus sign used for deleting unnecessary columns, a plus sign for adding new columns, and an edit option for editing existing columns. I'd recommend unchecking columns you don't want displayed in the main table, but not deleting columns. That way you can still store the metadata - and search on it - in that column, but it won't clutter up the main page.
Alright, so now it's time to add some columns. Click the plus button to bring up a custom column form.
The "Lookup name" is what Calibre uses to do searches, so it needs to be something that can be safely saved in a database. "Column heading" is the pretty name that displays either as a column heading in the main Calibre table or as the metadata entry name in the "Edit metadata" modal. "Column type" has a dropdown of the different types of metadata that can be stored in a column and has an option to show checkmarks (a checkbox) for additional true/false parsing. There are a lot of options in the dropdown for metadata types, some of which will offer up additional column creation form options, and this is something that cannot be changed once a column has been saved. If you select the wrong one and realize it later, you'll have to delete the column and create a new one to take it's place. "Description" is there to help clarify things if the "Column header" isn't descriptive enough to make clear what the metadata being tracked by the column is for. And, finally, you can use the optional "Default value" if you want that column to be auto filled with a value you can update later.
Note that the form may add further fields to it, depending on the selected āColumn typeā.
Since this is going to be tracking fanfiction metadata, some good ideas for creating tag-type metadata columns would be "Fandom", "Ship", and "Characters". You might also consider "Rating", "Content Warnings", āChaptersā, or other data which might be better suited for other types of metadata. We'll start with the "Fandom" column.
You'll want to set the "Lookup name" to "fandom" (note the lowercase here), the "Column heading" to "Fandom" (uppercase this time), and the "Column type" to "Comma separated text, like tags, shown in the Tag browser". The "Description" is optional, so add what you like (or don't) there and the same goes for "Default value", which you might want to list as "Unsorted" or simply leave blank to indicate the fandom is currently unlisted. Once you're satisfied with your selections, click "OK" and you can either then "Apply" your settings changes or continue on to add more columns.
The "Ship" and "Character" data also work best as comma separated data, so I recommend making those columns in the same fashion as the "Fandom" column. āChaptersā you may want to add as an integer column, shown below.
If you're wanting to add "Rating" as a column, then you might want to have specific options for rating a fic, such as limiting the options to the same ones used by Ao3. To this end, you'd fill out the form more like this. "Lookup name" as "rating_level" so as not to confuse it with the existing rating column for star ratings, "Column heading" as "Rating" or maybe "Rating Level", and "Column type" as "Text, but with a fixed set of permitted values". This "Column type" selection will bring up two more inputs on the column creation form - "Values" and "Colors". These two inputs work together and can be edited later. In the "Values" input, you can add a list of comma separated values. In this case the list for "Values" would look like "General Audiences, Teen and Up Audiences, Mature, Explicit, Not Rated". "Colors" is an optional list that will assign a different color to every option on the "Values" list that corresponds to an entry in the "Colors" list. So if you want General Audiences to be blue and no other option to have a color, you'd list "blue" for colors. Or "blue, blue, red, red, red" to have the first to options on the "Values" list as blue and the last three as red. You can play around with this more or leave it blank to have the options all be the same default colors.
Once you've finalized your selections, hit OK to create the column.
Edit (3/22/25) - FanFicFare currently no longer accurately scrapes ratings data into a column setup as "Text, but with a fixed set of permitted values". Instead you will need to use the "Comma separated text, like tags, shown in the Tag browser" option. Fixed values should still work for things like fic status, which have the Completed and In-Progress settings only, but changes either to FanFicFare or Ao3 (and thus any Ao3 clones) have made the fixed values option for ratings fail to correctly connect site tags to the preset values. The good news is that this will now set the ratings for an anthology fic made from a series page with the ratings of all fics within the series - so if some are General Audiences and others are Mature within a single anthology, that will be accurately reflected in your captured metadata after downloading a fic.
After creating all your new columns and selecting which ones you want present on the main table, hit the "Apply" button. You'll likely be prompted to restart Calibre. Do so and when the program reloads it should display the main table with all the columns exactly how you set them up. Which means step two is complete. At this point if you have any fanfiction eBooks already, you can drag and drop them into the table from folder files or use the "Add books" option at the left most side of the header toolbar to start adding those. You can manually update the metadata either by clicking on newly added book and then selecting a column or by clicking the book and then selecting the "Edit metadata" option in the header. So now it's time to take a quick look at the metadata editor modal.
By default, the metadata modal will only have one screen but, because you've added custom columns, there should be tabs at the top. One for "Basic metadata" and one for "Custom metadata". The "Basic metadata" includes options for title, title sort, author(s), author sort, series, series number, file versions (for tracking if you have epub, mobi, pdf, etc files of the same book), cover management options, the star-based rating system, tags, ids, upload date, published date, associated publisher, languages, and "Comments" which is where the story summery/synopsis should go. For regular, non-fanfiction eBooks, you might also take note of the "Download metadata" button which allows for scrapping official metadata off of sites like Barnes and Noble, Amazon, or other eBook sellers or archives.
The "Custom metadata" is where your custom column data will be found. It should be found at the top of the page and fill space downwards with however many custom columns you've added. Inputs that allow for comma separated values will still have a dropdown option associated to allow adding tags you've entered previously for other ebooks. Columns that only allow using preselected data are more likely to appear as select boxes or other form types. This is where you might notice you created a column type incorrectly, so make sure to check over all the data entry options for each metadata type you're collecting. If it doesn't look like it's set up the way you wanted it to be, you can go back to the column editing modal and try again.
The big draw of using Calibre to manage fanfiction eBooks, however, is being able to use Calibre to download the fanfictions from the web and convert them to eBook format for you. And that's where Calibre's plugin library comes in handy.
If you were making any edits to an existing eBook, save those and close the metadata editor. Head back over to the Preferences modal and check the Advanced settings options at the bottom of the modal. There should be a green puzzle piece icon labeled "Plugins" - click that to open the Plugins modal.
It will take you to a table used for monitoring and controlling existing plugins and, yes, it does already have 'plugins' installed. These are really more the application's default modules, but because of how Calibre works they can be edited and controlled in the same way that external plugins are. At the bottom of the page you'll see three buttons - "Get new plugins", "Check for updated plugins", and "Load plugin from file". These are concerned with the external plugins that you can add to Calibre. "Get new plugins" will allow you search through the official library of third party plugins available to Calibre - plugins that the Calibre team have vetted to confirm aren't actually malware. But they're by no means the only plugins you can install, as the "Load plugin from file" will allow you to load pretty much any plugin you want to. Such as a plugin for, say⦠stripping DRM off of purchased eBooks.
In this case, you want to select the "Get new plugins" option. This brings up a modal for User plugins and the displayed list will automatically be filtered by available plugins that have not yet been installed. You can filter this list further by typing "FanFicFare" into the "Filter by name" text input.
You can then select the FanFicFare plugin and install it. After installing the plugin, you should select the option to restart the application, to ensure that it installed properly. I'd also recommend adding the FanFicFare icon to the optional bottom toolbar instead of the header toolbar, since that'll make it much easier to find since, unless you add more plugins and assign them to that toolbar, it should be the only option on the bar right now.
Edit (3/22/25) - In addition to the FanFicFare plugin, you'll want to include two additional plugins so that FanFicFare can make it's anthology options available. These two plugins are EpubMerge and EpubSplit. These plugins can be used on their own to create anthologies by creating a new epub file from multiple epubs or splitting anthology books into separate epubs for each book contained within. Without these plugins FanFicFare's anthology options will be hidden, as it utilizes them for merging fics in a series together after downloading them separately.
So, full disclosure, you don't need Calibre to run FanFicFare. You could download it and run it from a command line interface instead. However, I prefer it's Calibre interface, especially since it really lets you take advantage of the best Calibre has to offer in metadata tracking, as it can be set up through Calibre to auto fill those columns I walked you through setting up earlier. But I'll get to more on that in a minute.Once Calibre has restarted, you should now have FanFicFare available on one of your toolbars. It's associated icon is a green text bubble with the letters "FF" in it pointing down at a picture of a book.
It'll have a small down arrow next to it, which you'll want to select in order to bring up FanFicFare's menu. At this point you can start downloading fics if you want - but let's do a little customizing first. Select the "Configure FanFicFare" option to bring up the configuration modal.
So this modal has a lot going on. And I do encourage doing some exploration on your own, because FanFicFare is a powerful tool made all the more powerful here in conjunction with Calibre's built in tools. Cover generation is very useful, "Reading lists" can be used to auto send new books to any devices you've linked to Calibre when they're connected to the computer, you can tie into email accounts to pull fanfics from email or pull URL links for downloading... there is just so much this plugin can do.
For now, however, we're interested in the column related options. First, check out the tab for "Standard Columns". Look over the options there carefully to make sure that the default settings are actually what you want. They're pretty straight foward - most are determining whether the metadata gets scraped and updated every time you update a fanfic eBook or if they're only scraped for new books. The rest have to do with title and author sorting, setting series related data, and setting the comment data for anthologies.
Once you've set that data how you want, head over to the "Custom Columns" tab where things get more interesting.
You should now be looking at a list of all those custom columns you created earlier, in alphabetical order. Each column will have a corresponding select box with nothing selected and an unchecked checkbox marked "New Only". This works in a pretty straightforward manner. Let's use "Fandom" as the example. Click the associated select box to open the dropdown and you'll see a bunch of potential metadata that FanFicFare scrapes listed there. It'll all go into the default tags column - found over in the "Standard Columns" section - but you can also parse it out to specific custom columns here. It might give you a few ideas for more columns you want to add for metadata sorting purposes. "Fandom" you'll want to link to "Category". I left "New Only" unchecked so that if I update an eBook later and it has a new fandom attached to the fic then that new metadata will be picked up and added to my Fandom tags for the fic.
Go through each custom column and set them up to be auto filled with the data you think fits it best. Select OK to save your changes and congratulations, this library has now been set up to import fanfiction.
Do keep in mind that FanFicFare's settings are on a per-library basis. So if you decide to do a separate library for different types of fanfics then you'll need to configure FanFicFare separate for every library. You may want separate libraries for different repositories, for example. Though FanFicFare is often smart enough to recognize when it already has an eBook version of a fanfiction from one repository - such as FFnet - when trying to download the same fic from another place - like Ao3.
You may need to make changes later to the personal.ini file associated with the library (which is also set up on a per-library basis) but I'll write up a separate post for that later. While sites protected by Cloud Flare more stringent protections will likely result in 403 responses and failed downloads, most fanfiction sites are going to work with the default FanFicFare settings. You could head over to, say, Archive of Our Own or Twisting the Hellmouth and grab a URL for a story from there. Or a URL for a series, which has links to multiple stories.
Now that the set up is done, it's time for the fun part. Downloading and maintaining fanfiction in your library. I'll be using a few of my fanfictions on Ao3 as example URLs. Awaken, which is already in my fanfiction library. What Balance Means, which is not already in my library. And the two series Hartmonfest 2023 and Eobard vs Eobard.
We'll start with the single URL uploads.
Click on the FanFicFare down arrow to bring up the menu and select the first option on the menu, labeled "Download from URLs". If you have a URL in your clipboard and have the option to grab URLs from the clipboard selected in the FanFicFare configuration (it's a default option, so you most likely do) then you should see that URL prepopulated in the text area when the Story URLs modal loads. You can add more URLs, one per line, to this text area and when you select OK each one will be individually downloaded as a separate epub file. For multi-chapter fics you only need to provide the url for the first chapter. FanFicFare will be able to detect the additional chapters and download them into the same epub file as the first chapter. All providing additional chapter URLs will do is lead to FanFicFare attempting to create multiple epubs of the same fanfic.
Once you've added your list of URLs to the text area, select OK. FanFicFare will do the rest, fetching metadata for the fic (or fics) and compiling the epub file(s). When it's finished compiling the data but hasn't officially saved the epubs, it will pop up a message letting you know how many "good" and "bad" entries it found.
"Good" means it made an epub file and it's good to go. "Bad" could mean that you've already got the fanfic downloaded and no updates - such as new chapters - were available. Or it could mean that it failed to grab the web pages for whatever reason⦠like Cloud Flare blocking the download. You can go forward with the download at this point, adding the good epubs to your library. Or you could cancel the download, meaning none of the epubs are saved. Before choosing one of those options you can also choose to look at the job output, seen in the pop up as a button labeled "View log". This will display a list of every url you tried to download a fanfic for and information on either it's success or why it failed, the associated URL, and how many chapters were downloaded.
Since I already had Awaken downloaded and there have been no updates since the last time I downloaded it, that is the bad update from my list and the result I was expecting. What Balance Means hadn't been downloaded before, so it was the expected good update. Once Yes is selected in the dialog, the new fanfiction eBooks will be added to the library and will appear at the top of the main list in the application.
That's great for updating one fic at a time or copy-pasting in a list of fanfictions, but let's get ambitious. Maybe you want to import an entire page of bookmarked fanfictions at once or a series of fanfictions as individual books. Instead of copying every single URL by hand, you can take the URL for the series main page or the Bookmarks URL. With that URL copied, you can head over to the FanFicFare menu again, but this time select the option "Get Story URLs from Web Page"
The modal that pops up only allows for inputting one URL - the URL for the page you want it to scour for fanfic URLs. Once you've inputted that URL click the button labeled "For Individual Books." It might take a bit but it's going to pull up the same Story URLs modal from before, this time prepopulated with every URL from the page you gave it. Pretty cool, right? Click OK and watch it run the job just like before.
I gave it the URL for my Hartmonfest 2023 series, which is a complete series and it downloaded all three books. Once they're populated on the list, I could scroll over to the Series column to see that they all are listed as being part of the Hartmonfest 2023 series in the same series order they're listed in on Ao3.
However, what if I'm uploading an unfinished series, like Eobard vs Eobard, and want to be able to track when it updates later on? Single books can track when new chapters are updated; is there any way to do the same thing but on a larger scale? The answer is yes, but you have to upload the series as an anthology.
Head back to the "Get Story URLs from Web Page" option on the FanFicFare menu and give it another series URL. But, this time, click the button labeled For Anthology Epub. This will trigger the Story URLs modal again once it's gathered all the story URLs, but this time it looks a little different.
This time there will be text indicating the Series and Comments/description, the information for which will have been taken from the series metadata. The series story URLs will be present in the text area, allowing you to remove a story from the anthology if there's a fic in there you don't want included. Click OK to run the import job, which will run like normal.
When the job completes, there should be multiple good updates listed - one for every URL - but when you click yes to add the eBook to the library, you'll only see one added. It should be named following the convention "<Series Name> Anthology". So now I've got the "Eobard vs Eobard Anthology" in my library.
Last but not least, how to check for updates to incomplete fanfictions or series. It's generally pretty easy to do. Select the fanfiction(s) on the list that you want to check for updates on. If it's a single fanfiction (or several single fanfictions), you go to the FanFicFare menu and click the option "Update Existing FanFiction Books"
Click OK and let it run. Any fanfictions that don't have new chapters will return as bad entries. Any that have new chapters will be listed as good. Selecting Yes to add the good entries to the list will update the existing epub files with the new chapters.
However, if it's a series you want to update, I recommend doing those one at a time. Select the anthology from the eBook list and head back over to the FanFicFare menu. This time select "Anthology Options"; it'll open a fly-out menu. You want the bottom option, labeled "Update Anthology Epub". The associated URL for the series is saved as part of the eBook's metadata already, so it will pull the series metadata and associated URLs again, before returning you to that same modified Story URLs modal seen before. When you click OK, it'll pull all the fanfictions in the series - new and old - and any new chapters as well, bundling it up in a new eBook file that will replace the old one.
There's still a lot to talk about when it comes to managing fanfictions in Calibre, but I think I'll end here for now. You should be able to download, and manage, fanfiction from most websites at this point. So go back up your bookmarked fics and rest easy knowing that from this point forward a missing bookmark on your bookmarks list is no longer cause for sadness - it'll still be in your local archive to enjoy offline. Just don't go abusing this power, okay guys?
So last time I covered how to manipulate fic rating tags, fandom tags, and character tags in order to standardize these tags in your Calibre fanfic library. This time lets look at relationship tags. There's a lot going on with those, so we'll stick to just the one tag type for this post.
Standardizing Relationship Tags:
Similar to Character tags, you can wind up with multiple tags in different archives, or even the same archive, that represent the same relationship. And if you're picky about name order being alphabetizedā¦
Thankfully relationship tags are pretty straightforward to manipulate.
For Ao3, or Ao3 clones like SquidgeWorld, you have a few different relationship types to consider. Ao3 only officially supports romantic - / - and platonic - & - relationship markers, but it allows various unofficial queerplatonic - ~, +, etc - and antagonistic - vs, etc - indicators as well. SquidgeWorld officially supports more relationship types, standardizing queerplatonic relationships with ~ in it's site faqs since there was some consensus towards that particular marker, but like Ao3 the site has been known to accept unofficial relationship indicators as well (though the site lead is also pretty quick about learning the reasons for these alternate indicators and updating to use them too if the relationship they represent doesn't already have an indicator).
Other sites are more likely to only tag for romantic relationships or even constrain tagging in a way you may still need to update manually. Ffnet, for example, only allows a max of two relationships to be tagged on a fic because the max number of characters that can be tagged is four and the relationship tagging is basically a sub tagging of the character tags. And while you can tag more than two people in one relationship, if the polycule is bigger than four characters then the writer has to choose which character(s) to leave out. Meaning that for sites like FFnet, you have to be aware of what the tagging limitations are in order to decide when you still need to go back later to manually update the metadata after downloading a fic and when the site tagging will be adequate after it's been run through the personal.ini file rules on download.
To keep the examples easy for me to keep track of in the next sections I'm going to use some Flash characters here. Barry Allen, Iris West, Eddie Thawne, and Eobard Thawne. And also break this down by indicators, using the four main ones from SquidgeWorld - '/', '&', '~', and 'vs' - since you'll see these on Ao3 too.
Romance indicators:
On various fics, you might see a relationship between Iris West and Eddie Thawne tagged as Iris West/Eddie Thawne and Eddie Thawne/Iris West. SquidgeWorld and Ao3 both recognize these as being the same tag, but Calibre isn't going to be able to do that. So you're going to have to pick one and alter the other to match with a 'replace_metadata:' rule. Assuming alphabetical name order, Eddie Thawne will come before Iris West. So you'll want a rule that looks like:
'''
ships=>Iris West/Eddie Thawne=>Eddie Thawne/Iris West
'''
For the Barry Allen and Iris West ships, however, you might see 'The Flash' get thrown in there. Barry/Iris, Iris/Barry, Barry Allen/Iris West, Iris West/Barry Allen, The Flash/Iris West, Barry Allen | The Flash/Iris West, Iris West/The Flash, Iris West/Barry Allen | The Flash, The Flash | Barry Allen/Iris West, and Iris West/The Flash | Barry Allen. You might even see 'NewsFlash' or 'WestAllen' in place of the traditional 'Character A/Character B' tagging indicators.
That's⦠a lot of potential tags all for one ship, am I right? To be honest, I don't think the Flash fandom actually uses all those potential tags but this gives you an idea of how many permutations of one relationship tag you might find yourself dealing with elsewhere. And if you want to consolidate all these into one tag with the names in alphabetical order, you'd want a set of tags something like these.
First, you'd want a few tags to consolidate Barry's name into just Barry Allen
'''
ships=>Barry Allen | The Flash=>Barry Allen
ships=>The Flash | Barry Allen=>Barry Allen
ships=>The Flash=>Barry Allen
'''
This turns all 'Barry Allen | The Flash' and 'The Flash | Barry Allen' instances into 'Barry Allen' and then converts and remaining standalone 'The Flash' instances into 'Barry Allen' too.
Next you'd want these rules to further consolidate the tags:
'''
ships=>NewsFlash=>Barry Allen/Iris West
ships=>WestAllen=>Barry Allen/Iris West
ships=>Iris West/Barry Allen=>Barry Allen/Iris West
'''
This should fix everything except for the 'Barry/Iris' and 'Iris/Barry' tags. And before fixing those, consider that there could also be Barry/Iris West or Iris/Barry Allen. Yup, throwing two more tag permutations at you. Handle the tagging wrong and you could wind up with Barry Allen/Iris West Allen or Barry Allen/Iris West West.
'''
ships=>Barry/Iris=>Barry Allen/Iris West
ships=>Iris/Barry=>Barry Allen/Iris West
ships=>West Allen=>West
ships=>West West=>West
'''
This, however, should smooth out any issues remaining with the tags I listed and hopefully prepare you for other issues in tagging that could show up down the line.
But what about a polycule? Westhawne is one of my favorite polycules for The Flash, so let's use that as an example. It could be tagged as Barry Allen/Eddie Thawne/Iris West, Barry Allen/Iris West/Eddie Thawne, Iris West/Eddie Thawne/Barry Allen, Iris West/Barry Allen/Eddie Thawne, Eddie Thawne/Barry Allen/Iris West, or Eddie Thawne/Iris West/Barry Allen.
If all the rules above for Eddie/Iris and Barry/Iris are already in place then some of these will have already been manipulated a bit without adding any new rules at all. 'Barry Allen/Iris West/Eddie Thawne' will already be changed to the alphabetized 'Barry Allen/Eddie Thawne/Iris West' thanks to the rule turning 'Iris West/Eddie Thawne' into 'Eddie Thawne/Iris West'.
'Iris West/Eddie Thawne/Barry Allen' will get manipulated twice. The first time it will hit the Eddie/Iris rule that flips the order of their names. Then it'll hit the Iris/Barry rules that flips the order of those two names as well, leaving the final result as 'Eddie Thawne/Barry Allen/Iris West'.
To clean that up and also alphabetize any Barry Allen/Eddie Thawne fics you might download, you can add this rule:
'''
ships=>Eddie Thawne/Barry Allen=>Barry Allen/Eddie Thawne
'''
Because the 'replace_metadata:' rules are applied in the order they're written in, this will make the final output of a fic with the tag 'Iris West/Eddie Thawne/Barry Allen' become 'Barry Allen/Eddie Thawne/Iris West'.
'Iris West/Barry Allen/Eddie Thawne' however, will only be affected by the 'Iris West/Barry Allen' rule, since Iris's name won't be moved to form 'Iris West/Eddie Thawne' until after that rule has already been checked and found not to apply. So with the current ruleset, it'll become 'Barry Allen/Iris West/Eddie Thawne'.
At this point you'll want to add one of the two following rules:
'''
ships=>Barry Allen/Iris West/Eddie Thawne=>Barry Allen/Eddie Thawne/Iris West
'''
or
'''
ships=>/Iris West/Eddie Thawne=>/Eddie Thawne/Iris West
'''
There are advantages to each option, so it's really down to personal preference and how common it is for you to read polycules that involve Iris and Eddie, but not Barry.
Let's finish addressing the rest of the tag permutations. 'Eddie Thawne/Barry Allen/Iris West' would be altered by the Barry/Eddie rule to become 'Barry Allen/Eddie Thawne/Iris West'. And 'Eddie Thawne/Iris West/Barry Allen' will first be affected by one of the Iris/Barry rules to become 'Eddie Thawne/Barry Allen/Iris West', then the Eddie/Barry rule will come into play, leaving the ship in an alphabetized state. Thanks to the existing rules and the order they're applied, no new rules are needed in either case.
If you have ship rules in place for a subset - or subsets - of a polycule already, it's a good idea to go ahead and download a fic to see what the metadata is currently being massaged into. You can then add a rule and re-download just the metadata for the fic to verify the new rule works as expected.
Platonic ships:
There's not a lot here that is different from the romantic ships. The biggest, and really only difference, in how to handle these tags is the ampersand ('&') is handled a bit differently in Regular Expressions (RegExp) than most characters. You can't just use the & symbol on it's own and it's one that can't be handled using a preceding backslash to denote usage of the character and not the special meaning RegExp gives it.
In this particular case, the & symbol has to be represented by a collection of characters -> '&' (in case tumblr tries to eat that it's '& a m p ;' minus the spaces and I'm going to be quietly swearing over my examples for a while as I try to figure out how to fix them)
A couple of examples of manipulating platonic ship tags:
'''
ships=>Iris West & Barry Allen=>Barry Allen & Iris West
ships=>Eddie Thawne & Barry Allen=>Barry Allen & Eddie Thawne
'''
You might also want to break up platonic tags into groups of two, if you want Barry & Eddie & Iris to show up with your other Barry & Eddie, Eddie & Iris, and Barry & Iris fics. (Or you might feel like the tags convey different meanings entirely, but lets have a quick lesson in splitting one tag into multiple tags anyway, okay?)
To split one tag into multiple tags, you can do something like this:
'''
ships=>Barry Allen & Eddie Thawne & Iris West=>Barry Allen & Eddie Thawne, Barry Allen & Iris West, Eddie Thawne & Iris West
'''
the comma denotes the end of one tag and the start of a new tag once it's input into Calibre's columns, but while FanFicFare is doing it's thing this is still a simple string manipulation. So as long as you don't try to start a new line for each tag you want to add in place of the existing tag, then all the tags you want to replace it with will show up in the final output.
Queerplatonic Ships:
Again, the way to handle QPR ships is pretty similar to how the romance ships are handled. In this case, however you'll need to use the backslash before the tilde symbol so it looks like '\~' (and if tumblr eats my backslashes again '\ ~' with no space in there)
'''
ships=>Iris West ~ Barry Allen=>Barry Allen ~ Iris West
ships=>Eddie Thawne ~ Barry Allen=>Barry Allen ~ Eddie Thawne
'''
Bit of a warning however, if you are importing fics that mix the romance and QPR indicators in one tag. Running those mixed tags through these rules could wind up radically changing what's being indicated by the tag.
For Example, 'Iris West/Eddie Thawne ~ Barry Allen' would indicate a romantic relationship between Eddie and Iris that includes Barry as a queerplatonic partner. But run it through all those rules above and it's going to mutate a bit. It'll hit the rule for 'Iris West/Eddie Thawne' first and change the tag to 'Eddie Thawne/Iris West ~ Barry Allen' which isn't so bad. But then it reaches our new 'Iris West ~ Barry Allen' tag and flips those two names around, turning the tag into 'Eddie Thawne/Barry Allen ~ Iris West' which would mean Eddie and Barry have the romantic relationship and Iris is the queerplatonic partner. Which is⦠not correct.
For this case you may want to add a rule before all the existing 'ships' rules that would put the tag in the expected order:
'''
ships=>Iris West/Eddie Thawne \~ Barry Allen=>Barry Allen \~ Eddie Thawne/Iris West
'''
But this gets more complicated if Barry's name actually came after Eddie's but before Iris's alphabetically since it would still wind up mutating thanks to the rules that would come after it. In that case you may prefer adding rules to split mixed ship tags like this into separate tags, similar to the example above for platonic tags. In this case you'd still want to add this rule before the rules that would mutate the tag and do something like this:
'''
ships=>Iris West/Eddie Thawne \~ Barry Allen=>Eddie Thawne/Iris West, Barry Allen \~ Eddie Thawne, Barry Allen \~ Iris West
'''
This will mutate the original tag into a tag for the romantic relationship between Eddie and Iris with additional tags to indicate that Barry is queerplatonic partners with both Eddie and Iris. It may not be as succinct as the original tag, but the three tags together convey the same information and will make the fic available when searching for any three of those tags or any combination of those tags.
Antagonistic ships:
I do love that SquidgeWorld officially supports these relationship indicators. Sometimes I just want Eobard Thawne trying to fight Barry like Wile E. Coyote tries, and fails, to defeat the Roadrunner.
Again, not a lot of differences between how to handle these tags and the romance tags. However, you're probably going to see things like 'Barry Allen vs Eobard Thawne', 'Eobard Thawne vs. Barry Allen', 'Eobard Thawne | Harrison Wells VS Barry Allen', etc, so you'll need to decide first whether you want 'vs' or 'vs.' or 'VS' or 'VS.' as your antagonistic relationship indicator. Once you do, add these rules before the rest of your antagonistic relationship rules:
'''
ships=> vs.=> vs
ships=> VS=> vs
ships=> VS.=> vs
'''
You'll need to use the preceding space to help identify an actual antagonistic relationship indicator and you'll want to preserve that space in the modified tag. You'll also need a backslash before the period to indicate the character and not the RegExp operator.
From there you can do the usual name alphabetizing tricks to get the names in the right order so that all the tag variations will be consolidated.
Well, that takes care of Ao3 and sites that make use of it's open source UI code. But what about FFnet?
Barry Allen/Iris West would be represented as Barry A./Iris W. or Iris W./Barry A. depending on the order the characters are added to the fic.
Add these rules to the 'replace_metadata:' section for 'fanfiction.net'
'''
ships=>Barry A.=>Barry Allen
ships=>Iris W.=>Iris West
ships=>Iris West/Barry Allen=>Barry Allen/Iris West
'''
This will change the character names to their full names and then switch them into alphabetical order if they aren't already.
Finallyā¦
If at any time you want to lock a rule to a specific fandom, be it for a FFnet tag or Ao3 tag or whatever, you can always do the following:
'''
ships=>Iris West/Barry Allen=>Barry Allen/Iris West&&category=>The Flash
'''
This rule would only change 'Iris West/Barry Allen' into the alphabetized 'Barry Allen/Iris West' for the Flash fandom, meaning if you have a Barry/Iris ship for a different fandom where there are entirely different and unrelated characters with the same name (unlikely but not entirely impossible), then you could use the alphabetized version for one fandom and the reverse alphabetized name order for the other fandom. Or you could also do something like this:
'''
ships=>Iris West/Barry Allen=>Barry Allen/Iris West (The Flash)&&category=>The Flash
ships=>Iris West/Barry Allen=>Barry Allen/Iris West (Mystery Fandom)&&category=>Mystery Fandom
'''
That's it for now, but there's still more to talk about when it comes to manipulating tags using FanFicFare's personal.ini file.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
ā Live Streamingā Interactive Chatā Private Showsā HD Qualityā Free Actions
Free to watch ⢠No registration required ⢠HD streaming
Alrighty, so you've set up Calibre with FanFicFare and are downloading fanfics left, right, and center. Buuuut there are some problems with the tags you'd like to fix.
Ratings are different on different websites and perhaps you'd like to standardize them to Ao3's rating system. The same fandom may have different names on different websites. Character tags on Ao3 are full names, but Sam Winchester and Sam Wilson are both just Sam W. on Ffnet. Stuff like that.
And sure, you could go in an manually change the metadata after importing it. But you can also manipulate the data on import using the personal.ini file.
Standardizing ratings:
So I personally prefer Ao3's rating system. But you can change the ratings to fit whatever standard you prefer. Once you have the basics of how the personal.ini file handles manipulating tags, there's a lot you can do with it.
FanFicFare's tag manipulation hinges on something called Regular Expressions (RegExp) which can be used to match a very narrow portion of a tag or the entirety of a tag for removal or replacement.
Altering ratings is a pretty good first step in learning how to utilize RegExp.
Let's start with Twisting the Hellmouth's ratings. They use FR7, FR13, FR15, FR18, and FR21 to indicate what age ranges the fics are considered appropriate for. Obviously this isn't a 1:1 match for Ao3's Not Rated, General Audiences, Teen And Up Audiences, Mature, and Explicit - but but FR13 and FR15 fall into what I'd consider the Teen and Up range while FR18 and FR21 would be Mature and Explicit respectively. And FR7, of course, would be General Audiences.
So how do you go about instituting a rule in the personal.ini file that would automatically transform these ratings? First, you want to find or add a section for Twisting the Hellmouth. The line should look like [www.tthfanfic.org].
Underneath you'll want to add the following line: replace_metadata:
Should look like:
"
[www.tthfanfic.org]
replace_metadata:
"
So replace_metadata tells FanFicFare that on import, metadata in the specified category that matches a specfic RegExp should be replaced with the provided text. You can create as many rules as you want and, as long as they follow the correct format, the fanfic will have the expected metadata output at the end.
In this case the format looks something like this:
" rating=>FR7=>General Audiences"
rating would be the metadata category we want to manipulate. FR7 is the RegExp - instead of being fancy, we're handing it an exact string to match but I'll give fancier examples later - and when it matches in a tag in the rating metadata then it'll be replaced entirely with "General Audiences".
So a rating of "FR7" on TTH becomes "General Audiences" on Calibre after uploading. But keep in mind that if the ratings included tags like "FR77" then it'd turn that into "General Audiences7". Note that the final result still has that second 7 from the original tag left behind.
Anyway, you'll want to indent these rules by one space - the personal.ini editor built into the plugin should turn the word 'rating' green when you add one of these rules. The final result should look something like this:
"
[www.tthfanfic.org]
replace_metadata:
rating=>FR7=>General Audiences
rating=>FR13=>Teen and Up Audiences
rating=>FR15=>Teen and Up Audiences
rating=>FR18=>Mature
rating=>FR21=>Explicit
"
Alrighty, do a test upload of a TTH fic or do a metadata only update of a fic you've already imported. And watch as the ratings populate with the corrected information automatically. Pretty cool, right?
You can do this FFnet's ratings too, but you do need to be a bit fancier about it thanks to FFnet's K+ rating.
In RegExp the + symbol has a specific meaning; "x+" RegExp would match "x" but also "xxxxx" but not a string that is literally "x+" because in RegExp the + is saying 'match 1 or more of the preceding character'. So if you want to match the K+ rating you have to know how to indicate in RegExp that you want to match the actual plus symbol. The way to do that is with the \ backslash. You'd write the RegExp to look like "K\+". You'd also need a backslash to precede an actual backslash and some other characters that have specific uses in RegExp.
(Check out this cheat sheet: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions/Cheatsheet )
Anyway, the FFnet rules for rating replacements should look like this:
"
[www.fanfiction.net]
replace_metadata:
rating=>K\+=>General Audiences
rating=>K=>General Audiences
rating=>T=>Teen and Up Audiences
rating=>M=>Mature
"
This isn't going to account for 'mistagged' fic ratings, such as explicit fics hiding in the M rating on FFnet (which is super common), but it's still a good way to ensure your local archive is using a single, consistent rating system.
Consolidating fandom names:
One fandom can have multiple names across multiple archives. Take the 'Ace Attorney' series for example. On FFnet, it's called "Phoenix Wright: Ace Attorney" and on Ao3 the fandom is called "é転č£å¤ | Gyakuten Saiban | Ace Attorney" but you'd probably like all your downloaded Ace Attorney fanfic from both sites to be under the same fandom name.
FanFicFare uses the term 'category' for this type of metadata. So you'll need to add two rules - one for ffnet data and one for Ao3 data - to put all your fics into a fandom labeled just "Ace Attorney"
So underneath the ffnet ratings, you'll add a line that looks like this:
"
category=>Phoenix Wright: Ace Attorney=>Ace Attorney
"
or
"
category=>Phoenix Wright: =>
"
The first one does an exact match to the full category tag and replaces it with the new tag. The second on does a match to just the first part of the category tag: "Phoenix Wright: " (note this includes the space after the colon) and replaces it with an empty string. Both should result in the same output which is "Ace Attorney"
Similarly, under the "[archiveofourown.org]" section you'll want to make sure there's a "replace_metadata:" line and below that add one of these two options:
"
category=>é転č£å¤ \| Gyakuten Saiban \| Ace Attorney=>Ace Attorney
"
or
"
category=>é転č£å¤ \| Gyakuten Saiban \| =>
"
Keep in mind that the backslash has to be added before the pipe (|) symbol so that RegExp doesn't interpret it as a disjunction (check out the cheat sheet for what that is).
You can also use this method for collapsing multiple category tags into a single tag, such as all the Star Wars Prequel movies into a single tag. Or to undo Ao3's questionable decision to segregate the Sam Wilson Captain America movie from the Steve Rogers Captain America movies.
This is your personal archive, after all, and the tags should represent how you think these fanfictions should be categorized.
Character name manipulation:
Character names are another tag that's likely to be different from archive to archive. Or even in just one archive - on Ao3 Natasha Romanov is also Natasha Romonoff, Natasha Romonova, and probably more. She's got a lot of alternate name spellings going on in the fandom. There are also instances like "Eobard Thawne" and "Eobard Thawne | Harrison Wells" where the latter is sub tagged to the former in the archive but Calibre isn't going to know that. And so you may want to consolidate the two tags so all the Eobard Thawne fics are localized under a single character tag (though I can understand wanting to keep EoWells as a separate character).
For the Natasha situation on Ao3, you can do character tag adjustments like this:
"
characters=>Romonoff=>Romanov
characters=>Romonova=>Romanov
characters=>Natalie Rushman=>Natasha Romonov
"
This'll fix any character tag (but not relationship tags, I'll do another post later for those) that has alternate spellings for Natasha or uses her alias as a tag. One character, multiple Ao3 tags becomes one character, one tag.
For Ao3's treatment of Eobard, you can do a rule like this:
"
characters=>Eobard Thawne \| Harrison Wells=>Eobard Thawne
"
or
"
characters=> \| Harrison Wells=>
"
(note the space before the pipe symbol for the second one)
Both will leave just "Eobard Thawne" behind as a tag when "Eobard Thawne | Harrison Wells" is processed.
But what about FFnet using Sam W. for Sam Winchester in the Supernatural fandom and for Sam Wilson over in the MCU? A rule like "characters=>Sam W.=>Sam Winchester" will cause Sam Wilson fics to be mistagged.
What we want is a rule that only transforms Sam W. into Sam Winchester when downloading a Supernatural fic and into Sam Wilson when downloading an MCU fic. Thankfully there are ways of doing that.
"
characters=>Sam W\.=>Sam Winchester&&category=>Supernatural
characters=>Sam W\.=>Sam Wilson
"
(Note that a period in RegExp should be preceeded by a backslash in this situation.)
Alrighty, so the first of these two rules has "&&category=>Supernatural" appended to the end. Which indicates to FanFicFare that this character rule should only transform the tag to "Sam Winchester" when the category tag Supernatural is also present. It'll leave other instances of Sam W. alone. Which is pretty cool. However, for FFnet's crossover fics this could lead to a Supernatural/MCU fic that is intended to be tagged with Sam Wilson with incorrect tagging, but it's still better than having to go through and manually fix every single tag.
And while you could specify which category (or categories) you want just for Sam Wilson, this specific setup will process all Sam W. character tags for Supernatural into Sam Winchester and all the rest of the Sam W. character tag instances into Sam Wilson. Of course if there are Sam W. characters in other fandoms, you may want more specific rules for Sam Wilson. But this is a good starting point.
This seems like a good place to leave off for now, but there are still more ways to manipulate tags or even remove unwanted tags entirely. So I'll definitely be doing another post at some point to demonstrate more ways that FanFicFare can be used to automatically alter metadata when uploading, or updating, a fanfic in your local archive.
I have another adventure in #ficArchiving for those interested.
So youāve set up Calibre with the FanFicFare plugin and have been downloading fanfic. But you may have hit some snags. Fics with higher ratings come with age check/adult only warnings. Some fanfics are locked to the archive so that logged in users are the only ones who can access it. Fanfiction.net is hit or miss thanks to its use of Cloud Flare - and itās mostly a miss. And probably some other issues too.
Itās time to dig back into FanFicFareās configuration settings and start making some changes to the personal.ini file used to override the defaults.
First, youāre probably wondering what the personal.ini file even is. So open up Calibre, head over to the FanFicFare menu, and select the Configure FanFicFare option to reach the configuration modal. youāll want the second tab on the left, labeled personal.ini. Youāre probably not feeling all that enlightened by the screen that greets you, but at least now youāre in the right place to see what the file Iām talking about looks like.
Now the FanFicFare FAQs page doesnāt outright define what the personal.ini file is, but it does a pretty good job of eventually putting it into context the more you read about how FanFicFare works. But, essentially, the personal.ini is a file that will allow you to personalize the way FanFicFare accesses fanfiction and downloads it by redefining specific variables or adjusting code snippets. These personalized settings can be applied to all the fanfiction archives FanFicFare can access - which is a lot - or set up changes that affect only a single archive.
If you want to know what the default settings are, you can click the button to open the default.ini file. This file gives a detailed rundown of all available options and what the current settings are both on the universal (all archives) level and on the single archive level, since every site will work a little different with how the data is scraped and how FanFicFare determines which data is relevant and which isnāt. Thereās a lot of information in the default.ini file and while it can be interesting to see what all those options are, donāt feel like you need to read through the whole thing right now.
Letās switch over to the personal.ini file now. It should look something like the example.ini provided on the FanFicFare GitHub repository.
Much shorter and more readable than the default.ini file and all the options are currently commented out since you havenāt actually set any personal settings yet. You can probably already see the answer to fixing the first scenario I noted at the start of this tutorial, explained in the comments near the top of the example.ini file.
(Note: I'll be coloring code snippets in this color here to differentiate them from the rest of the post since tumblr doesn't do code blocks.)
If youāre having trouble accessing age restricted content, then you can uncomment #is_adult:true in the [defaults] section by removing the # at the start of the line.
If you removed all the commented code in the defaults section and leave only your personalized changes, it would look something like this:
[defaults]
is_adult:true
Click the OK button on the personal.ini editor to provisionally save the changes and the OK button on the configuration modal to apply them. If you don't hit the OK button in both places, then your changes will not actually be saved and you'll have to go back and make them again.
Now if you test downloading a fanfiction from Ao3 thatās rated M or E, you should see it download correctly this time. Because this change was made in [defaults], it applies to all fanfiction archives; if you prefer you could set it on a per archive basis like so:
[www.tthfanfic.org]
is_adult:true
Of you could have it set at the [defaults] level as true and override it as false on a per archive basis.
[defaults]
is_adult:true
[www.tthfanfic.org]
is_adult:false
Alternatively, if you want to make sure that the setting cannot be overriden, you could add it to the final override level like so:
[overrides]
is_adult:true
Okay, so thereās one setting down, more to go. Now letās talk about archive locked fanfictions.
Head back into the FanFicFare configuration modal and pull up the personal.ini editor again. Letās say thereās a fanfic you want to read offline, but itās locked to the archive. You can only read it if youāre logged in and FanFicFare canāt exactly log into your account. Or can it?
Actually, yes, FanFicFare can log into your account to download archive locked fanfiction. Now, you might be feeling a little - understandably - wary about handing your login credentials to FanFicFareās personal.ini file. What happens to them once theyāre in there? Are your accounts still going to be safe?
The answer is, yes, your accounts will be safe. The login information is only used when logging directly into the site using a headless browser on your computer - a headless browser meaning that itās never visible on screen. Because of this, the actual login data and any associated login cookies created stay on your computer. Beyond the actual login process, the username and password information never go beyond your computer and remain entirely secure. To revoke FanFicFareās access to your account, just remove the username and password from the file.
The plugin itself does not back up your personal.ini file outside of your computer nor does the plugin log any information from that file externally. So adding your log in credentials to the personal.ini file is currently quite safe.
Since a username and password are likely going to be unique for every site you have an account for, this is a setting youāll want to add on a per archive basis only. When you add that data, it should look something like this:
Now click OK on the personal.ini editor to save the changes and OK on the Configuration modal to apply them. If you test downloading an archive locked fanfiction from Ao3 now, FanFicFare should be able to do so using your username and password to log in first. If it goes wrong, reopen the personal.ini file and verify the username and password are correct. Then double check the archive url, making sure to compare to whatās used in the default.ini file to ensure that FanFicFare is associating the username and password with the archive correctly. Also make certain there is no extraneous space between username: and your actual username or password: and your actual password.
Huzzah! At this point most fanfics requiring age checks or archive access are now available for you to download and manage using Calibre and FanFicFare. There will be exceptions, however. And the biggest one? FFnet.
Since moving to Cloud Flare, FFnet has kept itās protection settings pretty high. When reading on the site directly, no doubt youāve noticed thereās often a Cloud Flare redirect going on and sometimes even an āare you a robotā check. Even the Internet Archive has trouble managing to back up anything from FFnet - most of the time it just⦠canāt. Similarly, FanFicFare struggles to download off of FFnet with itās default settings. More often than not, youāll see it fail with a 403 response in the logs when a download job completes.
But there is a way around this using FanFicFare. Itās not the prettiest solution, but it does get the job done.
The first thing you want to do is identify what your default browser is. If your default browser isn't Firefox, I recommend making it so specifically because Firefox is a good browser that is highly customizable and respects your privacy.
The reason why you want to identify your default browser is because we're going to be setting up some options for pulling fic data from the browser cache. There's a pretty good tutorial for this on the FanFicFare GitHub, which I'll be referencing here.
Head back into your personal.ini file and we'll do some more doctoring. First lets get that browser cache setting assigned.
Under [defaults] you'll want to add the browser_cache_path as shown above. I'm using the windows example for the Firefox cache from the FanFicFare tutorial here, but you'll want to fill in the actual path from your own computer. Make sure that information gets saved to your personal.ini and then we'll be making the next set of changes.
Now that FanFicFare knows where to find your browser cache, you want to have it start pulling fanfic data from FFnet from there. But you don't necessarily want it doing that for every archive, right? So we'll be making this changes for just FFnet.
[www.fanfiction.net]
use_browser_cache:true
With this setting saved, FanFicFare will pull any cached data for the fanfic you're wanting to download from FFnet. Which is great - but only if you've already got every chapter for that fic in your cache right now. Otherwise it'll still try to go grab that missing information itself.
So the next settings you want to add for the FFnet archive is use_browser_cache_only:true and open_pages_in_browser:true. It should look like this in your personal.ini:
Now FanFicFare will be grabbing data from the browser's cache and only the browser's cache and, so that you're not having to go open every single page before downloading, if there is missing data in the cache the FanFicFare will open the page in the browser which will allow it to pull that fresh data from your cache.
This does, however, mean that FanFicFare will no longer be running headless for this specific archive. It will pop open the new pages on your default browser on your screen and effectively take over your browser for the short (or possibly long for fics with lots of chapters) amount of time it takes to download to cache every piece of data FanFicFare uses to build the ebook. You can still do whatever you were doing - as soon as the page FanFicFare opens finishes loading you can close it as that data will now be in the cache for the plugin to use - but it is going to be a pain. Best to not expect to use your computer for anything else when downloading off FFnet at this point.
However, we're not quite done yet. At it's usual speed, FanFicFare is a bit fast for CloudFlare and you're going to want to keep an eye on it to make sure if a robot check happens that you have enough time to click the little checkbox before FanFicFare declares this venture (downloading a fanfiction) a failure.
slow_down_sleep_time is a variable that takes integers (numerical values) and essentially puts a delay between opening the new page, accessing the cache data, and then moving to the next page.
With the slow_down_sleep_time here set to 10 seconds, it's a short delay between the plugin telling the browser to open the page and declaring that it cannot access the necessary cached data. It should be enough time to allow you to manually bypass the robot checks if necessary while not turning the download process into a ridiculously lengthy endeavor. At this rate a six chapter fanfic will take about a minute to access every chapter before it moves on to the process of wrapping all that data into an ebook, which isn't really that bad. The longer the gap between the plugin opening new pages in the browser, the less likely FFnet is to assume you're a robot - so you can go for a shorter gap of you want but know you're more likely to get periodic checks that way and if you're not monitoring the process then it's also more likely to fail (and you'll have less time to click that little checkbox).
Alright, save your settings and give downloading off FFnet another try. If you're downloading a fic you just finished reading, you might see nothing happen at all while the job runs in the background. Or you might see it access all the chapters for the fic in your open browser.
As mentioned, not the most elegant solution out there, but it does get the job done. If you're wanting the metadata to auto-fill for you or specifically to track unfinished works as they update, then this is still going to be the best solution for downloading your fanfics. If you're okay with filling in the metadata yourself and aren't looking to track the fic for new updates, then there are other options that will be discussed in future blog posts.
Those three are the issues you're most likely to run into while downloading fanfic, but not the only ones. The FanFicFare FAQs are pretty useful for figuring out what may be going wrong with any issues you may run into and can direct you on how to request new features or report any bugs you might encounter.
Managing Calibre and FanFicFare - Additional Plugins, Tips, and Tricks
Here's a few more scenarios you may run into while managing your local fanfic archive and how to navigate them. As well as additional plugins that might make your life easier when managing your fanfic library - or any library of eBooks you may choose to use Calibre to control.
Anthology Options aren't working:
In this scenario, you've installed Calibre and the FanFicFare plugin, but the anthology options aren't being made available in the FanFicFare options menu. Don't worry, this isn't a problem with either Calibre or FanFicFare. Sometimes plugins will depend on other plugins for additional functionality and that's what's happening here.
FanFicFare will utilize the Epub Merge and Epub Split plugins as part of it's anthology creation process. If you go to the plugins management modal, choose the option to get more plugins, and search for these two plugins then you should be able to install them. They are two separate plugins and Calibre will need to restart after each install. Once they're both added to your Calibre instance and everything has been restarted, check out the FanFicFare menu again and you should see the anthology options available now.
I missed this while creating my initial walkthrough for Calibre + FanFicFare since I already had these plugins installed.
But what do the Epub Merge/Split plugins do? It is pretty much what it says on the tin. Epub Merge allows for merging multiple eBooks of the same format into a single new eBook. Useful for taking separate chapters and merging into a single book or taking books in a series and merging into a single anthology. If you have a bunch of stray recipe files, you could turn them into a custom recipe eBook. In turn, if you have an anthology eBook then you can use Epub Split to split out the separate books into unique files to make tracking which parts you've already read easier.
FanFicFare takes advantage of this functionality for it's fanfiction anthology management options. But you can utilize them separately for your own uses as well, either by assigning them to the toolbar or adding to them to a control menu.
Updating missing metadata:
There are two different ways to go about this, depending on whether you're wanting to update the file for a single fanfic or for an anthology series.
For single books, this process can work regardless of whether the fic was downloaded using Calibre + FanFicFare or if it was downloaded/created via other means. If you've directly downloaded a file off ao3, used a browser tool to create a fanfic off of FFnet, or simply added new columns for meta data tracking that weren't there when you original created the eBook file - it's actually pretty easy to update the metadata for a single eBook.
First you're going to want to check the book's metadata in the metadata editor. On the default tab in the metadata editor, there should be a field labeled "id". This field needs to be populated with the URL for the fanfiction. If it's already populated, you should be good. But if you need to switch to a different URL or add one, then the field should be formatted like this: "url:https://www.dummyfanfic.url.com/"
Once you've verified the URL is correct or added the URL if necessary, save and exit the metadata editor. Make sure the entry for the book (or books) you want to update is selected in the main eBook list and then head over to the FanFicFare control menu. Choose the option to Update Existing FanFiction Books from the menu.
The update modal should pop up with a list of all selected eBooks pre-populated and indicating if FanFicFare can update them. Any non-anthology eBook with a valid url in the id field should be indicated with a green icon as a valid update option. Any anthology eBook or single fanfic with an invalid url or empty id field will be indicated with a red x. If you choose to update the file, then only the valid options will be updated.
Before clicking the OK button, you'll want to update the following settings in the modal. Beneath the list in the modal should be a select box where you can choose to Update Calibre Metadata from Web Site - this will cause the updater to only check for metadata and not overwrite the existing eBook. And a checkbox for Update Calibre Metadata - sometimes the select option alone is not enough if the eBook is otherwise up to date; this will force the metadata to update once gathered. Choose the select option and check the checkbox, then click the OK button.
The job should run and update any eBook with a valid URL that is not an anthology.
For Anthologies, this is only going to work for eBooks created through FanFicFare. You might be able to manually add a series url to a regular eBook, but I haven't tested it and can't be certain it won't simply recreate and overwrite your existing eBook file. That said, if a series used to be tracked on one website and you want to track it on a different one now - say a series moved from Twisting the Hellmouth to Ao3 or from Ao3 to SquidgeWorld - you should be able to update the main series page url in the metadata editor's id field the same as you would for a single fic. But I haven't tested this yet either. So be warned, this isn't going to work exactly like the single book metadata update. Though the process is very similar.
You'll probably be doing this if you added new metadata tracking columns or if a new fic has been added to the series and you want to ensure the new metadata for this fic is added to the data being tracked for the entire series once updated.
Anthologies can only be updated one at a time. Select the book you want to update and then open the FanFicFare control menu. Select the Anthology Options, which will open a flyout menu. From there, choose Update Anthology Epub.
A modal should open with the list of URLs for the fanfics included in the anthology. Check the option at the bottom of the modal that is labeled "Update Calibre Metadata?" and then click the OK button. NOTE: if updating the anthology will mean losing an existing fic included in the series, it will warn you before allowing you to proceed. Be aware that if parts of a series have been deleted, you may want to simply manually update the anthology's metadata.
The job should run and update the anthology's metadata on completion, as well as updating the eBook itself with any new chapters or fics associated with the series.
Picking additional plugins:
There are a lot of plugins available for Calibre - officially supported or otherwise. While I'm mainly going to touch on officially supported plugins here - AKA, plugins that can be added using Calibre's internal add plugin flow - I am going to mention one plugin that would need to be side loaded. I'm not going to explain how to use that one since it is not useful for fanfic management, but it's good to know it exists for managing other, non-fanfic eBooks.
Find Duplicates
This plugin does essentially what it says on the tin. You can use it to find duplicates, so if you have multiple versions of the same fic from different sites (and possibly different author names, since they may not have kept the same user name from one site to another), this plugin can quickly evaluate your library and display the resulting selection. From there you can determine whether they're actually duplicate files and remove any unneeded entries.
For non fanfic library maintenance, this is also useful for identifying entries for different eBook file formats - epub, azw, mobi, et cetera - and combining them into a single entry that tracks all formats. Or merging metadata for two entries of the same eBook that also have the same format. You'll want to be very careful if merging two entries with the same format type so that an earlier version of an eBook doesn't replace a more recent version.
Mass Search/Replace
This is very useful for cleaning up and consolidating tags in your custom metadata. Fandom names will vary from site to site: Ao3 will use The Flash (2014) while SquidgeWorld uses the similar The Flash [2014] while FFnet will just call it The Flash. Character names may also differ from archive to archive: B. Sisko on FFnet would be Benjamin Sisko on Ao3 and you probably want all the fics with everyone's favorite Emissary to the Prophets tagged with the same name.
Once you've installed the plugin, it's fairly simple to use. Make sure to add it to a toolbar and then click the icon on the toolbar to bring up it's control menu. Choose Quick Search/Replace and from the flyout menu choose the Library option to search through and change tags across the entire open Library.
A modal should open with a list and a single entry already present on the list. Double click the entry to edit it. Another modal will open where you can assign the search field from among the columns, the tag you're searching for, and the tag you want to replace it with. You can also test the replacement at the bottom of the modal before going forth on a full replacement.
Additionally you can change whether it'd replacing based on exact character matches or using a regular expression - I'd recommend sticking to exact character matches if you're unfamiliar with how to use regular expressions. You can also replace an entire field, but I definitely do not recommend that one.
There are various other settings in there too and you can even save searches for re-use later. When trying out a new setting, always test it first before rewriting the tags on your entire library. If you can back up your library before trying something risky, the plugin itself recommends doing so.
Once you've got your search set up and working as expected in the tests, choose the OK button to close the second modal. This will return you to the first modal. Click OK on the first modal to run the search/replace function.
WARNING: In case you missed it before, this is a very powerful tool and, consequently, can really screw up your library if you're not careful. Backing up your library before making changes is highly advised.
TTS to MP3
This one isn't necessarily obvious based on the name at first. TTS here refers to "Text to Speech". This plugin is useful for creating an mp3 file using Text to Speech to 'read' an eBook for you. If you like listening to your fanfics and no one has podficced a fanfic yet, you can use this option to convert a fanfic to an audiofile.
I'm not super familiar with this one's usage yet, so I'm not going to include instructions for using it. It won't hurt anything to play around with it until you figure it out, though. And it's definitely no replacement for having a real person doing a pod fic since the computer isn't going have the natural pauses and rests of a human voice between paragraphs and the like. But when you're hankering for an audio version of a fic and there is none, it's better than nothing at all.
CalibreSpy
If you want to be able have read access to your fanfic library while managing a different library in Calibre - or vice versa - this is the plugin for you. It essentially allows you to search for, open, and read eBooks from any library Calibre manages while having a different library open for direct management. Since you can only directly manage one library at a time, this is useful for if a book has gotten lost and you want to find which library it was accidentally moved to or simply want to have a book open to read from a different library while still managing the currently open one.
Library Splitter
This sticks a frontend on the existing Calibre functionality for moving eBooks between libraries. You can use this to copy books between libraries or move them entirely (copy to a new location and delete the original), which is useful when splitting a new library out from an old one or if you dumped a bunch of eBooks into a default library to sort through later.
If you've chosen to manage multiple fanfic libraries, then you can use this for moving fanfics between the different local archives. But it's also useful for if you've accidentally added a non-fanfic file to the archive and want it moved to the library it actually belongs to without having to delete and re-add the file.
You can add this plugin to a toolbar, but it's functionality will also be available in the menu that appears when right clicking an entry on the main eBook list.
DeDRM/NoDRM
This one isn't really for fanfic management nor is it an officially supported Calibre plugin. Originally called DeDRM, it's been forked and renamed NoDRM since the original maintainer gave up control of the project. (Lack of time, I think?)
This is for stripping DRM off your eBooks. And it is very good at what it does. A lot of people have contributed - and continue to contribute - to allow people to rip the DRM off their eBooks and read their files - or loan their files - however they may choose to. This works with most major DRM types, though you may need to do additional work beyond just side loading the plugin to allow it to do it's thing. Kindle books in particular need a lot of prep to work - downloading two additional (and officially supported) KFX plugins as well as directly configuring the plugin (the easiest method involves using the serial number for a kindle device you physically own and have linked to your account, so you'll have to work a lot harder if you don't own a kindle device).
You'll want to do a lot of research with this one, but Calibre + DeDRM/NoDRM is one of the big appeals to using Calibre for regular eBook management. It was certainly what originally drew me to Calibre since I wanted to be able to read my eBooks in whatever eReader app I wanted to, as well as consolidate my collection from multiple sources.
The GitHub repository for NoDRM is found here and will have more information on how to use and install the plugin.
Since you own the file, technically you can strip off the DRM for your own use. But it's definitely a gray area which is why Calibre doesn't officially support the plugin.