Toot toooooooot (Bluesky-Mastodon cross-poster)

watch mode with checking for new posts in a loop

Changed files
+25 -5
app
+10
app/tootify.rb
··· 4 require_relative 'mastodon_account' 5 6 class Tootify 7 def initialize 8 @bluesky = BlueskyAccount.new 9 @mastodon = MastodonAccount.new 10 end 11 12 def login_bluesky(handle) ··· 51 post_to_mastodon(record['value']) 52 53 @bluesky.delete_record_at(like_uri) 54 end 55 end 56
··· 4 require_relative 'mastodon_account' 5 6 class Tootify 7 + attr_accessor :check_interval 8 + 9 def initialize 10 @bluesky = BlueskyAccount.new 11 @mastodon = MastodonAccount.new 12 + @check_interval = 60 13 end 14 15 def login_bluesky(handle) ··· 54 post_to_mastodon(record['value']) 55 56 @bluesky.delete_record_at(like_uri) 57 + end 58 + end 59 + 60 + def watch 61 + loop do 62 + sync 63 + sleep @check_interval 64 end 65 end 66
+15 -5
tootify
··· 3 require 'bundler/setup' 4 require_relative 'app/tootify' 5 6 - $app = Tootify.new 7 - 8 def run(argv) 9 options, args = argv.partition { |x| x.start_with?('-') } 10 11 case args.first 12 when 'login' 13 login(args[1]) 14 when 'check' 15 - $app.sync 16 else 17 print_help 18 end ··· 25 end 26 27 def login(name) 28 if name =~ /\A[^@]+@[^@]+\z/ 29 - $app.login_mastodon(name) 30 elsif name =~ /\A@[^@]+\z/ 31 - $app.login_bluesky(name) 32 elsif name.nil? 33 print_help 34 else
··· 3 require 'bundler/setup' 4 require_relative 'app/tootify' 5 6 def run(argv) 7 options, args = argv.partition { |x| x.start_with?('-') } 8 + 9 + app = Tootify.new 10 + 11 + options.each do |o| 12 + if o.start_with?('--interval=') 13 + app.check_interval = o.split('=')[1].to_i 14 + end 15 + end 16 17 case args.first 18 when 'login' 19 login(args[1]) 20 when 'check' 21 + app.sync 22 + when 'watch' 23 + app.watch 24 else 25 print_help 26 end ··· 33 end 34 35 def login(name) 36 + app = Tootify.new 37 + 38 if name =~ /\A[^@]+@[^@]+\z/ 39 + app.login_mastodon(name) 40 elsif name =~ /\A@[^@]+\z/ 41 + app.login_bluesky(name) 42 elsif name.nil? 43 print_help 44 else