我目前正在开发一个带有nodejs的Coffeescript,它允许我将所有图像转储到Tumblr上。
在第一个循环中,它执行一个请求,通过API获取每个页面上所有图像的列表。
在第二个循环中,它会下载所有图像。
问题是,我不知道为什么,第一个回调永远不会被执行,"开始"计数器永远不会增加。
以下是代码:
xml2json = require "xml2json"
fs = require "fs"
util = require "util"
request = require "request"
tumblr_name = process.argv[2]
api_endpoint = util.format "http://%s.tumblr.com/api/read", tumblr_name
start = 0
num = 50
post_count = 50
download = (uri, filename) ->
request(uri).pipe(fs.createWriteStream(filename))
while post_count > 0
console.log util.format "post_count: %s - num: %s", post_count, num
page_uri = util.format "%s?type=photo&start=%s&num=%s", api_endpoint, start, num
do (page_uri) ->
request page_uri, (error, response, body) ->
console.log util.format "Downloading %s", page_uri
data_xml = body
data_json = JSON.parse xml2json.toJson data_xml
post_count = data_json["tumblr"]["posts"]["post"].length
for post in data_json["tumblr"]["posts"]["post"]
post_id = post["id"]
post_date = post["date-gmt"].split(" ")[0]
for photo in post["photo-url"]
if photo["max-width"] == 1280
outname = util.format "%s-%s-%s.%s", tumblr_name, post_date, post_id, photo["$t"].split(".").slice(-1)[0]
download photo["$t"], outname
start = start + num