[RUBY] Post an Qiita Patching-Version

Version zum Aktualisieren des Artikels, der bereits auf qiita veröffentlicht wurde

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.

Aufgabe

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

Post an Qiita Patching-Version
Post an Qiita Patching-Version
Qiita erster Beitrag
[Schienen] Wie poste ich Bilder?
So senken Sie die Java-Version
So überprüfen Sie die JSF-Version
Ich habe ein Juwel gemacht, um den Text des Org-Modus in Qiita zu posten
Verwendung von HttpClient (Post) von Java
Erstellen Sie einen Mechanismus zum Buchen von Reservierungen an Qiita [Reservierungsbuchung] ~ Codieren von 10 Zeilen pro Tag ~ ~