## TEST STORIES ## http://test1.com?sid=12345 ## http://test1.com?sid=10001 ## http://test1.com?sid=10002 ## http://test1.com?sid=10003 ## http://test1.com?sid=10004 ## https://stackoverflow.com/a/5917250 ## 0 - 5000 => ^(\d+|([0-4],\d{3})*|5,000)$=>[w] 0 - 5000 ## 5001 - 10000 => ^((?!5,000)([5-9],\d{3})*|10,000)$=>[w] 5001 - 10000 ## 10001 - 20000 => ^((?!10,000)(1\d,\d{3})*|20,000)$=>[w] 10001 - 20000 ## 20001 - 40000 => ^((?!20,000)([2-3]\d,\d{3})*|40,000)$=>[w] 20001 - 40000 ## 40001 - 80000 => ^((?!40,000)([4-7]\d,\d{3})*|80,000)$=>[w] 40001 - 80000 ## 80000+ => ^((?!80,000)(([8-9]\d)|(\d{3,}))(,\d{3})+)$=>[w] 80000+ ## Less than 5000 => ^(\d+|([0-4],\d{3})*)$=>[w] Less than 5000 ## Less than 10000 => ^(([5-9],\d{3}))$=>[w] Less than 10000 ## Less than 20000 => ^((1\d,\d{3}))$=>[w] Less than 20000 ## Less than 40000 => ^(([2-3]\d,\d{3}))$=>[w] Less than 40000 ## Less than 80000 => ^(([4-7]\d,\d{3}))$=>[w] Less than 80000 ## Over 80000 => ^((([8-9]\d)|(\d{3,}))(,\d{3})+)$=>[w] Over 80000 [defaults] replace_xbr_with_hr:3 replace_hr:false replace_br_with_p:false slow_down_sleep_time:0.5 ## http://docs.python.org/library/datetime.html#strftime-strptime-behavior datePublished_format:%%B %%d, %%Y dateUpdated_format:%%B %%d, %%Y add_to_extra_valid_entries:,additional_characters,category_main,dateRange,icon_bookmarked,icon_subscribed,icons,prefix_category,prefix_rating,prefix_ships,prefix_status,prefix_wordcount additional_characters_label:Characters category_label:Fandom dateRange_label:Date include_in_additional_characters:characters include_in_category_main:category include_in_dateRange:datePublished,dateUpdated include_in_icons:icon_bookmarked,icon_subscribed include_in_prefix_category:category include_in_prefix_rating:rating include_in_prefix_ships:ships include_in_prefix_status:status include_in_prefix_wordcount:numWords keep_in_order_category:true keep_in_order_characters:true keep_in_order_ships:true ## keep in order for extra entries keep_in_order_additional_characters:true keep_in_order_category_main:true keep_in_order_dateRange:true keep_in_order_icons:true keep_in_order_prefix_category:true keep_in_order_prefix_ships:true exclude_metadata_pre: category=~(.*) - Fandom additional_characters==Other(s) additional_characters=~(Original|Various) Character\(?s?\)? freeformtags,genre==Other Additional Tags to Be Added warnings==Creator Chose Not To Use Archive Warnings warnings==No Archive Warnings Apply ## Remove ships that don't have a / or & ships,prefix_ships!~(.*)(\/| & )(.*) ## Removes platonic ships in ship lists ships,prefix_ships=~(.*) & (.*) ## Removes ships that are only implied or mentioned according to author prefix_ships=~^(.*)\(?(implied|mentioned)\)? replace_metadata: seriesHTML=>\<3=>♥ rating=> Audiences=> rating=>Teen [Aa]nd Up=>Teen ## Change / to & if friendship is mentioned ships=>(.*)[/](.*) \(?[Ff]riendship(?: only)\)?=>\1 & \2 category,prefix_category=>No Fandom=>Original Work category,prefix_category=> \(?(- All Media Types|- Fandom|Movies|Movie [0-9]+|Comics|TV|Video Games?)\)?$=> additional_characters=> - Character=> additional_characters=> ?\((cameo|briefly|if you squint|sort of)\)=> additional_characters=> \([Cc]haracter\)=> additional_characters=>\(mentions of\) => category,ships= - Fandom$=> ships=> - Relationship=> ships=>^(.* - Relationship)$=> ships=>^(Eventual (.*)/(.*))$=> ######################### ## START SPECIFIC CHANGES ######################### category,prefix_category=>^(Doctor Who)(.*)=>Doctor Who category,prefix_category=>Biohazard \| Resident Evil \(Gameverse\)=>Resident Evil category_LIST=>^(Supergirl \(TV 2015\))\, (Supergirl)$=>\1 category_LIST,prefix_category_LIST=>^((\[c\] )?Marvel Cinematic Universe)\, ((\[c\] )?Captain Marvel \(2019\))$=>\3 category,prefix_category=>(The\s)?Devil Wears Prada(\s\(\d+\))?=>The Devil Wears Prada (2006) ## Remove unnecessary info on characters and ships additional_characters,ships=>(\s\(?(Avatar|Baldur's Gate|Disney|Dragon Age|DCU|DWP|(The )?Devil Wears Prada|Doctor Who.*|Grey's Anatomy|Once Upon a Time|Resident Evil|Station 19|Supergirl TV 2015)\)?)=> ## Standardize names for consistency ships,prefix_ships=>(OFC\/OFC)|(Original Female Character\/Original Female Character)=>Original Female Character(s)/Original Female Character(s) ## Prioritize specific Dragon Age/Mass Effect category category_LIST=>^(Dragon Age( \(Video Games\))?\, )(Dragon Age(:? (Inquisition|II|Origins)))(\, .*)?=>\3\6 category_LIST=>^(Mass Effect( \(Video Games\))?\, )(Mass Effect(:? (Trilogy|Andromeda)))(\, .*)?=>\3\6 prefix_category_LIST=>^(\[c\] Dragon Age( \(Video Games\))?\, )(\[c\] Dragon Age(:? (Inquisition|II|Origins)))(\, \[c\].*)?=>\3\6 prefix_category_LIST=>^(\[c\] Mass Effect( \(Video Games\))?\, )(\[c\] Mass Effect(:? (Trilogy|Andromeda)))(\, \[c\].*)?=>\3\6 ## Make specific Inquisitor/Warden name the main ship instead of generic ships_LIST,prefix_ships_LIST=>^(.*Inquisitor.*)\, (.*(Adaar|Cadash|Lavellan|Trevelyan).*)=>\2 ships_LIST,prefix_ships_LIST=>^(.*(Adaar|Cadash|Lavellan|Trevelyan).*)\, (.*Inquisitor.*)=>\1 ships_LIST,prefix_ships_LIST=>^(.*Warden.*)\, (.*(Amell|Brosca|Cousland|Aeducan|Mahariel|Surana|Tabris).*)=>\2 ships_LIST,prefix_ships_LIST=>^(.*(Amell|Brosca|Cousland|Aeducan|Mahariel|Surana|Tabris).*)\, (.*Warden.*)=>\1 ## Use OFC/OFC as first ship instead of specific entries in Original Works ships_LIST,prefix_ships_LIST=>^(.*)\, ((\[p\] )?Original Female Character\(s\)\/Original Female Character\(s\))(\,.*)?=>\2, \1\4&&category=~Original Work ####################### ## END SPECIFIC CHANGES ####################### ## Get first item in list for prefixed tag prefix_category_LIST=>^(.*?)(\,.*)=>\1 category_main_LIST=>^(.*?)(\,.*)=>\1 prefix_ships_LIST=>^(.*?)(\,.*)=>\1 ## Add prefix to tags prefix_ships=>^(.*)=>[p] \1 prefix_category=>^(.*)=>[c] \1 prefix_rating=>^(.*)=>[r] \1 prefix_status=>^(.*)=>[s] \1 ## Group word count prefix_wordcount=>^(\d+|([0-4],\d{3})*|5,000)$=>[w] 0 - 5000 prefix_wordcount=>^((?!5,000)([5-9],\d{3})*|10,000)$=>[w] 5001 - 10000 prefix_wordcount=>^((?!10,000)(1\d,\d{3})*|20,000)$=>[w] 10001 - 20000 prefix_wordcount=>^((?!20,000)([2-3]\d,\d{3})*|40,000)$=>[w] 20001 - 40000 prefix_wordcount=>^((?!40,000)([4-7]\d,\d{3})*|80,000)$=>[w] 40001 - 80000 prefix_wordcount=>^((?!80,000)(([8-9]\d)|(\d{3,}))(,\d{3})+)$=>[w] 80000 ### Get date range with published date and updated date ## diff dates 1pmonth 2pday 3pyear 4umonth 5uday 6uyear dateRange_LIST=>([^\s]+)\s+(\d{1,2})\,\s+(\d{4})\,\s([^\s]+)\s+(\d{1,2})\,\s+(\d{4})=>\1 \2, \3-\4 \5, \6 ## same year 1 2 3 4 5 dateRange_LIST=>([^\s]+)\s+(\d{1,2})\,\s+(\d{4})-([^\s]+)\s+(\d{1,2})\,\s+\3=>\1 \2-\4 \5, \3 ## same month 1 2 3 4 dateRange_LIST=>([^\s]+)\s+(\d{1,2})-\1\s+(\d{1,2})\,\s+(\d{4})=>\1 \2-\3, \4 ## don't need regexp for date day, handled by de-dup. ### Bookmark and subscribed icons icon_bookmarked=>True=>Bookmarked icon_subscribed=>True=>Subscribed icon_bookmarked=>False=>Not Bookmarked icon_subscribed=>False=>Not Subscribed ## Show only separator if no bookmark or subscribed data icons_LIST=>^()$=>◈ ## Show bookmarked icon, show subscribed icon icons_LIST=>^(Bookmarked\, Subscribed)$=>🔖🔔 ## Don't show bookmarked icon, don't show subscribed icon icons_LIST=>^(Not Bookmarked\, Not Subscribed)$=>◈ ## Don't show bookmarked icon, show subscribed icon icons_LIST=>^(Not Bookmarked\, Subscribed)$=>🔔 ## Show bookmarked icon, don't show subscribed icon icons_LIST=>^(Bookmarked\, Not Subscribed)$=>🔖 ## CHANGE BACKGROUND COLOR ACCORDING TO RATING output_css=>fff_titlepage_color_replace=>264701&&rating==General output_css=>fff_titlepage_color_replace=>38419D&&rating==Teen output_css=>fff_titlepage_color_replace=>66347F&&rating==Mature output_css=>fff_titlepage_color_replace=>8F0101&&rating==Explicit output_css=>fff_titlepage_color_replace=>1B1B1B&&rating==Not Rated output_css=>fff_titlepage_color_replace=>555555 ## FILTER REDUNDANT FREEFORM TAGS freeformtags=>^(Angst and )(.*)=>Angst\,\2 freeformtags=>^(Fluff and )(.*)=>Fluff\,\2 freeformtags=>^(Smut and )(.*)=>Smut\,\2 freeformtags=>(\w+ )(Fluff)$=>Fluff freeformtags=>(\w+ )(Smut)$=>Smut freeformtags=>(\w+ )(Angst)$=>Angst freeformtags=>(.*)(Hurt\/Comfort)$=>Hurt/Comfort freeformtags=>^(Alternate Universe)$=> freeformtags=>^(Alternate Universe -)=>AU - freeformtags=>^(Drama & Romance)$=>Drama\,Romance freeformtags=>^(Friendship)$=> freeformtags=>^(Friendship/Love)$=> freeformtags=>^(Male-Female Friendship)$=> freeformtags=>^(Platonic Female/Male Relationships)$=> freeformtags=>^(Platonic Relationships)$=> freeformtags=>^(Canon Divergent)$=>Canon Divergence exclude_metadata_post: ## Removes the character in Characters metadata if they are already included in Relationships metadata ## Tests additional_characters=~Char A&&ships=~Char A additional_characters=~Char B&&ships=~Char B additional_characters=~Char C&&ships=~Char C additional_characters=~Char D&&ships=~Char D additional_characters=~Char E&&ships=~Char E add_to_custom_columns_settings: additional_characters=>#additional_characters bookmarked=>#work_bookmarked subscribed=>#work_subscribed dateRange=>#date_range freeformtags=>#additional_tags add_to_output_css: body { text-align: left; font-family: 'Noto Sans', sans-serif; } body.fff_titlepage { font-size: 2.5vmax; font-family: 'Roboto', sans-serif; background-color: #fff_titlepage_color_replace; color: white; } hr { display: block; border: 0; border-top: 1px solid; padding: 0; } ## https://stackoverflow.com/a/50191135 .flex-parent { display: flex; align-items: center; } .flex-child-edge { flex-grow: 2; border-bottom: 1px solid; } .flex-child-text { flex-basis: auto; flex-grow: 0; text-align: center; margin: 0 5px 0 5px; font-family: 'IBM Plex Sans', sans-serif; } .flex-child-text.stats span { font-weight: bold; } .flex-child-text.category { font-weight: bold; } .fff_titlepage .title h1 { font-family: 'Roboto', sans-serif; font-size: 3vmax; margin: 0; } .fff_titlepage .title h1 { font-weight: normal; } .fff_titlepage .title h1 a { font-weight: bold; } .fff_titlepage .title a, .fff_titlepage .tags a, .fff_titlepage .tag-summary-content a { text-decoration: none; color: unset; } .fff_titlepage .tag-summary-content a { font-style: italic; } .fff_titlepage .tag-summary-content p { margin-top: 0; } .fff_titlepage .tags { display: block; padding: 0; } dl .inline dt:after { content:'\00a0'; } dl .inline dt { float: left; } .display-on-reader { display: none; } .fff_titlepage dt { font-family: 'Roboto Condensed'; } .fff_titlepage dd { margin-left: 0.75em; } .fff_titlepage dl, .fff_titlepage dt { margin: 0; } ## Change displayed content on titlepage depending on screen width @media only screen and (max-device-width: 480px), only screen and (min-device-width: 768px) and (max-device-width: 1024px) { body.fff_titlepage, .fff_titlepage dt { background_color: unset; color: unset; font-family: unset; } .display-on-cover { display: none; } .display-on-reader { display: block; } .flex-parent.display-on-reader { display: flex; } } ## first ship, first category, rating, status, word count - all prefixed in Calibre's tags include_subject_tags:prefix_ships_LIST,prefix_category_LIST,prefix_rating,prefix_status,prefix_wordcount titlepage_start: ${title} by ${author}

${title} by ${authorHTML}

${category_main}
## ${id}, ${label}, ${value} titlepage_entry:
${label}:
${value}
## ${id}, ${label}, ${value} ## Used with entries listed in wide_titlepage_entries, typically description, storyUrl, authorUrl titlepage_wide_entry: ## When using tables, make these span both columns. wide_titlepage_entries: ## ${id}, ${value} ## For example, if you've set description_label: ## (that is, nothing) titlepage_no_title_entry:${value}
titlepage_end:
${rating} ${icons} ${numWords} ◈ ${chapterslashtotal}
${icons}
${description}
[epub] make_firstimage_cover:false jpg_quality:100 convert_images_to:png remove_transparency:false no_image_processing:true [archiveofourown.org] use_archiveofourown_gay:true # use_browser_cache:true # use_browser_cache_only:true # open_pages_in_browser:true is_adult:true always_login:true username:XXXXXXXX password:XXXXXXXX add_chapter_numbers:toconly mark_new_chapters:latestonly chapter_title_def_pattern:${title} chapter_title_add_pattern:${title} (${date}) chapter_title_new_pattern:${title} (${date}) | NEW chapter_title_addnew_pattern:${title} (${date}) | NEW include_in_icon_bookmarked:bookmarked include_in_icon_subscribed:subscribed keep_in_order_ao3categories:true keep_in_order_freeformtags:true chapterslashtotal_label:Chapters freeformtags_label:Tags freefromtags_label:Tags ao3categories_label:Category add_to_keep_html_attrs:,style,align ## Some sites/authors/stories (notably AO3/OTW) add empty p tags where ## they aren't intended by the author during document upload and not ## all authors know how/take the time to fix it. This feature removes ## all "empty"

tags, ie, those containing only whitespace or
## tags. Literally: ]*>\s*(
)*\s*

remove_empty_p: true extratags: add_to_replace_metadata: authorUrl=>(/users/orphan_account)/pseuds/.*$=>\1 ## inline css class: make metadata values show in the same line as the metadata label ## display-on-reader css class: make metadata values only show in your mobile device titlepage_entries:
,
,category,
,seriesHTML,warnings,ships,additional_characters,freeformtags,dateRange,
,rating,chapterslashtotal,numWords,
,
## ${number}, ${index04}("%04d"%${number}), ${chapter} chapter_start: ${chapter}

${origchapter}
${date}

add_to_custom_columns_settings: chapterslashtotal=>#chapters [test1.com] add_to_extra_valid_entries:,additional_characters,category_main,ships_all,prefix_category,prefix_ships,icons,icon_bookmarked,icon_subscribed,dateRange,chapterslashtotal,freeformtags include_in_category_main:category include_in_ships_all:ships keep_in_order_category_main:true keep_in_order_ships_all:true additional_characters_label:Characters After Filtering characters_label:All Characters icon_bookmarked_label:Bookmarked icon_subscribed_label:Subscribed prefix_category_label:Prefix Category prefix_ships_label:Prefix Ships ships_all_label:All Ships ships_label:Ships After Filtering freeformtags_label:Freeform Tags titlepage_entries:
,warnings,seriesHTML,ships_all,characters,ships,additional_characters.SHOW_EMPTY,dateRange,freeformtags,
,rating,chapterslashtotal,numWords,
,
[teststory:defaults] add_to_valid_entries:,icon_bookmarked,icon_subscribed,dateRange,chapterslashtotal,rating,freeformtags_list title:{{storyId}} General author_list:{{storyId}} category_list:Category 1 characters_list:Char A,Char B,Char C,Char D,Char E ships_list:Char A/Char B,Original Female Character/Original Female Character,Char C/Char D icon_bookmarked: icon_subscribed: freeformtags_list:Angst,Fluff,Angst and Fluff,Drama,Romance description:

Default description. Used when no description is set in specific test stories.

chapterslashtotal:1/1 datePublished:2023-1-1 dateUpdated:2023-1-1 numWords:13546 Rating:General status:Completed [teststory:10001] title:{{storyId}} Get first specified Inquisitor as main ship instead of Inquisitor/Character category_list:Dragon Age: Inquisition, Dragon Age: Origins, Dragon Age II, Dragon Age icon_bookmarked: icon_subscribed: ships_list:Female Inquisitor/Josephine Montilyet, Female Adaar/Josephine Montilyet characters_list:Female Inquisitor,Female Cadash,Female Trevelyan,Josephine Montilyet,Female Adaar, Female Warden (Dragon Age), Morrigan, Leliana, Cassandra Pentaghast chapterslashtotal:5/10 datePublished:2023-3-5 dateUpdated:2023-5-20 numWords:89231 status:In-Progress Rating:Explicit series:Test Series [1] description:

No bookmarked and subscribed data.

[teststory:10002] title:{{storyId}} Specified Warden as main ship category_list:Dragon Age (Video Games),Dragon Age - All Media Types,Dragon Age: Origins,Dragon Age: Origins - Awakening icon_bookmarked:Bookmarked icon_subscribed:Subscribed ships_list:Female Warden (Dragon Age)/Morrigan, Female Amell (Dragon Age)/Morrigan characters_list:Female Warden, Female Amell (Dragon Age), Morrigan (Dragon Age), Leliana (Dragon Age) chapterslashtotal:7/21 datePublished:2020-9-29 dateUpdated:2023-12-30 numWords:122513 status:In-Progress Rating:Not Rated [teststory:10003] title:{{storyId}} Mass Effect category_list:Mass Effect (Video Games),Mass Effect Trilogy icon_bookmarked:Not Bookmarked icon_subscribed:Not Subscribed ships_list:Female Shepard/Liara T'Soni characters_list:Female Shepard,Liara T'Soni,Miranda Lawson chapterslashtotal:10/10 datePublished:2022-10-7 dateUpdated:2022-11-1 numWords:21629 Rating:Mature description:

Not bookmarked and not subscribed.

[teststory:10004] title:{{storyId}} No ships category_list:Category ships_list: characters_list:Character 1, Character 2, Character 3 chapterslashtotal:1/1 datePublished:2018-8-12 dateUpdated:2023-9-20 numWords:232510 description:No relationship tag Rating:Not Rated