From 1e00cb2ac22205daf8f1a120575e8c921742a9e5 Mon Sep 17 00:00:00 2001 From: Aditya Parikh Date: Mon, 14 Sep 2026 10:18:42 -0400 Subject: [PATCH 1/2] refactor(indexing): parse Markdown front matter with SnakeYAML The front matter is YAML, but its values came from the commonmark extension's line-by-line reader plus a hand-rolled splitter for flow sequences, so a quoted title containing a comma or a colon, a quoted list element, or a nested mapping came out wrong. The block is now sliced out verbatim via commonmark's source spans and handed to SnakeYAML, which is already on the classpath through Spring Boot. Implicit type resolution is switched off so every scalar stays the text as written, exactly as before; Solr's schema guessing types it. The flow-sequence splitter is gone. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01CiUHyyXLTo9ATdgg8eRFZJ Signed-off-by: Aditya Parikh --- .../MarkdownDocumentCreator.java | 104 ++++++++++-------- .../MarkdownDocumentCreatorTest.java | 85 ++++++++++++++ 2 files changed, 144 insertions(+), 45 deletions(-) create mode 100644 src/test/java/org/apache/solr/mcp/server/indexing/documentcreator/MarkdownDocumentCreatorTest.java 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/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(); + } +} From 031d6d5c0ca78629f96f4e315f95c1e1d62b7625 Mon Sep 17 00:00:00 2001 From: Aditya Parikh Date: Mon, 14 Sep 2026 13:18:35 -0400 Subject: [PATCH 2/2] test(data): add Markdown show sample dataset and parser parity tests Port shows-markdown/ (61 show records) and ShowsSampleDataTest from PR #201. Validates that SnakeYAML front matter parsing produces documents matching shows.json across all 61 records. Signed-off-by: Aditya Parikh Co-authored-by: Junie --- build.gradle.kts | 1 + .../server/indexing/ShowsSampleDataTest.java | 120 ++++++++++++++++++ .../resources/shows-markdown/appletv-001.md | 35 +++++ .../resources/shows-markdown/appletv-002.md | 33 +++++ .../resources/shows-markdown/appletv-003.md | 33 +++++ .../resources/shows-markdown/appletv-004.md | 32 +++++ .../resources/shows-markdown/disney-001.md | 32 +++++ .../resources/shows-markdown/disney-002.md | 33 +++++ .../resources/shows-markdown/disney-003.md | 33 +++++ .../resources/shows-markdown/disney-004.md | 33 +++++ src/test/resources/shows-markdown/hbo-001.md | 35 +++++ src/test/resources/shows-markdown/hbo-002.md | 33 +++++ src/test/resources/shows-markdown/hbo-003.md | 33 +++++ src/test/resources/shows-markdown/hbo-004.md | 34 +++++ src/test/resources/shows-markdown/hbo-005.md | 33 +++++ src/test/resources/shows-markdown/hbo-006.md | 35 +++++ src/test/resources/shows-markdown/hbo-007.md | 33 +++++ src/test/resources/shows-markdown/hulu-001.md | 34 +++++ src/test/resources/shows-markdown/hulu-002.md | 31 +++++ src/test/resources/shows-markdown/hulu-003.md | 33 +++++ .../resources/shows-markdown/netflix-001.md | 35 +++++ .../resources/shows-markdown/netflix-002.md | 34 +++++ .../resources/shows-markdown/netflix-003.md | 34 +++++ .../resources/shows-markdown/netflix-004.md | 34 +++++ .../resources/shows-markdown/netflix-005.md | 34 +++++ .../resources/shows-markdown/netflix-006.md | 35 +++++ .../resources/shows-markdown/netflix-007.md | 35 +++++ .../resources/shows-markdown/netflix-008.md | 30 +++++ .../resources/shows-markdown/netflix-009.md | 33 +++++ .../resources/shows-markdown/netflix-010.md | 33 +++++ .../resources/shows-markdown/netflix-011.md | 35 +++++ .../resources/shows-markdown/netflix-012.md | 33 +++++ .../resources/shows-markdown/netflix-013.md | 33 +++++ .../resources/shows-markdown/netflix-014.md | 34 +++++ .../resources/shows-markdown/netflix-015.md | 34 +++++ .../resources/shows-markdown/netflix-016.md | 33 +++++ .../resources/shows-markdown/netflix-017.md | 34 +++++ .../resources/shows-markdown/netflix-018.md | 34 +++++ .../resources/shows-markdown/netflix-019.md | 33 +++++ .../resources/shows-markdown/netflix-020.md | 34 +++++ .../resources/shows-markdown/paramount-001.md | 34 +++++ .../resources/shows-markdown/paramount-002.md | 34 +++++ .../resources/shows-markdown/peacock-001.md | 30 +++++ .../resources/shows-markdown/prime-001.md | 33 +++++ .../resources/shows-markdown/prime-002.md | 34 +++++ .../resources/shows-markdown/prime-003.md | 33 +++++ .../resources/shows-markdown/prime-004.md | 35 +++++ .../resources/shows-markdown/prime-005.md | 34 +++++ .../resources/shows-markdown/prime-006.md | 32 +++++ .../resources/shows-markdown/prime-007.md | 34 +++++ .../resources/shows-markdown/prime-008.md | 34 +++++ .../resources/shows-markdown/prime-009.md | 32 +++++ .../resources/shows-markdown/prime-010.md | 33 +++++ .../resources/shows-markdown/prime-011.md | 33 +++++ .../resources/shows-markdown/prime-012.md | 32 +++++ .../resources/shows-markdown/prime-013.md | 32 +++++ .../resources/shows-markdown/prime-014.md | 33 +++++ .../resources/shows-markdown/prime-015.md | 33 +++++ .../resources/shows-markdown/prime-016.md | 34 +++++ .../resources/shows-markdown/prime-017.md | 32 +++++ .../resources/shows-markdown/prime-018.md | 34 +++++ .../resources/shows-markdown/prime-019.md | 34 +++++ .../resources/shows-markdown/prime-020.md | 34 +++++ 63 files changed, 2156 insertions(+) create mode 100644 src/test/java/org/apache/solr/mcp/server/indexing/ShowsSampleDataTest.java create mode 100644 src/test/resources/shows-markdown/appletv-001.md create mode 100644 src/test/resources/shows-markdown/appletv-002.md create mode 100644 src/test/resources/shows-markdown/appletv-003.md create mode 100644 src/test/resources/shows-markdown/appletv-004.md create mode 100644 src/test/resources/shows-markdown/disney-001.md create mode 100644 src/test/resources/shows-markdown/disney-002.md create mode 100644 src/test/resources/shows-markdown/disney-003.md create mode 100644 src/test/resources/shows-markdown/disney-004.md create mode 100644 src/test/resources/shows-markdown/hbo-001.md create mode 100644 src/test/resources/shows-markdown/hbo-002.md create mode 100644 src/test/resources/shows-markdown/hbo-003.md create mode 100644 src/test/resources/shows-markdown/hbo-004.md create mode 100644 src/test/resources/shows-markdown/hbo-005.md create mode 100644 src/test/resources/shows-markdown/hbo-006.md create mode 100644 src/test/resources/shows-markdown/hbo-007.md create mode 100644 src/test/resources/shows-markdown/hulu-001.md create mode 100644 src/test/resources/shows-markdown/hulu-002.md create mode 100644 src/test/resources/shows-markdown/hulu-003.md create mode 100644 src/test/resources/shows-markdown/netflix-001.md create mode 100644 src/test/resources/shows-markdown/netflix-002.md create mode 100644 src/test/resources/shows-markdown/netflix-003.md create mode 100644 src/test/resources/shows-markdown/netflix-004.md create mode 100644 src/test/resources/shows-markdown/netflix-005.md create mode 100644 src/test/resources/shows-markdown/netflix-006.md create mode 100644 src/test/resources/shows-markdown/netflix-007.md create mode 100644 src/test/resources/shows-markdown/netflix-008.md create mode 100644 src/test/resources/shows-markdown/netflix-009.md create mode 100644 src/test/resources/shows-markdown/netflix-010.md create mode 100644 src/test/resources/shows-markdown/netflix-011.md create mode 100644 src/test/resources/shows-markdown/netflix-012.md create mode 100644 src/test/resources/shows-markdown/netflix-013.md create mode 100644 src/test/resources/shows-markdown/netflix-014.md create mode 100644 src/test/resources/shows-markdown/netflix-015.md create mode 100644 src/test/resources/shows-markdown/netflix-016.md create mode 100644 src/test/resources/shows-markdown/netflix-017.md create mode 100644 src/test/resources/shows-markdown/netflix-018.md create mode 100644 src/test/resources/shows-markdown/netflix-019.md create mode 100644 src/test/resources/shows-markdown/netflix-020.md create mode 100644 src/test/resources/shows-markdown/paramount-001.md create mode 100644 src/test/resources/shows-markdown/paramount-002.md create mode 100644 src/test/resources/shows-markdown/peacock-001.md create mode 100644 src/test/resources/shows-markdown/prime-001.md create mode 100644 src/test/resources/shows-markdown/prime-002.md create mode 100644 src/test/resources/shows-markdown/prime-003.md create mode 100644 src/test/resources/shows-markdown/prime-004.md create mode 100644 src/test/resources/shows-markdown/prime-005.md create mode 100644 src/test/resources/shows-markdown/prime-006.md create mode 100644 src/test/resources/shows-markdown/prime-007.md create mode 100644 src/test/resources/shows-markdown/prime-008.md create mode 100644 src/test/resources/shows-markdown/prime-009.md create mode 100644 src/test/resources/shows-markdown/prime-010.md create mode 100644 src/test/resources/shows-markdown/prime-011.md create mode 100644 src/test/resources/shows-markdown/prime-012.md create mode 100644 src/test/resources/shows-markdown/prime-013.md create mode 100644 src/test/resources/shows-markdown/prime-014.md create mode 100644 src/test/resources/shows-markdown/prime-015.md create mode 100644 src/test/resources/shows-markdown/prime-016.md create mode 100644 src/test/resources/shows-markdown/prime-017.md create mode 100644 src/test/resources/shows-markdown/prime-018.md create mode 100644 src/test/resources/shows-markdown/prime-019.md create mode 100644 src/test/resources/shows-markdown/prime-020.md 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/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/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.