diff --git a/pom.xml b/pom.xml
index 23d2d33e..c1ec30da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,129 +1,129 @@
4.0.0
org.wikimedia.commons.donvip
spacemedia
0.5.0-SNAPSHOT
pom
Find free media released by space agencies missing in Wikimedia Commons
sm-apps
sm-commons-api
sm-commons-data
sm-core
sm-data
sm-legacyapp
sm-repositories
sm-utils
11
${java.version}
${java.version}
UTF-8
https://sonarcloud.io
toolforge
tool-spacemedia
${project.artifactId}
4.4
3.0.6
v3-rev20210410-1.31.0
8.3.1
- 2.5.0
+ 2.5.1
scm:git:https://phabricator.wikimedia.org/source/tool-spacemedia.git
HEAD
https://phabricator.wikimedia.org/source/tool-spacemedia/
org.springframework.boot
spring-boot-dependencies
${springboot-version}
pom
import
com.drewnoakes
metadata-extractor
2.16.0
com.flickr4java
flickr4java
${flickr4java-version}
com.github.kilianB
JImageHash
3.0.0
org.openjfx
javafx-swing
org.openjfx
javafx-graphics
com.github.scribejava
scribejava-apis
${scribejava-version}
com.github.sealedtx
java-youtube-downloader
2.5.2
com.google.apis
google-api-services-youtube
${google-api-services-youtube-version}
org.apache.commons
commons-collections4
${collections4-version}
org.jsoup
jsoup
1.13.1
geosolutions
GeoSolutions Repository
http://maven.geo-solutions.it
jcenter
https://jcenter.bintray.com/
jitpack.io
https://jitpack.io
org.junit.jupiter
junit-jupiter
test
diff --git a/sm-apps/sm-backend/src/main/resources/application.properties b/sm-apps/sm-backend/src/main/resources/application.properties
index 9e5ad3b7..f63849f7 100644
--- a/sm-apps/sm-backend/src/main/resources/application.properties
+++ b/sm-apps/sm-backend/src/main/resources/application.properties
@@ -1,39 +1,40 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
spring.jpa.properties.hibernate.search.default.directory_provider = filesystem
spring.jpa.properties.hibernate.search.default.indexBase = /data/project/spacemedia/index/default
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=4
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
commons.datasource.url=jdbc:mariadb://localhost:3307/commonswiki_p
commons.datasource.username=
commons.datasource.password=
commons.datasource.driver-class-name=org.mariadb.jdbc.Driver
commons.datasource.hikari.maximum-pool-size=4
commons.datasource.hikari.max-lifetime=300000
commons.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
commons.api.url = https://commons.wikimedia.org/w/api.php
commons.api.rest.url = https://commons.wikimedia.org/w/rest.php
commons.api.account = OptimusPrimeBot
commons.api.oauth1.consumer-token =
commons.api.oauth1.consumer-secret =
commons.api.oauth1.access-token =
commons.api.oauth1.access-secret =
commons.cat.search.depth = 1
commons.img.preview.width = 640
diff --git a/sm-apps/sm-cronjobs/sm-downloader/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-downloader/src/main/resources/application.properties
index 5f4c718e..2b2b98f0 100644
--- a/sm-apps/sm-cronjobs/sm-downloader/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-downloader/src/main/resources/application.properties
@@ -1,19 +1,20 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
diff --git a/sm-apps/sm-cronjobs/sm-harvester-arianespace-youtube/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-arianespace-youtube/src/main/resources/application.properties
index 14a4a062..48868f09 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-arianespace-youtube/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-arianespace-youtube/src/main/resources/application.properties
@@ -1,29 +1,30 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# Arianespace
youtube.depot.id.prefix=arianespace-youtube
youtube.depot.name.prefix=Arianespace YouTube channel
youtube.org.id=Arianespace
youtube.channels=UCRn9F2D9j-t4A-HgudM7aLQ
youtube.duplicatedIds=yMy9IfNqJ2k
youtube.max.duration=6M
youtube.denied.terms=copyright: ROSCOSMOS
youtube.sentences.to.remove=Category Science & Technology;Licence Creative Commons Attribution licence (reuse allowed);Follow the launch live at http://www.arianespace.com and on http://www.youtube.com/arianespace;Since its creation in 1980 as the world's first commercial space transportation company, Arianespace has led the launch services industry with many operational firsts and numerous record-setting missions.
\ No newline at end of file
diff --git a/sm-apps/sm-cronjobs/sm-harvester-dlr-flickr/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-dlr-flickr/src/main/resources/application.properties
index 9df76614..1de39d1c 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-dlr-flickr/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-dlr-flickr/src/main/resources/application.properties
@@ -1,27 +1,28 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# DLR
flickr.accounts = dlr_de
flickr.org.id = DLR
flickr.lang = de
flickr.depot.id.prefix=dlr-flickr
flickr.depot.name.prefix=DLR Flickr account
flickr.credit.regex=^.*(?:Credit|Quelle): (.*)$
diff --git a/sm-apps/sm-cronjobs/sm-harvester-esa-flickr/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-esa-flickr/src/main/resources/application.properties
index 05b12d52..b5d541bb 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-esa-flickr/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-esa-flickr/src/main/resources/application.properties
@@ -1,26 +1,27 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# ESA
flickr.accounts = europeanspaceagency,esa_events
flickr.org.id = ESA
flickr.lang = en
flickr.depot.id.prefix=esa-flickr
flickr.depot.name.prefix=ESA Flickr account
diff --git a/sm-apps/sm-cronjobs/sm-harvester-esa-hubble/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-esa-hubble/src/main/resources/application.properties
index a67a647a..bbb746be 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-esa-hubble/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-esa-hubble/src/main/resources/application.properties
@@ -1,32 +1,33 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# ESA Hubble
eso.depot.id=esa-hubble
eso.organization.id=ESA
eso.date.pattern = d MMMM yyyy
eso.datetime.pattern = d MMMM yyyy, HH:mm
eso.search.link=https://www.spacetelescope.org/images/viewall/page//?sort=-release_date
eso.copyright.path=/copyright/
eso.object.info.class=object-info
eso.object.info.title.class=title
# Nothing forbidden
eso.forbidden.categories=
eso.localized.url.pattern=https://www.spacetelescope.org/public/([a-z]+/)images/.*
diff --git a/sm-apps/sm-cronjobs/sm-harvester-esa-website/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-esa-website/src/main/resources/application.properties
index 684e91d0..9fa7f8bd 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-esa-website/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-esa-website/src/main/resources/application.properties
@@ -1,24 +1,25 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# ESA
esa.search.link = https://www.esa.int/ESA_Multimedia/Search/(offset)//(sortBy)/published?SearchText=by-sa
esa.max.tries = 5
esa.date.pattern = dd/MM/yyyy
diff --git a/sm-apps/sm-cronjobs/sm-harvester-esa-youtube/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-esa-youtube/src/main/resources/application.properties
index 11ef8c03..b1338e10 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-esa-youtube/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-esa-youtube/src/main/resources/application.properties
@@ -1,31 +1,32 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# Arianespace
youtube.depot.id.prefix=esa-youtube
youtube.depot.name.prefix=ESA YouTube channel
youtube.org.id=ESA
youtube.channels=UClB8L8TJEQfZ41Ii0gJRTSQ
youtube.duplicatedIds=
youtube.max.duration=
youtube.denied.terms=
youtube.sentences.to.remove=
youtube.licence.text=CC BY-SA 3.0 IGO
youtube.licence=CC_BY_SA_3_0_IGO
diff --git a/sm-apps/sm-cronjobs/sm-harvester-eso-website/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-eso-website/src/main/resources/application.properties
index 674bf1d9..068fb594 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-eso-website/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-eso-website/src/main/resources/application.properties
@@ -1,32 +1,33 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# ESO
eso.depot.id=eso-website
eso.organization.id=ESO
eso.date.pattern = d MMMM yyyy
eso.datetime.pattern = d MMMM yyyy, HH:mm
eso.search.link=https://www.eso.org/public/images/viewall/list//?sort=-release_date
eso.copyright.path=/public/outreach/copyright/
eso.object.info.class=object-info
eso.object.info.title.class=title
# Nothing forbidden
eso.forbidden.categories=
eso.localized.url.pattern=https://www.eso.org/public/([a-z]+/)images/.*
diff --git a/sm-apps/sm-cronjobs/sm-harvester-iau-website/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-iau-website/src/main/resources/application.properties
index 84335386..df255d04 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-iau-website/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-iau-website/src/main/resources/application.properties
@@ -1,34 +1,35 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# IAU
eso.depot.id=iau-website
eso.organization.id=IAU
eso.date.pattern = d MMMM yyyy
eso.datetime.pattern = d MMMM yyyy, HH:mm
eso.search.link=https://www.iau.org/public/images/list//?sort=-release_date
eso.copyright.path=/copyright/
eso.object.info.class=col-md-3
eso.object.info.title.class=info-list-title
# General permission does not extend to use of the IAU's logo, which shall remain protected and may not be used or reproduced without prior and individual written consent of the IAU.
eso.forbidden.categories=IAU Logos
eso.localized.url.pattern=https://www.iau.org/public/([a-z]+/)images/detail/.*
iau.base.url=https://www.iau.org
iau.images.link=/public/images/detail/
diff --git a/sm-apps/sm-cronjobs/sm-harvester-nasa-flickr/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-nasa-flickr/src/main/resources/application.properties
index bf6a4b02..d16a4900 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-nasa-flickr/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-nasa-flickr/src/main/resources/application.properties
@@ -1,26 +1,27 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# NASA
flickr.accounts = atmospheric-infrared-sounder,ghrcdaac,nasawebbtelescope,40054892@N06,nasa_appel,nasadfrc,nasaearthobservatory,earthrightnow,nasaedge,nasafo,nasaglenn,gsfc,nasa_goddard,nasahqphoto,nasahubble,nasa_ice,nasa2explore,nasa_jsc_photo,nasa_larss,nasacommons,nasampcv,nasaorion,nasaspaceflightawareness,nasa_langley,nasamarshall,eospso,nasaarmstrong,nasablueshift,nasacolab,nasa-jpl,nasakennedy,nasamarshallphotos,nasarobonaut,oursolarsystem,nasa_hsf,sdomission,larc-science,uahirise-mars,43066628@N07,nasadesertrats,hmpresearchstation,morpheuslander
flickr.org.id = NASA
flickr.lang = en
flickr.depot.id.prefix=nasa-flickr
flickr.depot.name.prefix=NASA Flickr account
diff --git a/sm-apps/sm-cronjobs/sm-harvester-usaf-flickr/src/main/resources/application.properties b/sm-apps/sm-cronjobs/sm-harvester-usaf-flickr/src/main/resources/application.properties
index fb91b704..d50bf7a1 100644
--- a/sm-apps/sm-cronjobs/sm-harvester-usaf-flickr/src/main/resources/application.properties
+++ b/sm-apps/sm-cronjobs/sm-harvester-usaf-flickr/src/main/resources/application.properties
@@ -1,26 +1,27 @@
# Spring
spring.jackson.default-property-inclusion=non_empty
spring.jackson.property-naming-strategy=SNAKE_CASE
+spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# Local database for development
domain.datasource.url=jdbc:mariadb://localhost:3306/root_spacemedia
domain.datasource.username=root
domain.datasource.password=
domain.datasource.driver-class-name=org.mariadb.jdbc.Driver
domain.datasource.hikari.maximum-pool-size=2
domain.datasource.hikari.max-lifetime=300000
domain.datasource.hikari.connectionInitSql = SET NAMES 'utf8mb4'
# USAF
flickr.accounts = airforcespacecommand,129133022@N07
flickr.org.id = USAF
flickr.lang = en
flickr.depot.id.prefix=usaf-flickr
flickr.depot.name.prefix=USAF Flickr account