class Nx::DoubanMovie
Constants
- VERSION
Public Class Methods
new(url)
click to toggle source
# File lib/nx/douban-movie.rb, line 3 def initialize(url) @doc = Nokogiri::HTML(URI.open(url)) @url = url @info_list = @doc.css("#info .pl") end
Public Instance Methods
aliases()
click to toggle source
又名:
# File lib/nx/douban-movie.rb, line 146 def aliases el = @info_list.find do |item| item.text.include? "又名" end clean_string el.nil? ? "" : el.next.text end
celebrities()
click to toggle source
演职员
# File lib/nx/douban-movie.rb, line 35 def celebrities els = @doc.css("#celebrities .celebrity") els.map do |el| anchor = el.at_css("a") info = el.at_css(".info") { title: anchor.attribute("title").value, url: anchor.attribute("href").value, avatar: style_bg(anchor.at_css(".avatar").attribute("style").value), role: info.at_css(".role").text, name: info.at_css(".name").text, } end end
cover()
click to toggle source
封面
# File lib/nx/douban-movie.rb, line 70 def cover el = @doc.css("#mainpic .nbgnbg img") el.attribute("src").value end
director()
click to toggle source
导演
# File lib/nx/douban-movie.rb, line 76 def director els = @doc.css('#info .attrs [rel="v:directedBy"]') els.map do |el| url = el.attribute("href").value { url: "https://movie.douban.com#{url}", name: el.text, } end end
district()
click to toggle source
制片国家/地区
# File lib/nx/douban-movie.rb, line 116 def district el = @info_list.find do |item| item.text.include? "制片国家/地区" end clean_string el.nil? ? "" : el.next.text end
imdb_url()
click to toggle source
IMDb链接:
# File lib/nx/douban-movie.rb, line 154 def imdb_url el = @info_list.find do |item| item.text.include? "IMDb链接" end el.next_element.attribute("href").value end
language()
click to toggle source
语言:
# File lib/nx/douban-movie.rb, line 124 def language el = @info_list.find do |item| item.text.include? "语言" end clean_string el.nil? ? "" : el.next.text end
leading_roles()
click to toggle source
主演
# File lib/nx/douban-movie.rb, line 96 def leading_roles els = @doc.css('#info .actor .attrs a[rel="v:starring"]') els.map do |el| url = el.attribute("href").value { url: "https://movie.douban.com#{url}", name: el.text, } end end
rate()
click to toggle source
电影评分
# File lib/nx/douban-movie.rb, line 52 def rate el = @doc.css('#interest_sectl [property="v:average"]') el.text end
release_dates()
click to toggle source
上映日期:
# File lib/nx/douban-movie.rb, line 132 def release_dates els = @doc.css('#info [property="v:initialReleaseDate"]') els.map do |el| clean_string el.text end end
runtime()
click to toggle source
片长:
# File lib/nx/douban-movie.rb, line 140 def runtime el = @doc.css('#info [property="v:runtime"]') clean_string(el.text) end
screenwriter()
click to toggle source
编剧
# File lib/nx/douban-movie.rb, line 88 def screenwriter el = @info_list.find do |item| item.text.include? "编剧" end clean_string el.nil? ? "" : el.next_element.text end
summary()
click to toggle source
剧情简介
# File lib/nx/douban-movie.rb, line 58 def summary el = @doc.css('#link-report [property="v:summary"]') clean_string el.text end
title()
click to toggle source
电影标题
# File lib/nx/douban-movie.rb, line 21 def title el = @doc.css('#content > h1 span[property="v:itemreviewed"]') el.text end
to_h()
click to toggle source
# File lib/nx/douban-movie.rb, line 13 def to_h methods = (public_methods(false) - [__method__]) methods.map do |method| [method, send(method)] end.to_h end
types()
click to toggle source
类型
# File lib/nx/douban-movie.rb, line 108 def types els = @doc.css('#info span[property="v:genre"]') els.map do |el| el.text end end
url()
click to toggle source
# File lib/nx/douban-movie.rb, line 9 def url @url end
year()
click to toggle source
上映年份
# File lib/nx/douban-movie.rb, line 64 def year el = @doc.css('#content > h1 span[class="year"]') el.text.tr("()", "") end
Private Instance Methods
clean_string(str)
click to toggle source
# File lib/nx/douban-movie.rb, line 164 def clean_string(str) str.strip end
style_bg(str)
click to toggle source
# File lib/nx/douban-movie.rb, line 168 def style_bg(str) matched = /url\((.*)\)/.match(str) matched.nil? ? "" : matched[1] end