妈妈再也不愁闷你在烂电影上浪费时候了 [用Ruby批量获取电影的评分与影片信息]

    添加时间:2013-5-6 点击量:

    信赖很多像我一样的技巧宅喜好窝家里看电影,如今的硬盘随随便便都是几百G好几T的,里面没个百部八十的都不好意思跟人打号召。下得多了,但好电影真的不久不多,希罕是像我这个分类文件夹里,很多看完发明真的是浪费时候。用ruby写了个小法度,从豆瓣电影上扒评分跟影片信息,将它们拼接成一个html网页,处理惩罚一个文件夹里的电影后能获得类似于下面的成果:



    你也可以扩充后,添加譬如:


    1.在你硬盘每个电影文件名前面添加评分,如许你就可以经由过程点按名称排序来实现评分排序了


    2.可以主动删除小于5/6分的电影


    3....等


    下面把代码贴出来,你须要用到的ruby库有:nokogiri(用来解析html),iconv(用来转码)



    encoding: utf-8
    
    require open-uri
    require
    nokogiri
    require
    uri
    require
    iconv

    def findMovieInfo(name)
    moviename
    = URI::escape(name)
    url
    =http://movie.douban.com/subject_search?search_text=#{moviename}&cat=1002
    puts url
    doc
    = Nokogiri::HTML(open(url))
    item
    = doc.xpath(//tr[@class=item]

    if(item.count>0)
    return item[0].to_html()
    end
    return
    end

    fh
    = File.new(C:\\temp.htmlw
    fh.write
    <!DOCTYPE html>
    <html lang=zh-CN class=ua-windows ua-webkit>
    <head>
    <meta http-equiv=Content-Type content=text/html; charset=utf-8>
    </head>
    <body>
    <table>
    @directory_path = D:\\\\

    if File.directory? @directory_path
    Dir.foreach(@directory_path) do
    |file|
    begin
    if(File.basename(file)!=.&&File.basename(file)!=..
    conv
    = Iconv.new(utf-8gb2312
    name
    = File.basename(file).gsub(File.extname(file),
    name
    =conv.iconv(name)
    fh.write findMovieInfo(name)
    fh.flush
    end
    rescue
    puts
    错误,跳过
    end

    end
    end
    fh.write
    </table></body></html>
    fh.close()


    若是对你有效,看在帮你节俭看烂片时候的份上,请不要悭吝3秒钟帮我点下推荐

    真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
    分享到: