Il existe un enregistrement de la création de la version à publier en premier. De plus, c'est une version qui met à jour l'article déjà donné à qiita. Code ci-dessous
ruby post_final.rb post_final.org
Vous pouvez faire quelque chose. Dans le premier message, créez-en un nouveau, puis écrivez l'ID des éléments dans org. S'il existe, il sera patché sur cet identifiant.
De plus, vous pouvez sélectionner «ouvrir» ou «équipes». la valeur par défaut est «privé».
ruby post_final.rb post_final.org teams
Quoi?
la clé est
code
require "net/https"
require "json"
def get_title_tags(src)
$conts = File.read(src)
title = $conts.match(/\#\+(TITLE|title|Title): (.+)/)[2] || "tester"
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, #"#tester",
"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
Eh bien, veuillez refactoriser.
Si vous voulez le mettre à deux endroits avec open et teams, vous ne saurez pas lequel est lequel. Je me demande s'il peut être mis à jour automatiquement à ce moment-là. .. ..
Recommended Posts