diff --git a/bridges/NurembergerNachrichtenBridge.php b/bridges/NurembergerNachrichtenBridge.php
new file mode 100644
index 00000000000..97e03a97ed8
--- /dev/null
+++ b/bridges/NurembergerNachrichtenBridge.php
@@ -0,0 +1,181 @@
+ [
+ 'name' => 'region',
+ 'type' => 'list',
+ 'exampleValue' => 'Nürnberg',
+ 'title' => 'Select a region',
+ 'values' => [
+ 'Ansbach' => 'ansbach',
+ 'Erlangen' => 'erlangen',
+ 'Erlangen-Höchstadt' => 'erlangen-hoechstadt',
+ 'Forchheim' => 'forchheim',
+ 'Fürth' => 'fuerth',
+ 'Gunzenhausen' => 'gunzenhausen',
+ 'Neumarkt' => 'neumarkt',
+ 'Neustadt/Aisch-Bad Windsheim' => 'neustadt-aisch-bad-windsheim',
+ 'Nürnberg' => 'nuernberg',
+ 'Nürnberger Land' => 'nuernberger-land',
+ 'Pegnitz' => 'pegnitz',
+ 'Roth' => 'roth',
+ 'Schwabach' => 'schwabach',
+ 'Weißenburg' => 'weissenburg'
+ ]
+ ],
+ 'hideNNPlus' => [
+ 'name' => 'Hide NN+ articles',
+ 'type' => 'checkbox',
+ 'exampleValue' => 'unchecked',
+ 'title' => 'Hide all paywall articles on NN'
+ ],
+ ]];
+
+ public function collectData()
+ {
+ $region = $this->getInput('region');
+ if (
+ $region === 'neustadt-aisch-bad-windsheim' ||
+ $region === 'erlangen-hoechstadt' ||
+ $region === ''
+ ) {
+ $region = 'region/' . $region;
+ }
+ $url = self::URI . '/' . $region;
+ $listSite = getSimpleHTMLDOM($url);
+
+ $this->handleNewsblock($listSite);
+ }
+
+
+ private function getValidImage($picture)
+ {
+ $img = $picture->find('img', 0);
+ if ($img) {
+ $imgUrl = $img->src;
+ if (!preg_match('#/logo-.*\.png#', $imgUrl)) {
+ return '';
+ }
+ }
+ return '';
+ }
+
+ private function getUseFullContent($rawContent)
+ {
+ $content = '';
+ foreach ($rawContent->children as $element) {
+ if (
+ ($element->tag === 'p' || $element->tag === 'h3') &&
+ $element->class !== 'article__teaser'
+ ) {
+ $content .= $element;
+ } elseif ($element->tag === 'main') {
+ $content .= $this->getUseFullContent($element->find('article', 0));
+ } elseif ($element->tag === 'header') {
+ $content .= $this->getUseFullContent($element);
+ } elseif (
+ $element->tag === 'div' &&
+ !str_contains($element->class, 'article__infobox') &&
+ !str_contains($element->class, 'authorinfo')
+ ) {
+ $content .= $this->getUseFullContent($element);
+ } elseif (
+ $element->tag === 'section' &&
+ (str_contains($element->class, 'article__richtext') ||
+ str_contains($element->class, 'article__context'))
+ ) {
+ $content .= $this->getUseFullContent($element);
+ } elseif ($element->tag === 'picture') {
+ $content .= $this->getValidImage($element);
+ } elseif ($element->tag === 'ul') {
+ $content .= $element;
+ }
+ }
+ return $content;
+ }
+
+ private function getTeaser($content)
+ {
+ $teaser = $content->find('p[class=article__teaser]', 0);
+ if ($teaser === null) {
+ return '';
+ }
+ $teaser = $teaser->plaintext;
+ $teaser = preg_replace('/[ ]{2,}/', ' ', $teaser);
+ $teaser = '