Advertisement
stachibana

get amount of used data from my docomo

Oct 11th, 2016
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.79 KB | None | 0 0
  1. #!/usr/local/bin/ruby
  2. # coding: utf-8
  3. print "Content-type: text\n\n";
  4.  
  5. require 'nokogiri'
  6. require 'mechanize'
  7. require 'pg'
  8. require 'json'
  9. require 'net/http'
  10. require 'uri'
  11.  
  12. # your my docomo login id and password
  13. loginid = ""
  14. password = ""
  15.  
  16. agent = Mechanize.new
  17. agent.user_agent_alias = 'iPhone'
  18. agent.follow_meta_refresh = true
  19. agent.redirect_ok = true
  20. agent.redirection_limit=10
  21. agent.get('https://www.mydocomo.com/dcm/dfw/web/portal/pub2/MYDPS-TR0001.do?xcid=MYD_esite_data_traffic_volume_check_from_CRP_MYD_charge') do |page|
  22.  
  23.   mypage = page.form_with(id: 'DiForm') do |form|
  24.     form.authid = loginid
  25.     form.authpass = password
  26.   end.submit
  27.  
  28.   doc = Nokogiri::HTML(mypage.content.toutf8)
  29.  
  30.   pageRedirect01 = agent.get('https://payment2.smt.docomo.ne.jp/smph/charges/gkyap003.srv?Xitraffic=1')
  31.  
  32.   used = pageRedirect01.content.toutf8.gsub(/(\s)/,"").match(/当月\(.*?年.*?月\)<\/p><pclass="arrange-rboldmb_5">(.+?)GB/)
  33.   allowedPacket = pageRedirect01.content.toutf8.gsub(/(\s)/,"").match(/<br>パケットパック:(.+?)GB<br>/)
  34.   remainedPacket = pageRedirect01.content.toutf8.gsub(/(\s)/,"").match(/前月残りデータ量:(.+?)GB<br>/)
  35.  
  36.   today = Date.today
  37.   dum = Date.new(2017, today.month, -1)
  38.   enddate = Date.new(today.year, today.month, dum.mday)
  39.  
  40.   message = "";
  41.  
  42.   message += "本日:" + today.strftime("%Y/%m/%d") + "\n"
  43.   message += "締日:" + enddate.strftime("%Y/%m/%d") + "\n"
  44.   message += "残り:" + (enddate - today + 1).to_i.to_s + "日" + "\n"
  45.  
  46.   ave = (used[1].to_f / today.mday.to_f).round(2)
  47.   message += "基本:" + allowedPacket[1].to_f.round(2).to_s + "GB\n"
  48.   message += "繰越:" + remainedPacket[1].to_f.round(2).to_s + "GB\n"
  49.   message += "使用:" + used[1] + "GB" + "\n"
  50.   message += "残り:" + (allowedPacket[1].to_f + remainedPacket[1].to_f - used[1].to_f).to_s + "GB\n"
  51.   message += "平均:" + ave.to_s + "GB" + "\n"
  52.  
  53.   maxDateThisMonth = dum.mday
  54.  
  55.   if ave * maxDateThisMonth > (allowedPacket[1].to_f + remainedPacket[1].to_f) then
  56.     willOverDate = ((allowedPacket[1].to_f + remainedPacket[1].to_f) / ave + 1).to_i
  57.     message += "このペースだと" + willOverDate.to_s + "日にオーバーします"
  58.   else
  59.     message += "このペースだと" + ((allowedPacket[1].to_f + remainedPacket[1].to_f) - ave * maxDateThisMonth).round(2).to_s + "GB余ります"
  60.   end
  61.  
  62.   resultJson = JSON.generate({"message" => message})
  63.   puts resultJson
  64.  
  65.   url = URI.parse("https://notify-api.line.me/api/notify")
  66.   request = Net::HTTP::Post.new(url)
  67.   request["Authorization"] = "Bearer YOUR_ACCESS_TOKEN"
  68.  
  69.   request.set_form_data(message: message)
  70.   response = Net::HTTP.start(url.hostname, url.port, use_ssl: url.scheme == "https") do |https|
  71.       https.request(request)
  72.   end
  73.   puts response.code
  74.   puts response.body
  75.  
  76. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement