lead_worker.rb 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. class LeadWorker
  2. include Sidekiq::Worker
  3. include Sidekiq::Benchmark::Worker
  4. sidekiq_options :queue => 'default', :retry => false, :backtrace => true# , expires_in: 3.days
  5. def perform(addresses, numbers, profiles, user_id, website_id, domain)
  6. unless addresses.blank? and numbers.blank? and profiles.blank?
  7. source_urls = []
  8. if profiles
  9. profiles.each do |profile|
  10. source_urls << profile[1]
  11. end
  12. social_batch = Sidekiq::Batch.new
  13. social_batch.description = "user_#{user_id}__#{domain}_social_leads"
  14. benchmark.social_batch_jobs_metric do
  15. social_batch.jobs do
  16. profiles.each do |profile|
  17. username = profile[0].split("/").last
  18. if profile[0].match("google")
  19. network = "google-plus"
  20. end
  21. network ||= profile[0].split("//").last.split(".com").first
  22. new_social = SocialLead.create(:website_id => website_id,
  23. :social_network => network,
  24. :username => username,
  25. :profile_url => profile[0],
  26. :source_url => profile[1],
  27. :user_id => user_id,
  28. :domain => domain)
  29. if new_social and new_social.id
  30. PostSpiderWorker.perform_async(new_social.id, "SocialLead")
  31. TextAnalysisWorker.perform_async("SocialLead", new_social.id)
  32. end
  33. end
  34. end
  35. end
  36. end
  37. if numbers
  38. numbers.each do |num|
  39. source_urls << num[1]
  40. end
  41. phone_batch = Sidekiq::Batch.new
  42. phone_batch.description = "user_#{user_id}__#{domain}_phone_leads"
  43. benchmark.phone_batch_jobs_metric do
  44. phone_batch.jobs do
  45. numbers.each do |number|
  46. new_phone = PhoneLead.create(:number => number[0],
  47. :website_id => website_id,
  48. :user_id => user_id,
  49. :domain => domain,
  50. :source_url => number[1])
  51. if new_phone and new_phone.id
  52. PostSpiderWorker.perform_async(new_phone.id, "PhoneLead")
  53. TextAnalysisWorker.perform_async("PhoneLead", new_phone.id)
  54. end
  55. end
  56. end
  57. end
  58. end
  59. if addresses
  60. addresses.each do |address|
  61. source_urls << address[1]
  62. end
  63. address_batch = Sidekiq::Batch.new
  64. address_batch.description = "user_#{user_id}_#{domain}__email_leads"
  65. benchmark.email_batch_jobs_metric do
  66. address_batch.jobs do
  67. addresses.each do |address|
  68. new_email = EmailLead.create(:website_id => website_id,
  69. :address => address[0],
  70. :user_id => user_id,
  71. :source_url => address[1],
  72. :domain => domain)
  73. if new_email and new_email.id
  74. PostSpiderWorker.perform_async(new_email.id, "EmailLead")
  75. TextAnalysisWorker.perform_async("EmailLead", new_email.id)
  76. end
  77. end
  78. end
  79. end
  80. end
  81. source_urls.uniq!
  82. BulkExtractWorker.perform_async(source_urls, user_id)
  83. benchmark.finish
  84. end
  85. end
  86. end