-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfetch.rb
58 lines (46 loc) · 1.65 KB
/
fetch.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
require "rubygems"
require "google_drive"
require 'gravatar-ultimate'
$username = ARGV[0]
password = ARGV[1]
$gravatar_password = password + '123'
file_name = ARGV[2]
name_column = 'B'.ord - 65 + 1
email_column = 'H'.ord - 65 + 1
avatar_column = 'J'.ord - 65 + 1
def has_gravatar(email)
api = Gravatar.new($username, password: $gravatar_password)
api.exists?(email)
end
# Logs in.
# You can also use OAuth. See document of
# GoogleDrive.login_with_oauth for details.
session = GoogleDrive.login($username, password)
# First worksheet of
# https://docs.google.com/spreadsheet/ccc?key=pz7XtlQC-PYx-jrVMJErTcg
ws = session.spreadsheet_by_key("0AsxYGKsq3C89dHlPa2JQX2VGU3hnLTNwSnQ0Q2szU3c").worksheets[0]
pictures = ''
names = []
# Dumps all cells.
for row in 2..ws.num_rows
name = ws[row, name_column]
encoded_name = name.gsub /[^a-zA-Z0-9' ]/, ''
email = ws[row, email_column]
override_gravatar = ws[row, avatar_column]
if has_gravatar(email)
gravatar = Gravatar.new(email).image_url(default: :monsterid, size: 150)
pictures << "<li><img src=\"#{gravatar}\" alt=\"#{encoded_name}\" title=\"#{encoded_name}\"></li>"
elsif override_gravatar and override_gravatar.size > 0
pictures << "<li><img src=\"#{override_gravatar}\" alt=\"#{encoded_name}\" title=\"#{encoded_name}\"></li>"
else
names << encoded_name
end
end
text = File.read(file_name)
text.gsub! /(<!--HOOFDEN-->).*(<!--END HOOFDEN-->)/, '\1' + pictures + '\2'
if names.any?
text.gsub! /(<!--NAMEN-->).*(<!--END NAMEN-->)/, '\1' + "en " + names.join(', ') + '\2'
else
text.gsub! /(<!--NAMEN-->).*(<!--END NAMEN-->)/, '\1' + '\2'
end
File.open(file_name, "w") { |file| file.puts text }