Twitch.py Viewer Bot Twitch (Xeroday)


SUBMITTED BY: Guest

DATE: March 10, 2015, 12:42 p.m.

FORMAT: Text only

SIZE: 1.8 kB

HITS: 1442

  1. import requests
  2. import subprocess
  3. import json
  4. import sys
  5. import threading
  6. import time
  7. from Queue import Queue
  8. numberOfViewers = int(sys.argv[1])
  9. builderThreads = int(sys.argv[2])
  10. startTime = time.time()
  11. numberOfSockets = 0
  12. concurrent = 25
  13. urls = []
  14. urlsUsed = []
  15. def getURL(): # Get tokens
  16. output = subprocess.Popen(["livestreamer", "twitch.tv/CHANNEL_NAME", "-j"], stdout=subprocess.PIPE).communicate()[0]
  17. return json.loads(output)['streams']['worst']['url'] # Parse json and return the URL parameter
  18. def build(): # Builds a set of tokens, aka viewers
  19. global numberOfSockets
  20. global numberOfViewers
  21. while True:
  22. if numberOfSockets < numberOfViewers:
  23. numberOfSockets += 1
  24. print "Building viewers " + str(numberOfSockets) + "/" + str(numberOfViewers)
  25. urls.append(getURL())
  26. def view(): # Opens connections to send views
  27. global numberOfSockets
  28. while True:
  29. url=q.get()
  30. requests.head(url)
  31. if (url in urlsUsed):
  32. urls.remove(url)
  33. urlsUsed.remove(url)
  34. numberOfSockets -= 1
  35. else:
  36. urlsUsed.append(url)
  37. q.task_done()
  38. if __name__ == '__main__':
  39. for i in range(0, builderThreads):
  40. threading.Thread(target = build).start()
  41. while True:
  42. while (numberOfViewers != numberOfSockets): # Wait until sockets are built
  43. time.sleep(1)
  44. q=Queue(concurrent*2)
  45. for i in range(concurrent):
  46. try:
  47. t=threading.Thread(target=view)
  48. t.daemon=True
  49. t.start()
  50. except:
  51. print 'thread error'
  52. try:
  53. for url in urls:
  54. print url
  55. q.put(url.strip())
  56. q.join()
  57. except KeyboardInterrupt:
  58. sys.exit(1)

comments powered by Disqus