|
|
|
@ -300,6 +300,66 @@ module Mastodon |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
desc 'follow ACCT', 'Make all local accounts follow account specified by ACCT' |
|
|
|
|
long_desc <<-LONG_DESC |
|
|
|
|
Make all local accounts follow an account specified by ACCT. ACCT can be |
|
|
|
|
a simple username, in case of a local user. It can also be in the format |
|
|
|
|
username@domain, in case of a remote user. |
|
|
|
|
LONG_DESC |
|
|
|
|
def follow(acct) |
|
|
|
|
target_account = ResolveAccountService.new.call(acct) |
|
|
|
|
processed = 0 |
|
|
|
|
failed = 0 |
|
|
|
|
|
|
|
|
|
if target_account.nil? |
|
|
|
|
say("Target account (#{acct}) could not be resolved", :red) |
|
|
|
|
exit(1) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
Account.local.without_suspended.find_each do |account| |
|
|
|
|
begin |
|
|
|
|
FollowService.new.call(account, target_account) |
|
|
|
|
processed += 1 |
|
|
|
|
say('.', :green, false) |
|
|
|
|
rescue StandardError |
|
|
|
|
failed += 1 |
|
|
|
|
say('.', :red, false) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
say("OK, followed target from #{processed} accounts, skipped #{failed}", :green) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
desc 'unfollow ACCT', 'Make all local accounts unfollow account specified by ACCT' |
|
|
|
|
long_desc <<-LONG_DESC |
|
|
|
|
Make all local accounts unfollow an account specified by ACCT. ACCT can be |
|
|
|
|
a simple username, in case of a local user. It can also be in the format |
|
|
|
|
username@domain, in case of a remote user. |
|
|
|
|
LONG_DESC |
|
|
|
|
def unfollow(acct) |
|
|
|
|
target_account = Account.find_remote(*acct.split('@')) |
|
|
|
|
processed = 0 |
|
|
|
|
failed = 0 |
|
|
|
|
|
|
|
|
|
if target_account.nil? |
|
|
|
|
say("Target account (#{acct}) was not found", :red) |
|
|
|
|
exit(1) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
target_account.followers.local.find_each do |account| |
|
|
|
|
begin |
|
|
|
|
UnfollowService.new.call(account, target_account) |
|
|
|
|
processed += 1 |
|
|
|
|
say('.', :green, false) |
|
|
|
|
rescue StandardError |
|
|
|
|
failed += 1 |
|
|
|
|
say('.', :red, false) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
say("OK, unfollowed target from #{processed} accounts, skipped #{failed}", :green) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
private |
|
|
|
|
|
|
|
|
|
def rotate_keys_for_account(account, delay = 0) |
|
|
|
|