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
tags() click to toggle source

豆瓣成员常用的标签

# File lib/nx/douban-movie.rb, line 27
def tags
  els = @doc.css(".tags .tags-body a")
  els.map do |el|
    el.text
  end
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