44import de .mediathekview .mlib .Config ;
55import de .mediathekview .mlib .daten .DatenFilm ;
66import de .mediathekview .mlib .tool .Log ;
7+ import jakarta .ws .rs .client .WebTarget ;
78import mServer .crawler .CrawlerTool ;
89import mServer .crawler .sender .MediathekReader ;
910import mServer .crawler .sender .base .AbstractRecursivConverterTask ;
1718import org .apache .logging .log4j .LogManager ;
1819import org .apache .logging .log4j .Logger ;
1920
20- import jakarta .ws .rs .client .WebTarget ;
2121import java .lang .reflect .Type ;
2222import java .time .Duration ;
2323import java .time .LocalDateTime ;
@@ -31,35 +31,62 @@ public class ZdfFilmDetailTask extends ZdfTaskBase<DatenFilm, CrawlerUrlDTO> {
3131 private static final Logger LOG = LogManager .getLogger (ZdfFilmDetailTask .class );
3232
3333 private static final Type OPTIONAL_FILM_TYPE_TOKEN
34- = new TypeToken <Optional <ZdfFilmDtoOld >>() {
34+ = new TypeToken <Optional <ZdfFilmDtoOld >>() {
3535 }.getType ();
3636 private static final Type OPTIONAL_DOWNLOAD_DTO_TYPE_TOKEN
37- = new TypeToken <Optional <DownloadDto >>() {
37+ = new TypeToken <Optional <DownloadDto >>() {
3838 }.getType ();
3939
4040 private static final DateTimeFormatter DATE_FORMAT
41- = DateTimeFormatter .ofPattern ("dd.MM.yyyy" );
41+ = DateTimeFormatter .ofPattern ("dd.MM.yyyy" );
4242 private static final DateTimeFormatter TIME_FORMAT
43- = DateTimeFormatter .ofPattern ("HH:mm:ss" );
43+ = DateTimeFormatter .ofPattern ("HH:mm:ss" );
4444
4545 private final transient ZdfVideoUrlOptimizer optimizer = new ZdfVideoUrlOptimizer ();
4646 private final String apiUrlBase ;
4747 private final Map <String , String > partnerToSender ;
48+ private final String defaultSender ;
4849
4950 public ZdfFilmDetailTask (
50- final MediathekReader aCrawler ,
51- final String aApiUrlBase ,
52- final ConcurrentLinkedQueue <CrawlerUrlDTO > aUrlToCrawlDtos ,
53- final Optional <String > aAuthKey ,
54- final Map <String , String > partnerToSender ) {
51+ final MediathekReader aCrawler ,
52+ final String aApiUrlBase ,
53+ final ConcurrentLinkedQueue <CrawlerUrlDTO > aUrlToCrawlDtos ,
54+ final Optional <String > aAuthKey ,
55+ final Map <String , String > partnerToSender ,
56+ final String defaultSender ) {
5557 super (aCrawler , aUrlToCrawlDtos , aAuthKey );
5658 apiUrlBase = aApiUrlBase ;
5759 this .partnerToSender = partnerToSender ;
60+ this .defaultSender = defaultSender ;
5861
59- registerJsonDeserializer (OPTIONAL_FILM_TYPE_TOKEN , new ZdfFilmDetailDeserializer (apiUrlBase , partnerToSender ));
62+ registerJsonDeserializer (OPTIONAL_FILM_TYPE_TOKEN , new ZdfFilmDetailDeserializer (apiUrlBase , partnerToSender , defaultSender ));
6063 registerJsonDeserializer (OPTIONAL_DOWNLOAD_DTO_TYPE_TOKEN , new ZdfDownloadDtoDeserializer ());
6164 }
6265
66+ private static String updateTitle (final String aLanguage , final String aTitle ) {
67+ String title = aTitle ;
68+ switch (aLanguage ) {
69+ case ZdfConstants .LANGUAGE_GERMAN :
70+ return title ;
71+ case ZdfConstants .LANGUAGE_GERMAN_AD :
72+ title += " (Audiodeskription)" ;
73+ break ;
74+ case ZdfConstants .LANGUAGE_GERMAN_DGS :
75+ title += " (Gebärdensprache)" ;
76+ break ;
77+ case ZdfConstants .LANGUAGE_ENGLISH :
78+ title += " (Englisch)" ;
79+ break ;
80+ case ZdfConstants .LANGUAGE_FRENCH :
81+ title += " (Französisch)" ;
82+ break ;
83+ default :
84+ title += "(" + aLanguage + ")" ;
85+ }
86+
87+ return title ;
88+ }
89+
6390 @ Override
6491 protected void processRestTarget (final CrawlerUrlDTO aDto , final WebTarget aTarget ) {
6592 if (Config .getStop ()) {
@@ -70,8 +97,8 @@ protected void processRestTarget(final CrawlerUrlDTO aDto, final WebTarget aTarg
7097 final Optional <ZdfFilmDtoOld > film = deserializeOptional (aTarget , OPTIONAL_FILM_TYPE_TOKEN );
7198 if (film .isPresent ()) {
7299 final Optional <DownloadDto > downloadDtoOptional
73- = deserializeOptional (
74- createWebTarget (film .get ().getUrl ()), OPTIONAL_DOWNLOAD_DTO_TYPE_TOKEN );
100+ = deserializeOptional (
101+ createWebTarget (film .get ().getUrl ()), OPTIONAL_DOWNLOAD_DTO_TYPE_TOKEN );
75102
76103 if (downloadDtoOptional .isPresent ()) {
77104 final DownloadDto downloadDto = downloadDtoOptional .get ();
@@ -106,47 +133,23 @@ private void appendSignLanguage(DownloadDto downloadDto, Optional<String> urlSig
106133
107134 @ Override
108135 protected AbstractRecursivConverterTask <DatenFilm , CrawlerUrlDTO > createNewOwnInstance (
109- final ConcurrentLinkedQueue <CrawlerUrlDTO > aElementsToProcess ) {
110- return new ZdfFilmDetailTask (crawler , apiUrlBase , aElementsToProcess , authKey , partnerToSender );
136+ final ConcurrentLinkedQueue <CrawlerUrlDTO > aElementsToProcess ) {
137+ return new ZdfFilmDetailTask (crawler , apiUrlBase , aElementsToProcess , authKey , partnerToSender , defaultSender );
111138 }
112139
113140 private void addFilm (final DownloadDto downloadDto , final ZdfFilmDtoOld result ) {
114141 for (final String language : downloadDto .getLanguages ()) {
115142
116143 if (downloadDto .getUrl (language , Qualities .NORMAL ).isPresent ()) {
117144 DownloadDtoFilmConverter .getOptimizedUrls (
118- downloadDto .getDownloadUrls (language ), Optional .of (optimizer ));
145+ downloadDto .getDownloadUrls (language ), Optional .of (optimizer ));
119146
120147 final DatenFilm filmWithLanguage = createFilm (result , downloadDto , language );
121148 taskResults .add (filmWithLanguage );
122149 }
123150 }
124151 }
125152
126- private static String updateTitle (final String aLanguage , final String aTitle ) {
127- String title = aTitle ;
128- switch (aLanguage ) {
129- case ZdfConstants .LANGUAGE_GERMAN :
130- return title ;
131- case ZdfConstants .LANGUAGE_GERMAN_AD :
132- title += " (Audiodeskription)" ;
133- break ;
134- case ZdfConstants .LANGUAGE_GERMAN_DGS :
135- title += " (Gebärdensprache)" ;
136- break ;
137- case ZdfConstants .LANGUAGE_ENGLISH :
138- title += " (Englisch)" ;
139- break ;
140- case ZdfConstants .LANGUAGE_FRENCH :
141- title += " (Französisch)" ;
142- break ;
143- default :
144- title += "(" + aLanguage + ")" ;
145- }
146-
147- return title ;
148- }
149-
150153 private DatenFilm createFilm (final ZdfFilmDtoOld zdfFilmDto , final DownloadDto downloadDto , final String aLanguage ) {
151154
152155 final String title = updateTitle (aLanguage , zdfFilmDto .getTitle ());
@@ -161,9 +164,9 @@ private DatenFilm createFilm(final ZdfFilmDtoOld zdfFilmDto, final DownloadDto d
161164 Duration duration = zdfFilmDto .getDuration ().orElse (downloadDto .getDuration ().orElse (Duration .ZERO ));
162165
163166 DatenFilm film = new ZdfDatenFilm (zdfFilmDto .getSender (),
164- zdfFilmDto .getTopic ().orElse (title ),
165- zdfFilmDto .getWebsite ().orElse ("" ),
166- title , downloadUrls .get (Qualities .NORMAL ), "" , dateValue , timeValue , duration .getSeconds (), zdfFilmDto .getDescription ().orElse ("" ));
167+ zdfFilmDto .getTopic ().orElse (title ),
168+ zdfFilmDto .getWebsite ().orElse ("" ),
169+ title , downloadUrls .get (Qualities .NORMAL ), "" , dateValue , timeValue , duration .getSeconds (), zdfFilmDto .getDescription ().orElse ("" ));
167170 if (downloadUrls .containsKey (Qualities .SMALL )) {
168171 CrawlerTool .addUrlKlein (film , downloadUrls .get (Qualities .SMALL ));
169172 }
0 commit comments