Code Monkey home page Code Monkey logo

mserver's Introduction

License: GPL v3 Build and test Quality Gate Status

MediathekView

Das Programm MediathekView durchsucht die Mediatheken verschiedener überwiegend deutschsprachiger öffentlich-rechtlicher Sender, lädt Beiträge daraus herunter oder spielt diese ab (mit VLC Media Player oder mit einem Programm eigener Wahl). Es können auch Sendereihen/Serien abonniert werden.

MediathekView 13.6.0

Sender

Derzeit werden die Mediatheken der folgenden Sender unterstützt:

  • ARD (Das Erste)
    • alpha
    • BR (Bayerischer Rundfunk)
    • HR (Hessischer Rundfunk)
    • MDR (Mitteldeutscher Rundfunk)
    • NDR (Norddeutscher Rundfunk)
    • RBB (Rundfunk Berlin-Brandenburg)
    • rbtv (radiobremen)
    • SR (Saarländischer Rundfunk)
    • SWR (Südwestrundfunk)
    • WDR (Westdeutscher Rundfunk)
  • ZDF (Zweites Deutsches Fernsehen)
    • ZDFinfo
    • ZDFneo
    • zdf-tivi
  • Gemeinschaftsprogramme von ARD und ZDF
    • 3Sat
    • Arte (deutsch, englisch, französisch, spanisch, italienisch und polnisch)
    • Funk
    • Kika (Kinderkanal von ARD und ZDF)
    • Phoenix
  • DW TV (Deutsche Welle)
  • ORF (Österreichischer Rundfunk)
  • SRF (Schweizer Rundfunk) inkl. Podcasts

Installation

MediathekView wird in mehreren Paketen auf der Webseite angeboten. , darunter Installer für Windows & Linux. Zusätzlich zu den Installern sind auch Portable Varianten vorhanden z.B. als Zip oder tar.gz. Diese Pakete beinhalten bereits die benötigte Java Version, Java muss also nicht installiert sein.
Für RPM-basierte Linux Pakete steht auch ein GPG Key zur Verfügung, mit dem das RPM-Pakete anhand seiner Signatur verifiziert werden kann. Dieser kann mit diesem Kommando importiert werden:

sudo rpm --import https://download.mediathekview.de/stabil/MediathekView-rpm-signature-2021.pub

macOS: Für macOS werden fertige DMG-Images sowohl für Intel als auch Apple Silicon Rechner angeboten.

Bedienung

Siehe Anleitung

Support

Bei Fragen, Hilfe, gesuchten Sendungen oder sonstigen bitte das Forum verwenden.

Für Bugs siehe Contribution Guide.

See / Siehe Contribution Guide

Lizenz / License

GPL v3

Links

Credits

mserver's People

Contributors

alex1702 avatar bjoerns1983 avatar codingpf avatar criztovyl avatar derreisende77 avatar kaklakariada avatar lookshe avatar nicklas2751 avatar pidoubleyou avatar thesasch avatar xaverw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mserver's Issues

ZDF Crawler auf JSON-API umstellen

Der ZDF-Crawler verarbeitet für die Liste der Sendungen HTML-Seiten, für die Film-Details JSON-Responses. Das Parsen erfolgt jeweils über String-Zerlegungen.

Ziel des Issues:

  1. Umstellung der Liste der Sendungen auf JSON
  2. Parsen der JSON-Responses mittels Standard JSON-Parser

Infrastruktur für Tests

Bei den Refactorings sind einige Fehler passiert.
Wenn wir UnitTests bzw. Integrationstests hätten, könnten Fehler bereits frühzeitig festgestellt werden.

Dieser Issue soll die Infrastruktur für die Ausführung von Tests herstellen:

  • JUnit integrieren
  • Gradle-Targets für das Ausführen der Tests
  • Beispielhafter Test für Request an Mediathek

noch zu ergänzen...

Libraries aus Unterverzeichnis statt jcenter verwenden

Hallo zusammen,

aus leidlicher Erfahrung und weil ich möchte, dass das Projekt noch lange läuft, würde ich mir wünschen, wenn die Libraries nicht aus irgendwelchen zentralen Repositories verwendet werden, sondern Kopien der Libs, die jetzt auch schon beiliegen, eingebunden werden. Wenn dies nicht gemacht wird, sollte wenigstens über ein eigenen Repository-Proxy sichergestellt sein, dass die Libraries auch längere Zeit verfügbar sind.

Gleiches sollte natürlich auch für MSearch gelten, wo ich leider keinen Issue eröffnen konnte.

Anbindung von AWS für Upload

Die sog. Cloud ist immer mehr im kommen und das zu recht. Bei Anbietern wie Amazon mit der AWS ist sehr einfach geworden sich schnell genau die Leistung zu holen die man gerade benötigt und nur für das zu bezhalen was man tatsächlich verwendet. Amazon ist mit der AWS aktueller Markführerer, eine Recheninstanz der AWS (EC2) kann zwar über Umwege via s3fs und co direkt Dateisystem mäßig auf eine Speicherinstanz (S3) zugreifen so, dass man eine Filmliste in den S3 Speicher-Bucket ablegen kann aber das ist nicht gerade die saubere Art und weise. Amazon bietet für die AWS einfache Schnitstellen und SDKs für die verschiedensten Programmiersprachen an darunter auch Java.

Lange rede kurzer Sinn um zu ermöglichen, dass die vom MServer erstellten Filmlisten einfach und sauber in einem S3 Bucket abgelegt werden können wäre es gut, eine neue Upload möglichkeit hinzuzufügen welche auf die AWS S3 API zugreift und diese zum Upload nutzt.

Zur Umsetzung sollte dies hilfreich sein:

Eine Konfiguration könnte dann so aussehen:

<upload>
    <upload-art>aws</upload-art>
    <upload-liste>diff,akt</upload-liste>
    <upload-dest-dir>filmlisten</upload-dest-dir>
    <upload-aws-bucket-name>mserver</upload-aws-bucket-name>
    <upload-aws-access-key-id>ABC123</upload-aws-access-key-id>
    <upload-aws-secret-access-key>123AbC</upload-aws-secret-access-key>
</upload>

Geoblockierte Sendungen der Dritten werden unterm Sender ARD nicht richtig gekennzeichnet

Ich habe heute gesehen, daß mindestens einige geoblockierten Sendungen der Regionalen nicht richtig unter dem Sender, "Das Erste" (ARD), gekennzeichnet werden. (Ich sah keine Möglichkeit, #54 wieder aufzumachen ...)

Im DL-Reiter sah es so aus:
ndr_geo


Im Filme-Reiter ist zu sehen, daß MDR-Inhalt auch getroffen ist:
ndr_geo_2

Anmerkung. Als Neuigkeit in MV 13.0.0/13.0.1 fehlt das neu implementierte Verhalten der Abo-Eintragung, wobei der Geo-Standort geachtet, bzw. in Betracht gezogen, wird.

ZDF-Crawler "Abmeldung" nicht zuverlässig

Der ZDF-Crawler meldet sich offensichtlich nicht in allen Fällen korrekt "ab", wenn die Suche beendet ist.
Dies führt dazu, dass auf die Beendigung des letzten Crawlers gewartet wird, obwohl keiner mehr aktiv ist.

Laut Log ist der ZDF-Crawler fertig:

-------------------------------------------------------------------------------------
Fertig ZDF: 22:07:28 Uhr, Filme: 112
     -> Dauer[Min]: 1
     ->       Rest: 
-------------------------------------------------------------------------------------

Wenn die maximale Wartezeit abgelaufen ist, wird versucht alles zu beenden:

****************************
* Fehlernr: 915147623
* Fehler(MServer): mServer.search.MserverSearch
*           Der letzte Suchlauf läuft noch
****************************
o  
o  
o  ================================
o  ================================
o  und wird jetzt gestoppt
o  Zeit: 21.02.2017 22:11:13
o  ================================
o  ================================

Verbesserte Fehlerbehandlung für fehlende Konfigdatei

Durch #36 ist mir aufgefallen, dass man die Fehlerbehandlung bei einer fehlenden Konfigdatei verbessern könnte. Anstatt nur das fehlen als Fehler anzumerken könnte man dem Benutzer die möglichkeit bieten, eine Standard Konfiguration erzeugen zu lassen. Hierzu kann man z.B. im Fehlertext anzeigen:

... um eine Standard Konfiguration zu generieren starten Sie das Programm erneut mit -genconf

Hotfix ZDF Crawl-Zeitraum zu kurz

Wie durchs Forum bekannt wurde ist der aktuelle ZDF Crawlerzeitraum zu kurz. Aktuell ist dieser auf bis zu 3 Tage in die Zukunft ausgelegt. Dies sollte auf mindestens einen Monat verlängert werden.

Geo-Eigenschaften der ZDF-Einträge nicht korrekt

Wie von @zxsd in einem Kommentar geschrieben, sind die Geo-Eigenschaften der ZDF-Einträge häufig nicht korrekt.

Aktuell werden die Geo-Eigenschaften für das ZDF anhand der URL ermittelt. Dabei sind aber nicht alle Hosts, die das ZDF vermutlich für Load Balancing nutzt, berücksichtigt.

In den JSON-Strukturen für die Downloads sind die notwendigen Informationen enthalten:
{
"attributes" : {
"geoLocation" : {
"profile" : "http://zdf.de/rels/streams/ptmd/attributes/attribute",
"value" : "dach"
},
....

Für das ZDF sollte die Logik von URL auf JSON-Struktur umgebaut werden.

Unsupported major.minor version 52.0 (java.lang.UnsupportedClassVersionError: mServer/Main)

Wenn ich das Release 2.5.2 als TAR herunterladen, entpacke und ./STARTEN__MServer.sh ausführe, erhalte ich dies. Ich verwende Debian 8 (Lite, also keine GUI) und die Packages default-jre und default-jdk sind installiert.

root@debian-1:~/mserver$ ./STARTEN__MServer.sh %% und Tschuess %% ----------------------------------------- root@debian-1:~/mserver$ Exception in thread "main" java.lang.UnsupportedClassVersionError: mServer/Main : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:803) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) ^C

Was muss ich an meiner Installation verändern, damit es funktioniert?

Danke.

ZDF: Requests liefern 403

Seit 20.02. Abends werden keine neuen Filme für das ZDF in die Filmliste aufgenommen (siehe Forum).

Ursache: Requests zur Ermittlung der "Download"-Infos liefern Returncode 403.

Analyse hat ergeben, dass für die Authentifizierung dieser Requests ein anderer Key verwendet werden muss. Die anderen Requests (Suche und Film-Details) funktionieren mit dem bisherigen Key.

Crawler läuft seit 2.5.0 nicht mehr sauber

Seit Version 2.5.0 scheint der Crawler, zumindest bei mir nicht mehr ganz sauber zu laufen und zumindest die beiden morgendlichen Läufe scheinen ein Problem zu haben und keine Filmlisten zu erzeugen.
Ich denke mal, dass es mit folgender Ausgabe etwas zu tun hat. Gerade die morgendlichen langen Läufe werden irgendwann einfach hart angehalten und das geht seit der Umstellung scheinbar nicht mehr sauber.

java.lang.ThreadDeath
at java.lang.Thread.stop(Thread.java:850)
at mServer.search.MserverSearch.filmeSuchen(MserverSearch.java:127)
at mServer.MServer.laufen(MServer.java:125)
at mServer.tool.MserverTimer.ping(MserverTimer.java:36)
at mServer.tool.MserverTimer.run(MserverTimer.java:43)
at java.lang.Thread.run(Thread.java:745)

Logfiles habe ich mal hier bereitgestellt:
www.thehappy.de/~lookshe/pub/MSearch__2017.02.07.log
http://www.thehappy.de/~lookshe/pub/MvServer__2017.02.06.log
http://www.thehappy.de/~lookshe/pub/direct__2017.02.06.log

Meine spontane Vermutung: Mit dem neu eingesetzten Framework für das Threading reicht folgende Zeile wohl nicht aus um alle Exceptions sauber zu fangen und irgendwas hängt sich auf https://github.com/mediathekview/MServer/blob/master/src/main/java/mServer/search/MserverSearch.java#L130

[Frage] Wie sieht die Crawler-Infrastruktur aus?

Ich versuche mir gerade eine Überblick zu machen, wie die Infrastruktur aussieht. Wie und wo sind denn die Crawler?

Ich finde das Programm ist eine Bereicherung und würde, wenn ich die Zusammenhänge verstehe, evtl. in Erwägung ziehen, die Maintenanceaufwand und die Kosten zu senken. (Bringe langjährige Java-Dev- und einiges an Automatisierungerfahrung mit).

mfg Lars

Verwendung von Dependency Injection/Inversion of Control?

Bei der Implementierung der ersten UnitTests ist mir aufgefallen, dass das isolierte Testen von einzelnen Funktionen teilweise schwierig ist, da viele direkte Abhängigkeiten existieren (z.B. zu dem ZDFClient und zu statischen Methoden wie FileSize)

Vor diesem Hintergrund die Frage, ob die Verwendung von Dependency Injection bzw. Inversion of Control-Pattern eine Option für MServer und auch die anderen Komponenten ist.
Meiner Meinung nach ist das ein gutes Pattern, um kleine, testbarere Einheiten zu erhalten.

Allgemeine Verbersserungen der Crawler

Im Anschluss an #39 und #32 geht es nun daran, allgemein die Crawler zu überarbeiten. Das nun bereits zum Einsatzkommende Fork-Join Framework bietet sich an um die Arbeit des Crawlers zu beschleunigen. Außerdem sollten bisherige alles ist statisch und in einer Klasse, Klassen lieber in einzelne kleine DTOs (Data-Transfer-Objects) um so u.a. die Kapselung zu wahren und die Stabilität zu erhöhen. Außerdem sollte mehr Modularität bzw. Wiederverwendbarkeit angestrebt werden ums so die Wartung der einzelnen Crawler zu minimieren. Einige dieser Dinge wurden mit #32 und #39 bereits für das ZDF begonnen.

`./gradlew run` fails

Folgender output wenn ich ./gradlew run ausführe

:MSearch:compileJava UP-TO-DATE
:MSearch:updateVersion
:MSearch:processResources UP-TO-DATE
:MSearch:classes UP-TO-DATE
:MSearch:run
Error: Could not find or load main class mSearch.Main
:MSearch:run FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':MSearch:run'.
> Process 'command '/usr/lib/jvm/java-8-openjdk/bin/java'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 0.877 secs

Ich benutze Archlinux und möchte gerne den Server von der Kommandozeile aus kompilieren und starten. Ich kenne gradle nicht und benutze es zum ersten Mal. Meine Intuition sagt mir, dass das Subprojekt MSearch vielleicht nur gebaut aber gar nicht ausgeführt werden soll?

Der Befehl gradew run ausgeführt im Projekt MSearch schlägt mit der gleichen Fehlermeldung fehl. Es gibt auch gar keine Klasse Main im Projekt MSearch stimmts?

Was tun?

test_performance branch nach develop mergen

Ich habe für MSearch und MServer den branch test_performance erzeugt und bei @xaverW und @alex1702 im Test.
Daher die Frage: Sollen die branches gemerged werden oder soll ich die Arbeit daran einstellen und sie löschen.
Aus meiner Sicht ist der branch server deutlich schneller als der bisherige und sollte zukünftig weiterentwickelt werden. Auch das einfügen der alten Filmlisten ist bedeutend schneller geworden. Die Laufzeiten sind bei meinen Test im Schnitt 40% kürzer als bisher.
Im aktuellen branch sind alle Änderungen Stand heute reingemerged.

Film ("Wilsberg") aus ZDFNeo nicht in Filmliste

Hallo in die Runde,
erstmal freut es mich, dass es mit MediathekView weitergeht. Als bekennender Fan der Krimireihe "Wilsberg" vom ZDF stellt sich mir aktuell die Frage, warum die Folge "Doktorspiele" Austrahlung 28.12.2016 um 21.45 MEZ auf ZDFNeo nicht in MediathekView gelistet wird. In der ZDF Mediathek ist das Video bis zum 28.03.2017 verfügbar. Die Folge "Gefahr im Verzug" Ausstrahlung am 28.12.2016 wird gelistet, wenn auch unter einem anderen Datum. Die Folge "Mord und Beton" Ausstrahlung 27.12.2016 ebenfalls auf ZDFNeo wird korrekt aufgeführt.

Derzeit läuft bei mir MediathekView12 auf Win7 64bit.

Wäre schön, wenn es für das Problem eine Lösung gäbe.
screen

MfG

Alpha-Centauri (ARD): "master.m3u8?__b__=200)" startet falsches Hilfsprogramm

Bei den Alpha-Centauri-Sendungen der ARD wird fälschlicherweise der letzte Teil der URL nach ".m3u8" nicht entfernt, was beim Download VLC statt FFmpeg startet. Beispielsendung und Details im Forum.

Da durch die Verwendung des Master-Links (master.m3u8) satt eines Links mit definierter Qualität (z.B. index_4_av.m3u8) die Auflösung nicht fixiert ist, ist eine Speicherung nur im TS-Container möglich (statt einer MP4-Datei). MP4-Dateien (via FFmpeg) erhält man, wenn man wie beim SRF/WDR die Auflösung definiert (z.B. index_4_av.m3u8).

Hinweis: Die meisten Alpha-Centauri-Sendungen finden sich zwar auch beim BR (wo der DL problemlos klappt). Es gibt aber immer wieder Sendungen (auch aktuelle), die nur bei einem der 2 Sender zu finden sind.

Fehler beim gradle-Import in Eclipse

Synchronize Gradle builds with workspace failed due to an unexpected error.
Cannot nest 'MServer/src/main/java' inside 'MServer/src'. To enable the nesting exclude 'main/' from 'MServer/src'
Java Model Exception: Java Model Status [Cannot nest 'MServer/src/main/java' inside 'MServer/src'. To enable the nesting exclude 'main/' from 'MServer/src']
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:786)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3097)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3059)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3112)
	at org.eclipse.buildship.core.workspace.internal.SourceFolderUpdater.updateClasspath(SourceFolderUpdater.java:234)
	at org.eclipse.buildship.core.workspace.internal.SourceFolderUpdater.updateClasspath(SourceFolderUpdater.java:82)
	at org.eclipse.buildship.core.workspace.internal.SourceFolderUpdater.update(SourceFolderUpdater.java:261)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeOpenJavaProject(SynchronizeGradleBuildOperation.java:223)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeOpenWorkspaceProject(SynchronizeGradleBuildOperation.java:213)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.addExistingEclipseProjectToWorkspace(SynchronizeGradleBuildOperation.java:258)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeNonWorkspaceProject(SynchronizeGradleBuildOperation.java:245)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeGradleProjectWithWorkspaceProject(SynchronizeGradleBuildOperation.java:179)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeGradleBuildWithWorkspace(SynchronizeGradleBuildOperation.java:141)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.access$000(SynchronizeGradleBuildOperation.java:106)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation$1.run(SynchronizeGradleBuildOperation.java:123)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:724)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5521)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5478)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.run(SynchronizeGradleBuildOperation.java:120)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.synchronizeBuild(SynchronizeGradleBuildsJob.java:79)
	at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.runToolingApiJob(SynchronizeGradleBuildsJob.java:69)
	at org.eclipse.buildship.core.util.progress.ToolingApiJob$1.run(ToolingApiJob.java:73)
	at org.eclipse.buildship.core.util.progress.ToolingApiInvoker.invoke(ToolingApiInvoker.java:63)
	at org.eclipse.buildship.core.util.progress.ToolingApiJob.run(ToolingApiJob.java:70)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

Sendereihe Abkürzung **vorsichtig** ins ZDF-Crawling-Verfahren miteinbeziehen



Betr: mediathekview/MediathekView#149

Eine Stunde nach meinem früheren Issue habe immer noch fast keine Ahnung wie man vorgehen soll, also wieder versuchsweise eingereicht ...

Diesmal aber mit einer ausdrücklichen Bitte ...

Nicht implementieren bis die Möglichkeit vorhanden ist, die Auswirkung der beschriebenen Änderung außerhalb des Live-Verfahrens testen, betrachten, und beurteilen zu lassen. Ein kleiner Kreis von erfahrenen Usern sollte vor der Inbetriebnahme dieser Art von Änderung unbedingt im vollen Ausmaß abseits (off the beaten path auf Englisch) testen. Ich habe ORF und ZDF geohrfeigt, weil diese Sender deren Live-Infrastruktur fürs Testing eingesetzt haben. So was darf mit MV nicht vorkommen!

Es ist nicht abzuschätzen, wie viele Abos derzeit im Betrieb sind. Ich bin mir aber sicher, daß MV-Anwender die ZDF-Abos angelegt haben, die jetzigen Themen und vielleicht anderen Filmliste-Attributen acht geschenkt haben. Die Rubriken die sich jetzt in Abos befinden können, dürfen nicht 'einfach so' ersetzt werden.

Das Workflow beschreibt bestimmt wie Neuerungen sorgfältig und vorsichtig, den normalen Betrieb nicht störend, zu testen sind. Wenn nicht, soll dieses Issue halt offen bleiben. bis wir als Projekt soweit sind.

...

Also zum Issue selbst ... welches früher im MV-Forum erschienen ist.

Seit der Umstellung 'landen' Sendungen öfter nur in Sammelthemen, als früher der Fall war. Problemen wurden gemeldet, beispielsweise mit Abos oder Episoden überhaupt zu finden.

Als Ergänzung, bzw., Ausweichlösung (fallback auf Englisch) der jetzigen Logik, die das Thema ermittelt, könnte vielleicht von einer Zeichenkette in der Dateinamen Gebrauch gemacht werden. Gerade vor der Auflösungs-/Versions-Angaben (wie "1496k_p13v13", "2256k_p14v11" oder "3296k_p15v13") ist normalerweise eine mit Unterstrichen abgegrenzte, drei-bis-vier stellige Abkürzung (Abk.) der Sendereihe vorhanden. Zum Beispiel bedeutet "tex" ZDF-intern wohl die Sendereihe "Terra X" während "txp" "Terra Xpress" bedeutet. (ZDF-Sendungen die mit 3sat geteilt werden, können stark von diesem Muster abweichen.)

Hier ist eine Liste von Kandidaten, falls sich so was umsetzen ließe. Der junge Stand von einigen Sammelthemen ist widerspiegelt: Der Fernsehfilm der Woche, Dokumentation, Ganze Filme im ZDF, Samstagskrimis, Serien, Serien im ZDF, und Show. Meiner Meinung nach müssen die Sammelthemen besonders acht geschenkt werden ... Merkmale von diesen zu ändern, könnte in ungeahntem Ausmaß Abos von vielen MV-Anwendern (ohne Absicht) beeinflussen. Vollständig/autoritativ ist die untenstehende Liste lange nicht, aber als Anfang, vielleicht geeignet.

    bel  --> Bella Block
    afe  --> Auf der Flucht
    bet  --> Bettys Diagnose
    chf  --> Die Chefin
    dls  --> Letzte Spur Berlin   (Die Sendereihe hieß früher, "Die letzte Spur.")
    dlz  --> Der letzte Zeuge
    dks  --> Das kleine Fernsehspiel
    dkm  --> Der Kommissar und das Meer
    drk  --> Dr. Klein
    dsh  --> Deutschlands Superhirn
    dof  --> Filmdonnerstag (siehe fad auch)
    dok  --> Dokumentation
    egf  --> Ein guter Grund zu feiern
    ete  --> Ein starkes Team
    fad  --> Filmdonnerstag (siehe dof auch)
    fdw  --> Der Fernsehfilm der Woche
    ffz  --> Ein Fall für zwei
    gsi  --> GSI Spezialeinheit Göteborg
    hel  --> Heldt
    his  --> ZDF-History
    hzb  --> Herzensbrecher
    inf  --> ZDFinfo
    kbe  --> Kommissar Beck
    klu  --> Kommissarin Lucas
    koh  --> Kommissarin Heller
    kue  --> Küstenwache
    lll  --> Lafer!Lichter!Lecker!
    mau  --> Marie Brand und ...
    mdh  --> Mordshunger
    mmo  --> München Mord
    mtk  --> Mich täuscht keiner!
    neo  --> ZDFneo   (selten ... aber siehe Sammelthema Dokumentation)
    nhk  --> Notruf Hafenkante
    nnm  --> Clüvers Geheimnis
    rhc  --> Die Rosenheim-Cops
    sak  --> Schwarzach 23  (siehe aber Stralsund von 2016.10.29, "Vergeltung" ... Stralsund scheint ein Fehler zu sein)
    sof  --> Filme
    ************
    sok1 --> SOKO München   ("SOKO München" und "SOKO 5113" scheint gleichbedeutend zu sein ...
    sok1 --> SOKO 5113      ... wobei "SOKO München" wohl bevorzugt werden soll (siehe z.B., https://www.zdf.de/serien/soko-muenchen/wasserratten-102.html)
    ************
    sok2 --> SOKO Kitzbühel
    sok3 --> SOKO Köln
    sok4 --> SOKO Leipzig
    sok6 --> SOKO Wien
    sok7 --> SOKO Wismar
    sok8 --> SOKO Stuttgart
    sta  --> Der Staatsanwalt
    str  --> Stralsund
    uvd  --> Unter Verdacht
    vks  --> Volle Kanne
    wil  --> Wilsberg
    zei  --> ZDFzeit
    zdj  --> Zeugen des Jahrhunderts
    zeu  --> Zeitzeuge

UnknownHostException beim Durchlauf

java.net.UnknownHostException: www.kika.dehttps
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1890)
        at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1885)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1884)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1457)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
        at mSearch.filmeSuchen.GetUrl.getUri(GetUrl.java:148)
        at mSearch.filmeSuchen.GetUrl.getUri(GetUrl.java:82)
        at mSearch.filmeSuchen.sender.MediathekKika$ThemaLaden.ladenSerien_2(MediathekKika.java:234)
        at mSearch.filmeSuchen.sender.MediathekKika$ThemaLaden.ladenSerien_1(MediathekKika.java:209)
        at mSearch.filmeSuchen.sender.MediathekKika$ThemaLaden.run(MediathekKika.java:142)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.UnknownHostException: www.kika.dehttps
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
        at sun.net.www.http.HttpClient.New(HttpClient.java:308)
        at sun.net.www.http.HttpClient.New(HttpClient.java:326)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
        at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2943)
        at java.net.URLConnection.getContentEncoding(URLConnection.java:523)
        at mSearch.filmeSuchen.GetUrl.getUri(GetUrl.java:147)
        ... 5 more

* Fehlernr: 379861049
* Exception: www.kika.dehttps
* Fehler(MSearch): GetUrl.getUri
*
*           Sender: KiKA - timout: 10000 Versuche: 1
*           URL: http://www.kika.dehttps://www.mein-kika.de/gruppe/4/forum/122.html
*           Themenseite

  [ #######--- ]  88249 Seiten / 77% von 4802 Themen / Filme: 44946 / Dauer[Min]: 79 / R-Sender: 3

Diesen Fehler hab ich grad zufällig in den Logs ausgeschnappt beim max durchlauf.

CrawlerTool.java Enhancement

Noch eine Geo-Url beim ARD ...
http://pd-videos.daserste.de/de/
... soll zu unten Zitierten wohl hinzugefügt werden:

public static void setGeo(DatenFilm film) {
        switch (film.arr[DatenFilm.FILM_SENDER]) {
            case Const.ARD:
            case Const.SWR:
            case Const.MDR:
            case Const.BR:
                if (film.arr[DatenFilm.FILM_URL].startsWith("http://mvideos-geo.daserste.de/") || film.arr[DatenFilm.FILM_URL].startsWith("http://media.ndr.de/progressive_geo/") || film.arr[DatenFilm.FILM_URL].startsWith("http://cdn-storage.br.de/geo/") || film.arr[DatenFilm.FILM_URL].startsWith("http://cdn-sotschi.br.de/geo/b7/") || film.arr[DatenFilm.FILM_URL].startsWith("http://pd-ondemand.swr.de/geo/de/") || film.arr[DatenFilm.FILM_URL].startsWith("http://ondemandgeo.mdr.de/") || film.arr[DatenFilm.FILM_URL].startsWith("http://ondemand-de.wdr.de/")) {
                    film.arr[DatenFilm.FILM_GEO] = DatenFilm.GEO_DE;
                }
                break;

Hier ein Beispiel von einer derartigen Geo-geblocktierter Sendung, bei welcher ich eine "403" kriege:

21300 ARD 08.01.2017 Filme im Ersten Das Traumhotel - Marokko 1323 0 1 Der umtriebige Hotelmanager Markus Winter bekommt nach einem Schwächeanfall vom Arzt eine Auszeit verordnet. In Marokko, wo seine Tochter Leonie in einem seiner Luxushotels arbeitet, will er sich ungestört erholen. Dort angekommen, erwartet Markus eine Überraschung: Seine Exfrau, Leonies Mutter, ist ebenfalls in dem Resort zu Gast. 01:28:00 15:00:00 http://www.ardmediathek.de/tv/Filme-im-Ersten/Das-Traumhotel-Marokko/Das-Erste/Video?bcastId=1933898&documentId=39852802 80|512-1.mp4 http://pd-videos.daserste.de/de/2014/10/29/4c8daf8c-f12d-4cef-9e78-79450ac9634d/960-1.mp4 1 1483884000 mSearch.daten.DatenFilm@3c2b74b5 http://www.ardmediathek.de/subtitle/42399

Release-Notes

Bei den Kommentaren zum Release unter https://github.com/mediathekview/MServer/releases/ sollte deutlich erkennbar sein, wenn sich mehr als nur die MServer.jar geändert hat, also bspw. neue Bibliotheken genutzt werden, ohne die nichts mehr korrekt läuft. Ggf. sollte diese Datei bei einem Release, dass nicht mehr durch Austausch dieser Datei zum vorherigen kompatibel ist, nicht im jeweiligen Release einzeln aufgeführt sein.

Der Grund warum ich das anspreche: Ich kann zeitlich nicht immer alle Commits verfolgen, werde aber per Mail über ein neues Release benachrichtigt, welches ich dann schnellstmöglich einspiele. Natürlich tausche ich dann einfach nur MServer.jar aus, was mit 2.5.0 jetzt plötzlich nicht mehr reichte und auch erst später durch Exceptions, welche leider nicht im Log, bzw einem speziellen Fehlerlog, sind, sondern nur auf der Konsole ausgegeben wurden.

HLS Master Playlist und MP4 Links

Quelle: mediathekview/mediathekviewweb#40

Wenn man nach "!WDR #WDR aktuell" sucht, wird in der Auswahl statt der "Master Playlist" nur die jeweilige "Variant Playlist" angezeigt. Wäre es möglich zusätzlich die Master Playlist anzuzeigen, um dann mit externen Tools (Livestreamer, Streamlink, VLC, ...) darauf zugreifen zu können?

Angezeigt wird folgendes (WDR aktuell vom 10.02.2017):

Mittel:

http://adaptiv.wdr.de/i/medp/ww/fsk0/130/1307723/,1307723_15222589,1307723_15222588,1307723_15222590,1307723_15222591,.mp4.csmil/index_2_av.m3u8

Niedrig:

http://adaptiv.wdr.de/i/medp/ww/fsk0/130/1307723/,1307723_15222589,1307723_15222588,1307723_15222590,1307723_15222591,.mp4.csmil/index_0_av.m3u8

Die Sortierung ist fehlerhaft. Playlist "index_0_av.m3u8" (512x288) hat eine höhere Auflösung als die Playlist "index_2_av.m3u8" (320x180).

Das sind allerdings nur zwei verfügbare Auflösungen. Die Master Playlist beinhaltet alle Auflösungen (auch 960x540).

http://adaptiv.wdr.de/i/medp/ww/fsk0/130/1307723/,1307723_15222589,1307723_15222588,1307723_15222590,1307723_15222591,.mp4.csmil/master.m3u8
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=529000,RESOLUTION=512x288,CODECS="avc1.77.30, mp4a.40.2"
http://adaptiv.wdr.de/i/medp/ww/fsk0/130/1307723/,1307723_15222589,1307723_15222588,1307723_15222590,1307723_15222591,.mp4.csmil/index_0_av.m3u8?null=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1661000,RESOLUTION=960x540,CODECS="avc1.77.30, mp4a.40.2"
http://adaptiv.wdr.de/i/medp/ww/fsk0/130/1307723/,1307723_15222589,1307723_15222588,1307723_15222590,1307723_15222591,.mp4.csmil/index_1_av.m3u8?null=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=177000,RESOLUTION=320x180,CODECS="avc1.66.30, mp4a.40.2"
http://adaptiv.wdr.de/i/medp/ww/fsk0/130/1307723/,1307723_15222589,1307723_15222588,1307723_15222590,1307723_15222591,.mp4.csmil/index_2_av.m3u8?null=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=310000,RESOLUTION=480x270,CODECS="avc1.66.30, mp4a.40.2"
http://adaptiv.wdr.de/i/medp/ww/fsk0/130/1307723/,1307723_15222589,1307723_15222588,1307723_15222590,1307723_15222591,.mp4.csmil/index_3_av.m3u8?null=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=56000,CODECS="mp4a.40.2"
http://adaptiv.wdr.de/i/medp/ww/fsk0/130/1307723/,1307723_15222589,1307723_15222588,1307723_15222590,1307723_15222591,.mp4.csmil/index_2_a.m3u8?null=0

Direkte Links gibt es auch.

http://ondemand-ww.wdr.de/medp/fsk0/130/1307723/1307723_15222588.mp4

Warum werden diese Links eigentlich nicht angezeigt?

Source der lib

bisher war es so, dass man in die Lib debuggen konnte, seit ein paar Wo geht das nicht mehr. Jetzt ist scheins nur noch die lib als "lib" integriert und nicht mehr das Projekt. Vielleicht lässt sich das wieder ändern, ist ziemlich störend, wenn das nicht mehr geht. Oder vielleicht lässt sich stattdessen auch der Source als jar mit integrieren??

Arte Sendung fehlt - Es Eilt etwas!

Hallo,

könnt Ihr bitte folgende Sendung möglichst mit HD in die Liste aufnehmen?

"Die Entdeckung der Riesensaurier" von Arte

Sie ist unter folgender Adresse in der ARTE +7-Mediathek zu finden:

http://www.arte.tv/guide/de/067069-000- ... sensaurier

Sie soll aber nur noch 5 Tage vorliegen, also wäre es schon relativ eilig.
Leider ist das die einzige Möglichkeit die Filme vernünftig zu sehen, wenn man nur eine geringe Bandbreite hat.

Ich möchte mich im Voraus bedanken. Vielen Dank auch für Eure unermüdliche Arbeit.
Trotzdem schöne Weihnachten und einen Guten Rutsch ins Neue Jahr!

Mit freundlichen Grüßen
Der Pechvogel0815

Sorry, habe gerade erst unter http://zdfmediathk.sourceforge.net/forum schon mal das reingesetzt, bevor ich gefunden habe, dass ich mich hier melden muss. Ich hoffe, das ist nicht schlimm.

WDR: Sendung Lokalzeit unvollständig

Folgende Bugs im WDR-Crawler für die Sendungen "Lokalzeit ..." vorhanden:

  • keine Infos über Datum, Zeit und Größe der Datei vorhanden
  • gesamte Sendung Lokalzeit nicht verfügbar (nur einzelne Beiträge)

entstanden aus Forums-Meldung

Generalüberholung des ZDF Crawlers

Um den ZDF crawler zu versimpeln, beschleunigen und zubereinigen wird dieser komplett überholt. Alte eigen Implementationen sollen, wo es sinnvoll ist, durch vorhandene und bekannte open source frameworks ersetzt werden. Beispiel einsatz von Log4J. Hauptsächlich soll hierdurch ein neuer ZDF crawler entstehen der alle ZDF Sendungen findet. U.a. soll hierfür vermehrt die JSON Api verwendet werden weshalb sehr warscheinlich ein REST client + ein fertiger OS HTML parser zum Einsatz kommen sollen.

X11 Fehler beim Starten

Folgender Fehler:
X11 connection rejected because of wrong authentication. Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65) at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82) at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:126) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at java.awt.Toolkit$2.run(Toolkit.java:860) at java.awt.Toolkit$2.run(Toolkit.java:855) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:854) at java.awt.Toolkit.getEventQueue(Toolkit.java:1734) at java.awt.EventQueue.invokeLater(EventQueue.java:1266) at mServer.Main.main(Main.java:38)
Umstieg auf normale Threads

Server läuft nicht mehr

In build.gradle fehlt wohl (bei mir läufts damit wieder):

task run(type: JavaExec, dependsOn: classes) {
    main = 'mServer.Main'
    classpath = sourceSets.main.runtimeClasspath
}

MServer kann nicht mehr gestartet werden

seit der Umstellung auf gradle kann das Programm nicht mehr gestartet werden:

./bin/MServer
Fehler: Hauptklasse mServer.Main konnte nicht gefunden oder geladen werden

java -jar MServer.jar
kein Hauptmanifestattribut, in MServer.jar

./MServer.sh
%%
%% -------------------------------------
%% Pfad: .
%% -------------------------------------
%%
Fehler: Hauptklasse mServer.Main konnte nicht gefunden oder geladen werden
%% und Tschuess
%% -----------------------------------------

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.