├── frontend-angular ├── src │ ├── assets │ │ └── .gitkeep │ ├── _variables.scss │ ├── favicon.ico │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── typings.d.ts │ ├── tsconfig.app.json │ ├── app │ │ ├── podcasts │ │ │ ├── podcasts.component.html │ │ │ ├── podcasts.component.scss │ │ │ ├── podcasts.actions.ts │ │ │ ├── podcasts.reducer.ts │ │ │ ├── podcasts.effects.ts │ │ │ ├── core │ │ │ │ └── resolver │ │ │ │ │ └── podcasts.resolver.ts │ │ │ └── podcasts.component.ts │ │ ├── app.component.scss │ │ ├── shared │ │ │ ├── toolbar │ │ │ │ ├── toolbar.component.html │ │ │ │ ├── toolbar.component.scss │ │ │ │ ├── toolbar.module.ts │ │ │ │ ├── toolbar.component.ts │ │ │ │ └── toolbar.component.spec.ts │ │ │ ├── shared.module.ts │ │ │ └── service │ │ │ │ └── podcast │ │ │ │ └── podcast.service.ts │ │ ├── podcast │ │ │ ├── podcast.component.scss │ │ │ ├── core │ │ │ │ ├── episodes │ │ │ │ │ ├── episodes.component.html │ │ │ │ │ └── episodes.component.scss │ │ │ │ ├── podcast.resolver.ts │ │ │ │ └── podcast-items.resolver.ts │ │ │ └── podcast.reducer.ts │ │ ├── floating-player │ │ │ ├── floating-player.actions.ts │ │ │ ├── floating-player.module.ts │ │ │ ├── floating-player.component.scss │ │ │ ├── floating-player.component.html │ │ │ └── floating-player.reducer.ts │ │ ├── search │ │ │ ├── search.actions.ts │ │ │ ├── resolver │ │ │ │ ├── search-query.resolver.ts │ │ │ │ ├── search.resolver.ts │ │ │ │ └── search-query.resolver.spec.ts │ │ │ └── search.component.scss │ │ ├── item │ │ │ ├── item.component.spec.ts │ │ │ ├── core │ │ │ │ ├── item.resolver.ts │ │ │ │ └── podcast.resolver.ts │ │ │ └── item.reducer.ts │ │ ├── app.component.ts │ │ ├── app.actions.ts │ │ ├── app.component.html │ │ └── app.reducer.ts │ ├── index.html │ ├── main.ts │ ├── tsconfig.spec.json │ └── styles.scss ├── .prettierignore ├── proxy.conf.json ├── e2e │ ├── tsconfig.e2e.json │ ├── app.po.ts │ └── app.e2e-spec.ts ├── proxy-prod.conf.json ├── .editorconfig ├── prettier.config.js ├── tsconfig.json ├── protractor.conf.js ├── build.gradle.kts ├── jest.config.js └── README.md ├── frontend-angularjs ├── .jshintrc ├── .envrc ├── www │ └── app │ │ ├── common │ │ ├── modules │ │ │ ├── angularNotification.js │ │ │ ├── truncate.js │ │ │ ├── ngTagsInput.js │ │ │ └── highCharts.js │ │ ├── component │ │ │ ├── updating │ │ │ │ ├── updating.html │ │ │ │ └── updating.less │ │ │ ├── authorize-notification │ │ │ │ ├── authorize-notification.html │ │ │ │ └── authorize-notification.js │ │ │ ├── videogular │ │ │ │ ├── vg-copy │ │ │ │ │ ├── vg-copy.less │ │ │ │ │ └── vg-copy.js │ │ │ │ ├── vg-link │ │ │ │ │ ├── vg-link.less │ │ │ │ │ └── vg-link.js │ │ │ │ ├── vg-link-vlc │ │ │ │ │ ├── vg-link-vlc.less │ │ │ │ │ └── vg-link-vlc.js │ │ │ │ └── videogular.less │ │ │ ├── item-menu │ │ │ │ └── item-menu.less │ │ │ ├── navbar │ │ │ │ ├── navbar.html │ │ │ │ ├── navbar.less │ │ │ │ └── navbar.js │ │ │ ├── title │ │ │ │ └── title.js │ │ │ ├── watchlist-chooser │ │ │ │ ├── watchlist-chooser.less │ │ │ │ └── watchlist-chooser.html │ │ │ └── copy │ │ │ │ └── copy.js │ │ ├── filter │ │ │ └── html2plainText.js │ │ └── service │ │ │ ├── device-detection.js │ │ │ ├── title.service.js │ │ │ └── data │ │ │ ├── updateService.js │ │ │ ├── typeService.js │ │ │ └── tagService.js │ │ ├── config │ │ ├── ionicons │ │ │ ├── ionicons.js │ │ │ └── ionicons.less │ │ ├── styles │ │ │ ├── styles.js │ │ │ └── bootstrap-adaptation.less │ │ ├── font-awesome │ │ │ ├── font-awesome.less │ │ │ └── font-awesome.js │ │ ├── bootstrap │ │ │ ├── bootstrap.less │ │ │ └── bootstrap.js │ │ ├── loading.js │ │ ├── route.js │ │ └── config.js │ │ ├── item │ │ └── item.js │ │ ├── podcasts │ │ ├── details │ │ │ ├── upload │ │ │ │ └── upload.html │ │ │ └── stats │ │ │ │ └── stats.html │ │ └── podcasts.less │ │ ├── app.js │ │ └── stats │ │ └── stats.html ├── docker │ ├── Dockerfile │ └── default.conf ├── gulpfile.babel.js ├── gulp │ ├── utils.js │ └── tasks │ │ ├── lint.js │ │ ├── fonts.js │ │ ├── less.js │ │ ├── watch.js │ │ └── maven.js └── .eslintrc ├── gradle.properties ├── storage └── Dockerfile ├── backend └── src │ ├── test │ ├── resources │ │ ├── __files │ │ │ ├── service │ │ │ │ ├── mimeTypeService │ │ │ │ │ └── plain.text.txt │ │ │ │ ├── htmlService │ │ │ │ │ └── jsoup.html │ │ │ │ ├── jdomService │ │ │ │ │ ├── invalid.xml │ │ │ │ │ └── valid.xml │ │ │ │ └── urlService │ │ │ │ │ └── relative.m3u8 │ │ │ ├── img │ │ │ │ └── image.png │ │ │ └── utils │ │ │ │ └── multipart │ │ │ │ └── outputfile.out │ │ ├── mockito-extensions │ │ │ └── org.mockito.plugins.MockMaker │ │ ├── spring.properties │ │ ├── junit-platform.properties │ │ ├── remote │ │ │ ├── downloader │ │ │ │ ├── rtmpdump │ │ │ │ │ └── rtmpdump.txt │ │ │ │ └── m3u8 │ │ │ │ │ └── m3u8file.m3u8 │ │ │ └── podcast │ │ │ │ ├── dailymotion │ │ │ │ ├── karimdebbache.ids.0.item.json │ │ │ │ ├── karimdebbache-without-description.json │ │ │ │ ├── karimdebbache.ids.1.items.json │ │ │ │ ├── karimdebbache.json │ │ │ │ └── karimdebbache.ids.10.items.json │ │ │ │ └── youtube │ │ │ │ ├── joueurdugrenier.id.json │ │ │ │ ├── joueurdugrenier.channel.with-0-item.xml │ │ │ │ └── joueurdugrenier.playlist.with-0-item.xml │ │ ├── logback-test.xml │ │ ├── application.yml │ │ └── xml │ │ │ ├── podcast-with-port-not-defined-and-http.xml │ │ │ ├── podcast-with-port-not-defined-and-https.xml │ │ │ ├── podcast-with-x-forwarded-port.xml │ │ │ └── podcast-with-lots-of-parameters.xml │ └── kotlin │ │ └── com │ │ └── github │ │ └── davinkevin │ │ └── podcastserver │ │ ├── extension │ │ ├── assertthat │ │ │ └── SoftAsserts.kt │ │ └── json │ │ │ └── JsonAssert.kt │ │ ├── utils │ │ ├── custom │ │ │ └── ffmpeg │ │ │ │ ├── CustomRunProcessFuncTest.kt │ │ │ │ └── ProcessListenerTest.kt │ │ └── MatcherExtractorTest.kt │ │ ├── IOUtils.kt │ │ ├── entity │ │ └── StatusTest.kt │ │ ├── config │ │ ├── BeanConfigScanTest.kt │ │ └── ClockConfigTest.kt │ │ ├── service │ │ ├── ffmpeg │ │ │ └── FfmpegConfigTest.kt │ │ └── properties │ │ │ └── ExternalToolsTest.kt │ │ └── update │ │ └── updaters │ │ └── TypeTest.kt │ └── main │ ├── resources │ ├── application-tools-from-homebrew.yml │ ├── META-INF │ │ └── additional-spring-configuration-metadata.json │ ├── application-local-pg.yml │ ├── application-local-minio.yml │ └── application.yml │ └── kotlin │ └── com │ └── github │ └── davinkevin │ └── podcastserver │ ├── tag │ ├── Tag.kt │ ├── TagService.kt │ └── TagConfig.kt │ ├── update │ ├── updaters │ │ ├── Type.kt │ │ ├── UpdaterSelector.kt │ │ ├── upload │ │ │ ├── UploadUpdaterConfig.kt │ │ │ └── UploadUpdater.kt │ │ ├── youtube │ │ │ └── YoutubeUtils.kt │ │ ├── rss │ │ │ └── RSSUpdaterConfig.kt │ │ ├── gulli │ │ │ └── GulliUpdaterConfig.kt │ │ ├── dailymotion │ │ │ └── DailymotionUpdaterConfig.kt │ │ └── francetv │ │ │ └── FranceTvUpdaterConfig.kt │ └── UpdateHandler.kt │ ├── extension │ ├── java │ │ ├── util │ │ │ └── Optional.kt │ │ └── net │ │ │ └── URI.kt │ ├── restclient │ │ └── RestClient.kt │ └── podcastserver │ │ └── item │ │ └── Slugable.kt │ ├── rss │ ├── Rss.kt │ └── Namespaces.kt │ ├── cover │ ├── Cover.kt │ ├── CoverHandler.kt │ ├── CoverConfig.kt │ └── CoverService.kt │ ├── download │ └── downloaders │ │ ├── rtmp │ │ └── RTMPDownloaderConfig.kt │ │ ├── ffmpeg │ │ └── FfmpegDownloaderConfig.kt │ │ ├── youtubedl │ │ ├── YTDlpParameters.kt │ │ └── YoutubeDlUtils.kt │ │ ├── Downloader.kt │ │ └── DownloaderSelector.kt │ ├── database │ ├── StatusConverter.kt │ └── PathConverter.kt │ ├── config │ ├── ClockConfig.kt │ └── TomcatConfig.kt │ ├── find │ ├── finders │ │ ├── noop │ │ │ ├── NoopConfig.kt │ │ │ └── NoOpFinder.kt │ │ ├── Finder.kt │ │ ├── FindersExtension.kt │ │ ├── francetv │ │ │ └── FranceTvFinderConfig.kt │ │ ├── rss │ │ │ └── RSSFinderConfig.kt │ │ ├── itunes │ │ │ └── ItunesFinderConfig.kt │ │ ├── dailymotion │ │ │ └── DailymotionFinderConfig.kt │ │ ├── youtube │ │ │ └── YoutubeFinderConfig.kt │ │ ├── gulli │ │ │ └── GulliFinderConfig.kt │ │ └── mytf1 │ │ │ └── MyTf1FinderConfig.kt │ ├── FindPocastInformation.kt │ ├── FindHandler.kt │ └── FindService.kt │ ├── service │ ├── image │ │ └── ImageServiceConfig.kt │ ├── properties │ │ ├── ExternalTools.kt │ │ └── PodcastServerParameters.kt │ ├── ProcessService.kt │ ├── storage │ │ ├── CoverExists.kt │ │ ├── ToExternalUrl.kt │ │ └── DeleteObject.kt │ └── ffmpeg │ │ └── FfmpegConfig.kt │ ├── kodi │ ├── Kodi.kt │ └── KodiConfig.kt │ ├── utils │ ├── custom │ │ └── ffmpeg │ │ │ ├── ProcessListener.kt │ │ │ └── CustomRunProcessFunc.kt │ └── MatcherExtractor.kt │ ├── PodcastServerApplication.kt │ ├── messaging │ └── MessagingConfig.kt │ ├── podcast │ └── type │ │ ├── TypeConfig.kt │ │ └── TypeHandler.kt │ └── playlist │ └── Playlist.kt ├── .idea └── icon.png ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── distribution ├── kubernetes │ ├── base │ │ ├── components │ │ │ ├── namespace │ │ │ │ ├── namespace.yaml │ │ │ │ └── kustomization.yaml │ │ │ ├── ingress │ │ │ │ └── kustomization.yaml │ │ │ ├── storage │ │ │ │ └── embedded │ │ │ │ │ ├── gateway │ │ │ │ │ ├── kustomization.yaml │ │ │ │ │ ├── console │ │ │ │ │ │ ├── kustomization.yaml │ │ │ │ │ │ └── console.yaml │ │ │ │ │ └── storage.yaml │ │ │ │ │ ├── ingress │ │ │ │ │ ├── kustomization.yaml │ │ │ │ │ └── minio-console.yaml │ │ │ │ │ ├── backend-set-internal-storage.yaml │ │ │ │ │ └── kustomization.yaml │ │ │ ├── gateway │ │ │ │ ├── kustomization.yaml │ │ │ │ ├── backend.yaml │ │ │ │ └── frontend.yaml │ │ │ ├── database │ │ │ │ └── kustomization.yaml │ │ │ └── backend │ │ │ │ └── remote-debug │ │ │ │ └── kustomization.yaml │ │ ├── kustomization.yaml │ │ └── ui-v1.yaml │ ├── .infrastructure │ │ ├── dns │ │ │ └── podcast-server.profile │ │ ├── contour │ │ │ └── kustomization.yaml │ │ └── gateway │ │ │ ├── kustomization.yaml │ │ │ └── namereference.yaml │ └── overlays │ │ ├── docker-for-desktop │ │ ├── ingress │ │ │ ├── minio │ │ │ │ └── kustomization.yaml │ │ │ ├── podcast-server │ │ │ │ └── kustomization.yaml │ │ │ └── certs │ │ │ │ └── add-tls.yaml │ │ └── kustomization.yaml │ │ ├── all-in-one │ │ └── kustomization.yaml │ │ └── podcast.k8s.local │ │ ├── kustomization.yaml │ │ └── gateways │ │ └── kustomization.yaml └── kpt │ └── podcast-server │ ├── fn.yaml │ ├── storage │ ├── backend.storage.yaml │ ├── fs.storage.yaml │ └── database.storage.yaml │ └── ingress │ └── ingress.yaml ├── fake-external-podcast ├── src │ ├── podcast │ │ └── fake.jpg │ ├── conf │ │ └── default.conf │ └── docker │ │ └── Dockerfile └── build.sh ├── documentation ├── modules │ └── ROOT │ │ ├── pages │ │ └── introduction.adoc │ │ ├── nav.adoc │ │ └── examples │ │ └── installation │ │ └── kubernetes │ │ └── kustomization.yaml ├── antora.yml ├── supplemental-ui │ └── partials │ │ └── header-content.hbs └── documentation.yml ├── backend-lib-youtubedl └── src │ ├── test │ ├── resources │ │ └── youtube-dl │ └── java │ │ └── com │ │ └── gitlab │ │ └── davinkevin │ │ └── podcastserver │ │ └── youtubedl │ │ ├── YoutubeDLResponseTest.java │ │ └── YoutubeDLRequestTest.java │ └── main │ └── java │ └── com │ └── gitlab │ └── davinkevin │ └── podcastserver │ └── youtubedl │ ├── DownloadProgressCallback.java │ ├── mapper │ ├── VideoSubtitle.java │ ├── VideoThumbnail.java │ ├── HttpHeader.java │ └── VideoFormat.java │ ├── utils │ └── StreamGobbler.java │ └── YoutubeDLException.java ├── ui ├── src │ └── docker │ │ ├── Dockerfile │ │ └── config.toml └── compile.sh ├── backend-lib-database └── src │ └── main │ ├── migrations │ ├── V3__item-status-number-of-fail-not-null.sql │ ├── V6__add-guid-support-for-items.sql │ ├── V8__increase-multiple-varchar-size.sql │ ├── V5__use-database-for-download-manager.sql │ ├── V4__cover-url-not-null.sql │ ├── V10__add-cover-to-playlist.sql │ ├── V7__migrate-to-enums-to-items.sql │ └── V9__rename_watchlist_to_playlist.sql │ ├── docker │ └── Dockerfile │ └── java │ └── com │ └── github │ └── davinkevin │ └── podcastserver │ └── database │ └── routines │ ├── UuidNil.java │ ├── UuidNsDns.java │ ├── UuidNsOid.java │ ├── UuidNsUrl.java │ ├── UuidNsX500.java │ ├── UuidGenerateV1.java │ ├── UuidGenerateV4.java │ └── UuidGenerateV1mc.java ├── .envrc ├── .gitlab ├── ci │ └── gradle-build-tool.yaml └── renovate.json5 └── .gitignore /frontend-angular/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend-angular/.prettierignore: -------------------------------------------------------------------------------- 1 | package.json 2 | -------------------------------------------------------------------------------- /frontend-angularjs/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "esnext": true 3 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | kotlin.jvm.target.validation.mode = IGNORE 2 | -------------------------------------------------------------------------------- /storage/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM minio/minio:RELEASE.2025-09-07T16-13-09Z 2 | -------------------------------------------------------------------------------- /backend/src/test/resources/__files/service/mimeTypeService/plain.text.txt: -------------------------------------------------------------------------------- 1 | plain.text -------------------------------------------------------------------------------- /frontend-angular/src/_variables.scss: -------------------------------------------------------------------------------- 1 | 2 | $global-background-color: #fafafa; 3 | -------------------------------------------------------------------------------- /.idea/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davinkevin/Podcast-Server/HEAD/.idea/icon.png -------------------------------------------------------------------------------- /backend/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline -------------------------------------------------------------------------------- /backend/src/test/resources/spring.properties: -------------------------------------------------------------------------------- 1 | spring.test.enclosing.configuration=OVERRIDE 2 | -------------------------------------------------------------------------------- /backend/src/test/resources/junit-platform.properties: -------------------------------------------------------------------------------- 1 | #junit.jupiter.testinstance.lifecycle.default = per_class -------------------------------------------------------------------------------- /frontend-angular/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davinkevin/Podcast-Server/HEAD/frontend-angular/src/favicon.ico -------------------------------------------------------------------------------- /frontend-angularjs/.envrc: -------------------------------------------------------------------------------- 1 | PATH_add .gradle/nodejs/node-v6.2.0-darwin-x64/bin/ 2 | PATH_add ./.gradle/npm/npm-v2.15.6/bin/ 3 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davinkevin/Podcast-Server/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /distribution/kubernetes/base/components/namespace/namespace.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: podcast-server 5 | -------------------------------------------------------------------------------- /fake-external-podcast/src/podcast/fake.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davinkevin/Podcast-Server/HEAD/fake-external-podcast/src/podcast/fake.jpg -------------------------------------------------------------------------------- /frontend-angularjs/www/app/common/modules/angularNotification.js: -------------------------------------------------------------------------------- 1 | import 'angular-notification'; 2 | 3 | export default { name : 'notification' }; -------------------------------------------------------------------------------- /backend/src/test/resources/remote/downloader/rtmpdump/rtmpdump.txt: -------------------------------------------------------------------------------- 1 | Progression : (1%) 2 | Progression : (2%) 3 | Progression : (3%) 4 | Download Complete -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages/introduction.adoc: -------------------------------------------------------------------------------- 1 | = Introduction 2 | 3 | This site is the complement documentation of the Podcast-Server project. 4 | -------------------------------------------------------------------------------- /frontend-angular/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | 5 | export const devTools = []; 6 | -------------------------------------------------------------------------------- /backend/src/test/resources/__files/img/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davinkevin/Podcast-Server/HEAD/backend/src/test/resources/__files/img/image.png -------------------------------------------------------------------------------- /frontend-angular/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /backend-lib-youtubedl/src/test/resources/youtube-dl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davinkevin/Podcast-Server/HEAD/backend-lib-youtubedl/src/test/resources/youtube-dl -------------------------------------------------------------------------------- /frontend-angularjs/www/app/config/ionicons/ionicons.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kevin on 31/10/2015 for PodcastServer 3 | */ 4 | import './ionicons.css!'; 5 | -------------------------------------------------------------------------------- /frontend-angularjs/www/app/config/ionicons/ionicons.less: -------------------------------------------------------------------------------- 1 | @import "/jspm_packages/github/driftyco/ionicons@2.0.1/less/ionicons"; 2 | @ionicons-font-path: '/fonts/'; -------------------------------------------------------------------------------- /distribution/kubernetes/.infrastructure/dns/podcast-server.profile: -------------------------------------------------------------------------------- 1 | 127.0.0.1 podcast.k8s.local minio.podcast.k8s.local 2 | ::1 podcast.k8s.local minio.podcast.k8s.local -------------------------------------------------------------------------------- /documentation/antora.yml: -------------------------------------------------------------------------------- 1 | name: documentation 2 | title: Documentation 3 | version: "1.0.0" 4 | start_page: introduction.adoc 5 | nav: 6 | - modules/ROOT/nav.adoc 7 | -------------------------------------------------------------------------------- /frontend-angularjs/www/app/config/styles/styles.js: -------------------------------------------------------------------------------- 1 | import './bootstrap-adaptation.css!'; 2 | import './podcastserver.css!'; 3 | import './tags-input-bootstrap.css!'; -------------------------------------------------------------------------------- /documentation/modules/ROOT/nav.adoc: -------------------------------------------------------------------------------- 1 | 2 | * xref:introduction.adoc[Introduction] 3 | 4 | * *Installation* 5 | 6 | ** xref:installation/kubernetes.adoc[on kubernetes] 7 | -------------------------------------------------------------------------------- /frontend-angularjs/www/app/config/font-awesome/font-awesome.less: -------------------------------------------------------------------------------- 1 | 2 | @import "/jspm_packages/npm/font-awesome@4.5.0/less/font-awesome"; 3 | @fa-font-path : '/fonts/'; 4 | -------------------------------------------------------------------------------- /distribution/kubernetes/base/components/ingress/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1alpha1 2 | kind: Component 3 | 4 | resources: 5 | - ingress.yaml 6 | -------------------------------------------------------------------------------- /frontend-angularjs/www/app/config/bootstrap/bootstrap.less: -------------------------------------------------------------------------------- 1 | 2 | @import "/jspm_packages/github/distros/bootstrap-less@3.3.9/bootstrap/index"; 3 | @icon-font-path : '/fonts/'; 4 | -------------------------------------------------------------------------------- /frontend-angularjs/www/app/config/font-awesome/font-awesome.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kevin on 31/10/2015 for PodcastServer 3 | */ 4 | 5 | import './font-awesome.css!'; -------------------------------------------------------------------------------- /distribution/kubernetes/base/components/namespace/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1alpha1 2 | kind: Component 3 | 4 | resources: 5 | - namespace.yaml 6 | -------------------------------------------------------------------------------- /ui/src/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM joseluisq/static-web-server:2.38.1 2 | 3 | COPY podcast-server /podcast-server 4 | COPY config.toml / 5 | 6 | ENV SERVER_CONFIG_FILE=config.toml 7 | -------------------------------------------------------------------------------- /distribution/kubernetes/base/components/storage/embedded/gateway/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1alpha1 2 | kind: Component 3 | 4 | resources: 5 | - storage.yaml 6 | -------------------------------------------------------------------------------- /distribution/kubernetes/.infrastructure/contour/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | 4 | resources: 5 | - contour-gateway-provisioner.yaml -------------------------------------------------------------------------------- /frontend-angularjs/www/app/common/component/updating/updating.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /distribution/kubernetes/base/components/gateway/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1alpha1 2 | kind: Component 3 | 4 | resources: 5 | - backend.yaml 6 | - frontend.yaml 7 | 8 | -------------------------------------------------------------------------------- /distribution/kubernetes/base/components/storage/embedded/gateway/console/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1alpha1 2 | kind: Component 3 | 4 | resources: 5 | - console.yaml 6 | -------------------------------------------------------------------------------- /distribution/kubernetes/base/components/storage/embedded/ingress/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1alpha1 2 | kind: Component 3 | 4 | resources: 5 | - minio-console.yaml 6 | -------------------------------------------------------------------------------- /frontend-angularjs/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:latest 2 | # Author: DAVIN Kevin davin.kevin@gmail.com 3 | 4 | COPY dist /var/www/podcast-server 5 | COPY default.conf /etc/nginx/conf.d/default.conf 6 | -------------------------------------------------------------------------------- /frontend-angularjs/gulpfile.babel.js: -------------------------------------------------------------------------------- 1 | /* Full config of gulp task located in ./build/tasks/*.js */ 2 | 3 | import requiredir from 'require-dir'; 4 | 5 | requiredir('./gulp/tasks', { recurse: true }); -------------------------------------------------------------------------------- /frontend-angularjs/www/app/common/modules/truncate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kevin on 25/10/2015 for PodcastServer 3 | */ 4 | import 'angular-truncate'; 5 | 6 | export default { name : 'truncate' }; -------------------------------------------------------------------------------- /backend/src/test/resources/remote/podcast/dailymotion/karimdebbache.ids.0.item.json: -------------------------------------------------------------------------------- 1 | { 2 | "page":1, 3 | "limit":10, 4 | "explicit":false, 5 | "total":44, 6 | "has_more":true, 7 | "list":[] 8 | } 9 | -------------------------------------------------------------------------------- /frontend-angularjs/www/app/config/styles/bootstrap-adaptation.less: -------------------------------------------------------------------------------- 1 | .ps { 2 | .media-left, .media-right, .media-body { 3 | display: block; 4 | } 5 | 6 | .media-body { 7 | width: auto; 8 | } 9 | } -------------------------------------------------------------------------------- /frontend-angularjs/www/app/common/modules/ngTagsInput.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kevin on 25/10/2015 for PodcastServer 3 | */ 4 | 5 | import 'ng-tags-input'; 6 | 7 | export default { name : 'ngTagsInput' }; 8 | -------------------------------------------------------------------------------- /backend/src/main/resources/application-tools-from-homebrew.yml: -------------------------------------------------------------------------------- 1 | podcastserver: 2 | externaltools: 3 | #rtmpdump: /usr/local/bin/rtmpdump 4 | ffmpeg: /opt/homebrew/bin/ffmpeg 5 | ffprobe: /opt/homebrew/bin/ffprobe 6 | -------------------------------------------------------------------------------- /backend/src/main/kotlin/com/github/davinkevin/podcastserver/tag/Tag.kt: -------------------------------------------------------------------------------- 1 | package com.github.davinkevin.podcastserver.tag 2 | 3 | import java.util.* 4 | 5 | data class Tag( 6 | val id: UUID, 7 | val name: String 8 | ) 9 | -------------------------------------------------------------------------------- /backend/src/test/resources/remote/podcast/dailymotion/karimdebbache-without-description.json: -------------------------------------------------------------------------------- 1 | { 2 | "avatar_720_url":"http:\/\/s2.dmcdn.net\/PB4mc\/720x720-AdY.jpg", 3 | "description":null, 4 | "username":"karimdebbache" 5 | } 6 | -------------------------------------------------------------------------------- /distribution/kubernetes/overlays/docker-for-desktop/ingress/minio/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | 4 | components: 5 | - ../../../../base/components/storage/embedded/ingress 6 | -------------------------------------------------------------------------------- /fake-external-podcast/src/conf/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name localhost; 4 | gzip_static on; 5 | 6 | location / { 7 | autoindex on; 8 | root /var/www/podcast/; 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /frontend-angularjs/gulp/utils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angularjs-jspm-seed 3 | * Created by kdavin on 20/11/2015. 4 | */ 5 | 6 | Array.prototype.flatMap = function(lambda) { 7 | return Array.prototype.concat.apply([], this.map(lambda)); 8 | }; -------------------------------------------------------------------------------- /backend/src/test/resources/__files/service/htmlService/jsoup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |{{ item.pubDate | date: 'dd/MM/yyyy à HH:mm'}}
15 | 16 |This item isn't readable inside your browser...
25 |public.uuid_nil.RETURN_VALUE.
27 | */
28 | public static final Parameterpublic.uuid_ns_dns.RETURN_VALUE.
27 | */
28 | public static final Parameterpublic.uuid_ns_oid.RETURN_VALUE.
27 | */
28 | public static final Parameterpublic.uuid_ns_url.RETURN_VALUE.
27 | */
28 | public static final Parameterpublic.uuid_ns_x500.RETURN_VALUE.
27 | */
28 | public static final Parameterpublic.uuid_generate_v1.RETURN_VALUE.
27 | */
28 | public static final Parameterpublic.uuid_generate_v4.RETURN_VALUE.
27 | */
28 | public static final Parameterpublic.uuid_generate_v1mc.RETURN_VALUE.
27 | */
28 | public static final Parameter