Skip to content

Instantly share code, notes, and snippets.

@jchiotaka
Forked from daxadax/burgerbot.rb
Last active November 4, 2015 19:01
Show Gist options
  • Save jchiotaka/58112cbb5cfbcb12cd4a to your computer and use it in GitHub Desktop.
Save jchiotaka/58112cbb5cfbcb12cd4a to your computer and use it in GitHub Desktop.
BurgerBot Extended (Optimized for Mac)
#!/usr/bin/env ruby
# modified from https://gist.github.com/pbock/3ab260f3862c350e6b5f #
# Be aware that all scripts are run at your own risk and while every script has been written with the intention of minimising the potential for unintended consequences, the owners, hosting providers and contributers cannot be held responsible for any misuse or script problems.
require 'watir-webdriver'
require 'colorize'
class BurgerBot
def initialize
@attempt_count = 0
@date = Time.now.to_i
print 'Enter your name: '
@name = gets.chomp
print 'Enter your e-mail: '
@email = gets.chomp
print 'Extended search? (y/n): '
@extendSearch = (gets.chomp.downcase == 'y')
print 'Auto-book? (y/n): '
@autoBook = (gets.chomp.downcase == 'y')
end
def run
puts ''
puts 'BurgerBot+ Started'.yellow
puts '-' * 10
puts "Appointments will be booked for: #{@name} (#{@email})";
puts ''
until appointment_available?
puts ''
sleep 2
end
end
private
def appointment_available?
browser.cookies.clear
puts "> ##{@attempt_count += 1}".blue
print '- Loading Page: '
browser.goto url
puts 'Done'.green
begin
print '- Searching for appointment: '
link = browser.element css: '.calendar-month-table:first-child td.buchbar a'
link_next = browser.element css: '.calendar-month-table:last-child .next a'
if link.exists?
puts 'Available Appointment found'.green
link.click
print '- Checking available appointment: '
link_frei = browser.element css: '.frei a'
if link_frei.exists?
puts 'Appointment exists'.green
`afplay sound_alert.mp3`
print '* Book the appointment? (y/n): '.light_magenta
if @autoBook
book = true
puts 'y';
else
book = gets.chomp.downcase == 'y'
end
if book
link_frei.click
sleep 1
browser.text_field(:id => "Nachname").set @name
browser.text_field(:id => "EMail").set @email
submit = browser.element css: '#sendbutton'
terms = browser.element css: '#agbbestaetigung'
terms.click
sleep 1
submit.click
browser.alert.ok
end
else
puts 'Failed booking appointment (already booked or server error?)'.red
break;
end
puts " "
print "* Search for another one? (y/n): ".light_magenta
return gets.chomp.downcase != 'y'
else
puts 'Nothing found'.red
if link_next.exists?
if @extendSearch
puts '- Loading next page'.yellow
sleep 1
link_next.click
else
break
end
else
break
end
end
end until false
puts "< ##{@attempt_count}".blue
return false;
rescue StandardError => e
puts 'Error encountered. Pausing for 60 seconds.'.red
puts e.inspect
browser.close
browser = Watir::Browser.new :chrome
sleep 60
return false
end
def browser
@browser ||= Watir::Browser.new :chrome
end
def url
'https://service.berlin.de/terminvereinbarung/termin/tag.php'\
'?id=&buergerID=&buergername=&absagecode='\
"&Datum=#{@date}"\
'&anliegen%5B%5D=120686'\
'&dienstleister%5B%5D=122210'\
'&dienstleister%5B%5D=122217'\
'&dienstleister%5B%5D=122219'\
'&dienstleister%5B%5D=122227'\
'&dienstleister%5B%5D=122231'\
'&dienstleister%5B%5D=122243'\
'&dienstleister%5B%5D=122252'\
'&dienstleister%5B%5D=122260'\
'&dienstleister%5B%5D=122262'\
'&dienstleister%5B%5D=122254'\
'&dienstleister%5B%5D=122271'\
'&dienstleister%5B%5D=122273'\
'&dienstleister%5B%5D=122277'\
'&dienstleister%5B%5D=122280'\
'&dienstleister%5B%5D=122282'\
'&dienstleister%5B%5D=122284'\
'&dienstleister%5B%5D=122285'\
'&dienstleister%5B%5D=122286'\
'&dienstleister%5B%5D=122296'\
'&dienstleister%5B%5D=150230'\
'&dienstleister%5B%5D=122301'\
'&dienstleister%5B%5D=122297'\
'&dienstleister%5B%5D=122294'\
'&dienstleister%5B%5D=122312'\
'&dienstleister%5B%5D=122314'\
'&dienstleister%5B%5D=122304'\
'&dienstleister%5B%5D=122311'\
'&dienstleister%5B%5D=122309'\
'&dienstleister%5B%5D=317869'\
'&dienstleister%5B%5D=324433'\
'&dienstleister%5B%5D=325341'\
'&dienstleister%5B%5D=324434'\
'&dienstleister%5B%5D=122281'\
'&dienstleister%5B%5D=324414'\
'&dienstleister%5B%5D=122283'\
'&dienstleister%5B%5D=122279'\
'&dienstleister%5B%5D=122276'\
'&dienstleister%5B%5D=122274'\
'&dienstleister%5B%5D=122267'\
'&dienstleister%5B%5D=122246'\
'&dienstleister%5B%5D=122251'\
'&dienstleister%5B%5D=122257'\
'&dienstleister%5B%5D=122208'\
'&dienstleister%5B%5D=122226'
end
end
BurgerBot.new.run
@daxadax
Copy link

daxadax commented Nov 4, 2015

autobook = killer feature :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment