-
-
Save sms151/8366976 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
import subprocess | |
import json | |
import sys | |
import threading | |
import time | |
from Queue import Queue | |
numberOfViewers = int(sys.argv[1]) | |
builderThreads = int(sys.argv[2]) | |
startTime = time.time() | |
numberOfSockets = 0 | |
concurrent = 25 | |
urls = [] | |
urlsUsed = [] | |
def getURL(): | |
output = subprocess.Popen(["livestreamer", "twitch.tv/TheClawPaw", "-j"], stdout=subprocess.PIPE).communicate()[0] | |
return json.loads(output)['streams']['worst']['url'] | |
def build(): | |
global numberOfSockets | |
global numberOfViewers | |
while True: | |
if numberOfSockets < numberOfViewers: | |
numberOfSockets += 1 | |
print "Building viewers " + str(numberOfSockets) + "/" + str(numberOfViewers) | |
urls.append(getURL()) | |
def view(): | |
global numberOfSockets | |
while True: | |
url=q.get() | |
requests.head(url) | |
if (url in urlsUsed): | |
urls.remove(url) | |
urlsUsed.remove(url) | |
numberOfSockets -= 1 | |
else: | |
urlsUsed.append(url) | |
q.task_done() | |
if __name__ == '__main__': | |
for i in range(0, builderThreads): | |
threading.Thread(target = build).start() | |
while True: | |
while (numberOfViewers != numberOfSockets): | |
time.sleep(1) | |
q=Queue(concurrent*2) | |
for i in range(concurrent): | |
try: | |
t=threading.Thread(target=view) | |
t.daemon=True | |
t.start() | |
except: | |
print 'thread error' | |
try: | |
for url in urls: | |
print url | |
q.put(url.strip()) | |
q.join() | |
except KeyboardInterrupt: | |
sys.exit(1) |
Ifaoro did you installed the livestreamer binary ?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Did you manage to get this to work? I ended up with the error: ValueError: No JSON object could be decoded