diff --git a/tubesync/sync/migrations/0004_source_media_format.py b/tubesync/sync/migrations/0004_source_media_format.py
new file mode 100644
index 0000000..f79a703
--- /dev/null
+++ b/tubesync/sync/migrations/0004_source_media_format.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.1.4 on 2020-12-18 01:55
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('sync', '0003_source_copy_thumbnails'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='source',
+ name='media_format',
+ field=models.CharField(default='{yyyymmdd}_{source}_{title}_{key}_{format}.{ext}', help_text='File format to use for saving files', max_length=200, verbose_name='media format'),
+ ),
+ ]
diff --git a/tubesync/sync/models.py b/tubesync/sync/models.py
index b7c5c0b..8761c23 100644
--- a/tubesync/sync/models.py
+++ b/tubesync/sync/models.py
@@ -174,6 +174,12 @@ class Source(models.Model):
unique=True,
help_text=_('Directory name to save the media into')
)
+ media_format = models.CharField(
+ _('media format'),
+ max_length=200,
+ default=settings.MEDIA_FORMATSTR_DEFAULT,
+ help_text=_('File format to use for saving files')
+ )
index_schedule = models.IntegerField(
_('index schedule'),
choices=IndexSchedule.choices,
diff --git a/tubesync/sync/templates/sync/source.html b/tubesync/sync/templates/sync/source.html
index 4154c40..38e03cb 100644
--- a/tubesync/sync/templates/sync/source.html
+++ b/tubesync/sync/templates/sync/source.html
@@ -43,6 +43,10 @@
Directory |
Directory {{ source.directory }} |
+
+ Media format |
+ Media format {{ source.media_format }} |
+
Index schedule |
Index schedule {{ source.get_index_schedule_display }} |
diff --git a/tubesync/sync/views.py b/tubesync/sync/views.py
index 9af6d7a..786ca53 100644
--- a/tubesync/sync/views.py
+++ b/tubesync/sync/views.py
@@ -252,10 +252,10 @@ class AddSourceView(CreateView):
template_name = 'sync/source-add.html'
model = Source
- fields = ('source_type', 'key', 'name', 'directory', 'index_schedule',
- 'delete_old_media', 'days_to_keep', 'source_resolution', 'source_vcodec',
- 'source_acodec', 'prefer_60fps', 'prefer_hdr', 'fallback',
- 'copy_thumbnails')
+ fields = ('source_type', 'key', 'name', 'directory', 'media_format',
+ 'index_schedule', 'delete_old_media', 'days_to_keep',
+ 'source_resolution', 'source_vcodec', 'source_acodec', 'prefer_60fps',
+ 'prefer_hdr', 'fallback', 'copy_thumbnails')
def __init__(self, *args, **kwargs):
self.prepopulated_data = {}
@@ -324,10 +324,10 @@ class UpdateSourceView(UpdateView):
template_name = 'sync/source-update.html'
model = Source
- fields = ('source_type', 'key', 'name', 'directory', 'index_schedule',
- 'delete_old_media', 'days_to_keep', 'source_resolution', 'source_vcodec',
- 'source_acodec', 'prefer_60fps', 'prefer_hdr', 'fallback',
- 'copy_thumbnails')
+ fields = ('source_type', 'key', 'name', 'directory', 'media_format',
+ 'index_schedule', 'delete_old_media', 'days_to_keep',
+ 'source_resolution', 'source_vcodec', 'source_acodec', 'prefer_60fps',
+ 'prefer_hdr', 'fallback', 'copy_thumbnails')
def get_success_url(self):
url = reverse_lazy('sync:source', kwargs={'pk': self.object.pk})
diff --git a/tubesync/tubesync/settings.py b/tubesync/tubesync/settings.py
index d720a5a..f28cb5a 100644
--- a/tubesync/tubesync/settings.py
+++ b/tubesync/tubesync/settings.py
@@ -147,6 +147,9 @@ YOUTUBE_DEFAULTS = {
}
+MEDIA_FORMATSTR_DEFAULT = '{yyyymmdd}_{source}_{title}_{key}_{format}.{ext}'
+
+
try:
from .local_settings import *
except ImportError as e: