various formatting, mpris patch, menubar patch

This commit is contained in:
Core 2022-03-11 05:51:35 +00:00
parent 900e011ad2
commit dfd3fe6271
No known key found for this signature in database
GPG key ID: FE9BF1B547F8F3C6
7 changed files with 151 additions and 132 deletions

View file

@ -16,17 +16,17 @@ export default class ChromecastPlugin {
private audioClient = require('castv2-client').Client;
private mdns = require('mdns-js');
private devices : any = [];
private castDevices : any = [];
private devices: any = [];
private castDevices: any = [];
// private GCRunning = false;
// private GCBuffer: any;
// private expectedConnections = 0;
// private currentConnections = 0;
private activeConnections : any = [];
private activeConnections: any = [];
// private requests = [];
// private GCstream = new Stream.PassThrough(),
private connectedHosts : any = {};
private connectedHosts: any = {};
// private port = false;
// private server = false;
// private bufcount = 0;
@ -40,7 +40,7 @@ export default class ChromecastPlugin {
let browser = this.mdns.createBrowser(this.mdns.tcp('googlecast'));
browser.on('ready', browser.discover);
browser.on('update', (service :any) => {
browser.on('update', (service: any) => {
if (service.addresses && service.fullname && service.fullname.includes('_googlecast._tcp')) {
this.ondeviceup(service.addresses[0], service.fullname.substring(0, service.fullname.indexOf("._googlecast")) + " " + (service.type[0].description ?? ""), '', 'googlecast');
}
@ -48,7 +48,7 @@ export default class ChromecastPlugin {
const Client = require('node-ssdp').Client;
// also do a SSDP/UPnP search
let ssdpBrowser = new Client();
ssdpBrowser.on('response', (headers :any , statusCode : any, rinfo: any) => {
ssdpBrowser.on('response', (headers: any, statusCode: any, rinfo: any) => {
var location = getLocation(headers);
if (location != null) {
this.getServiceDescription(location, rinfo.address);
@ -58,8 +58,11 @@ export default class ChromecastPlugin {
function getLocation(headers: any) {
let location = null;
if (headers["LOCATION"] != null ){location = headers["LOCATION"]}
else if (headers["Location"] != null ){location = headers["Location"]}
if (headers["LOCATION"] != null) {
location = headers["LOCATION"]
} else if (headers["Location"] != null) {
location = headers["Location"]
}
return location;
}
@ -85,7 +88,7 @@ export default class ChromecastPlugin {
}
}
private getServiceDescription(url:any, address:any) {
private getServiceDescription(url: any, address: any) {
const request = require('request');
request.get(url, (error: any, response: any, body: any) => {
if (!error && response.statusCode === 200) {
@ -95,7 +98,7 @@ export default class ChromecastPlugin {
}
private ondeviceup(host: any, name: any, location: any, type: any) {
if (this.castDevices.findIndex((item:any) => item.host === host && item.name === name && item.location === location && item.type === type) === -1) {
if (this.castDevices.findIndex((item: any) => item.host === host && item.name === name && item.location === location && item.type === type) === -1) {
this.castDevices.push({
name: name,
host: host,
@ -181,7 +184,7 @@ export default class ChromecastPlugin {
// send websocket ip
player.sendIp("ws://"+this.getIp()+":26369");
player.sendIp("ws://" + this.getIp() + ":26369");
});
}
@ -191,7 +194,7 @@ export default class ChromecastPlugin {
let alias = 0;
let ifaces: any = os.networkInterfaces();
for (var dev in ifaces) {
ifaces[dev].forEach((details:any) => {
ifaces[dev].forEach((details: any) => {
if (details.family === 'IPv4') {
if (!/(loopback|vmware|internal|hamachi|vboxnet|virtualbox)/gi.test(dev + (alias ? ':' + alias : ''))) {
if (details.address.substring(0, 8) === '192.168.' ||
@ -273,7 +276,7 @@ export default class ChromecastPlugin {
}
}
private async setupGCServer(){
private async setupGCServer() {
return ''
}

View file

@ -8,8 +8,8 @@ export default class DiscordRichPresence {
* Private variables for interaction in plugins
*/
private static _store: any;
private _app : any;
private _attributes : any;
private _app: any;
private _attributes: any;
private static _connection: boolean = false;
/**
@ -86,7 +86,9 @@ export default class DiscordRichPresence {
* Disconnects from Discord RPC
*/
private disconnect() {
if (!this._client) return;
if (!this._client) {
return
}
this._client.destroy().then(() => {
DiscordRichPresence._connection = false;
@ -124,7 +126,7 @@ export default class DiscordRichPresence {
delete activity.largeImageText
}
activity.buttons.forEach((key: {label: string, url: string}, _v: Number) => {
activity.buttons.forEach((key: { label: string, url: string }, _v: Number) => {
if (key.url.includes('undefined') || key.url.includes('no-id-found')) {
activity.buttons.splice(key, 1);
}
@ -137,7 +139,13 @@ export default class DiscordRichPresence {
* @param {object} attributes
*/
private updateActivity(attributes: any) {
if (!this._client) return;
if (DiscordRichPresence._store.general.discord_rpc == 0) {
return
}
if (!this._client) {
this.connect(DiscordRichPresence._store.general.discord_rpc == 1 ? '911790844204437504' : '886578863147192350')
}
if (!DiscordRichPresence._connection) {
this._client.clearActivity().catch((e: any) => console.error(`[DiscordRichPresence][clearActivity] ${e}`));
@ -207,18 +215,18 @@ export default class DiscordRichPresence {
this.connect((DiscordRichPresence._store.general.discord_rpc == 1) ? '911790844204437504' : '886578863147192350');
console.debug(`[Plugin][${this.name}] Ready.`);
ipcMain.on('updateRPCImage', (_event, imageurl) => {
if (!DiscordRichPresence._store.general.privateEnabled){
fetch('https://api.cider.sh/v1/images' ,{
if (!DiscordRichPresence._store.general.privateEnabled) {
fetch('https://api.cider.sh/v1/images', {
method: 'POST',
body: JSON.stringify({url : imageurl}),
body: JSON.stringify({url: imageurl}),
headers: {
'Content-Type': 'application/json',
'User-Agent': _win.webContents.getUserAgent()
},
})
.then(res => res.json())
.then(function(json){
.then(function (json) {
self._attributes["artwork"]["url"] = json.url
self.updateActivity(self._attributes)
})
@ -238,9 +246,10 @@ export default class DiscordRichPresence {
* @param attributes Music Attributes (attributes.status = current state)
*/
onPlaybackStateDidChange(attributes: object): void {
if (!DiscordRichPresence._store.general.privateEnabled){
if (!DiscordRichPresence._store.general.privateEnabled) {
this._attributes = attributes
this.updateActivity(attributes)}
this.updateActivity(attributes)
}
}
/**
@ -248,8 +257,9 @@ export default class DiscordRichPresence {
* @param attributes Music Attributes
*/
onNowPlayingItemDidChange(attributes: object): void {
if (!DiscordRichPresence._store.general.privateEnabled){
if (!DiscordRichPresence._store.general.privateEnabled) {
this._attributes = attributes
this.updateActivity(attributes)}
this.updateActivity(attributes)
}
}
}

View file

@ -120,7 +120,7 @@ export default class LastFMPlugin {
} else {
return console.log('[LastFM] Did not add ', attributes.name, '—', artist, 'because now playing a other song.');
}
}, Math.round(attributes.durationInMillis * Math.min((self._store.lastfm.scrobble_after / 100),0.8)));
}, Math.round(attributes.durationInMillis * Math.min((self._store.lastfm.scrobble_after / 100), 0.8)));
}
private async updateNowPlayingSong(attributes: any) {
@ -264,14 +264,15 @@ export default class LastFMPlugin {
* @param attributes Music Attributes
*/
nowPlayingItemDidChangeLastFM(attributes: any): void {
if (!this._store.general.privateEnabled){
if (!this._store.general.privateEnabled) {
attributes.status = true
if (!this._store.lastfm.filterLoop) {
this._lastfm.cachedNowPlayingAttributes = false;
this._lastfm.cachedAttributes = false
}
this.updateNowPlayingSong(attributes)
this.scrobbleSong(attributes)}
this.scrobbleSong(attributes)
}
}
}

View file

@ -35,7 +35,7 @@ export default class Thumbar {
* @private
*/
private isMac: boolean = process.platform === 'darwin';
private menubarTemplate: any = [
private _menuTemplate: any = [
{
label: app.getName(),
submenu: [
@ -43,20 +43,20 @@ export default class Thumbar {
label: 'About',
click: () => this._win.webContents.executeJavaScript(`app.appRoute('about')`)
},
{ type: 'separator' },
{type: 'separator'},
{
label: 'Settings',
accelerator: 'CommandOrControl+,',
click: () => this._win.webContents.executeJavaScript(`app.appRoute('settings')`)
},
{ type: 'separator' },
{ role: 'services' },
{ type: 'separator' },
{ role: 'hide' },
{ role: 'hideOthers' },
{ role: 'unhide' },
{ type: 'separator' },
{ role: 'quit' }
{type: 'separator'},
{role: 'services'},
{type: 'separator'},
{role: 'hide'},
{role: 'hideOthers'},
{role: 'unhide'},
{type: 'separator'},
{role: 'quit'}
]
},
{
@ -85,20 +85,20 @@ export default class Thumbar {
...(this.isMac ? [
{type: 'separator'},
{role: 'front'},
] : [
{}
]),
{role: 'close'},
{type: 'separator'},
] : [
{role: 'close'},
]),
{
label: 'Edit',
submenu: [
{ role: 'undo' },
{ role: 'redo' },
{ type: 'separator' },
{ role: 'cut' },
{ role: 'copy' },
{ role: 'paste' },
{role: 'undo'},
{role: 'redo'},
{type: 'separator'},
{role: 'cut'},
{role: 'copy'},
{role: 'paste'},
]
},
{type: 'separator'},
@ -139,7 +139,7 @@ export default class Thumbar {
accelerator: 'CommandOrControl+Left',
click: () => this._win.webContents.executeJavaScript(`MusicKitInterop.previous()`)
},
{ type: 'separator' },
{type: 'separator'},
{
label: 'Volume Up',
accelerator: 'CommandOrControl+Up',
@ -232,7 +232,8 @@ export default class Thumbar {
*/
onReady(win: Electron.BrowserWindow): void {
this._win = win;
Menu.setApplicationMenu(Menu.buildFromTemplate(this.menubarTemplate))
const menu = Menu.buildFromTemplate(this._menuTemplate);
Menu.setApplicationMenu(menu)
}
/**

View file

@ -58,7 +58,6 @@ export default class mpris {
/**
* Connects to MPRIS Service
*/
@mpris.linuxOnly
private static connect() {
const player = Player({
@ -94,7 +93,6 @@ export default class mpris {
/**
* Update M.P.R.I.S Player Attributes
*/
@mpris.linuxOnly
private static updatePlayer(attributes: any) {
const MetaData = {
@ -119,7 +117,6 @@ export default class mpris {
* @private
* @param attributes
*/
@mpris.linuxOnly
private static updatePlayerState(attributes: any) {
switch (attributes.status) {
case true: // Playing
@ -139,6 +136,9 @@ export default class mpris {
* @private
*/
private static clearState() {
if (!mpris.player) {
return
}
mpris.player.metadata = {'mpris:trackid': '/org/mpris/MediaPlayer2/TrackList/NoTrack'}
mpris.player.playbackStatus = Player.PLAYBACK_STATUS_STOPPED;
}
@ -160,6 +160,7 @@ export default class mpris {
/**
* Runs on app ready
*/
@mpris.linuxOnly
onReady(_: any): void {
console.debug(`[Plugin][${mpris.name}] Ready.`);
}
@ -167,6 +168,7 @@ export default class mpris {
/**
* Renderer ready
*/
@mpris.linuxOnly
onRendererReady(): void {
mpris.connect()
}
@ -174,19 +176,17 @@ export default class mpris {
/**
* Runs on app stop
*/
@mpris.linuxOnly
onBeforeQuit(): void {
console.debug(`[Plugin][${mpris.name}] Stopped.`);
try {
mpris.clearState()
}catch(e) {
e = null
}
}
/**
* Runs on playback State Change
* @param attributes Music Attributes (attributes.status = current state)
*/
@mpris.linuxOnly
onPlaybackStateDidChange(attributes: object): void {
console.debug(`[Plugin][${mpris.name}] onPlaybackStateDidChange.`);
mpris.updatePlayerState(attributes)
@ -196,6 +196,7 @@ export default class mpris {
* Runs on song change
* @param attributes Music Attributes
*/
@mpris.linuxOnly
onNowPlayingItemDidChange(attributes: object): void {
console.debug(`[Plugin][${mpris.name}] onMetadataDidChange.`);
mpris.updatePlayer(attributes);

View file

@ -47,7 +47,6 @@ export default class Thumbar {
/**
* Update the thumbnail toolbar
*/
@Thumbar.windowsOnly
private updateButtons(attributes: any) {
console.log(attributes)
@ -102,6 +101,7 @@ export default class Thumbar {
/**
* Runs on app ready
*/
@Thumbar.windowsOnly
onReady(win: Electron.BrowserWindow): void {
this._win = win;
console.debug(`[Plugin][${this.name}] Ready.`);
@ -110,6 +110,7 @@ export default class Thumbar {
/**
* Runs on app stop
*/
@Thumbar.windowsOnly
onBeforeQuit(): void {
console.debug(`[Plugin][${this.name}] Stopped.`);
}
@ -118,6 +119,7 @@ export default class Thumbar {
* Runs on playback State Change
* @param attributes Music Attributes (attributes.status = current state)
*/
@Thumbar.windowsOnly
onPlaybackStateDidChange(attributes: object): void {
this.updateButtons(attributes)
}
@ -126,6 +128,7 @@ export default class Thumbar {
* Runs on song change
* @param attributes Music Attributes
*/
@Thumbar.windowsOnly
onNowPlayingItemDidChange(attributes: object): void {
this.updateButtons(attributes)
}