Add historical radioeins parser support

This commit is contained in:
2026-08-09 12:19:14 +02:00
parent 355ea3e509
commit bbf0f1bf0a
5 changed files with 141 additions and 6 deletions
+40 -6
View File
@@ -5,6 +5,14 @@ from radioeins_top100 import POINTS, derive_output_dir, parse_jury_page
class RadioeinsTop100Tests(unittest.TestCase):
def parse_fixture(self, name):
fixture = Path(__file__).parent / "fixtures" / name
return parse_jury_page(
fixture.read_text(encoding="utf-8"),
fallback_name="Fallback",
source_url=f"https://example.test/{name}",
)
def test_output_directory_is_derived_from_url_path(self):
base = "https://www.radioeins.de/musik/top_100/2026"
self.assertEqual(derive_output_dir(f"{base}/zeit/"), Path("output_zeit"))
@@ -20,12 +28,7 @@ class RadioeinsTop100Tests(unittest.TestCase):
)
def test_parse_existing_jury_fixture(self):
fixture = Path(__file__).parent / "fixtures" / "aditya-sharma.html"
votes = parse_jury_page(
fixture.read_text(encoding="utf-8"),
fallback_name="Fallback",
source_url="https://example.test/aditya-sharma.html",
)
votes = self.parse_fixture("aditya-sharma.html")
self.assertEqual(len(votes), 10)
self.assertEqual(votes[0].juror, "Aditya Sharma")
@@ -33,6 +36,37 @@ class RadioeinsTop100Tests(unittest.TestCase):
self.assertEqual((votes[1].artist, votes[1].title), ("Samy Deluxe", "Weck Mich Auf"))
self.assertEqual((votes[-1].rank, votes[-1].points), (10, 1))
def test_parse_historical_page_without_heading(self):
votes = self.parse_fixture("andreas-loeffler.html")
self.assertEqual(len(votes), 10)
self.assertEqual(votes[0].juror, "Andreas Löffler")
self.assertEqual((votes[0].artist, votes[0].title), ("Die Ärzte", "Schrei nach Liebe"))
self.assertEqual((votes[-1].rank, votes[-1].points), (10, 1))
def test_parse_historical_page_with_html_spacing(self):
votes = self.parse_fixture("andreas-ulrich.html")
self.assertEqual(len(votes), 10)
self.assertEqual(votes[5].title, "Pocahontas")
self.assertEqual(votes[-1].artist, "Wir Sind Helden")
def test_historical_title_preserves_additional_colons(self):
fixture = Path(__file__).parent / "fixtures" / "andreas-loeffler.html"
html = fixture.read_text(encoding="utf-8").replace(
"Schrei nach Liebe", "Live: Schrei nach Liebe"
)
votes = parse_jury_page(html, "Fallback", "https://example.test/list.html")
self.assertEqual(votes[0].title, "Live: Schrei nach Liebe")
def test_historical_page_accepts_spaced_hyphen_separator(self):
votes = self.parse_fixture("aydo-abay.html")
self.assertEqual(len(votes), 10)
self.assertEqual(votes[7].artist, "Boxhmasters")
self.assertEqual(votes[7].title, "Mogli")
if __name__ == "__main__":
unittest.main()