Twitch Viewer Display (2.0 BETA)

    • Release
    • Open Source

    Es gibt 102 Antworten in diesem Thema. Der letzte Beitrag () ist von Messvibel.

      KidRick schrieb:

      hast du dafür irgendwelche Referenzen?


      Die einzige Quelle war diese Dokumentation hier, alles andere war zum größten Teil trial and error. Mir gefällt das ganze Switch-Design mit den Nummern auch nicht wirklich, weil bei einer kleinen Änderung auf Twitch-Seite alles für die Katz sein kann, aber ich habe mich wahrscheinlich noch zu wenig mit RFC1459 beschäftigt, um einen anderen Weg zu finden.
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      Mal ne Frage: Momentan werden Emoticons ja einfach als Text angezeigt (z. B. "Kappa" statt ).
      Das läuft über ein Control-Template, welches je nach Art des ListView-Eintrags in der ItemSource getriggert wird:

      XML-Quellcode

      1. <ControlTemplate x:Key="Chat" TargetType="{x:Type ListViewItem}">
      2. <StackPanel Background="Transparent" Orientation="Horizontal">
      3. <GridViewRowPresenter Content="{TemplateBinding Content}" Columns="{TemplateBinding GridView.ColumnCollection}"/>
      4. <TextBlock Background="Transparent" Text="{Binding username}" FontWeight="Bold" Margin="5,0,0,5" Foreground="{Binding color}">
      5. <TextBlock.Style>
      6. <Style TargetType="{x:Type TextBlock}">
      7. <Style.Triggers>
      8. <Trigger Property="IsMouseOver" Value="true">
      9. <Setter Property="Cursor" Value="Hand"/>
      10. </Trigger>
      11. </Style.Triggers>
      12. </Style>
      13. </TextBlock.Style>
      14. <TextBlock.ContextMenu>
      15. <ContextMenu x:Name="ContextMenu1" Opened="initCM">
      16. <MenuItem Header="Timeout" Click="cm_Timeout" CommandParameter="{Binding Parent, RelativeSource={RelativeSource Self}}"/>
      17. <Separator/>
      18. <MenuItem Header="Mod" Click="cm_Mod" CommandParameter="{Binding Parent, RelativeSource={RelativeSource Self}}"/>
      19. <MenuItem Header="Unmod" Click="cm_Unmod" CommandParameter="{Binding Parent, RelativeSource={RelativeSource Self}}"/>
      20. </ContextMenu>
      21. </TextBlock.ContextMenu>
      22. </TextBlock>
      23. <TextBlock Background="Transparent" Text="{Binding text}" Margin="5,0,0,5"/>
      24. </StackPanel>
      25. </ControlTemplate>


      Meine Idee war es, ein Usercontrol zu erstellen, da auch noch eine kleine Ladeanimation angezeigt werden soll, wenn das Emoticon noch nicht gecached ist. Allerdings müsste ich ja dann das Control-Template dynamisch erstellen, also wenn jemand beispielsweise "foo Kappa bar" schreibt, einen Textblock mit "foo", danach das Usercontrol und zum Schluss wieder einen Textblock mit "bar". Scheint mir aber nicht wirklich umsetzbar zu sein so. Hättet ihr irgendeine Idee, wie ich das umsetzen kann?
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      Okay, mittlerweile bin ich etwas weiter. Mein Ansatz war jetzt, ein UserControl als ListViewItem zu nehmen. Funktioniert so weit auch alles prima, bis auf die Sache, dass mein UserControl die Parameter nicht bekommt.

      Einbindung in die ListView:
      Spoiler anzeigen

      XML-Quellcode

      1. ​<ControlTemplate x:Key="Chat" TargetType='{x:Type ListViewItem}'>
      2. <StackPanel Background="Transparent" Orientation="Horizontal">
      3. <GridViewRowPresenter Content="{TemplateBinding Content}" Columns="{TemplateBinding GridView.ColumnCollection}"/>
      4. <local:ChatRow Username="{Binding username}" Text="{Binding text}" Color="{Binding color}" />
      5. </StackPanel>
      6. </ControlTemplate>


      Dazu habe ich im UserControl DependencyProperties erstellt:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. ​Public Shared ReadOnly UsernameProperty As DependencyProperty = DependencyProperty.Register("Username", GetType(String), GetType(ChatRow))
      2. Public Property Username() As String
      3. Get
      4. Return CType(GetValue(UsernameProperty), String)
      5. End Get
      6. Set(ByVal value As String)
      7. SetValue(UsernameProperty, value)
      8. End Set
      9. End Property
      10. Private Shared Sub OnUsernameChanged(obj As DependencyObject, e As DependencyPropertyChangedEventArgs)
      11. Dim cr As ChatRow = CType(obj, ChatRow)
      12. Dim value As String = CType(e.NewValue, String)
      13. End Sub
      14. Public Shared ReadOnly TextProperty As DependencyProperty = DependencyProperty.Register("Text", GetType(String), GetType(ChatRow))
      15. Public Property Text() As String
      16. Get
      17. Return CType(GetValue(TextProperty), String)
      18. End Get
      19. Set(ByVal value As String)
      20. SetValue(TextProperty, value)
      21. End Set
      22. End Property
      23. Private Shared Sub OnTextChanged(obj As DependencyObject, e As DependencyPropertyChangedEventArgs)
      24. Dim cr As ChatRow = CType(obj, ChatRow)
      25. Dim value As String = CType(e.NewValue, String)
      26. End Sub
      27. Public Shared ReadOnly ColorProperty As DependencyProperty = DependencyProperty.Register("Color", GetType(String), GetType(ChatRow))
      28. Public Property Color() As String
      29. Get
      30. Return CType(GetValue(ColorProperty), String)
      31. End Get
      32. Set(ByVal value As String)
      33. SetValue(ColorProperty, value)
      34. End Set
      35. End Property
      36. Private Shared Sub OnColorChanged(obj As DependencyObject, e As DependencyPropertyChangedEventArgs)
      37. Dim cr As ChatRow = CType(obj, ChatRow)
      38. Dim value As String = CType(e.NewValue, String)
      39. End Sub


      Diese werden aber jetzt nicht gesetzt. Ich habe auch schon probiert, die Bindings (Username="{Binding username}" Text="{Binding text}" Color="{Binding color}"​) durch konstante Werte zu ersetzen, das funktioniert aber auch nicht. Woran liegt das und wie kann ich das fixen?
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      Großes Update - Kompletter Recode, neue Features

      Ich habe mich schon lange mit dem schlechten Code von damals, der schlechten Struktur und der fehlenden Wartbarkeit herumgeärgert - deshalb habe ich mich entschieden, das Projekt noch einmal komplett neu aufzusetzen.

      Das Design habe ich zwar übernommen, im Hintergrund hat sich aber fast alles geändert: So ist der Code jetzt in C#, der IRC-Standard RFC1459 inklusive der IRCv3 Capabilities wurde implementiert und noch viele Bugs und Probleme wurden durch das Redesign behoben.

      Neue Features sind unter anderem:
      • Ein Pie-Chart, der anzeigt, wie viele der Chat-Nutzer Follower sind
      • Emoticons werden nun angezeigt
      • User, die benutzerdefinierte Farben für ihren Usernamen auf Twitch gewählt haben, sollten jetzt auch mit dieser Farbe angezeigt werden
      • URLs sind anklickbar
      • Neues Update-System (nUpdate) mit nur manueller Prüfung auf Updates (in den Settings ist ein neuer Button dafür)
      Dazu soll in nächster Zeit auch ein Plugin-System kommen. Einige Plugin-Ideen wären z. B. ein Plugin für Umfragen oder Gewinnspiele, eine OBS-Integration uvm; ich bin hier aber auch für andere Ideen offen und natürlich könnt ihr dann auch selbst Plugins entwickeln, ohne dazu erst den Twitch-IRC implementieren zu müssen.

      Bekannte Probleme:
      • twitchnotify-Messages werden als PRIVMSG behandelt, was zu einem Absturz führt ("xxx just subscribed" ist zum Beispiel eine twitchnotify-Message)
      • Manchmal wird Text nach einem Emoticon nicht angezeigt
      • Manchmal wird der letzte Buchstabe eines Emoticons nicht durch das Emoticon ersetzt (z. B. "Kappa" wird dann zu " ^^ a") [musste das Original-Kappa leider ersetzen]
      • Beim Updaten muss das Programm manuell geschlossen werden, da sonst die Datei nicht ersetzt werden kann
      DOWNLOAD IM OP
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      Update 1.1

      Changelog:
      • Viele Bugfixes (man konnte in der 1.0 nicht einmal die Nachrichten sehen, die man selbst geschrieben hatte; weiß nicht wie mir das durchgegangen ist ?( )
      • Komplette Unterstützung für Twitch Chat-Badges (werden sowohl in der Zuschauer-List als auch im Chat angezeigt)
      • Autoscroll ist nun ein- und ausschaltbar
      Installation: Falls ihr das Programm schon habt gibt es in den Einstellungen eine Möglichkeit, auf Updates zu überprüfen und dieses herunterzuladen. Bei der Installation kommt ein Error, dann einfach die beiden TVD-Fenster schließen, sodass die Installation fortgeführt werden kann. Falls ihr das Programm noch nicht habt, könnt ihr euch die neueste Version über den Link im OP herunterladen.

      Bezüglich des Plugin-Systems habe ich aber noch eine Frage: Nachdem ich etwas herumgegoogled habe, war mir relativ klar wie man das in .NET umsetzt. Jetzt aber eine Designfrage:
      Wenn das Plugin eine Funktion des Hauptprogramms aufrufen möchte, ist es dann geschickter, dem Plugin eine Instanz des Hauptprogramms zu übergeben, worüber es diese Funktion aufrufen kann, oder soll das Plugin ein im Interface festgelegtes Event invoken, welches vom Hauptprogramm abonniert ist? Konkret geht es hier um die Senden-Funktion: github.com/newcat/TVDC/blob/master/plugin/IPlugin.cs
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer

      autoupdater

      Hey, mal ne Kurze frage.

      Wie machst du das mit dem AutoUpdater?

      Sucht das Programm auf github nach einer version.txt und wenn die hoeher als die aktuelle version ist kommt dass ein Update verfuegbar ist?

      oder wie is das Geregelt, waere fuer mich mal interessant zu wissen :)
      Natuerlich nur wenn du diese information herausgeben willst.

      EDIT: hier noch 3 fehler die ich gefunden habe, bin mir beim 1. nicht ganz sicher ob der schon bekannt ist.
      Spoiler anzeigen
      Hab hier noch 2 Fehler beim update gefunden, und einen im Programm hier nen screenshot


      Und Noch einen Fehler Gefunden:
      Nach Update Gesucht alles Prima und dann Die Neue Version Gestartet, Nach Update Gesucht und Voila Die Angebliche version von der
      Neuen datei ist auch 1.0.0.0 die alte, und laesst sich somit nicht auf 1.1.0.0 Updaten.

      Im Programm:

      Man kann den Channel nicht Wechseln (koennen schon aber es entstehen fehler), ich habe Von meinem Channel auf einen Channel von einem
      Kleinen Streamer gewechselt, der Chat wird Angezeigt aber die Viewer und Followers, (+Viewer Liste) werden erst nach nem Restart angezeigt,
      evtl. koennte man das noch verbessern und es sofort Aktualisieren anstatt einen Neustart zu erfordern :).


      lg
      Begeisterter BF4 Spieler :D

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Gangsterkrafter“ ()

      @Gangsterkrafter schau dir mal das an:
      Updater - Warum sollte man eigene Updater vermeiden?
      anschließend gibt es für Updatelösungen diverse Methoden: Google nach UpdateSystem.NET oder verwende den hier im Forum angebotenen Updater nUpdate - Die einfache Updatelösung
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      @Gangsterkrafter

      1) Der Fehler ist bekannt; eigentlich habe ich die CloseHostApplication von nUpdate auf true, aber trotzdem wird das Programm nicht geschlossen, weswegen die .exe nicht überschrieben werden kann. Steht aber auf meiner TODO-Liste und ist hoffentlich in der nächsten Version gefixed.

      2) Das ist interessant und sollte so eigentlich nicht passieren. In dem Fall die .exe löschen und neu herunterladen.

      3) In allen meinen bisherigen Tests hat das funktioniert. Bei kleinen Streamern ist es aber so, dass Twitch die Viewer-Liste erst nach bis zu 2 Minuten nach dem einloggen durchgibt, somit ist natürlich auch die Viewerzahl bis dahin falsch. Die Zahl der Follower sollte spätestens alle 30 Sekunden aktualisiert werden; manchmal wirft der WebClient aber nur eine WebException wenn ich die Twitch-API Seite aufrufe. Wenn Du Pech hast und das passiert mehrere Male hintereinander, dann sieht es natürlich so aus, als würde es nicht aktualisiert werden. In der nächsten Version schreibe ich in dem Fall einfach eine 0 hin, bis die Follower-Zahl erfolgreich aktualisiert wurde.

      Vielen Dank für Dein Feedback!
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      Soll ich mal vom 2. Problem ein Video machen? dann sieht man es evtl. Besser

      Achja trotzdem schonmal Gute Arbeit :)

      Bei dem 3. was ich geschrieben habe kam auf einmal nur "Twitch Chat Moderate.exe funktioniert nicht mehr" (nicht wundern habe die exe in "Twitch Chat Moderate" umbenannt

      Ich habe hier jetzt nen Screenshot von dem 3. fehler den ich beschrieben habe:
      Begeisterter BF4 Spieler :D

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gangsterkrafter“ ()

      Gangsterkrafter schrieb:

      Soll ich mal vom 2. Problem ein Video machen? dann sieht man es evtl. Besser

      Das wäre top!

      Zu 3.: Ich glaube ich habe den Fehler gefunden und behoben. Ist dann in der neuen Version drin.
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      @Gangsterkrafter
      Ist gefixed, danke für das Video. Neue Version ist oben, versuch mal zu updaten. Der Updater lädt dir aber wieder ne neue tvdc.exe herunter, also denk dran die dann wieder umzubenennen und die alte Version zu löschen.
      Und schau, dass du dir nen neuen oAuth-Code erstellst, damit der im Video ungültig wird.

      Vielen Dank nochmal!
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      Klar das Video hab ich doch gern gemacht :) Solange es Hilft das Programm zu verbessern ist ja alles N1

      Moment mal, wo Laedt der die Neue datei hin?

      evtl. koenntest du die Datei noch in den Ordner von der alten schieben und den Prozess der alten Beenden :)

      Und was ist eigentlich mit den Crashes, sind die Schon behoben?
      Begeisterter BF4 Spieler :D

      Gangsterkrafter schrieb:

      Moment mal, wo Laedt der die Neue datei hin?

      Also der Updater lädt die tvdc.exe dahin, wo sie bisher war (in deinem Fall also auf den Desktop) und sollte sie überschreiben. Wenn du sie aber umbenennst, also z. B. in "Twitch Chat Moderate.exe", dann lädt er zusätzlich noch die (neue) tvdc.exe auf den Desktop, weil er dabei ja "Twitch Chat Moderate.exe" nicht überschreibt. Insofern sollte das hier

      Gangsterkrafter schrieb:

      in den Ordner von der alten schieben
      eigentlich schon funktionieren - bloß halt immer unter dem Dateinamen "tvdc.exe". Dabei sollte sich eigentlich der Prozess der alten beenden - irgendwie funktioniert das aber nicht, da werde ich nochmal nachforschen. Das wird speziell dadurch problematisch, dass die Datei nicht überschrieben werden kann, während sie ausgeführt wird, d. h. wenn man die .exe nicht umbennent, kriegt man während des Updates ein Error und muss dann das Programm manuell schließen um das Update fortzusetzen.

      Gangsterkrafter schrieb:

      Und was ist eigentlich mit den Crashes, sind die Schon behoben?

      Sind behoben.
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      Trauriger Weise habe ich leider Keine "tvdc.exe" auf meinem Desktop :(
      Da Scheint wohl etwas Schief gelaufen zu sein.

      Also das mit dem Updater Problem wuerde ich so machen, dass ich ein 2. Programm mache,
      Welches tvdc.exe dann Ausfuehr also die tvdc.exe fuert dann zum Beispiel die exe Updater.exe aus

      Dann Toetet die Updater.exe den Prozess tvdc.exe Loescht sie und Schiebt die Heruntergeladene tvdc.exe (also das Update) zb. bei mir jetzt der Fall auf den Desktop. evtl. sogar noch dass sie die Neue Datei in die Alte Umbenennt.

      Das waere wahrscheinlich das, was ich machen wuerde weil diese Updater.exe kann man ja auch ganz gemuetlich in die Resources packen und dann einfach von der tvdc.exe zb in AppData Schreiben lassen wo sie dann bei einem Update Ausgefuehrt wird :)

      Naja ich melde mich wenn ich weitere Fehler gefunden habe, aber bis dahin kann ich wegen den Oben Beschriebenen fehler nicht die Neuste version Nutzen :( evtl. muesstest du da nochmal gucken weil ich wie gesagt Keine "tvdc.exe" auf meinem Desktop habe.

      Desktop Screenshot:


      Achja, ich hab das gefuehl dass evtl. Benutzerdefinierte Emoticons also Sub Emoticons zu einem Absturz fueheren, muss aber nicht umbedingt kann auch sein dass etwas anderes das ganze verursacht hat.

      lg
      Begeisterter BF4 Spieler :D

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gangsterkrafter“ ()

      Hab gerade gesehen dass du nur eine Verknüpfung auf deinem Desktop hast. Die eigentliche .exe liegt also woanders und dorthin wird auch die neue tvdc.exe heruntergeladen.

      Gangsterkrafter schrieb:

      Also das mit dem Updater Problem wuerde ich so machen, dass ich ein 2. Programm mache

      Das macht nUpdate ja auch so - bloß ist diese Updater.exe ein festes Programm von nUpdate, was auch die Signatur prüft etc. - siehe dazu Updater - Warum sollte man eigene Updater vermeiden?
      Eigentlich ist es auch so gedacht, dass sich die tvdc.exe selber killt, sobald sie die Updater.exe aufgerufen hat, aber wiegesagt - aus irgendwelchen Gründen funktioniert das noch nicht.

      Mein Vorschlag (vllt. hast du es auch schon so gemacht, aber dann sollte es eigentlich auch tun): Du lädst die tvdc.exe beispielsweise in dein Download-Ordner und bennenst sie NICHT um. Dann Rechtsklick -> Verknüpfung erstellen. Diese VERKNÜPFUNG packst du dann auf deinen Desktop, und die kannst du dann auch nennen wie du willst.

      Gangsterkrafter schrieb:

      evtl. Benutzerdefinierte Emoticons also Sub Emoticons

      Möglich, wäre nett, wenn du mir kurz den Channel schreiben könntest, auf dem das passiert ist.
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      twitch.tv/spackoarzt hier ist das Passiert.

      Achja, es waere Toll von dir wenn du deine Config Datei Hinzufuegen koenntest. Denn jetzt bei dem Neuen Update muss man wieder alles neu eingeben :)

      Das mit dem Updater, da wuerde ich an deiner Stelle dann nochmal Trade fragen falls du deutliche Probleme hast

      Und was mir bis jetzt auch aufgefallen ist, beim oauth Code Generieren oeffnet sich bei mir IMMER Google Chrome obwohl ich viel Lieber Firefox Benutze

      Aber bis jetzt Gute Arbeit *thumbsup*
      Begeisterter BF4 Spieler :D
      Update 1.1.2
      • Bugfixes (vielen Dank an @Gangsterkrafter)
      • Unterstützung für /me-Command hinzugefügt (funktioniert allerdings bisher nur für /me-Nachrichten, die von der Twitch-Seite aus gesendet wurden)
      • Deutliche Verbesserungen beim Update-Prozess - so werden jetzt die Einstellungen übernommen, außerdem gab es ein neues UI für den Update-Check und -Download und die Anwendung sollte sich jetzt auch korrekt schließen, wenn die neuen Packages installiert werden.

      Gangsterkrafter schrieb:

      beim oauth Code Generieren oeffnet sich bei mir IMMER Google Chrome obwohl ich viel Lieber Firefox Benutze

      Dann hast du Chrome noch als Standardbrowser gesetzt.
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer