ぼざクリタグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

52 lines
1.2 KiB

  1. class PostImporter
  2. def initialize provider:
  3. @provider = provider
  4. end
  5. def import_posts source_videos
  6. alive_codes = []
  7. ApplicationRecord.transaction do
  8. source_videos.each do |source_video|
  9. alive_codes << source_video.fetch(:code)
  10. deerjikist_tag = deerjikist_tag_of(source_video)
  11. video = upsert_post(source_video, deerjikist_tag)
  12. end
  13. end
  14. end
  15. private
  16. attr_reader :provider
  17. def deerjikist_tag_of source_video
  18. user_code = source_video[:user_code]
  19. return nil if user_code.blank?
  20. deerjikist&.tag
  21. end
  22. def upsert_post source_video, deerjikist_tag
  23. url =
  24. case provider
  25. when 'youtube'
  26. "https://youtube.com/watch/#{ source_video.fetch(:code) }"
  27. end
  28. raise 'ちんぽ!' if url.blank?
  29. Post.find_or_initialize_by(url:).tap do |post|
  30. post.title = source_viedo.fetch(:title)
  31. post.uploaded_user_id = nil
  32. post.original_created_from = source_video.fetch(:uploaded_at)
  33. post.original_created_before = post.original_created_from + 1.min
  34. post.tags << (deerjikist_tag || no_deerjikist)
  35. post.tags << Tag.youtube
  36. post.tags << Tag.video
  37. post.tags << Tag.bot
  38. post.tags << Tag.tagme
  39. post.save!
  40. end
  41. end
  42. end