1
ovear 2013-12-30 21:57:48 +08:00
|
2
shiny 2013-12-30 22:03:56 +08:00 9
简单,观察下 url 规律,举例:
我的 id 是5670,md5 hash下,8909a6e385b0fbc1f3885c00ae838de7 把结果的前8位及用户 id 代入头像的 URL。 http://cdn.v2ex.com/avatar/8909/a6e3/5670_large.png 然后循环 uid 就可以得到所有头像了。 |
6
Mutoo 2013-12-31 01:04:57 +08:00
哈哈,果断加盐。
|
9
isayme 2013-12-31 12:49:23 +08:00 1
|
11
kevinroot 2013-12-31 14:04:39 +08:00 via iPhone
这个肯定有算法嘛,不然v2ex自己也没法取。
|
12
kevinroot 2013-12-31 14:06:21 +08:00 via iPhone
现在问题是所有uid去哪里取?你有库?
|
15
shiny 2013-12-31 14:58:32 +08:00 1
|
17
fdsfsdfsdf3334 2013-12-31 16:17:04 +08:00
帅啊
|
18
mahone3297 2013-12-31 18:40:10 +08:00
辛苦写了一下午,贡献给大家。。。不知道怎么贴代码
<code> require 'net/http' require 'digest' desc "fetch avatar from http://www.v2ex.com/" task :fetch_avatar do prefix = 'images/' (1..50000).each do |idx| puts "process id = " + idx.to_s + "\n" md5 = Digest::MD5.hexdigest(idx.to_s) remote_dir = md5[0,4] + '/' + md5[4,4] + '/' local_dir = prefix + remote_dir FileUtils.mkdir_p local_dir if ! Dir.exists? local_dir remote_filename = remote_dir + idx.to_s + '_large.png' local_filename = prefix + remote_filename next if File.exists? local_filename url = 'http://cdn.v2ex.com/avatar/' + remote_filename IO.binwrite(local_filename, Net::HTTP.get(URI(url))) end end </code> |
19
shiny 2014-01-01 00:07:05 +08:00
@mahone3297 我也很喜欢 Ruby。在 v2ex 贴代码只要贴 gist 的 URL 就可以了。
|