MemePlay
MemePlay

Reputation: 29

How to make this script loop every hour

I'm creating a bot that posts every 60 minutes covid numbers, I have it finished but idk how to make it repeat. Any idea? It's a little project that I have in mind and it's the last thing I have to do. (if you answer the code from the publication with inside the solution it would be very cool)

import sys
CONSUMER_KEY = 'XXXX'
CONSUMER_SECRET = 'XXXX'
ACCESS_TOKEN = 'XXXX'
ACCESS_TOKEN_SECRET = 'XXXX'
import tweepy

import requests
from lxml import html


def create_tweet():
    response = requests.get('https://www.worldometers.info/coronavirus/')
    doc = html.fromstring(response.content)
    total, deaths, recovered = doc.xpath('//div[@class="maincounter-number"]/span/text()')

    tweet = f'''Coronavirus Latest Updates
Total cases: {total}
Recovered: {recovered}
Deaths: {deaths}

Source: https://www.worldometers.info/coronavirus/

#coronavirus #covid19 #coronavirusnews #coronavirusupdates #COVID19
'''
    return tweet


if __name__ == '__main__':
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

    # Create API object
    api = tweepy.API(auth)

    try:
        api.verify_credentials()
        print('Authentication Successful')
    except:
        print('Error while authenticating API')
        sys.exit(5)

    tweet = create_tweet()
    api.update_status(tweet)
    print('Tweet successful')

Upvotes: 0

Views: 3314

Answers (4)

Janzaib M Baloch
Janzaib M Baloch

Reputation: 1353

You can use the task scheduler in Python. "schedule" is a library in python which you can install using pip or conda. This Library allows you rerun a function after a given interval (daily, hourly weekly etc).

First you need to install the library using pip

pip install schedule

Secondly, Put your code in a function. For e.g:

def theCode():
    print("Do Something")

Third, set the schedule:

schedule.every(2).hours.do(theCode)
while 1:
    schedule.run_pending()
    time.sleep(10)

Upvotes: 0

Laurent B.
Laurent B.

Reputation: 2263

You have to use a timer like this one below. (The function refresh refers to itself every hour)

from threading import Timer

def refresh(delay_repeat=3600): # 3600 sec for one hour
    # Your refresh script here
    # ....
    # timer
    Timer(delay_repeat, refresh, (delay_repeat, )).start()

Have a look at my runnable refresh graph here to have an idea : How can I dynamically update my matplotlib figure as the data file changes?

Upvotes: 0

Abdulrahman Mohammed
Abdulrahman Mohammed

Reputation: 15

You can simply add this statement at the end of the code

sleep(3600)

If you want it to run endlessly, you can do it like this:

while True:
    insert your main code here
    sleep(3600)

Upvotes: 1

a.koptan
a.koptan

Reputation: 1248

You might want to use a scheduler, there is already a built-in one in Python (sched), read more about it here: https://docs.python.org/3/library/sched.html

Upvotes: 0

Related Questions