parent
							
								
									fe1c04eed4
								
							
						
					
					
						commit
						611a9ff3fe
					
				
					 1 changed files with 60 additions and 0 deletions
				
			
		|  | @ -300,6 +300,66 @@ module Mastodon | ||||||
|       end |       end | ||||||
|     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 |     private | ||||||
| 
 | 
 | ||||||
|     def rotate_keys_for_account(account, delay = 0) |     def rotate_keys_for_account(account, delay = 0) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue