Class: Actir::CookiesBaidu

Inherits:
Object
  • Object
show all
Defined in:
lib/actir/script/cookies_baidu.rb

Class Method Summary collapse

Class Method Details

.baifubao_account_fileObject

百度账号配置文件



150
151
152
# File 'lib/actir/script/cookies_baidu.rb', line 150

def 
  File.join(Actir::Config.default_config_dir, "/pay.yaml")
end

.baifubao_keyObject



154
155
156
# File 'lib/actir/script/cookies_baidu.rb', line 154

def baifubao_key
  "pay.baifubao"
end

.clear_after_failureObject

更新baidu_cookies失败后的清理操作。目前需要手动调用,后续优化



77
78
79
80
81
# File 'lib/actir/script/cookies_baidu.rb', line 77

def clear_after_failure
  if @browser != nil
    @browser.close
  end
end

.cookies_fileObject

配置文件相对路径



145
146
147
# File 'lib/actir/script/cookies_baidu.rb', line 145

def cookies_file
  File.join(File.dirname(__FILE__), "cookies", "/cookies.yaml")
end

.cookies_pathObject

配置文件的上一级路径



140
141
142
# File 'lib/actir/script/cookies_baidu.rb', line 140

def cookies_path
  File.join(File.dirname(__FILE__), "cookies")
end

.get_baifubao_cookiesObject

获取cookies



123
124
125
126
127
128
129
130
131
# File 'lib/actir/script/cookies_baidu.rb', line 123

def get_baifubao_cookies
  sleep 3
  id =  @browser.cookies[:BAIDUID][:value]
  ss =  @browser.cookies[:BDUSS][:value]
  @browser.close
  #cookies = "  BAIDUID:\s\s\s\s\s\s\"" + id + "\"\n  BDUSS:\s\s\s\s\s\s\s\s\"" + ss + "\"\n"
  #以hash形式返回
  {:BAIDUID => id, :BDUSS => ss } 
end

.get_useful_cardObject

获取可用的百度账号的hash 返回值=> {“username” => “xxx”, “password”=>“iloveyouzan”, xxx}



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/actir/script/cookies_baidu.rb', line 49

def get_useful_card
  # old_config = Actir::Config.config_dir
  # Actir::Config.config_dir = script_config_path
  #通过配置文件判断取出可用的卡的参数
  baidu_card = Actir::Config.get(baifubao_key)
  card = {}
  baidu_card.each do |key, value|
    if value["available"] == true
      # 顺便取一下cookies
      baidu_card_cookies = Actir::Config.get("cookies." + key, cookies_path)
      value["BAIDUID"] = baidu_card_cookies["BAIDUID"]
      value["BDUSS"] = baidu_card_cookies["BDUSS"]
      #有可用的卡,取出cookies等参数
      card.store(key, value)
      break
    end
  end
  # Actir::Config.config_dir = old_config
  card
end

.login_baifubao(username, password) ⇒ Object

登录百付宝主页



111
112
113
114
115
116
117
118
119
120
# File 'lib/actir/script/cookies_baidu.rb', line 111

def (username, password)
  # 选择账号登陆(默认是短信快捷登录,所以需要点击切换一下)
  .wait_until_present
  .click
  # 输入账号密码
  text_baifubao_username.wait_until_present
  text_baifubao_username.set username
  text_baifubao_password.set password
  .click
end

.modify_cookies(card, cookies) ⇒ Object



133
134
135
136
137
# File 'lib/actir/script/cookies_baidu.rb', line 133

def modify_cookies(card, cookies)
  cookies.each do |key, value|
    Actir::Config.set("cookies" + "." + card + "." + key.to_s , "\"" + value.to_s + "\"", cookies_path)
  end
end

.open_baifubao(address = []) ⇒ Object

访问百付宝主页



99
100
101
102
103
104
105
106
107
108
# File 'lib/actir/script/cookies_baidu.rb', line 99

def open_baifubao(address = [])
  if address.size == 0
    if $mode == :remote
      address = Actir::Remote.get_remote_address(1)
    end
  end
  @browser = Browser.new(:www, :url => address[0], :mode => $mode, :browser => :chrome, :window_size => nil)
  @browser.goto "baifubao.com"
  @browser 
end

.re_availableObject

将所有百度支付卡的available状态恢复为true



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/actir/script/cookies_baidu.rb', line 27

def re_available
  #每次登陆都判断一下cookies文件的上一次修改时间和当前时间
  #如果日期不同,则刷新所有的pay文件中baidu-card的状态
  unless Actir::Config.is_same_day?("cookies", cookies_path)
    Actir::Config.lock("pay") do
      str_array = IO.readlines()
      str_array.each_with_index do |line, index|
        if line =~ /available\:\s*false/  
          str_array[index] = line.gsub(/false/, 'true')
        end
      end
      cookiesfile = File.open(, 'w')
      str_array.each do |line|
        cookiesfile.puts line
      end
      cookiesfile.close
    end
  end
end

.set_useless_card(card) ⇒ Object

设置不可用的卡 入参传入卡的key



72
73
74
# File 'lib/actir/script/cookies_baidu.rb', line 72

def set_useless_card(card)
  Actir::Config.set(baifubao_key + "." + card + "." + "available", "false")
end

.update_all(address = []) ⇒ Object

更新百度账号所有的配置文件



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/actir/script/cookies_baidu.rb', line 9

def update_all(address = [])
  baidu_card = Actir::Config.get(baifubao_key)
  # 确认目前可用的卡的数目和cookies文件上的是否匹配
  # TODO 先不实现,cookies文件上的cards数量过多目前看不影响
  # baidu_card_cookies = Actir::Config.get("cookies", cookies_path)
  # if baidu_card_cookies != nill && baidu_card != nil
  #   if baidu_card_cookies.size > baidu_card.size
  #
  #   end
  # else
  #   raise "no baifubao cards"
  # end
  baidu_card.each do |card, value|
    update_cookies(card, address)
  end
end

.update_cookies(card, address = []) ⇒ Object

更新配置文件中的baidu_cookies



84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/actir/script/cookies_baidu.rb', line 84

def update_cookies(card, address = [])
  #打开百付宝
  open_baifubao(address)
  #获取对应卡的账号密码
  args = Actir::Config.get(baifubao_key + "." + card)
  #登录百付宝
  (args["username"], args["password"])
  #获取cookies
  cookies = get_baifubao_cookies
  #清除之前的cookies
  modify_cookies(card, cookies)
  puts "Already update baifubao's cookies"
end