어떻게 웨 이 보 를 사용 하여 팔 굽 혀 펴 기 개 수 를 자동 으로 기록 합 니까?

SMART 원칙 에 따라 2016 년 목 표를 세 웠 습 니 다.매달 하나의 작은 목표 가 있 는데 모든 목 표 는 specific(구체 적),Measurable(측정 가능),Attainable(실현 가능),Relevant(관련 성),Time-bound(시한)이다.1 월 목 표 는 마라톤 4 개 를 포함해 200㎞를 달 리 는 것 이다.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 는 푸 시 해 야 할 웨 이 보 본문 입 니 다.
획득 accesstoken 의 과정 이 비교적 복잡 하 므 로 OAuth 2.0 인증 절 차 를 알 아야 합 니 다.자세 한 내용 은 권한 수여 체제 설명 을 보십시오.쉽게 말 하면 당신 의 웨 이 보 계 정 으로 웨 이 보 오픈 플랫폼 에 로그 인하 여 하나의 응용 프로그램 을 등록 한 다음 에 하나의 응용 Id 를 얻 은 다음 에 이 응용 프로그램 Id 로 해당 하 는 API 를 호출 하여 개인 웨 이 보 를 방문 하 는 권한 을 부여 하고 마지막 으로 access token 을 얻 는 것 입 니 다.
이 API 를 호출 하면?이전에 플러그 인 을 써 서 웨 이 보 에 제 블 로그 정 보 를 보 낸 적 이 있 기 때문에 관련 코드 를 꺼 내 서 다시 사용 하면 됩 니 다.관련 코드 는 루비 가 쓴 것 이다.코드 는 다음 과 같 습 니 다:
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
마지막 으로 셸 스 크 립 트 를 사용 하여 셸 호출 을 지원 합 니 다.
pushups

#!/bin/sh
rake pushups[$1]
OK.팔 굽 혀 펴 기 한 세트 를 마 친 후 명령 행 에 pushups 35 를 입력 하면 나의 마이크로 블 로그 에 트 위 터 한 편 이 더 많아 진 것 을 볼 수 있다.
최종 효 과 는 다음 과 같다.

좋은 웹페이지 즐겨찾기