php实现推送股票信息到微信

作者: Brave 分类: 生活 发布时间: 2020-10-03 16:50
  1. 借助linux的定时任务可以实现每天定时推送消息到自己的微信上。
  2. 微信消息推送使用了server酱提供的接口。
  3. 股票信息使用了小熊同学网站提供的接口。

直接上代码

//消息主体内容
	private $desp = '';
	//换行符
	private $br;

	//发送信息
	function sc_send($text, $desp = '', $key = '你的server酱key'){
		$postdata = http_build_query(
			array(
				'text' => $text,
				'desp' => $desp
			)
		);
		$opts = array('http' =>
			array(
				'method'  => 'POST',
				'header'  => 'Content-type: application/x-www-form-urlencoded',
				'content' => $postdata
			),
			'ssl' => array(
				"verify_peer"=>false,
				"verify_peer_name"=>false,
			)
		);
		$context  = stream_context_create($opts);
		return $result = file_get_contents('https://sc.ftqq.com/'.$key.'.send', false, $context);
	}

	//添加消息主体内容
	public function addDesp($data){

		$change = $data->changePercent;
				//今日涨幅超过0.5%
				if($change > 0.5 || $change < -0.5){
					$name = $data->name;
					$open = $data->open;
					$close = $data->close;
					$price = $data->price;
					$this->desp = $this->desp.'### '.$name.$this->br.'#### 开盘:'.$open.$this->br.'#### 现价:'.$price.$this->br.'#### 涨幅:**'.$change.'%**'.$this->br.'#### 昨日收盘:'.$close.$this->br;					
				}
	}
	
	//微信消息推送方法
	public function wxMessage(){
		$this->response->setHeader('Access-Control-Allow-Origin', '*')
					->setHeader('Content-Type', 'application/json');
		//获取股票数据
		$res = file_get_contents('https://api.doctorxiong.club/v1/stock/board');
		$result = json_decode($res);

		//换行符
		$this->br = urldecode('%0D%0A');
		
		if(!($result->code == 200))return 'no';
		
		foreach($result->data as $v){
			//上证指数
			if($v->code == 'sh000001'){
				$this->addDesp($v);
			}
			//创业板指
			if($v->code == 'sz399006'){
				$this->addDesp($v);	
			}
		}
		//消息标题
		$date = date('Y.m.d');
		$text = $date.'今日股价变动较大,请关注!';
		//消息正文尾注时间
		$date2 = date('Y-m-d  H:i:s');
		//如果今日涨跌不超过0.5,则不发送消息。
		if($this->desp == '') return 'noMessage';
		//发送消息
		$this->desp = $this->desp.'----------------------'.$this->br.'##### *'.$date2.'*';
		$this->sc_send($text,$this->desp);
		return 'ok';
	}

上面通过3个方法实现了当上证或创业板指数涨跌幅度大于0.5%时发送对应的数据到绑定的微信号上,具体绑定微信步骤请移步server酱官网查看。

程序逻辑:首先你要设置定时访问wxMessage方法,然后会获取最新股票信息,获取失败会返回字符串’no’,程序中止。获取成功后调用addDesp方法,判断上证及创业板涨跌幅,大于0.5%就加入消息内容$desp。然后判断$desp是否是空的,如果是空的说明当天涨跌都不超过0.5%则返回’noMessage’,否则生成消息内容调用sc_send方法发送消息,最后返回’ok’。

最后,需要一个定时访问wxMessage的程序,我使用的是linux自带的crontab,定时执行sh脚本,脚本来访问php的方法。

#!/bin/bash
result='no'
while [ $RESULT == "no" ]
do
    result=`curl http://192.168.1.252/api/wxmessage`
done

将上面的内容保存到message.sh文件中,加入crontab任务列表就可以自动执行任务了。当然地址要根据你的网页访问地址来。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注