Skip to content
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
783c5a5
update core doc detail & architecture
Sn0wAlice Feb 25, 2026
8bf044e
add dev file, scripts and setup
Sn0wAlice Feb 25, 2026
0475f56
migrate view.py to clean multi file
Sn0wAlice Feb 25, 2026
3c8dfca
migrate from Materialize CSS to TailwindCSS
Sn0wAlice Feb 25, 2026
bb51fd9
migrate from Materialize CSS to TailwindCSS - patch
Sn0wAlice Feb 25, 2026
5fb5f45
purge empty forms
Sn0wAlice Feb 25, 2026
97b43b8
URL routing patch
Sn0wAlice Feb 25, 2026
846dbbf
cleanup images manager
Sn0wAlice Feb 25, 2026
d8ceb56
migrate view.py to clean multi file
Sn0wAlice Feb 25, 2026
316da32
update core doc detail & architecture
tcely Feb 26, 2026
99819e7
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Feb 26, 2026
62d9802
Add blank lines
tcely Feb 26, 2026
71a1854
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Feb 26, 2026
b97ff2f
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Feb 26, 2026
96c28cd
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Feb 26, 2026
68dbd05
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Feb 26, 2026
173bb5a
Download with `asfald` in scripts/setup-dev.sh
tcely Feb 26, 2026
2d017e6
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Mar 23, 2026
b77c6c5
feat: integrate tailwindcss into the build
tcely Mar 24, 2026
6975b93
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Mar 24, 2026
644778e
feat: integrate tailwindcss into the build
tcely Mar 24, 2026
23b0633
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Mar 24, 2026
0427a25
Remove django-sass-processor from Pipfile
tcely Mar 24, 2026
b98f243
Add pycodestyle to development packages
tcely Mar 24, 2026
04434a6
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Mar 24, 2026
c14107c
fix: fontawesome was broken
tcely Mar 24, 2026
c8903d4
Merge branch 'test-Sn0wAlice-pr-1402' into main
tcely Mar 24, 2026
b05ef85
fix: broken symbolic links
tcely Mar 24, 2026
c641e94
Add FontAwesome stylesheet to base.html
tcely Mar 24, 2026
95adffc
Remove Font Awesome import from tubesync.css
tcely Mar 24, 2026
865c57f
Link up fontawesome CSS and web font files
tcely Mar 24, 2026
542d10e
Allow a different tasks directory for `sqlite_tasks`
tcely Mar 24, 2026
3ae0448
Add pycodestyle to dev-packages
tcely Mar 24, 2026
207ba7b
Download and verify the `tailwindcss` CLI binary
tcely Mar 24, 2026
261fce5
Run tests for PRs targeting `test-*` branches too
tcely Mar 24, 2026
27e685d
Stop using `ContentFile`
tcely Mar 24, 2026
37a3943
Split up tubesync/sync/views.py
tcely Mar 24, 2026
56a36a7
Point at the wiki and tweak the README
tcely Mar 24, 2026
6db7a9a
Release for 2026-004
tcely Mar 27, 2026
afd9503
Upgrade no-response
tcely Mar 28, 2026
e6afb24
Create fettle.pl
tcely Mar 28, 2026
31db488
Create debconf.diff
tcely Mar 28, 2026
40a146e
Update Dockerfile
tcely Mar 28, 2026
bec2933
Merge pull request #1436 from meeb/release-2026-004
tcely Mar 28, 2026
97dd194
chore: move outputs into the FFmpeg action
tcely Mar 28, 2026
dd0d1a8
chore: clean up white-space
tcely Mar 28, 2026
4502713
fix: switch to the `docker/github-builder` reusable action
tcely Mar 28, 2026
dc6ed94
fix: clean up outputs for the info job
tcely Mar 28, 2026
3c5022e
chore: increase the target version for python
tcely Mar 28, 2026
54f7975
fix: use `uv` to install everything for tests
tcely Mar 28, 2026
b27be89
fix(no-response): use the issue branch until the next release
tcely Mar 29, 2026
61d97ef
fix(no-response): use the releases branch
tcely Mar 30, 2026
b30d792
Merge pull request #1412 from meeb/tcely-docker
tcely Mar 31, 2026
bc17527
address PR #1402 review feedback
Sn0wAlice Mar 31, 2026
01a77b3
use shasum.py instead of sha256sum for cross-platform checksum verifi…
Sn0wAlice Mar 31, 2026
0cd986b
Update scripts/setup-dev.sh
Sn0wAlice Mar 31, 2026
c72e69a
Update scripts/setup-dev.sh
Sn0wAlice Mar 31, 2026
e15e8d3
Merge pull request #1437 from meeb/tcely-release-workflow
tcely Mar 31, 2026
5be4200
cherry-pick #c6878ed
Sn0wAlice Mar 31, 2026
d762cec
Rework ARCH & OS
tcely Apr 1, 2026
b4bbb9f
DRY cases for TW_BIN
tcely Apr 1, 2026
15c7998
Adjust paths for a tailwind subdirectory
tcely Apr 1, 2026
413b8bc
Update and rename tubesync/common/static/styles/tubesync.css to tubes…
tcely Apr 1, 2026
b86ad7f
Use the `get_usable_cpu_count` function
tcely Apr 1, 2026
b1a16ba
Remove the now unused `os` import
tcely Apr 1, 2026
8b832ef
Remove files that were added to the wiki
tcely Apr 1, 2026
6eba36d
Use individual stylesheets
tcely Apr 1, 2026
0e221f2
Merge branch 'main' into split-pr-1402
tcely Apr 1, 2026
4844dd3
Add Font Awesome dependency analysis script
tcely Apr 1, 2026
e1449fb
Add the `get_usable_cpu_count` function
tcely Apr 1, 2026
d9ed019
Use the `get_usable_cpu_count` function
tcely Apr 1, 2026
7baac1b
Update docs/wiki
tcely Apr 1, 2026
c09a87b
Merge pull request #1440 from meeb/tcely-editing-1
tcely Apr 1, 2026
a2a0db9
Merge pull request #1434 from meeb/split-pr-1402
tcely Apr 1, 2026
fa2e9f2
Merge branch 'meeb:main' into main
tcely Apr 1, 2026
2ab0cec
update core doc detail & architecture
Sn0wAlice Feb 25, 2026
7cab194
add dev file, scripts and setup
Sn0wAlice Feb 25, 2026
e755534
migrate view.py to clean multi file
Sn0wAlice Feb 25, 2026
b9e89ee
migrate from Materialize CSS to TailwindCSS
Sn0wAlice Feb 25, 2026
849569e
migrate from Materialize CSS to TailwindCSS - patch
Sn0wAlice Feb 25, 2026
c0fe469
URL routing patch
Sn0wAlice Feb 25, 2026
4a3e63e
update core doc detail & architecture
tcely Feb 26, 2026
fb22883
Download with `asfald` in scripts/setup-dev.sh
tcely Feb 26, 2026
f6bc3b2
feat: integrate tailwindcss into the build
tcely Mar 24, 2026
0b5a3a1
feat: integrate tailwindcss into the build
tcely Mar 24, 2026
7e7dc57
Remove django-sass-processor from Pipfile
tcely Mar 24, 2026
e1b9e39
feat: integrate tailwindcss into the build
tcely Mar 24, 2026
fcb859f
fix: fontawesome was broken
tcely Mar 24, 2026
8549725
fix: broken symbolic links
tcely Mar 24, 2026
30429ae
Add FontAwesome stylesheet to base.html
tcely Mar 24, 2026
47d15d3
Remove Font Awesome import from tubesync.css
tcely Mar 24, 2026
a650ed1
address PR #1402 review feedback
Sn0wAlice Mar 31, 2026
6ce96d9
use shasum.py instead of sha256sum for cross-platform checksum verifi…
Sn0wAlice Mar 31, 2026
9a55e43
Update scripts/setup-dev.sh
Sn0wAlice Mar 31, 2026
b983f1d
Update scripts/setup-dev.sh
Sn0wAlice Mar 31, 2026
c2c2f09
Rework ARCH & OS
tcely Apr 1, 2026
79b8d34
DRY cases for TW_BIN
tcely Apr 1, 2026
22337ec
Adjust paths for a tailwind subdirectory
tcely Apr 1, 2026
ff40a5e
Update and rename tubesync/common/static/styles/tubesync.css to tubes…
tcely Apr 1, 2026
ad269e2
Remove files that were added to the wiki
tcely Apr 1, 2026
de9288b
Use individual stylesheets
tcely Apr 1, 2026
7ef98d1
Merge branch 'meeb:main' into main
tcely Apr 1, 2026
eb6a703
migrate to Django 6, update css & settings
Sn0wAlice Apr 1, 2026
64f3aab
Merge remote-tracking branch 'pr-1402/main' into pr-1402-main
tcely Apr 1, 2026
7a92aa7
Remove the duplicated import
tcely Apr 1, 2026
fd90a52
update remove_enclosed
Sn0wAlice Apr 1, 2026
063f1ba
migrate to uv
Sn0wAlice Apr 1, 2026
5e18b1f
patch tubesync/sync/views/tasks.py
Sn0wAlice Apr 1, 2026
3e11bbc
Use a single pipenv process
tcely Apr 1, 2026
6d8940a
tweak formatting
tcely Apr 1, 2026
faa6f97
remove duplicate entries
tcely Apr 1, 2026
8db60ca
move fonts.css and adjust paths
tcely Apr 1, 2026
aa060b6
refactor Makefile
tcely Apr 1, 2026
24bc84f
Add Bulma css files
tcely Apr 1, 2026
8ef799d
Create htagsum.py
tcely Apr 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -146,5 +146,10 @@ Pipfile.lock
/tubesync/tasks/*.db-shm
/tubesync/tasks/*.db-wal

# Compiled CSS
/tubesync/common/static/styles/*.css
# Tailwind CLI binary (downloaded per platform)
/tailwindcss

# Compiled CSS output (generated by Tailwind CLI)
/tubesync/common/static/styles/output.css
Comment thread
tcely marked this conversation as resolved.
Outdated
tubesync/tubesync/local_settings.py
tubesync/tubesync/downloads
4 changes: 1 addition & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ FROM tubesync-base AS tubesync-prepare-app

COPY tubesync /app

RUN --mount=type=bind,source=fontawesome-free,target=/fontawesome-free \
RUN --mount=type=bind,source=assets/fontawesome-free,target=/fontawesome-free \
set -x && \
# turn any symbolic links into files
( \
Expand Down Expand Up @@ -486,7 +486,6 @@ RUN --mount=type=cache,id=apt-lib-cache-${TARGETARCH},sharing=private,target=/va
libonig5 \
pkgconf \
python3 \
python3-libsass \
python3-pip-whl \
python3-socks \
curl \
Expand Down Expand Up @@ -679,7 +678,6 @@ RUN set -x && \
# Make absolutely sure we didn't accidentally bundle a SQLite dev database
test '!' -e /app/db.sqlite3 && \
# Run any required app commands
/usr/bin/python3 -B /app/manage.py compilescss && \
/usr/bin/python3 -B /app/manage.py collectstatic --no-input --link && \
rm -rf /config /downloads /run/app && \
# Create config, downloads and run dirs
Expand Down
8 changes: 7 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,13 @@ dev:
$(python) tubesync/manage.py runserver


build:
css:
./tailwindcss --input tubesync/common/static/styles/tubesync.css --output tubesync/common/static/styles/output.css
Comment thread
tcely marked this conversation as resolved.
Outdated

css-watch:
./tailwindcss --input tubesync/common/static/styles/tubesync.css --output tubesync/common/static/styles/output.css --watch
Comment thread
tcely marked this conversation as resolved.
Outdated

build: css
mkdir -p tubesync/media
mkdir -p tubesync/static
$(python) tubesync/manage.py collectstatic --noinput
Expand Down
104 changes: 35 additions & 69 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,30 @@ ghcr.io/meeb/tubesync:latest

# Screenshots

<details>
<summary>Click to expand screenshots</summary>

### Dashboard

![TubeSync Dashboard](https://github.com/meeb/tubesync/blob/main/docs/dashboard-v0.5.png?raw=true)
![TubeSync Dashboard](docs/assets/dashboard-v0.5.png)

### Sources overview

![TubeSync sources overview](https://github.com/meeb/tubesync/blob/main/docs/sources-v0.5.png?raw=true)
![TubeSync sources overview](docs/assets/sources-v0.5.png)

### Source details

![TubeSync source details](https://github.com/meeb/tubesync/blob/main/docs/source-v0.5.png?raw=true)
![TubeSync source details](docs/assets/source-v0.5.png)

### Media overview

![TubeSync media overview](https://github.com/meeb/tubesync/blob/main/docs/media-v0.5.png?raw=true)
![TubeSync media overview](docs/assets/media-v0.5.png)

### Media details

![TubeSync media-details](https://github.com/meeb/tubesync/blob/main/docs/media-item-v0.5.png?raw=true)
![TubeSync media-details](docs/assets/media-item-v0.5.png)

</details>


# Requirements
Expand Down Expand Up @@ -146,36 +151,9 @@ services:

## Optional authentication

Available in `v1.0` (or `:latest`) and later. If you want to enable a basic username and
password to be required to access the TubeSync dashboard you can set them with the
following environment variables:

```bash
HTTP_USER
HTTP_PASS
```

For example, in the `docker run ...` line add in:

```bash
...
-e HTTP_USER=some-username \
-e HTTP_PASS=some-secure-password \
...
```

Or in your Docker Compose file you would add in:

```yaml
...
environment:
- HTTP_USER=some-username
- HTTP_PASS=some-secure-password
...
```

When BOTH `HTTP_USER` and `HTTP_PASS` are set then basic HTTP authentication will be
enabled.
You can enable basic HTTP authentication by setting the `HTTP_USER` and `HTTP_PASS`
environment variables. See the [environment variables reference](docs/environment-variables.md#authentication)
for details.


# Updating
Expand Down Expand Up @@ -253,19 +231,27 @@ docker logs -t tubesync > TubeSync.logs.txt 2>&1
```


# Advanced usage guides
# Documentation

### Getting started

* [Development guide](docs/dev.md) - Local setup, running tests, contributing
* [Environment variables](docs/environment-variables.md) - Full configuration reference

### Usage guides

* [Using Plex](docs/plex-notes.md) - Plex integration with YouTube-Agent
* [Using cookies](docs/using-cookies.md) - Authenticate with YouTube via cookies
* [Writing custom filters](docs/custom-filters.md) - Filter media with custom Python code
* [YouTube Proof-of-Origin Tokens](docs/youtube-pot.md) - PoT setup for rate-limiting

Once you're happy using TubeSync there are some advanced usage guides for more complex
and less common features:
### Administration

* [Using Plex](https://github.com/meeb/tubesync/blob/main/docs/plex-notes.md)
* [Import existing media into TubeSync](https://github.com/meeb/tubesync/blob/main/docs/import-existing-media.md)
* [Sync or create missing metadata files](https://github.com/meeb/tubesync/blob/main/docs/create-missing-metadata.md)
* [Reset tasks from the command line](https://github.com/meeb/tubesync/blob/main/docs/reset-tasks.md)
* [Using PostgreSQL, MySQL or MariaDB as database backends](https://github.com/meeb/tubesync/blob/main/docs/other-database-backends.md)
* [YouTube Proof-of-Origin Tokens](https://github.com/meeb/tubesync/blob/main/docs/youtube-pot.md)
* [Using cookies](https://github.com/meeb/tubesync/blob/main/docs/using-cookies.md)
* [Reset metadata](https://github.com/meeb/tubesync/blob/main/docs/reset-metadata.md)
* [Import existing media](docs/import-existing-media.md) - Import already-downloaded files
* [Sync or create missing metadata](docs/create-missing-metadata.md) - Re-generate metadata files
* [Reset tasks](docs/reset-tasks.md) - Reset stuck or failed tasks from the CLI
* [Reset metadata](docs/reset-metadata.md) - Reset cached metadata
* [Using PostgreSQL, MySQL or MariaDB](docs/other-database-backends.md) - External database setup


# Warnings
Expand Down Expand Up @@ -384,29 +370,9 @@ Make sure that you have `mysql_config` or `mariadb_config` available, as require

# Advanced configuration

There are a number of other environment variables you can set. These are, mostly,
**NOT** required to be set in the default container installation, they are really only
useful if you are manually installing TubeSync in some other environment. These are:

| Name | What | Example |
| ---------------------------- | ------------------------------------------------------------- |-------------------------------------------------------------------------------|
| DJANGO_SECRET_KEY | Django's SECRET_KEY | YJySXnQLB7UVZw2dXKDWxI5lEZaImK6l |
| DJANGO_URL_PREFIX | Run TubeSync in a sub-URL on the web server | /somepath/ |
| TUBESYNC_DEBUG | Enable debugging | True |
| TUBESYNC_HOSTS | Django's ALLOWED_HOSTS, defaults to `*` | tubesync.example.com,otherhost.com |
| TUBESYNC_RESET_DOWNLOAD_DIR | Toggle resetting `/downloads` permissions, defaults to True | True |
| TUBESYNC_VIDEO_HEIGHT_CUTOFF | Smallest video height in pixels permitted to download | 240 |
| TUBESYNC_RENAME_SOURCES | Rename media files from selected sources | Source1_directory,Source2_directory |
| TUBESYNC_RENAME_ALL_SOURCES | Rename media files from all sources | True |
| TUBESYNC_DIRECTORY_PREFIX | Enable `video` and `audio` directory prefixes in `/downloads` | True |
| TUBESYNC_SHRINK_NEW | Filter unneeded information from newly retrieved metadata | True |
| TUBESYNC_SHRINK_OLD | Filter unneeded information from metadata loaded from the database | True |
| GUNICORN_WORKERS | Number of `gunicorn` (web request) workers to spawn | 3 |
| LISTEN_HOST | IP address for `gunicorn` to listen on | 127.0.0.1 |
| LISTEN_PORT | Port number for `gunicorn` to listen on | 8080 |
| HTTP_USER | Sets the username for HTTP basic authentication | some-username |
| HTTP_PASS | Sets the password for HTTP basic authentication | some-secure-password |
| DATABASE_CONNECTION | Optional external database connection details | postgresql://user:pass@host:port/database |
See the full [environment variables reference](docs/environment-variables.md) for all
available configuration options (database, web server, downloads, metadata, debugging,
etc.).


# Manual, non-containerised, installation
Expand Down
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Loading