Skip to content

Instantly share code, notes, and snippets.

@Konstantinusz
Created February 12, 2015 17:38
Show Gist options
  • Save Konstantinusz/7a3c903e4b533d581245 to your computer and use it in GitHub Desktop.
Save Konstantinusz/7a3c903e4b533d581245 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
require 'watir-webdriver'
require "pry"
require "uri"
require "time"
Log_file="/home/walaki/util/keresztenytars.log"
Napnal_regebben=180
n=ARGV[0].to_i
Cim="---"
Message=<<END
Szia!
Hogy s mint? Sikerült már párt találni?
END
Felhasznalo="konstantin"
Jelszo="**********"
Watir.default_timeout = 15
capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs(
"phantomjs.page.settings.userAgent" => "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36")
driver = Selenium::WebDriver.for :phantomjs, :desired_capabilities => capabilities
b = ::Watir::Browser.new driver
puts "Browser started."
def login(b)
b.goto "keresztenytars.net" rescue nil
b.execute_script("return document.getElementById('loginbox_username').value=\"#{Felhasznalo}\"")
b.execute_script("return document.getElementById('loginbox_password').value=\"#{Jelszo}\"")
b.button(:name=>/login/).click
rescue => e
puts e
binding.pry
retry
end
def keres(b,n)
log=open(Log_file,"r"){|f| f.read}
mi=Hash[*log.split(/\={4,}\n/).map{|z| t=z.split("\n")[0].split;[t.last,Time.parse(t[0..-2].join(" "))]}.flatten]
if Time.now-mi.to_a.last.last<3601 && Time.now-mi.to_a.last.last > 20 then
puts "Még nem telt el egy óra!"
exit
end
mi.default=Time.now-(Napnal_regebben+1)*24*3600
b.goto "http://keresztenytars.net/search/advanced/"
b.select_list(:id=>/field_age/).select("18")
b.select_list(:id=>/field_age_to/).select("47")
b.checkbox(:id=>/smoking_0/).set
b.checkbox(:id=>/smoking_1/).set
b.button(:value=>/mehet/i).click
adatlapok=[]
lap=1
puts lap
while adatlapok.size<n+20 do
html=b.html;
linkek=URI.extract(html,"http").grep(/keresztenytars\.net\/[^\/]+\/$/)
adatlapok.push *linkek.select{|l| linkek.select{|k| k==l}.size==3}.uniq.select{|l| (Time.now-mi[l])/(24.0*3600)>Napnal_regebben} # 30.0 napnal regebben irtam
lap=lap+1
puts lap
b.goto b.link(:text=>lap.to_s).href
end
irni=adatlapok.first(n)
return irni
rescue => e
puts e
puts e.backtrace
login(b)
retry
end
def regi_uzenetek_torlese(b,n)
hanyat_kell_meg=n
b.goto "http://keresztenytars.net/account/messages/"
html=b.html
inbox=html.scan(/Beérkezett üzenetek \(([0-9]+)\)/).flatten[0].to_i
sent=html.scan(/Elküldött üzenetek \(([0-9]+)\)/).flatten[0].to_i
puts "#{inbox} üzenet inbox-ban."
puts "#{sent} üzenet outbox-ban."
if inbox+sent<=220-2*n then
puts inbox+sent
puts "Még bőven van hely!"
return
end
while hanyat_kell_meg>=1 do
sikerrel_torolt=0
puts hanyat_kell_meg
if hanyat_kell_meg>=1 && sent>0 && sent>=inbox then
begin
b.goto "http://keresztenytars.net/account/messages/sent/"
hany_oldal=b.html.scan(/\<p\>1\/([0-9]+) oldal\<\/p\>/i).flatten[0]
if hany_oldal==nil then
hany_oldal=''
end
b.goto "http://keresztenytars.net/account/messages/sent/#{hany_oldal}"
hanyat_torol=b.checkboxes(:id=>/message_id_[0-9]+/).size
hanyat_torol= hanyat_kell_meg>hanyat_torol ? hanyat_torol : hanyat_kell_meg
if hanyat_torol>0 then
b.checkboxes(:id=>/message_id_[0-9]+/).to_a.last(hanyat_torol).each{|cb| cb.set}
b.execute_script("window.confirm = function() {return true}")
b.link(:href=>/#/).click
puts "#{hanyat_torol} uzenet torolve..."
hanyat_kell_meg=hanyat_kell_meg-hanyat_torol
sikerrel_torolt=sikerrel_torolt+hanyat_torol
sent=sent-hanyat_torol
puts hanyat_kell_meg.to_s+" outboxban (sent) vagyok"
end
rescue=>e
puts e
binding.pry
retry
end
end
if hanyat_kell_meg>=1 && inbox>0 && inbox>=sent && inbox>30 then
begin
b.goto "http://keresztenytars.net/account/messages/inbox/"
hany_oldal=b.html.scan(/\<p\>1\/([0-9]+) oldal\<\/p\>/i).flatten[0]
if hany_oldal==nil then
hany_oldal=''
else
hany_oldal=(hany_oldal.to_i-1).to_s
end
b.goto "http://keresztenytars.net/account/messages/inbox/#{hany_oldal}"
hanyat_torol=b.checkboxes(:id=>/message_id_[0-9]+/).size
hanyat_torol= hanyat_kell_meg>hanyat_torol ? hanyat_torol : hanyat_kell_meg
if hanyat_torol>0 then
b.checkboxes(:id=>/message_id_[0-9]+/).to_a.last(hanyat_torol).each{|cb| cb.set}
b.execute_script("window.confirm = function() {return true}")
b.link(:href=>/#/).click
puts "#{hanyat_torol} uzenet torolve..."
hanyat_kell_meg=hanyat_kell_meg-hanyat_torol
sikerrel_torolt=sikerrel_torolt+hanyat_torol
inbox=inbox-hanyat_torol
puts hanyat_kell_meg.to_s+" inboxban vagyok"
end
rescue=>e
puts e
binding.pry
retry
end
end
return if (hanyat_kell_meg>inbox+sent || sikerrel_torolt==0)
end
end
def ertek(s)
if s=~/^\-+$/ then
return 0
elsif s=~/Re/
return s.scan(/Re/).flatten.size
else
return 6
end
end
def regi_uzenetek_torlese2(b,n)
hanyat_kell_meg=n
b.goto "http://keresztenytars.net/account/messages/"
html=b.html
inbox=html.scan(/Beérkezett üzenetek \(([0-9]+)\)/).flatten[0].to_i
sent=html.scan(/Elküldött üzenetek \(([0-9]+)\)/).flatten[0].to_i
puts "#{inbox} üzenet inbox-ban."
puts "#{sent} üzenet outbox-ban."
if inbox+sent <= 220-n then
puts inbox+sent
puts "Még bőven van hely!"
return
end
b.goto "http://keresztenytars.net/account/messages/sent/"
hany_oldal=b.html.scan(/\<p\>1\/([0-9]+) oldal\<\/p\>/i).flatten[0]
if hany_oldal==nil then
hany_oldal=1
end
levelek_sent=[]
for i in 1..hany_oldal.to_i do
b.goto "http://keresztenytars.net/account/messages/sent/#{i.to_s}"
#levelek_sent.push *b.html.scan(/\/messages(\/sent\/read\/[0-9]+\/)\"\>(.*?)\<\/a\>/)
#binding.pry
levelek_sent.push *b.html.scan(/\<a href\=.*?\/messages(\/sent\/read\/[0-9]+\/).*?\<img src\=\"\/templates\/default_green\/media(\/readmail\.gif)\"/i)
end
levelek=levelek_sent
torolni=levelek.last(n);
pp torolni
torolni.each_with_index do |level,i|
b.goto "http://keresztenytars.net/account/messages#{level[0]}"
b.execute_script("window.confirm = function() {return true}")
b.link(:text=>/^Törlés$/).click
puts "#{i+1}/#{torolni.size}. üzenet törölve"
end
return torolni.size
end
def ir(b,kinek)
puts kinek
hanynak_irt=0;
kinek.each do |felh|
open(Log_file,"a") {|f|
b.goto felh rescue nil
if b.div(:id=>/error_message/).present? then
if b.div(:id=>/error_message/).text =~ /Nincs hozzáférésed a felhasználó adatlapjához/ then
STDERR.puts "Nem lehet irni: #{felh.split("/")[3]}, #{b.div(:id=>/error_message/).text}"
f.puts "#{Time.now.to_s} #{felh}"
f.puts b.div(:id=>/error_message/).text
f.puts "-------------------------------------"
f.puts b.div(:id=>/error_message/).text
f.puts "====================================="
end
else
message_link=b.html.scan(/(http\:\/\/keresztenytars\.net\/account\/messages\/compose\/[0-9]+\/)/i).flatten[0]
if message_link != nil then
b.goto message_link
if b.text_field(:id=>/field_subject/).exist? then
pmhistory=b.execute_script("return document.getElementById('pmhistory').textContent").strip
b.execute_script("return document.getElementById('field_subject').value='"+Cim.gsub("'","\'")+"'")
b.execute_script("return document.getElementById('field_body').value='"+Message.gsub("\n","\\n")+"'")
b.button(:value=>/elküld/i).click
puts "#{Time.now.to_s} -> #{felh.split("/")[3]} üzenet elkülve"
hanynak_irt=hanynak_irt+1
f.puts "#{Time.now.to_s} #{felh}"
f.puts Message
f.puts "-------------------------------------"
f.puts pmhistory
f.puts "====================================="
else
if b.div(:id=>/error_message/).present? then
STDERR.puts "Nem lehet irni: #{felh.split("/")[3]}, #{b.div(:id=>/error_message/).text}"
f.puts "#{Time.now.to_s} #{felh}"
f.puts b.div(:id=>/error_message/).text
f.puts "-------------------------------------"
f.puts b.div(:id=>/error_message/).text
f.puts "====================================="
else
STDERR.puts "Nem lehet irni: #{felh.split("/")[3]}, ok ismeretlen."
f.puts "#{Time.now.to_s} #{felh}"
f.puts b.div(:id=>/error_message/).text
f.puts "-------------------------------------"
f.puts b.div(:id=>/error_message/).text
f.puts "====================================="
end
end
else
puts "Nem lehet irni -> #{felh.split("/")[3]}, ok ismeretlen."
binding.pry
end #if
end # if
}
end #irni.each
return hanynak_irt
rescue => e
puts e
binding.pry
end
login(b)
puts "Bejelentkezve."
torolt_db=regi_uzenetek_torlese2(b,255)
hanynak_kell_meg_irni=n
while hanynak_kell_meg_irni>0 do
irni=keres(b,hanynak_kell_meg_irni)
puts irni
hanynak_irt=ir(b,irni)
hanynak_kell_meg_irni=hanynak_kell_meg_irni-hanynak_irt
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment