|
大家最近都在热议古城钟楼的红火。不是加V号、不是官方号、不是皇冠会员。没有拟人化,没有段子、没有运营。1天之内从1万不到的粉丝新增了20多万并且还在持续传播和增长粉丝。我不研究它是怎么红起来的,但写个类似的程序实现它却很容易,程序才100行左右: ! Q/ w8 O9 H& s! M m) n
先来普及一下地支时间与北京时间的对应关系: - 【子时】夜半,又名子夜、中夜:十二时辰的第一个时辰。(北京时间23时至次日01时)。
- 【丑时】鸡鸣,又名荒鸡:十二时辰的第二个时辰。(北京时间01时至03时)。
- 【寅时】平旦,又称黎明、早晨、日旦等:时是夜与日的交替之际。(北京时间03时至05时)。
- 【卯时】日出,又名日始、破晓、旭日等:指太阳刚刚露脸,冉冉初升的那段时间。(北京时间05时至07时)。
- 【辰时】食时,又名早食等:古人“朝食”之时也就是吃早饭时间,(北京时间07时至09时)。
- 【巳时】隅中,又名日禺等:临近中午的时候称为隅中。(北京时间09时至11时)。
- 【午时】日中,又名日正、中午等:(北京时间11时至13时)。
- 【未时】日昳,又名日跌、日央等:太阳偏西为日跌。(北京时间13时至15时)。
- 【申时】哺时,又名日铺、夕食等:(北京时间15时至17时)。
- 【酉时】日入,又名日落、日沉、傍晚:意为太阳落山的时候。(北京时间17时至19时)。
- 【戌时】黄昏,又名日夕、日暮、日晚等:此时太阳已经落山,天将黑未黑。天地昏黄,万物朦胧,故称黄昏。(北京时间19时至21时)。
- 【亥时】人定,又名定昏等:此时夜色已深,人们也已经停止活动,安歇睡眠了。人定也就是人静。(北京时间21时至23时)。
# k- D# e3 h; u" w6 O2 ^ : K6 q! {' ~1 T! U2 J
然后我们来分析一下它昨天发布的内容 - 1月8日00:00来自Weico.iPhone 【子时】
- 1月8日02:00来自Weico.iPhone 【丑时】铛~铛~
- 1月8日04:00来自Weico.iPhone 【寅时】铛~铛~铛~铛~
- 1月8日06:00来自Weico.iPhone 【卯时】铛~铛~铛~铛~铛~铛~
- 1月8日08:00来自Weico.iPhone 【辰时】铛~铛~铛~铛~铛~铛~铛~铛~
- 1月8日10:00来自Weico.iPhone 【巳时】铛~铛~铛~铛~铛~铛~铛~铛~铛~铛~
- 1月8日12:00来自Weico.iPhone 【午时】
- 1月8日14:00来自Weico.iPhone 【未时】铛~铛~
- 1月8日16:00来自Weico.iPhone 【申时】铛~铛~铛~铛~
- 1月8日18:00来自Weico.iPhone 【酉时】铛~铛~铛~铛~铛~铛~
- 1月8日20:00来自Weico.iPhone 【戌时】铛~铛~铛~铛~铛~铛~铛~铛~
- 1月8日22:00来自Weico.iPhone 【亥时】铛~铛~铛~铛~铛~铛~铛~铛~铛~铛~8 i- d3 f d5 D- q7 [& h: @
7 q& B |2 U+ y8 X8 b
根据上面,得出它有以下规律: - 每两个小时发布一条微博,
- 发布时间是偶数小时的0分,这个时间并不是地支时间的开始时间,而是正中间的那个时间点
- 内容是相应的地支时间,加上根据时间而变化的“铛~”的次数,
- “铛~”的次数与时有关,12小时以前与小时相同,12小时以后与[小时减12]相同。
/ r0 |! ~+ B/ ?
西安钟楼里的钟就是这样敲的吗?去过钟楼一次,没登上去,也没注意。 T, O; B7 I, E; k3 U/ r4 V7 _
完整代码如下: 需要自行修改App相关值: 4 d' |0 f1 J) l& X; m
* i+ \7 g7 e5 h+ a5 d o- <p style="font: 14px/25px verdana, Arial, Helvetica, sans-serif; margin: 10px auto; padding: 0px; color: rgb(51, 51, 51); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: rgb(255, 255, 255); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0);"></span> </p>
复制代码- using System;( W& Z$ b1 ?! h
- using System.Collections.Generic;
0 e( b4 x+ D9 J) C) e$ t7 v - using System.Text;
2 `1 b; h- M5 A' D1 K( X - using NetDimension.Weibo;
3 v1 w! f4 Y' E6 s - using System.Timers;
) W4 m. L; v$ a" G- R - using System.Globalization; Y) r8 R. Q+ J
- ( s& U8 P7 C! t4 {# _
- namespace WeiboTimer( K& W8 I2 |5 @, p0 m( B) w, i
- {
) f8 Y) {7 i V6 y/ j0 x6 o# M - class Program
& w) ]7 a; O! W1 A - {) J, S+ m5 f9 g% [
- static string AppKey = "********";$ i- K5 J4 D: a
- static string AppSecret = "*******";$ h/ J" J2 q0 r
- static string CallbackUrl = "****************";
. U% b( l! u" b& k2 g$ I - static Timer t = new Timer();% c# ?2 t. y @4 w; v
- static OAuth oauth = null;
* ~# K, E( l" O6 H' E9 w - static Client Sina = null; T6 G, \; I5 V
5 a0 V; N( G' G$ N. M8 o1 a- static void Main(string[] args); r7 I" ?2 K6 C( K J9 B
- {
0 {4 O+ R* c% x2 ]# a2 b - oauth = Authorize();
& i* P y. N: }0 d* ]5 { - if (!string.IsNullOrEmpty(oauth.AccessToken)){Console.Write("登录成功!");}) y9 P% W4 b( c8 M! H& Z
2 q2 E& E1 {; j$ i8 [- Sina = new Client(oauth);$ W: ^$ t7 ]& z( V% x
- string uid = Sina.API.Entity.Account.GetUID();
, Q; K6 X5 P7 L5 I$ } - var entity_userInfo = Sina.API.Entity.Users.Show(uid);
, U1 F9 i7 v' \5 w - Console.WriteLine("昵称:{0},微博地址:http://weibo.com/{1}", entity_userInfo.ScreenName, entity_userInfo.ProfileUrl);& }9 \2 I( B( g
- ( i* v9 z5 ?) y+ q6 |
- try' S! U4 x' \) X ?
- {
+ l' ?; |$ h; y8 \" u+ e - t.Interval = 1000 * 60; //设置间隔时间为1分钟
2 b8 S* b6 o4 `- {$ z5 c2 v: z3 g - t.Elapsed += new ElapsedEventHandler(TimerElapsedEvent); //到达时间的时候执行事件; & O9 w0 ^, ~9 F% E4 `+ K
- t.AutoReset = true; //设置是执行一次(false)还是一直执行(true); 8 ~& @" m/ w* ?! @ a2 n
- t.Start(); //启动Timer对象; 9 ?0 o& Q# T+ J' d( O
- }
" s" V* ~+ f# N2 a! k/ D7 d - catch (Exception ex)
# S( a; f/ _3 A1 r1 X - {
. E9 E2 s8 ^* g+ ? - Console.WriteLine("定时任务异常:" + ex.Message);- e$ l1 m5 `0 `4 b4 C" F0 c
- t.Stop();
; ] K2 \: M% h* A, T - }1 G6 J2 r. V) A. |
- Console.WriteLine("定时任务开始工作。。。");
% k) d, u0 B* O( Y7 o7 \0 Z - Console.ReadKey();
! g3 c" v- J- @/ ~" t j( _, l - }
# |% N6 \) \. H
6 O% j$ t3 A" b- static OAuth Authorize()% O6 S5 s* Q0 [8 h6 E8 \
- {
* s, t( m! d2 d, L3 } - OAuth o = new OAuth(AppKey, AppSecret, CallbackUrl);
- n4 X4 b$ I3 T5 v+ x; ` - while (!ClientLogin(o)) J" U. O+ i. a+ L- Q' r% h
- {
0 I" R$ m; Z, P - Console.WriteLine("登录失败,请重试。");* n( t2 k* A9 Z) d/ ~' h
- }
" W @/ \. u# t" \2 k - return o;; R9 ~7 k8 P- L8 m
- }0 X/ d5 ~9 V' X$ I. d6 U4 ]$ I4 t4 g% U
( s5 b7 S6 q1 y# |4 N9 [# Z4 O- private static bool ClientLogin(OAuth o)
2 @3 b9 }$ b4 `* Z B - {2 g) T) t/ `3 _/ N
- Console.Write("微博账号:");* X6 [+ Q3 u) G" G, c8 F
- string account = Console.ReadLine();4 h: E* M+ T) w- j7 T0 ?* g
- Console.Write("登录密码:");
6 g) }. x2 t: A* {* a( B- y - ConsoleColor originColor = Console.ForegroundColor;
0 R5 G) q$ w. I( e9 v% `$ ? - Console.ForegroundColor = Console.BackgroundColor; //知道这里是在干啥不?其实是为了不让你们看到我的密码^_^
0 O, O5 \0 v, Y0 E+ ]; J3 V - string password = Console.ReadLine();
; z5 K3 m( g0 C( M1 Q - Console.ForegroundColor = originColor; //恢复前景颜色。9 `1 d) Y- e8 Q) |
- return o.ClientLogin(account, password);
; R3 z/ {6 ~" u - }2 W) b" v: x. n2 t
9 u( K/ L1 I/ g' }0 f3 \6 d! S- static void TimerElapsedEvent(object sender, ElapsedEventArgs e)7 v9 ]7 m8 @/ C8 j
- {
5 O1 ~. d3 \9 n _ - DateTime iNow = DateTime.Now;
; a+ Y* K1 q9 A* W' V$ Z, A8 T0 o - try
" |0 b$ K5 r) p! R# ?- ^ - {
5 F- O' A4 p0 w6 Z4 q5 E | - string content = makeContent(iNow.Hour, iNow.Minute);6 Z3 o: `2 ~% h W7 N
- if (!string.IsNullOrEmpty(content))9 {, I9 e, F5 {
- {/ U, P' c9 f4 k Z% q
- var statusInfo = Sina.API.Entity.Statuses.Update(content);# V1 u/ L5 H$ K" N d( [* A
- DateTime dtCreate = DateTime.ParseExact(statusInfo.CreatedAt, "ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);3 Z$ g+ T$ G1 E1 L) W6 |
- Console.WriteLine("本机时间:{0}, 微博时间:{1}, 发布内容:{2}", string.Format("{0:G}", iNow), string.Format("{0:G}", dtCreate), statusInfo.Text);) I: [. \$ k% ]" U5 _- s- e% a
- }6 F! [( |; g2 {
- }9 o( F, w2 I* ~+ n6 [- D
- catch (Exception ex)
. \; g4 Z9 I v2 l/ Y/ k - { E, H. T& q- }6 N
- Console.WriteLine("定时任务异常:" + ex.Message);& t5 P4 S. P$ B
- }; f- a. d, t( B! m2 b. ^
- }
$ e- z% ~; g7 l2 x. A- @
2 j2 j3 G; A6 F1 c$ b4 L! U+ v- static string makeContent(int hour24, int minute)1 n+ P; |9 p4 V
- {
" o6 p$ G. b5 L) O* ~ - string[] diZhi = "子|丑|寅|卯|辰|巳|午|未|申|酉|戌|亥".Split('|');( c& O6 }" s" `
- string extWeibo = "";
" H- I, \. v% z& y' I$ q& K$ S - if (hour24 % 2 == 0 && minute == 0). C2 d/ L: L. J# o
- {
' d$ u) u/ b% e - for (int i = 0; i < ((hour24 >= 12)? (hour24 - 12): hour24); i++)
! @, Y! u7 \% s( G: c - {/ {* C2 l c! X6 u
- extWeibo += "铛~";
' f) p- m+ E: l7 ^8 y - }
% j1 Y* O3 B( `! K& f+ m9 b - return "【" + diZhi[hour24 / 2] + "时】" + extWeibo;
( R9 {4 b" _6 p# ?1 P% F7 O- ?# o6 x - }
6 f8 g& _( `4 V2 X* n/ V% n7 \, @ - else. D5 q- r: S5 v7 h% u- P6 K H
- {
4 E9 o! Q) f: o* r& T - return "";
3 `0 `1 D) A% ?, Y5 p$ w - }
% P* {& F9 D, w6 { - }
, L) ]9 M Q. q+ Q' `, }5 } - }
* K$ {& { `9 s! J. f - }
复制代码完整程序下载: - F8 T- r/ p/ E# V
|
上一篇:微信支付下一篇:微信公众平台开发(66)人品计算
|