如何使用微博自动记录俯卧撑个数

根据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 WeiboPoster
def 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'))
end
def post_weibo(number)
@number = number
conn = Faraday.new(:url => "https://api.weibo.com")
result = conn.post '/2/statuses/update.json',
:access_token => @weibo_config['access_token'],
:status => generate_post
responseJSON = JSON.parse result.body
if responseJSON['error_code']
puts 'post error:' + responseJSON['error']
else
puts "post to weibo successfully"
end
end
private
def generate_post
total = get_history
total = total + @number.to_i
number_rest = 4000 - total
save_to_history total
post_template = @weibo_config['post_template'].force_encoding("utf-8")
post_template % {:number_done => @number, :total => total,:number_rest => number_rest}
end
def get_history
@pushups['total']
end
def save_to_history(total)
@pushups['total'] = total
File.open('pushups.yml','w') do |h|
h.write @pushups.to_yaml
end
end
end
poster = WeiboPoster.new
poster.post_weibo ARGV[0]

整个逻辑就是先从一个配置文件中读出当前完成的俯卧撑个数,再配合通过命令行参数传入的当前组做的个数,结合微博模板生成微博内容,再调用API发送HTTP请求。

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

weibo-config.yml

# Sina Weibo Post
access_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.number
system "ruby post_weibo.rb " + number
end

最后再用一个shell脚本封装一下,支持shell调用。

pushups

#!/bin/sh
rake pushups[$1]

OK这样就齐活了。做完一组俯卧撑之后,只需在命令行输入pushups 35,然后就可以看到我的微博多了一篇推文。

最终效果如下。

(0)

相关推荐

  • 如何使用微博自动记录俯卧撑个数

    根据SMART原则我制定了2016年的目标.每个月都有一个小目标,每个目标都是specific(具体).Measurable(可度量).Attainable(可实现).Relevant(相关性).Time-bound(时限)的.1月份的目标是跑步200公里,其中包含4个半程马拉松.1月底验收的时候发现这个目标轻松达成,整个1月份我总共跑了220公里+,其中跑了4个半程马拉松.而且第二次的马拉松打破我的个人记录,成绩为1小时43分30秒,把我的个人最好成绩提高了2分钟. 2月份我的目标的是做400

  • iOS仿微博客户端一条微博的展示效果

    前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看看从前走过的路,挖过的坑.这是一条微博的展示,不是整个项目. 废话不多说,先上效果图: 拆分控件 在开始动手写代码之前,我们得先确定怎么去实现这样子的布局,也就是分析需要用到哪些控件. 观察微博客户端,整体是可滑动的,而且界面展示比较规律的,所以应该是使用UITableView实现的.那么一条微博应

  • iOS开发之路--微博骨架搭建

    最终效果图: BeyondViewController.m // // BeyondViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-3. // Copyright (c) 2014年 com.beyond. All rights reserved. // 这个就是主控制器,分为两块,下面是Dock栏,上面是显示不同的子控制器的view,子控制器最好用导航控制器包装一下,这样子控制器就自带了导航条,左按钮,标题,右按钮 /

  • JavaScript仿微博输入框效果(案例分析)

    这篇文章给大家分享一个小的JavaScript的案例,就是模仿微博输入框的效果. 效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>仿微博输入框效果</title> <script src="jquery.js"></script> </h

  • js实现统计字符串中特定字符出现个数的方法

    本文实例讲述了js实现统计字符串中特定字符出现个数的方法.分享给大家供大家参考,具体如下: //js统计字符串中包含的特定字符个数 function getPlaceholderCount(strSource) { //统计字符串中包含{}或{xxXX}的个数 var thisCount = 0; strSource.replace(/\{[xX]+\}|\{\}/g, function (m, i) { //m为找到的{xx}元素.i为索引 thisCount++; }); return th

  • 用Python编写简单的微博爬虫

    先说点题外话,我一开始想使用Sina Weibo API来获取微博内容,但后来发现新浪微博的API限制实在太多,大家感受一下: 只能获取当前授权的用户(就是自己),而且只能返回最新的5条,WTF! 所以果断放弃掉这条路,改为『生爬』,因为PC端的微博是Ajax的动态加载,爬取起来有些困难,我果断知难而退,改为对移动端的微博进行爬取,因为移动端的微博可以通过分页爬取的方式来一次性爬取所有微博内容,这样工作就简化了不少. 最后实现的功能: 1.输入要爬取的微博用户的user_id,获得该用户的所有微

  • linux find下如何统计一个目录下的文件个数以及代码总行数的命令

    今天遇到如题所示问题,网上捣鼓半天,有收获 知道指定后缀名的文件总个数命令:        find . -name "*.html" | wc -l 知道一个目录下代码总行数以及单个文件行数:        find . -name "*.html" | xargs wc -l

  • Linux下统计当前文件夹下的文件个数、目录个数

    1) 统计当前文件夹下文件的个数 复制代码 代码如下: ls -l |grep "^-"|wc -l 2) 统计当前文件夹下目录的个数 复制代码 代码如下: ls -l |grep "^d"|wc -l 3) 统计当前文件夹下文件的个数,包括子文件夹里的 复制代码 代码如下: ls -lR|grep "^-"|wc -l 4) 统计文件夹下目录的个数,包括子文件夹里的 复制代码 代码如下: ls -lR|grep "^d"|w

  • PowerShell函数中限制数组参数个数的例子

    本文介绍PowerShell自定义函数时,可以使用数组来传递多个参数.数组传递参数时,参数个数本身无法限制,PowerShell函数提供了一个方法来限制数组中参数的个数. PowerShell函数可以接受数组作为输入参数.而且不需要将数组定义好后再传给PowerShell函数,而可以直接将一个逗号分隔的字符串数组当作参数来传递,如:Add-User -UserName 'splaybow1','splaybow2','splaybow3'.这个函数的定义如下: 复制代码 代码如下: functi

  • Python实现统计英文单词个数及字符串分割代码

    字符串分割 复制代码 代码如下: str="a|and|hello|||ab" alist = str.split('|') print alist 结果 复制代码 代码如下: str="a hello{这里换成5个空格}world{这里换成3个空格}" alist=str.split(' ') print alist 统计英文单词的个数的python代码 复制代码 代码如下: # -*- coding: utf-8 -*- import os,sys info =

随机推荐