diff --git a/bookwyrm/management/commands/generate_preview_images.py b/bookwyrm/management/commands/generate_preview_images.py new file mode 100644 index 000000000..13eaf3a68 --- /dev/null +++ b/bookwyrm/management/commands/generate_preview_images.py @@ -0,0 +1,48 @@ +""" Generate preview images """ +import sys + +from django.core.management.base import BaseCommand + +from bookwyrm import activitystreams, models, settings, preview_images + + +def generate_preview_images(): + """generate preview images""" + print(" | Hello! I will be generating preview images for your instance.") + print("šŸ§‘ā€šŸŽØ āŽØ This might take quite long if your instance has a lot of books and users.") + print(" | āœ§ Thank you for your patience āœ§") + + # Site + sys.stdout.write(" ā†’ Site preview image: ") + preview_images.generate_site_preview_image_task() + sys.stdout.write(" OK šŸ–¼\n") + + + # Users + users = models.User.objects.filter( + local=True, + is_active=True, + ) + sys.stdout.write(" ā†’ User preview images ({}): ".format(len(users))) + for user in users: + preview_images.generate_user_preview_image_task(user.id) + sys.stdout.write(".") + sys.stdout.write(" OK šŸ–¼\n") + + # Books + books = models.Book.objects.select_subclasses().filter() + sys.stdout.write(" ā†’ Book preview images ({}): ".format(len(books))) + for book in books: + preview_images.generate_edition_preview_image_task(book.id) + sys.stdout.write(".") + sys.stdout.write(" OK šŸ–¼\n") + + print("šŸ§‘ā€šŸŽØ āŽØ Iā€™m all done! āœ§ Enjoy āœ§") + + +class Command(BaseCommand): + help = "Generate preview images" + # pylint: disable=no-self-use,unused-argument + def handle(self, *args, **options): + """run feed builder""" + generate_preview_images() diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index 9539edbaf..b0f9792d7 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -344,6 +344,7 @@ def generate_edition_preview_image_task(book_id): save_and_cleanup(image, instance=book) + @app.task def generate_user_preview_image_task(user_id): """generate preview_image for a book""" diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index ce5c4547d..b3ba312f9 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -41,10 +41,10 @@ DEFAULT_AUTO_FIELD = "django.db.models.AutoField" # Specify RGB tuple or RGB hex strings, # or "use_dominant_color_light" / "use_dominant_color_dark" -PREVIEW_BG_COLOR = "use_dominant_color_dark" +PREVIEW_BG_COLOR = "use_dominant_color_light" PREVIEW_IMG_WIDTH = 1200 PREVIEW_IMG_HEIGHT = 630 -PREVIEW_TEXT_COLOR = "#FFF" +PREVIEW_TEXT_COLOR = "#363636" # Change to "#FFF" if you use "use_dominant_color_dark" PREVIEW_DEFAULT_COVER_COLOR = "#002549" # Quick-start development settings - unsuitable for production diff --git a/bw-dev b/bw-dev index c2b63bc17..95681b115 100755 --- a/bw-dev +++ b/bw-dev @@ -107,7 +107,10 @@ case "$CMD" in populate_streams) runweb python manage.py populate_streams ;; + generate_preview_images) + runweb python manage.py generate_preview_images + ;; *) - echo "Unrecognised command. Try: build, clean, up, initdb, resetdb, makemigrations, migrate, bash, shell, dbshell, restart_celery, test, pytest, test_report, black, populate_feeds" + echo "Unrecognised command. Try: build, clean, up, initdb, resetdb, makemigrations, migrate, bash, shell, dbshell, restart_celery, test, pytest, test_report, black, populate_feeds, generate_preview_images" ;; esac