Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
OctopressからQiitaへ記事を自動投稿するプラグインです。基本的にJekyllプラグインなのでJekyll単体でも使えるかもしれません(動作未確認)。 Octopressでこのプラグインを使うには、Gemfileに`gem 'qiita'`を追加して、pluginsフォルダ以下にqiita_post_generator.rbを配備してください。 あと、`_config.yml`に`qiita_token: abcdefghijklmnopqrstuvwxyz`の形式でQiita用のトークンを書いておきます。 rake generate の際に 2013-01-28-example-post.markdown のように qiita 属性 published: true が指定し…
layout title date comments published qiita categories
post
Qiita APIで自動投稿
2013-01-23 23:41
true
true
tags private
name versions
ruby
1.9.3
name versions
octopress
2.0
false
octopress

OctopressからQiitaへ記事を自動投稿するプラグインです。基本的にJekyllプラグインなのでJekyll単体でも使えるかもしれません(動作未確認)。

使い方

Octopressでこのプラグインを使うには、Gemfileにgem 'qiita'を追加して、pluginsフォルダ以下にqiita_post_generator.rbを配備してください。

あと、_config.ymlqiita_token: abcdefghijklmnopqrstuvwxyzの形式でQiita用のトークンを書いておきます。

rake generate の際に example-post.markdown のように qiita 属性 published: true が指定してあるポストのみが投稿されます。

# -*- encoding: utf-8 -*--
require 'qiita'
module Jekyll
class QiitaPost < Page
def initialize(site, title, content, name, url, options)
@dir = '_qiita_post'
@site = site
@title = title
@name = name
@url = url
@tags = options["tags"]
@private = options["private"]
self.output = content.dup
self.adjust_content!
self.process @name
end
def posted_item?
File.exists? self.file_path
end
def post_item(qiita)
qiita.post_item title: @title, body: self.output, tags: @tags, private: @private
self.write site.source
puts "posted to Qiita (#{@title})."
end
def adjust_content!
self.output.gsub! /\n? *<!-- *more *--> *\n/, "\n"
self.output.gsub! /\n? *\[!.+\](.+) *\n/, "\n"
self.output << <<-ORIGIN
[元記事](#{site.config['url'] + @url})
ORIGIN
end
def destination(dest)
File.join(dest, @dir, self.name)
end
def file_path
self.destination site.source
end
end
class QiitaPostGenerator < Generator
safe true
def generate(site)
qiita_token = site.config['qiita_token']
return unless qiita_token
site.posts.each do |post|
if post.data["qiita"] && post.data["published"]
qiita = Qiita.new token: qiita_token
q_post = QiitaPost.new site, post.data["title"], post.content, post.name, post.url, post.data["qiita"]
q_post.post_item qiita unless q_post.posted_item?
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.