WSH Panel mod - Scriptbeispiele (Seekbar, Rating, Album-Rating, Coverart & mehr)

Begonnen von TomPro, 16. Juni 2009, 19:24:54

« vorheriges - nächstes »

Andre69

Zitat von: tedgo am 23. Januar 2010, 21:20:44
@Andre69
Zitat von: Andre69 am 23. Januar 2010, 18:35:36
PS: Diese Thread könnte eigendlich ins Customize root verschoben werden. WSH Panel ist ja DUI/CUI.

Darüber haben grimes und ich schon diskutiert.

Bevor wir aber irgendwas irgendwo hinschieben, möchte ich alle Script-Schreiber bitten, ihre geposteten Scripts auf Kompatibilität zu DUI zu überprüfen und gegebenenfalls - falls eine Kompatibilität nicht gegeben ist - Scriptteile dahingehend zu ergänzen.
Falls nicht gewünscht ist, ein Script kompatibel zu machen, dann bitte ich darum, dass die entsprechenden Scripts mit einem vorangestelltem [CUI] kenntlich gemacht werden.

Das gilt auch für künftig gepostete Scripts.
Falls also ein Script nur für CUI oder DUI ist, dieses bitte entsprechend mit [CUI] bzw. [DUI] kenntlich machen.
Dann können wir den Thread verschieben.
Danke.
Dann ist es wohl besser einfach einen "neuen" Thread aufzumachen.

Andre69

Zitat von: grimes am 23. Januar 2010, 19:45:01
Der Code gefällt mir immer besser. :top:

Zu den Ratings: Du hast bisher die Summe aller Ratings pro album oder artist (SELECT SUM(rating)). Besser wäre Summe der Ratings / Anzahl tracks eines Albums oder Artists (Durchschnittlicher Wert). Sonst landen Alben mit 100 tracks immer ganz oben auf der Liste.

Dann schreibe im query für Album: "SELECT sum(rating)/count(title) as rate,album FROM `ranking` GROUP BY album ORDER BY rate DESC LIMIT 10"
Für Artist ändere alle "album" in "artist".

Achtung wenn du eine Compilation hast wo ein Artist ist den du nur einmal in der Datenbank hast und er ein 5 Sterne Rating hat ist er der Spitzenreiter.
Oder du hast eine Single mit nur einem Track welcher 5 Sterne hat ist er auch der Spitzenreiter.
Außerdem musst du deine ganze fb Datenbank in MySQL abspeichern. Was aber wohl kein Problem darstellt.

Bubi

Zitat von: Andre69 am 22. Januar 2010, 23:55:40
Hier nun das Ranking mit MySQL

Tschuldigung, mal ne blöde Frage. Was heisst mit MySQL, also, was müsste ich da machen?

Andre69

Zitat von: Bubi am 23. Januar 2010, 21:40:19
Zitat von: Andre69 am 22. Januar 2010, 23:55:40
Hier nun das Ranking mit MySQL

Tschuldigung, mal ne blöde Frage. Was heisst mit MySQL, also, was müsste ich da machen?
MySQL ist eine Open-Source Datenbank: (http://www.mysql.de/about/) & (http://de.wikipedia.org/wiki/MySQL)
Sie kommt dort zum Einsatz wo es "lange" Listen zu verarbeiten gibt.

Du müstest MySQL installieren und als dienst starten. Den ODBC Treiber installieren. Das ganze dann Administrieren.

Es stellt sich aber die Frage ob das Sinn macht. Ob dieser "Aufwand" gerechtfertigt ist.
Ich habe hier einen Server stehen auf dem alle Daten gespeichert sind und die Familie kann von überall darauf zugreifen.

MySQL ist aber nicht zwingend erforderlich es geht z.B. auch mit Access. Ich habe aber leider keine Ahnung und "wundere & freue" mich immer wenn was funktioniert was ich als code eingebe. ;)

grimes

ZitatDann schreibe im query für Album: "SELECT sum(rating)/count(title) as rate,album FROM `ranking` GROUP BY album ORDER BY rate DESC LIMIT 10"
Für Artist ändere alle "album" in "artist".


Funktioniert (mit der Modifikation sr statt rate)

Wie kann ich mir den rate bzw. sr Wert (durchschnittliches Artist-Rating, erste Spalte) anzeigen lassen:

Zitat
rate/sr       artist
4.8788     Carl Nielsen
4.7532    The Alan Parsons Project
4.7315    Modest Mussorgsky
4.6957    Jean Sibelius
4.6667    Kraftwerk
4.6412    Dmitri Shostakovich
4.5532    Claude Debussy
4.5148    Gustav Mahler




Andre69

Zitat von: grimes am 24. Januar 2010, 11:07:51
ZitatDann schreibe im query für Album: "SELECT sum(rating)/count(title) as rate,album FROM `ranking` GROUP BY album ORDER BY rate DESC LIMIT 10"
Für Artist ändere alle "album" in "artist".


Funktioniert (mit der Modifikation sr statt rate)

Wie kann ich mir den rate bzw. sr Wert (durchschnittliches Artist-Rating, erste Spalte) anzeigen lassen:

Zitat
rate/sr       artist
4.8788     Carl Nielsen
4.7532    The Alan Parsons Project
4.7315    Modest Mussorgsky
4.6957    Jean Sibelius
4.6667    Kraftwerk
4.6412    Dmitri Shostakovich
4.5532    Claude Debussy
4.5148    Gustav Mahler




Dafür sind die items da. items = new Array("rate","album"); bzw. sr als rate. Das muss genauso heissen wie das Feld in MySQL oder wie du es mit "AS" im query bestimmst.
Wenn du das noch auf 2 stellen gerunded haben willst: SELECT round( (sum( rating ) / count( title ) ) , 2) AS rate, album FROM `ranking`GROUP BY album ORDER BY rate DESC LIMIT 0 , 30

Bubi

Danke Andre69. :)

Das Album- und Artist-Rating macht mich schon ganz wuschig - aber das ganze MySQL-Brimborium klingt leider nicht grade verlockend. :(

Muß mal nen Freund fragen.

grimes

@Bubi:
Ich habe bei mir XAMPP installiert. Da ist MySQL enthalten (und z.B. der Webserver Apache und PHP).
XAMPP wird nach der Installation in einfachen Schritten konfiguriert.
Dann ruft Du Deinen Browser auf und gibt
Zitatht tp://127.0.0.1/
ein, der localhost.
Dann kommt eine Begrüßungsseite, die Dich über alles weitere informiert.
Unter Tools|phpMyAdmin lässt sich die Datenbank MySQL bedienen.

Übrigens: Auch unsere Forensoftware benutzt zum Abspeichern von z.B. posts und Mitgliedern MySQL.

@Andre69:
Nochmals vielen Dank für Dein wundervolles Skript.
Vorschlag:
Man könnte noch die Defaultschriftart für DUI und CUI anzeigen lassen:
Zitatvar g_fontliste = g_instancetype == 1 ? window.GetFontDUI(0) : window.GetFontCUI(0);

function on_font_changed() {
   g_fontliste = g_instancetype == 1 ? window.GetFontDUI(0) : window.GetFontCUI(0);
   window.Repaint();
}


Problem:
unter "Top Artisten der letzten 10 Jahre" steht bei mir:

Zitat
01. 2010 Arnold Bax
02. 2009 Dmitri Shostakovich
03. 2008 Jimi Hendrix
04. 0      Pink Floyd


Der letzte Datensatz (04.) ist natürlich Müll. Liegt an tstamp = 0000-00-00 00:00:00 bei ungespielten Tracks.
Kann man diesen letzten Datensatz ausblenden?

Andre69

Zitat von: grimes am 24. Januar 2010, 16:12:33
@Andre69:
Nochmals vielen Dank für Dein wundervolles Skript.
Vorschlag:
Man könnte noch die Defaultschriftart für DUI und CUI anzeigen lassen:
var g_fontliste = g_instancetype == 1 ? window.GetFontDUI(0) : window.GetFontCUI(0);

function on_font_changed() {
g_fontliste = g_instancetype == 1 ? window.GetFontDUI(0) : window.GetFontCUI(0);
   window.Repaint();
}

Problem:
unter "Top Artisten der letzten 10 Jahre" steht bei mir:


01. 2010 Arnold Bax
02. 2009 Dmitri Shostakovich
03. 2008 Jimi Hendrix
04. 0      Pink Floyd


Der letzte Datensatz (04.) ist natürlich Müll. Liegt an tstamp = 0000-00-00 00:00:00 bei ungespielten Tracks.
Kann man diesen letzten Datensatz ausblenden?

SELECT ttest.* FROM (SELECT COUNT(artist) AS ca,artist,year(tstamp) AS tsy FROM `ranking` WHERE YEAR(tstamp) > 1900 GROUP BY artist ORDER BY ca DESC) AS ttest GROUP BY tsy ORDER BY tsy DESC LIMIT 10 ist dein Freund.
Es werden die Artisten die du von 1900 gehört hast aber nicht berücksichtigt  :rofl:

grimes

Ich heiße ja nicht Johannes Heesters.

Kann man die Top Artisten des letzten Jahres noch nach Monaten aufschlüsseln?

TomPro

Zitat von: tedgo am 23. Januar 2010, 21:20:44
@Andre69
Zitat von: Andre69 am 23. Januar 2010, 18:35:36
PS: Diese Thread könnte eigendlich ins Customize root verschoben werden. WSH Panel ist ja DUI/CUI.

Darüber haben grimes und ich schon diskutiert.

Bevor wir aber irgendwas irgendwo hinschieben, möchte ich alle Script-Schreiber bitten, ihre geposteten Scripts auf Kompatibilität zu DUI zu überprüfen und gegebenenfalls - falls eine Kompatibilität nicht gegeben ist - Scriptteile dahingehend zu ergänzen.
Falls nicht gewünscht ist, ein Script kompatibel zu machen, dann bitte ich darum, dass die entsprechenden Scripts mit einem vorangestelltem [CUI] kenntlich gemacht werden.

Das gilt auch für künftig gepostete Scripts.
Falls also ein Script nur für CUI oder DUI ist, dieses bitte entsprechend mit [CUI] bzw. [DUI] kenntlich machen.
Dann können wir den Thread verschieben.
Danke.


Da ich nicht zu denen gehöhre die Foobar "austesten", sondern ich für mich eigentlich nur Die Ansichten die ich benötige oder mir Wünsche mit Hilfe des WSH-Panels selber Zusammenstricke werde ich jetzt meine Scripsts nicht auf DUI testen, da ich es nicht benutze, genausowenig wie die foobar version 1, da ich gerade erst am beginn meines Programierens auf 0.9.6 umgestigen bin. (Never touch a running system).

Die Schnipsel, welche ich hier gepostet habe, und posten werde sind halt die Teilergebnisse meines ULTRA MEGA LANGWIERIGEN Versuchs einen Audioplayer und eine Poker-Tornament-Software in einem Guss zu bringen, da ich bei meinen Pokertunieren immer Musik laufen lasse und sowohl einen Blick auf die Pokeruhr als auch auf die Musik von meinem Pokertisch aus haben möchte, Daher auch die Speach Einbindung für die Ansagen der Blindlevel und ähnliches.

Und da ich in diesem Forum viel gelernt habe, und dies auch weiterhin tue, möchte ich zumindestens funktionierende Ergebnisse wieder zurückgeben, aber eben nur für die 0.9.6 CUI Version. Wenn die gröbsten Klötze mal abgearbeitet sind kann ich vielleicht, wenn mir bis dahin nicht mein Projekt über den Kopf gewachsen ist, an eine Portierung denken, aber im Moment bin ich mehr damit beschäftigt, das Programieren zu lernen, etwas was ich seit meiner C64 Basic Zeit nicht mehr gemacht habe.

Gruß TomPro

grimes

Veränderungsvorschlag

line 119:
gr.DrawString(this.data,  g_fontliste,  g_textcolor, 26+(ww/items.length)*x, 0 + i *zh, ww/items.length, zh, StrFmt_Text);
zu
gr.DrawString(this.data,  g_fontliste,  g_textcolor, 26+((ww-26)/items.length)*x, 0 + i *zh, (ww-26)/items.length, zh, StrFmt_Text);

EDIT: Meine SQL-Kenntnisse sind lausig  :'(
Ich hätte gern die Anzahl der Alben pro artist angezeigt.

tedgo

So, nach langer Scripting-Abstinenz jetzt mal das vorläufige Ergebnis meines Lyrics-Panels (welches ich als Ersatz für das doch sehr crashlastige foo_uie_lyrics in meine Config verbauen werde).

Es läuft sowohl in der DUI als auch in der CUI.
Über Kontextmenü lässt sich das Panel zur Not "refreshen" (was aber nicht nötig sein dürfte) und der Text, falls er denn länger ist als das Panel, auf Autoscrollen umschalten. Zeitmarken (Timestamps) werden jedoch nicht unterstützt! Sie werden aber für die Anzeige (denke ich doch) sauber ausgeblendet.

Ebenfalls über Rechtsklick kommt man auch in die Properties, um hier die Pfade zu externen Textdateien (mit Titleformatting) ändern zu können.

Bitte beachten: Ich habe das Script zwar getestet und es funktioniert (soweit ich das feststellen konnte), aber es kann sein, dass ich noch die eine oder andere Änderung vornehmen werde.
Ich wüsste z. B. gern, ob es möglich ist, im WSH Panel mod entweder direkt in den Lyrics-Tag in die File Properties zu gelangen, um das Textfile zu editieren oder ohne FSO den Editor mit dem Text zu starten...
Hat aber für mich keine Dringlichkeit.

DL-Link siehe hier.

PS: Wer den Lyricsgrabber in seinem components-Verzeichnis hat, kann im Panel auch auf Klick einen evtl. fehlenden Text herunterladen (da braucht man den Befehl nicht unter "Legacy Commands" suchen...). Klappt aber natürlich nur für das gerade spielende Lied.
Das Panel ist auf den Abruf von "Lyrics Plugin" eingestellt, man kann die Auswahl aber auch ändern (für diejenigen die das Python-Zeugs benutzen...).

grimes

Danke, tedgo, für dieses wichtige Skript!!
Das Skript funktioniert sehr gut. Die Zusammenarbeit mit dem Lyrics Grabber klappt. Einfacher cleaner Code, wie ich das liebe...

Cabalist

Danke auch tedgo, auf dein Script gewechselt und dafür foo_textdisplay entsorgt ... WSH Panel Mod hab ich ja eh schon, eine Componente gespart ;-)

Kleines Featurerequest, habs mir zwar von Hand reineditiert nun, aber bei zukünftigen Updates wärs einfacher per Config Dialog: Settings für Padding, ich mag zb den Text nich so an den Rand geklatscht oben.