diff --git a/src/tags/index.ts b/src/tags/index.ts
index 8095bbb2..05b4ffc4 100644
--- a/src/tags/index.ts
+++ b/src/tags/index.ts
@@ -7,6 +7,7 @@ import {
getParentTags,
getChildTags,
getSubTags,
+ getTagsWithSameMeaning,
} from "./page-getters";
import { getTagId, getTagNameFromFeed } from "./works-feed-getters";
import {
@@ -79,6 +80,7 @@ export const getTag = async ({
parentTags: getParentTags(tagPage),
childTags: getChildTags(tagPage),
subTags: getSubTags(tagPage),
+ tagsWithSameMeaning: getTagsWithSameMeaning(tagPage),
};
};
diff --git a/src/tags/page-getters.ts b/src/tags/page-getters.ts
index 64495737..09955dfb 100644
--- a/src/tags/page-getters.ts
+++ b/src/tags/page-getters.ts
@@ -81,3 +81,11 @@ export const getSubTags = ($tagPage: TagPage) => {
});
return subTags;
};
+
+export const getTagsWithSameMeaning = ($tagPage: TagPage) => {
+ const tagsWithSameMeaning: string[] = [];
+ $tagPage(".synonym ul.tags li").each((_, element) => {
+ tagsWithSameMeaning.push($tagPage(element).text());
+ });
+ return tagsWithSameMeaning;
+};
diff --git a/src/urls.ts b/src/urls.ts
index fd8e31ab..f56c21da 100644
--- a/src/urls.ts
+++ b/src/urls.ts
@@ -79,7 +79,7 @@ export const getAsShortUrl = ({ url }: { url: string | URL }) => {
const longUrl = new URL(url);
if (longUrl.hostname !== "archiveofourown.org") {
throw new Error(
- `Short URLs are only supported for AO3 (found: ${longUrl.hostname})`
+ `Short URLs are only supported for AO3 (found: ${longUrl.hostname})`,
);
}
@@ -99,8 +99,8 @@ export const getDownloadUrls = ({
updatedAt,
publishedAt,
}: // Make it so you can either pass specifically the needed elements of a work,
-// but also the whole summary if you prefer
-| Pick
+ // but also the whole summary if you prefer
+ | Pick
| WorkSummary) => {
const timestamp = new Date(updatedAt ?? publishedAt).valueOf();
const downloadLinkBase = new URL(`downloads/${id}/`, getArchiveBaseUrl())
@@ -130,7 +130,7 @@ const TOKEN_REPLACEMENTS_MAP = {
type ReplaceableToken = keyof typeof TOKEN_REPLACEMENTS_MAP;
const REPLACEABLE_TOKENS = Object.keys(
- TOKEN_REPLACEMENTS_MAP
+ TOKEN_REPLACEMENTS_MAP,
) as ReplaceableToken[];
const TOKENS_TO_ESCAPE = ["/", "?", "."];
@@ -145,9 +145,9 @@ const isReplaceableToken = (c: string): c is ReplaceableToken =>
*/
const REPLACE_TOKENS_REGEX = new RegExp(
`(${REPLACEABLE_TOKENS.map((token) =>
- shouldEscapeToken(token) ? `\\${token}` : token
+ shouldEscapeToken(token) ? `\\${token}` : token,
).join("|")})`,
- "g"
+ "g",
);
export const getTagUrl = (tagName: string) =>
@@ -155,9 +155,9 @@ export const getTagUrl = (tagName: string) =>
`tags/${encodeURI(tagName).replaceAll(
REPLACE_TOKENS_REGEX,
(char: string) =>
- isReplaceableToken(char) ? TOKEN_REPLACEMENTS_MAP[char] : char
+ isReplaceableToken(char) ? TOKEN_REPLACEMENTS_MAP[char] : char,
)}/`,
- getArchiveBaseUrl()
+ getArchiveBaseUrl(),
).href;
export const getTagWorksFeedUrl = (tagName: string) =>
@@ -198,7 +198,7 @@ export const getWorkDetailsFromUrl = ({
};
const getSearchParamsFromTagFilters = (
- searchFilters: Partial
+ searchFilters: Partial,
) => {
// Prepare the parameters for the search as a map first. This makes them a bit
// more readable, since these parameters will all need to be wrapped with with
@@ -206,7 +206,13 @@ const getSearchParamsFromTagFilters = (
const parameters = {
name: searchFilters.tagName ?? "",
fandoms: searchFilters.fandoms?.join(",") ?? "",
- type: searchFilters.type?.toLowerCase() ?? "",
+ // AO3 requires an empty string for "any" type
+ // This is not the same for wrangling_status, somehow
+ type:
+ searchFilters.type && searchFilters.type !== "any"
+ ? searchFilters.type.charAt(0).toUpperCase() +
+ searchFilters.type.slice(1).toLowerCase()
+ : "",
wrangling_status:
searchFilters.wranglingStatus
// We remove the _or_ and _and_ that we added for readability
@@ -216,7 +222,7 @@ const getSearchParamsFromTagFilters = (
sort_column:
searchFilters.sortColumn === "works_count"
? "uses"
- : searchFilters.sortColumn ?? "name",
+ : (searchFilters.sortColumn ?? "name"),
sort_direction: searchFilters.sortDirection ?? "asc",
};
diff --git a/tests/mocks/data/ao3/tag-search/commit=search tags__tag_search[fandoms]=__tag_search[name]=an unusual__tag_search[sort_column]=name__tag_search[sort_direction]=asc__tag_search[type]=__tag_search[wrangling_status]=/03.html b/tests/mocks/data/ao3/tag-search/commit=search tags__tag_search[fandoms]=__tag_search[name]=an unusual__tag_search[sort_column]=name__tag_search[sort_direction]=asc__tag_search[type]=__tag_search[wrangling_status]=/03.html
index ec4ca95e..bbf2a11e 100644
--- a/tests/mocks/data/ao3/tag-search/commit=search tags__tag_search[fandoms]=__tag_search[name]=an unusual__tag_search[sort_column]=name__tag_search[sort_direction]=asc__tag_search[type]=__tag_search[wrangling_status]=/03.html
+++ b/tests/mocks/data/ao3/tag-search/commit=search tags__tag_search[fandoms]=__tag_search[name]=an unusual__tag_search[sort_column]=name__tag_search[sort_direction]=asc__tag_search[type]=__tag_search[wrangling_status]=/03.html
@@ -34,7 +34,7 @@
-
+
@@ -57,7 +57,7 @@