Don't forget to lycansubscribe
1require 'time' 2require_relative 'base_importer' 3 4class LikesImporter < BaseImporter 5 def import_items 6 params = { repo: @did, collection: 'app.bsky.feed.like', limit: 100 } 7 params[:cursor] = @import.cursor if @import.cursor 8 9 loop do 10 response = @minisky.get_request('com.atproto.repo.listRecords', params) 11 12 records = response['records'] 13 cursor = response['cursor'] 14 15 @imported_count += records.length 16 @report&.update(importers: { importer_name => { :imported_items => @imported_count }}) 17 @report&.update(importers: { importer_name => { :oldest_date => Time.parse(records.last['value']['createdAt']) }}) unless records.empty? 18 19 records.each do |record| 20 begin 21 like = @user.likes.import_from_record(record['uri'], record['value']) 22 23 if like && like.pending? && @item_queue 24 @item_queue.push(like) 25 @report&.update(queue: { length: @item_queue.length }) 26 end 27 rescue StandardError => e 28 puts "Error in LikesImporter: #{record['uri']}: #{e}" 29 end 30 end 31 32 params[:cursor] = cursor 33 @import.update!(cursor: cursor) 34 35 break if !cursor 36 break if @time_limit && records.any? { |x| Time.parse(x['value']['createdAt']) < @time_limit } 37 end 38 end 39end