robotwitter 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -4
- data/README.rdoc +13 -0
- data/VERSION +1 -1
- data/example/{settings.yaml → settings.yml} +0 -0
- data/example/tweets.db +0 -0
- data/lib/robotwitter.rb +44 -42
- data/lib/robotwitter/db.rb +3 -3
- data/robotwitter.gemspec +8 -6
- data/spec/robotwitter/robotwitter_spec.rb +37 -31
- data/spec/spec_helper.rb +6 -3
- metadata +77 -101
- data/lib/robotwitter/path.rb +0 -13
data/Gemfile
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
2
|
gem "twitter"
|
5
3
|
gem "sqlite3"
|
4
|
+
gem "fakeweb"
|
6
5
|
|
7
|
-
# Add dependencies to develop your gem here.
|
8
|
-
# Include everything needed to run rake, tests, features, etc.
|
9
6
|
group :development do
|
10
7
|
gem "shoulda", ">= 0"
|
11
8
|
gem "bundler", "~> 1.0.0"
|
data/README.rdoc
CHANGED
@@ -24,6 +24,19 @@ your_twitter_login:
|
|
24
24
|
oauth_token: oauth_token
|
25
25
|
oauth_token_secret: oauth_token
|
26
26
|
|
27
|
+
== GETTER
|
28
|
+
You can use GETTER as a lambda-function to get new tweets from somewhere.
|
29
|
+
Actually it used to work with external http and sqlite database.
|
30
|
+
It should be a lambda function wich return string
|
31
|
+
|
32
|
+
If you do not need getter, just set GETTER to nil.
|
33
|
+
|
34
|
+
=== Getter example
|
35
|
+
GETTER = lambda do
|
36
|
+
return_string_got_it_from_somewhere
|
37
|
+
end
|
38
|
+
|
39
|
+
|
27
40
|
== Copyright
|
28
41
|
|
29
42
|
Copyright (c) 2011 Krivich Ekaterina. See LICENSE.txt for
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
File without changes
|
data/example/tweets.db
ADDED
Binary file
|
data/lib/robotwitter.rb
CHANGED
@@ -1,18 +1,16 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require 'pp'
|
1
|
+
require 'rubygems'
|
2
|
+
require 'twitter'
|
3
|
+
require 'open-uri'
|
5
4
|
require 'yaml'
|
6
5
|
require 'sqlite3'
|
6
|
+
require 'logger'
|
7
7
|
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require "robotwitter/version"
|
8
|
+
require 'robotwitter/db'
|
9
|
+
require 'robotwitter/version'
|
11
10
|
|
12
11
|
module Robotwitter
|
13
12
|
class Robot
|
14
|
-
|
15
|
-
@db = nil
|
13
|
+
attr_reader :path
|
16
14
|
|
17
15
|
# getter should be a lambda - function
|
18
16
|
# which returns string
|
@@ -22,25 +20,25 @@ module Robotwitter
|
|
22
20
|
# db = SQLite3::Database.new("database.db")
|
23
21
|
# db.get_first_row( "select * from table" )
|
24
22
|
# end
|
25
|
-
def initialize
|
26
|
-
@getter
|
23
|
+
def initialize(path, section, &getter)
|
24
|
+
@getter = getter
|
27
25
|
@followers_ids = nil
|
28
26
|
@following_ids = nil
|
27
|
+
@path = path
|
29
28
|
|
30
|
-
@
|
29
|
+
@logger = Logger.new('tweelog.txt', 'weekly')
|
31
30
|
|
32
31
|
begin
|
33
|
-
yml = YAML.load_file
|
34
|
-
|
32
|
+
yml = YAML.load_file(path + '/' + "settings.yml")
|
35
33
|
Twitter.configure do |config|
|
36
|
-
config.consumer_key
|
37
|
-
config.consumer_secret
|
38
|
-
config.oauth_token
|
34
|
+
config.consumer_key = yml[section]['consumer_key']
|
35
|
+
config.consumer_secret = yml[section]['consumer_secret']
|
36
|
+
config.oauth_token = yml[section]['oauth_token']
|
39
37
|
config.oauth_token_secret = yml[section]['oauth_token_secret']
|
40
38
|
end
|
41
39
|
@client = Twitter::Client.new
|
42
|
-
rescue
|
43
|
-
|
40
|
+
rescue Exception => exception
|
41
|
+
@logger.error %/error occurred: #{exception.inspect}\n#{exception.backtrace.join("\n")}/
|
44
42
|
end
|
45
43
|
end
|
46
44
|
|
@@ -50,53 +48,52 @@ module Robotwitter
|
|
50
48
|
get_following_ids
|
51
49
|
|
52
50
|
follow_them = @followers_ids - @following_ids
|
53
|
-
|
51
|
+
@logger.info 'follows:'
|
54
52
|
follow_them.each do |id|
|
55
53
|
begin
|
56
|
-
@client.follow id
|
54
|
+
@client.follow id
|
57
55
|
rescue
|
58
56
|
end
|
59
|
-
|
57
|
+
@logger.info id
|
60
58
|
end
|
61
59
|
end
|
62
60
|
|
63
61
|
# string '_msg_ somth'
|
64
|
-
def send_message
|
62
|
+
def send_message(pattern)
|
65
63
|
phrase = get_phrase
|
66
64
|
send = pattern.gsub('_msg_', phrase)
|
67
|
-
@client.update send
|
68
|
-
|
65
|
+
@client.update send
|
66
|
+
@logger.info send
|
69
67
|
end
|
70
68
|
|
71
|
-
def retweet_about
|
69
|
+
def retweet_about(word)
|
72
70
|
search = search_users_tweets_about(word, 2)
|
73
71
|
init_db
|
74
72
|
search.each do |result|
|
75
73
|
next if @db.retweeted?(result)
|
76
74
|
retweet result
|
77
75
|
@db.save_retweet result
|
78
|
-
|
76
|
+
@logger.info result['id']
|
79
77
|
end
|
80
78
|
end
|
81
79
|
|
82
80
|
# follow who tweet about word
|
83
|
-
def follow_users_tweets_about
|
81
|
+
def follow_users_tweets_about(word)
|
84
82
|
users = search_users_tweets_about word
|
85
83
|
|
86
84
|
get_followers_ids
|
87
85
|
get_following_ids
|
88
|
-
|
86
|
+
@logger.info users
|
89
87
|
users.each do |user|
|
90
88
|
id = user['from_user_id']
|
91
89
|
name = user['from_user']
|
92
90
|
begin
|
93
|
-
if (not @followers_ids.include?(id))
|
94
|
-
and (not @following_ids.include?(id) and not @stub)
|
91
|
+
if (not @followers_ids.include?(id)) and (not @following_ids.include?(id))
|
95
92
|
@client.follow name
|
96
|
-
|
93
|
+
@logger.info name
|
97
94
|
end
|
98
95
|
rescue Exception => msg
|
99
|
-
|
96
|
+
@logger.error "Error #{msg}"
|
100
97
|
end
|
101
98
|
end
|
102
99
|
end
|
@@ -109,17 +106,17 @@ module Robotwitter
|
|
109
106
|
unfollow_them = @following_ids - @followers_ids
|
110
107
|
unfollow_them.each do |id|
|
111
108
|
begin
|
112
|
-
@client.unfollow id
|
109
|
+
@client.unfollow id
|
113
110
|
rescue
|
114
111
|
end
|
115
|
-
|
112
|
+
@logger.info id
|
116
113
|
end
|
117
114
|
end
|
118
115
|
|
119
116
|
protected
|
120
117
|
|
121
118
|
def init_db
|
122
|
-
@db = Robotwitter::Db.new('tweets') if @db.nil?
|
119
|
+
@db = Robotwitter::Db.new('tweets', @path) if @db.nil?
|
123
120
|
@db
|
124
121
|
end
|
125
122
|
|
@@ -129,8 +126,13 @@ module Robotwitter
|
|
129
126
|
end
|
130
127
|
|
131
128
|
# ищем пользователей, которые пишут о
|
132
|
-
def search_users_tweets_about
|
133
|
-
Twitter::Search.new.containing(word).locale("ru").no_retweets.per_page(count).fetch
|
129
|
+
def search_users_tweets_about(word, count = 5)
|
130
|
+
resp = Twitter::Search.new.containing(word).locale("ru").no_retweets.per_page(count).fetch
|
131
|
+
if resp.is_a?(Twitter::Unauthorized)
|
132
|
+
@logger.error 'unauthorized'
|
133
|
+
return []
|
134
|
+
end
|
135
|
+
resp
|
134
136
|
end
|
135
137
|
|
136
138
|
# get follower ids
|
@@ -152,14 +154,14 @@ module Robotwitter
|
|
152
154
|
# result - hash от поиска
|
153
155
|
def retweet(result)
|
154
156
|
begin
|
155
|
-
@client.retweet(result['id'])
|
156
|
-
rescue
|
157
|
-
|
157
|
+
@client.retweet(result['id'])
|
158
|
+
rescue => desc
|
159
|
+
@logger.error 'error: ' + desc.inspect
|
158
160
|
end
|
159
161
|
end
|
160
162
|
|
161
163
|
def rate_limit
|
162
|
-
|
164
|
+
@logger.error @client.rate_limit_status.remaining_hits.to_s + " Twitter API request(s) remaining this hour"
|
163
165
|
end
|
164
166
|
end
|
165
167
|
end
|
data/lib/robotwitter/db.rb
CHANGED
@@ -21,9 +21,9 @@ SQL
|
|
21
21
|
db.execute_batch(sql)
|
22
22
|
end
|
23
23
|
|
24
|
-
def initialize(name)
|
25
|
-
create_db("#{
|
26
|
-
@db = SQLite3::Database.new "#{
|
24
|
+
def initialize(name, path)
|
25
|
+
create_db("#{path}/#{name}") unless exists? "#{path}/#{name}"
|
26
|
+
@db = SQLite3::Database.new "#{path}/#{name}.db"
|
27
27
|
end
|
28
28
|
|
29
29
|
# already retweeted this post
|
data/robotwitter.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{robotwitter}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Krivich Ekaterina"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-07-28}
|
13
13
|
s.description = %q{automate twitter tasks, such as retweetting, following, unfollowing}
|
14
14
|
s.email = %q{krivich.ekaterina@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -23,11 +23,11 @@ Gem::Specification.new do |s|
|
|
23
23
|
"README.rdoc",
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
|
-
"example/settings.
|
26
|
+
"example/settings.yml",
|
27
27
|
"example/test.rb",
|
28
|
+
"example/tweets.db",
|
28
29
|
"lib/robotwitter.rb",
|
29
30
|
"lib/robotwitter/db.rb",
|
30
|
-
"lib/robotwitter/path.rb",
|
31
31
|
"lib/robotwitter/version.rb",
|
32
32
|
"robotwitter.gemspec",
|
33
33
|
"spec/robotwitter/robotwitter_spec.rb",
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
s.homepage = %q{http://github.com/kiote/robotwitter}
|
37
37
|
s.licenses = ["MIT"]
|
38
38
|
s.require_paths = ["lib"]
|
39
|
-
s.rubygems_version = %q{1.
|
39
|
+
s.rubygems_version = %q{1.6.2}
|
40
40
|
s.summary = %q{automate some twitter tasks}
|
41
41
|
s.test_files = [
|
42
42
|
"spec/robotwitter/robotwitter_spec.rb",
|
@@ -44,12 +44,12 @@ Gem::Specification.new do |s|
|
|
44
44
|
]
|
45
45
|
|
46
46
|
if s.respond_to? :specification_version then
|
47
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
48
47
|
s.specification_version = 3
|
49
48
|
|
50
49
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
51
50
|
s.add_runtime_dependency(%q<twitter>, [">= 0"])
|
52
51
|
s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
|
52
|
+
s.add_runtime_dependency(%q<fakeweb>, [">= 0"])
|
53
53
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
54
54
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
55
55
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
@@ -57,6 +57,7 @@ Gem::Specification.new do |s|
|
|
57
57
|
else
|
58
58
|
s.add_dependency(%q<twitter>, [">= 0"])
|
59
59
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
60
|
+
s.add_dependency(%q<fakeweb>, [">= 0"])
|
60
61
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
61
62
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
62
63
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
@@ -65,6 +66,7 @@ Gem::Specification.new do |s|
|
|
65
66
|
else
|
66
67
|
s.add_dependency(%q<twitter>, [">= 0"])
|
67
68
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
69
|
+
s.add_dependency(%q<fakeweb>, [">= 0"])
|
68
70
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
69
71
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
70
72
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
@@ -2,44 +2,50 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe "Robotwitter" do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
it "should follows those who follows me" do
|
19
|
-
pending "get the mock for twitter" do
|
20
|
-
@client.follow_all_back
|
21
|
-
a_request(:get, "https://search.twitter.com/search.json").
|
22
|
-
with(:query => {:q => "twitter"}).
|
23
|
-
should have_been_made
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should tweet a message" do
|
28
|
-
pending("get the mock for twitter")
|
29
|
-
end
|
5
|
+
before do
|
6
|
+
FakeWeb.register_uri(:get, %r|https://api\.twitter\.com/1/followers/ids\.json|,
|
7
|
+
:body => %|{"ids": [1,2,3]}|)
|
8
|
+
# GET https://api.twitter.com/1/friends/ids.json
|
9
|
+
FakeWeb.register_uri(:get, %r|https://api\.twitter\.com/1/friends/ids\.json|,
|
10
|
+
:body => %|{"ids": [1,2,3]}|)
|
11
|
+
# POST https://api.twitter.com/1/statuses/update.json
|
12
|
+
FakeWeb.register_uri(:post, %r|https://api\.twitter\.com/1/statuses/update\.json|,
|
13
|
+
:body => '')
|
14
|
+
# POST https://api.twitter.com/1/statuses/retweet/
|
15
|
+
FakeWeb.register_uri(:post, %r|https://api\.twitter\.com/1/statuses/retweet|,
|
16
|
+
:body => '')
|
17
|
+
end
|
30
18
|
|
31
|
-
|
19
|
+
POSTER = lambda do |l|
|
20
|
+
'some tweet'
|
21
|
+
end
|
32
22
|
|
33
|
-
|
23
|
+
before(:each) do
|
24
|
+
settings_path = File.expand_path('../../../example', __FILE__)
|
25
|
+
@client = Robotwitter::Robot.new settings_path, 'test_login', &POSTER
|
26
|
+
end
|
34
27
|
|
35
|
-
|
28
|
+
it "should create new object on right init params" do
|
29
|
+
@client.class.to_s.should eq("Robotwitter::Robot")
|
30
|
+
end
|
36
31
|
|
37
|
-
|
32
|
+
it "should follows those who follows me" do
|
33
|
+
@client.follow_all_back
|
34
|
+
end
|
38
35
|
|
39
|
-
|
36
|
+
it "should tweet a message" do
|
37
|
+
@client.send_message('_msg_ #hash')
|
38
|
+
end
|
40
39
|
|
41
|
-
|
40
|
+
it "should retweet about word" do
|
41
|
+
@client.retweet_about('something')
|
42
42
|
end
|
43
43
|
|
44
|
+
it "should follow users tweets about" do
|
45
|
+
@client.follow_users_tweets_about('something')
|
46
|
+
end
|
44
47
|
|
48
|
+
it "should unfollow users who did not following me" do
|
49
|
+
@client.unfollow_users
|
50
|
+
end
|
45
51
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
-
$:.unshift
|
2
|
-
$:.unshift
|
1
|
+
$:.unshift(File.dirname(__FILE__))
|
2
|
+
$:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
3
3
|
|
4
|
-
require
|
4
|
+
require 'twitter'
|
5
|
+
require 'rspec'
|
6
|
+
require 'fakeweb'
|
7
|
+
require 'robotwitter'
|
metadata
CHANGED
@@ -1,170 +1,146 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: robotwitter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 1
|
10
|
-
version: 0.1.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Krivich Ekaterina
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2011-04-23 00:00:00 +04:00
|
12
|
+
date: 2011-07-28 00:00:00.000000000 +04:00
|
19
13
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
23
16
|
name: twitter
|
24
|
-
|
17
|
+
requirement: &2156764480 !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
33
|
-
requirement: *id001
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
34
23
|
type: :runtime
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
24
|
prerelease: false
|
25
|
+
version_requirements: *2156764480
|
26
|
+
- !ruby/object:Gem::Dependency
|
37
27
|
name: sqlite3
|
38
|
-
|
28
|
+
requirement: &2156762100 !ruby/object:Gem::Requirement
|
39
29
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
version: "0"
|
47
|
-
requirement: *id002
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
48
34
|
type: :runtime
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
35
|
prerelease: false
|
36
|
+
version_requirements: *2156762100
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: fakeweb
|
39
|
+
requirement: &2156760560 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *2156760560
|
48
|
+
- !ruby/object:Gem::Dependency
|
51
49
|
name: shoulda
|
52
|
-
|
50
|
+
requirement: &2156758520 !ruby/object:Gem::Requirement
|
53
51
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
|
58
|
-
segments:
|
59
|
-
- 0
|
60
|
-
version: "0"
|
61
|
-
requirement: *id003
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
62
56
|
type: :development
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
57
|
prerelease: false
|
58
|
+
version_requirements: *2156758520
|
59
|
+
- !ruby/object:Gem::Dependency
|
65
60
|
name: bundler
|
66
|
-
|
61
|
+
requirement: &2156753480 !ruby/object:Gem::Requirement
|
67
62
|
none: false
|
68
|
-
requirements:
|
63
|
+
requirements:
|
69
64
|
- - ~>
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
hash: 23
|
72
|
-
segments:
|
73
|
-
- 1
|
74
|
-
- 0
|
75
|
-
- 0
|
65
|
+
- !ruby/object:Gem::Version
|
76
66
|
version: 1.0.0
|
77
|
-
requirement: *id004
|
78
67
|
type: :development
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
68
|
prerelease: false
|
69
|
+
version_requirements: *2156753480
|
70
|
+
- !ruby/object:Gem::Dependency
|
81
71
|
name: jeweler
|
82
|
-
|
72
|
+
requirement: &2156749940 !ruby/object:Gem::Requirement
|
83
73
|
none: false
|
84
|
-
requirements:
|
74
|
+
requirements:
|
85
75
|
- - ~>
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
hash: 7
|
88
|
-
segments:
|
89
|
-
- 1
|
90
|
-
- 5
|
91
|
-
- 2
|
76
|
+
- !ruby/object:Gem::Version
|
92
77
|
version: 1.5.2
|
93
|
-
requirement: *id005
|
94
78
|
type: :development
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
79
|
prerelease: false
|
80
|
+
version_requirements: *2156749940
|
81
|
+
- !ruby/object:Gem::Dependency
|
97
82
|
name: rcov
|
98
|
-
|
83
|
+
requirement: &2156730380 !ruby/object:Gem::Requirement
|
99
84
|
none: false
|
100
|
-
requirements:
|
101
|
-
- -
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
|
104
|
-
segments:
|
105
|
-
- 0
|
106
|
-
version: "0"
|
107
|
-
requirement: *id006
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
108
89
|
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: *2156730380
|
109
92
|
description: automate twitter tasks, such as retweetting, following, unfollowing
|
110
93
|
email: krivich.ekaterina@gmail.com
|
111
94
|
executables: []
|
112
|
-
|
113
95
|
extensions: []
|
114
|
-
|
115
|
-
extra_rdoc_files:
|
96
|
+
extra_rdoc_files:
|
116
97
|
- LICENSE.txt
|
117
98
|
- README.rdoc
|
118
|
-
files:
|
99
|
+
files:
|
119
100
|
- .document
|
120
101
|
- Gemfile
|
121
102
|
- LICENSE.txt
|
122
103
|
- README.rdoc
|
123
104
|
- Rakefile
|
124
105
|
- VERSION
|
125
|
-
- example/settings.
|
106
|
+
- example/settings.yml
|
126
107
|
- example/test.rb
|
108
|
+
- example/tweets.db
|
127
109
|
- lib/robotwitter.rb
|
128
110
|
- lib/robotwitter/db.rb
|
129
|
-
- lib/robotwitter/path.rb
|
130
111
|
- lib/robotwitter/version.rb
|
131
112
|
- robotwitter.gemspec
|
132
113
|
- spec/robotwitter/robotwitter_spec.rb
|
133
114
|
- spec/spec_helper.rb
|
134
115
|
has_rdoc: true
|
135
116
|
homepage: http://github.com/kiote/robotwitter
|
136
|
-
licenses:
|
117
|
+
licenses:
|
137
118
|
- MIT
|
138
119
|
post_install_message:
|
139
120
|
rdoc_options: []
|
140
|
-
|
141
|
-
require_paths:
|
121
|
+
require_paths:
|
142
122
|
- lib
|
143
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
144
124
|
none: false
|
145
|
-
requirements:
|
146
|
-
- -
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
|
149
|
-
segments:
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
segments:
|
150
130
|
- 0
|
151
|
-
|
152
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
+
hash: 150190672050493529
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
133
|
none: false
|
154
|
-
requirements:
|
155
|
-
- -
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
|
158
|
-
segments:
|
159
|
-
- 0
|
160
|
-
version: "0"
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
161
138
|
requirements: []
|
162
|
-
|
163
139
|
rubyforge_project:
|
164
|
-
rubygems_version: 1.
|
140
|
+
rubygems_version: 1.6.2
|
165
141
|
signing_key:
|
166
142
|
specification_version: 3
|
167
143
|
summary: automate some twitter tasks
|
168
|
-
test_files:
|
144
|
+
test_files:
|
169
145
|
- spec/robotwitter/robotwitter_spec.rb
|
170
146
|
- spec/spec_helper.rb
|