1919 */
2020package mServer .crawler .sender ;
2121
22- import java .util .Collection ;
23- import java .util .concurrent .ExecutorService ;
24- import java .util .concurrent .ForkJoinPool ;
25- import java .util .concurrent .Phaser ;
26- import java .util .concurrent .RecursiveAction ;
27- import java .util .concurrent .TimeUnit ;
28-
2922import de .mediathekview .mlib .Config ;
3023import de .mediathekview .mlib .Const ;
3124import de .mediathekview .mlib .daten .DatenFilm ;
3225import de .mediathekview .mlib .tool .Log ;
3326import etm .core .configuration .EtmManager ;
3427import etm .core .monitor .EtmPoint ;
28+ import java .util .Collection ;
29+ import java .util .concurrent .*;
3530import mServer .crawler .CrawlerTool ;
3631import mServer .crawler .FilmeSuchen ;
3732import mServer .crawler .RunSender ;
38- import mServer .crawler .sender .newsearch .DownloadDTO ;
39- import mServer .crawler .sender .newsearch .GeoLocations ;
40- import mServer .crawler .sender .newsearch .Qualities ;
41- import mServer .crawler .sender .newsearch .VideoDTO ;
42- import mServer .crawler .sender .newsearch .ZDFSearchTask ;
43- import mServer .crawler .sender .newsearch .ZdfDatenFilm ;
33+ import mServer .crawler .sender .newsearch .*;
4434
45- public class MediathekZdf extends MediathekReader
46- {
35+ public class MediathekZdf extends MediathekReader {
4736
4837 public final static String SENDERNAME = Const .ZDF ;
4938 // public static final String URL_PATTERN_SENDUNG_VERPASST = "https://www.zdf.de/sendung-verpasst?airtimeDate=%s";
5039// public static final String[] KATEGORIE_ENDS = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0+-+9"};
5140// public static final String KATEGORIEN_URL_PATTERN = "https://www.zdf.de/sendungen-a-z/?group=%s";
52- private final ForkJoinPool forkJoinPool = new ForkJoinPool (Runtime .getRuntime ().availableProcessors () * 4 );
41+ //private final ForkJoinPool forkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors() * 4);
42+ private ForkJoinPool forkJoinPool ;
5343// private final MSStringBuilder seite = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER);
5444
55- public MediathekZdf (FilmeSuchen ssearch , int startPrio )
56- {
45+ public MediathekZdf (FilmeSuchen ssearch , int startPrio ) {
5746 super (ssearch , SENDERNAME , 0 /* threads */ , 150 /* urlWarten */ , startPrio );
5847 setName ("MediathekZdf" );
5948 }
@@ -64,10 +53,11 @@ public MediathekZdf(FilmeSuchen ssearch, int startPrio)
6453 public void addToList () {
6554 meldungStart ();
6655 meldungAddThread ();
67-
56+
6857 int days = CrawlerTool .loadLongMax () ? 300 : 20 ;
69-
58+
7059 final ZDFSearchTask newTask = new ZDFSearchTask (days );
60+ forkJoinPool = new ForkJoinPool (Runtime .getRuntime ().availableProcessors () * 4 );
7161 forkJoinPool .execute (newTask );
7262 Collection <VideoDTO > filmList = newTask .join ();
7363
@@ -91,8 +81,9 @@ public void addToList() {
9181 wasInterrupted = true ;
9282 phaser .forceTermination ();
9383 shutdownAndAwaitTermination (forkJoinPool , 5 , TimeUnit .SECONDS );
94- } else
84+ } else {
9585 TimeUnit .SECONDS .sleep (1 );
86+ }
9687 } catch (InterruptedException ignored ) {
9788 }
9889 }
@@ -101,10 +92,11 @@ public void addToList() {
10192 shutdownAndAwaitTermination (forkJoinPool , 60 , TimeUnit .SECONDS );
10293
10394 perfPoint .collect ();
104- if (wasInterrupted )
95+ if (wasInterrupted ) {
10596 Log .sysLog ("VideoDTO conversion interrupted." );
106- else
97+ } else {
10798 Log .sysLog ("convert VideoDTO to DatenFilm finished." );
99+ }
108100
109101 meldungThreadUndFertig ();
110102 }
@@ -114,8 +106,9 @@ void shutdownAndAwaitTermination(ExecutorService pool, long delay, TimeUnit dela
114106 try {
115107 if (!pool .awaitTermination (delay , delayUnit )) {
116108 pool .shutdownNow ();
117- if (!pool .awaitTermination (delay , delayUnit ))
109+ if (!pool .awaitTermination (delay , delayUnit )) {
118110 Log .sysLog ("Pool did not terminate" );
111+ }
119112 }
120113 } catch (InterruptedException ie ) {
121114 pool .shutdownNow ();
@@ -125,6 +118,7 @@ void shutdownAndAwaitTermination(ExecutorService pool, long delay, TimeUnit dela
125118
126119 @ SuppressWarnings ("serial" )
127120 private class VideoDtoDatenFilmConverterAction extends RecursiveAction {
121+
128122 private final VideoDTO video ;
129123
130124 public VideoDtoDatenFilmConverterAction (VideoDTO aVideoDTO ) {
@@ -134,42 +128,39 @@ public VideoDtoDatenFilmConverterAction(VideoDTO aVideoDTO) {
134128
135129 @ Override
136130 protected void compute () {
137- if (video != null ) {
138- try {
139- DownloadDTO download = video .getDownloadDto ();
140-
141- DatenFilm film = new ZdfDatenFilm (SENDERNAME , video .getTopic (), video .getWebsiteUrl () /*urlThema*/ ,
142- video .getTitle (), download .getUrl (Qualities .NORMAL ), "" /*urlRtmp*/ ,
143- video .getDate (), video .getTime (), video .getDuration (), video .getDescription ());
144- urlTauschen (film , video .getWebsiteUrl (), mlibFilmeSuchen );
145-
146- //don´t use addFilm here
147- if (mlibFilmeSuchen .listeFilmeNeu .addFilmVomSender (film )) {
148- // dann ist er neu
149- FilmeSuchen .listeSenderLaufen .inc (film .arr [DatenFilm .FILM_SENDER ], RunSender .Count .FILME );
150- }
151-
152- if (!download .getUrl (Qualities .HD ).isEmpty ())
153- {
154- CrawlerTool .addUrlHd (film , download .getUrl (Qualities .HD ), "" );
155- }
156- if (!download .getUrl (Qualities .SMALL ).isEmpty ())
157- {
158- CrawlerTool .addUrlKlein (film , download .getUrl (Qualities .SMALL ), "" );
159- }
160- if (!download .getSubTitleUrl ().isEmpty ())
161- {
162- CrawlerTool .addUrlSubtitle (film , download .getSubTitleUrl ());
163- }
164- if (download .getGeoLocation () != GeoLocations .GEO_NONE ) {
165- film .arr [DatenFilm .FILM_GEO ] = download .getGeoLocation ().getDescription ();
166- }
167- } catch (Exception ex ) {
168- Log .errorLog (496583211 , ex , "add film failed: " + video .getWebsiteUrl ());
169- }
131+ if (video != null ) {
132+ try {
133+ DownloadDTO download = video .getDownloadDto ();
134+
135+ DatenFilm film = new ZdfDatenFilm (SENDERNAME , video .getTopic (), video .getWebsiteUrl () /*urlThema*/ ,
136+ video .getTitle (), download .getUrl (Qualities .NORMAL ), "" /*urlRtmp*/ ,
137+ video .getDate (), video .getTime (), video .getDuration (), video .getDescription ());
138+ urlTauschen (film , video .getWebsiteUrl (), mlibFilmeSuchen );
139+
140+ //don´t use addFilm here
141+ if (mlibFilmeSuchen .listeFilmeNeu .addFilmVomSender (film )) {
142+ // dann ist er neu
143+ FilmeSuchen .listeSenderLaufen .inc (film .arr [DatenFilm .FILM_SENDER ], RunSender .Count .FILME );
144+ }
145+
146+ if (!download .getUrl (Qualities .HD ).isEmpty ()) {
147+ CrawlerTool .addUrlHd (film , download .getUrl (Qualities .HD ), "" );
148+ }
149+ if (!download .getUrl (Qualities .SMALL ).isEmpty ()) {
150+ CrawlerTool .addUrlKlein (film , download .getUrl (Qualities .SMALL ), "" );
151+ }
152+ if (!download .getSubTitleUrl ().isEmpty ()) {
153+ CrawlerTool .addUrlSubtitle (film , download .getSubTitleUrl ());
154+ }
155+ if (download .getGeoLocation () != GeoLocations .GEO_NONE ) {
156+ film .arr [DatenFilm .FILM_GEO ] = download .getGeoLocation ().getDescription ();
157+ }
158+ } catch (Exception ex ) {
159+ Log .errorLog (496583211 , ex , "add film failed: " + video .getWebsiteUrl ());
160+ }
170161 }
171- phaser .arrive ();
172- }
162+ phaser .arriveAndDeregister ();
163+ }
173164 }
174165
175166 private static void updateHdStatus (DatenFilm film , String urlSeite ) {
@@ -213,39 +204,30 @@ public static void urlTauschen(DatenFilm film, String urlSeite, FilmeSuchen mSFi
213204 updateHdStatus (film , urlSeite );
214205 }
215206
216- private static void changeUrl (String from , String to , DatenFilm film , String urlSeite , FilmeSuchen mSFilmeSuchen )
217- {
218- if (film .arr [DatenFilm .FILM_URL ].endsWith (from ))
219- {
207+ private static void changeUrl (String from , String to , DatenFilm film , String urlSeite , FilmeSuchen mSFilmeSuchen ) {
208+ if (film .arr [DatenFilm .FILM_URL ].endsWith (from )) {
220209 String url = film .arr [DatenFilm .FILM_URL ].substring (0 , film .arr [DatenFilm .FILM_URL ].lastIndexOf (from )) + to ;
221210 String l = mSFilmeSuchen .listeFilmeAlt .getFileSizeUrl (url );
222211 // zum Testen immer machen!!
223- if (!l .isEmpty ())
224- {
212+ if (!l .isEmpty ()) {
225213 film .arr [DatenFilm .FILM_GROESSE ] = l ;
226214 film .arr [DatenFilm .FILM_URL ] = url ;
227- } else if (urlExists (url ))
228- {
215+ } else if (urlExists (url )) {
229216 // dann wars wohl nur ein "403er"
230217 film .arr [DatenFilm .FILM_URL ] = url ;
231- } else
232- {
218+ } else {
233219 Log .errorLog (945120369 , "urlTauschen: " + urlSeite );
234220 }
235221 }
236222 }
237223
238- private static void updateHd (String from , String to , DatenFilm film , String urlSeite )
239- {
240- if (film .arr [DatenFilm .FILM_URL_HD ].isEmpty () && film .arr [DatenFilm .FILM_URL ].endsWith (from ))
241- {
224+ private static void updateHd (String from , String to , DatenFilm film , String urlSeite ) {
225+ if (film .arr [DatenFilm .FILM_URL_HD ].isEmpty () && film .arr [DatenFilm .FILM_URL ].endsWith (from )) {
242226 String url = film .arr [DatenFilm .FILM_URL ].substring (0 , film .arr [DatenFilm .FILM_URL ].lastIndexOf (from )) + to ;
243227 // zum Testen immer machen!!
244- if (urlExists (url ))
245- {
228+ if (urlExists (url )) {
246229 CrawlerTool .addUrlHd (film , url , "" );
247- } else
248- {
230+ } else {
249231 Log .errorLog (945120147 , "urlTauschen: " + urlSeite );
250232 }
251233 }
0 commit comments