cpsn 0.2.0 → 0.3.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/TODO +0 -2
- data/VERSION +1 -1
- data/bin/cpsn +23 -2
- metadata +1 -1
data/TODO
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/bin/cpsn
CHANGED
@@ -5,17 +5,24 @@ require 'mechanize'
|
|
5
5
|
require 'json'
|
6
6
|
require 'yaml'
|
7
7
|
require 'optparse'
|
8
|
+
require 'logger'
|
8
9
|
|
9
10
|
$login_url = "https://store.playstation.com/external/index.vm?returnURL=https%3a%2f%2fsecureus.playstation.com%2fRegistration%2fPSNL%2fSignInFrame.aspx"
|
10
11
|
$friend_url = "http://profiles.us.playstation.com/playstation/psn/profile/friends"
|
11
12
|
$json_url = "http://profiles.us.playstation.com/playstation/psn/profile/get_gamer_summary_data?id="
|
12
13
|
|
14
|
+
|
15
|
+
$log = Logger.new(STDERR)
|
16
|
+
$log.level = Logger::WARN
|
17
|
+
|
13
18
|
def load_settings()
|
19
|
+
$log.debug("Loading settings")
|
14
20
|
settings = YAML::parse_file(File.expand_path("~/.cpsn/settings.yml"))
|
15
21
|
return settings
|
16
22
|
end
|
17
23
|
|
18
24
|
def get_cookie(agent, username, password)
|
25
|
+
$log.debug("Signing in for new cookie")
|
19
26
|
page = agent.get($login_url)
|
20
27
|
login_form = page.forms.first
|
21
28
|
login_form.loginName = username
|
@@ -34,6 +41,7 @@ def get_cookie(agent, username, password)
|
|
34
41
|
end
|
35
42
|
|
36
43
|
def get_agent(username, password)
|
44
|
+
$log.debug("Creating new user agent")
|
37
45
|
agent = WWW::Mechanize.new
|
38
46
|
agent.user_agent_alias = 'Mac FireFox'
|
39
47
|
agent.redirect_ok = true
|
@@ -48,21 +56,27 @@ def get_agent(username, password)
|
|
48
56
|
end
|
49
57
|
|
50
58
|
def get_friends(agent)
|
59
|
+
$log.debug("Getting friends list")
|
51
60
|
page = agent.get($friend_url)
|
52
61
|
divs = page.search("div.slotcontent")
|
53
62
|
|
54
63
|
friends = []
|
55
64
|
for div in divs
|
56
|
-
|
65
|
+
friend = div.attributes["id"]
|
66
|
+
friends << friend
|
67
|
+
$log.debug("Found friend #{friend}")
|
57
68
|
end
|
58
69
|
|
59
70
|
return friends
|
60
71
|
end
|
61
72
|
|
62
73
|
def get_friend_status(agent, friend)
|
74
|
+
$log.debug("Loading friend status for #{friend}")
|
63
75
|
page = agent.get($json_url + friend)
|
64
76
|
data = JSON.parse(page.body)
|
65
77
|
|
78
|
+
$log.debug(data)
|
79
|
+
|
66
80
|
friend = {:name => data["userName"]}
|
67
81
|
|
68
82
|
if data["onlineStatus"] == nil
|
@@ -72,9 +86,11 @@ def get_friend_status(agent, friend)
|
|
72
86
|
if data["onlineStatus"]["extensionStatus"] != nil
|
73
87
|
friend[:status] = 'online'
|
74
88
|
friend[:playing] = data["onlineStatus"]["extensionStatus"]["title"]
|
89
|
+
friend[:game_status] = data["onlineStatus"]["extensionStatus"]["status"]
|
75
90
|
else
|
76
91
|
friend[:status] = 'offline'
|
77
92
|
friend[:playing] = ""
|
93
|
+
friend[:game_status] = ""
|
78
94
|
end
|
79
95
|
|
80
96
|
return friend
|
@@ -87,6 +103,11 @@ optparse = OptionParser.new do |opts|
|
|
87
103
|
options[:offline] = true
|
88
104
|
end
|
89
105
|
|
106
|
+
opts.on('-d', '--debug', 'Show debugging information') do
|
107
|
+
$log.level = Logger::DEBUG
|
108
|
+
end
|
109
|
+
|
110
|
+
|
90
111
|
opts.on(nil, '--version', 'Display version information') do
|
91
112
|
gem_dir = File.join(File.dirname(__FILE__), '..')
|
92
113
|
File.open(File.join(gem_dir, 'VERSION')) do |version_file|
|
@@ -127,7 +148,7 @@ for friend_name in friend_names
|
|
127
148
|
|
128
149
|
if friend
|
129
150
|
if friend[:status] != "offline" or options[:offline]
|
130
|
-
puts friend[:status] + "\t" + friend[:name] + "\t" + friend[:playing]
|
151
|
+
puts friend[:status] + "\t" + friend[:name] + "\t" + friend[:playing] + "\t" + friend[:game_status]
|
131
152
|
end
|
132
153
|
else
|
133
154
|
puts "Error: no access to " + friend_name
|