// This script writes a rating to the filename of rated videos when mpv.net shuts down. // In input.conf add: // KP0 script-message rate-file 0 #menu: Script > Rating > 0stars // KP1 script-message rate-file 1 #menu: Script > Rating > 1stars // KP2 script-message rate-file 2 #menu: Script > Rating > 2stars // KP3 script-message rate-file 3 #menu: Script > Rating > 3stars // KP4 script-message rate-file 4 #menu: Script > Rating > 4stars // KP5 script-message rate-file 5 #menu: Script > Rating > 5stars using System; using System.Collections.Generic; using System.IO; using System.Windows.Forms; using mpvnet; class Script { // dictionory to store the filename and the rating Dictionary Dic = new Dictionary(); CorePlayer Core; public Script() // plugin initialization { Core = Global.Core; Core.ClientMessage += ClientMessage; //handles keys defined in input.conf Core.Shutdown += Shutdown; // handles MPV_EVENT_SHUTDOWN } // handles MPV_EVENT_SHUTDOWN void Shutdown() { foreach (var i in Dic) { string filepath = i.Key; int rating = i.Value; if (string.IsNullOrEmpty(filepath) || !File.Exists(filepath)) return; string basename = Path.GetFileNameWithoutExtension(filepath); for (int x = 0; x < 6; x++) if (basename.Contains(" (" + x + "stars)")) basename = basename.Replace(" (" + x + "stars)", ""); basename += " (" + rating + "stars)"; string newPath = Path.Combine(Path.GetDirectoryName(filepath), basename + Path.GetExtension(filepath)); if (filepath.ToLower() != newPath.ToLower()) File.Move(filepath, newPath); File.SetLastWriteTime(newPath, DateTime.Now); } } //handles keys defined in input.conf void ClientMessage(string[] args) { if (args == null || args.Length != 2 || args[0] != "rate-file") return; int rating; if (int.TryParse(args[1], out rating)) { string path = Core.GetPropertyString("path"); if (!File.Exists(path)) return; Dic[path] = rating; Core.CommandV("show-text", "Rating: " + rating); } else if (args[1] == "about") MessageBox.Show("This extension writes a rating to the filename of rated videos when mpv.net shuts down.", "Rating Extension"); } }