bsky fixes, ib missing post enqueuer

This commit is contained in:
Dylan Knutson
2025-08-18 16:28:53 +00:00
parent 8376dfc662
commit a68e5b0112
10 changed files with 203 additions and 24 deletions

View File

@@ -16,24 +16,29 @@ module BlueskyRakeHelpers
end
sig do
params(handle: T.nilable(String), did: T.nilable(String)).returns(
params(handle_or_did: T.nilable(String)).returns(
T.nilable(Domain::User::BlueskyUser),
)
end
def self.user_from_env(handle: nil, did: nil)
if handle
def self.find_bsky_user(handle_or_did)
return nil if handle_or_did.blank?
if handle_or_did.starts_with?("did:")
did = handle_or_did
Domain::User::BlueskyUser.find_by(did:) ||
begin
handle = resolve_handle(did)
return nil if handle.blank?
Domain::User::BlueskyUser.create!(did:, handle:)
end
else
Domain::User::BlueskyUser.find_by(handle:) ||
begin
did = self.resolve_did(handle)
did = self.resolve_did(handle_or_did)
return nil if did.blank?
Domain::User::BlueskyUser.find_or_create_by!(did:) do |user|
user.handle = handle
user.handle = handle_or_did
end
end
elsif did
Domain::User::BlueskyUser.find_or_create_by!(did:) do |user|
user.handle = resolve_handle(did)
end
end
end
end
@@ -53,8 +58,7 @@ namespace :bluesky do
Domain::Bluesky::MonitoredObject.build_for_hashtag(hashtag).save!
puts "Added hashtag: ##{hashtag}"
elsif ENV["handle"] || ENV["did"]
user =
BlueskyRakeHelpers.user_from_env(handle: ENV["handle"], did: ENV["did"])
user = BlueskyRakeHelpers.find_bsky_user(ENV["handle"] || ENV["did"])
if user.nil?
puts "user not found"
next
@@ -63,7 +67,7 @@ namespace :bluesky do
Domain::Bluesky::Job::ScanPostsJob.perform_later(user:)
Domain::Bluesky::MonitoredObject.build_for_user(user).save!
else
raise "hashtag, handle, or did is required"
raise "hashtag or handle/did is required"
end
end
@@ -71,17 +75,18 @@ namespace :bluesky do
task add_bulk: :environment do
added = 0
file = (ENV["file"] ? File.open(T.must(ENV["file"]), "r") : STDIN)
skip = ENV["skip"]&.to_i
while line = file.gets
if skip.present?
skip -= 1
next if skip > 0
end
begin
line = line.strip.chomp
next if line.blank?
user =
if line.starts_with?("did:")
BlueskyRakeHelpers.user_from_env(did: line)
else
BlueskyRakeHelpers.user_from_env(handle: line)
end
user = BlueskyRakeHelpers.find_bsky_user(line)
if user
unless user.scanned_profile_at.present?
Domain::Bluesky::Job::ScanUserJob.perform_later(user:)
@@ -102,8 +107,12 @@ namespace :bluesky do
loop do
queue_size =
GoodJob::Job
.where("queue_name IN ('bluesky', 'static_file')")
.where(finished_at: nil, performed_at: nil, error: nil)
.where(
finished_at: nil,
performed_at: nil,
error: nil,
queue_name: "bluesky",
)
.where(
[
"(serialized_params->'exception_executions' = '{}')",
@@ -166,10 +175,8 @@ namespace :bluesky do
desc "Watch users that user follows"
task watch_follows: :environment do
user =
BlueskyRakeHelpers.user_from_env(
handle: ENV["handle"],
did: ENV["did"],
) || raise("user is required, use `handle` or `did`")
BlueskyRakeHelpers.find_bsky_user(ENV["handle"] || ENV["did"]) ||
raise("user is required, need a handle/did")
Domain::Bluesky::Job::ScanUserFollowsJob.perform_now(user:)
user.reload
user.user_user_follows_from.each do |follow|

View File

@@ -8,6 +8,11 @@ namespace :ib do
Domain::Inkbunny::Job::LatestPostsJob.set(priority: -10).perform_later({})
end
desc "Enqueue missing posts"
task enqueue_missing_posts: :environment do
Tasks::Inkbunny::EnqueueMissingPostsTask.new.run
end
desc "set auth credentials"
task set_auth: :environment do
username = nil