Skip to content

Instantly share code, notes, and snippets.

@dacer
Created February 5, 2018 15:06
Show Gist options
  • Save dacer/004fdd95ed9be76b743f1f11cff62129 to your computer and use it in GitHub Desktop.
Save dacer/004fdd95ed9be76b743f1f11cff62129 to your computer and use it in GitHub Desktop.
translate JMDict
require "sqlite3"
require 'rest-client'
require 'json'
require 'open-uri'
# RestClient.proxy = "http://127.0.0.1:6152"
DB = SQLite3::Database.new "./JMDict(cn+en).sqlite3"
TARGET_LANG = "zh-CN"
def getTranslation(source, currentId)
begin
url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=#{TARGET_LANG}&dt=t&q=#{URI::encode(source)}"
result = JSON.parse(RestClient.get(url))[0][0][0]
puts "#{source} => #{result}"
result
rescue Exception => e
puts "error, retry... #{e.message}"
sleep 10
start(currentId)
end
end
def start(startId = 2828358)
DB.execute( "select * from entry WHERE id>=#{startId}" ) do |row|
puts row[0]
DB.execute "UPDATE entry SET gloss_cn=? WHERE id=#{row[0]}", getTranslation(row[1], row[0])
end
end
def deleteDuplicateTranslation()
DB.execute( "select * from entry" ) do |row|
puts row[0]
newRow = row[3].split(",").uniq
# newRow = row[3].split(", ").uniq
puts "#{row[3]} => #{newRow}"
DB.execute "UPDATE entry SET gloss_cn=? WHERE id=#{row[0]}", newRow.join(", ")
end
end
# start()
# deleteDuplicateTranslation()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment