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