All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mServer.crawler.sender.MediathekSrfPod Maven / Gradle / Ivy

There is a newer version: 3.1.64
Show newest version
/*
 * 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(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; } }




  • © 2015 - 2025 Weber Informatics LLC | Privacy Policy