robotwitter 0.1.1 → 0.1.2
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.
- 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
|