监控聚币网行情 并实时发送到微信

最近由于好友推荐我入坑了国内的山寨币,所以顺便研究了下聚币网的API。 不过网页版的聚币网和手机版的做的不好,而且因为是7x24 小时交易,自己没有那么多的精力盯盘,所以写了python代码进行监控。

# -*-coding=utf-8-*-
__author__ = ‘Rocky‘
‘‘‘
http://30daydo.com
Contact: [email protected]
‘‘‘
import random
import hashlib
import hmac,time
import smtplib
from email.mime.text import MIMEText
from email import Utils
import threading
import requests,datetime,itchat

from toolkit import Toolkit

class Jubi_web():
    def __init__(self, send=None):
        cfg = Toolkit.getUserData(‘data.cfg‘)
        self.public_key = cfg[‘public_key‘]
        self.private_key = cfg[‘private_key‘]
        self.send=send
        from_mail = cfg[‘from_mail‘]
        password = cfg[‘password‘]
        to_mail = cfg[‘to_mail‘]
        smtp_server = ‘smtp.qq.com‘

        self.server = smtp_server
        self.username = from_mail.split("@")[0]
        self.from_mail = from_mail
        self.password = password
        self.to_mail = to_mail
        self.coin_list=[‘IFC‘,‘DOGE‘,‘EAC‘,‘DNC‘,‘MET‘,‘ZET‘,‘SKT‘,‘YTC‘,‘PLC‘,‘LKC‘,
                        ‘JBC‘,‘MRYC‘,‘GOOC‘,‘QEC‘,‘PEB‘,‘XRP‘,‘NXT‘,‘WDC‘,‘MAX‘,‘ZCC‘,
                        ‘HLB‘,‘RSS‘,‘PGC‘,‘RIO‘,‘XAS‘,‘TFC‘,‘BLK‘,‘FZ‘,‘ANS‘,‘XPM‘,‘VTC‘,
                        ‘KTC‘,‘VRC‘,‘XSGS‘,‘LSK‘,‘PPC‘,‘ETC‘,‘GAME‘,‘LTC‘,‘ETH‘,‘BTC‘]
        # 初始化邮箱设置读取需要股票信息
        # 这样子只登陆一次
        if self.send == ‘msn‘:

            try:
                self.smtp = smtplib.SMTP_SSL(port=465)
                self.smtp.connect(self.server)
                self.smtp.login(self.username, self.password)
            except smtplib.SMTPException, e:
                print e
                return 0

        if send==‘wechat‘:
            self.w_name=u‘xxxxx‘

            itchat.auto_login(hotReload=True)
            account=itchat.get_friends(self.w_name)

    def send_wechat(self,name,content):
        w_content=name+‘ ‘+content
        itchat.send(w_content,toUserName=self.toName)
        time.sleep(1)
        itchat.send(w_content,toUserName=‘filehelper‘)

    def send_text(self, name, content):

        subject = ‘%s‘ % name
        self.msg = MIMEText(content, ‘plain‘, ‘utf-8‘)
        self.msg[‘to‘] = self.to_mail
        self.msg[‘from‘] = self.from_mail
        self.msg[‘Subject‘] = subject
        self.msg[‘Date‘] = Utils.formatdate(localtime=1)
        try:
            self.smtp.sendmail(self.msg[‘from‘], self.msg[‘to‘], self.msg.as_string())
            self.smtp.quit()
            print "sent"
        except smtplib.SMTPException, e:
            print e
            return 0

    def warming(self, coin, up_price, down_price):
        url = ‘https://www.jubi.com/api/v1/ticker/‘
        while 1:
            time.sleep(5)
            try:
                data = requests.post(url, data={‘coin‘: coin}).json()
            except Exception,e:
                print e
                print "time out. Retry"
                time.sleep(15)
                continue

            current = float(data[‘last‘])
            if current >= up_price:
                print "Up to ", up_price
                print "current price ",current

                if self.send==‘msn‘:
                    self.send_text(coin,str(current))
                if self.send==‘wechat‘:
                    self.send_wechat(coin,str(current))

                time.sleep(1200)
            if current <= down_price:
                print "Down to ", down_price
                print "current price ",current
                if self.send==‘msn‘:
                    self.send_text(coin,str(current))
                if self.send==‘wechat‘:
                    self.send_wechat(coin,str(current))
                time.sleep(1200)
    #上面的内容尽量不用修改。

    def getContent(self):
        url = ‘https://www.jubi.com/api/v1/trade_list‘
        params_data = {‘key‘: ‘x‘, ‘signature‘: ‘x‘}
        s = requests.get(url=url, params=params_data)

    def getHash(self, s):
        m = hashlib.md5()
        m.update(s)
        return m.hexdigest()

    def sha_convert(self, s):
        return hashlib.sha256(self.getHash(s)).hexdigest()

    def get_nonce(self):
        lens = 12
        return ‘‘.join([str(random.randint(0, 9)) for i in range(lens)])

    def get_signiture(self):
        url = ‘xxxxxxxxx‘
        coin = ‘zet‘
        nonce = self.get_nonce()

        # sha=self.sha_convert(private_key)
        md5 = self.getHash(self.private_key)
        message = ‘nonce=‘ + nonce + ‘&‘ + ‘key=‘ + self.public_key
        # print message
        signature = hmac.new(md5, message, digestmod=hashlib.sha256).digest()
        # print signature

        # req=requests.post(url,data={‘signature‘:signature,‘key‘:public_key,‘nonce‘:nonce,‘coin‘:‘zet‘})
        req = requests.post(url, data={‘coin‘: coin})
        print req.status_code
        print req.text

    def real_time_ticker(self, coin):
        url = ‘xxxxxxxx‘
        try:
            data = requests.post(url, data={‘coin‘: coin}).json()
            #print data
        except Exception ,e:
            print e
        return data

    def real_time_depth(self, coin):
        url = ‘xxxxxxxxx‘
        data = requests.post(url, data={‘coin‘: coin}).json()
        print data
        data_bids = data[‘bids‘]
        data_asks = data[‘asks‘]
        print "bids"
        for i in data_bids:
            print i[0],
            print ‘ ‘,
            print i[1]
        print "asks"
        for j in data_asks:
            print j[0],
            print ‘ ‘,
            print j[1]

    def list_all_price(self):
        for i in self.coin_list:
            print i,
            print " price: ",
            p=self.real_time_ticker(i.lower())
            if p is not None:
                print p[u‘last‘]

    def getOrder(self,coin):
        url=‘https://www.jubi.com/api/v1/orders/‘
        try:
            req=requests.get(url,params={‘coin‘:coin})
        except Exception,e:
            print e

        data=req.json()
        return data
    # recent 100 trade turn over
    def turnover(self,coin):
        i=coin.lower()
        coins=Toolkit.getUserData(‘coins.csv‘)
        total=long(coins[i])
[i]        [/i]p=self.getOrder(i)
        print p
        amount=0.00
        for j in p:
            t= j[u‘amount‘]
            amount=float(t)+amount
        #current=float(self.real_time_ticker(i)[u‘last‘])
        turn_over=amount*1.00/total*100
        print turn_over

    def multi_thread(self,coin_list,price_list):
        thread_num=len(coin_list)
        thread_list=
        for i in range(thread_num):
            t=threading.Thread(target=self.warming, args=(coin_list,price_list[0],price_list[1]),)
            thread_list.append(t)
        for j in thread_list:
            j.start()
        for k in thread_list:
            k.join()

if __name__ == ‘__main__‘:

    obj = Jubi_web(send=‘wechat‘)
    coin_list=[‘zet‘,‘doge‘]
    price_list=[[0.2,0.13],[0.03,0.024]]
    obj.multi_thread(coin_list,price_list)

[/i]

程序运行后,使用扫一扫登录。

coin_list=[‘zet‘,‘doge‘] price_list=[[0.2,0.13],[0.03,0.024]]
 
通过这个参数,设置你想要监控的币种和目标价格。
同时程序支持发送给多个用户。
 

时间: 2024-12-18 22:50:55

监控聚币网行情 并实时发送到微信的相关文章

聚币网行情与套利分析

获取人民币交易区行情 import urllib.request import json import random import os os.system("cls") t = str(random.random()) print("[人民币交易区价格列表]") response = urllib.request.urlopen('https://www.jubi.com/coin/allcoin?t=' + t) page = response.read() a

聚币网API使用教程 demo

原文 http://30daydo.com/article/181 目前还在完善,等功能完善了,就更新到csdn. 更新 2017-05-27 官方有API的文档,可是这个文档就像一个草稿一样,两个基本例子都没有. 所以自己摸索一下,自己写一个现成的例子给大家,可以有个参考. 首先看一下官方的API文档: 一.API使用说明 1.请求过程说明 1.1 构造请求数据,用户数据按照Jubi提供的接口规则,通过程序生成签名和要传输给Jubi的数据集合: 1.2 发送请求数据,把构造完成的数据集合通过P

鲨鱼币上线聚币网交易, 流支付概念得大佬推崇

近日,SAK已正式联手聚币网,成为该平台又一潜力巨大的明星产品.据悉,聚币网为比特币交易网旗下数字货币交易平台,创办于2014年初,现上线的币种包括比特币.莱特币.狗狗币.暗黑币.比特股等.SAK的加盟无疑让这一平台进一步提升.同时,比特币交易网CEO张寿松对这次合作表示满意,对SAK支付.流支付有价值认同. 张寿松表示:SAK支付在实体商户中的推广应用规划是值得肯定的,尤其是基于移动互联网和线下高端商户结合的O2O项目,一旦可以推广起来,对SAK支付在实体商户中的应用将是一个很好的促进,让更多

聚币网API[Python2版]

聚币 现货 API [Python3版] 一.utils.py,基础类,包括HTTP 请求.签名等 # -*- coding: utf-8 -*- import hashlib import hmac import time import urllib import urllib2 import json from datetime import datetime from uuid import UUID from objutil import dict_obj # import reques

Android摄像头采集的视频数据流如何通过Socket实时发送到目标服务端

分两块: 1.取得摄像头采集的视频流 2.发送到服务器端 protected MediaRecorder mMediaRecorder; private LocalServerSocket mLss = null; private LocalSocket mReceiver, mSender = null; mLss = new LocalServerSocket("myVideoStream"); mReceiver = new LocalSocket(); //连接mLss,即接受

聚融网贷款投标助手应用安卓源码

聚融网贷款投标助手应用源码,本项目是一个安卓版本的聚融网贷款投标助手项目源码,一般公司或者开发者都不会把这类内部使用的项目源码泄漏出来,这个项目是依托于他的官网的orong.cn,但是现在官网挂掉了,估计整个公司跑路了才会分享出来,因为项目缺少部分图片资源所以原项目会报错,我使用资源目录下的其他图片文件对缺少的图片资源进行了替代,可能图片显示会有错误但是整个项目可以正常的运行起来,项目很大.本项目默认编译版本4.2.2编码UTF-8,项目有比较详细的注释代码质量也很高,相信里面的功能模块有很多地

Android源码分享,聚融网贷款投标助手源码

本项目是一个安卓版本的聚融网贷款投标助手项目源码,一般公司或者开发者都不会把这类内部使用的项目源码泄漏出来,这个项目是依托于他的官网的orong.cn,但是现在官网挂掉了,估计整个公司跑路了才会分享出来,因为项目缺少部分图片资源所以原项目会报错,我使用资源目录下的其他图片文件对缺少的图片资源进行了替代,可能图片显示会有错误但是整个项目可以正常的运行起来,项目很大.本项目默认编译版本4.2.2编码UTF-8,项目有比较详细的注释代码质量也很高,相信里面的功能模块有很多地方可以帮助大家,另外说一点因

聚融网贷款投标助手源码(Android)

聚融网贷款投标助手源码(Android) 本项目是一个安卓版本的聚融网贷款投标助手项目源码,一般公司或者开发者都不会把这类内部使用的项目源码泄漏出来,这个项目是依托于他的官网的orong.cn,但是现在官网挂掉了,估计整个公司跑路了才会分享出来,因为项目缺少部分图片资源所以原项目会报错,我使用资源目录下的其他图片文件对缺少的图片资源进行了替代,可能图片显示会有错误但是整个项目可以正常的运行起来,项目很大.本项目默认编译版本4.2.2编码UTF-8,项目有比较详细的注释代码质量也很高,相信里面的功

毅创科技官网上线,了解毅创微信更便捷

经过团队的日夜奋斗,毅创微信官网终于上线了!地址http://www.aosituoma.net 毅创微信官网有网站首页.功能介绍.成功案例.授权查询.更新日志.联系我们.帮助中心几个板块. 首页有服务内容介绍.成功案例.产品动态.帮助中心等模块. 其中服务内容含四个大方向: 一.第三方平台接入:将您的微信公众平台接入到我们的系统,微官网.微名片. 大转盘.微商城等众多功能即刻拥有.省时省力更省钱 二.微官网制作:微信营销没有微官网怎么行,不会做怎么办?把繁杂的设计制作交给毅创吧,轻松拥有一个高