ydl-podcast 1.9.17__tar.gz → 1.9.19__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19}/PKG-INFO +11 -11
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19}/pyproject.toml +3 -3
- ydl_podcast-1.9.17/.github/dependabot.yml +0 -6
- ydl_podcast-1.9.17/.github/workflows/tag-versions.yml +0 -10
- ydl_podcast-1.9.17/Dockerfile +0 -24
- ydl_podcast-1.9.17/Jenkinsfile +0 -107
- ydl_podcast-1.9.17/LICENSE +0 -19
- ydl_podcast-1.9.17/config.sample.yaml +0 -24
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19}/README.md +0 -0
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19/src}/ydl_podcast/__init__.py +0 -0
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19/src}/ydl_podcast/__main__.py +0 -0
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19/src}/ydl_podcast/templates/episode_nfo.py +0 -0
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19/src}/ydl_podcast/templates/feed.py +0 -0
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19/src}/ydl_podcast/templates/index.py +0 -0
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19/src}/ydl_podcast/templates/show_nfo.py +0 -0
- {ydl_podcast-1.9.17 → ydl_podcast-1.9.19/src}/ydl_podcast/templates/style.py +0 -0
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: ydl-podcast
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.19
|
|
4
4
|
Summary: A simple tool to generate Podcast-like RSS feeds from youtube (or other youtube-dl supported services) channels, using youtube-dl/yt-dlp
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Keywords: podcast,youtube-dl
|
|
6
|
+
Author: nbr23
|
|
7
7
|
Author-email: nbr23 <max@23.tf>
|
|
8
8
|
License: MIT
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Requires-Python: >=3.9
|
|
9
|
+
Requires-Dist: yt-dlp>=2025.10.22
|
|
10
|
+
Requires-Dist: pyyaml==6.0.2
|
|
12
11
|
Requires-Dist: jinja2>=3.1.2
|
|
13
12
|
Requires-Dist: markupsafe>=2.1.1
|
|
14
13
|
Requires-Dist: pillow==10.4.0
|
|
15
|
-
Requires-Dist:
|
|
16
|
-
Requires-Dist: yt-dlp>=2025.10.22
|
|
14
|
+
Requires-Dist: youtube-dl ; extra == 'youtube-dl'
|
|
15
|
+
Requires-Dist: yt-dlp>=2025.10.22 ; extra == 'yt-dlp'
|
|
16
|
+
Requires-Python: >=3.9
|
|
17
|
+
Project-URL: homepage, https://github.com/nbr23/ydl-podcast
|
|
18
|
+
Project-URL: repository, https://github.com/nbr23/ydl-podcast
|
|
17
19
|
Provides-Extra: youtube-dl
|
|
18
|
-
Requires-Dist: youtube-dl; extra == 'youtube-dl'
|
|
19
20
|
Provides-Extra: yt-dlp
|
|
20
|
-
Requires-Dist: yt-dlp>=2025.10.22; extra == 'yt-dlp'
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
|
|
23
23
|
[](https://pypi.org/project/ydl-podcast/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "ydl-podcast"
|
|
3
|
-
version = "1.9.
|
|
3
|
+
version = "1.9.19"
|
|
4
4
|
description = "A simple tool to generate Podcast-like RSS feeds from youtube (or other youtube-dl supported services) channels, using youtube-dl/yt-dlp"
|
|
5
5
|
license = { text = "MIT" }
|
|
6
6
|
authors = [
|
|
@@ -29,8 +29,8 @@ repository = "https://github.com/nbr23/ydl-podcast"
|
|
|
29
29
|
ydl-podcast = "ydl_podcast.__main__:main"
|
|
30
30
|
|
|
31
31
|
[build-system]
|
|
32
|
-
requires = ["
|
|
33
|
-
build-backend = "
|
|
32
|
+
requires = ["uv_build>=0.9.6,<0.10.0"]
|
|
33
|
+
build-backend = "uv_build"
|
|
34
34
|
|
|
35
35
|
[tool.hatch.build.targets.wheel]
|
|
36
36
|
packages = ["ydl_podcast"]
|
ydl_podcast-1.9.17/Dockerfile
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
FROM python:alpine3.17 as build
|
|
2
|
-
ARG YTDL_MODULE=yt-dlp
|
|
3
|
-
|
|
4
|
-
COPY pyproject.toml .
|
|
5
|
-
COPY ydl_podcast ydl_podcast
|
|
6
|
-
COPY README.md .
|
|
7
|
-
|
|
8
|
-
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/
|
|
9
|
-
RUN uv venv /usr/local/python-env && \
|
|
10
|
-
source /usr/local/python-env/bin/activate && \
|
|
11
|
-
uv pip install ".[${YTDL_MODULE}]"
|
|
12
|
-
|
|
13
|
-
FROM python:alpine3.17
|
|
14
|
-
ARG YTDL_MODULE=yt-dlp
|
|
15
|
-
ENV PYTHON_ENV="/usr/local/python-env"
|
|
16
|
-
ENV PATH="$PYTHON_ENV/bin:$PATH"
|
|
17
|
-
|
|
18
|
-
RUN apk add --no-cache ffmpeg tzdata mailcap
|
|
19
|
-
|
|
20
|
-
COPY --from=build /usr/local/python-env $PYTHON_ENV
|
|
21
|
-
|
|
22
|
-
WORKDIR /app
|
|
23
|
-
|
|
24
|
-
CMD ["python", "-m", "ydl_podcast"]
|
ydl_podcast-1.9.17/Jenkinsfile
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
pipeline {
|
|
2
|
-
agent any
|
|
3
|
-
|
|
4
|
-
options {
|
|
5
|
-
ansiColor('xterm')
|
|
6
|
-
disableConcurrentBuilds()
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
environment {
|
|
11
|
-
PYPI_TOKEN = credentials('pypi_token')
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
stages {
|
|
15
|
-
stage('Checkout'){
|
|
16
|
-
steps {
|
|
17
|
-
checkout scm
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
stage('Get Jenkins home source volume') {
|
|
21
|
-
steps {
|
|
22
|
-
script {
|
|
23
|
-
env.JENKINS_HOME_VOL_SRC = getJenkinsDockerHomeVolumeSource();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
stage('Get package version') {
|
|
28
|
-
steps {
|
|
29
|
-
script {
|
|
30
|
-
PACKAGE_VERSION = sh (
|
|
31
|
-
script: """
|
|
32
|
-
cat pyproject.toml | grep "^version" | sed -e "s/^version = \\"\\([0-9.]\\+\\)\\"/\\1/g"
|
|
33
|
-
""",
|
|
34
|
-
returnStdout: true
|
|
35
|
-
).trim();
|
|
36
|
-
echo "Building v${PACKAGE_VERSION}"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
stage('Build') {
|
|
41
|
-
steps {
|
|
42
|
-
sh '''
|
|
43
|
-
# If we are within docker, we need to hack around to get the volume mount path on the host system for our docker runs down below
|
|
44
|
-
if docker inspect `hostname` 2>/dev/null; then
|
|
45
|
-
REAL_PWD=$(echo $PWD | sed "s|$AGENT_WORKDIR|$JENKINS_HOME_VOL_SRC|")
|
|
46
|
-
else
|
|
47
|
-
REAL_PWD=$PWD
|
|
48
|
-
fi
|
|
49
|
-
docker run --rm -v $REAL_PWD:/app -w /app python:3-slim-buster bash -c "pip install uv && uv build"
|
|
50
|
-
'''
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
stage('Prep buildx') {
|
|
54
|
-
steps {
|
|
55
|
-
script {
|
|
56
|
-
env.BUILDX_BUILDER = getBuildxBuilder();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
stage('Build Docker image') {
|
|
61
|
-
steps {
|
|
62
|
-
withCredentials([usernamePassword(credentialsId: 'dockerhub', usernameVariable: 'DOCKERHUB_CREDENTIALS_USR', passwordVariable: 'DOCKERHUB_CREDENTIALS_PSW')]) {
|
|
63
|
-
sh 'docker login -u $DOCKERHUB_CREDENTIALS_USR -p "$DOCKERHUB_CREDENTIALS_PSW"'
|
|
64
|
-
}
|
|
65
|
-
sh """
|
|
66
|
-
docker buildx build \
|
|
67
|
-
--pull \
|
|
68
|
-
--builder \$BUILDX_BUILDER \
|
|
69
|
-
--platform linux/amd64,linux/arm64 \
|
|
70
|
-
-t nbr23/ydl-podcast:latest \
|
|
71
|
-
-t nbr23/ydl-podcast:yt-dlp \
|
|
72
|
-
-t nbr23/ydl-podcast:${GIT_COMMIT}-`date +%s`-yt-dlp \
|
|
73
|
-
-t nbr23/ydl-podcast:v${PACKAGE_VERSION} \
|
|
74
|
-
${ "$GIT_BRANCH" == "master" ? "--push" : ""} .
|
|
75
|
-
"""
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
stage('Publish pypi package') {
|
|
79
|
-
when { branch 'master' }
|
|
80
|
-
steps {
|
|
81
|
-
sh '''
|
|
82
|
-
# If we are within docker, we need to hack around to get the volume mount path on the host system for our docker runs down below
|
|
83
|
-
if docker inspect `hostname` 2>/dev/null; then
|
|
84
|
-
REAL_PWD=$(echo $PWD | sed "s|$AGENT_WORKDIR|$JENKINS_HOME_VOL_SRC|")
|
|
85
|
-
else
|
|
86
|
-
REAL_PWD=$PWD
|
|
87
|
-
fi
|
|
88
|
-
docker run --rm -v $REAL_PWD:/app -w /app python:3-slim-buster bash -c "pip install uv && uv build && uv publish --token $PYPI_TOKEN"
|
|
89
|
-
'''
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
stage('Sync github repo') {
|
|
93
|
-
when { branch 'master' }
|
|
94
|
-
steps {
|
|
95
|
-
syncRemoteBranch('git@github.com:nbr23/ydl-podcast.git', 'master')
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
post {
|
|
101
|
-
always {
|
|
102
|
-
sh "sudo rm -rf ./dist"
|
|
103
|
-
sh "docker buildx stop \$BUILDX_BUILDER || true"
|
|
104
|
-
sh "docker buildx rm \$BUILDX_BUILDER || true"
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
ydl_podcast-1.9.17/LICENSE
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
MIT License Copyright (c) 2020 Maxence Ardouin
|
|
2
|
-
|
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
in the Software without restriction, including without limitation the rights
|
|
6
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
copies of the Software, and to permit persons to whom the Software is furnished
|
|
8
|
-
to do so, subject to the following conditions:
|
|
9
|
-
|
|
10
|
-
The above copyright notice and this permission notice (including the next
|
|
11
|
-
paragraph) shall be included in all copies or substantial portions of the
|
|
12
|
-
Software.
|
|
13
|
-
|
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
16
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
|
17
|
-
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
|
19
|
-
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
subscriptions:
|
|
2
|
-
- name: MyPodcast
|
|
3
|
-
url: https://youtube.com
|
|
4
|
-
retention_days: 14 # How old is the oldest video to download and keep locally
|
|
5
|
-
initialize: True # Download the whole channel on first run
|
|
6
|
-
download_last: 1 # Only download the last video at each run
|
|
7
|
-
audio_only: True # Extract and keep audio only
|
|
8
|
-
format: mp3 # Force end format
|
|
9
|
-
filename_template: '%(id)s.%(ext)s' # Use this format for files saved from this subscription
|
|
10
|
-
- name: MyPodcast2
|
|
11
|
-
url: https://youtube.com
|
|
12
|
-
retention_days: 14 # How old is the oldest video to download and keep locally
|
|
13
|
-
initialize: True # Download the whole channel on first run
|
|
14
|
-
download_last: 1 # Only download the last video at each run
|
|
15
|
-
ydl_options: # Add custom youtube-dl options
|
|
16
|
-
writesubtitles: True # Write subtitle file
|
|
17
|
-
nfo_files: True # Generates .nfo files for each download and for the subscription
|
|
18
|
-
private: True # Exclude from index
|
|
19
|
-
|
|
20
|
-
output_dir: /var/www/html/podcast/
|
|
21
|
-
url_root: https:///podcast.example.com/
|
|
22
|
-
youtube-dl-module: youtube-dl
|
|
23
|
-
index_enabled: False # Create an index.html file indexing the subscriptions
|
|
24
|
-
style_rss_feed: True # Add XSLT Styling to RSS Feed
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|