dramavladimir 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b964519da3b2536e9c1458fcf0184182e21281ed
4
- data.tar.gz: 7050d719d05e9850f061fdf7d40b9ee7dd783d0e
3
+ metadata.gz: 40cef7990c6dd613bbb1088acdcd5902e52bb35e
4
+ data.tar.gz: 5dfde8c947af7af40d0c56cec8f6c1648517cb29
5
5
  SHA512:
6
- metadata.gz: b1a160f0bc548eb162aee799408ebc6d86dde2f36c6c2be39d0f69c2622ac91d88bd7737a99610256fce87183f98d6ceca1bf3c5326caec619e11be72c9eb724
7
- data.tar.gz: 9c921a6375fda3c94de874f1337b3f369e0a3ae0cdfa001699ed4d3f2b533f4663b47099e117da8b9046948aebcc6f59933e49e17068b309549fcd66d7afa35a
6
+ metadata.gz: c0fd9ccc6c0320cad987caf60534b0b2b68a2ba58c11f40db44cb2872722abafad3439ef4769a51b1ddbafe3183733c3364c3c607372941141a59e62b9595fd8
7
+ data.tar.gz: 86e74c489181172b72680799f58c41eacd682339db07d8210386adcd7c76a5c93081e5cea119c8ba1bfddd502e0750199a8273f2599b7737af20bab6b54343ff
data/lib/dramavladimir.rb CHANGED
@@ -2,6 +2,7 @@ require "dramavladimir/version"
2
2
  require 'nokogiri'
3
3
  require 'httpclient'
4
4
  require 'dramavladimir/repertoire'
5
+ require 'dramavladimir/announce'
5
6
 
6
7
  module Dramavladimir
7
8
  NotFound = Class.new StandardError
@@ -0,0 +1,29 @@
1
+ module Dramavladimir
2
+ class Announce
3
+ attr_accessor :doc, :url
4
+
5
+ def initialize(url, attributes = {})
6
+ @url = url
7
+ end
8
+
9
+ def content
10
+ doc.css('#main-mid p').map { |c| c.inner_text }.join('<br />').gsub(/\n|\t/, '').sub(/title=.JoomlaWorks AllVideos Player.>/, '')
11
+ end
12
+
13
+ def video
14
+ return if doc.css('.avPlayerWrapper.avVideo').empty?
15
+ doc.at_css('.avPlayerWrapper.avVideo iframe').attribute('src').value
16
+ end
17
+
18
+ def images
19
+ return if doc.nil? || doc.css('.rokbox-album-inner').empty?
20
+ doc.css('.rokbox-album-inner a').map { |image| "#{@site}#{image.attribute('href').value}" }
21
+ end
22
+
23
+ private
24
+
25
+ def doc
26
+ @doc ||= Dramavladimir.parse(url)
27
+ end
28
+ end
29
+ end
@@ -3,78 +3,58 @@ require 'active_support/all'
3
3
 
4
4
  module Dramavladimir
5
5
  class Repertoire
6
- attr_accessor :doc, :url, :announce, :announce_content
6
+ attr_accessor :doc, :url, :spectacle
7
7
 
8
8
  def initialize(attributes = {})
9
- @url = "http://www.dramavladimir.ru/playbill"
9
+ @site = "http://www.dramavladimir.ru"
10
+ @url = "#{@site}/playbill"
10
11
  doc
11
12
  end
12
13
 
13
14
  def spectacles
14
15
  spectacles = []
15
16
  get_afisha_links.each do |link|
16
- announces = Dramavladimir.parse("http://www.dramavladimir.ru/#{link}")
17
- announces.search('.mceItemTable tr').each do |announce|
18
- @announce = announce
19
- next unless prepare_date
20
- spectacles.push({
21
- title: prepare_title,
22
- scene: prepare_scene,
23
- content: prepare_content,
24
- video: prepare_video,
25
- images: prepare_images,
26
- schedules: prepare_date
27
- })
17
+ Dramavladimir.parse("#{@site}/#{link}").search('.mceItemTable tr').each do |spectacle|
18
+ @spectacle = spectacle
19
+ next unless schedules
20
+ s = { title: title, scene: scene, schedules: schedules }
21
+ s = s.merge({ content: announce.content, video: announce.video, images: announce.images, }) if announce
22
+ spectacles << s
28
23
  end
29
24
  end
30
25
  spectacles
31
26
  end
32
27
 
33
- def get_afisha_links
34
- doc.search('#main-mid table.blog a.contentpagetitle').map { |e| e.attribute('href').value }
35
- end
36
-
37
- private
38
-
39
- def prepare_title
40
- title = if announce.css('td a strong').last.nil? && announce.css('td strong').last.nil?
41
- announce.css('td b').last
42
- elsif announce.css('td a strong').last.nil? && announce.css('td b').last.nil?
43
- announce.css('td strong').last
28
+ def title
29
+ title = if spectacle.css('td a strong').last.nil? && spectacle.css('td strong').last.nil?
30
+ spectacle.css('td b').last
31
+ elsif spectacle.css('td a strong').last.nil? && spectacle.css('td b').last.nil?
32
+ spectacle.css('td strong').last
44
33
  else
45
- announce.css('td a strong').last
34
+ spectacle.css('td a strong').last
46
35
  end
47
36
  title.inner_text.mb_chars.capitalize.to_s
48
37
  end
49
38
 
50
- def prepare_date
51
- return false if announce.at_css('td').inner_text.empty?
52
- t = DateTime.parse announce.at_css('td').inner_text.gsub!(/ПН|ВТ|СР|ЧТ|ПТ|СБ|ВС|\n/im, '')
39
+ def schedules
40
+ return false if spectacle.at_css('td').inner_text.empty?
41
+ t = DateTime.parse spectacle.at_css('td').inner_text.gsub!(/ПН|ВТ|СР|ЧТ|ПТ|СБ|ВС|\n/im, '')
53
42
  t.to_formatted_s(:db)
54
43
  end
55
44
 
56
- def prepare_scene
57
- announce.css('td').last.inner_text.mb_chars.downcase.to_s
45
+ def scene
46
+ spectacle.css('td').last.inner_text.mb_chars.downcase.to_s
58
47
  end
59
48
 
60
- def prepare_content
61
- return '' unless announce_content
62
- announce_content.css('#main-mid p').map { |c| c.inner_text }.join(' ').gsub(/\n|\t/, '').sub(/title=.JoomlaWorks AllVideos Player.>/, '')
63
- end
64
-
65
- def prepare_video
66
- return if announce_content.nil? || announce_content.css('.avPlayerWrapper.avVideo').nil?
67
- announce_content.at_css('.avPlayerWrapper.avVideo iframe').attribute('src').value
68
- end
49
+ private
69
50
 
70
- def prepare_images
71
- return if announce_content.nil? || announce_content.css('.rokbox-album-inner').nil?
72
- announce_content.css('.rokbox-album-inner a').map { |image| image.attribute('href').value }
51
+ def get_afisha_links
52
+ doc.search('#main-mid table.blog a.contentpagetitle').map { |e| e.attribute('href').value }
73
53
  end
74
54
 
75
- def announce_content
76
- return if announce.css('td a').first.nil?
77
- @announce_content ||= Dramavladimir.parse(announce.css('td a').attribute('href').value)
55
+ def announce
56
+ return if spectacle.css('td a').first.nil?
57
+ Dramavladimir::Announce.new(spectacle.css('td a').attribute('href').value)
78
58
  end
79
59
 
80
60
  def doc
@@ -1,3 +1,3 @@
1
1
  module Dramavladimir
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dramavladimir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eddie Fisher
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-05-19 00:00:00.000000000 Z
11
+ date: 2015-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,6 +58,7 @@ files:
58
58
  - bin/setup
59
59
  - dramavladimir.gemspec
60
60
  - lib/dramavladimir.rb
61
+ - lib/dramavladimir/announce.rb
61
62
  - lib/dramavladimir/repertoire.rb
62
63
  - lib/dramavladimir/version.rb
63
64
  homepage: https://github.com/anjlab/dramavladimir