如何使用微博自動記錄伏地挺身個數_linux shell

來源:互聯網
上載者:User

根據SMART原則我制定了2016年的目標。每個月都有一個小目標,每個目標都是specific(具體)、Measurable(可度量)、Attainable(可實現)、Relevant(相關性)、Time-bound(時限)的。1月份的目標是跑步200公裡,其中包含4個半程馬拉松。1月底驗收的時候發現這個目標輕鬆達成,整個1月份我總共跑了220公裡+,其中跑了4個半程馬拉松。而且第二次的馬拉松打破我的個人記錄,成績為1小時43分30秒,把我的個人最好成績提高了2分鐘。

2月份我的目標的是做4000個伏地挺身+撰寫4篇技術部落格。跑步的時候我可以使用跑步軟體(咕咚或者悅跑圈)來記錄我的跑步裡程,而記錄伏地挺身雖然有一些現成的軟體(比如Push-Ups),但是我感覺太重量級,想要一種輕量的方式來記錄。後來我想到了一種方式,只需在命令列終端輸入一條簡單的命令,比如pushups 30,那麼我的微博會自動多出來一條博文,記錄我本次做了多少伏地挺身,本月已經完成了多少伏地挺身,距離目標還剩下多少伏地挺身。這樣子每做完一組,我只需敲一行命令就可以輕鬆記錄下來,並且還有廣大網友進行監督。

這個主意很好,可是怎麼實現那?其實整個過程並不複雜,我周末花了兩個小時就完成了。新浪微博提供了一個微博開放平台,在微博開放平台上其開放了一系列API,其中發送微博就屬於其中一個。我們只需把我們要發送的內容組裝好,編寫程式調用其發送微博的API即可。

發送微博的API文檔在這裡。通過文檔可以看出其實只要發送一個http請求,包含相應的內容就好。其中有兩個欄位比較重要,一個是access token,一個是status。access token是認證令牌,確定是哪個應用向哪個微博發送內容,status是需要推送的微博本文。

擷取access_token的過程比較複雜,需要你瞭解OAuth2.0認證流程,詳情請看授權機制說明。簡單來說就是用你的微博帳號登陸微博開放平台,註冊一個應用,然後得到一個應用Id,然後用該應用Id調用相應的API來授權訪問你的個人微博,最後得到一個access token。

如果調用這個API那?因為之前曾經寫過一個外掛程式向微博推送我的部落格資訊,所以只需把相關代碼拿出來重用即可。相關代碼採用Ruby寫的。代碼如下:

WeiboPoster

require 'faraday'require 'yaml'require 'json'class WeiboPosterdef initialize@weibo_config = YAML.load_file(File.expand_path(File.dirname(__FILE__) + '/weibo-config.yml'))@pushups = YAML.load_file(File.expand_path(File.dirname(__FILE__) + '/pushups.yml'))enddef post_weibo(number)@number = numberconn = Faraday.new(:url => "https://api.weibo.com")result = conn.post '/2/statuses/update.json',:access_token => @weibo_config['access_token'],:status => generate_postresponseJSON = JSON.parse result.bodyif responseJSON['error_code']puts 'post error:' + responseJSON['error']elseputs "post to weibo successfully"endendprivatedef generate_posttotal = get_historytotal = total + @number.to_inumber_rest = 4000 - totalsave_to_history totalpost_template = @weibo_config['post_template'].force_encoding("utf-8")post_template % {:number_done => @number, :total => total,:number_rest => number_rest}enddef get_history@pushups['total']enddef save_to_history(total)@pushups['total'] = totalFile.open('pushups.yml','w') do |h|h.write @pushups.to_yamlendendendposter = WeiboPoster.newposter.post_weibo ARGV[0]

整個邏輯就是先從一個設定檔中讀出當前完成的伏地挺身個數,再配合通過命令列參數傳入的當前組做的個數,結合微博模板產生微博內容,再調用API發送HTTP請求。

accecs token和微博模板存放在weibo-config.yml檔案中。

weibo-config.yml

# Sina Weibo Postaccess_token: YOUR_ACCESS_TOKEN

post_template: 剛才做了%{number_done}個伏地挺身,2月份總共完成了%{total}個伏地挺身,距離4000個伏地挺身目標還差%{number_rest}個

然後我在Rakefile中配置了一個任務,用於調用WeiboPoster類。

Rakefile

require "rubygems"require "bundler/setup"require "stringex"desc "post pushups to weibo"task :pushups, :number do |t, args|args.with_defaults(:number => 50)number = args.numbersystem "ruby post_weibo.rb " + numberend

最後再用一個shell指令碼封裝一下,支援shell調用。

pushups

#!/bin/shrake pushups[$1]

OK這樣就齊活了。做完一組伏地挺身之後,只需在命令列輸入pushups 35,然後就可以看到我的微博多了一篇推文。

最終效果如下。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.