From 66fa6eb1194782bd8cce9f1f31fc78eb7a0b4962 Mon Sep 17 00:00:00 2001 From: pidoubleyou <22942659+pidoubleyou@users.noreply.github.com> Date: Sun, 12 Apr 2026 21:56:15 +0200 Subject: [PATCH 1/2] remove unnecessary cleanup functions --- .../java/mServer/crawler/AddToFilmlist.java | 98 ------------------- .../mServer/crawler/AddToFilmlistTest.java | 94 ------------------ 2 files changed, 192 deletions(-) diff --git a/src/main/java/mServer/crawler/AddToFilmlist.java b/src/main/java/mServer/crawler/AddToFilmlist.java index d3455333a..89300caaf 100644 --- a/src/main/java/mServer/crawler/AddToFilmlist.java +++ b/src/main/java/mServer/crawler/AddToFilmlist.java @@ -53,15 +53,6 @@ public AddToFilmlist(ListeFilme vonListe, ListeFilme listeEinsortieren) { this.bannedFilmFilter = new BannedFilmFilter(); } - private static String cutOutSrfParameterInUrl(String url) { - int startIndex = url.indexOf("/hdntl=exp"); - int endIndex = url.indexOf("/index-f"); - if (endIndex > -1 && startIndex < endIndex) { - url = url.substring(0, startIndex) + url.substring(endIndex); - } - return url; - } - public synchronized void addLiveStream() { if (listeEinsortieren.size() <= 0) { return; @@ -134,15 +125,9 @@ private void performInitialCleanup() { }); removeTimeFromMdrAktuell(listeEinsortieren); removeTimeFromOrf(listeEinsortieren); - updateAudioDescriptionOrf(listeEinsortieren); - updateAudioDescriptionSrf(listeEinsortieren); - updateAudioDescriptionZdf(listeEinsortieren); updateThema(listeEinsortieren); updateTitle(listeEinsortieren); updateArdWebsite(listeEinsortieren); - updateSenderTagesschau24(listeEinsortieren); - updateFunkMissingHost(listeEinsortieren); - removeSrfUrlParameter(listeEinsortieren); } private boolean isArdUrlToRemove(final String url) { @@ -151,36 +136,6 @@ private boolean isArdUrlToRemove(final String url) { || url.startsWith("https://pmdonlinekika-a.akamaihd.net"); } - // check https://github.com/mediathekview/MServer/issues/904 for examples and more information - private void removeSrfUrlParameter(ListeFilme listeEinsortieren) { - final List list = listeEinsortieren.parallelStream() - .filter(film -> film.arr[DatenFilm.FILM_SENDER].equals(Const.SRF) && film.arr[DatenFilm.FILM_URL].contains("/hdntl=exp")) - .collect(Collectors.toList()); - Log.sysLog("SRF: remove url parameter für " + list.size() + " Einträge von " + listeEinsortieren.size()); - - list.forEach(film -> { - String url = film.arr[DatenFilm.FILM_URL]; - String urlKlein = film.arr[DatenFilm.FILM_URL_KLEIN] == null || film.arr[DatenFilm.FILM_URL_KLEIN].isEmpty() ? "" : film.getUrlFuerAufloesung(DatenFilm.AUFLOESUNG_KLEIN); - String urlGross = film.arr[DatenFilm.FILM_URL_HD] == null || film.arr[DatenFilm.FILM_URL_HD].isEmpty() ? "" : film.getUrlFuerAufloesung(DatenFilm.AUFLOESUNG_HD); - film.arr[DatenFilm.FILM_URL] = cutOutSrfParameterInUrl(UrlUtils.removeParameters(url)); - CrawlerTool.addUrlKlein(film, cutOutSrfParameterInUrl(UrlUtils.removeParameters(urlKlein))); - CrawlerTool.addUrlHd(film, cutOutSrfParameterInUrl(UrlUtils.removeParameters(urlGross))); - }); - - - } - - private void updateFunkMissingHost(ListeFilme listeEinsortieren) { - final List list = listeEinsortieren.parallelStream() - .filter(film -> film.arr[DatenFilm.FILM_SENDER].equals("Funk.net") && film.arr[DatenFilm.FILM_URL].matches("https:\\/\\/[0-9]*\\/.*")) - .collect(Collectors.toList()); - Log.sysLog("FUNK: add missing host für " + list.size() + " Einträge."); - // ich glaube dies macht die urls (klein/dh) kaputt. Diese liegen in index Form (123|abc.mp4) vor und der index verschiebt sich wenn man die FILM_URL ändert - list.forEach(film -> film.arr[DatenFilm.FILM_URL] = film.arr[DatenFilm.FILM_URL].replace("https://", "https://funk-02.akamaized.net/").trim()); - list.forEach(film -> film.arr[DatenFilm.FILM_URL_KLEIN] = film.arr[DatenFilm.FILM_URL_KLEIN].replace("https://", "https://funk-02.akamaized.net/").trim()); - list.forEach(film -> film.arr[DatenFilm.FILM_URL_HD] = film.arr[DatenFilm.FILM_URL_HD].replace("https://", "https://funk-02.akamaized.net/").trim()); - } - private void updateThema(ListeFilme listeEinsortieren) { listeEinsortieren.parallelStream().forEach(film -> { final String thema = film.arr[DatenFilm.FILM_THEMA].trim(); @@ -208,59 +163,6 @@ private void updateArdWebsite(ListeFilme listeEinsortieren) { list.forEach(film -> film.arr[DatenFilm.FILM_WEBSEITE] = film.arr[DatenFilm.FILM_WEBSEITE].replace("/ard/player/", "/video/").trim()); } - private void updateSenderTagesschau24(ListeFilme listeEinsortieren) { - final List whiteListTagesschau24 = Arrays.stream(new String[] { "Ulrich Timm im Gespräch", "tagesschau in Einfacher Sprache", "tagesschau in 100 Sekunden", "tagesschau24" }).toList(); - final List list = listeEinsortieren.parallelStream() - .filter(film -> film.arr[DatenFilm.FILM_SENDER].equals(Const.ARD) && whiteListTagesschau24.contains(film.arr[DatenFilm.FILM_THEMA])) - .collect(Collectors.toList()); - Log.sysLog("ARD: set sender tagesschau24 für " + list.size() + " Einträge."); - - list.forEach(film -> film.arr[DatenFilm.FILM_SENDER] = Const.TAGESSCHAU24); - } - - private void updateAudioDescriptionOrf(ListeFilme listeEinsortieren) { - final List list = listeEinsortieren.parallelStream() - .filter( - film -> film.arr[DatenFilm.FILM_SENDER].equals(Const.ORF) && film.arr[DatenFilm.FILM_THEMA] - .startsWith("AD |")) - .collect(Collectors.toList()); - Log.sysLog("ORF: update Thema/Titel für " + list.size() + " Einträge mit Audiodeskription."); - if (!list.isEmpty()) { - list.forEach(film -> { - film.arr[DatenFilm.FILM_THEMA] = film.arr[DatenFilm.FILM_THEMA].replace("AD |", "").trim(); - film.arr[DatenFilm.FILM_TITEL] = film.arr[DatenFilm.FILM_TITEL].replace("AD |", "").trim() + " (Audiodeskription)"; - }); - } - } - - private void updateAudioDescriptionSrf(ListeFilme listeEinsortieren) { - final List list = listeEinsortieren.parallelStream() - .filter( - film -> film.arr[DatenFilm.FILM_SENDER].equals(Const.SRF) && film.arr[DatenFilm.FILM_THEMA] - .contains("mit Audiodeskription")) - .collect(Collectors.toList()); - Log.sysLog("SRF: update Thema/Titel für " + list.size() + " Einträge mit Audiodeskription."); - if (!list.isEmpty()) { - list.forEach(film -> { - film.arr[DatenFilm.FILM_THEMA] = film.arr[DatenFilm.FILM_THEMA].replace("mit Audiodeskription", "").trim(); - film.arr[DatenFilm.FILM_TITEL] = film.arr[DatenFilm.FILM_TITEL].replace(" mit Audiodeskription", "").trim() + " (Audiodeskription)"; - }); - } - } - - private void updateAudioDescriptionZdf(ListeFilme listeEinsortieren) { - final List list = listeEinsortieren.parallelStream() - .filter( - film -> film.arr[DatenFilm.FILM_TITEL].contains("(deu-ad)")) - .toList(); - Log.sysLog("ZDF: erstetze (deu-ad) mit " + list.size() + " (Audiodeskription)."); - if (!list.isEmpty()) { - list.forEach(film -> { - film.arr[DatenFilm.FILM_TITEL] = film.arr[DatenFilm.FILM_TITEL].replace("(deu-ad)", " (Audiodeskription)").trim(); - }); - } - } - private void removeTimeFromOrf(ListeFilme listeEinsortieren) { final List list = listeEinsortieren.parallelStream() .filter( diff --git a/src/test/developTest/java/mServer/crawler/AddToFilmlistTest.java b/src/test/developTest/java/mServer/crawler/AddToFilmlistTest.java index 1f058411d..6b4a6ae52 100644 --- a/src/test/developTest/java/mServer/crawler/AddToFilmlistTest.java +++ b/src/test/developTest/java/mServer/crawler/AddToFilmlistTest.java @@ -269,69 +269,6 @@ public void testReplaceMdrAktuellTopic() { assertTrue(themaStringwithoutTime.isPresent()); } - @Test - public void testReplaceOrfAudioDescriptionNaming() { - listToAdd.add(createTestFilm(Const.ORF, "AD | Film", "AD | Film Testfilm", FILM_NAME_ONLINE)); - listToAdd.add(createTestFilm(Const.ARD, "AD | Film", "AD | Film ARD", FILM_NAME_ONLINE)); - - AddToFilmlist target = new AddToFilmlist(list, listToAdd); - target.addOldList(); - - Assertions.assertThat(list).hasSize(4) - .anySatisfy(film -> checkFilmThemaAndTitle(film, "Film", "Film Testfilm (Audiodeskription)")) - .anySatisfy(film -> checkFilmThemaAndTitle(film, "AD | Film", "AD | Film ARD")); - } - - private void checkFilmThemaAndTitle(DatenFilm film, final String expectedThema, final String expectedTitle) { - Assertions.assertThat(film.arr[DatenFilm.FILM_THEMA]).isEqualTo(expectedThema); - Assertions.assertThat(film.arr[DatenFilm.FILM_TITEL]).isEqualTo(expectedTitle); - } - - @Test - public void testRemoveSrfUrlParams() { - final DatenFilm testFilmRemoveParams = createTestFilm(Const.SRF, "10vor", "10vor1", "world/hls/10vor10/2023/07/10vor10_20230731_215000_19875207_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/hdntl=exp=1690999574~acl=%2f*~data=hdntl,0.04-1562.28~hmac=29f18372882182cc035b155825bb4772faeca5126909064987eed4e28ffa291b/index-f1-v1-a1.m3u8?start=0.04&end=1562.28&caption=srf/b2c07ad6-4904-486e-94ca-5a10745d95cb/episode/de/vod/vod.m3u8"); - testFilmRemoveParams.arr[DatenFilm.FILM_URL_KLEIN] = "275|3-v1-a1.m3u8?start=0.04&end=1562.28&caption=srf/b2c07ad6-4904-486e-94ca-5a10745d95cb/episode/de/vod/vod.m3u8"; - testFilmRemoveParams.arr[DatenFilm.FILM_URL_HD] = "275|6-v1-a1.m3u8?start=0.04&end=1562.28&caption=srf/b2c07ad6-4904-486e-94ca-5a10745d95cb/episode/de/vod/vod.m3u8"; - listToAdd.add(testFilmRemoveParams); - - final DatenFilm testFilmRemoveParamsOnlyNormal = createTestFilm(Const.SRF, "10vor", "10vor2", "world/hls/10vor10/2023/07/10vor10_20230731_215000_19875207_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/hdntl=exp=1690999574~acl=%2f*~data=hdntl,0.04-1562.28~hmac=29f18372882182cc035b155825bb4772faeca5126909064987eed4e28ffa291b/index-f1-v1-a1.m3u8?start=0.04&end=1562.28&caption=srf/b2c07ad6-4904-486e-94ca-5a10745d95cb/episode/de/vod/vod.m3u8"); - listToAdd.add(testFilmRemoveParamsOnlyNormal); - - final DatenFilm testFilmDontRemoveParams = createTestFilm(Const.SRF, "10vor", "10vor3", "ch/hls/guetnachtgschichtli/2023/07/guetnachtgschichtli_20230729_000517_19830744_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index-f1-v1-a1.m3u8?caption=srf/4289848a-b5d2-42c6-bf7d-2bfaf29629b1/episode/de/vod/vod.m3u8"); - listToAdd.add(testFilmDontRemoveParams); - - AddToFilmlist target = new AddToFilmlist(list, listToAdd); - target.addOldList(); - - assertEquals(list.size(), 5); - - assertEquals(testFilmRemoveParams.arr[DatenFilm.FILM_URL], baseUrl + "world/hls/10vor10/2023/07/10vor10_20230731_215000_19875207_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index-f1-v1-a1.m3u8"); - assertEquals(testFilmRemoveParams.arr[DatenFilm.FILM_URL_KLEIN], "151|3-v1-a1.m3u8"); - assertEquals(testFilmRemoveParams.arr[DatenFilm.FILM_URL_HD], "151|6-v1-a1.m3u8"); - assertEquals(testFilmRemoveParamsOnlyNormal.arr[DatenFilm.FILM_URL], baseUrl + "world/hls/10vor10/2023/07/10vor10_20230731_215000_19875207_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index-f1-v1-a1.m3u8"); - assertEquals(testFilmRemoveParamsOnlyNormal.arr[DatenFilm.FILM_URL_KLEIN], ""); - assertEquals(testFilmRemoveParamsOnlyNormal.arr[DatenFilm.FILM_URL_HD], ""); - assertEquals(testFilmDontRemoveParams.arr[DatenFilm.FILM_URL], baseUrl + "ch/hls/guetnachtgschichtli/2023/07/guetnachtgschichtli_20230729_000517_19830744_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index-f1-v1-a1.m3u8?caption=srf/4289848a-b5d2-42c6-bf7d-2bfaf29629b1/episode/de/vod/vod.m3u8"); - - } - @Test - public void testReplaceSrfAudioDescriptionNaming() { - final DatenFilm film1 = createTestFilm(Const.SRF, "Film mit Audiodeskription", "Testfilm mit Audiodeskription (Staffel 1)", FILM_NAME_ONLINE); - final DatenFilm film2 = createTestFilm(Const.SRF, "Film mit Audiodeskription", "Testfilm2", FILM_NAME_ONLINE); - final DatenFilm film3 = createTestFilm(Const.ARD, "Film mit Audiodeskription", "Testfilm mit Audiodeskription", FILM_NAME_ONLINE); - listToAdd.add(film1); - listToAdd.add(film2); - listToAdd.add(film3); - - AddToFilmlist target = new AddToFilmlist(list, listToAdd); - target.addOldList(); - - Assertions.assertThat(list).hasSize(5) - .anySatisfy(film -> checkFilmThemaAndTitle(film, "Film", "Testfilm (Staffel 1) (Audiodeskription)")) - .anySatisfy(film -> checkFilmThemaAndTitle(film, "Film", "Testfilm2 (Audiodeskription)")) - .anySatisfy(film -> checkFilmThemaAndTitle(film, "Film mit Audiodeskription", "Testfilm mit Audiodeskription")); - } - @Test public void testReplaceTimeOnlyInOrfTopic() { listToAdd.add(createTestFilm(Const.ORF, "ZIB 7:00", "ZIB 7:00", FILM_NAME_ONLINE)); @@ -528,37 +465,6 @@ public void testArdTagesschau24EntriesNotAdded() { assertEquals(Const.ARD, testFilmArdOk.arr[DatenFilm.FILM_SENDER]); } - @Test - public void testArdTagesschau24UpdateSender() { - final DatenFilm testFilmArd24 = createTestFilm(Const.ARD, "tagesschau24", "film title", FILM_NAME_ONLINE); - listToAdd.add(testFilmArd24); - - AddToFilmlist target =new AddToFilmlist(list, listToAdd); - target.addOldList(); - - assertEquals(list.size(),3); - assertTrue(list.contains(testFilmArd24)); - assertEquals(Const.TAGESSCHAU24, testFilmArd24.arr[DatenFilm.FILM_SENDER]); - } - - @Test - public void testZdfReplaceAdDeutWithAudiodescription() { - final DatenFilm testFilm1 = createTestFilm(Const.ZDF, "Filme ZDF", "Film1(deu-ad)", FILM_NAME_ONLINE); - final DatenFilm testFilm2 = createTestFilm(Const.ZDF_NEO, "Filme Neo", "Film2(deu-ad)", FILM_NAME_ONLINE); - final DatenFilm testFilm3 = createTestFilm(Const.ARD, "Filme ARD", "Film3(deu-ad)", FILM_NAME_ONLINE); - listToAdd.add(testFilm1); - listToAdd.add(testFilm2); - listToAdd.add(testFilm3); - - AddToFilmlist target =new AddToFilmlist(list, listToAdd); - target.addOldList(); - - assertEquals(list.size(),5); - assertEquals("Film1 (Audiodeskription)", testFilm1.arr[DatenFilm.FILM_TITEL]); - assertEquals("Film2 (Audiodeskription)", testFilm2.arr[DatenFilm.FILM_TITEL]); - assertEquals("Film3 (Audiodeskription)", testFilm3.arr[DatenFilm.FILM_TITEL]); - } - private static DatenFilm createTestFilm(String sender, String topic, String title, String filmUrl) { DatenFilm film = new DatenFilm(sender, topic, "url", title, baseUrl + filmUrl, "", "", "", 12, From f24f935dffad092a7fd401a423ecda5410d07857 Mon Sep 17 00:00:00 2001 From: pidoubleyou <22942659+pidoubleyou@users.noreply.github.com> Date: Sun, 12 Apr 2026 21:57:43 +0200 Subject: [PATCH 2/2] remove srfpod code, keep it for local testing --- .../java/mServer/crawler/FilmeSuchen.java | 2 +- .../crawler/sender/MediathekDummySrfPod.java | 19 ++ .../crawler/sender/MediathekSrfPod.java | 289 ------------------ 3 files changed, 20 insertions(+), 290 deletions(-) create mode 100644 src/main/java/mServer/crawler/sender/MediathekDummySrfPod.java delete mode 100644 src/main/java/mServer/crawler/sender/MediathekSrfPod.java diff --git a/src/main/java/mServer/crawler/FilmeSuchen.java b/src/main/java/mServer/crawler/FilmeSuchen.java index f21a22b7c..1dcc64fbb 100644 --- a/src/main/java/mServer/crawler/FilmeSuchen.java +++ b/src/main/java/mServer/crawler/FilmeSuchen.java @@ -111,7 +111,7 @@ public FilmeSuchen() { mediathekListe.add(new SrfCrawler(this, 1)); } if (crawlerList.contains("SRFPOD")) { - mediathekListe.add(new MediathekSrfPod(this, 1)); + mediathekListe.add(new MediathekDummySrfPod(this, 1)); } if (crawlerList.contains("ORF")) { mediathekListe.add(new OrfOnCrawler(this, 1)); diff --git a/src/main/java/mServer/crawler/sender/MediathekDummySrfPod.java b/src/main/java/mServer/crawler/sender/MediathekDummySrfPod.java new file mode 100644 index 000000000..c5080489b --- /dev/null +++ b/src/main/java/mServer/crawler/sender/MediathekDummySrfPod.java @@ -0,0 +1,19 @@ +package mServer.crawler.sender; + +import de.mediathekview.mlib.Const; +import mServer.crawler.FilmeSuchen; + +public class MediathekDummySrfPod extends MediathekReader implements Runnable { + + public final static String SENDERNAME = Const.SRF_PODCAST; + + public MediathekDummySrfPod(FilmeSuchen ssearch, int startPrio) { + super(ssearch, SENDERNAME,/* threads */ 2, /* urlWarten */ 200, startPrio); + } + + @Override + protected void addToList() { + // empty because dummy crawler + meldungThreadUndFertig(); + } +} diff --git a/src/main/java/mServer/crawler/sender/MediathekSrfPod.java b/src/main/java/mServer/crawler/sender/MediathekSrfPod.java deleted file mode 100644 index 89de2584c..000000000 --- a/src/main/java/mServer/crawler/sender/MediathekSrfPod.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * MediathekView - * Copyright (C) 2008 W. Xaver - * W.Xaver[at]googlemail.com - * http://zdfmediathk.sourceforge.net/ - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package mServer.crawler.sender; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -import de.mediathekview.mlib.Config; -import de.mediathekview.mlib.Const; -import de.mediathekview.mlib.daten.DatenFilm; -import de.mediathekview.mlib.tool.Log; -import de.mediathekview.mlib.tool.MSStringBuilder; -import mServer.crawler.FilmeSuchen; -import mServer.crawler.GetUrl; - -public class MediathekSrfPod extends MediathekReader implements Runnable { - - public final static String SENDERNAME = Const.SRF_PODCAST; - private MSStringBuilder seite = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER); - - public MediathekSrfPod(FilmeSuchen ssearch, int startPrio) { - super(ssearch, SENDERNAME,/* threads */ 2, /* urlWarten */ 200, startPrio); - } - - @Override - public void addToList() { - //Liste von http://www.sf.tv/podcasts/index.php holen - //http://www.podcast.sf.tv/Podcasts/al-dente - // class="" href="/Podcasts/al-dente" rel="2" > - final String MUSTER_1 = "value=\"http://feeds.sf.tv/podcast"; - final String MUSTER_2 = "value=\"http://pod.drs.ch/"; - String addr1 = "http://www.srf.ch/podcasts"; - listeThemen.clear(); - meldungStart(); - GetUrl getUrlIo = new GetUrl(getWartenSeiteLaden()); - seite = getUrlIo.getUri_Utf(getRunIdentifier(), SENDERNAME, addr1, seite, ""); - int pos = 0; - int pos1; - int pos2; - String url = ""; - while (!Config.getStop() && (pos = seite.indexOf(MUSTER_1, pos)) != -1) { - pos += MUSTER_1.length(); - pos1 = pos; - pos2 = seite.indexOf("\"", pos); - if (pos1 != -1 && pos2 != -1) { - url = seite.substring(pos1, pos2); - url = "http://feeds.sf.tv/podcast" + url; - } - if (url.isEmpty()) { - Log.errorLog(698875503, "keine URL"); - } else { - String[] add = new String[]{url, ""}; - listeThemen.addUrl(add); - } - } - pos = 0; - while (!Config.getStop() && (pos = seite.indexOf(MUSTER_2, pos)) != -1) { - pos += MUSTER_2.length(); - pos1 = pos; - pos2 = seite.indexOf("\"", pos); - if (pos1 != -1 && pos2 != -1) { - url = seite.substring(pos1, pos2); - url = "http://pod.drs.ch/" + url; - } - if (url.isEmpty()) { - Log.errorLog(698875503, "keine URL"); - } else { - String[] add = new String[]{url, ""}; - listeThemen.addUrl(add); - } - } - if (Config.getStop()) { - meldungThreadUndFertig(); - } else if (listeThemen.isEmpty()) { - meldungThreadUndFertig(); - } else { - meldungAddMax(listeThemen.size()); - for (int t = 0; t < getMaxThreadLaufen(); ++t) { - //new Thread(new ThemaLaden()).start(); - Thread th = new ThemaLaden(); - th.setName(SENDERNAME + t); - th.start(); - } - } - } - - private class ThemaLaden extends Thread { - - private final GetUrl getUrl = new GetUrl(getWartenSeiteLaden()); - private MSStringBuilder seite = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER); - - @Override - public void run() { - try { - meldungAddThread(); - String link[]; - while (!Config.getStop() && (link = listeThemen.getListeThemen()) != null) { - meldungProgress(link[0] /* url */); - addFilme(link[1], link[0] /* url */); - } - } catch (Exception ex) { - Log.errorLog(286931004, ex); - } - meldungThreadUndFertig(); - } - - private void addFilme(String thema, String strUrlFeed) { - //al dente - Podcasts - Schweizer Fernsehen - //

al dente vom 28.06.2010

- //
  • "; - final String MUSTER_THEMA_2 = ""; - final String MUSTER_URL_1 = "url=\"http://"; - final String MUSTER_DATE = ""; - final String MUSTER_DURATION = ""; - final String MUSTER_DESCRIPTION = ""; - final String MUSTER_IMAGE = " - int pos3 = seite.indexOf(MUSTER_IMAGE); - if (pos3 != -1) { - pos3 += MUSTER_IMAGE.length(); - int pos4 = seite.indexOf("\"", pos3); - if (pos4 != -1) { - image = seite.substring(pos3, pos4); - } - } - while ((pos = seite.indexOf(MUSTER_THEMA_1, pos)) != -1) { //start der Einträge, erster Eintrag ist der Titel - pos += MUSTER_THEMA_1.length(); - pos1 = pos; - int pos5; - String d = ""; - if ((pos5 = seite.indexOf(MUSTER_DURATION, pos)) != -1) { - pos5 += MUSTER_DURATION.length(); - if ((pos2 = seite.indexOf("= 0; i--) { - duration += Long.parseLong(parts[i]) * power; - power *= 60; - } - } else { - // unfortunately the duration tag can be empty :-( - duration = Long.parseLong(d); - } - } catch (Exception ex) { - Log.errorLog(915263987, "d: " + d); - } - } - } - } - if (duration == 0) { - if (!d.equals("0")) { - Log.errorLog(915159637, "keine Dauer"); - } - } - if ((pos5 = seite.indexOf(MUSTER_DESCRIPTION, pos)) != -1) { - pos5 += MUSTER_DESCRIPTION.length(); - if ((pos2 = seite.indexOf("Mon, 03 Jan 2011 17:06:16 +0100 - try { - SimpleDateFormat sdfIn = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US); - Date filmDate = sdfIn.parse(datum); - SimpleDateFormat sdfOut; - sdfOut = new SimpleDateFormat("dd.MM.yyyy"); - datum = sdfOut.format(filmDate); - } catch (Exception ex) { - Log.errorLog(649600299, ex); - } - return datum; - } - - private String convertTime(String zeit) { - //Mon, 03 Jan 2011 17:06:16 +0100 - try { - SimpleDateFormat sdfIn = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US); - Date filmDate = sdfIn.parse(zeit); - SimpleDateFormat sdfOut; - sdfOut = new SimpleDateFormat("HH:mm:ss"); - zeit = sdfOut.format(filmDate); - } catch (Exception ex) { - Log.errorLog(663259004, ex); - } - return zeit; - } - -}