-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMain.cs
138 lines (124 loc) · 5.21 KB
/
Main.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Threading;
using jbcarreon123.WebNowPlayingPlugin.Actions;
using Windows.Media.Control;
using SuchByte.MacroDeck;
using SuchByte.MacroDeck.Logging;
using SuchByte.MacroDeck.Plugins;
using SuchByte.MacroDeck.Variables;
using WNPReduxAdapterLibrary;
namespace jbcarreon123.WebNowPlayingPlugin
{
public static class PluginInstance
{
public static Main Main { get; set; }
}
public class Main : MacroDeckPlugin
{
public static Main Instance;
private StatusIcon _statusIcon;
public Main()
{
Instance = this;
PluginInstance.Main = this;
}
public override bool CanConfigure => false;
public override void Enable()
{
try
{
Instance ??= this;
Actions = new List<PluginAction>
{
new PlayPauseAction(),
new PreviousAction(),
new NextAction(),
new ShuffleAction(),
new RepeatAction()
};
Init();
_statusIcon = new StatusIcon();
}
catch (Exception e)
{
MacroDeckLogger.Error(this, $"There is a error.\r\n{e}");
}
}
public void Init()
{
var assembly = Assembly.GetExecutingAssembly().GetName().Version;
string version = $"{assembly.Major}.{assembly.Minor}.{assembly.Build}";
WNPRedux.Start(8698, version, ((type, s) => Logger((int)type, s)));
WNPReduxNative.Start(8698);
var worker = new BackgroundWorker();
worker.DoWork += worker_DoWork;
worker.RunWorkerAsync();
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
try
{
_statusIcon?.UpdateStatusButton(WNPRedux.clients > 0);
if (WNPRedux.clients == 0)
{
Thread.Sleep(500);
continue;
}
var mediainfo = WNPRedux.MediaInfo;
VariableManager.SetValue("wnp_title", mediainfo.Title, VariableType.String, PluginInstance.Main,
null);
VariableManager.SetValue("wnp_album", mediainfo.Album, VariableType.String, PluginInstance.Main,
null);
VariableManager.SetValue("wnp_artist", mediainfo.Artist, VariableType.String, PluginInstance.Main,
null);
VariableManager.SetValue("wnp_position", mediainfo.Position, VariableType.String,
PluginInstance.Main,
null);
VariableManager.SetValue("wnp_pos_percent", mediainfo.PositionPercent, VariableType.Float,
PluginInstance.Main, null);
VariableManager.SetValue("wnp_duration", mediainfo.Duration, VariableType.String,
PluginInstance.Main,
null);
VariableManager.SetValue("wnp_player", mediainfo.PlayerName, VariableType.String,
PluginInstance.Main,
null);
VariableManager.SetValue("wnp_state", mediainfo.State, VariableType.Integer, PluginInstance.Main,
null);
VariableManager.SetValue("wnp_volume", mediainfo.Volume, VariableType.Integer, PluginInstance.Main,
null);
VariableManager.SetValue("wnp_shuffle", mediainfo.ShuffleActive, VariableType.Bool,
PluginInstance.Main,
null);
VariableManager.SetValue("wnp_repeatone", mediainfo.RepeatMode == MediaInfo.RepeatModeEnum.ONE,
VariableType.Bool, PluginInstance.Main, null);
VariableManager.SetValue("wnp_repeatall", mediainfo.RepeatMode == MediaInfo.RepeatModeEnum.ALL,
VariableType.Bool, PluginInstance.Main, null);
VariableManager.SetValue("wnp_is_playing", mediainfo.State == MediaInfo.StateMode.PLAYING,
VariableType.Bool, PluginInstance.Main, null);
VariableManager.SetValue("wnp_repeat",
mediainfo.RepeatMode != MediaInfo.RepeatModeEnum.NONE, VariableType.Bool, PluginInstance.Main,
null);
Thread.Sleep(300);
}
catch (Exception ex)
{
MacroDeckLogger.Error(this, $"There is a error.\r\n{ex}");
}
}
}
public void Logger(int type, string message)
{
if (type == 0)
MacroDeckLogger.Info(PluginInstance.Main, message);
else if (type == 1)
MacroDeckLogger.Warning(PluginInstance.Main, message);
else
MacroDeckLogger.Error(PluginInstance.Main, message);
}
}
}