mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 17:46:05 -05:00
improve Ning import script
This commit is contained in:
parent
31d900f7e7
commit
87e84756f0
1 changed files with 68 additions and 5 deletions
|
@ -4,9 +4,9 @@ require File.expand_path(File.dirname(__FILE__) + "/base.rb")
|
||||||
|
|
||||||
class ImportScripts::Ning < ImportScripts::Base
|
class ImportScripts::Ning < ImportScripts::Base
|
||||||
|
|
||||||
JSON_FILES_DIR = "/path/to/json/archive/json/files"
|
JSON_FILES_DIR = "/Users/techapj/Downloads/ben/ADEM"
|
||||||
ATTACHMENT_PREFIXES = ["discussions", "pages", "blogs", "members", "photos"]
|
ATTACHMENT_PREFIXES = ["discussions", "pages", "blogs", "members", "photos"]
|
||||||
EXTRA_AUTHORIZED_EXTENSIONS = ["bmp", "ico", "txt", "pdf"]
|
EXTRA_AUTHORIZED_EXTENSIONS = ["bmp", "ico", "txt", "pdf", "gif", "jpg", "jpeg", "html"]
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
super
|
super
|
||||||
|
@ -19,8 +19,11 @@ class ImportScripts::Ning < ImportScripts::Base
|
||||||
# An example of a custom category from Ning:
|
# An example of a custom category from Ning:
|
||||||
@blogs_json = load_ning_json("ning-blogs-local.json")
|
@blogs_json = load_ning_json("ning-blogs-local.json")
|
||||||
|
|
||||||
#SiteSetting.max_image_size_kb = 3072
|
@photos_json = load_ning_json("ning-photos-local.json")
|
||||||
#SiteSetting.max_attachment_size_kb = 1024
|
@pages_json = load_ning_json("ning-pages-local.json")
|
||||||
|
|
||||||
|
SiteSetting.max_image_size_kb = 10240
|
||||||
|
SiteSetting.max_attachment_size_kb = 10240
|
||||||
SiteSetting.authorized_extensions = (SiteSetting.authorized_extensions.split("|") + EXTRA_AUTHORIZED_EXTENSIONS).uniq.join("|")
|
SiteSetting.authorized_extensions = (SiteSetting.authorized_extensions.split("|") + EXTRA_AUTHORIZED_EXTENSIONS).uniq.join("|")
|
||||||
|
|
||||||
# Example of importing a custom profile field:
|
# Example of importing a custom profile field:
|
||||||
|
@ -39,6 +42,9 @@ class ImportScripts::Ning < ImportScripts::Base
|
||||||
|
|
||||||
import_blogs # Remove this and/or add more as necessary
|
import_blogs # Remove this and/or add more as necessary
|
||||||
|
|
||||||
|
import_photos
|
||||||
|
import_pages
|
||||||
|
|
||||||
suspend_users
|
suspend_users
|
||||||
update_tl0
|
update_tl0
|
||||||
|
|
||||||
|
@ -161,7 +167,7 @@ class ImportScripts::Ning < ImportScripts::Base
|
||||||
|
|
||||||
def import_categories
|
def import_categories
|
||||||
puts "", "Importing categories"
|
puts "", "Importing categories"
|
||||||
create_categories((["Blog", "Pages"] + @discussions_json.map { |d| d["category"] }).uniq.compact) do |name|
|
create_categories((["Blog", "Pages", "Photos"] + @discussions_json.map { |d| d["category"] }).uniq.compact) do |name|
|
||||||
if name.downcase == "uncategorized"
|
if name.downcase == "uncategorized"
|
||||||
nil
|
nil
|
||||||
else
|
else
|
||||||
|
@ -184,6 +190,16 @@ class ImportScripts::Ning < ImportScripts::Base
|
||||||
import_topics(@blogs_json, "Blog")
|
import_topics(@blogs_json, "Blog")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def import_photos
|
||||||
|
puts "", "Importing photos"
|
||||||
|
import_topics(@photos_json, "Photos")
|
||||||
|
end
|
||||||
|
|
||||||
|
def import_pages
|
||||||
|
puts "", "Importing pages"
|
||||||
|
import_topics(@pages_json, "Pages")
|
||||||
|
end
|
||||||
|
|
||||||
def import_topics(topics_json, default_category=nil)
|
def import_topics(topics_json, default_category=nil)
|
||||||
topics = 0
|
topics = 0
|
||||||
posts = 0
|
posts = 0
|
||||||
|
@ -214,6 +230,14 @@ class ImportScripts::Ning < ImportScripts::Base
|
||||||
mapped[:raw] = add_file_attachments(mapped[:raw], topic["fileAttachments"])
|
mapped[:raw] = add_file_attachments(mapped[:raw], topic["fileAttachments"])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if topic["photoUrl"]
|
||||||
|
mapped[:raw] = add_photo(mapped[:raw], topic["photoUrl"])
|
||||||
|
end
|
||||||
|
|
||||||
|
if topic["embedCode"]
|
||||||
|
mapped[:raw] = add_video(mapped[:raw], topic["embedCode"])
|
||||||
|
end
|
||||||
|
|
||||||
parent_post = create_post(mapped, mapped[:id])
|
parent_post = create_post(mapped, mapped[:id])
|
||||||
unless parent_post.is_a?(Post)
|
unless parent_post.is_a?(Post)
|
||||||
puts "Error creating topic #{mapped[:id]}. Skipping."
|
puts "Error creating topic #{mapped[:id]}. Skipping."
|
||||||
|
@ -333,6 +357,45 @@ class ImportScripts::Ning < ImportScripts::Base
|
||||||
|
|
||||||
raw
|
raw
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_photo(arg, file_name)
|
||||||
|
raw = arg
|
||||||
|
|
||||||
|
# filename = File.join(JSON_FILES_DIR, file_name)
|
||||||
|
filename = file_full_path(file_name)
|
||||||
|
if File.exists?(filename)
|
||||||
|
upload = create_upload(@system_user.id, filename, File.basename(filename))
|
||||||
|
|
||||||
|
if upload.nil? || !upload.valid?
|
||||||
|
puts "Upload not valid :( #{filename}"
|
||||||
|
puts upload.errors.inspect if upload
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
raw += "\n" + embedded_image_html(upload)
|
||||||
|
else
|
||||||
|
puts "Attachment file doesn't exist: #{filename}"
|
||||||
|
end
|
||||||
|
|
||||||
|
raw
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_video(arg, embed_code)
|
||||||
|
raw = arg
|
||||||
|
youtube_regex = Regexp.new(%Q[<iframe(?:[^>]*)src="http:\/\/www.youtube.com\/embed\/([^"]+)"(?:[^>]*)><\/iframe>])
|
||||||
|
|
||||||
|
raw.gsub!(youtube_regex) do |s|
|
||||||
|
matches = youtube_regex.match(s)
|
||||||
|
video_id = matches[1].split("?").first
|
||||||
|
|
||||||
|
if video_id
|
||||||
|
raw += "\n\nhttps://www.youtube.com/watch?v=#{video_id}\n"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
raw += "\n" + embed_code + "\n"
|
||||||
|
raw
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if __FILE__==$0
|
if __FILE__==$0
|
||||||
|
|
Loading…
Reference in a new issue