cpsn 0.5.2 → 0.6.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.
- 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]
|