Twitch Viewer Bot
Verfasst: Sonntag 12. Oktober 2014, 02:02
Einen guten Morgen wünsche ich!
Das Thema "Viewer Bot" wird bei Twitch immer größer und scheinbar werden diese auch viel genutzt.
Da ich eh gern mit neuen / anderen Programmiersprachen rumspiele, wollte ich mir so einen Bot selbst in Python umsetzen - Gewissensbisse habe ich dabei nicht.
Folgenden Code habe ich als Basis genommen:
https://gist.github.com/Xeroday/6468146#file-twitch-py
http://www.ericzhang.me/faking-views-on-twitch-tv/
-----
Ich habe jetzt mehrere Stunden mit dem kleinen Versuch hinter mir und denke, dass sich mein Python Code dabei doch verbessert - So, dass ich heute einen Neubeginn startete.
Ich nutze nun Klassen und versuche vorerst die einfache Basis STABIL umzusetzen.
Das Heißt:
Pro Thread ein Proxy. Dieser Thread holt sich die nötige URL (Livestreamer Lib - exp. Date 24h) und generiert die Zugriffe (HEAD) auf diese URL => 1 View.
Wenn ein Thread abstürzt, soll dieser getötet werden und ein neuer mit dem nächsten Proxy gestartet werden. Die Proxy Liste kommt aus einer Datenbank.
Es kann vorkommen, dass Proxys von Twitch blockiert / blacklisted sind. Dann soll diese IP geflagt werden und ebenfalls eine neue eingebunden werden.
http://www.proxy-listen.de/Proxy/Proxyliste.html
Bei 5 Threads läuft der Code einwandfrei.
Bei 10 Threads läuft der Code einwandfrei.
Bei 15 Threads kommen ~14 an
Bei 20 schmeisst der Code Fehler, die ich mir nicht erklären kann. Ggf. auch Memory Probleme, oder es kommen keine Viewer (ggf. wegen fehlendem Timeout Parameter in urllib2.open() - Mit gibt's leider nur Fehler)
Hier mein aktueller Code, der folgende Punkte kann:
- Holt eine Proxyliste aus der Datenbank
- Erstellt Threads, die sich die URL holen und Zugriffe verursachen
Die anderen Punkte habe ich im vorherigen Code bereits teils umgesetzt. Allerdings soll der Grund vorerst stabil auch mit 20+ Threads laufen.
Hier der aktuelle Code (Einige Libs noch enthalten, die auf diesem Stand nicht nötig sind):
http://www.python-forum.de/pastebin.php?mode=view&s=406
Einen passenden Streamer findet Ihr hier:
http://www.twitch.tv/directory/game/Dota%202
Ich würde mich auch gern über TS oder Skype über einzelne Fragen zu einigen Funktionen unterhalten.
Warum z.B der Parameter "timeout" bei urllib2.open() zum Crash führt nach einiger Zeit.
Fand Python vorerst eigensinnig - Aber mittlerweile eine ziemlich nette Sache!
Gruß
Das Thema "Viewer Bot" wird bei Twitch immer größer und scheinbar werden diese auch viel genutzt.
Da ich eh gern mit neuen / anderen Programmiersprachen rumspiele, wollte ich mir so einen Bot selbst in Python umsetzen - Gewissensbisse habe ich dabei nicht.

Folgenden Code habe ich als Basis genommen:
https://gist.github.com/Xeroday/6468146#file-twitch-py
http://www.ericzhang.me/faking-views-on-twitch-tv/
-----
Ich habe jetzt mehrere Stunden mit dem kleinen Versuch hinter mir und denke, dass sich mein Python Code dabei doch verbessert - So, dass ich heute einen Neubeginn startete.
Ich nutze nun Klassen und versuche vorerst die einfache Basis STABIL umzusetzen.
Das Heißt:
Pro Thread ein Proxy. Dieser Thread holt sich die nötige URL (Livestreamer Lib - exp. Date 24h) und generiert die Zugriffe (HEAD) auf diese URL => 1 View.
Wenn ein Thread abstürzt, soll dieser getötet werden und ein neuer mit dem nächsten Proxy gestartet werden. Die Proxy Liste kommt aus einer Datenbank.
Es kann vorkommen, dass Proxys von Twitch blockiert / blacklisted sind. Dann soll diese IP geflagt werden und ebenfalls eine neue eingebunden werden.
http://www.proxy-listen.de/Proxy/Proxyliste.html
Bei 5 Threads läuft der Code einwandfrei.
Bei 10 Threads läuft der Code einwandfrei.
Bei 15 Threads kommen ~14 an
Bei 20 schmeisst der Code Fehler, die ich mir nicht erklären kann. Ggf. auch Memory Probleme, oder es kommen keine Viewer (ggf. wegen fehlendem Timeout Parameter in urllib2.open() - Mit gibt's leider nur Fehler)
Hier mein aktueller Code, der folgende Punkte kann:
- Holt eine Proxyliste aus der Datenbank
- Erstellt Threads, die sich die URL holen und Zugriffe verursachen
Die anderen Punkte habe ich im vorherigen Code bereits teils umgesetzt. Allerdings soll der Grund vorerst stabil auch mit 20+ Threads laufen.
Hier der aktuelle Code (Einige Libs noch enthalten, die auf diesem Stand nicht nötig sind):
http://www.python-forum.de/pastebin.php?mode=view&s=406
Einen passenden Streamer findet Ihr hier:
http://www.twitch.tv/directory/game/Dota%202
Ich würde mich auch gern über TS oder Skype über einzelne Fragen zu einigen Funktionen unterhalten.
Warum z.B der Parameter "timeout" bei urllib2.open() zum Crash führt nach einiger Zeit.
Fand Python vorerst eigensinnig - Aber mittlerweile eine ziemlich nette Sache!
Gruß