找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 36|回复: 6

写了个 youjizz 自动下载脚本

[复制链接]

37

主题

23

回帖

165

积分

注册会员

积分
165
发表于 2014-5-31 14:56:54 | 显示全部楼层 |阅读模式
本帖最后由 GodelEscherBach 于 2014-5-31 14:58 编辑
[ol]
  • # encoding: UTF-8
  • require 'net/http'
  • require 'nokogiri'
  • require 'colorize'
  • require 'fileutils'
  • require 'tempfile'
  • require 'uri'
  • require 'json'
  • # RUNTIME
  • # ==============
  • # $ ruby -v
  • # ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
  • #
  • def fetch_site
  • n = 1
  • puts "index of page #{n} .".colorize(:yellow)
  • site = "http://m.youjizz.com"
  • until (posts_url = fetch_page(site,n)).nil?
  • posts_url.each do |post_url|
  • post_title = get_title_from post_url
  • if File.exist?("#{post_title}/manifest.json")
  • puts "already exist #{post_title}".colorize(:red)
  • next
  • end
  • #FileUtils.rm_rf("#{post_title}")
  • puts "fetch of #{post_title}".colorize(:green)
  • will_download_images = []
  • will_download_videos = []
  • downloaded_images = []
  • downloaded_videos = []
  • post_images, post_videos = fetch_images_and_videos post_url
  • puts "discover #{post_images.count} images and #{post_videos.count} videos".colorize(:yellow)
  • post_images.each_with_index do |image_url, index|
  • image_filename = "#{post_title}_#{index + 1}#{get_ext_from image_url}"
  • will_download_images  image_filename, :url => image_url }
  • end
  • post_videos.each_with_index do |video_url, index|
  • n = 1
  • video_filename = "#{post_title}#{get_ext_from video_url}"
  • while (will_download_videos.find_all{ |v| v[:filename] == video_filename }.count > 0)
  • video_filename = "#{post_title}_x#{n}#{get_ext_from video_url}"
  • end
  • will_download_videos  video_filename, :url => video_url }
  • end
  • puts "create album dir of #{post_title}".colorize(:yellow)
  • FileUtils.mkdir_p("#{post_title}/preview")
  • will_download_images.each_with_index do |image, index|
  • puts "downloading image #{image[:filename]}".colorize(:yellow)
  • image_path = "#{post_title}/preview/#{image[:filename]}"
  • download_file(image[:url], image_path) unless File.exist? image_path
  • downloaded_images  0
  • puts "download #{post_title} with #{failed_files.count}/#{files.count} failed ".colorize(:red)
  • next
  • end
  • puts "done , write to manifest.json".colorize(:yellow)
  • manifest = {
  • :title => post_title ,
  • :url => post_url ,
  • :images => will_download_images,
  • :videos => will_download_videos
  • }
  • File.open("#{post_title}/manifest.json","w") do |f|
  • f.write(manifest.to_json)
  • end
  • end
  • puts "waiting for 3s to continue .".colorize(:blue)
  • sleep 30
  • n = n + 1
  • end
  • end
  • def get_ext_from(res_url)
  • File.extname(res_url).split('?')[0]
  • end
  • def fetch_page(site,num)
  • posts_url = []
  • page_url = "#{site}/page#{num}.html"
  • uri = URI.parse(page_url)
  • Net::HTTP.start(uri.host,uri.port) do |http|
  • resp = http.get(uri.path)
  • #parse xml
  • doc = Nokogiri::HTML(resp.body)
  • posts = doc.css('.row .preview[href^=http]')
  • posts.each do |post|
  • post_url = post.attr('href')
  • #now loading ...
  • puts post_url
  • posts_url 复制代码
  • 回复

    使用道具 举报

    5

    主题

    142

    回帖

    325

    积分

    中级会员

    积分
    325
    发表于 2014-5-31 15:03:42 | 显示全部楼层
    关键是咋用...
    回复

    使用道具 举报

    126

    主题

    376

    回帖

    1202

    积分

    金牌会员

    积分
    1202
    发表于 2014-5-31 18:32:14 | 显示全部楼层
    怎么用啊
    回复

    使用道具 举报

    104

    主题

    687

    回帖

    1700

    积分

    金牌会员

    积分
    1700
    发表于 2014-5-31 18:36:32 | 显示全部楼层
    全球youjizz交流论坛?
    回复

    使用道具 举报

    54

    主题

    273

    回帖

    758

    积分

    高级会员

    积分
    758
    发表于 2014-6-1 01:01:44 | 显示全部楼层
    咋用
    回复

    使用道具 举报

    17

    主题

    394

    回帖

    861

    积分

    高级会员

    积分
    861
    发表于 2014-6-1 14:29:24 | 显示全部楼层
    youjizz是什么?
    回复

    使用道具 举报

    25

    主题

    1727

    回帖

    3577

    积分

    论坛元老

    积分
    3577
    发表于 2014-6-1 14:33:08 | 显示全部楼层
    看不懂
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-1-27 21:15 , Processed in 0.017902 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表