diff --git a/multimedia/Makefile b/multimedia/Makefile --- a/multimedia/Makefile +++ b/multimedia/Makefile @@ -220,6 +220,7 @@ SUBDIR += mediaelch SUBDIR += mediainfo SUBDIR += mediamtx + SUBDIR += mediathekarr SUBDIR += mencoder SUBDIR += minisatip SUBDIR += minitube diff --git a/multimedia/mediathekarr/Makefile b/multimedia/mediathekarr/Makefile new file mode 100644 --- /dev/null +++ b/multimedia/mediathekarr/Makefile @@ -0,0 +1,73 @@ +PORTNAME= mediathekarr +DISTVERSIONPREFIX= v +DISTVERSION= 1.0-beta.6 +CATEGORIES= multimedia + +MAINTAINER= mdw@FreeBSD.org +COMMENT= German media libraries in Prowlarr, Sonarr and Radarr +WWW= https://github.com/PCJones/MediathekArr/ + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= dotnet:lang/dotnet +LIB_DEPENDS= libbrotlidec.so:archivers/brotli \ + libbrotlienc.so:archivers/brotli \ + libinotify.so:devel/libinotify \ + libgssapi_krb5.so:security/krb5 \ + libunwind-x86_64.so:devel/libunwind \ + libunwind.so:devel/libunwind +RUN_DEPENDS= mkvtoolnix>0:multimedia/mkvtoolnix + +USES= ssl + +USE_GITHUB= yes +GH_ACCOUNT= PCJones +GH_PROJECT= MediathekArr + +USE_RC_SUBR= mediathekarr_downloader mediathekarr_server +SUB_FILES= pkg-message + +DOTNET_ARCH= ${ARCH:S/amd64/x64/:S/aarch64/arm64/} +DOTNET_CMD= ${SETENV} HOME=${WRKDIR} ${LOCALBASE}/bin/dotnet +NUGET_GROUPS= NUGET +NUGET_NUPKGS= Microsoft.OpenApi:1.6.17 \ + Microsoft.AspNetCore.OpenApi:9.0.0 \ + Newtonsoft.Json:13.0.3 \ + Scalar.AspNetCore:1.2.44 \ + Microsoft.Extensions.Configuration.Abstractions:9.0.0 \ + Microsoft.Extensions.Configuration.Binder:9.0.0 \ + Microsoft.Extensions.Configuration:9.0.0 \ + Microsoft.Extensions.DependencyInjection.Abstractions:9.0.0 \ + Microsoft.Extensions.DependencyInjection:9.0.0 \ + Microsoft.Extensions.Logging:9.0.0 \ + Microsoft.Extensions.Logging.Console:9.0.0 \ + Microsoft.Extensions.Logging.Abstractions:9.0.0 \ + Microsoft.Extensions.Logging.Configuration:9.0.0 \ + Microsoft.Extensions.Options.ConfigurationExtensions:9.0.0 \ + Microsoft.Extensions.Options:9.0.0 \ + Microsoft.Extensions.Primitives:9.0.0 + +.include "nuget.mk" + +pre-fetch: + @-${_NUGET_FETCH} + +post-patch: + ${CP} ${FILESDIR}/nuget.config ${WRKSRC}/ && \ + ${REINPLACE_CMD} -e 's|%%DISTDIR%%|${DISTDIR}|' \ + -e 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/nuget.config + +do-build: + cd ${WRKSRC} && \ + ${DOTNET_CMD} restore -r freebsd.${_OSVERSION_MAJOR}-${DOTNET_ARCH} --packages ${WRKDIR}/packages && \ + ${DOTNET_CMD} publish -o publish --configuration Release --packages ${WRKDIR}/packages -r freebsd.${_OSVERSION_MAJOR}-${DOTNET_ARCH} --self-contained "-p:DebugSymbols=false;DebugType=none;UseAppHost=true;PublishReadyToRun=false;RuntimeIdentifiers=freebsd.${_OSVERSION_MAJOR}-${DOTNET_ARCH};" + +do-install: + cd ${WRKSRC} && \ + ${CP} -r ${WRKSRC}/publish ${STAGEDIR}${PREFIX}/lib/${PORTNAME} + @${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/config + ${INSTALL_DATA} ${FILESDIR}/${PORTNAME}.json.sample \ + ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/config + +.include diff --git a/multimedia/mediathekarr/distinfo b/multimedia/mediathekarr/distinfo new file mode 100644 --- /dev/null +++ b/multimedia/mediathekarr/distinfo @@ -0,0 +1,35 @@ +TIMESTAMP = 1750718516 +SHA256 (nuget/microsoft.aspnetcore.openapi.9.0.0.nupkg) = 567608a4cf346d63b3a6cd3aaffc74760545f54f3dbf39245de613da125f04fb +SIZE (nuget/microsoft.aspnetcore.openapi.9.0.0.nupkg) = 136731 +SHA256 (nuget/microsoft.extensions.configuration.abstractions.9.0.0.nupkg) = c6d1b65120bd426d1fd8d9fa8e4724969c840d3de170464ec4ec137347a9eee7 +SIZE (nuget/microsoft.extensions.configuration.abstractions.9.0.0.nupkg) = 127574 +SHA256 (nuget/microsoft.extensions.configuration.binder.9.0.0.nupkg) = e9a8d859c34e417d96a9fb609e852656dcaf0b59243ceb530a27f80222847df5 +SIZE (nuget/microsoft.extensions.configuration.binder.9.0.0.nupkg) = 366133 +SHA256 (nuget/microsoft.extensions.configuration.9.0.0.nupkg) = b812de6f8cfad32f33ecd7a51ecf6e4f770b0fac0e0e4770c9f266ebf6192c33 +SIZE (nuget/microsoft.extensions.configuration.9.0.0.nupkg) = 159967 +SHA256 (nuget/microsoft.extensions.dependencyinjection.abstractions.9.0.0.nupkg) = 0a7715c24299e42b081b63b4f8e33da97b985e1de9e941b2b9e4c748b0d52fe7 +SIZE (nuget/microsoft.extensions.dependencyinjection.abstractions.9.0.0.nupkg) = 241242 +SHA256 (nuget/microsoft.extensions.dependencyinjection.9.0.0.nupkg) = 7401f9d8f3e54cb9fb5fed5a23fee7a5dac3ccc1053cc5d1bf88ac5756bed789 +SIZE (nuget/microsoft.extensions.dependencyinjection.9.0.0.nupkg) = 291528 +SHA256 (nuget/microsoft.extensions.logging.abstractions.9.0.0.nupkg) = 8814ecf6dc2359715e111b78084ae42087282595358eb775456088f15e63eca5 +SIZE (nuget/microsoft.extensions.logging.abstractions.9.0.0.nupkg) = 777117 +SHA256 (nuget/microsoft.extensions.logging.configuration.9.0.0.nupkg) = cac3e306aeb8a7a24ce0499e56776bc979e12d61d862ccf3955a4fc515a4524c +SIZE (nuget/microsoft.extensions.logging.configuration.9.0.0.nupkg) = 122529 +SHA256 (nuget/microsoft.extensions.logging.console.9.0.0.nupkg) = 376b7d1147654ba8a9a43e19d38a9453206e438b4a491ffc4e998a49c6f9cd1c +SIZE (nuget/microsoft.extensions.logging.console.9.0.0.nupkg) = 228423 +SHA256 (nuget/microsoft.extensions.logging.9.0.0.nupkg) = 911d7a73e37c9d0ad67982da8ea9d73e0ed18978d931214b9ca2c4b3855f8dc3 +SIZE (nuget/microsoft.extensions.logging.9.0.0.nupkg) = 200977 +SHA256 (nuget/microsoft.extensions.options.configurationextensions.9.0.0.nupkg) = af5677b04552223787d942a3f8a323f3a85aafaf20ff3c9b4aaa128c44817280 +SIZE (nuget/microsoft.extensions.options.configurationextensions.9.0.0.nupkg) = 117122 +SHA256 (nuget/microsoft.extensions.options.9.0.0.nupkg) = 0d3e5eb80418fc8b41e4b3c8f16229e839ddd254af0513f7e6f1643970baf1c9 +SIZE (nuget/microsoft.extensions.options.9.0.0.nupkg) = 453683 +SHA256 (nuget/microsoft.extensions.primitives.9.0.0.nupkg) = 64d2eeb0ad4246eab9059619303a9acf4e0f20a49c13667bb12dad7a153b109b +SIZE (nuget/microsoft.extensions.primitives.9.0.0.nupkg) = 176058 +SHA256 (nuget/microsoft.openapi.1.6.17.nupkg) = 5b1f4fc251093cd32ad64a79f672499cb1d0fb2361a824ee75ca249a53feb529 +SIZE (nuget/microsoft.openapi.1.6.17.nupkg) = 205341 +SHA256 (nuget/newtonsoft.json.13.0.3.nupkg) = 872fc189e638ab1056555b03aaa38f68bcb54286e221aa646eb1129babf63c77 +SIZE (nuget/newtonsoft.json.13.0.3.nupkg) = 2441966 +SHA256 (nuget/scalar.aspnetcore.1.2.44.nupkg) = c4ecb8b0a5c15ecd83d89b2af6f162e1305bec062b943d903f062859ae6768bb +SIZE (nuget/scalar.aspnetcore.1.2.44.nupkg) = 1684752 +SHA256 (PCJones-MediathekArr-v1.0-beta.6_GH0.tar.gz) = 468ed05ba735f2bf512101d8c6fb1b40ea3f806add48ad0bc6888266dc44f31a +SIZE (PCJones-MediathekArr-v1.0-beta.6_GH0.tar.gz) = 63730 diff --git a/multimedia/mediathekarr/files/mediathekarr.json.sample b/multimedia/mediathekarr/files/mediathekarr.json.sample new file mode 100644 --- /dev/null +++ b/multimedia/mediathekarr/files/mediathekarr.json.sample @@ -0,0 +1,9 @@ +{ + "IncompletePath": "/data/mediathek/incomplete", + "CompletePath": "/data/mediathek/complete", + "Categories": [ + "tv", + "movies", + "mediathek" + ] +} diff --git a/multimedia/mediathekarr/files/mediathekarr_downloader.in b/multimedia/mediathekarr/files/mediathekarr_downloader.in new file mode 100644 --- /dev/null +++ b/multimedia/mediathekarr/files/mediathekarr_downloader.in @@ -0,0 +1,78 @@ +#!/bin/sh + +# PROVIDE: mediathekarr_downloader +# REQUIRE: LOGIN NETWORKING +# KEYWORD: shutdown + +# Add the following lines to /etc/rc.conf to enable mediathekarr_downloader: +# +# mediathekarr_downloader_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable MediathekarrDownloader. +# +# mediathekarr_downloader_logdir (str): Set to "/var/log/mediathekarr" by default. +# Directory path for MediathekarrDownloader and daemon(8) logs. +# +# mediathekarr_downloader_logfile (str): Set to "mediathekarr_downloader.log" by default. +# Name of MediathekarrDownloader log file. +# +# mediathekarr_downloader_piddir (str): Set to "/var/run/mediathekarr" by default. +# Directory for MediathekarrDownloader and daemon(8) PID files. +# +# mediathekarr_downloader_pidfile (str): Set to "mediathekarr_downloader.pid" by default. +# PID file for the MediathekarrDownloader. +# +# mediathekarr_downloader_user (str): Set to "nobody" by default. +# User to run MediathekarrDownloader. +# +# mediathekarr_downloader_group (str): Set to "nogroup" by default. +# Group to run MediathekarrDownloader. +# +# mediathekarr_downloader_listen (str): Set to "http://[::]:5007" by default. +# Address and port MediathekarrDownloader. + +. /etc/rc.subr + +name=mediathekarr_downloader +rcvar=mediathekarr_downloader_enable + +start_precmd="${name}_precmd" +extra_commands="reload" + +load_rc_config ${name} + +: ${mediathekarr_downloader_enable:="no"} +: ${mediathekarr_downloader_logdir:="/var/log/mediathekarr"} +: ${mediathekarr_downloader_logfile:="mediathekarr_downloader.log"} +: ${mediathekarr_downloader_piddir:="/var/run/mediathekarr"} +: ${mediathekarr_downloader_pidfile:="mediathekarr_downloader.pid"} +: ${mediathekarr_downloader_user:="nobody"} +: ${mediathekarr_downloader_group:="nogroup"} +: ${mediathekarr_downloader_listen:="http://[::]:5007"} + +procname="/usr/local/lib/mediathekarr/MediathekArrDownloader" +pidfile="${mediathekarr_downloader_piddir}/${mediathekarr_downloader_pidfile}" +daemonpidfile="${mediathekarr_downloader_piddir}/daemon_${name}.pid" +logfile="${mediathekarr_downloader_logdir}/${mediathekarr_downloader_logfile}" +command="/usr/sbin/daemon" + +mediathekarr_downloader_chdir="/usr/local/lib/mediathekarr/" + +mediathekarr_downloader_precmd() +{ + rc_flags="-p ${pidfile} -P ${daemonpidfile} -f -H -o ${logfile} ${procname} --urls ${mediathekarr_downloader_listen}" + + if [ ! -d ${mediathekarr_downloader_piddir} ] ; then + install -d -o ${mediathekarr_downloader_user} -g ${mediathekarr_downloader_group} ${mediathekarr_downloader_piddir} + fi + + if [ ! -d ${mediathekarr_downloader_logdir} ] ; then + install -d -o ${mediathekarr_downloader_user} -g ${mediathekarr_downloader_group} ${mediathekarr_downloader_logdir} + fi +} + +mediathekarr_downloader_postcmd() +{ + rm -f $pidfile $daemonpidfile +} + +run_rc_command "$1" diff --git a/multimedia/mediathekarr/files/mediathekarr_server.in b/multimedia/mediathekarr/files/mediathekarr_server.in new file mode 100644 --- /dev/null +++ b/multimedia/mediathekarr/files/mediathekarr_server.in @@ -0,0 +1,78 @@ +#!/bin/sh + +# PROVIDE: mediathekarr_server +# REQUIRE: LOGIN NETWORKING +# KEYWORD: shutdown + +# Add the following lines to /etc/rc.conf to enable mediathekarr_server: +# +# mediathekarr_server_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable MediathekarrServer. +# +# mediathekarr_server_logdir (str): Set to "/var/log/mediathekarr" by default. +# Directory path for MediathekarrServer and daemon(8) logs. +# +# mediathekarr_server_logfile (str): Set to "mediathekarr_server.log" by default. +# Name of MediathekarrServer log file. +# +# mediathekarr_server_piddir (str): Set to "/var/run/mediathekarr" by default. +# Directory for MediathekarrServer and daemon(8) PID files. +# +# mediathekarr_server_pidfile (str): Set to "mediathekarr_server.pid" by default. +# PID file for the MediathekarrServer. +# +# mediathekarr_server_user (str): Set to "nobody" by default. +# User to run MediathekarrServer. +# +# mediathekarr_server_group (str): Set to "nogroup" by default. +# Group to run MediathekarrServer. +# +# mediathekarr_server_listen (str): Set to "http://[::]:5008" by default. +# Address and port MediathekarrServer. + +. /etc/rc.subr + +name=mediathekarr_server +rcvar=mediathekarr_server_enable + +start_precmd="${name}_precmd" +extra_commands="reload" + +load_rc_config ${name} + +: ${Mediathekarr_server_enable:="no"} +: ${mediathekarr_server_logdir:="/var/log/mediathekarr"} +: ${mediathekarr_server_logfile:="mediathekarr_server.log"} +: ${mediathekarr_server_piddir:="/var/run/mediathekarr"} +: ${mediathekarr_server_pidfile:="mediathekarr_server.pid"} +: ${mediathekarr_server_user:="nobody"} +: ${mediathekarr_server_group:="nogroup"} +: ${mediathekarr_server_listen:="http://[::]:5008"} + +procname="/usr/local/lib/mediathekarr/MediathekArrServer" +pidfile="${mediathekarr_server_piddir}/${mediathekarr_server_pidfile}" +daemonpidfile="${mediathekarr_server_piddir}/daemon_${name}.pid" +logfile="${mediathekarr_server_logdir}/${mediathekarr_server_logfile}" +command="/usr/sbin/daemon" + +mediathekarr_server_chdir="/usr/local/lib/mediathekarr/" + +mediathekarr_server_precmd() +{ + rc_flags="-p ${pidfile} -P ${daemonpidfile} -f -H -o ${logfile} ${procname} --urls ${mediathekarr_server_listen}" + + if [ ! -d ${mediathekarr_server_piddir} ] ; then + install -d -o ${mediathekarr_server_user} -g ${mediathekarr_server_group} ${mediathekarr_server_piddir} + fi + + if [ ! -d ${mediathekarr_server_logdir} ] ; then + install -d -o ${mediathekarr_server_user} -g ${mediathekarr_server_group} ${mediathekarr_server_logdir} + fi +} + +mediathekarr_server_postcmd() +{ + rm -f $pidfile $daemonpidfile +} + +run_rc_command "$1" diff --git a/multimedia/mediathekarr/files/nuget.config b/multimedia/mediathekarr/files/nuget.config new file mode 100644 --- /dev/null +++ b/multimedia/mediathekarr/files/nuget.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/multimedia/mediathekarr/files/pkg-message.in b/multimedia/mediathekarr/files/pkg-message.in new file mode 100644 --- /dev/null +++ b/multimedia/mediathekarr/files/pkg-message.in @@ -0,0 +1,30 @@ +[ +{ type: install + message: <