about summary refs log tree commit diff
path: root/lib/mastodon/media_cli.rb
diff options
context:
space:
mode:
authorJeong Arm <kjwonmail@gmail.com>2022-08-25 11:40:17 +0900
committerGitHub <noreply@github.com>2022-08-25 04:40:17 +0200
commite682975afd9d476eaf938dfe753debfc20d4e603 (patch)
tree2a8f6f2713ec266130efbcf6340f715a55709d72 /lib/mastodon/media_cli.rb
parent63a5514b29d44520058260cfb64c9fbf256e366a (diff)
Add '--days' option to tootctl media refresh (#18425)
* Add '--days' option to tootctl media refresh

* Fix undefined scope
Diffstat (limited to 'lib/mastodon/media_cli.rb')
-rw-r--r--lib/mastodon/media_cli.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb
index 36ca71844..4904cc5eb 100644
--- a/lib/mastodon/media_cli.rb
+++ b/lib/mastodon/media_cli.rb
@@ -187,6 +187,7 @@ module Mastodon
     option :account, type: :string
     option :domain, type: :string
     option :status, type: :numeric
+    option :days, type: :numeric
     option :concurrency, type: :numeric, default: 5, aliases: [:c]
     option :verbose, type: :boolean, default: false, aliases: [:v]
     option :dry_run, type: :boolean, default: false
@@ -204,6 +205,8 @@ module Mastodon
 
       Use the --domain option to download attachments from a specific domain.
 
+      Use the --days option to limit attachments created within days.
+
       By default, attachments that are believed to be already downloaded will
       not be re-downloaded. To force re-download of every URL, use --force.
     DESC
@@ -224,10 +227,16 @@ module Mastodon
         scope = MediaAttachment.where(account_id: account.id)
       elsif options[:domain]
         scope = MediaAttachment.joins(:account).merge(Account.by_domain_and_subdomains(options[:domain]))
+      elsif options[:days].present?
+        scope = MediaAttachment.remote
       else
         exit(1)
       end
 
+      if options[:days].present?
+        scope = scope.where('id > ?', Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false))
+      end
+
       processed, aggregate = parallelize_with_progress(scope) do |media_attachment|
         next if media_attachment.remote_url.blank? || (!options[:force] && media_attachment.file_file_name.present?)
         next if DomainBlock.reject_media?(media_attachment.account.domain)