Twitch

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Neroo
User
Beiträge: 2
Registriert: Donnerstag 4. Januar 2018, 01:37

I'm trying to program a bot with python. but it is giving the error "thread error". Can anybody help me ?

Code: Alles auswählen

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 = []
proxy_url = {
    'http': '37.17.38.196:53281',
    'http': '185.199.80.225:53281',
}	
	
def getURL(): # Get tokens
  output = subprocess.Popen(["livestreamer", "twitch.tv/twitch", "-j"], stdout=subprocess.PIPE).communicate()[0]
  return json.loads(output)['streams']['worst']['url'] # Parse json and return the URL parameter

def build(): # Builds a set of tokens, aka viewers
	global numberOfSockets
	global numberOfViewers
	while True:
		if numberOfSockets < numberOfViewers:
			numberOfSockets += 1
			print "Building viewers " + str(numberOfSockets) + "/" + str(numberOfViewers)
			urls.append(getURL())

def view(): # Opens connections to send views
	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): # Wait until sockets are built
			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)
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

I find “your” code in various incarnations all over the Internet. As it’s purpose is to game a system for personal benefit, you

- are despicable in my view.
- obviously want to snatch free programming advice from here to make money.

So at least offer some money to somebody, preferably not here.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@Neroo: the language of the board is German only, please raise any further questions in German language only!

@__deets__: was meinst du mit "As it’s purpose is to game a system for personal benefit" - das `game` kenne ich in dem Kontext nicht... Oder ist das die Rechtschreibkorrektur vom iPad, die da zugeschlagen hat? ;-)

Ansonsten ist der Code ja auch eher ein Beispiel für schlechten Programmierstil...

Gruß, noisefloor
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

“gaming a system” bedeutet übersetzt in etwa “ein System zum eigenen Vorteil manipulieren”.

In diesem Fall twitch views (was zufällig was mit games zu tun hat) künstlich hochtreiben. Damit kommen mehr Werbeeinnahmen rein.

Der Code ist scheisse, aber das interessiert den OP garantiert nicht. Den hat er aus dem Netz geklaubt, das wars.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@__deets__: ok, thx. Kannt ich in der Tat nicht, diesen Ausdruck.

Da einer meiner Söhne regelmäßig Gaming-Streams auf Twich schaut, sind wir so wie so aktiv an der Steigerung der Werbeeinnahmen beteiligt ;-)

Gruß, noisefloor
Neroo
User
Beiträge: 2
Registriert: Donnerstag 4. Januar 2018, 01:37

__deets__ hat geschrieben:I find “your” code in various incarnations all over the Internet. As it’s purpose is to game a system for personal benefit, you

- are despicable in my view.
- obviously want to snatch free programming advice from here to make money.

So at least offer some money to somebody, preferably not here.
sorry about that. someone close this topic. ty!
Antworten