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

mServer.crawler.CrawlerTool Maven / Gradle / Ivy

There is a newer version: 3.1.64
Show newest version
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package mServer.crawler;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import de.mediathekview.mlib.Config;
import de.mediathekview.mlib.Const;
import de.mediathekview.mlib.daten.DatenFilm;
import de.mediathekview.mlib.tool.Functions;
import de.mediathekview.mlib.tool.Log;

/**
 *
 * @author emil
 */
public class CrawlerTool {

    public static final String nameOrgFilmlist_xz = "filme-org.xz"; // ist die "ORG" Filmliste, typ. die erste am Tag, xz komprimiert
    public static final String nameDiffFilmlist = "filme-diff.json"; // ist ein diff der aktuellen zur ORG Filmliste
    // Namen der Filmlisten im: Konfig-Ordner/filmlisten/
    public static final String nameAktFilmlist = "filme.json"; // ist die aktuelle Filmliste
    public static final String nameDiffFilmlist_xz = "filme-diff.xz"; // ist ein diff der aktuellen zur ORG Filmliste, xz komprimiert
    public static final String nameOrgFilmlist = "filme-org.json"; // ist die "ORG" Filmliste, typ. die erste am Tag
    public static final String nameAktFilmlist_xz = "filme.xz"; // ist die aktuelle Filmliste, xz komprimiert

    public static synchronized void startMsg() {
        Log.startZeit.setTime(System.currentTimeMillis());
        Log.versionMsg(Const.PROGRAMMNAME);
        Log.sysLog(Log.LILNE);
        Log.sysLog("");
        Log.sysLog("Programmpfad: " + Functions.getPathJar());
        Log.sysLog("Filmliste: " + getPathFilmlist_json_akt(true /*aktDate*/));
        Log.sysLog("Useragent: " + Config.getUserAgent());
        Log.sysLog("");
        Log.sysLog(Log.LILNE);
        Log.sysLog("");
        if (loadLongMax()) {
            Log.sysLog("Laden:  alles");
        } else {
            Log.sysLog("Laden:  nur update");
        }
        if (CrawlerConfig.updateFilmliste) {
            Log.sysLog("Filmliste:  nur updaten");
        } else {
            Log.sysLog("Filmliste:  neu erstellen");
        }
        Log.sysLog("ImportURL 1:  " + CrawlerConfig.importUrl_1__anhaengen);
        Log.sysLog("ImportURL 2:  " + CrawlerConfig.importUrl_2__anhaengen);
        Log.sysLog("ImportOLD:  " + CrawlerConfig.importOld);
        Log.sysLog("ImportAkt:  " + CrawlerConfig.importAkt);
        if (CrawlerConfig.nurSenderLaden != null) {
            Log.sysLog("Nur Sender laden:  " + StringUtils.join(CrawlerConfig.nurSenderLaden, ','));
        }
        Log.sysLog("");
        Log.sysLog(Log.LILNE);
    }

    public static boolean loadShort() {
        return CrawlerConfig.senderLoadHow == CrawlerConfig.LOAD_SHORT;
    }

    public static boolean loadLong() {
        return CrawlerConfig.senderLoadHow == CrawlerConfig.LOAD_LONG;
    }

    public static boolean loadMax() {
        return CrawlerConfig.senderLoadHow == CrawlerConfig.LOAD_MAX;
    }

    public static boolean loadLongMax() {
        return CrawlerConfig.senderLoadHow >= CrawlerConfig.LOAD_LONG;
    }

    public static String getPathFilmlist_json_org_xz() {
        return Functions.addsPfad(CrawlerConfig.dirFilme, nameOrgFilmlist_xz);
    }

    public static String getPathFilmlist_json_diff_xz() {
        return Functions.addsPfad(CrawlerConfig.dirFilme, nameDiffFilmlist_xz);
    }

    public static String getPathFilmlist_json_diff() {
        return Functions.addsPfad(CrawlerConfig.dirFilme, nameDiffFilmlist);
    }

    public static String getPathFilmlist_json_akt_xz() {
        return Functions.addsPfad(CrawlerConfig.dirFilme, nameAktFilmlist_xz);
    }

    public static String getPathFilmlist_json_org() {
        return Functions.addsPfad(CrawlerConfig.dirFilme, nameOrgFilmlist);
    }

    public static String getPathFilmlist_json_akt(boolean aktDate) {
        if (aktDate) {
            return Functions.addsPfad(CrawlerConfig.dirFilme, new SimpleDateFormat("yyyy.MM.dd__HH.mm.ss").format(new Date()) + "__" + nameAktFilmlist);
        } else {
            return Functions.addsPfad(CrawlerConfig.dirFilme, nameAktFilmlist);
        }
    }

    public static void addUrlHd(DatenFilm film, String url, String urlRtmp) {
        film.arr[DatenFilm.FILM_URL_HD] = url.isEmpty() ? "" : getKlein(film.arr[DatenFilm.FILM_URL], url);
        film.arr[DatenFilm.FILM_URL_RTMP_HD] = urlRtmp.isEmpty() ? "" : getKlein(film.arr[DatenFilm.FILM_URL_RTMP], urlRtmp);
    }

    public static void addUrlSubtitle(DatenFilm film, String url) {
        film.arr[DatenFilm.FILM_URL_SUBTITLE] = url;
    }

    public static void addUrlKlein(DatenFilm film, String url, String urlRtmp) {
        film.arr[DatenFilm.FILM_URL_KLEIN] = url.isEmpty() ? "" : getKlein(film.arr[DatenFilm.FILM_URL], url);
        film.arr[DatenFilm.FILM_URL_RTMP_KLEIN] = urlRtmp.isEmpty() ? "" : getKlein(film.arr[DatenFilm.FILM_URL_RTMP], urlRtmp);
    }

    private static String getKlein(String url1, String url2) {
        String ret = "";
        boolean diff = false;
        for (int i = 0; i < url2.length(); ++i) {
            if (url1.length() > i) {
                if (url1.charAt(i) != url2.charAt(i)) {
                    if (!diff) {
                        ret = i + "|";
                    }
                    diff = true;
                }
            } else {
                diff = true;
            }
            if (diff) {
                ret += url2.charAt(i);
            }
        }
        return ret;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy