Skip to content

Instantly share code, notes, and snippets.

@l3d00m
Last active August 8, 2020 13:05
Show Gist options
  • Save l3d00m/d757c5444545162b8823114d521297db to your computer and use it in GitHub Desktop.
Save l3d00m/d757c5444545162b8823114d521297db to your computer and use it in GitHub Desktop.
Reddit Sidebar Updater based on Twitch newer version with praw4 and oauth
# Based on https://gist.github.com/Lemonszz/c16bcf61934088e52f8faa5b501811fa, but using praw4 and some minor cleanups.
import praw
import time
from urllib.request import urlopen
import urllib.request
import json
import sys
username = "yourname"
password = "yourpw"
userAgent = "sidebar updater"
client_secret = "getYourClientSecret" # https://www.reddit.com/prefs/apps/
client_id = "thisOneAsWellFromRedditApps" # https://www.reddit.com/prefs/apps/
subreddit = "SUBREDDIT"
twitch_ClientID = "hz64t2dwdx3sctxot5fk6wvd0y4ggv"
channels =["YOURCHANNELS", "AnotherOne"]
def TurnOn(twitchname, sidetext):
replaceString = "[PietStream ONLINE](https://twitch.tv/" + twitchname + "/#l" + ")"
regString = "[PietStream OFFLINE](https://twitch.tv/" + twitchname + "/)"
sidetext = sidetext.replace(regString, replaceString)
print(sidetext + "on")
return sidetext
def TurnOff(twitchname, sidetext):
regString = "[PietStream ONLINE](https://twitch.tv/" + twitchname + "/#l" + ")"
replaceString = "[PietStream OFFLINE](https://twitch.tv/" + twitchname + "/)"
sidetext = sidetext.replace(regString, replaceString)
print(sidetext + "off")
return sidetext
def IsTwitchLive(twitchname):
try:
url = str('https://api.twitch.tv/kraken/streams/' + twitchname)
streamID = -1
req = urllib.request.Request(url)
req.add_header("Client-ID",twitch_ClientID)
response = urllib.request.urlopen(req)
html = response.read()
data = json.loads(html.decode())
try:
streamID = data['stream']['_id']
except:
streamID = -1
return int(streamID)
except:
return -1
return -1;
def CheckChannels(sidetext):
for ch in channels:
if(IsTwitchLive(ch) != -1):
sidetext = TurnOn(ch, sidetext)
else:
sidetext = TurnOff(ch, sidetext)
return sidetext
try:
r = praw.Reddit(client_id=client_id,
client_secret=client_secret,
password=password,
user_agent=userAgent,
username=username)
r.read_only = False
settings = r.subreddit(subreddit).mod.settings()
sidetext = settings['description']
original = sidetext
except Exception as e:
print("reddit is broke " + format(e))
while True:
try:
settings = r.subreddit(subreddit).mod.settings()
sidetext = settings['description']
original = sidetext
sidetext = CheckChannels(sidetext)
if(sidetext != original):
r.subreddit(subreddit).mod.update(description=sidetext, spoilers_enabled=True)
time.sleep(120)
except Exception as e:
print("everythin is broke: " + format(e))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment