Added wordpress converter
This commit is contained in:
		
							parent
							
								
									8d08a295ae
								
							
						
					
					
						commit
						fa689bfd92
					
				|  | @ -0,0 +1,54 @@ | |||
| require 'rubygems' | ||||
| require 'sequel' | ||||
| require 'fileutils' | ||||
| 
 | ||||
| # NOTE: This converter requires Sequel and the MySQL gems. | ||||
| # The MySQL gem can be difficult to install on OS X. Once you have MySQL | ||||
| # installed, running the following commands should work: | ||||
| # $ sudo gem install sequel | ||||
| # $ sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config | ||||
| 
 | ||||
| module Jekyll | ||||
|   module WordPress | ||||
|      | ||||
|     # Reads a MySQL database via Sequel and creates a post file for each  | ||||
|     # post in wp_posts that has post_status = 'publish'. | ||||
|     # This restriction is made because 'draft' posts are not guaranteed to | ||||
|     # have valid dates. | ||||
|     QUERY = "select * from wp_posts where post_status = 'publish' and post_type = 'post'" | ||||
| 
 | ||||
|     def self.process(dbname, user, pass, host = 'localhost') | ||||
|       db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host) | ||||
|        | ||||
|       FileUtils.mkdir_p "_posts" | ||||
|              | ||||
|       db[QUERY].each do |post| | ||||
|         # Get required fields and construct Jekyll compatible name | ||||
|         title = post[:post_title] | ||||
|         slug = post[:post_name] | ||||
|         date = post[:post_date] | ||||
|         content = post[:post_content] | ||||
|          | ||||
|         name = [date.year, date.month, date.day, slug].join('-') + ".markdown" | ||||
| 
 | ||||
|         # Get the relevant fields as a hash, delete empty fields and convert | ||||
|         # to YAML for the header         | ||||
|         data = { | ||||
|            'layout' => 'post', | ||||
|            'title' => title.to_s, | ||||
|            'excerpt' => post[:post_excerpt].to_s, | ||||
|            'wordpress_id' => post[:ID], | ||||
|            'wordpress_url' => post[:guid] | ||||
|          }.delete_if { |k,v| v.nil? || v == ''}.to_yaml | ||||
| 
 | ||||
|         # Write out the data and content to file | ||||
|         File.open("_posts/#{name}", "w") do |f| | ||||
|           f.puts data | ||||
|           f.puts "---" | ||||
|           f.puts content | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|     end | ||||
|   end | ||||
| end | ||||
		Loading…
	
		Reference in New Issue