This commit is contained in:
Frank Skare
2019-03-27 21:41:44 +01:00
parent 636e36583d
commit 3ccb80f359
11 changed files with 178 additions and 110 deletions

View File

@@ -114,59 +114,83 @@ namespace mpvnet
public static void show_info(string[] args)
{
var fileInfo = new FileInfo(mp.get_property_string("path"));
using (var mediaInfo = new MediaInfo(fileInfo.FullName))
try
{
string width = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "Width");
var fileInfo = new FileInfo(mp.get_property_string("path"));
if (width == "")
using (var mediaInfo = new MediaInfo(fileInfo.FullName))
{
string performer = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Performer");
string title = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Title");
string album = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Album");
string genre = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Genre");
string date = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Recorded_Date");
string duration = mediaInfo.GetInfo(MediaInfoStreamKind.Audio, "Duration/String");
string width = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "Width");
string text = "";
if (width == "")
{
string performer = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Performer");
string title = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Title");
string album = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Album");
string genre = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Genre");
string date = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Recorded_Date");
string duration = mediaInfo.GetInfo(MediaInfoStreamKind.Audio, "Duration/String");
if (performer != "") text += "Artist: " + performer + "\n";
if (title != "") text += "Title: " + title + "\n";
if (album != "") text += "Album: " + album + "\n";
if (genre != "") text += "Genre: " + genre + "\n";
if (date != "") text += "Year: " + date + "\n";
if (duration != "") text += "Length: " + duration + "\n";
string text = "";
mp.commandv("show-text", text, "5000");
if (performer != "") text += "Artist: " + performer + "\n";
if (title != "") text += "Title: " + title + "\n";
if (album != "") text += "Album: " + album + "\n";
if (genre != "") text += "Genre: " + genre + "\n";
if (date != "") text += "Year: " + date + "\n";
if (duration != "") text += "Length: " + duration + "\n";
mp.commandv("show-text", text, "5000");
}
else
{
string height = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "Height");
TimeSpan position = TimeSpan.FromSeconds(mp.get_property_number("time-pos"));
TimeSpan duration = TimeSpan.FromSeconds(mp.get_property_number("duration"));
string bitrate = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "BitRate");
if (bitrate == "")
bitrate = "0";
var bitrate2 = Convert.ToDouble(bitrate) / 1000.0 / 1000.0;
var videoCodec = mp.get_property_string("video-format").ToUpper();
var filename = fileInfo.Name;
var text =
FormatTime(position.TotalMinutes) + ":" +
FormatTime(position.Seconds) + " / " +
FormatTime(duration.TotalMinutes) + ":" +
FormatTime(duration.Seconds) + "\n" +
Convert.ToInt32(fileInfo.Length / 1024 / 1024).ToString() +
$" MB - {width} x {height}\n{videoCodec} - {bitrate2.ToString("f1")} Mb/s" + "\n" + filename;
mp.commandv("show-text", text, "5000");
}
string FormatTime(double value) => ((int)value).ToString("00");
}
else
{
string height = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "Height");
TimeSpan position = TimeSpan.FromSeconds(mp.get_property_number("time-pos"));
TimeSpan duration = TimeSpan.FromSeconds(mp.get_property_number("duration"));
string bitrate = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "BitRate");
if (bitrate == "")
bitrate = "0";
var bitrate2 = Convert.ToDouble(bitrate) / 1000.0 / 1000.0;
var videoCodec = mp.get_property_string("video-format").ToUpper();
var filename = fileInfo.Name;
var text =
FormatTime(position.TotalMinutes) + ":" +
FormatTime(position.Seconds) + " / " +
FormatTime(duration.TotalMinutes) + ":" +
FormatTime(duration.Seconds) + "\n" +
Convert.ToInt32(fileInfo.Length / 1024 / 1024).ToString() +
$" MB - {width} x {height}\n{videoCodec} - {bitrate2.ToString("f1")} Mb/s" + "\n" + filename;
mp.commandv("show-text", text, "5000");
}
string FormatTime(double value) => ((int)value).ToString("00");
}
catch (Exception)
{
}
}
public static void execute_mpv_command(string[] args)
{
MainForm.Instance.Invoke(new Action(() => {
string command = Microsoft.VisualBasic.Interaction.InputBox("Enter a mpv command to be executed.");
if (string.IsNullOrEmpty(command)) return;
mp.command_string(command, false);
}));
}
public static void open_url(string[] args)
{
MainForm.Instance.Invoke(new Action(() => {
string command = Microsoft.VisualBasic.Interaction.InputBox("Enter URL to be opened.");
if (string.IsNullOrEmpty(command)) return;
mp.LoadURL(command);
}));
}
}
}

View File

@@ -1,30 +0,0 @@
using System.Collections.Generic;
using System.Linq;
namespace mpvnet
{
public static class Extensions
{
public static string Join(this IEnumerable<string> instance, string delimiter, bool removeEmpty = false)
{
if (instance == null)
return null;
bool containsEmpty = false;
foreach (var i in instance)
{
if (string.IsNullOrEmpty(i))
{
containsEmpty = true;
break;
}
}
if (containsEmpty && removeEmpty)
instance = instance.Where(arg => !string.IsNullOrEmpty(arg));
return string.Join(delimiter, instance);
}
}
}

View File

@@ -296,16 +296,17 @@ namespace mpvnet
{
base.OnDragEnter(e);
if (e.Data.GetDataPresent(DataFormats.FileDrop))
if (e.Data.GetDataPresent(DataFormats.FileDrop) || e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Copy;
}
protected override void OnDragDrop(DragEventArgs e)
{
base.OnDragDrop(e);
if (e.Data.GetDataPresent(DataFormats.FileDrop))
mp.LoadFiles(e.Data.GetData(DataFormats.FileDrop) as String[]);
if (e.Data.GetDataPresent(DataFormats.Text))
mp.LoadURL(e.Data.GetData(DataFormats.Text).ToString());
}
protected override void OnMouseDown(MouseEventArgs e)

View File

@@ -10,10 +10,8 @@ namespace mpvnet
{
public static readonly string[] FileTypes = "264 265 3gp aac ac3 avc avi avs bmp divx dts dtshd dtshr dtsma eac3 evo flac flv h264 h265 hevc hvc jpg jpeg m2t m2ts m2v m4a m4v mka mkv mlp mov mp2 mp3 mp4 mpa mpeg mpg mpv mts ogg ogm opus pcm png pva raw rmvb thd thd+ac3 true-hd truehd ts vdr vob vpy w64 wav webm wmv y4m".Split(' ');
public static string GetFilter(IEnumerable<string> values)
{
return "*." + values.Join(";*.") + "|*." + values.Join(";*.") + "|All Files|*.*";
}
public static string GetFilter(IEnumerable<string> values) => "*." +
String.Join(";*.", values) + "|*." + String.Join(";*.", values) + "|All Files|*.*";
}
public class StringLogicalComparer : IComparer, IComparer<string>
@@ -27,13 +25,13 @@ namespace mpvnet
int IComparer<string>.Compare(string x, string y) => IComparerOfString_Compare(x, y);
}
//public class OSVersion
//{
// public static float Windows7 { get; } = 6.1f;
// public static float Windows8 { get; } = 6.2f;
// public static float Windows81 { get; } = 6.3f;
// public static float Windows10 { get; } = 10f;
public class OSVersion
{
public static float Windows7 { get; } = 6.1f;
public static float Windows8 { get; } = 6.2f;
public static float Windows81 { get; } = 6.3f;
public static float Windows10 { get; } = 10f;
// public static float Current => Environment.OSVersion.Version.Major + Environment.OSVersion.Version.Minor / 10f;
//}
public static float Current => Environment.OSVersion.Version.Major + Environment.OSVersion.Version.Minor / 10f;
}
}

View File

@@ -1,6 +1,7 @@
# mpv.net key bindings, mouse bindings and context menu configuration
o script-message mpv.net open-files #menu: O ; Open Files...
o script-message mpv.net open-files #menu: O ; Open > Open Files...
u script-message mpv.net open-url #menu: U ; Open > Open URL...
_ ignore #menu: _ ; -
Space cycle pause #menu: Space, Enter ; Play/Pause
Enter cycle pause
@@ -113,6 +114,7 @@
Ctrl+H cycle-values hwdec "auto" "no" #menu: Ctrl+H ; Tools > Cycle Hardware Decoding
F8 show-text ${playlist} 5000 #menu: F8 ; Tools > Show Playlist
F9 show-text ${track-list} 5000 #menu: F9 ; Tools > Show Audio/Video/Subtitle List
_ script-message mpv.net execute-mpv-command #menu: _ ; Tools > Enter a mpv command for execution...
_ script-message mpv.net shell-execute https://mpv.io/manual/stable/ #menu: _ ; Help > Show mpv manual
_ script-message mpv.net shell-execute https://github.com/mpv-player/mpv/blob/master/etc/input.conf #menu: _ ; Help > Show mpv default keys

View File

@@ -418,6 +418,8 @@ namespace mpvnet
foreach (string i in args)
if (!i.StartsWith("--") && File.Exists(i))
mp.commandv("loadfile", i, "append");
else if (!i.StartsWith("--") && i.StartsWith("http"))
mp.LoadURL(i);
mp.set_property_string("playlist-pos", "0");
@@ -437,6 +439,15 @@ namespace mpvnet
}
}
public static void LoadURL(string url)
{
int count = mp.get_property_int("playlist-count");
mp.commandv("loadfile", url, "append");
mp.set_property_int("playlist-pos", count);
for (int i = 0; i < count; i++)
mp.commandv("playlist-remove", "0");
}
public static void LoadFiles(string[] files)
{
int count = mp.get_property_int("playlist-count");

View File

@@ -118,6 +118,7 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>IronPython\Microsoft.Scripting.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
@@ -131,7 +132,6 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Addon.cs" />
<Compile Include="Extensions.cs" />
<Compile Include="MediaInfo.cs" />
<Compile Include="Menu.cs">
<SubType>Component</SubType>