通知在通话后退出

时间:2017-08-24 22:14:41

标签: python

如果比特币价格达到4,500美元,我写了一个Python脚本来显示桌面通知,但如果价格达到,脚本将退出。如何让脚本保持运行?

以下是代码:

import time
import requests
import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify

r = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
r.json()
resp = r.json()

price = resp["bpi"]["USD"]["rate_float"]
top = 4200

if price > top :

# One time initialization of libnotify
Notify.init("Crypto Notify")

# Create the notification object
summary = "Crypto Alert!"
body = "BTC : $ %s" % (price)
notification = Notify.Notification.new(
    summary,
    body, # Optional
)

# Actually show on screen
notification.show()

else:
    while price < top :
        r =requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
        print price
time.sleep(10)

1 个答案:

答案 0 :(得分:0)

所以从我看来,似乎你的脚本被编写为在一次传递中执行,即所有语句只会被执行一次。所以正在发生的事情是你的脚本等待价格更大的条件然后变为真,一旦它是真的它执行IF块的其余脚本。

你需要的是一个封装脚本的循环,谁的结束条件需要很长时间才能实现无限循环但更安全。

您可以尝试的另一种方法是将脚本保持在无限循环中,只需在使用ctrl + c时退出脚本

虽然它不是很干净的方法。

示例代码:

import time
import requests
import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify

while true :
    r = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
    r.json()
    resp = r.json()

    price = resp["bpi"]["USD"]["rate_float"]
    top = 4200

    if price > top :

    # One time initialization of libnotify
    Notify.init("Crypto Notify")

    # Create the notification object
    summary = "Crypto Alert!"
    body = "BTC : $ %s" % (price)
    notification = Notify.Notification.new(summary,body)

    # Actually show on screen
    notification.show()

    else:
        r =requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
        print price
        time.sleep(10)