eBooru/db/seeds.rb

75 lines
2.3 KiB
Ruby
Raw Normal View History

2019-07-19 07:23:31 -04:00
# frozen_string_literal: true
2013-04-16 23:23:02 -04:00
2019-07-19 07:23:31 -04:00
require "digest/md5"
require "net/http"
require "tempfile"
2019-09-09 11:35:50 -04:00
unless Rails.env.test?
puts "== Creating elasticsearch indices ==\n"
2019-07-19 07:23:31 -04:00
2019-09-09 11:35:50 -04:00
Post.__elasticsearch__.create_index!
end
2019-07-19 07:23:31 -04:00
puts "== Seeding database with sample content ==\n"
# Uncomment to see detailed logs
#ActiveRecord::Base.logger = ActiveSupport::Logger.new($stdout)
admin = User.find_or_create_by!(name: "admin") do |user|
user.created_at = 2.weeks.ago
user.password = "e621test"
user.password_confirmation = "e621test"
user.password_hash = ""
2019-09-09 11:35:50 -04:00
user.email = "admin@e621.net"
2019-07-19 07:23:31 -04:00
user.can_upload_free = true
user.level = User::Levels::ADMIN
2011-07-03 19:12:31 -04:00
end
User.find_or_create_by!(name: Danbooru.config.system_user) do |user|
user.password = "ae3n4oie2n3oi4en23oie4noienaorshtaioresnt"
user.password_confirmation = "ae3n4oie2n3oi4en23oie4noienaorshtaioresnt"
user.password_hash = ""
user.email = "system@e621.net"
user.can_upload_free = true
user.level = User::Levels::JANITOR
end
2019-09-09 11:35:50 -04:00
unless Rails.env.test?
CurrentUser.user = admin
CurrentUser.ip_addr = "127.0.0.1"
resources = YAML.load_file Rails.root.join("db", "seeds.yml")
2021-04-05 09:23:02 -04:00
url = "https://e621.net/posts.json?limit=100&tags=id:" + resources["post_ids"].join(",")
response = HTTParty.get(url, {
headers: {"User-Agent" => "e621ng/seeding"}
})
json = JSON.parse(response.body)
2019-09-09 11:35:50 -04:00
2021-04-05 09:23:02 -04:00
json["posts"].each do |post|
puts post["file"]["url"]
data = Net::HTTP.get(URI(post["file"]["url"]))
2019-09-09 11:35:50 -04:00
file = Tempfile.new.binmode
file.write data
post["tags"].each do |category, tags|
Tag.find_or_create_by_name_list(tags.map {|tag| category + ":" + tag})
end
2019-09-09 11:35:50 -04:00
md5 = Digest::MD5.hexdigest(data)
service = UploadService.new({
uploader_id: CurrentUser.id,
uploader_ip_addr: CurrentUser.ip_addr,
2019-09-09 11:35:50 -04:00
file: file,
2021-04-05 09:23:02 -04:00
tag_string: post["tags"].values.flatten.join(" "),
source: post["sources"].join("\n"),
description: post["description"],
2021-04-05 09:23:02 -04:00
rating: post["rating"],
2019-09-09 11:35:50 -04:00
md5: md5,
md5_confirmation: md5
})
service.start!
end
2011-10-16 01:40:42 -04:00
end