diff --git a/build.gradle.kts b/build.gradle.kts index 094209ed..3cffeb07 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -66,6 +66,7 @@ val nativeImageBuildArgs = listOf( "--no-fallback", "-H:+ReportExceptionStackTraces", + "-H:IncludeResources=shows-markdown/.*\\.md$", "--initialize-at-build-time=io.opentelemetry.api", "--initialize-at-build-time=io.opentelemetry.context", "--initialize-at-build-time=io.opentelemetry.instrumentation.api", diff --git a/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/MarkdownDocumentCreator.java b/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/MarkdownDocumentCreator.java index db560202..21b5ac94 100644 --- a/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/MarkdownDocumentCreator.java +++ b/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/MarkdownDocumentCreator.java @@ -22,20 +22,28 @@ import java.util.ArrayList; import java.util.HexFormat; import java.util.List; +import java.util.Map; import org.apache.solr.common.SolrInputDocument; import org.commonmark.Extension; +import org.commonmark.ext.front.matter.YamlFrontMatterBlock; import org.commonmark.ext.front.matter.YamlFrontMatterExtension; -import org.commonmark.ext.front.matter.YamlFrontMatterVisitor; import org.commonmark.node.AbstractVisitor; import org.commonmark.node.Code; -import org.commonmark.node.CustomBlock; import org.commonmark.node.Heading; import org.commonmark.node.Node; +import org.commonmark.node.SourceSpan; import org.commonmark.node.Text; +import org.commonmark.parser.IncludeSourceSpans; import org.commonmark.parser.Parser; import org.commonmark.renderer.text.TextContentRenderer; import org.jspecify.annotations.Nullable; import org.springframework.stereotype.Component; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.SafeConstructor; +import org.yaml.snakeyaml.representer.Representer; +import org.yaml.snakeyaml.resolver.Resolver; /** * Utility class for processing markdown documents and converting them to @@ -108,9 +116,21 @@ public class MarkdownDocumentCreator implements SolrDocumentCreator { private final TextContentRenderer textContentRenderer; + private final Yaml yaml; + public MarkdownDocumentCreator() { List extensions = List.of(YamlFrontMatterExtension.create()); - this.parser = Parser.builder().extensions(extensions).build(); + // Source spans let the front matter block be sliced out verbatim for SnakeYAML + this.parser = Parser.builder().extensions(extensions).includeSourceSpans(IncludeSourceSpans.BLOCKS).build(); + // No implicit resolvers: every scalar stays the text as written (2026-01-01 + // is not a Date, 8.4 is not a Double); Solr's schema guessing types them. + LoaderOptions options = new LoaderOptions(); + this.yaml = new Yaml(new SafeConstructor(options), new Representer(new DumperOptions()), new DumperOptions(), + options, new Resolver() { + @Override + protected void addImplicitResolvers() { + } + }); this.textContentRenderer = TextContentRenderer.builder().build(); } @@ -150,7 +170,7 @@ public List create(String markdown) throws DocumentProcessing SolrInputDocument doc = new SolrInputDocument(); - addFrontMatterFields(document, doc); + addFrontMatterFields(markdown, document, doc); // Solr's default schema requires a unique key. A content-derived id keeps // re-indexing of the same markdown idempotent (same input, same document) @@ -178,55 +198,49 @@ public List create(String markdown) throws DocumentProcessing } /** - * Extracts YAML front matter entries into document fields and unlinks the front - * matter block so it is excluded from the rendered body content. + * Parses the YAML front matter with SnakeYAML and adds each entry as a field: + * scalars as their text, sequences as multi-valued fields, nested mappings + * flattened with underscores. The block is then unlinked so the rendered body + * contains only the document text. */ - private void addFrontMatterFields(Node document, SolrInputDocument doc) { - YamlFrontMatterVisitor frontMatterVisitor = new YamlFrontMatterVisitor(); - document.accept(frontMatterVisitor); - - frontMatterVisitor.getData().forEach((key, values) -> { - String fieldName = FieldNameSanitizer.sanitizeFieldName(key); - for (String value : flattenFlowSequences(values)) { - if (!value.isEmpty()) { - doc.addField(fieldName, value); - } - } - }); - - // The front matter block is metadata, not body text: remove it so the - // TextContentRenderer output contains only the document body + private void addFrontMatterFields(String markdown, Node document, SolrInputDocument doc) { Node firstChild = document.getFirstChild(); - if (firstChild instanceof CustomBlock) { - firstChild.unlink(); + if (!(firstChild instanceof YamlFrontMatterBlock block)) { + return; + } + List lines = new ArrayList<>(); + for (SourceSpan span : block.getSourceSpans()) { + lines.add(markdown.substring(span.getInputIndex(), span.getInputIndex() + span.getLength())); } + // The first and last spans are the --- delimiters + String text = String.join("\n", lines.subList(1, Math.max(1, lines.size() - 1))); + Object data; + try { + data = yaml.load(text); + } catch (RuntimeException e) { + throw new DocumentProcessingException("Failed to parse YAML front matter", e); + } + if (data instanceof Map entries) { + entries.forEach( + (key, value) -> addValue(doc, FieldNameSanitizer.sanitizeFieldName(String.valueOf(key)), value)); + } + block.unlink(); } - /** - * Expands simple YAML flow sequences into individual values. - * - *

- * The CommonMark front matter extension parses block-style lists - * ({@code - item}) into multiple values but passes flow-style lists - * ({@code [a, b, c]}) through as a single literal string. Flow style is common - * for tags in real-world markdown (Jekyll, Hugo), so split it here to produce - * the same multi-valued field either way. Values containing commas inside - * quotes are not supported and are kept as-is. - */ - private static List flattenFlowSequences(List values) { - List result = new ArrayList<>(values.size()); - for (String value : values) { - String trimmed = value.trim(); - if (trimmed.length() >= 2 && trimmed.startsWith("[") && trimmed.endsWith("]") && !trimmed.contains("\"") - && !trimmed.contains("'")) { - for (String element : trimmed.substring(1, trimmed.length() - 1).split(",")) { - result.add(element.trim()); + private static void addValue(SolrInputDocument doc, String fieldName, Object value) { + switch (value) { + case null -> { + } + case Map nested -> nested.forEach( + (key, inner) -> addValue(doc, FieldNameSanitizer.sanitizeFieldName(fieldName + "_" + key), inner)); + case Iterable values -> values.forEach(element -> addValue(doc, fieldName, element)); + default -> { + String text = String.valueOf(value); + if (!text.isEmpty()) { + doc.addField(fieldName, text); } - } else { - result.add(value); } } - return result; } private static String contentHash(String markdown) { diff --git a/src/test/java/org/apache/solr/mcp/server/indexing/ShowsSampleDataTest.java b/src/test/java/org/apache/solr/mcp/server/indexing/ShowsSampleDataTest.java new file mode 100644 index 00000000..5619fee3 --- /dev/null +++ b/src/test/java/org/apache/solr/mcp/server/indexing/ShowsSampleDataTest.java @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.solr.mcp.server.indexing; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.TreeMap; +import org.apache.solr.common.SolrInputDocument; +import org.apache.solr.mcp.server.indexing.documentcreator.JsonDocumentCreator; +import org.apache.solr.mcp.server.indexing.documentcreator.MarkdownDocumentCreator; +import org.junit.jupiter.api.Test; + +/** + * The {@code shows} sample dataset ships in every format the indexing tools + * accept: {@code shows.json}, {@code shows.csv}, {@code shows.xml} and one + * Markdown file per show under {@code shows-markdown/}. These tests pin that + * the representations the server parses itself (JSON and Markdown) yield the + * same 61 documents; CSV and XML are forwarded to Solr and checked end to end + * in {@code ShowsSampleDataIntegrationTest}. + * + *

+ * Two representation choices are worth knowing: + *

    + *
  • CSV carries multi-valued fields as repeated column headers + * ({@code genres,genres,genres}); Solr's CSV handler adds one value per + * non-empty cell under the same field name.
  • + *
  • XML is Solr's own update format ({@code }); it + * is forwarded to Solr rather than parsed here, so its equality with the JSON + * documents is checked end to end in + * {@code ShowsSampleDataIntegrationTest}.
  • + *
+ */ +class ShowsSampleDataTest { + + private static final int SHOWS = 61; + + private final JsonDocumentCreator json = new JsonDocumentCreator(new ObjectMapper()); + + @Test + void jsonHas61ShowsWithUniqueIds() throws Exception { + Map>> shows = byId(json.create(resource("/shows.json")), "id"); + + assertThat(shows).hasSize(SHOWS); + assertThat(shows.get("netflix-001")).containsEntry("title", List.of("Stranger Things")).containsEntry("genres", + List.of("Sci-Fi", "Horror", "Drama")); + } + + @Test + void markdownFilesParseToTheSameDocumentsAsJson() throws Exception { + Map>> expected = byId(json.create(resource("/shows.json")), "id"); + MarkdownDocumentCreator markdown = new MarkdownDocumentCreator(); + + for (Map.Entry>> show : expected.entrySet()) { + List docs = markdown.create(resource("/shows-markdown/" + show.getKey() + ".md")); + assertThat(docs).as(show.getKey()).hasSize(1); + Map> fields = fields(docs.getFirst(), ""); + + // The description is the document body, so it comes back as content + // (with the title heading) rather than as a front matter field. + Map> frontMatter = new TreeMap<>(show.getValue()); + List description = frontMatter.remove("description"); + assertThat(fields.remove("content")).as("%s content", show.getKey()).hasSize(1).first().asString() + .contains(description.getFirst()); + assertThat(fields.remove("headings")).as("%s headings", show.getKey()) + .isEqualTo(show.getValue().get("title")); + assertThat(fields).as(show.getKey()).containsExactlyEntriesOf(frontMatter); + } + } + + private static Map>> byId(List docs, String idField) { + Map>> byId = new TreeMap<>(); + for (SolrInputDocument doc : docs) { + Map> fields = fields(doc, ""); + String id = Objects.requireNonNull(fields.get(idField), "missing " + idField).getFirst(); + assertThat(byId.put(id, fields)).as("duplicate id %s", id).isNull(); + } + return byId; + } + + /** + * Field name to string values, with {@code prefix} stripped from every name. + */ + private static Map> fields(SolrInputDocument doc, String prefix) { + Map> fields = new TreeMap<>(); + for (String name : doc.getFieldNames()) { + String key = name.startsWith(prefix) ? name.substring(prefix.length()) : name; + fields.put(key, doc.getFieldValues(name).stream().map(String::valueOf).toList()); + } + return new LinkedHashMap<>(fields); + } + + private static String resource(String path) throws IOException { + try (InputStream in = Objects.requireNonNull(ShowsSampleDataTest.class.getResourceAsStream(path), + "missing test resource " + path)) { + return new String(in.readAllBytes(), StandardCharsets.UTF_8); + } + } +} diff --git a/src/test/java/org/apache/solr/mcp/server/indexing/documentcreator/MarkdownDocumentCreatorTest.java b/src/test/java/org/apache/solr/mcp/server/indexing/documentcreator/MarkdownDocumentCreatorTest.java new file mode 100644 index 00000000..25d1ccf6 --- /dev/null +++ b/src/test/java/org/apache/solr/mcp/server/indexing/documentcreator/MarkdownDocumentCreatorTest.java @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.solr.mcp.server.indexing.documentcreator; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import org.apache.solr.common.SolrInputDocument; +import org.junit.jupiter.api.Test; + +/** + * Front matter is YAML, so it is parsed by a YAML parser. These cases are the + * ones a line-by-line reader gets wrong: quoted scalars containing the + * delimiters, flow and block sequences, and nested mappings. Scalars stay the + * text as written; Solr's schema guessing types them. + */ +class MarkdownDocumentCreatorTest { + + private final MarkdownDocumentCreator creator = new MarkdownDocumentCreator(); + + @Test + void frontMatterIsParsedAsYaml() { + SolrInputDocument doc = creator.create(""" + --- + id: show-1 + title: "Star Wars: Andor, Season 2" + genres: [Sci-Fi, "Drama, Political"] + cast: + - Diego Luna + - Stellan Skarsgård + ratings: + imdb: 8.4 + age: TV-14 + seasons: 2 + ongoing: false + released: 2022-09-21 + empty: + --- + # Andor + + Prequel to Rogue One. + """).getFirst(); + + assertThat(doc.getFieldValue("id")).isEqualTo("show-1"); + assertThat(doc.getFieldValue("title")).isEqualTo("Star Wars: Andor, Season 2"); + assertThat(doc.getFieldValues("genres")).containsExactly("Sci-Fi", "Drama, Political"); + assertThat(doc.getFieldValues("cast")).containsExactly("Diego Luna", "Stellan Skarsgård"); + assertThat(doc.getFieldValue("ratings_imdb")).isEqualTo("8.4"); + assertThat(doc.getFieldValue("ratings_age")).isEqualTo("TV-14"); + assertThat(doc.getFieldValue("seasons")).isEqualTo("2"); + assertThat(doc.getFieldValue("ongoing")).isEqualTo("false"); + assertThat(doc.getFieldValue("released")).isEqualTo("2022-09-21"); + assertThat(doc.getFieldNames()).doesNotContain("empty"); + assertThat(doc.getFieldValue("content")).asString().contains("Prequel").doesNotContain("show-1"); + } + + @Test + void invalidYamlIsReported() { + assertThatThrownBy(() -> creator.create("---\ntitle: [unclosed\n---\nbody\n")) + .isInstanceOf(DocumentProcessingException.class).hasMessageContaining("YAML"); + } + + @Test + void documentWithoutFrontMatterIsUnchanged() { + SolrInputDocument doc = creator.create("# Just a heading\n\nBody text.\n").getFirst(); + + assertThat(doc.getFieldValue("title")).isEqualTo("Just a heading"); + assertThat(doc.getFieldValue("content")).asString().contains("Body text"); + assertThat(doc.getFieldValue("id")).isNotNull(); + } +} diff --git a/src/test/resources/shows-markdown/appletv-001.md b/src/test/resources/shows-markdown/appletv-001.md new file mode 100644 index 00000000..9053b3d4 --- /dev/null +++ b/src/test/resources/shows-markdown/appletv-001.md @@ -0,0 +1,35 @@ +--- +id: appletv-001 +title: Ted Lasso +platform: Apple TV+ +genres: + - Comedy + - Drama + - Sport +release_year: 2020 +end_year: 2023 +status: Ended +seasons: 3 +episodes: 34 +creators: + - Bill Lawrence + - Jason Sudeikis +cast: + - Jason Sudeikis + - Hannah Waddingham + - Brett Goldstein + - Juno Temple +country: USA +language: English +rating: TV-MA +imdb_rating: 8.8 +tags: + - soccer + - football + - feel-good + - british +--- + +# Ted Lasso + +American college football coach Ted Lasso heads to London to manage AFC Richmond, a struggling English Premier League soccer team. diff --git a/src/test/resources/shows-markdown/appletv-002.md b/src/test/resources/shows-markdown/appletv-002.md new file mode 100644 index 00000000..e185480d --- /dev/null +++ b/src/test/resources/shows-markdown/appletv-002.md @@ -0,0 +1,33 @@ +--- +id: appletv-002 +title: Severance +platform: Apple TV+ +genres: + - Sci-Fi + - Thriller + - Drama +release_year: 2022 +status: Ongoing +seasons: 2 +episodes: 19 +creators: + - Dan Erickson +cast: + - Adam Scott + - Britt Lower + - Zach Cherry + - John Turturro +country: USA +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - workplace + - dystopian + - mystery + - ben-stiller +--- + +# Severance + +Employees at Lumon Industries undergo a procedure that surgically divides their memories between their work and personal lives. diff --git a/src/test/resources/shows-markdown/appletv-003.md b/src/test/resources/shows-markdown/appletv-003.md new file mode 100644 index 00000000..b4c5c0de --- /dev/null +++ b/src/test/resources/shows-markdown/appletv-003.md @@ -0,0 +1,33 @@ +--- +id: appletv-003 +title: Foundation +platform: Apple TV+ +genres: + - Sci-Fi + - Drama + - Adventure +release_year: 2021 +status: Ongoing +seasons: 3 +episodes: 28 +creators: + - David S. Goyer + - Josh Friedman +cast: + - Jared Harris + - Lee Pace + - Lou Llobell +country: USA +language: English +rating: TV-14 +imdb_rating: 7.5 +tags: + - space-opera + - asimov + - epic + - empire +--- + +# Foundation + +A complex saga of humans scattered on planets throughout the galaxy living under the rule of the Galactic Empire. diff --git a/src/test/resources/shows-markdown/appletv-004.md b/src/test/resources/shows-markdown/appletv-004.md new file mode 100644 index 00000000..1c64e583 --- /dev/null +++ b/src/test/resources/shows-markdown/appletv-004.md @@ -0,0 +1,32 @@ +--- +id: appletv-004 +title: Slow Horses +platform: Apple TV+ +genres: + - Crime + - Drama + - Thriller +release_year: 2022 +status: Ongoing +seasons: 4 +episodes: 24 +creators: + - Will Smith +cast: + - Gary Oldman + - Jack Lowden + - Kristin Scott Thomas +country: UK +language: English +rating: TV-MA +imdb_rating: 8.3 +tags: + - spy + - british + - mi5 + - mick-herron +--- + +# Slow Horses + +Follows a team of British intelligence agents who serve in a dumping ground department of MI5. diff --git a/src/test/resources/shows-markdown/disney-001.md b/src/test/resources/shows-markdown/disney-001.md new file mode 100644 index 00000000..e5996b97 --- /dev/null +++ b/src/test/resources/shows-markdown/disney-001.md @@ -0,0 +1,32 @@ +--- +id: disney-001 +title: The Mandalorian +platform: Disney+ +genres: + - Sci-Fi + - Action + - Adventure +release_year: 2019 +status: Ongoing +seasons: 3 +episodes: 24 +creators: + - Jon Favreau +cast: + - Pedro Pascal + - Carl Weathers + - Giancarlo Esposito +country: USA +language: English +rating: TV-14 +imdb_rating: 8.6 +tags: + - star-wars + - space-western + - grogu + - baby-yoda +--- + +# The Mandalorian + +The travels of a lone bounty hunter in the outer reaches of the galaxy, far from the authority of the New Republic. diff --git a/src/test/resources/shows-markdown/disney-002.md b/src/test/resources/shows-markdown/disney-002.md new file mode 100644 index 00000000..3b5e42cd --- /dev/null +++ b/src/test/resources/shows-markdown/disney-002.md @@ -0,0 +1,33 @@ +--- +id: disney-002 +title: WandaVision +platform: Disney+ +genres: + - Sci-Fi + - Drama + - Mystery +release_year: 2021 +end_year: 2021 +status: Ended +seasons: 1 +episodes: 9 +creators: + - Jac Schaeffer +cast: + - Elizabeth Olsen + - Paul Bettany + - Kathryn Hahn +country: USA +language: English +rating: TV-14 +imdb_rating: 7.9 +tags: + - marvel + - mcu + - sitcom + - superhero +--- + +# WandaVision + +Wanda Maximoff and Vision live idealized suburban lives, but begin to suspect that everything is not as it seems. diff --git a/src/test/resources/shows-markdown/disney-003.md b/src/test/resources/shows-markdown/disney-003.md new file mode 100644 index 00000000..ce04be6a --- /dev/null +++ b/src/test/resources/shows-markdown/disney-003.md @@ -0,0 +1,33 @@ +--- +id: disney-003 +title: Andor +platform: Disney+ +genres: + - Sci-Fi + - Drama + - Action +release_year: 2022 +end_year: 2025 +status: Ended +seasons: 2 +episodes: 24 +creators: + - Tony Gilroy +cast: + - Diego Luna + - Genevieve O'Reilly + - Stellan Skarsgård +country: USA +language: English +rating: TV-14 +imdb_rating: 8.4 +tags: + - star-wars + - rebellion + - political + - prequel +--- + +# Andor + +Prequel to Rogue One, exploring a new perspective from the Star Wars galaxy and Cassian Andor's journey to becoming a rebel hero. diff --git a/src/test/resources/shows-markdown/disney-004.md b/src/test/resources/shows-markdown/disney-004.md new file mode 100644 index 00000000..e2244f55 --- /dev/null +++ b/src/test/resources/shows-markdown/disney-004.md @@ -0,0 +1,33 @@ +--- +id: disney-004 +title: Loki +platform: Disney+ +genres: + - Sci-Fi + - Action + - Adventure +release_year: 2021 +end_year: 2023 +status: Ended +seasons: 2 +episodes: 12 +creators: + - Michael Waldron +cast: + - Tom Hiddleston + - Owen Wilson + - Sophia Di Martino +country: USA +language: English +rating: TV-14 +imdb_rating: 8.2 +tags: + - marvel + - mcu + - multiverse + - time-travel +--- + +# Loki + +The mercurial villain Loki resumes his role as the God of Mischief in a new series that takes place after the events of Avengers: Endgame. diff --git a/src/test/resources/shows-markdown/hbo-001.md b/src/test/resources/shows-markdown/hbo-001.md new file mode 100644 index 00000000..a45ed5b7 --- /dev/null +++ b/src/test/resources/shows-markdown/hbo-001.md @@ -0,0 +1,35 @@ +--- +id: hbo-001 +title: Game of Thrones +platform: HBO Max +genres: + - Fantasy + - Drama + - Adventure +release_year: 2011 +end_year: 2019 +status: Ended +seasons: 8 +episodes: 73 +creators: + - David Benioff + - D.B. Weiss +cast: + - Emilia Clarke + - Peter Dinklage + - Kit Harington + - Lena Headey +country: USA +language: English +rating: TV-MA +imdb_rating: 9.2 +tags: + - fantasy + - dragons + - epic + - george-rr-martin +--- + +# Game of Thrones + +Nine noble families fight for control over the lands of Westeros, while an ancient enemy returns after being dormant for millennia. diff --git a/src/test/resources/shows-markdown/hbo-002.md b/src/test/resources/shows-markdown/hbo-002.md new file mode 100644 index 00000000..c5e64af5 --- /dev/null +++ b/src/test/resources/shows-markdown/hbo-002.md @@ -0,0 +1,33 @@ +--- +id: hbo-002 +title: Succession +platform: HBO Max +genres: + - Drama + - Comedy +release_year: 2018 +end_year: 2023 +status: Ended +seasons: 4 +episodes: 39 +creators: + - Jesse Armstrong +cast: + - Brian Cox + - Jeremy Strong + - Kieran Culkin + - Sarah Snook +country: USA +language: English +rating: TV-MA +imdb_rating: 8.9 +tags: + - media + - family-drama + - satire + - wealth +--- + +# Succession + +The Roy family controls the biggest media and entertainment company in the world, but their patriarch's health is failing. diff --git a/src/test/resources/shows-markdown/hbo-003.md b/src/test/resources/shows-markdown/hbo-003.md new file mode 100644 index 00000000..73ec3ff0 --- /dev/null +++ b/src/test/resources/shows-markdown/hbo-003.md @@ -0,0 +1,33 @@ +--- +id: hbo-003 +title: The Last of Us +platform: HBO Max +genres: + - Drama + - Horror + - Sci-Fi +release_year: 2023 +status: Ongoing +seasons: 2 +episodes: 16 +creators: + - Craig Mazin + - Neil Druckmann +cast: + - Pedro Pascal + - Bella Ramsey + - Anna Torv +country: USA +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - post-apocalyptic + - zombies + - video-game-adaptation + - fungal +--- + +# The Last of Us + +After a global pandemic destroys civilization, a hardened survivor takes charge of a 14-year-old girl who may be humanity's last hope. diff --git a/src/test/resources/shows-markdown/hbo-004.md b/src/test/resources/shows-markdown/hbo-004.md new file mode 100644 index 00000000..40bc03f4 --- /dev/null +++ b/src/test/resources/shows-markdown/hbo-004.md @@ -0,0 +1,34 @@ +--- +id: hbo-004 +title: House of the Dragon +platform: HBO Max +genres: + - Fantasy + - Drama + - Action +release_year: 2022 +status: Ongoing +seasons: 2 +episodes: 18 +creators: + - Ryan Condal + - George R.R. Martin +cast: + - Paddy Considine + - Matt Smith + - Emma D'Arcy + - Olivia Cooke +country: USA +language: English +rating: TV-MA +imdb_rating: 8.4 +tags: + - targaryen + - dragons + - got-prequel + - civil-war +--- + +# House of the Dragon + +An internal succession war within House Targaryen at the height of its power, 172 years before the birth of Daenerys Targaryen. diff --git a/src/test/resources/shows-markdown/hbo-005.md b/src/test/resources/shows-markdown/hbo-005.md new file mode 100644 index 00000000..8f365480 --- /dev/null +++ b/src/test/resources/shows-markdown/hbo-005.md @@ -0,0 +1,33 @@ +--- +id: hbo-005 +title: True Detective +platform: HBO Max +genres: + - Crime + - Drama + - Mystery +release_year: 2014 +status: Ongoing +seasons: 4 +episodes: 32 +creators: + - Nic Pizzolatto +cast: + - Matthew McConaughey + - Woody Harrelson + - Mahershala Ali + - Jodie Foster +country: USA +language: English +rating: TV-MA +imdb_rating: 8.9 +tags: + - anthology + - noir + - detective + - atmospheric +--- + +# True Detective + +An anthology series of police investigations, with each season featuring a new cast and setting. diff --git a/src/test/resources/shows-markdown/hbo-006.md b/src/test/resources/shows-markdown/hbo-006.md new file mode 100644 index 00000000..311b183c --- /dev/null +++ b/src/test/resources/shows-markdown/hbo-006.md @@ -0,0 +1,35 @@ +--- +id: hbo-006 +title: Westworld +platform: HBO Max +genres: + - Sci-Fi + - Drama + - Mystery +release_year: 2016 +end_year: 2022 +status: Ended +seasons: 4 +episodes: 36 +creators: + - Jonathan Nolan + - Lisa Joy +cast: + - Evan Rachel Wood + - Thandiwe Newton + - Jeffrey Wright + - Ed Harris +country: USA +language: English +rating: TV-MA +imdb_rating: 8.5 +tags: + - ai + - consciousness + - theme-park + - androids +--- + +# Westworld + +Set in a Western-themed park where guests live out their fantasies through robotic hosts that develop consciousness. diff --git a/src/test/resources/shows-markdown/hbo-007.md b/src/test/resources/shows-markdown/hbo-007.md new file mode 100644 index 00000000..93c08a9d --- /dev/null +++ b/src/test/resources/shows-markdown/hbo-007.md @@ -0,0 +1,33 @@ +--- +id: hbo-007 +title: The White Lotus +platform: HBO Max +genres: + - Comedy + - Drama + - Mystery +release_year: 2021 +status: Ongoing +seasons: 3 +episodes: 18 +creators: + - Mike White +cast: + - Murray Bartlett + - Jennifer Coolidge + - Aubrey Plaza + - Theo James +country: USA +language: English +rating: TV-MA +imdb_rating: 7.9 +tags: + - anthology + - satire + - wealth + - vacation +--- + +# The White Lotus + +The exploits of various employees and guests at an exclusive tropical resort. diff --git a/src/test/resources/shows-markdown/hulu-001.md b/src/test/resources/shows-markdown/hulu-001.md new file mode 100644 index 00000000..4be4c4d6 --- /dev/null +++ b/src/test/resources/shows-markdown/hulu-001.md @@ -0,0 +1,34 @@ +--- +id: hulu-001 +title: The Handmaid's Tale +platform: Hulu +genres: + - Drama + - Sci-Fi + - Dystopian +release_year: 2017 +end_year: 2025 +status: Ended +seasons: 6 +episodes: 66 +creators: + - Bruce Miller +cast: + - Elisabeth Moss + - Joseph Fiennes + - Yvonne Strahovski + - Samira Wiley +country: USA +language: English +rating: TV-MA +imdb_rating: 8.4 +tags: + - dystopian + - feminist + - atwood + - theocracy +--- + +# The Handmaid's Tale + +Set in a dystopian future, a woman is forced to live as a concubine under a fundamentalist theocratic dictatorship. diff --git a/src/test/resources/shows-markdown/hulu-002.md b/src/test/resources/shows-markdown/hulu-002.md new file mode 100644 index 00000000..afa2e38a --- /dev/null +++ b/src/test/resources/shows-markdown/hulu-002.md @@ -0,0 +1,31 @@ +--- +id: hulu-002 +title: The Bear +platform: Hulu +genres: + - Comedy + - Drama +release_year: 2022 +status: Ongoing +seasons: 3 +episodes: 28 +creators: + - Christopher Storer +cast: + - Jeremy Allen White + - Ebon Moss-Bachrach + - Ayo Edebiri +country: USA +language: English +rating: TV-MA +imdb_rating: 8.6 +tags: + - cooking + - chicago + - family + - anxiety +--- + +# The Bear + +A young chef from the fine dining world returns to Chicago to run his family's sandwich shop after a heartbreaking death. diff --git a/src/test/resources/shows-markdown/hulu-003.md b/src/test/resources/shows-markdown/hulu-003.md new file mode 100644 index 00000000..83a7a9b5 --- /dev/null +++ b/src/test/resources/shows-markdown/hulu-003.md @@ -0,0 +1,33 @@ +--- +id: hulu-003 +title: Only Murders in the Building +platform: Hulu +genres: + - Comedy + - Crime + - Mystery +release_year: 2021 +status: Ongoing +seasons: 4 +episodes: 40 +creators: + - Steve Martin + - John Hoffman +cast: + - Steve Martin + - Martin Short + - Selena Gomez +country: USA +language: English +rating: TV-MA +imdb_rating: 8.1 +tags: + - whodunit + - podcast + - new-york + - comedy-mystery +--- + +# Only Murders in the Building + +Three strangers who share an obsession with true crime suddenly find themselves wrapped up in one. diff --git a/src/test/resources/shows-markdown/netflix-001.md b/src/test/resources/shows-markdown/netflix-001.md new file mode 100644 index 00000000..79152321 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-001.md @@ -0,0 +1,35 @@ +--- +id: netflix-001 +title: Stranger Things +platform: Netflix +genres: + - Sci-Fi + - Horror + - Drama +release_year: 2016 +end_year: 2025 +status: Ended +seasons: 5 +episodes: 42 +creators: + - Matt Duffer + - Ross Duffer +cast: + - Millie Bobby Brown + - Finn Wolfhard + - Winona Ryder + - David Harbour +country: USA +language: English +rating: TV-14 +imdb_rating: 8.7 +tags: + - 80s + - supernatural + - coming-of-age + - monsters +--- + +# Stranger Things + +A group of kids in 1980s Indiana uncover supernatural mysteries and government conspiracies tied to a parallel dimension. diff --git a/src/test/resources/shows-markdown/netflix-002.md b/src/test/resources/shows-markdown/netflix-002.md new file mode 100644 index 00000000..340ab2f8 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-002.md @@ -0,0 +1,34 @@ +--- +id: netflix-002 +title: The Crown +platform: Netflix +genres: + - Drama + - Historical + - Biography +release_year: 2016 +end_year: 2023 +status: Ended +seasons: 6 +episodes: 60 +creators: + - Peter Morgan +cast: + - Claire Foy + - Olivia Colman + - Imelda Staunton + - Matt Smith +country: UK +language: English +rating: TV-MA +imdb_rating: 8.6 +tags: + - royalty + - british + - period-drama + - politics +--- + +# The Crown + +The reign of Queen Elizabeth II from her wedding in 1947 through the early 21st century. diff --git a/src/test/resources/shows-markdown/netflix-003.md b/src/test/resources/shows-markdown/netflix-003.md new file mode 100644 index 00000000..6a233116 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-003.md @@ -0,0 +1,34 @@ +--- +id: netflix-003 +title: Squid Game +platform: Netflix +genres: + - Thriller + - Drama + - Survival +release_year: 2021 +end_year: 2025 +status: Ended +seasons: 3 +episodes: 22 +creators: + - Hwang Dong-hyuk +cast: + - Lee Jung-jae + - Park Hae-soo + - Wi Ha-joon + - HoYeon Jung +country: South Korea +language: Korean +rating: TV-MA +imdb_rating: 8.0 +tags: + - korean + - survival + - dystopian + - social-commentary +--- + +# Squid Game + +Hundreds of cash-strapped contestants accept an invitation to compete in deadly children's games for a tempting prize. diff --git a/src/test/resources/shows-markdown/netflix-004.md b/src/test/resources/shows-markdown/netflix-004.md new file mode 100644 index 00000000..365a0b1a --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-004.md @@ -0,0 +1,34 @@ +--- +id: netflix-004 +title: Wednesday +platform: Netflix +genres: + - Comedy + - Horror + - Mystery +release_year: 2022 +status: Ongoing +seasons: 2 +episodes: 16 +creators: + - Alfred Gough + - Miles Millar +cast: + - Jenna Ortega + - Catherine Zeta-Jones + - Luis Guzmán + - Gwendoline Christie +country: USA +language: English +rating: TV-14 +imdb_rating: 8.1 +tags: + - gothic + - teen + - supernatural + - addams-family +--- + +# Wednesday + +Wednesday Addams navigates a supernatural boarding school while solving a murder mystery. diff --git a/src/test/resources/shows-markdown/netflix-005.md b/src/test/resources/shows-markdown/netflix-005.md new file mode 100644 index 00000000..1b1a4c8b --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-005.md @@ -0,0 +1,34 @@ +--- +id: netflix-005 +title: Money Heist +platform: Netflix +genres: + - Crime + - Thriller + - Drama +release_year: 2017 +end_year: 2021 +status: Ended +seasons: 5 +episodes: 41 +creators: + - Álex Pina +cast: + - Úrsula Corberó + - Álvaro Morte + - Pedro Alonso + - Itziar Ituño +country: Spain +language: Spanish +rating: TV-MA +imdb_rating: 8.2 +tags: + - spanish + - heist + - crime + - ensemble +--- + +# Money Heist + +An unusual group of robbers attempt to carry out the most perfect robbery in Spanish history. diff --git a/src/test/resources/shows-markdown/netflix-006.md b/src/test/resources/shows-markdown/netflix-006.md new file mode 100644 index 00000000..7612b242 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-006.md @@ -0,0 +1,35 @@ +--- +id: netflix-006 +title: Dark +platform: Netflix +genres: + - Sci-Fi + - Mystery + - Thriller +release_year: 2017 +end_year: 2020 +status: Ended +seasons: 3 +episodes: 26 +creators: + - Baran bo Odar + - Jantje Friese +cast: + - Louis Hofmann + - Karoline Eichhorn + - Lisa Vicari + - Maja Schöne +country: Germany +language: German +rating: TV-MA +imdb_rating: 8.7 +tags: + - time-travel + - german + - complex-plot + - mystery +--- + +# Dark + +A family saga with a supernatural twist set in a German town where the disappearance of children exposes the relationships among four families. diff --git a/src/test/resources/shows-markdown/netflix-007.md b/src/test/resources/shows-markdown/netflix-007.md new file mode 100644 index 00000000..60eb04b6 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-007.md @@ -0,0 +1,35 @@ +--- +id: netflix-007 +title: Ozark +platform: Netflix +genres: + - Crime + - Drama + - Thriller +release_year: 2017 +end_year: 2022 +status: Ended +seasons: 4 +episodes: 44 +creators: + - Bill Dubuque + - Mark Williams +cast: + - Jason Bateman + - Laura Linney + - Julia Garner + - Sofia Hublitz +country: USA +language: English +rating: TV-MA +imdb_rating: 8.5 +tags: + - money-laundering + - cartel + - family-drama + - crime +--- + +# Ozark + +A financial advisor drags his family from Chicago to the Missouri Ozarks, where he must launder money to appease a drug boss. diff --git a/src/test/resources/shows-markdown/netflix-008.md b/src/test/resources/shows-markdown/netflix-008.md new file mode 100644 index 00000000..65b4c6db --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-008.md @@ -0,0 +1,30 @@ +--- +id: netflix-008 +title: Black Mirror +platform: Netflix +genres: + - Sci-Fi + - Drama + - Anthology +release_year: 2011 +status: Ongoing +seasons: 7 +episodes: 33 +creators: + - Charlie Brooker +cast: + - Various +country: UK +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - anthology + - technology + - dystopian + - british +--- + +# Black Mirror + +An anthology series exploring a twisted, high-tech multiverse where humanity's greatest innovations collide with its darkest instincts. diff --git a/src/test/resources/shows-markdown/netflix-009.md b/src/test/resources/shows-markdown/netflix-009.md new file mode 100644 index 00000000..2e5ee79c --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-009.md @@ -0,0 +1,33 @@ +--- +id: netflix-009 +title: The Witcher +platform: Netflix +genres: + - Fantasy + - Action + - Adventure +release_year: 2019 +status: Ongoing +seasons: 4 +episodes: 32 +creators: + - Lauren Schmidt Hissrich +cast: + - Henry Cavill + - Liam Hemsworth + - Anya Chalotra + - Freya Allan +country: USA +language: English +rating: TV-MA +imdb_rating: 8.0 +tags: + - fantasy + - monsters + - magic + - adaptation +--- + +# The Witcher + +Geralt of Rivia, a solitary monster hunter, struggles to find his place in a world where people often prove more wicked than beasts. diff --git a/src/test/resources/shows-markdown/netflix-010.md b/src/test/resources/shows-markdown/netflix-010.md new file mode 100644 index 00000000..b0639d2c --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-010.md @@ -0,0 +1,33 @@ +--- +id: netflix-010 +title: Bridgerton +platform: Netflix +genres: + - Romance + - Drama + - Historical +release_year: 2020 +status: Ongoing +seasons: 3 +episodes: 24 +creators: + - Chris Van Dusen +cast: + - Phoebe Dynevor + - Regé-Jean Page + - Jonathan Bailey + - Nicola Coughlan +country: USA +language: English +rating: TV-MA +imdb_rating: 7.3 +tags: + - regency + - romance + - period-drama + - shondaland +--- + +# Bridgerton + +Wealth, lust, and betrayal set against the backdrop of Regency-era England, seen through the eyes of the powerful Bridgerton family. diff --git a/src/test/resources/shows-markdown/netflix-011.md b/src/test/resources/shows-markdown/netflix-011.md new file mode 100644 index 00000000..51c86653 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-011.md @@ -0,0 +1,35 @@ +--- +id: netflix-011 +title: Narcos +platform: Netflix +genres: + - Crime + - Biography + - Drama +release_year: 2015 +end_year: 2017 +status: Ended +seasons: 3 +episodes: 30 +creators: + - Chris Brancato + - Carlo Bernard + - Doug Miro +cast: + - Wagner Moura + - Pedro Pascal + - Boyd Holbrook +country: USA +language: English +rating: TV-MA +imdb_rating: 8.8 +tags: + - cartel + - colombia + - true-crime + - pablo-escobar +--- + +# Narcos + +The true story of Colombia's infamously violent and powerful drug cartels. diff --git a/src/test/resources/shows-markdown/netflix-012.md b/src/test/resources/shows-markdown/netflix-012.md new file mode 100644 index 00000000..7c3b8b11 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-012.md @@ -0,0 +1,33 @@ +--- +id: netflix-012 +title: Mindhunter +platform: Netflix +genres: + - Crime + - Drama + - Thriller +release_year: 2017 +end_year: 2019 +status: Ended +seasons: 2 +episodes: 19 +creators: + - Joe Penhall +cast: + - Jonathan Groff + - Holt McCallany + - Anna Torv +country: USA +language: English +rating: TV-MA +imdb_rating: 8.6 +tags: + - fbi + - serial-killers + - psychology + - fincher +--- + +# Mindhunter + +Two FBI agents interview imprisoned serial killers to apply behavioral science to their open cases. diff --git a/src/test/resources/shows-markdown/netflix-013.md b/src/test/resources/shows-markdown/netflix-013.md new file mode 100644 index 00000000..e2f361ce --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-013.md @@ -0,0 +1,33 @@ +--- +id: netflix-013 +title: The Queen's Gambit +platform: Netflix +genres: + - Drama + - Period +release_year: 2020 +end_year: 2020 +status: Ended +seasons: 1 +episodes: 7 +creators: + - Scott Frank + - Allan Scott +cast: + - Anya Taylor-Joy + - Bill Camp + - Marielle Heller +country: USA +language: English +rating: TV-MA +imdb_rating: 8.5 +tags: + - chess + - limited-series + - cold-war + - addiction +--- + +# The Queen's Gambit + +An orphaned chess prodigy rises to the top of the chess world while struggling with addiction. diff --git a/src/test/resources/shows-markdown/netflix-014.md b/src/test/resources/shows-markdown/netflix-014.md new file mode 100644 index 00000000..baee4e32 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-014.md @@ -0,0 +1,34 @@ +--- +id: netflix-014 +title: BoJack Horseman +platform: Netflix +genres: + - Animation + - Comedy + - Drama +release_year: 2014 +end_year: 2020 +status: Ended +seasons: 6 +episodes: 77 +creators: + - Raphael Bob-Waksberg +cast: + - Will Arnett + - Aaron Paul + - Amy Sedaris + - Alison Brie +country: USA +language: English +rating: TV-MA +imdb_rating: 8.8 +tags: + - animation + - adult-animation + - satire + - mental-health +--- + +# BoJack Horseman + +A washed-up actor who happens to be a horse navigates Hollywood life, depression, and existentialism. diff --git a/src/test/resources/shows-markdown/netflix-015.md b/src/test/resources/shows-markdown/netflix-015.md new file mode 100644 index 00000000..4e22e095 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-015.md @@ -0,0 +1,34 @@ +--- +id: netflix-015 +title: Peaky Blinders +platform: Netflix +genres: + - Crime + - Drama + - Historical +release_year: 2013 +end_year: 2022 +status: Ended +seasons: 6 +episodes: 36 +creators: + - Steven Knight +cast: + - Cillian Murphy + - Paul Anderson + - Helen McCrory + - Tom Hardy +country: UK +language: English +rating: TV-MA +imdb_rating: 8.8 +tags: + - british + - gangster + - period-drama + - birmingham +--- + +# Peaky Blinders + +A gangster family epic set in 1900s England, centering on a gang led by the fierce Tommy Shelby. diff --git a/src/test/resources/shows-markdown/netflix-016.md b/src/test/resources/shows-markdown/netflix-016.md new file mode 100644 index 00000000..54b67431 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-016.md @@ -0,0 +1,33 @@ +--- +id: netflix-016 +title: Lupin +platform: Netflix +genres: + - Crime + - Mystery + - Drama +release_year: 2021 +status: Ongoing +seasons: 3 +episodes: 17 +creators: + - George Kay + - François Uzan +cast: + - Omar Sy + - Ludivine Sagnier + - Clotilde Hesme +country: France +language: French +rating: TV-MA +imdb_rating: 7.5 +tags: + - french + - heist + - revenge + - paris +--- + +# Lupin + +Inspired by Arsène Lupin, gentleman thief Assane Diop sets out to avenge his father for an injustice inflicted by a wealthy family. diff --git a/src/test/resources/shows-markdown/netflix-017.md b/src/test/resources/shows-markdown/netflix-017.md new file mode 100644 index 00000000..0ba292a1 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-017.md @@ -0,0 +1,34 @@ +--- +id: netflix-017 +title: The Umbrella Academy +platform: Netflix +genres: + - Sci-Fi + - Action + - Drama +release_year: 2019 +end_year: 2024 +status: Ended +seasons: 4 +episodes: 34 +creators: + - Steve Blackman +cast: + - Elliot Page + - Tom Hopper + - David Castañeda + - Emmy Raver-Lampman +country: USA +language: English +rating: TV-14 +imdb_rating: 7.9 +tags: + - superheroes + - time-travel + - comic-adaptation + - family +--- + +# The Umbrella Academy + +A dysfunctional family of adopted sibling superheroes reunites to solve the mystery of their father's death and the threat of an apocalypse. diff --git a/src/test/resources/shows-markdown/netflix-018.md b/src/test/resources/shows-markdown/netflix-018.md new file mode 100644 index 00000000..5e80e041 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-018.md @@ -0,0 +1,34 @@ +--- +id: netflix-018 +title: Sex Education +platform: Netflix +genres: + - Comedy + - Drama + - Romance +release_year: 2019 +end_year: 2023 +status: Ended +seasons: 4 +episodes: 32 +creators: + - Laurie Nunn +cast: + - Asa Butterfield + - Gillian Anderson + - Emma Mackey + - Ncuti Gatwa +country: UK +language: English +rating: TV-MA +imdb_rating: 8.3 +tags: + - teen + - british + - coming-of-age + - lgbtq +--- + +# Sex Education + +A teenage boy with a sex therapist mother teams up with a high school classmate to set up an underground sex therapy clinic at school. diff --git a/src/test/resources/shows-markdown/netflix-019.md b/src/test/resources/shows-markdown/netflix-019.md new file mode 100644 index 00000000..8c401bd1 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-019.md @@ -0,0 +1,33 @@ +--- +id: netflix-019 +title: House of Cards +platform: Netflix +genres: + - Drama + - Political + - Thriller +release_year: 2013 +end_year: 2018 +status: Ended +seasons: 6 +episodes: 73 +creators: + - Beau Willimon +cast: + - Kevin Spacey + - Robin Wright + - Michael Kelly +country: USA +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - politics + - washington + - dc + - machiavellian +--- + +# House of Cards + +A ruthless politician will stop at nothing to conquer Washington, D.C. diff --git a/src/test/resources/shows-markdown/netflix-020.md b/src/test/resources/shows-markdown/netflix-020.md new file mode 100644 index 00000000..33e6f243 --- /dev/null +++ b/src/test/resources/shows-markdown/netflix-020.md @@ -0,0 +1,34 @@ +--- +id: netflix-020 +title: Beef +platform: Netflix +genres: + - Comedy + - Drama + - Thriller +release_year: 2023 +end_year: 2023 +status: Ended +seasons: 1 +episodes: 10 +creators: + - Lee Sung Jin +cast: + - Steven Yeun + - Ali Wong + - Joseph Lee + - Young Mazino +country: USA +language: English +rating: TV-MA +imdb_rating: 8.0 +tags: + - limited-series + - dark-comedy + - a24 + - asian-american +--- + +# Beef + +A road rage incident between two strangers triggers a feud that brings out their darkest impulses. diff --git a/src/test/resources/shows-markdown/paramount-001.md b/src/test/resources/shows-markdown/paramount-001.md new file mode 100644 index 00000000..83e3f845 --- /dev/null +++ b/src/test/resources/shows-markdown/paramount-001.md @@ -0,0 +1,34 @@ +--- +id: paramount-001 +title: Yellowstone +platform: Paramount+ +genres: + - Drama + - Western +release_year: 2018 +end_year: 2024 +status: Ended +seasons: 5 +episodes: 53 +creators: + - Taylor Sheridan + - John Linson +cast: + - Kevin Costner + - Luke Grimes + - Kelly Reilly + - Wes Bentley +country: USA +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - western + - ranch + - family-drama + - montana +--- + +# Yellowstone + +A ranching family in Montana faces off against others encroaching on their land. diff --git a/src/test/resources/shows-markdown/paramount-002.md b/src/test/resources/shows-markdown/paramount-002.md new file mode 100644 index 00000000..9a0475ee --- /dev/null +++ b/src/test/resources/shows-markdown/paramount-002.md @@ -0,0 +1,34 @@ +--- +id: paramount-002 +title: 'Star Trek: Strange New Worlds' +platform: Paramount+ +genres: + - Sci-Fi + - Adventure + - Drama +release_year: 2022 +status: Ongoing +seasons: 3 +episodes: 30 +creators: + - Akiva Goldsman + - Alex Kurtzman + - Jenny Lumet +cast: + - Anson Mount + - Rebecca Romijn + - Ethan Peck +country: USA +language: English +rating: TV-14 +imdb_rating: 8.1 +tags: + - star-trek + - space + - enterprise + - pike +--- + +# Star Trek: Strange New Worlds + +Captain Christopher Pike helms the USS Enterprise as it explores new worlds in the years before Captain Kirk's iconic missions. diff --git a/src/test/resources/shows-markdown/peacock-001.md b/src/test/resources/shows-markdown/peacock-001.md new file mode 100644 index 00000000..accfd647 --- /dev/null +++ b/src/test/resources/shows-markdown/peacock-001.md @@ -0,0 +1,30 @@ +--- +id: peacock-001 +title: Poker Face +platform: Peacock +genres: + - Crime + - Comedy + - Mystery +release_year: 2023 +status: Ongoing +seasons: 2 +episodes: 20 +creators: + - Rian Johnson +cast: + - Natasha Lyonne +country: USA +language: English +rating: TV-MA +imdb_rating: 8.1 +tags: + - mystery-of-the-week + - rian-johnson + - columbo + - road-trip +--- + +# Poker Face + +A casino worker with the ability to determine when someone is lying hits the road, solving crimes along the way. diff --git a/src/test/resources/shows-markdown/prime-001.md b/src/test/resources/shows-markdown/prime-001.md new file mode 100644 index 00000000..dff42fb0 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-001.md @@ -0,0 +1,33 @@ +--- +id: prime-001 +title: The Boys +platform: Amazon Prime Video +genres: + - Action + - Sci-Fi + - Drama +release_year: 2019 +status: Ongoing +seasons: 4 +episodes: 32 +creators: + - Eric Kripke +cast: + - Karl Urban + - Jack Quaid + - Antony Starr + - Erin Moriarty +country: USA +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - superheroes + - satire + - violent + - comic-adaptation +--- + +# The Boys + +A group of vigilantes set out to take down corrupt superheroes who abuse their powers. diff --git a/src/test/resources/shows-markdown/prime-002.md b/src/test/resources/shows-markdown/prime-002.md new file mode 100644 index 00000000..63d1b77c --- /dev/null +++ b/src/test/resources/shows-markdown/prime-002.md @@ -0,0 +1,34 @@ +--- +id: prime-002 +title: The Marvelous Mrs. Maisel +platform: Amazon Prime Video +genres: + - Comedy + - Drama + - Period +release_year: 2017 +end_year: 2023 +status: Ended +seasons: 5 +episodes: 43 +creators: + - Amy Sherman-Palladino +cast: + - Rachel Brosnahan + - Alex Borstein + - Michael Zegen + - Tony Shalhoub +country: USA +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - 50s + - stand-up + - feminist + - new-york +--- + +# The Marvelous Mrs. Maisel + +A 1950s New York housewife discovers she has a talent for stand-up comedy. diff --git a/src/test/resources/shows-markdown/prime-003.md b/src/test/resources/shows-markdown/prime-003.md new file mode 100644 index 00000000..118107b0 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-003.md @@ -0,0 +1,33 @@ +--- +id: prime-003 +title: Fleabag +platform: Amazon Prime Video +genres: + - Comedy + - Drama +release_year: 2016 +end_year: 2019 +status: Ended +seasons: 2 +episodes: 12 +creators: + - Phoebe Waller-Bridge +cast: + - Phoebe Waller-Bridge + - Sian Clifford + - Olivia Colman + - Andrew Scott +country: UK +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - british + - dark-comedy + - fourth-wall + - limited-series +--- + +# Fleabag + +A dry-witted woman navigates life and love in London while trying to cope with tragedy. diff --git a/src/test/resources/shows-markdown/prime-004.md b/src/test/resources/shows-markdown/prime-004.md new file mode 100644 index 00000000..deb3f502 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-004.md @@ -0,0 +1,35 @@ +--- +id: prime-004 +title: The Expanse +platform: Amazon Prime Video +genres: + - Sci-Fi + - Drama + - Mystery +release_year: 2015 +end_year: 2022 +status: Ended +seasons: 6 +episodes: 62 +creators: + - Mark Fergus + - Hawk Ostby +cast: + - Steven Strait + - Dominique Tipper + - Wes Chatham + - Shohreh Aghdashloo +country: USA +language: English +rating: TV-14 +imdb_rating: 8.5 +tags: + - space + - hard-sci-fi + - politics + - adaptation +--- + +# The Expanse + +In a colonized future solar system, a detective, a ship's officer, and a UN executive uncover a conspiracy. diff --git a/src/test/resources/shows-markdown/prime-005.md b/src/test/resources/shows-markdown/prime-005.md new file mode 100644 index 00000000..2efad946 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-005.md @@ -0,0 +1,34 @@ +--- +id: prime-005 +title: 'The Lord of the Rings: The Rings of Power' +platform: Amazon Prime Video +genres: + - Fantasy + - Adventure + - Drama +release_year: 2022 +status: Ongoing +seasons: 2 +episodes: 16 +creators: + - J.D. Payne + - Patrick McKay +cast: + - Morfydd Clark + - Robert Aramayo + - Charlie Vickers + - Markella Kavenagh +country: USA +language: English +rating: TV-14 +imdb_rating: 6.9 +tags: + - tolkien + - middle-earth + - epic + - high-budget +--- + +# The Lord of the Rings: The Rings of Power + +Epic drama set thousands of years before the events of The Hobbit and The Lord of the Rings, follows an ensemble cast in the Second Age of Middle-earth. diff --git a/src/test/resources/shows-markdown/prime-006.md b/src/test/resources/shows-markdown/prime-006.md new file mode 100644 index 00000000..d63503c9 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-006.md @@ -0,0 +1,32 @@ +--- +id: prime-006 +title: Reacher +platform: Amazon Prime Video +genres: + - Action + - Crime + - Drama +release_year: 2022 +status: Ongoing +seasons: 3 +episodes: 24 +creators: + - Nick Santora +cast: + - Alan Ritchson + - Malcolm Goodwin + - Willa Fitzgerald +country: USA +language: English +rating: TV-MA +imdb_rating: 8.1 +tags: + - action + - thriller + - lee-child + - adaptation +--- + +# Reacher + +Veteran military police investigator Jack Reacher solves crimes as a drifter. diff --git a/src/test/resources/shows-markdown/prime-007.md b/src/test/resources/shows-markdown/prime-007.md new file mode 100644 index 00000000..36ce35da --- /dev/null +++ b/src/test/resources/shows-markdown/prime-007.md @@ -0,0 +1,34 @@ +--- +id: prime-007 +title: Jack Ryan +platform: Amazon Prime Video +genres: + - Action + - Thriller + - Drama +release_year: 2018 +end_year: 2023 +status: Ended +seasons: 4 +episodes: 32 +creators: + - Carlton Cuse + - Graham Roland +cast: + - John Krasinski + - Wendell Pierce + - Abbie Cornish +country: USA +language: English +rating: TV-MA +imdb_rating: 8.0 +tags: + - cia + - spy + - tom-clancy + - adaptation +--- + +# Jack Ryan + +An up-and-coming CIA analyst is thrust into a dangerous field assignment. diff --git a/src/test/resources/shows-markdown/prime-008.md b/src/test/resources/shows-markdown/prime-008.md new file mode 100644 index 00000000..0e85b8a4 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-008.md @@ -0,0 +1,34 @@ +--- +id: prime-008 +title: Fallout +platform: Amazon Prime Video +genres: + - Sci-Fi + - Action + - Adventure +release_year: 2024 +status: Ongoing +seasons: 1 +episodes: 8 +creators: + - Graham Wagner + - Geneva Robertson-Dworet +cast: + - Ella Purnell + - Walton Goggins + - Aaron Moten + - Kyle MacLachlan +country: USA +language: English +rating: TV-MA +imdb_rating: 8.4 +tags: + - post-apocalyptic + - video-game-adaptation + - wasteland + - vaults +--- + +# Fallout + +In a future, post-apocalyptic Los Angeles brought about by nuclear decimation, citizens must live in underground bunkers to protect themselves. diff --git a/src/test/resources/shows-markdown/prime-009.md b/src/test/resources/shows-markdown/prime-009.md new file mode 100644 index 00000000..2690af40 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-009.md @@ -0,0 +1,32 @@ +--- +id: prime-009 +title: Mr. & Mrs. Smith +platform: Amazon Prime Video +genres: + - Action + - Comedy + - Romance +release_year: 2024 +status: Ongoing +seasons: 1 +episodes: 8 +creators: + - Donald Glover + - Francesca Sloane +cast: + - Donald Glover + - Maya Erskine +country: USA +language: English +rating: TV-MA +imdb_rating: 7.2 +tags: + - spy + - romance + - remake + - donald-glover +--- + +# Mr. & Mrs. Smith + +Two lonely strangers take a job working for a mysterious spy agency that offers them a glamorous life, a dream brownstone in Manhattan, and a new identity as a married couple. diff --git a/src/test/resources/shows-markdown/prime-010.md b/src/test/resources/shows-markdown/prime-010.md new file mode 100644 index 00000000..5e6f8963 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-010.md @@ -0,0 +1,33 @@ +--- +id: prime-010 +title: The Wheel of Time +platform: Amazon Prime Video +genres: + - Fantasy + - Adventure + - Action +release_year: 2021 +status: Ongoing +seasons: 3 +episodes: 24 +creators: + - Rafe Judkins +cast: + - Rosamund Pike + - Daniel Henney + - Josha Stradowski + - Madeleine Madden +country: USA +language: English +rating: TV-14 +imdb_rating: 7.0 +tags: + - fantasy + - magic + - robert-jordan + - epic +--- + +# The Wheel of Time + +Set in a high fantasy world where magic exists, but only some can access it, a woman named Moiraine leads five young people on a journey. diff --git a/src/test/resources/shows-markdown/prime-011.md b/src/test/resources/shows-markdown/prime-011.md new file mode 100644 index 00000000..5cf2dfed --- /dev/null +++ b/src/test/resources/shows-markdown/prime-011.md @@ -0,0 +1,33 @@ +--- +id: prime-011 +title: Good Omens +platform: Amazon Prime Video +genres: + - Comedy + - Fantasy + - Drama +release_year: 2019 +status: Ongoing +seasons: 2 +episodes: 12 +creators: + - Neil Gaiman +cast: + - David Tennant + - Michael Sheen + - Jon Hamm + - Frances McDormand +country: UK +language: English +rating: TV-MA +imdb_rating: 8.0 +tags: + - british + - supernatural + - gaiman + - pratchett +--- + +# Good Omens + +A demon and an angel attempt to prevent the apocalypse on Earth, which they have grown rather fond of over the millennia. diff --git a/src/test/resources/shows-markdown/prime-012.md b/src/test/resources/shows-markdown/prime-012.md new file mode 100644 index 00000000..3ba9793d --- /dev/null +++ b/src/test/resources/shows-markdown/prime-012.md @@ -0,0 +1,32 @@ +--- +id: prime-012 +title: The Terminal List +platform: Amazon Prime Video +genres: + - Action + - Drama + - Thriller +release_year: 2022 +status: Ongoing +seasons: 1 +episodes: 8 +creators: + - David DiGilio +cast: + - Chris Pratt + - Constance Wu + - Taylor Kitsch +country: USA +language: English +rating: TV-MA +imdb_rating: 8.0 +tags: + - navy-seal + - revenge + - military + - thriller +--- + +# The Terminal List + +A former Navy SEAL officer investigates why his entire platoon was ambushed during a high-stakes covert mission. diff --git a/src/test/resources/shows-markdown/prime-013.md b/src/test/resources/shows-markdown/prime-013.md new file mode 100644 index 00000000..4a003d43 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-013.md @@ -0,0 +1,32 @@ +--- +id: prime-013 +title: Upload +platform: Amazon Prime Video +genres: + - Sci-Fi + - Comedy + - Mystery +release_year: 2020 +status: Ongoing +seasons: 3 +episodes: 24 +creators: + - Greg Daniels +cast: + - Robbie Amell + - Andy Allo + - Allegra Edwards +country: USA +language: English +rating: TV-MA +imdb_rating: 7.9 +tags: + - afterlife + - technology + - sci-fi-comedy + - near-future +--- + +# Upload + +A man is able to choose his own afterlife after his untimely death by having his consciousness uploaded into a virtual world. diff --git a/src/test/resources/shows-markdown/prime-014.md b/src/test/resources/shows-markdown/prime-014.md new file mode 100644 index 00000000..308276db --- /dev/null +++ b/src/test/resources/shows-markdown/prime-014.md @@ -0,0 +1,33 @@ +--- +id: prime-014 +title: Bosch +platform: Amazon Prime Video +genres: + - Crime + - Drama + - Mystery +release_year: 2014 +end_year: 2021 +status: Ended +seasons: 7 +episodes: 68 +creators: + - Eric Overmyer +cast: + - Titus Welliver + - Jamie Hector + - Amy Aquino +country: USA +language: English +rating: TV-MA +imdb_rating: 8.5 +tags: + - detective + - los-angeles + - procedural + - michael-connelly +--- + +# Bosch + +An LAPD homicide detective works to solve the murder of a 13-year-old boy. diff --git a/src/test/resources/shows-markdown/prime-015.md b/src/test/resources/shows-markdown/prime-015.md new file mode 100644 index 00000000..1f8b1d90 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-015.md @@ -0,0 +1,33 @@ +--- +id: prime-015 +title: Invincible +platform: Amazon Prime Video +genres: + - Animation + - Action + - Drama +release_year: 2021 +status: Ongoing +seasons: 3 +episodes: 24 +creators: + - Robert Kirkman +cast: + - Steven Yeun + - J.K. Simmons + - Sandra Oh + - Zazie Beetz +country: USA +language: English +rating: TV-MA +imdb_rating: 8.7 +tags: + - adult-animation + - superheroes + - violent + - comic-adaptation +--- + +# Invincible + +An adult animated series about a teenager whose father is the most powerful superhero on the planet. diff --git a/src/test/resources/shows-markdown/prime-016.md b/src/test/resources/shows-markdown/prime-016.md new file mode 100644 index 00000000..156d1153 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-016.md @@ -0,0 +1,34 @@ +--- +id: prime-016 +title: Vikings +platform: Amazon Prime Video +genres: + - Drama + - Action + - Historical +release_year: 2013 +end_year: 2020 +status: Ended +seasons: 6 +episodes: 89 +creators: + - Michael Hirst +cast: + - Travis Fimmel + - Katheryn Winnick + - Clive Standen + - Gustaf Skarsgård +country: Ireland +language: English +rating: TV-MA +imdb_rating: 8.5 +tags: + - vikings + - historical + - norse + - ragnar +--- + +# Vikings + +The world of the Vikings is brought to life through the journey of Ragnar Lothbrok, the first Viking to emerge from Norse legend. diff --git a/src/test/resources/shows-markdown/prime-017.md b/src/test/resources/shows-markdown/prime-017.md new file mode 100644 index 00000000..2c83ad43 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-017.md @@ -0,0 +1,32 @@ +--- +id: prime-017 +title: The Underground Railroad +platform: Amazon Prime Video +genres: + - Drama + - Historical +release_year: 2021 +end_year: 2021 +status: Ended +seasons: 1 +episodes: 10 +creators: + - Barry Jenkins +cast: + - Thuso Mbedu + - Chase W. Dillon + - Joel Edgerton +country: USA +language: English +rating: TV-MA +imdb_rating: 7.4 +tags: + - limited-series + - slavery + - barry-jenkins + - literary-adaptation +--- + +# The Underground Railroad + +A young woman makes a harrowing escape from antebellum slavery via an underground railroad that travels in a literal underground train. diff --git a/src/test/resources/shows-markdown/prime-018.md b/src/test/resources/shows-markdown/prime-018.md new file mode 100644 index 00000000..5448b725 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-018.md @@ -0,0 +1,34 @@ +--- +id: prime-018 +title: Hunters +platform: Amazon Prime Video +genres: + - Drama + - Thriller + - Action +release_year: 2020 +end_year: 2023 +status: Ended +seasons: 2 +episodes: 18 +creators: + - David Weil +cast: + - Al Pacino + - Logan Lerman + - Jerrika Hinton + - Lena Olin +country: USA +language: English +rating: TV-MA +imdb_rating: 7.2 +tags: + - nazi-hunters + - 70s + - alternate-history + - new-york +--- + +# Hunters + +A diverse band of Nazi hunters living in 1977 New York City discover that hundreds of high-ranking Nazi officials are conspiring to create a Fourth Reich in the U.S. diff --git a/src/test/resources/shows-markdown/prime-019.md b/src/test/resources/shows-markdown/prime-019.md new file mode 100644 index 00000000..3b974cb4 --- /dev/null +++ b/src/test/resources/shows-markdown/prime-019.md @@ -0,0 +1,34 @@ +--- +id: prime-019 +title: Carnival Row +platform: Amazon Prime Video +genres: + - Fantasy + - Drama + - Mystery +release_year: 2019 +end_year: 2023 +status: Ended +seasons: 2 +episodes: 18 +creators: + - René Echevarria + - Travis Beacham +cast: + - Orlando Bloom + - Cara Delevingne + - Simon McBurney +country: USA +language: English +rating: TV-MA +imdb_rating: 7.8 +tags: + - fantasy + - victorian + - mythical-creatures + - noir +--- + +# Carnival Row + +Mythical creatures have fled their war-torn homeland and gathered in a city where humans live, leading to escalating tensions. diff --git a/src/test/resources/shows-markdown/prime-020.md b/src/test/resources/shows-markdown/prime-020.md new file mode 100644 index 00000000..8a93cecd --- /dev/null +++ b/src/test/resources/shows-markdown/prime-020.md @@ -0,0 +1,34 @@ +--- +id: prime-020 +title: Citadel +platform: Amazon Prime Video +genres: + - Action + - Drama + - Thriller +release_year: 2023 +status: Ongoing +seasons: 1 +episodes: 6 +creators: + - Josh Appelbaum + - Bryan Oh + - David Weil +cast: + - Richard Madden + - Priyanka Chopra Jonas + - Stanley Tucci +country: USA +language: English +rating: TV-MA +imdb_rating: 5.9 +tags: + - spy + - russo-brothers + - global + - amnesia +--- + +# Citadel + +Eight years after the fall of an independent global spy agency, two former agents must work together to stop a new threat.