okc_bot 0.9.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 +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +6 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +55 -0
- data/README.md +44 -0
- data/bin/okc_bot +2 -0
- data/lib/.DS_Store +0 -0
- data/lib/okc_bot.rb +12 -0
- data/lib/okc_bot/browser.rb +113 -0
- data/lib/okc_bot/main.rb +16 -0
- data/lib/okc_bot/version.rb +3 -0
- data/okc_bot.gemspec +23 -0
- metadata +112 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 11f11ab321599339e088f46f39fb9a7d0b88476f
|
4
|
+
data.tar.gz: ba03ab20dbbc17ece4f9760bd02f1184631b40ef
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ed00ae805ed8fd6d99f7f879f2f367634d0e3fd66da55ed6ddc916bcec2ee22b24151acb9e54295f15f75aad622d197135a708df04d6cb56ca221558ca3993d5
|
7
|
+
data.tar.gz: e7c6d79241c7244f8f833880c4abf5062507f49bdec2010b3e0275f8fbf89a4e3363808d59ceb4e7364740aa5a18dfc2bf68811f39b5cb31b6b8e9d782a3e2de
|
data/.DS_Store
ADDED
Binary file
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
archive-zip (0.7.0)
|
5
|
+
io-like (~> 0.3.0)
|
6
|
+
childprocess (0.5.6)
|
7
|
+
ffi (~> 1.0, >= 1.0.11)
|
8
|
+
chromedriver-helper (1.0.0)
|
9
|
+
archive-zip (~> 0.7.0)
|
10
|
+
nokogiri (~> 1.6)
|
11
|
+
chronic (0.10.2)
|
12
|
+
dotenv (2.0.2)
|
13
|
+
facets (3.0.0)
|
14
|
+
ffi (1.9.10)
|
15
|
+
io-like (0.3.0)
|
16
|
+
json (1.8.3)
|
17
|
+
mini_portile (0.6.2)
|
18
|
+
multi_json (1.11.2)
|
19
|
+
nokogiri (1.6.6.2)
|
20
|
+
mini_portile (~> 0.6.0)
|
21
|
+
psych (2.0.15)
|
22
|
+
redis (3.2.1)
|
23
|
+
rubyzip (1.1.7)
|
24
|
+
selenium-webdriver (2.47.1)
|
25
|
+
childprocess (~> 0.5)
|
26
|
+
multi_json (~> 1.0)
|
27
|
+
rubyzip (~> 1.0)
|
28
|
+
websocket (~> 1.0)
|
29
|
+
time-lord (1.0.1)
|
30
|
+
watir-scroll (0.1.0)
|
31
|
+
watir-webdriver
|
32
|
+
watir-webdriver (0.8.0)
|
33
|
+
selenium-webdriver (>= 2.46.2)
|
34
|
+
webdriver-user-agent (7.3)
|
35
|
+
facets
|
36
|
+
json
|
37
|
+
psych
|
38
|
+
selenium-webdriver
|
39
|
+
websocket (1.2.2)
|
40
|
+
|
41
|
+
PLATFORMS
|
42
|
+
ruby
|
43
|
+
|
44
|
+
DEPENDENCIES
|
45
|
+
chromedriver-helper
|
46
|
+
chronic
|
47
|
+
dotenv
|
48
|
+
redis
|
49
|
+
time-lord
|
50
|
+
watir-scroll
|
51
|
+
watir-webdriver
|
52
|
+
webdriver-user-agent
|
53
|
+
|
54
|
+
BUNDLED WITH
|
55
|
+
1.10.5
|
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# OKCleanup
|
2
|
+
Clean up your OKCupid inbox!
|
3
|
+
|
4
|
+
Are you getting too many okcupid messages to deal with? Now you can easily bulk delete in batches.
|
5
|
+
|
6
|
+
## Requirements
|
7
|
+
- chromedriver
|
8
|
+
- phantomjs
|
9
|
+
- ruby (tested only in ruby 1.9.3-p194)
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
1. Clone to your computer
|
13
|
+
`git clone http://github.com/prokizzle/okcleanup ~/okcleanup`
|
14
|
+
1. Install the headless browsers
|
15
|
+
`brew install chromedriver phantomjs`
|
16
|
+
1. Install required gems
|
17
|
+
`bundle install`
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
- run `ruby bin/okcleanup`
|
21
|
+
- select one of the options
|
22
|
+
|
23
|
+
## Available cleanup options
|
24
|
+
|
25
|
+
### Match messages
|
26
|
+
This deletes all messages that say "It's a match!"
|
27
|
+
|
28
|
+
### Replied messages
|
29
|
+
Deletes all threads that you have replied to
|
30
|
+
|
31
|
+
### Missed IMs
|
32
|
+
Deletes all missed instant message notification from your messages inbox
|
33
|
+
|
34
|
+
### No photo
|
35
|
+
Deletes all messages from people without photos. This includes people who did not post a photo and people who have closed or disabled their accounts.
|
36
|
+
|
37
|
+
### Delete all
|
38
|
+
Deletes every message from the inbox (or tries to). It asks for confirmation first.
|
39
|
+
|
40
|
+
### Delete last page
|
41
|
+
Deletes only the final page of your messages, aka the oldest messages in your inbox.
|
42
|
+
|
43
|
+
## Known Issues
|
44
|
+
PhantomJS pretty much doesn't work right or consistently. I should probably spoof the user agent and try again.
|
data/bin/okc_bot
ADDED
data/lib/.DS_Store
ADDED
Binary file
|
data/lib/okc_bot.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
module OkcBot
|
2
|
+
|
3
|
+
class Browser
|
4
|
+
attr_reader :browser, :driver, :base_url
|
5
|
+
|
6
|
+
def initialize(args)
|
7
|
+
@username = args[:username]
|
8
|
+
@password = args[:password]
|
9
|
+
@driver = args[:driver].to_sym
|
10
|
+
@browser = Watir::Browser.new driver
|
11
|
+
@base_url = "http://www.okcupid.com"
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def visit(page)
|
18
|
+
begin
|
19
|
+
@browser.goto "#{@base_url}/#{page}"
|
20
|
+
rescue Errno::ECONNREFUSED
|
21
|
+
puts "Webdriver reconnecting..."
|
22
|
+
@browser = Watir::Browser.new $driver.to_sym
|
23
|
+
login
|
24
|
+
@browser.goto "#{@base_url}/#{page}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def logged_in?
|
29
|
+
# return @browser.h1(:id => 'home_heading').exists?
|
30
|
+
return true
|
31
|
+
end
|
32
|
+
|
33
|
+
public
|
34
|
+
|
35
|
+
def save_session
|
36
|
+
@browser.cookies.to_a
|
37
|
+
end
|
38
|
+
|
39
|
+
def load_session(saved_cookies)
|
40
|
+
@browser.goto("https://okcupid.com")
|
41
|
+
@browser.cookies.clear
|
42
|
+
saved_cookies.each do |saved_cookie|
|
43
|
+
@browser.cookies.add(saved_cookie[:name], saved_cookie[:value])
|
44
|
+
end
|
45
|
+
@browser.goto("https://okcupid.com")
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
def load_more_messages
|
50
|
+
@before = @browser.spans(:class => "previewline").to_a.size
|
51
|
+
@browser.scroll.to :bottom
|
52
|
+
sleep 1
|
53
|
+
@after = @browser.spans(:class => "previewline").to_a.size
|
54
|
+
end
|
55
|
+
|
56
|
+
def no_new_messages_found
|
57
|
+
@before == @after
|
58
|
+
end
|
59
|
+
|
60
|
+
def load_entire_page
|
61
|
+
load_more_messages
|
62
|
+
unless no_new_messages_found
|
63
|
+
load_entire_page
|
64
|
+
else
|
65
|
+
@browser.scroll.to :top
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# randomized delays between actions minimizes bot detection
|
70
|
+
def login
|
71
|
+
@browser.goto("http://www.okcupid.com")
|
72
|
+
@browser.link(:text => "Sign in").click
|
73
|
+
sleep (1..3).to_a.sample.to_i
|
74
|
+
@browser.text_field(:id => 'login_username').set(@username)
|
75
|
+
sleep (1..3).to_a.sample.to_i
|
76
|
+
@browser.text_field(:id => 'login_password').set(@password)
|
77
|
+
sleep (1..3).to_a.sample.to_i
|
78
|
+
@browser.button(:id => 'sign_in_button').click
|
79
|
+
sleep (1..3).to_a.sample.to_i
|
80
|
+
|
81
|
+
return logged_in?
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
def visit_messages_page
|
86
|
+
visit "messages"
|
87
|
+
load_entire_page
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
def visit_quickmatch_page
|
92
|
+
visit "quickmatch"
|
93
|
+
end
|
94
|
+
|
95
|
+
def visit_im_history_page
|
96
|
+
visit "imhistory"
|
97
|
+
end
|
98
|
+
|
99
|
+
def visit_sent_messages_page
|
100
|
+
visit "messages?folder=2"
|
101
|
+
end
|
102
|
+
|
103
|
+
def visit_match_page
|
104
|
+
visit "match"
|
105
|
+
end
|
106
|
+
|
107
|
+
def logout
|
108
|
+
@browser.close
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
data/lib/okc_bot/main.rb
ADDED
data/okc_bot.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'okc_bot/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "okc_bot"
|
8
|
+
spec.version = OkcBot::VERSION
|
9
|
+
spec.authors = ["Nick Prokesch"]
|
10
|
+
spec.email = ["nick@prokes.ch"]
|
11
|
+
spec.summary = %q{A library for building okcupid bots}
|
12
|
+
spec.description = %q{Allows users to build bots that use okcupid}
|
13
|
+
spec.homepage = "http://nick.prokes.ch"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
|
19
|
+
spec.add_dependency "dotenv", "~> 2.0"
|
20
|
+
spec.add_dependency "watir-webdriver", "~> 0.8"
|
21
|
+
spec.add_dependency "webdriver-user-agent", "~> 7.3"
|
22
|
+
spec.add_dependency "watir-scroll", "~> 0.1"
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: okc_bot
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nick Prokesch
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-08-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dotenv
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: watir-webdriver
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.8'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: webdriver-user-agent
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '7.3'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '7.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: watir-scroll
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.1'
|
69
|
+
description: Allows users to build bots that use okcupid
|
70
|
+
email:
|
71
|
+
- nick@prokes.ch
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".DS_Store"
|
77
|
+
- ".gitignore"
|
78
|
+
- Gemfile
|
79
|
+
- Gemfile.lock
|
80
|
+
- README.md
|
81
|
+
- bin/okc_bot
|
82
|
+
- lib/.DS_Store
|
83
|
+
- lib/okc_bot.rb
|
84
|
+
- lib/okc_bot/browser.rb
|
85
|
+
- lib/okc_bot/main.rb
|
86
|
+
- lib/okc_bot/version.rb
|
87
|
+
- okc_bot.gemspec
|
88
|
+
homepage: http://nick.prokes.ch
|
89
|
+
licenses:
|
90
|
+
- MIT
|
91
|
+
metadata: {}
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
requirements: []
|
107
|
+
rubyforge_project:
|
108
|
+
rubygems_version: 2.4.8
|
109
|
+
signing_key:
|
110
|
+
specification_version: 4
|
111
|
+
summary: A library for building okcupid bots
|
112
|
+
test_files: []
|