Rating Frage

Begonnen von Foo Foo, 09. Dezember 2009, 20:41:46

Vorheriges Thema - Nächstes Thema

Foo Foo

Gibt es eine Möglichkeit das Rating seiner Musik Files
nicht in das Tag zu schreiben sondern in einer Datenbank?

yellowshark

Such mal im Hydrogenaudi-Forum nach foo_playcount_sql, das genau diesen Zweck erfüllt. Außer der entsprechenden dll benötigt man die (kostenlose) Microsoft SQL Server Compact Edition. Kann man aber alles im entsprechenden Thread nachlesen. Das Teil kann auch noch mehr als das offizielle foo_playcount.

tocothetronic

tedgo hat doch sowas auch in seinem darkone, allerdings ohne dieses plugin, keine ahnung wie er das gemacht hat, ich benutze das kaum? vielleicht sagt er noch was dazu, hab mir das skript dazu noch nicht angesehen, glaub auch nicht dass ich soviel davon verstehe. ich kuck mal kurz rein....ne, nix verstanden, aber vlt hats was mit dem cdda zu tun?

tedgo

Das geht auch mit dem offiziellen foo_playcount Plugin (wie in meiner Konfiguration).
Da wird das Rating auch nur in die Datenbank geschrieben, solange man die Infos nicht mit den Tags synchronisiert.
Die Musikdateien müssen aber in der Media Library vorhanden sein, da das Plugin nur diese Dateien berücksichtigt.

Auch foo_customdb schreibt die Ratings nur in die Datenbank.

Foo Foo

Habe meine Bewertung bis jetzt mit einem track info skript getagt.

$button($get(rate.x),$get(rate.y),0,0,18,16,'./images/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/rating/set1/r1.png',TAG:SET:rating:1,TOOLTIP:"Average")

Oder mit Quick Tager via Kontextmenue.

Habe Foo Playcount mal getested und mit Qiuck Tagger einen Track mal testweise berwetet.
Die mp3 hatt ein rating Tag erhalten.
Anschließend die bewertung wieder entfernt und das Rating Tag wurde gelöscht.
Aber die Bewertung wurde wohl in die Datenbank geschrieben und wird immer noch angezeigt.
Wie kann ich nur Foo Playcount ansprechen ohne das Tag zu schreiben?
Funktionieren dann meine Autoplaylisten noch mit %rating% sortierung ?
Man kann ja nur unter advanced etwas einstellen
Haken rein oder raus.
Werd nicht so ganz schlau daraus.



tedgo

#5
Quick Tagger schreibt in die Tags, ist bei dem Namen des Plugins ja eigentlich klar... ;)

Wenn du nur und ausschließlich in die Datenbank bewerten willst, auf die Datei rechtsklicken --> Playback Statistics --> Rating.
Der Haken unter "Advanced" sollte dann NICHT gesetzt sein, sonst wird mit den Tags synchronisiert!

Du kannst dir fürs Rating auch einen Button anlegen, da würde ich aber nicht das Trackinfo mod nehmen, sondern eher Buttons in der Columns UI Buttonbar oder im WSH Panel mod erstellen (das TIM benötigt als Kommando fürs Datenbank-Rating nur "1" - "5", also z. B. $button($get(rate.x),$get(rate.y),0,0,18,16,'./images/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/rating/set1/r1.png',1,) was u. U. zu Konflikten mit anderen Kommandos führen kann, die ebenfalls "1" - "5"  lauten).

Deine Autoplaylists funktionieren selbstverständlich weiterhin, wenn du diese anhand von %rating% und nicht $meta(rating) angelegt hast.

Foo Foo

Danke für die Hilfe.
Nutze jetzt ein WHS Panel Mod Skript für meine Ratings.

:top:

Foo Foo

#7
Habe das WHS Skript jetzt ein paar Tage getested.
Habe beim Start wenn ich die Maus über das Feld bewege einen Skript Error.
Aber sonst funkioniert es einwandfrei.
Hatt jemand einen Track info Mod Skript was funktioniert bekomme meins nicht richtig umgeschrieben.

Hier mein WHS Skript...


function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }

var g_drag = 0;
var bool;
var g_metadb;
var imgname;
var rating;
var nrating;
var lrating;
var img;
var hofset=0;
var imgw=15;
var g_tfo = fb.TitleFormat("%rating%");

on_item_focus_change();

function on_paint(gr){
//var info = g_metadb.GetFileInfo();
if (g_metadb) {
for (i = 1; i < 6; i++) {
img = gdi.image(fb.FoobarPath + "images\\rating\\"
+ ((i > (g_drag ? lrating : rating)) ? "star-off" : "star" + (g_drag ? ((i==rating)?((i==lrating)?"-kill":"-hover") :"-hover") : "")) + ".png");
// + ((i > (g_drag ? lrating : rating)) ? "No" : "") +"Star" + (g_drag ? ((rating != lrating) ? "-hover" : "") : "") + ".png");
// + ((i > (g_drag ? lrating : rating)) ? "No" : (g_drag ? ((rating != lrating) ? "Red" : "") : "")) +"Star.png");
// + (g_drag ? ((rating != lrating) ? "Blue" : "") : "") + ((i > (g_drag ? lrating : rating)) ? "No" : "") +"Star.png");
gr.DrawImage(img, hofset+imgw*(i-1), 1, 16, 16, 0, 0, 16, 16);
}
}
}

function on_mouse_wheel(delta){}

//function on_mouse_lbtn_up(x,y){
//if (lrating !=rating) {if (g_metadb) {
//bool = g_metadb.UpdateFileInfoSimple("RATING",lrating);
//}}
//else {
//bool = g_metadb.UpdateFileInfoSimple("RATING",0);}
//}

function on_mouse_lbtn_up(x,y){
// fb.trace("button up");
if (lrating !=rating) {if (g_metadb) {
bool = fb.RunContextCommandWithMetadb("Rating/"+((lrating==0) ? "<not set>" : lrating),g_metadb);
}}
else {
bool = fb.RunContextCommandWithMetadb("Rating/<not set>",g_metadb);}
}

function on_mouse_move(x, y) {
if (g_metadb) {
g_drag = 1;
nrating = Math.ceil((x-hofset)/imgw);
if (nrating > 5) nrating = 5;
if (nrating != lrating) {
lrating = nrating;
window.Repaint();
}
}
}
function on_mouse_leave() {
on_metadb_changed()
}

function on_item_focus_change() {
fb.trace("itm focus changed");
if (g_metadb) {window.UnwatchMetadb();}
//g_metadb = fb.GetFocusItem();
if (fb.IsPlaying | fb.IsPaused) g_metadb = fb.GetNowPlaying();
if (g_metadb) {
on_metadb_changed();
window.WatchMetadb(g_metadb);
}

}
function on_metadb_changed() {
g_drag = 0;
// fb.trace("changed");
rating = g_tfo.EvalWithMetadb(g_metadb);
if (rating == "?") {rating = 0;}
lrating = rating;
window.Repaint();
}

function on_playback_new_track(metadb) {on_item_focus_change();}
//EOF


Code in Codebox eingefügt - tedgo

tedgo

Hab mir das Script jetzt nicht angeschaut, aber der häufigste Script-Error beim Mousehover liegt daran, dass die Bilder nicht zugeordnet werden können (das Panel kann sie nicht finden. Überprüfe also bitte deine Pfade und ob alle Bilder vorhanden sind).

Fürs Trackinfo mod habe ich dir bereits oben eine Beispielzeile gepostet, die funktioniert. Solange du nicht andere (möglicherweise selbst angelegte) Commands hast, die auf "1" - "5" enden.

Foo Foo

@tedgo

Das WHS Skript funktioniert eigentlich super.
Die Images werden gefunden und der Fehler tritt nur auf wenn man beim Programmstart (Stop)
die Maus über das Feld bewegt.
Wenn ein Track ausgewählt wurde ist es egal ob play pause oder stop
das Skript läuft stabil.

Habe die Vermutung das der Fehler auftritt weil das Skript
keine Info über das Rating bekommt da ja noch keine Datei ausgewählt wurde.

Ich nutze ja den PSS und man könnte ja eine Code einfügen (show pannel)
der das WHS Pannel Element einblendet sobald ein Song abgespielt wird.
Schalte meine Pannels alle mit der Button Funktion um daher habe ich
keinen Plan wie der Befehl hierfür lauten müsste.
Habe folgendes schon probiert...

$if(%_trackinfo_notrack%, $showpanel (ratingWSH,1), $showpanel (ratingWSH,0))

oder...

$showpanel(ratingWSH,$ifequal(%ps_isplaying%,1,1))

funtzt alles nicht. Wie muss der Befehl lauten? (einblenden wenn Track abgespielt wird und dann nicht mehr ausblenden) Danke Dir vielmals für Deine Hilfe.

:top:





tedgo

$showpanel_c(ratingWSH,$if(%ps_isplaying%,1,0))

Ich würde das Übel aber an der Wurzel packen...
Kann das Script momentan nicht austesten, aber in der foobar2000 Console wird bei jedem Script Error die Zeile/der Grund angezeigt, die/der den Fehler verursacht.Poste doch mal die Einträge der Console, dann kann ich (oder jemand anderes) dir vielleicht helfen.

Allerdings denke ich, dass die Frage zu dem Script und deren Beantwortung doch etwas zu speziell für diesen Thread sind (deine Anfangsfrage wurde ja eigentlich beantwortet...), also schlage ich vor, dass du einen neuen Thread zu dem Rating Script eröffnest ;).

Foo Foo

#11
Danke Dir!!!

Kann mit dieser Lösung erstmal leben.
Das oben aufgeführte Skript ist aus der Config von Xchange von Deinem Kollegen Br3tt

http://br3tt.deviantart.com/art/Xchange-3-5-for-foobar-134241412
er hat ein Skript WSH RATING DB (rating in der database)
und WSH RATING (rating im tag)
Ich bin mit meiner Skripterei erst am Anfang kann noch nicht alles so nachvollziehen. :crazy2:

Konsole?


tedgo

Menü --> View --> Console

Soweit ich weiß, hat Br3tt das aber genauso gelöst (mit $showpanel_c).