energy_air 2017.1 → 2019.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 0705bdff114efe7ff221df2d3ff959bb9630da5d
4
- data.tar.gz: 22374507b524fd030a63590735a5118781f6bfe9
2
+ SHA256:
3
+ metadata.gz: ea6a011fb71e4376e27a9cc2209bd25adc2bdcc9a38ecab7e548ad8576811251
4
+ data.tar.gz: 41dfc7e280c36862782036b9d76db4b6d0be5f6f16cee770e138f898bb764ced
5
5
  SHA512:
6
- metadata.gz: f2272402402ba6eb504c963a53d3deeb998d4e301913c6bccb5f4008313b05d9e02285ee5a6ef88891da3c1c4aad410423a38c956884c20fb8011aa02f195a2d
7
- data.tar.gz: dfcd24b7e9bc879626b355a121a8251cf2274bc16f6c440b9cd449e3de525f3ee1fcc5d1fb53c3124e57aebc25f8ab139269a0e9fd1aecc779d637c5c8fe6ad0
6
+ metadata.gz: a620017f0f1c5a3e29303630ab45c173e2227411a76fba43f4982bf97f8c7c02fe9887f0d505f7846d32e5f8026e1e4f6b49239934c0b462d39ba668c860269c
7
+ data.tar.gz: '069a794e8b524b0f8e381b7d9e35109b86cc800eec5bd4b72554585b7d10e3634eedd93656f615d08f1b597167bafb574aa8af92fdb82f3cdacbfd5cc9bec981'
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.6.3
data/energy_air.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Yves Siegrist"]
9
9
  spec.email = ["Elektron1c97@gmail.com"]
10
10
 
11
- spec.summary = "Automatically win energy air tickets without playing by yourself."
11
+ spec.summary = "Automatically win energy air tickets without really playing."
12
12
  spec.homepage = "https://github.com/siegy22/energy_air"
13
13
  spec.license = "MIT"
14
14
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -18,8 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "capybara", "~> 2.15"
22
- spec.add_dependency "poltergeist", "~> 1.16"
21
+ spec.add_dependency "capybara", "~> 3"
22
+ spec.add_dependency 'selenium-webdriver', '~> 3'
23
+ spec.add_dependency 'webdrivers', '~> 4'
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.15"
25
26
  spec.add_development_dependency "rake", "~> 12.0"
data/lib/energy_air.rb CHANGED
@@ -1,8 +1,3 @@
1
- require "tempfile"
2
- require "securerandom"
3
- require "capybara"
4
- require "capybara/dsl"
5
- require "capybara/poltergeist"
6
1
  require "energy_air/version"
7
2
  require "energy_air/bot"
8
3
 
@@ -1,3 +1,14 @@
1
+ # coding: utf-8
2
+ require "tempfile"
3
+ require "securerandom"
4
+ require "capybara"
5
+ require "capybara/dsl"
6
+ require 'webdrivers/chromedriver'
7
+ require "selenium/webdriver"
8
+
9
+ Capybara.run_server = false
10
+ Capybara.current_driver = :selenium_chrome
11
+
1
12
  # coding: utf-8
2
13
  module EnergyAir
3
14
  class Bot
@@ -5,24 +16,31 @@ module EnergyAir
5
16
 
6
17
  def initialize(tel_number)
7
18
  @tel_number = tel_number
8
- Capybara.run_server = false
9
- Capybara.register_driver :chrome_poltergeist do |app|
10
- chrome_poltergeist = Capybara::Poltergeist::Driver.new(app)
11
- chrome_poltergeist.headers = {
12
- 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'
13
- }
14
- chrome_poltergeist.timeout = 100
15
- chrome_poltergeist
16
- end
17
- Capybara.current_driver = :chrome_poltergeist
18
19
 
20
+ register
19
21
  loop { run }
20
22
  end
21
23
 
24
+ def register
25
+ visit 'https://game.energy.ch'
26
+
27
+ fill_in 'inlineFormInput', with: @tel_number
28
+ click_on 'Verifizieren'
29
+ check_for_error
30
+
31
+ print 'Activation code (received via SMS): '
32
+ activation_code = $stdin.gets.strip
33
+ activation_code.chars.each.with_index do |num, index|
34
+ fill_in (index + 1).to_s, with: num
35
+ end
36
+ sleep 5
37
+ click_on 'Verifizieren'
38
+ end
39
+
22
40
  def run
23
41
  visit 'https://game.energy.ch'
24
- enter_tel_number
25
42
  answer_question until finished?
43
+ return if all('h1', text: 'Leider verloren').any?
26
44
  choose_random_bubble
27
45
  if won?
28
46
  print "√"
@@ -31,94 +49,71 @@ module EnergyAir
31
49
  end
32
50
  rescue StandardError => e
33
51
  print "× (#{e})"
34
- ensure
35
- reset_browser
36
52
  end
37
53
 
38
54
  private
39
- def enter_tel_number
40
- find("input#mobile").set(@tel_number)
41
- click_on("LOS GEHTS")
42
- end
43
55
 
44
56
  def answer_question
45
- current_question = find(".question h1").text
57
+ current_question = find(".question-text").text
46
58
  answer = QUESTIONS[current_question]
47
- choose("option#{answer}")
48
- click_on("WEITER")
59
+ find('label', text: answer).click
60
+ click_on("Weiter")
61
+ rescue Capybara::ElementNotFound
62
+ visit 'https://game.energy.ch'
49
63
  end
50
64
 
51
65
  def finished?
52
- all("h2").map(&:text).include?("Glückwunsch!")
66
+ all('.question-text').empty?
53
67
  end
54
68
 
55
69
  def choose_random_bubble
56
- click_on("WEITER GEHTS!")
57
- all("#wingame a").sample.click
70
+ all(".circle").sample.click
58
71
  end
59
72
 
60
73
  def lost?
61
- find("h1").text == "Das war das falsche Logo, knapp daneben! Versuche es erneut!"
74
+ all('img[src="https://cdn.energy.ch/game-web/images/eair/bubble-lose.png"]').any?
62
75
  end
63
76
 
64
77
  def won?
65
78
  !lost?
66
79
  end
67
80
 
68
- def reset_browser
69
- page.driver.clear_cookies
70
- Capybara.reset_sessions!
81
+ def check_for_error
82
+ if all('.error-message').any?
83
+ warn "An error message appeared: #{find('.error-message').text}\nExiting.."
84
+ exit
85
+ end
71
86
  end
72
87
 
73
88
  QUESTIONS = {
74
- "Wie gross ist die Spielfläche des Stade de Suisse?" => 2, # ["100m x 70m", "105m x 68m", "90m x 40m"]
75
- "Wie hiess das Stade de Suisse früher?" => 1, # ["Wankdorf", "Stade de YB", "Wenkdorf"]
76
- "Was bedeutet Air auf Deutsch?" => 2, # ["Konzert", "Luft", "Liebe"]
77
- "Von welchem ehemaligen Energy Air Act ist der Song «Bilder im Kopf»?" => 1, # ["Sido", "MoTrip", "Culcha Candela"]
78
- "Mit welchem Künstler stand Schlangenfrau Nina Burri auf der Bühne?" => 1, # ???["RedOne", "DJ Antoine", "OneRepublic"]
79
- "Wann wurde das Stade de Suisse offiziell fertig gestellt?" => 1, # ["2005", "2000", "2001"]
80
- "In welcher Schweizer Stadt hat Energy KEIN Radiostudio?" => 2, # ["Bern", "Basel", "St. Gallen"]
81
- "Welcher DJ stand noch nie auf der Energy Air Bühne?" => 2, # ["Kygo", "Felix Jaehn", "DJ Antoine"]
82
- "Wie viele Tage dauert das Energy Air?" => 3, # ["3", "2", "1"]
83
- "Wann findet das diesjährige Energy Air statt?" => 2, # ["3. September 2017", "2. September 2017", "31. August 2017"]
84
- "Wo findet das Energy Air statt?" => 3, # ["Zürich, Letzigrund", "Basel, St. Jakobshalle", "Bern, Stade de Suisse"]
85
- "Welche Plätze gibt es am Energy Air?" => 3, # ["Nur Stehplätze", "Nur Sitzplätze", "XTRA Circle-Tickets, Steh- und Sitzplätze"]
86
- "Wann fand das erste Energy Air statt?" => 1, # ["Samstag, 6. September 2014", "Freitag, 5. September 2014", "Sonntag, 7. September 2014"]
87
- "Wie hiess der Energy Air Song im Jahr 2014?" => 3, # ["Energy", "Air", "Dynamite"]
88
- "Wie viele Male standen Dabu Fantastic bereits auf der Energy Air Bühne?" => 1, # ["2 Mal", "Kein Mal", "1 Mal"]
89
- "Zum wievielten Mal findet das Energy Air statt?" => 3, # ["Zum 3. Mal", "Zum 4. Mal", "Zum 5. Mal"],
90
- "Das Energy Air ist ...?" => 1,
91
- "Ab wann darf man, ohne eine erwachsene Begleitperson, am Energy Air teilnehmen?" => 1,
92
- "Was ist die obere Altersbeschränkung des Energy Air?" => 2,
93
- "Wie viel kostet die Energy Air App?" => 2,
94
- "Welcher dieser Acts Stand schon auf der Stade de Suisse Bühne?" => 1,
95
- "Welcher Act stand NOCH NIE auf der Energy Air Bühne?" => 3,
96
- "Wie viele Sitzplätze hat das Stade de Suisse bei Sportveranstaltungen?" => 1,
97
- "Wer hatte den letzten Auftritt am Energy Air 2016?" => 3,
98
- "Wie viele Zuschauer passen ins Stade de Suisse?" => 1,
99
- "In welchem Monat findet das Energy Air jeweils statt?" => 2,
100
- "Welcher Fussballverein ist im Stade de Suisse Zuhause?" => 1,
101
- "Was ist das Energy Air als einziger Energy Event?" => 1,
102
- "Welcher Energy Air Act aus den letzten Jahren stand nur mit seinem Gitarristen auf der Bühne?" => 1,
103
- "Welches Stadion ist das grösste der Schweiz?" => 1,
104
- "Welcher Act stand schon einmal auf der Energy Air Bühne?" => 1,
105
- "Wie lautet der offizielle Energy Air Hashtag?" => 3,
106
- "Welcher Künstler stand NOCH NIE auf der Energy Air Bühne?" => 1,
107
- "Wie hiess die Energy Air Hymne 2015?" => 1,
108
- "Von welchem vergangenen Energy Air Act ist der Song «Angelina»?" => 1,
109
- "Welcher Act performte in einem Karton-Hippie-Bus?" => 3,
110
- "Wie heissen zwei andere grosse Events von Energy?" => 1,
111
- "In welchem Jahr stand OneRepublic auf der Bühne des Energy Air?" => 1,
112
- "Welche deutsche Sängerin stand letztes Jahr auf der Energy Air Bühne?" => 1,
113
- "Wie viel kostet ein Energy Air Ticket?" => 1,
114
- "Von wem wird das Energy Air durchgeführt?" => 1,
115
- "Wie oft pro Jahr findet das Energy Air statt?" => 3,
116
- "Wie viele Tickets werden für das Energy Air verlost?" => 1,
117
- "Wo kann man Energy Air Tickets kaufen?" => 3,
118
- "Welche Farben dominieren das Energy Air Logo?" => 1,
119
- "Welcher Pop-Sänger stand in diesem Jahr schon auf der Bühne des Stade de Suisse?" => 1,
120
- "Wann ist die offizielle Türöffnung beim Energy Air?" => 1,
121
- "Wann fand das Energy Air letztes Jahr statt?" => 1
122
- }
89
+ "Was passiert, wenn es am Eventtag regnet?" => "Energy Air findet trotzdem statt",
90
+ "Energy Air Tickets kann man…" => "gewinnen",
91
+ "Energy Air ist der einzige Energy Event, …" => "...der unter freiem Himmel stattfindet.",
92
+ "Wie viele Mitarbeiter sind am Energy Air im Einsatz?" => "1300",
93
+ "Wie reiste Kygo im Jahr 2015 ans Energy Air?" => "Im Privatjet",
94
+ "Wie breit ist die Energy Air Bühne?" => "70 Meter",
95
+ "Wie viele Energy Air Tickets werden verlost?" => "40’000",
96
+ "Auf welcher Social-Media-Plattform kann man keine Energy Air Tickets gewinnen?" => "Twitter",
97
+ "Wann beginnt das Energy Air 2019?" => "Um 17 Uhr",
98
+ "Die wievielte Energy Air Ausgabe findet dieses Jahr statt?" => "Die fünfte",
99
+ "Was verlangte Nena am Energy Air 2016?" => "Eine komplett weisse Garderobe",
100
+ "Welche DJ-Acts standen 2018 auf der Bühne des Energy Air?" => "Averdeck",
101
+ "Wie schwer ist die Energy Air Bühne?" => "1000 Tonnen",
102
+ "Wie viele Acts waren beim letzten Energy Air dabei?" => "15",
103
+ "Wie viele Konfetti-Kanonen gibt es am Energy Air?" => "40",
104
+ "Welcher dieser Acts hatte einen Auftritt am Energy Air 2018?" => "DJ Antoine",
105
+ "Wann fand das Energy Air zum ersten Mal statt?" => "2014",
106
+ "Wann findet das Energy Air 2019 statt?" => "7. September 2019",
107
+ "Wo erfährst du immer die neusten Infos rund um das Energy Air?" => "im Radio, auf der Website und über Social Media",
108
+ "Welche amerikanische Band trat am Energy Air 2016 auf?" => "One Republic",
109
+ "Wo findet das Energy Air statt?" => "Stade de Suisse, Bern",
110
+ "Auf welchem Weg kann man KEINE Energy Air Tickets gewinnen?" => "E-Mail",
111
+ "Wer war der letzte Act am Energy Air 2018?" => "Lo & Leduc",
112
+ "Mit welchem dieser Tickets geniesst du die beste Sicht zur Energy Air Bühne?" => "Sitzplatz",
113
+ "Wie viele Spotlights gibt es am Energy Air?" => "250",
114
+ "Wen nahm Knackeboul am Energy Air 2014 mit backstage?" => "Sein Mami",
115
+ "Welche Fussballmannschaft ist im Stade de Suisse zuhause?" => "BSC Young Boys",
116
+ "Wer eröffnete das erste Energy Air?" => "Bastian Baker",
117
+ }.map { |k, v| [k.upcase, v] }.to_h.freeze
123
118
  end
124
119
  end
@@ -1,3 +1,3 @@
1
1
  module EnergyAir
2
- VERSION = "2017.1"
2
+ VERSION = "2019.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: energy_air
3
3
  version: !ruby/object:Gem::Version
4
- version: '2017.1'
4
+ version: '2019.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yves Siegrist
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-30 00:00:00.000000000 Z
11
+ date: 2019-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.15'
19
+ version: '3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.15'
26
+ version: '3'
27
27
  - !ruby/object:Gem::Dependency
28
- name: poltergeist
28
+ name: selenium-webdriver
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.16'
33
+ version: '3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.16'
40
+ version: '3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: webdrivers
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -108,9 +122,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
122
  - !ruby/object:Gem::Version
109
123
  version: '0'
110
124
  requirements: []
111
- rubyforge_project:
112
- rubygems_version: 2.6.11
125
+ rubygems_version: 3.0.4
113
126
  signing_key:
114
127
  specification_version: 4
115
- summary: Automatically win energy air tickets without playing by yourself.
128
+ summary: Automatically win energy air tickets without really playing.
116
129
  test_files: []