cpsn 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.mkd +11 -2
- data/VERSION +1 -1
- data/bin/cpsn +56 -30
- metadata +1 -1
data/README.mkd
CHANGED
@@ -29,7 +29,10 @@ can also pass '-o' to see your offline friends as well.
|
|
29
29
|
Defining Groups
|
30
30
|
===============
|
31
31
|
|
32
|
-
If you find yourself looking for the status of a few friends frequently, you
|
32
|
+
If you find yourself looking for the status of a few friends frequently, you
|
33
|
+
can define groups of users in your settings.yml file. Groups go under the
|
34
|
+
':groups:' section in the settings.yml file, and are the name you want to call
|
35
|
+
them and a list of user names.
|
33
36
|
|
34
37
|
For example:
|
35
38
|
|
@@ -39,4 +42,10 @@ For example:
|
|
39
42
|
|
40
43
|
:groups:
|
41
44
|
- mw2: [friend1, friend2, friend3]
|
42
|
-
|
45
|
+
|
46
|
+
You may also set a default group for cpsn to query instead of all friends when
|
47
|
+
you run the command with no arguments (you can still access all friends with
|
48
|
+
'cpsn all'):
|
49
|
+
|
50
|
+
:groups:
|
51
|
+
- default: mw2
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/bin/cpsn
CHANGED
@@ -20,7 +20,7 @@ $json_url = "http://profiles.us.playstation.com/playstation/psn/profile/get_game
|
|
20
20
|
|
21
21
|
class Cpsn
|
22
22
|
|
23
|
-
attr_accessor :settings, :groups
|
23
|
+
attr_accessor :settings, :groups, :default_group
|
24
24
|
|
25
25
|
def initialize(options)
|
26
26
|
@log = Logger.new(STDERR)
|
@@ -28,6 +28,9 @@ class Cpsn
|
|
28
28
|
if options[:debug]
|
29
29
|
@log.level = Logger::DEBUG
|
30
30
|
end
|
31
|
+
|
32
|
+
# may be set in load_groups
|
33
|
+
@default_group = 'all'
|
31
34
|
|
32
35
|
@settings = load_settings()
|
33
36
|
@groups = load_groups(@settings)
|
@@ -53,6 +56,13 @@ class Cpsn
|
|
53
56
|
for group in settings[:groups].value
|
54
57
|
name = group.value.keys[0].value
|
55
58
|
vals = group.value[group.value.keys[0]]
|
59
|
+
|
60
|
+
if name == 'default'
|
61
|
+
@default_group = vals.value
|
62
|
+
@log.debug("Found default group #{@default_group}")
|
63
|
+
next
|
64
|
+
end
|
65
|
+
|
56
66
|
members = []
|
57
67
|
mem_str = ""
|
58
68
|
for user in vals.value do
|
@@ -99,6 +109,37 @@ class Cpsn
|
|
99
109
|
end
|
100
110
|
|
101
111
|
def get_friends()
|
112
|
+
begin
|
113
|
+
return _get_friends()
|
114
|
+
rescue WWW::Mechanize::ResponseCodeError => response
|
115
|
+
puts response
|
116
|
+
if response.response_code == '403'
|
117
|
+
cpsn.get_cookie(cpsn.settings[:username].value,
|
118
|
+
cpsn.settings[:password].value)
|
119
|
+
retry
|
120
|
+
else
|
121
|
+
raise response
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def get_friend_status(friend)
|
127
|
+
begin
|
128
|
+
return _get_friend_status(friend)
|
129
|
+
rescue WWW::Mechanize::ResponseCodeError => response
|
130
|
+
if response.response_code == '403'
|
131
|
+
cpsn.get_cookie(cpsn.settings[:username].value,
|
132
|
+
cpsn.settings[:password].value)
|
133
|
+
retry
|
134
|
+
else
|
135
|
+
raise response
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
private
|
141
|
+
|
142
|
+
def _get_friends()
|
102
143
|
@log.debug("Getting friends list")
|
103
144
|
page = @agent.get($friend_url)
|
104
145
|
divs = page.search("div.slotcontent")
|
@@ -113,7 +154,7 @@ class Cpsn
|
|
113
154
|
return friends
|
114
155
|
end
|
115
156
|
|
116
|
-
def
|
157
|
+
def _get_friend_status(friend)
|
117
158
|
@log.debug("Loading friend status for #{friend}")
|
118
159
|
page = @agent.get($json_url + friend)
|
119
160
|
data = JSON.parse(page.body)
|
@@ -177,38 +218,23 @@ optparse.parse!
|
|
177
218
|
|
178
219
|
cpsn = Cpsn.new(options)
|
179
220
|
|
180
|
-
if ARGV.length
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
else
|
191
|
-
|
192
|
-
friend_names = cpsn.get_friends()
|
193
|
-
rescue WWW::Mechanize::ResponseCodeError => response
|
194
|
-
if response.response_code == '403'
|
195
|
-
cpsn.get_cookie(cpsn.settings[:username].value,
|
196
|
-
cpsn.settings[:password].value)
|
197
|
-
retry
|
198
|
-
end
|
221
|
+
if ARGV.length == 0
|
222
|
+
ARGV << cpsn.default_group
|
223
|
+
end
|
224
|
+
|
225
|
+
friend_names = Set.new []
|
226
|
+
for arg in ARGV
|
227
|
+
if arg == 'all'
|
228
|
+
friend_names.merge(cpsn.get_friends)
|
229
|
+
elsif cpsn.groups.has_key? arg
|
230
|
+
friend_names.merge(cpsn.groups[arg])
|
231
|
+
else
|
232
|
+
friend_names.add(arg)
|
199
233
|
end
|
200
234
|
end
|
201
235
|
|
202
236
|
for friend_name in friend_names
|
203
|
-
|
204
|
-
friend = cpsn.get_friend_status(friend_name)
|
205
|
-
rescue WWW::Mechanize::ResponseCodeError => response
|
206
|
-
if response.response_code == '403'
|
207
|
-
cpsn.get_cookie(cpsn.settings[:username].value,
|
208
|
-
cpsn.settings[:password].value)
|
209
|
-
retry
|
210
|
-
end
|
211
|
-
end
|
237
|
+
friend = cpsn.get_friend_status(friend_name)
|
212
238
|
|
213
239
|
if friend
|
214
240
|
if friend[:status] != "offline" or options[:offline]
|