rating mit png-Files

Begonnen von mexx, 28. November 2008, 12:06:42

Vorheriges Thema - Nächstes Thema

mexx

Ist es möglich, bei dieser Rating-Config

Zitat$puts(rating,
$ifgreater(%playcount%,50,5,
$ifgreater(%playcount%,20,4,
$ifgreater(%playcount%,10,3,
$ifgreater(%playcount%,5,2,
$ifgreater(%playcount%,2,1,0))))))

$repeat(*,$get(rating))
$repeat(-,$sub(5,$get(rating)))

die "*" durch kleine Sterne aus png-Files zu ersetzen?

mexx

tedgo

Warum benutzt du nicht einfach $char(9733) für ausgefüllte Sternchen und $char(9734) für "leere" Sternchen?
Allerdings muss die gewählte Schriftart dann eine Unicode-Schriftart (z. B. Tahoma, Microsoft Sans Serif oder Arial Unicode MS) sein...

hoerich

ihr sprecht vermutlich von der playlist view in "ColumnsUI" oder "PanelsUI" - oder nicht? da ist es genau so ja zu verwirklichen.

aber wie siehts mit dem neuen "DefaultUI" der Version 0.9.6 aus?

wie kann ich der columne [%RATING%] der playlist sagen, dass Ratings nicht in Ziffern sondern mit Sternen oder ähnlichem dargestellt werden sollen.

in den facets wird es ja richtig (mit sternen) angezeigt. (ja, ok, dzt nur platzhalter ;-) aber es funktioniert )

aber wo kann ich die zeichen für die playlist ändern
kann mir da bitte jemand helfen?

grimes

#3
Der Screenshot sollte alles erläutern:



Weitere Infos: http://foobar-users.de/index.php?topic=1448.msg8346#msg8346

hoerich

#4
vielen dank für die deutliche antwort, grimes

ich hab das jetzt ein wenig anders gelöst, da ich nicht bei jedem track transparente sterne angezeigt bekommen will, wenn der track noch nicht bewertet ist.

hab deswegen folgenden code verwendet: $if(%rating%,$repeat($char(9733),%rating%),())
zusätzlich die schriftarten für lists & playlists auf "arial unicode ms" eingestellt.

desweiteren habe ich den code für meine rating-columne der facets adaptiert, damit die "bisher nicht bewerteten tracks" mit none angezeigt werden

jetzt hab ich überall die sternchen - thxalot for help, grimes

mexx

so,

ich muss diesen Beitrag mal wiederbeleben. :)

Ich habe über trackinfo_mod eine Darstellung des Ratings mit vollen und leeren Sternen realisiert.

Wie kann ich das nun mit png- oder gif-Files machen (möglichst auch mit trackinfo_mod)?

Es soll z.B. bei Rating "3" etwa so ausssehen:  :top: :top: :top: aussehen.

Kann mir da jemand helfen?

cu
mexx

tedgo

#6
Ich häng dir mal mein Rating Panel Script aus DarkOne mit allen benötigten Images fürs Trackinfo mod an.
Das musst du halt anpassen (vor allem die Pfade) wie du es brauchst.
Da wird 'ne Menge drin stehen, dass du gar nicht brauchst...

Es löscht aber keine Ratings! Darauf hatte ich im Panel verzichtet, weil ich denke, dass es sicherer ist, dies über Rechtsklick auf die Datei(en) zu machen, anstatt möglicherweise irrtümlich mit nur einem Klick.

Wenn du genauer ausführst, was du willst, könnte ich es ja noch umschreiben oder du probierst es selbst :)

EDIT:
Habe das Script etwas angepasst (das neue Script habe ich extra angehängt - "Rating neu.txt". Die Images sind im anderen Download bereits drin), damit es auch ohne externe Variablen funktioniert.
Das Script funktioniert so:

Du kannst im Script einen "rate.mode" angeben (dazu in der $puts(rate.mode,0) Funktion aus der 0 eine 1 oder 2 machen).
Mode 0 bedeutet:
Ratings werden in die Datenbank geschrieben.

Mode 1 bedeutet:
Ratings werden in die Tags geschrieben.

(In beiden Modi gilt: Ist kein Rating vorhanden, berechnet das Script ein Auto Rating anhand der Playcounts und der Dauer zwischen First Played und Last Played (dazu wird aber foo_playcount benötigt).)

Mode 2 bedeutet:
Kein Rating möglich, sondern nur die Anzeige der Playcounts.
(Auch hierzu wird natürlich foo_playcount benötigt)

Außerdem sieht man anhand der Farbe, wo ein Lied seine Ratings gespeichert hat bzw. wo es gespeichert wird.
Gelb - Datenbank
Weiß - Tags
Blau - nur Anzeige von Auto-Rating
Grün - Anzeige von Playcounts

Das sollte so ziemlich alles abdecken :)

mexx

#7
Also,

mal etwas genauer.

Ich habe in den Tags ein Feld "Rating" stehen. Mit Einträgen von 1 bis 5. Ist kein Rating erfolgt, dann ist das Tagfeld leer oder noch nicht vorhanden.

Jetzt soll im trackinfo_mod das Rating, wie in obigem Beispiel, nur angezeigt werden. Ein Tagging über foo_playcount soll nicht erfolgen.

Wenn das Tagfeld leer ist, soll nichts angezeigt werden. Für die Anzeige sollen png- oder gif-Files verwendet werden.

Es soll also nur die Taginfo ausgelesen werden und in trackinfo_mod angezeigt werden.

Im Moment siehts so aus (in Trackinfo):



dazu gehörendes Script:

Zitat$puts(rating,
$ifgreater(%rating%,5,6,
$ifgreater(%rating%,4,5,
$ifgreater(%rating%,3,4,
$ifgreater(%rating%,2,3,
$ifgreater(%rating%,1,2,
$ifgreater(%rating%,0,1,0)))))))

$repeat($char(9733),$get(rating))
$repeat($char(9734),$sub(5,$get(rating)))

Im Beispiel ist kein Rating vorhanden. In diesem Fall soll das Anzeigefeld zukünftig leer sein.

Für $char(9733) und 9734 sollen die Bilder "Daumen oben" und "Daumen unten" angezeigt werden.


THX für deine Scrips. Werd mich mal damit beschäftigen. Aber bei meiner Ahnung vom Scripting befürchte ich Schlimmes. ;)

tedgo

#8
Ach so, das Rating soll nur angezeigt werden, du willst gar nicht über Trackinfo mod bewerten?
Na dann ist es ziemlich einfach (ich mach das mal am Beispiel PNG).

Möglichkeit 1 - nur 2 Bilder, größeres Script:
Dann brauchst du ein Bild für Daumen hoch und eines für Daumen runter (in dem Beispiel sind die Bilder jeweils 20*20 Pixel groß).
Dann schreibst du ins Script:
$if(%rating%,
$imageabs2(0,0,0,0,20,20,10,10,Pfad zu Bild für Daumen hoch,)
$imageabs2(0,0,0,0,20,20,30,10,$ifgreater(%rating%,1,Pfad zu Bild für Daumen hoch,Pfad zu Bild für Daumen runter),)
$imageabs2(0,0,0,0,20,20,50,10,$ifgreater(%rating%,2,Pfad zu Bild für Daumen hoch,Pfad zu Bild für Daumen runter),)
$imageabs2(0,0,0,0,20,20,70,10,$ifgreater(%rating%,3,Pfad zu Bild für Daumen hoch,Pfad zu Bild für Daumen runter),)
$imageabs2(0,0,0,0,20,20,90,10,$ifgreater(%rating%,4,Pfad zu Bild für Daumen hoch,Pfad zu Bild für Daumen runter),),)


Möglichkeit 2 - 5 Bilder, kleineres Script:
Dann brauchst du 5 Bilder (eines mit 1* Daumen hoch und 4*Daumen runter, eines mit 2* Daumen hoch und 3*Daumen runter usw.).
Die Bilder benennst du z.B. Rating1.png, Rating2.png usw.
Dann schreibst du ins Script:
$if(%rating%,
$imageabs2(0,0,0,0,100,20,10,10,Pfad zu Rating%rating%.png,),)


EDIT:
Oh ich lese gerade, dass du gar keine Anzeige haben willst, wenn das Rating-Feld leer ist.
Habe die obigen Strings dahingehend angepasst :)
(Ich hoffe mal, da hat sich jetzt kein Fehler eingeschlichen)

PS:
Ich weiß ja nicht, wo du deine Scripts her hast, aber dein altes Script ist auch etwas zu umständlich.
Das hier hätte da ausgereicht:
$repeat($char(9733),%rating%)
$repeat($char(9734),$sub(5,%rating%))

und wenn nichts angezeigt werden soll, wenn kein Rating-Feld vorhanden ist:
$if(%rating%,
$repeat($char(9733),%rating%)
$repeat($char(9734),$sub(5,%rating%)),)

(wobei in die $if() Funktion dann natürlich der ganze Text-String für das Rating gehört)

mexx

 :crazy: :crazy: :crazy: :crazy:

Funzt  :top: :top: :top:

Aber wie kann ich die Bilder im Feld zentrieren?

tedgo

#10
Ich erkläre das mal an Möglichkeit 2.
Angenommen, das Bild ist 100 Pixel breit und 20 Pixel hoch:

$if(%rating%,
$imageabs2(0,0,0,0,100,20,$sub($div(%_width%,2),50),$sub($div(%_height%,2),10),Pfad zu Rating%rating%.png,),)


Das heißt also:
Rot = (Breite des Panels geteilt durch 2) - (Breite des Bildes geteilt durch 2)
Grün = (Höhe des Panels geteilt durch 2) - (Höhe des Bildes geteilt durch 2)

Dann ist das Bild sowohl in der Breite als auch in der Höhe zentriert.
Willst du nur in der Breite zentrieren, setzt du den grünen Wert auf eine absolute Zahl (z. B. 10, wenn das Image 10 Pixel von oben im Trackinfo mod angelegt werden soll).

Bei Möglichkeit 1 müsstest du halt das mittlere Bild entsprechend plazieren und bei den Bildern, die davor stehen sollen, deren Breite abziehen. Bei Bildern die auf das mittlere folgen, deren Breite hinzuzählen.

mexx

Getestet und für gut befunden.  :) :top:

Ich befürchte aber, dass ich bald wieder eine andere Darstellung wähle.

Man ist eben wählerisch. :D :D

THX
mexx

mexx

so,

nochmal zum Rating mit Sternen zurück.

Ich hab dein Script [tedgo] genommen, mit dem bei leerem Ratingfeld keine Sterne angezeigt werden sollen.

Zitat$if(%rating%,
$repeat($char(9733),%rating%)
$repeat($char(9734),$sub(5,%rating%)),)

Es werden aber trotzdem dann 5 leere Sterne angezeigt. Auch in Trackinfo_mod.

Mach ich etwa schon wieder was falsch? >:(

tedgo

Dürfte nicht sein, habe es gerade nochmal ausprobiert.
Wie genau sieht denn dein ganzer String jetzt aus?

mexx

Zitat$puts(text1,$rgb(0,255,0))
$puts(text2,$rgb(255,0,0))
$if(%rating%,
$repeat($get(text1)$char(9733),%rating%))
$repeat($get(text2)$char(9734),$sub(5,%rating%))),)