Es gibt eine Aufzeichnung über die Erstellung der Version, die zuerst veröffentlicht werden soll. Darüber hinaus ist es eine Version, die den Artikel aktualisiert, der Qiita bereits gegeben wurde. Code unten
ruby post_final.rb post_final.org
Du kannst etwas tun. Erstellen Sie im ersten Beitrag einen neuen und schreiben Sie dann die ID der Elemente in org. Wenn es existiert, wird es auf diese ID gepatcht.
Außerdem können Sie 'open'or'teams' auswählen. Standard ist "privat".
ruby post_final.rb post_final.org teams
Was?
Schlüssel ist
code
require "net/https"
require "json"
def get_title_tags(src)
$conts = File.read(src)
title = $conts.match(/\#\+(TITLE|title|Title): (.+)/)[2] || "Prüfung"
m = []
tags = if m = $conts.match(/\#\+(TAG|tag|Tag|tags|TAGS|Tags): (.+)/)
m[2].split(',').inject([]) do |l, c|
l << {name: c.strip} #, versions: []}
end
else
[{ name: "hoge"}] #, versions: [] }]
end
p tags
return title,tags
end
src = ARGV[0] || 'README.org'
title, tags = get_title_tags(src)
p title
p tags
system "emacs #{src} --batch -l ~/.emacs.d/site_lisp/ox-qmd -f org-qmd-export-to-markdown --kill"
lines = File.readlines(src.gsub('org','md'))
m = []
patch = false
if m = $conts.match(/\#\+qiita_id: (.+)/)
qiita_id = m[1]
patch = true
else
qiita_id = ''
end
case ARGV[1]
when 'teams'
qiita = 'https://nishitani.qiita.com/'
p access_token = ENV['QIITA_TEAM_WRITE_TOKEN']
private = false
when 'open'
qiita = 'https://qiita.com/'
p access_token = ENV['QIITA_WRITE_TOKEN']
private = false
else
qiita = 'https://qiita.com/'
p access_token = ENV['QIITA_WRITE_TOKEN']
private = true
end
params = {
"body": lines.join, #"#Prüfung",
"private": private,
"title": title,
"tags": tags
}
if patch
path = "api/v2/items/#{qiita_id}"
else
path = 'api/v2/items'
end
p qiita+path
uri = URI.parse(qiita+path)
http_req = Net::HTTP.new(uri.host, uri.port)
http_req.use_ssl = uri.scheme === "https"
headers = {"Authorization" => "Bearer #{access_token}",
"Content-Type" => "application/json"}
if patch
res = http_req.patch(uri.path, params.to_json, headers)
else
res = http_req.post(uri.path, params.to_json, headers)
end
p res.message
res_body = JSON.parse(res.body)
res_body.each do |key, cont|
if key == 'rendered_body' or key == 'body'
puts "%20s brabrabra..." % key
next
end
print "%20s %s\n" % [key, cont]
end
system "open #{res_body["url"]}"
qiita_id =res_body["id"]
unless patch
File.write(src,"#+qiita_id: #{qiita_id}\n"+$conts)
end
Nun, bitte Refactor.
Wenn Sie es mit Open und Teams an zwei Stellen platzieren möchten, wissen Sie nicht, welche welche ist. Ich frage mich, ob es um diesen Punkt automatisch aktualisiert werden kann. .. ..
Recommended Posts