Compare commits
343 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd4fcaf2f9 | ||
|
|
297e174a84 | ||
|
|
71c704588d | ||
|
|
26b2ac1830 | ||
|
|
266988327f | ||
|
|
58b55bf2ba | ||
|
|
df0f9e01bc | ||
|
|
d6cc83a8ff | ||
|
|
44f23d804d | ||
|
|
cc06e52488 | ||
|
|
a6fe077d88 | ||
|
|
df39ea19e7 | ||
|
|
2f455d03f5 | ||
|
|
98c1de387d | ||
|
|
53d185bf9c | ||
|
|
0ef3987956 | ||
|
|
a7ce1d1468 | ||
|
|
9cc2942a49 | ||
|
|
4ffe34c538 | ||
|
|
22b12073f9 | ||
|
|
83489fff84 | ||
|
|
2511dd5b4e | ||
|
|
767bd08f0c | ||
|
|
d2ba2ff544 | ||
|
|
f6ad1226f5 | ||
|
|
785b0d7395 | ||
|
|
ea91a55bd6 | ||
|
|
c73f13baa8 | ||
|
|
a44c68ef46 | ||
|
|
218627e62d | ||
|
|
5d6e775b02 | ||
|
|
2b86cff3f3 | ||
|
|
0bc70dbc9e | ||
|
|
d1f7baad2b | ||
|
|
6d57bc2c5a | ||
|
|
8e3cf93011 | ||
|
|
51f6d17fbb | ||
|
|
b2e5229c78 | ||
|
|
87ec87e09d | ||
|
|
25bf7ac915 | ||
|
|
bcadad5564 | ||
|
|
bacda4624f | ||
|
|
9c5434e32c | ||
|
|
058421b9aa | ||
|
|
f947f50213 | ||
|
|
54688e6a71 | ||
|
|
d789bd7710 | ||
|
|
b3fa69f7c7 | ||
|
|
3ec47b2310 | ||
|
|
9bc37d8ecd | ||
|
|
dd21c46331 | ||
|
|
3c69cf7d5a | ||
|
|
97f8a0faf6 | ||
|
|
ce8b6dc995 | ||
|
|
d78eebdb0e | ||
|
|
01f78e0595 | ||
|
|
fc8e710a07 | ||
|
|
929131f5e6 | ||
|
|
4fbb0e454e | ||
|
|
3832a8811d | ||
|
|
8f6461e80f | ||
|
|
e21e12820b | ||
|
|
1edff1048f | ||
|
|
8e71e6b0ea | ||
|
|
1efd3dbea9 | ||
|
|
d02ad5a5b6 | ||
|
|
8758047ff0 | ||
|
|
c17df3c2b6 | ||
|
|
fe54d6537f | ||
|
|
dcc3516587 | ||
|
|
7039296c64 | ||
|
|
cdba36628f | ||
|
|
b2465f9bdc | ||
|
|
4b4a398c99 | ||
|
|
d292bd033f | ||
|
|
faa5683b26 | ||
|
|
ce0ae1bf04 | ||
|
|
b8f49b9312 | ||
|
|
7b9bcdfd10 | ||
|
|
72d65a18ef | ||
|
|
160a008a0b | ||
|
|
030f5ed315 | ||
|
|
018051572c | ||
|
|
fc2d1ffaca | ||
|
|
418eb81e1c | ||
|
|
5c2c576cb4 | ||
|
|
9cf11bf2d9 | ||
|
|
a050d220d0 | ||
|
|
5e64d55ac0 | ||
|
|
d32a657d62 | ||
|
|
78e5e298b3 | ||
|
|
44ad0f3a51 | ||
|
|
e783cc64f5 | ||
|
|
c1f10a1c46 | ||
|
|
a0231ed598 | ||
|
|
900ba2f3a2 | ||
|
|
519e224914 | ||
|
|
2e067f98ff | ||
|
|
63ca296037 | ||
|
|
2221053c66 | ||
|
|
5ce6354bd3 | ||
|
|
44ae334492 | ||
|
|
4020de976f | ||
|
|
9929a5f578 | ||
|
|
3dd1e916c1 | ||
|
|
5b810e8cf5 | ||
|
|
a9356fbd4a | ||
|
|
6aad9e6130 | ||
|
|
258b4113db | ||
|
|
66d5b7a6f4 | ||
|
|
4c4df5011e | ||
|
|
2b99b888bc | ||
|
|
618e1f64df | ||
|
|
fca00e7084 | ||
|
|
7d92df6626 | ||
|
|
f00b552305 | ||
|
|
d7b5f5f25b | ||
|
|
a4c3088e02 | ||
|
|
0e44df8cfa | ||
|
|
eddc2214ed | ||
|
|
db3f87d219 | ||
|
|
d962124da2 | ||
|
|
e1c8afd5ba | ||
|
|
01614667a4 | ||
|
|
43bd4ff468 | ||
|
|
d5bdb78de6 | ||
|
|
acd5e547fd | ||
|
|
201eb38a35 | ||
|
|
9b13c2554a | ||
|
|
21918cadd9 | ||
|
|
55191a6e9b | ||
|
|
e93a30d2e1 | ||
|
|
443fce9fd1 | ||
|
|
02f4a730c7 | ||
|
|
f02626a118 | ||
|
|
7632219a83 | ||
|
|
4e563b3c05 | ||
|
|
0a101e3b69 | ||
|
|
ecd2f0e0f2 | ||
|
|
9be3cc1f13 | ||
|
|
c64c503ba9 | ||
|
|
d704b2ecac | ||
|
|
bb4f843a33 | ||
|
|
9008039a2a | ||
|
|
8ad0ce8911 | ||
|
|
898c0a2f7c | ||
|
|
2a9bc2278d | ||
|
|
d8e45814bb | ||
|
|
ce01f8bce0 | ||
|
|
76384e38c8 | ||
|
|
ac64512ff7 | ||
|
|
7d9261dace | ||
|
|
6187b849a7 | ||
|
|
724d0b2567 | ||
|
|
2d24e2e0eb | ||
|
|
d4d65044b3 | ||
|
|
717f1e7eec | ||
|
|
30b58d213e | ||
|
|
0404b5f1e4 | ||
|
|
f2a946790d | ||
|
|
37ea2260b8 | ||
|
|
96af470708 | ||
|
|
3275abafb0 | ||
|
|
2538a41fcb | ||
|
|
d93b76a664 | ||
|
|
ea5703d99d | ||
|
|
22c3c797ff | ||
|
|
d1e5fdc1e0 | ||
|
|
ed9c5a0dc7 | ||
|
|
e1fae2e219 | ||
|
|
c29dd321e3 | ||
|
|
6062534d91 | ||
|
|
d6bb61c428 | ||
|
|
65a56684ec | ||
|
|
87cb1cc4f7 | ||
|
|
0be75ca38e | ||
|
|
42d361b7ad | ||
|
|
e4896fe935 | ||
|
|
2f81690783 | ||
|
|
dc3ec24cd7 | ||
|
|
797171fc3a | ||
|
|
16e12a8a7b | ||
|
|
0e07124cbc | ||
|
|
5db66e3fcb | ||
|
|
01770d25f8 | ||
|
|
e4366c8dfa | ||
|
|
f19446eda9 | ||
|
|
e5e7fa3f8a | ||
|
|
69575622a2 | ||
|
|
ee229e9ed8 | ||
|
|
21a9481459 | ||
|
|
f28732904d | ||
|
|
06828e2cfd | ||
|
|
e89c58e2e9 | ||
|
|
cb1203a2b8 | ||
|
|
be64aba265 | ||
|
|
316281d42b | ||
|
|
91520753b0 | ||
|
|
94bb94e8f4 | ||
|
|
b5419ee747 | ||
|
|
22e9f3308b | ||
|
|
d1161207da | ||
|
|
f8aad34bb1 | ||
|
|
8b9686edba | ||
|
|
e5c7c4b02f | ||
|
|
a17bbc4d15 | ||
|
|
bc5c9df40d | ||
|
|
59c5dfe703 | ||
|
|
953e2e6a73 | ||
|
|
f16b3cb2dd | ||
|
|
b8d5978668 | ||
|
|
6dc2d5092d | ||
|
|
1d55dad4b1 | ||
|
|
97cf766466 | ||
|
|
debcd3dc0d | ||
|
|
495d7ba9aa | ||
|
|
aac405a99d | ||
|
|
22fed1dfba | ||
|
|
ce79a638f5 | ||
|
|
ae420910e9 | ||
|
|
cd3a7375e6 | ||
|
|
a4fd51445d | ||
|
|
66393224ba | ||
|
|
8faceb1376 | ||
|
|
ca802a7254 | ||
|
|
ae7d4770fa | ||
|
|
430c00c689 | ||
|
|
302f7018d4 | ||
|
|
244cbb39ca | ||
|
|
a0eac8e0dc | ||
|
|
fc259f5c20 | ||
|
|
a3a6ec4838 | ||
|
|
c32a8c1614 | ||
|
|
50f4e623f7 | ||
|
|
b7de63c5f5 | ||
|
|
4ed41cf06a | ||
|
|
d613ceb3eb | ||
|
|
91ee57997b | ||
|
|
50a7a94dac | ||
|
|
61c5d7e637 | ||
|
|
816ba32bb0 | ||
|
|
3c6937ea94 | ||
|
|
bf897eb02a | ||
|
|
254bb9e0a9 | ||
|
|
2cdd9a7fc0 | ||
|
|
774abcc612 | ||
|
|
bbea1fba25 | ||
|
|
1c68b02343 | ||
|
|
ed1f88db9d | ||
|
|
c4390a0bb0 | ||
|
|
301e761897 | ||
|
|
72173298e3 | ||
|
|
c4265edaf4 | ||
|
|
93f9bde307 | ||
|
|
0bf8f978f9 | ||
|
|
a6522bbcf2 | ||
|
|
44aeddcdbd | ||
|
|
c6a630875f | ||
|
|
b18fa8fa76 | ||
|
|
689808a9db | ||
|
|
8bb45d6f43 | ||
|
|
cd1ff1699b | ||
|
|
4ca13ca884 | ||
|
|
b05138630a | ||
|
|
9394ac47f4 | ||
|
|
c43716b0d9 | ||
|
|
e8b54ddc1f | ||
|
|
37d756b1b0 | ||
|
|
e3140aaab8 | ||
|
|
238aa2e509 | ||
|
|
54c6d4fb96 | ||
|
|
969b921fae | ||
|
|
40add5ca44 | ||
|
|
06db4610ca | ||
|
|
e4334f256a | ||
|
|
4286baec0f | ||
|
|
cd1df94235 | ||
|
|
649b73f0e1 | ||
|
|
e967d4b344 | ||
|
|
e5a71b8044 | ||
|
|
9886957034 | ||
|
|
3e7d155002 | ||
|
|
b96add529c | ||
|
|
e91db6aeec | ||
|
|
1b25283284 | ||
|
|
2bc61baac3 | ||
|
|
f862f1a2c4 | ||
|
|
3074169446 | ||
|
|
afee575f10 | ||
|
|
94a53a278c | ||
|
|
4a3ac7176f | ||
|
|
305c5bad68 | ||
|
|
4570da2e26 | ||
|
|
7ec0487e37 | ||
|
|
3aa3dccda7 | ||
|
|
21efa7f639 | ||
|
|
614fd1a85d | ||
|
|
05bd6a5d48 | ||
|
|
208fa85e8f | ||
|
|
2b703cac3a | ||
|
|
ce59872a66 | ||
|
|
c402c416e5 | ||
|
|
466b4314c5 | ||
|
|
40f8aac655 | ||
|
|
2afd1ab938 | ||
|
|
722fcaa2e1 | ||
|
|
5d3830d3de | ||
|
|
da244fe836 | ||
|
|
c00ff163f1 | ||
|
|
6bb18f18fd | ||
|
|
b8ea8f8a97 | ||
|
|
a8edec2184 | ||
|
|
de3db81222 | ||
|
|
e0a49bc71e | ||
|
|
031e65efa7 | ||
|
|
3a1978e2fe | ||
|
|
edffa28d89 | ||
|
|
2c60fadb99 | ||
|
|
adfd9f63fa | ||
|
|
22f3f245b5 | ||
|
|
53e832fbf0 | ||
|
|
884c180e43 | ||
|
|
a1d5c0252d | ||
|
|
94a40f4b79 | ||
|
|
523467f47e | ||
|
|
eea48c257f | ||
|
|
d9e6718217 | ||
|
|
84afda69c0 | ||
|
|
820a1c1604 | ||
|
|
941d79410b | ||
|
|
78d2b8a68b | ||
|
|
0d147c7585 | ||
|
|
2f23d6a67d | ||
|
|
df6c5fee9c | ||
|
|
41f6bc588c | ||
|
|
660eedb917 | ||
|
|
37cc205dfa | ||
|
|
78beaf0b45 | ||
|
|
8c5cb09e70 | ||
|
|
3163e53502 | ||
|
|
183ebfad96 | ||
|
|
49e7e14422 | ||
|
|
6576099748 |
BIN
.github/Electron/Chrome_bsp.png
vendored
Normal file
|
After Width: | Height: | Size: 332 KiB |
BIN
.github/Electron/PMD_Banner.png
vendored
Normal file
|
After Width: | Height: | Size: 682 KiB |
4
.github/FUNDING.yml
vendored
@@ -2,8 +2,8 @@
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: Timeraa
|
||||
open_collective: #
|
||||
ko_fi: #
|
||||
open_collective: premid
|
||||
ko_fi: timeraa
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
|
||||
BIN
.github/Logo.png
vendored
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
.github/Patreon.png
vendored
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
1
.github/PayPal.svg
vendored
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
.github/TwitterButton.png
vendored
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
42
.github/deploy.ts
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
import * as Client from "ssh2-sftp-client";
|
||||
import * as archiver from "archiver";
|
||||
import * as rimraf from "rimraf";
|
||||
import { platform } from "os";
|
||||
import { createWriteStream } from "fs";
|
||||
|
||||
let sftp = new Client();
|
||||
|
||||
sftp
|
||||
.connect({
|
||||
host: process.env.SSH_HOST,
|
||||
username: process.env.SSH_USERNAME,
|
||||
password: process.env.SSH_PASSWORD
|
||||
})
|
||||
.then(async () => {
|
||||
rimraf.sync("../dist/app/");
|
||||
|
||||
console.log("Zipping...");
|
||||
let output = createWriteStream("app.zip"),
|
||||
archive = archiver("zip");
|
||||
|
||||
archive.directory(`../dist/`, platform());
|
||||
|
||||
output.on("close", function() {
|
||||
console.log("Uploading...");
|
||||
sftp
|
||||
.fastPut("app.zip", `/home/PreMiD/builds/${platform()}.zip`)
|
||||
.then(() => {
|
||||
console.log("Done!");
|
||||
sftp.end();
|
||||
});
|
||||
});
|
||||
|
||||
archive.on("error", function(err) {
|
||||
sftp.end();
|
||||
throw err;
|
||||
});
|
||||
|
||||
archive.pipe(output);
|
||||
|
||||
archive.finalize();
|
||||
});
|
||||
BIN
.github/example.png
vendored
Normal file
|
After Width: | Height: | Size: 332 KiB |
88
.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
name: DePloY
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- "src/**/*"
|
||||
- "**.ts"
|
||||
env:
|
||||
NODE_ENV: DePloY
|
||||
jobs:
|
||||
package:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-latest, macOS-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/setup-node@master
|
||||
- name: Install Dependencies
|
||||
run: npm i -g yarn
|
||||
- name: Prepare to package
|
||||
run: |
|
||||
yarn
|
||||
yarn run init
|
||||
- name: Package
|
||||
run: yarn pkg
|
||||
- name: Upload to server
|
||||
env:
|
||||
SSH_HOST: ${{ secrets.SSHHOST }}
|
||||
SSH_USERNAME: ${{ secrets.SSHUSERNAME }}
|
||||
SSH_PASSWORD: ${{ secrets.SSHPASSWORD }}
|
||||
run: yarn deploy
|
||||
installer:
|
||||
needs: package
|
||||
runs-on: "ubuntu-latest"
|
||||
steps:
|
||||
- name: Prepare for installer
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.SSHHOST }}
|
||||
username: ${{ secrets.SSHUSERNAME }}
|
||||
password: ${{ secrets.SSHPASSWORD }}
|
||||
script: |
|
||||
cd /home/PreMiD/builds
|
||||
unzip darwin.zip
|
||||
unzip win32.zip
|
||||
mv darwin/PreMiD-darwin-x64 PreMiD-darwin-x64
|
||||
mv win32/PreMiD-win32-ia32 PreMiD-win32-ia32
|
||||
mv win32/PreMiD-win32-x64 PreMiD-win32-x64
|
||||
rm -r win32.zip darwin.zip darwin win32
|
||||
- name: Create installer (Windows 32bit)
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.SSHHOST }}
|
||||
username: ${{ secrets.SSHUSERNAME }}
|
||||
password: ${{ secrets.SSHPASSWORD }}
|
||||
script: |
|
||||
cd /home/PreMiD/builds
|
||||
node prepare.js PreMiD-win32-ia32
|
||||
/opt/installbuilder-19.9.0/bin/builder build installer.xml windows
|
||||
- name: Create installer (Windows 64bit)
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.SSHHOST }}
|
||||
username: ${{ secrets.SSHUSERNAME }}
|
||||
password: ${{ secrets.SSHPASSWORD }}
|
||||
script: |
|
||||
cd /home/PreMiD/builds
|
||||
node prepare.js PreMiD-win32-x64
|
||||
/opt/installbuilder-19.9.0/bin/builder build installer.xml windows
|
||||
- name: Create installer (MacOS)
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.SSHHOST }}
|
||||
username: ${{ secrets.SSHUSERNAME }}
|
||||
password: ${{ secrets.SSHPASSWORD }}
|
||||
script: |
|
||||
cd /home/PreMiD/builds
|
||||
node prepare.js PreMiD-darwin-x64
|
||||
/opt/installbuilder-19.9.0/bin/builder build installer.xml osx
|
||||
- name: Cleanup
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.SSHHOST }}
|
||||
username: ${{ secrets.SSHUSERNAME }}
|
||||
password: ${{ secrets.SSHPASSWORD }}
|
||||
script: |
|
||||
cd /home/PreMiD/builds
|
||||
rm -r PreMiD-darwin-x64 PreMiD-win32-ia32 PreMiD-win32-x64
|
||||
14
.gitignore
vendored
@@ -1,6 +1,16 @@
|
||||
node_modules
|
||||
out
|
||||
dist
|
||||
server
|
||||
tmp
|
||||
|
||||
.vscode
|
||||
.env
|
||||
.env
|
||||
|
||||
src/package-lock.json
|
||||
src/package.json
|
||||
src/update.ini
|
||||
|
||||
*.exe
|
||||
*.app
|
||||
*.xml.backup
|
||||
*.js
|
||||
22
@types/PreMiD/ExtensionSettings.d.ts
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
export default interface ExtensionSettings {
|
||||
/**
|
||||
* If extension is enabled
|
||||
*/
|
||||
enabled: boolean;
|
||||
/**
|
||||
* Autolaunch enabled
|
||||
*/
|
||||
autoLaunch: boolean;
|
||||
/**
|
||||
* Media keys enabled
|
||||
*/
|
||||
mediaKeys: boolean;
|
||||
/**
|
||||
* title menubar (TrayTitle)
|
||||
*/
|
||||
titleMenubar: boolean;
|
||||
/**
|
||||
* language of extension
|
||||
*/
|
||||
language: string;
|
||||
}
|
||||
16
@types/PreMiD/Presence.d.ts
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
import * as Discord from "discord-rpc";
|
||||
|
||||
export default interface Presence {
|
||||
/**
|
||||
* Client ID of presence
|
||||
*/
|
||||
clientId: string;
|
||||
/**
|
||||
* Rich Procedual call connection
|
||||
*/
|
||||
rpc: Discord.Client;
|
||||
/**
|
||||
* Connection ready?
|
||||
*/
|
||||
ready: Boolean;
|
||||
}
|
||||
33
@types/PreMiD/PresenceData.d.ts
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
import * as Discord from "discord-rpc";
|
||||
|
||||
export default interface PresenceData {
|
||||
/**
|
||||
* Client ID of presence
|
||||
*/
|
||||
clientId: string;
|
||||
/**
|
||||
* Tray title to be shown in Mac OS tray
|
||||
*/
|
||||
trayTitle: string;
|
||||
/**
|
||||
* service name of presence
|
||||
* @deprecated
|
||||
*/
|
||||
service: string;
|
||||
/**
|
||||
* Determines if the service is currently playing something back or not, if false it will automatically hide after 1 minute
|
||||
*/
|
||||
playback: boolean;
|
||||
/**
|
||||
* Discord Presence which gets sent directly to Discord app
|
||||
*/
|
||||
presenceData: Discord.Presence;
|
||||
/**
|
||||
* Determines if the service should be hidden (clearActivity)
|
||||
*/
|
||||
hidden: boolean;
|
||||
/**
|
||||
* Determines if the service is mediaKey able / uses them
|
||||
*/
|
||||
mediaKeys: boolean;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"description": {
|
||||
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
@font-face{font-family:"Roboto";src:url("../fonts/Roboto/Roboto-Regular.ttf") format("truetype")}@font-face{font-family:"Roboto";font-weight:"bold";src:url("../fonts/Roboto/Roboto-Bold.ttf") format("truetype")}#premid-connectinfo.dark{background-color:#596cae !important;color:rgba(255,255,255,0.8);-webkit-box-shadow:0px 0px 14px rgba(25,25,25,0.5) !important;box-shadow:0px 0px 14px rgba(25,25,25,0.5) !important}#premid-connectinfo:not(.dark){color:#575757;background-color:white !important;-webkit-box-shadow:0px 3px 8px rgba(0,0,0,0.15) !important;box-shadow:0px 3px 8px rgba(0,0,0,0.15) !important}#premid-connectinfo{position:fixed !important;top:5px !important;right:5px !important;z-index:10000 !important;width:auto !important;overflow:hidden !important;white-space:nowrap !important;border-radius:5px !important;height:50px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}#premid-connectinfo .animate{-webkit-animation-name:slideIn !important;animation-name:slideIn !important;-webkit-animation-duration:5s !important;animation-duration:5s !important;-webkit-animation-timing-function:cubic-bezier(0.55, 0.55, 0, 1.2) !important;animation-timing-function:cubic-bezier(0.55, 0.55, 0, 1.2) !important}#premid-connectinfo *{font-family:"Roboto", sans-serif !important;margin:0 !important;padding:0 !important}#premid-connectinfo img{float:left !important;margin:5px !important;width:40px !important;height:40px !important}#premid-connectinfo h1{font-size:17px !important;font-weight:600 !important;margin:0 !important;margin-top:6px !important}#premid-connectinfo h2{font-size:15px !important;font-weight:500 !important}@-webkit-keyframes slideIn{0%{right:-110%}10%{right:5px}90%{right:5px}100%{right:-150%}}@keyframes slideIn{0%{right:-110%}10%{right:5px}90%{right:5px}100%{right:-150%}}
|
||||
@@ -1 +0,0 @@
|
||||
.switch{position:relative;display:inline-block;width:35px;height:15px}.switch input{display:none}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ff4b4b;-webkit-transition:0.25s;transition:0.25s}.slider:before{position:absolute;content:"";height:17px;width:17px;left:-2.5px;top:-2.5px;background-color:white;-webkit-transition:0.25s;-webkit-transition:0.25s cubic-bezier(0.215, 0.61, 0.355, 1);transition:0.25s cubic-bezier(0.215, 0.61, 0.355, 1);border:1px solid lightgray}input:checked+.slider{background-color:#4bff4b}input:disabled+.slider{background-color:#ff4b4b;cursor:not-allowed}input:disabled+.slider:before{background-color:#ff4b4b;border:1px solid #ff4b4b;cursor:not-allowed}input:focus+.slider{-webkit-box-shadow:0 0 1px #4bff4b;box-shadow:0 0 1px #4bff4b}input:hover+.slider{-webkit-transform:scale(1.1);transform:scale(1.1)}input:checked+.slider:before{-webkit-transform:translateX(20px);transform:translateX(20px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}
|
||||
13
Extension/css/materialize.min.css
vendored
@@ -1 +0,0 @@
|
||||
.right{float:right}#content h1{margin:5px}table{margin:5px}tr td:first-child{width:90%}
|
||||
@@ -1 +0,0 @@
|
||||
@font-face{font-family:"Roboto";src:url("chrome-extension://__MSG_@@extension_id__/fonts/Roboto/Roboto-Regular.ttf") format("truetype")}@font-face{font-family:"Roboto";font-weight:bold;src:url("chrome-extension://__MSG_@@extension_id__/fonts/Roboto/Roboto-Bold.ttf") format("truetype")}*{font-family:"Roboto" !important;color:#fff}
|
||||
@@ -1 +0,0 @@
|
||||
body{color:#929292}.dark{background-color:#1a1b1e}.dark .tabs,.dark .card-panel{background-color:#242529;color:rgba(255,255,255,0.6);-webkit-box-shadow:none;box-shadow:none}#pMiDHeader{z-index:10000;position:fixed;top:0;height:75px;width:100%;background-color:#596bae}#pMiDHeader img{height:75px;position:relative;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}#pMiDHeading{color:#596cae;margin:5px;margin-bottom:20px;padding:0;font-size:30px;font-weight:bold;text-align:center}h2{font-size:25px !important;margin:0 !important;margin-bottom:15px !important}h3{font-size:22px !important;margin:0 !important;margin-top:5px !important;margin-bottom:5px !important}p{font-size:17px !important;margin:0 !important;line-height:1}#content{position:relative;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:75px;max-width:500px}.card-panel{margin-top:50px !important;margin-bottom:50px !important}ol,ul{padding-left:25px !important;font-size:17px;margin:0;margin-top:5px;margin-bottom:5px}li{list-style-type:disc !important}#buttonWrapper{text-align:center;margin-top:15px}a.btn{width:49%;padding:10px !important;margin-bottom:5px;height:unset !important;line-height:unset !important;font-weight:500}a.close{background-color:#596bae !important}a.close:hover{background-color:rgba(89,107,174,0.75) !important}a.getSupport{background-color:#575757 !important}a.getSupport:hover{background-color:rgba(87,87,87,0.75) !important}a.gotIt{background-color:#3cac38 !important}a.gotIt:hover{background-color:rgba(60,172,56,0.75) !important}.smallCenter{text-align:center;font-size:15px}
|
||||
@@ -1,202 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -1,239 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<!-- Import materialize.css -->
|
||||
<link
|
||||
type="text/css"
|
||||
rel="stylesheet"
|
||||
href="../../css/materialize.min.css"
|
||||
media="screen,projection"
|
||||
/>
|
||||
<link
|
||||
type="text/css"
|
||||
rel="stylesheet"
|
||||
href="../../css/popup.css"
|
||||
media="screen,projection"
|
||||
/>
|
||||
|
||||
<script src="../../js/util/jquery-3.3.1.min.js"></script>
|
||||
<script src="../../js/util/langManager.js"></script>
|
||||
<script src="../../js/options.js"></script>
|
||||
<script src="../../js/credits.js"></script>
|
||||
<script src="../../js/popup.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="header"><img draggable="false" src="../../icon.png" /></div>
|
||||
<ul class="tabs headerTabs">
|
||||
<li class="tab col s3">
|
||||
<a
|
||||
term="popup.tabs.options"
|
||||
draggable="false"
|
||||
class="active waves-effect waves-discord"
|
||||
href="#options"
|
||||
></a>
|
||||
</li>
|
||||
<li class="tab col s3">
|
||||
<a
|
||||
term="popup.tabs.credits"
|
||||
draggable="false"
|
||||
class="waves-effect waves-discord"
|
||||
href="#credits"
|
||||
></a>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="tabContent">
|
||||
<div id="options" class="col s12 tabContent">
|
||||
<div class="row">
|
||||
<div class="col s12 m5">
|
||||
<div class="card-panel">
|
||||
<h3 term="popup.options.headings.general" id="pMiDHeading"></h3>
|
||||
<table id="options">
|
||||
<tr class="enabledToggle">
|
||||
<td>
|
||||
<h5 term="popup.options.enabled" id="pMiDOption"></h5>
|
||||
</td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input type="checkbox" class="togglePresence" /><span
|
||||
class="lever"
|
||||
></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h5 term="popup.options.mediaControls" id="pMiDOption"></h5>
|
||||
</td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="toggleMediaControls"
|
||||
/><span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h5
|
||||
term="popup.options.checkForUpdates"
|
||||
id="pMiDOption"
|
||||
></h5>
|
||||
</td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="toggleCheckUpdates"
|
||||
/><span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h5 term="popup.options.systemStartup" id="pMiDOption"></h5>
|
||||
</td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="toggleSystemStartup"
|
||||
/><span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h5 term="popup.options.darkTheme" id="pMiDOption"></h5>
|
||||
</td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input type="checkbox" class="toggleDarkTheme" /><span
|
||||
class="lever"
|
||||
></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h5 term="popup.options.tabPriority" id="pMiDOption"></h5>
|
||||
</td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input type="checkbox" class="toggleTabPriority" /><span
|
||||
class="lever"
|
||||
></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="card-panel">
|
||||
<h3 term="popup.options.headings.presences" id="pMiDHeading"></h3>
|
||||
<table id="options">
|
||||
<tr>
|
||||
<td><h5 id="pMiDOption">YouTube</h5></td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input class="yt toggleYouTube" type="checkbox" /><span
|
||||
class="lever"
|
||||
></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h5 id="pMiDOption">YouTube Music</h5></td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input
|
||||
class="yt toggleYouTubeMusic"
|
||||
type="checkbox"
|
||||
/><span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h5 id="pMiDOption">Twitch</h5></td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input
|
||||
class="twitch toggleTwitch"
|
||||
type="checkbox"
|
||||
/><span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h5 id="pMiDOption">SoundCloud</h5></td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input
|
||||
class="soundcloud toggleSoundCloud"
|
||||
type="checkbox"
|
||||
/><span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h5 id="pMiDOption">Netflix</h5></td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input
|
||||
class="netflix toggleNetflix"
|
||||
type="checkbox"
|
||||
/><span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h5 id="pMiDOption">Crunchyroll</h5></td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="toggleCrunchyroll crunchyroll"
|
||||
/><span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="credits" class="tabContent">
|
||||
<div class="credits_container"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="../../js/util/materialize.min.js"
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 81 KiB |
@@ -1,52 +0,0 @@
|
||||
<html class="dark">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>PreMiD - Thank you!</title>
|
||||
<link rel="stylesheet" href="css/tab.css" />
|
||||
<!-- Import materialize.css -->
|
||||
<link
|
||||
type="text/css"
|
||||
rel="stylesheet"
|
||||
href="css/materialize.min.css"
|
||||
media="screen,projection"
|
||||
/>
|
||||
<script src="js/util/jquery-3.3.1.min.js"></script>
|
||||
<script src="js/util/langManager.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="pMiDHeader"><img src="icon.png" draggable="false" /></div>
|
||||
<div id="content">
|
||||
<div class="card-panel">
|
||||
<h1 term="tab.installed.heading" id="pMiDHeading"></h1>
|
||||
<h2 term="tab.installed.subHeading.didInstallQuestion"></h2>
|
||||
<h3 term="tab.installed.subHeading.notInstalled"></h3>
|
||||
<ol>
|
||||
<li><p class="Pdownload"></p></li>
|
||||
<li><p term="tab.installed.instructions.wait"></p></li>
|
||||
<li><p term="tab.installed.instructions.warnings"></p></li>
|
||||
<li><p term="tab.installed.instructions.autostart"></p></li>
|
||||
</ol>
|
||||
<h3 term="tab.installed.subHeading.ready"></h3>
|
||||
<p term="tab.installed.intro"></p>
|
||||
<div id="buttonWrapper">
|
||||
<a
|
||||
term="tab.installed.letsStart"
|
||||
draggable="false"
|
||||
href="https://www.youtube.com/watch?v=DLzxrzFCyOs"
|
||||
class="close waves-effect btn"
|
||||
></a>
|
||||
<a
|
||||
term="tab.installed.getSupport"
|
||||
draggable="false"
|
||||
href="https://wiki.premid.app/troubleshooting/troubleshooting"
|
||||
class="getSupport waves-effect btn"
|
||||
></a>
|
||||
</div>
|
||||
<p class="smallCenter PlikeThisProject"></p>
|
||||
</div>
|
||||
</div>
|
||||
<script src="js/installed.js"></script>
|
||||
<script type="text/javascript" src="js/util/materialize.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,193 +0,0 @@
|
||||
var allowedTabsStatic = ["www.youtube.com", "music.youtube.com", "soundcloud.com", "www.netflix.com", "www.aniflix.tv", "www.anime4you.one", "www.twitch.tv", "www.rabb.it", "www.crunchyroll.com"]
|
||||
|
||||
chrome.runtime.onInstalled.addListener(function(details) {
|
||||
switch(details.reason) {
|
||||
case "install": {
|
||||
chrome.tabs.create({url: "installed.html"})
|
||||
updateOptions()
|
||||
break;
|
||||
}
|
||||
case "update": {
|
||||
//chrome.tabs.create({url: "updated.html"})
|
||||
updateOptions()
|
||||
break;
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
//* Tab Priority™ variables
|
||||
var lastTabId = null,
|
||||
lastTabPriorityLock = 0,
|
||||
priorityTabId = null,
|
||||
priorityTab = null,
|
||||
allowedTabs = allowedTabsStatic.slice(),
|
||||
tabPriorityInterval = null,
|
||||
options
|
||||
|
||||
var oldOptions
|
||||
|
||||
var socket = io.connect("http://localhost:3020/")
|
||||
socket.on("connect", function() {
|
||||
tabPriorityInterval = setInterval(tabPriority, 1000)
|
||||
})
|
||||
|
||||
socket.on("disconnect", function() {
|
||||
clearInterval(tabPriorityInterval)
|
||||
})
|
||||
|
||||
|
||||
socket.on("mediaKeyHandler", function(data) {
|
||||
//* Media control buttons
|
||||
if(priorityTabId != null) chrome.tabs.sendMessage(priorityTabId, {mediaKeys: data.playback})
|
||||
})
|
||||
|
||||
//* Forward the presence data received from Presence script to application
|
||||
chrome.runtime.onMessage.addListener(function(data, sender) {
|
||||
if(data.presence != undefined) {
|
||||
socket.emit("updateData", data.presence)
|
||||
}
|
||||
if(data.iframe_video != undefined && priorityTabId != null) {
|
||||
chrome.tabs.sendMessage(priorityTabId, data)
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* Tab Priority™
|
||||
* Handles tab changes.
|
||||
*/
|
||||
async function tabPriority() {
|
||||
chrome.storage.sync.get(['options'], function(result) {
|
||||
allowedTabs = allowedTabsStatic.slice()
|
||||
|
||||
options = result.options
|
||||
if(!options.enabled) {
|
||||
allowedTabs = []
|
||||
priorityTab = null
|
||||
priorityTabId = null
|
||||
lastTabId = null
|
||||
}
|
||||
|
||||
updateTabPriorityService("youtube", "www.youtube.com", options)
|
||||
updateTabPriorityService("youtubeMusic", "music.youtube.com", options)
|
||||
updateTabPriorityService("soundcloud", "soundcloud.com", options)
|
||||
updateTabPriorityService("netflix", "www.netflix.com", options)
|
||||
updateTabPriorityService("twitch", "www.twitch.tv", options)
|
||||
updateTabPriorityService("aniflix", "www.aniflix.tv", options)
|
||||
updateTabPriorityService("anime4you", "www.anime4you.one", options)
|
||||
updateTabPriorityService("rabbIt", "www.rabb.it", options)
|
||||
updateTabPriorityService("crunchyroll", "www.crunchyroll.com", options)
|
||||
|
||||
chrome.tabs.query({active: true}, function(tabs) {
|
||||
if(tabs[0].id == lastTabId) {
|
||||
for (var i = 0; i < allowedTabs.length; i++) {
|
||||
if(tabs[0].url.indexOf(allowedTabs[i]) > -1) {
|
||||
if(lastTabPriorityLock == 5) {
|
||||
if(priorityTabId != tabs[0].id) {
|
||||
if(priorityTabId != null)
|
||||
chrome.tabs.sendMessage(priorityTabId, {tabPriority: false})
|
||||
priorityTabId = tabs[0].id
|
||||
priorityTab = tabs[0]
|
||||
}
|
||||
}
|
||||
|
||||
lastTabPriorityLock++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
lastTabId = tabs[0].id
|
||||
lastTabPriorityLock = 0
|
||||
}
|
||||
|
||||
if(priorityTabId != null)
|
||||
chrome.tabs.sendMessage(priorityTabId, {tabPriority: true})
|
||||
})
|
||||
|
||||
//* Update settings in application if changed
|
||||
if(oldOptions == null || !isEquivalent(result.options, oldOptions)) {
|
||||
oldOptions = result.options
|
||||
socket.emit('settingsChange', result)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove service if disabled
|
||||
* @param {String} service Service name in options.json
|
||||
* @param {Strng} serviceURL Service URL to handle
|
||||
* @param {Object} options Options objects
|
||||
*/
|
||||
function updateTabPriorityService(service, serviceURL, options) {
|
||||
if(!options[service]) {
|
||||
var index = allowedTabs.indexOf(serviceURL)
|
||||
if(index != -1) allowedTabs.splice(index, 1)
|
||||
if(priorityTab != null && priorityTab.url.includes(serviceURL)) {
|
||||
priorityTabId = null
|
||||
priorityTab = null
|
||||
lastTabId = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if object is equal to object
|
||||
* @param {Object} a
|
||||
* @param {Object} b
|
||||
*/
|
||||
function isEquivalent(a, b) {
|
||||
// Create arrays of property names
|
||||
var aProps = Object.getOwnPropertyNames(a);
|
||||
var bProps = Object.getOwnPropertyNames(b);
|
||||
|
||||
// If number of properties is different,
|
||||
// objects are not equivalent
|
||||
if (aProps.length != bProps.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (var i = 0; i < aProps.length; i++) {
|
||||
var propName = aProps[i];
|
||||
|
||||
// If values of same property are not equal,
|
||||
// objects are not equivalent
|
||||
if (a[propName] !== b[propName]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// If we made it this far, objects
|
||||
// are considered equivalent
|
||||
return true;
|
||||
}
|
||||
|
||||
async function updateOptions() {
|
||||
chrome.storage.sync.get(['options'], async function(result) {
|
||||
var options
|
||||
options = result.options
|
||||
if(options == null) options = {}
|
||||
options[checkStorage("enabled", options)]
|
||||
options[checkStorage("titleMenubar", options)]
|
||||
options[checkStorage("mediaControls", options)]
|
||||
options[checkStorage("checkForUpdates", options)]
|
||||
options[checkStorage("systemStartup", options)]
|
||||
options[checkStorage("darkTheme", options)]
|
||||
options[checkStorage("tabPriority", options)]
|
||||
|
||||
options[checkStorage("youtubeMusic", options)]
|
||||
options[checkStorage("soundcloud", options)]
|
||||
|
||||
options[checkStorage("youtube", options)]
|
||||
options[checkStorage("twitch", options)]
|
||||
options[checkStorage("netflix", options)]
|
||||
options[checkStorage("rabbIt", options)]
|
||||
|
||||
options[checkStorage("aniflix", options)]
|
||||
options[checkStorage("crunchyroll", options)]
|
||||
options[checkStorage("anime4you", options)]
|
||||
|
||||
chrome.storage.sync.set({options})
|
||||
})
|
||||
}
|
||||
|
||||
function checkStorage(option, options) {
|
||||
if(options[option] == undefined) return options[option] = true
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
//* Wait until DOM loaded
|
||||
$(document).ready(async function () {
|
||||
//* Fetch Credits from API
|
||||
fetch('https://api.premid.app/credits')
|
||||
.then(async response => {
|
||||
var result = await response.json()
|
||||
result = result.sort((a, b) => {
|
||||
return b.rolePosition - a.rolePosition
|
||||
})
|
||||
|
||||
//* Create & inject credit card
|
||||
result.forEach(element => {
|
||||
$(`
|
||||
<div class="usercard" style="--hoverColor: ${element.roleColor}">
|
||||
<div>
|
||||
<div class="credits_avatar">
|
||||
<img draggable="false" src="${element.avatar}">
|
||||
</div>
|
||||
<div class="credits_text">${getNameColor(element)}
|
||||
<p>${element.role}</p>
|
||||
<p>${element.patronColor != "#fff" && element.role != "Patron" ? "Patron" : ""}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>`).appendTo('#credits .credits_container')
|
||||
});
|
||||
})
|
||||
//* If error/not connected to internet
|
||||
.catch(async function(err) {
|
||||
$(`
|
||||
<div class="usercard noHover">
|
||||
<div class="credits_text">
|
||||
<h6 term="popup.error"></h6>
|
||||
<p term="popup.error.message"></p>
|
||||
</div>
|
||||
</div>`)
|
||||
.appendTo('#credits .credits_container')
|
||||
//* Translate terms
|
||||
translate()
|
||||
})
|
||||
})
|
||||
|
||||
function getNameColor(element) {
|
||||
if(element.patronColor != "#fff")
|
||||
return `<h6 style="color: ` + element.patronColor + `">` + element.name + `</h6>`;
|
||||
else
|
||||
return `<h6>` + element.name + `</h6>`;
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
$(document).ready(async function() {
|
||||
$('.Pdownload').html((await getString("tab.installed.instructions.download")).replace("{{github_link}}", '<a target="_blank" href="https://github.com/Timeraa/PreMiD/releases/latest">' + await getString("tab.installed.instructions.github") + '</a>'))
|
||||
$('.PlikeThisProject').html((await getString("tab.installed.likeThisProject")).replace("{{github_link}}", '<a target="_blank" href="https://github.com/Timeraa/PreMiD">GitHub</a>'))
|
||||
})
|
||||
@@ -1,165 +0,0 @@
|
||||
let options = undefined
|
||||
|
||||
chrome.runtime.getPlatformInfo(async function(info) {
|
||||
if(info.os == "mac")
|
||||
$(`
|
||||
<tr>
|
||||
<td>
|
||||
<h5 term="popup.options.titleMenubar" id="pMiDOption"></h5>
|
||||
</td>
|
||||
<td>
|
||||
<div class="switch">
|
||||
<label>
|
||||
<input type="checkbox" class="toggleTitleMenubar" />
|
||||
<span class="lever"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>`)
|
||||
.insertAfter('.enabledToggle')
|
||||
titleMenubarToggle = $('.toggleTitleMenubar')
|
||||
titleMenubarToggle.change(tMB);
|
||||
})
|
||||
|
||||
$(document).ready(function() {
|
||||
var enabledToggle = $('.togglePresence'),
|
||||
youtubeToggle = $('.toggleYouTube'),
|
||||
youtubeMusicToggle = $('.toggleYouTubeMusic'),
|
||||
twitchToggle = $('.toggleTwitch'),
|
||||
soundcloudToggle = $('.toggleSoundCloud'),
|
||||
netflixToggle = $('.toggleNetflix'),
|
||||
rabbitToggle = $('.toggleRabbit'),
|
||||
anime4YouToggle = $('.toggleAnime4You'),
|
||||
mediaControlsToggle = $('.toggleMediaControls'),
|
||||
checkForUpdatesToggle = $('.toggleCheckUpdates'),
|
||||
systemStartupToggle = $('.toggleSystemStartup'),
|
||||
darkThemeToggle = $('.toggleDarkTheme'),
|
||||
crunchyrollToggle = $('.toggleCrunchyroll'),
|
||||
aniflixToggle = $('.toggleAniflix'),
|
||||
tabPriorityToggle = $('.toggleTabPriority')
|
||||
|
||||
enabledToggle.change(tEnabled);
|
||||
youtubeToggle.change(tYT);
|
||||
youtubeMusicToggle.change(tYTM);
|
||||
twitchToggle.change(tT);
|
||||
soundcloudToggle.change(tSC);
|
||||
netflixToggle.change(tN);
|
||||
mediaControlsToggle.change(tMC);
|
||||
checkForUpdatesToggle.change(tCFU);
|
||||
systemStartupToggle.change(tSS);
|
||||
darkThemeToggle.change(tdT);
|
||||
rabbitToggle.change(tRI);
|
||||
anime4YouToggle.change(tA4Y);
|
||||
crunchyrollToggle.change(tCR);
|
||||
aniflixToggle.change(tAF);
|
||||
tabPriorityToggle.change(tTP);
|
||||
|
||||
chrome.storage.sync.get(['options'], function(result) {
|
||||
options = result.options
|
||||
if(result.options != undefined) {
|
||||
if(options.darkTheme) $('html').addClass("dark")
|
||||
enabledToggle.prop('checked', result.options.enabled)
|
||||
youtubeToggle.prop('checked', result.options.youtube)
|
||||
youtubeMusicToggle.prop('checked', result.options.youtubeMusic)
|
||||
twitchToggle.prop('checked', result.options.twitch)
|
||||
soundcloudToggle.prop('checked', result.options.soundcloud)
|
||||
netflixToggle.prop('checked', result.options.netflix)
|
||||
rabbitToggle.prop('checked', result.options.rabbIt)
|
||||
anime4YouToggle.prop('checked', result.options.anime4you)
|
||||
if(titleMenubarToggle != undefined)
|
||||
titleMenubarToggle.prop('checked', result.options.titleMenubar)
|
||||
mediaControlsToggle.prop('checked', result.options.mediaControls)
|
||||
checkForUpdatesToggle.prop('checked', result.options.checkForUpdates)
|
||||
systemStartupToggle.prop('checked', result.options.systemStartup)
|
||||
darkThemeToggle.prop('checked', result.options.darkTheme)
|
||||
aniflixToggle.prop('checked', result.options.aniflix)
|
||||
crunchyrollToggle.prop('checked', result.options.crunchyroll)
|
||||
tabPriorityToggle.prop('checked', result.options.tabPriority)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
function tEnabled() {
|
||||
options.enabled = !options.enabled
|
||||
sync()
|
||||
}
|
||||
|
||||
function tYT() {
|
||||
options.youtube = !options.youtube
|
||||
sync()
|
||||
}
|
||||
|
||||
function tYTM() {
|
||||
options.youtubeMusic = !options.youtubeMusic
|
||||
sync()
|
||||
}
|
||||
|
||||
function tT() {
|
||||
options.twitch = !options.twitch
|
||||
sync()
|
||||
}
|
||||
|
||||
function tSC() {
|
||||
options.soundcloud = !options.soundcloud
|
||||
sync()
|
||||
}
|
||||
|
||||
function tN() {
|
||||
options.netflix = !options.netflix
|
||||
sync()
|
||||
}
|
||||
|
||||
function tMB() {
|
||||
options.titleMenubar = !options.titleMenubar
|
||||
sync()
|
||||
}
|
||||
|
||||
function tMC() {
|
||||
options.mediaControls = !options.mediaControls
|
||||
sync()
|
||||
}
|
||||
|
||||
function tCFU() {
|
||||
options.checkForUpdates = !options.checkForUpdates
|
||||
sync()
|
||||
}
|
||||
|
||||
function tSS() {
|
||||
options.systemStartup = !options.systemStartup
|
||||
sync()
|
||||
}
|
||||
|
||||
function tRI() {
|
||||
options.rabbIt = !options.rabbIt
|
||||
sync()
|
||||
}
|
||||
|
||||
function tA4Y() {
|
||||
options.anime4you = !options.anime4you
|
||||
sync()
|
||||
}
|
||||
|
||||
function tCR() {
|
||||
options.crunchyroll = !options.crunchyroll
|
||||
sync()
|
||||
}
|
||||
|
||||
function tAF() {
|
||||
options.aniflix = !options.aniflix
|
||||
sync()
|
||||
}
|
||||
|
||||
function tTP() {
|
||||
options.tabPriority = !options.tabPriority
|
||||
sync()
|
||||
}
|
||||
|
||||
function tdT() {
|
||||
options.darkTheme = !options.darkTheme
|
||||
if(options.darkTheme) $('html').addClass("dark"); else $('html').removeClass("dark");
|
||||
sync()
|
||||
}
|
||||
|
||||
function sync() {
|
||||
chrome.storage.sync.set({options: options})
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
$(document).ready(async function() {
|
||||
$('#content #panel').each(function() {
|
||||
this.addEventListener('click', updateItem)
|
||||
})
|
||||
|
||||
//* Tab physics
|
||||
$('.tabs').tabs({
|
||||
duration: 250
|
||||
});
|
||||
})
|
||||
function updateItem() {
|
||||
$(this).addClass('open')
|
||||
setTimeout(() => {
|
||||
if($(this).attr("class").split(' ')[0] == "github") {
|
||||
chrome.tabs.create({url: 'https://github.com/Timeraa/PreMiD'})
|
||||
} else window.location.href= $(this).attr("class").split(' ')[0] + ".html";
|
||||
}, 350)
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
var playback = false,
|
||||
videoTitle,
|
||||
videoAuthor,
|
||||
videoTimestamps,
|
||||
playbackBoolean,
|
||||
smallImageKey,
|
||||
smallImageText,
|
||||
episodeNumber
|
||||
|
||||
/**
|
||||
* Updates the Presence data and sends it back
|
||||
* to the background.js for further interaction
|
||||
*/
|
||||
async function updateData() {
|
||||
//console.log($('#showmedia_about_media h4').get(1).innerHTML.trim())
|
||||
playback =
|
||||
$('#showmedia_about_media a:first') != null
|
||||
&& iframe_video.dur != null ? true : false
|
||||
|
||||
//* If page has all required propertys
|
||||
if(playback) {
|
||||
videoTitle = $('#showmedia_about_media a:first').text()
|
||||
episodeNumber = ($('.collection-carousel-media-link-current').text().trim().match(/^[^\d]+(\d+)/) || [null, '??'])[1]
|
||||
videoAuthor = (await getString("presence.episode")).replace("{{episode}}", episodeNumber) + " - " + $('#showmedia_about_name').text()
|
||||
|
||||
videoTimestamps = getTimestamps(Math.floor(iframe_video.curr), Math.floor(iframe_video.dur))
|
||||
playbackBoolean = !iframe_video.paused
|
||||
smallImageKey = playbackBoolean ? 'play' : 'pause'
|
||||
smallImageText = playbackBoolean ? await getString("presence.playback.playing") : await getString("presence.playback.paused")
|
||||
|
||||
var data = {
|
||||
clientID: '518544926158487557',
|
||||
presenceData: {
|
||||
details: $('<div/>').html(videoTitle).text(),
|
||||
state: $('<div/>').html(videoAuthor).text(),
|
||||
largeImageKey: 'cr_lg',
|
||||
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
|
||||
smallImageKey: smallImageKey,
|
||||
smallImageText: smallImageText,
|
||||
},
|
||||
trayTitle: $('<div/>').html(videoTitle).text(),
|
||||
playback: playbackBoolean,
|
||||
service: 'Crunchyroll'
|
||||
}
|
||||
|
||||
if(playbackBoolean) {
|
||||
data.presenceData.startTimestamp = videoTimestamps[0]
|
||||
data.presenceData.endTimestamp = videoTimestamps[1]
|
||||
} else {
|
||||
delete data.presenceData.startTimestamp
|
||||
delete data.presenceData.endTimestamp
|
||||
}
|
||||
|
||||
chrome.runtime.sendMessage({presence: data})
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
var playback = false,
|
||||
songTitle,
|
||||
songAuthors,
|
||||
playbackBoolean,
|
||||
smallImageKey,
|
||||
smallImageText
|
||||
|
||||
/**
|
||||
* Handles Media Key controls
|
||||
* @param {data} data Data passed by socketConnector.js
|
||||
*/
|
||||
async function handleMediaKeys(data) {
|
||||
if($('.playbackSoundBadge__titleContextContainer') != undefined) {
|
||||
switch (data.mediaKeys) {
|
||||
case "pause":
|
||||
$('.playControl').click()
|
||||
break
|
||||
case "nextTrack":
|
||||
$('.skipControl__next').click()
|
||||
break
|
||||
case "previousTrack":
|
||||
$('.skipControl__previous').click()
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the Presence data and sends it back
|
||||
* to the background.js for further interaction
|
||||
*/
|
||||
async function updateData() {
|
||||
playback =
|
||||
$('.playbackSoundBadge') != undefined
|
||||
|
||||
|
||||
//* If page has all required propertys
|
||||
if(playback) {
|
||||
var startTime = Math.floor(Date.now()/1000),
|
||||
endTime = startTime -
|
||||
getSeconds($('.playbackTimeline__timePassed').children().get(1).innerHTML) + getSeconds($('.playbackTimeline__duration').children().get(1).innerHTML);
|
||||
|
||||
songTitle = $('.playbackSoundBadge__titleLink').children().get(1).innerHTML
|
||||
songAuthors = $('.playbackSoundBadge__titleContextContainer').children().get(0).innerHTML
|
||||
playbackBoolean = $('.playControl').hasClass('playing')
|
||||
smallImageKey = playbackBoolean ? 'play' : 'pause'
|
||||
smallImageText = playbackBoolean ? await getString("presence.playback.playing") : await getString("presence.playback.paused")
|
||||
|
||||
var data = {
|
||||
clientID: '501021185887436810',
|
||||
presenceData: {
|
||||
details: $('<div/>').html(songTitle).text(),
|
||||
state: $('<div/>').html(songAuthors).text(),
|
||||
largeImageKey: 'scloud_lg',
|
||||
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
|
||||
smallImageKey: smallImageKey,
|
||||
smallImageText: smallImageText,
|
||||
},
|
||||
trayTitle: $('<div/>').html(songTitle).text(),
|
||||
playback: playbackBoolean,
|
||||
service: 'SoundCloud'
|
||||
}
|
||||
|
||||
if(playbackBoolean) {
|
||||
data.presenceData.startTimestamp = startTime
|
||||
data.presenceData.endTimestamp = endTime
|
||||
} else {
|
||||
delete data.presenceData.startTimestamp
|
||||
delete data.presenceData.endTimestamp
|
||||
}
|
||||
|
||||
chrome.runtime.sendMessage({presence: data})
|
||||
}
|
||||
}
|
||||
|
||||
function getSeconds(string) {
|
||||
const a = string.split(":")
|
||||
|
||||
const seconds = string.split(":").length - 1 > 1 ? +a[0] * 3600 + +a[1] * 60 + +a[2] : +a[0] * 60 + +a[1]
|
||||
return seconds
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
var playback = false,
|
||||
songTitle,
|
||||
songAuthors,
|
||||
videoTimestamps,
|
||||
playbackBoolean,
|
||||
smallImageKey,
|
||||
smallImageText
|
||||
|
||||
/**
|
||||
* Handles Media Key controls
|
||||
* @param {data} data Data passed by socketConnector.js
|
||||
*/
|
||||
async function handleMediaKeys(data) {
|
||||
if(playback) {
|
||||
switch (data.mediaKeys) {
|
||||
case "pause":
|
||||
playbackBoolean ? $('.video-stream')[0].pause() : $('.video-stream')[0].play()
|
||||
break
|
||||
case "nextTrack":
|
||||
$('.next-button').click()
|
||||
break
|
||||
case "previousTrack":
|
||||
$('.previous-button').click()
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the Presence data and sends it back
|
||||
* to the background.js for further interaction
|
||||
*/
|
||||
async function updateData() {
|
||||
playback =
|
||||
$('.ytmusic-player-bar.title').text() != ""
|
||||
&& $('.video-stream')[0] != undefined
|
||||
&& !isNaN($('.video-stream')[0].duration)
|
||||
? true : false
|
||||
|
||||
//* If page has all required propertys
|
||||
if(playback) {
|
||||
songTitle = $('.ytmusic-player-bar.title').text()
|
||||
songAuthors = getAuthors()
|
||||
videoTimestamps = getTimestamps(Math.floor($('.video-stream')[0].currentTime), Math.floor($('.video-stream')[0].duration))
|
||||
playbackBoolean = !$('.video-stream')[0].paused
|
||||
smallImageKey = playbackBoolean ? 'play' : 'pause'
|
||||
smallImageText = playbackBoolean ? await getString("presence.playback.playing") : await getString("presence.playback.paused")
|
||||
|
||||
var data = {
|
||||
clientID: '463151177836658699',
|
||||
presenceData: {
|
||||
details: $('<div/>').html(songTitle).text(),
|
||||
state: $('<div/>').html(songAuthors).text(),
|
||||
largeImageKey: 'ytm_lg',
|
||||
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
|
||||
smallImageKey: smallImageKey,
|
||||
smallImageText: smallImageText,
|
||||
},
|
||||
trayTitle: $('<div/>').html(songTitle).text(),
|
||||
playback: playbackBoolean,
|
||||
service: 'YouTube Music'
|
||||
}
|
||||
|
||||
if(playbackBoolean) {
|
||||
data.presenceData.startTimestamp = videoTimestamps[0]
|
||||
data.presenceData.endTimestamp = videoTimestamps[1]
|
||||
} else {
|
||||
delete data.presenceData.startTimestamp
|
||||
delete data.presenceData.endTimestamp
|
||||
}
|
||||
|
||||
chrome.runtime.sendMessage({presence: data})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get authors of Song
|
||||
*/
|
||||
function getAuthors() {
|
||||
var songAuthors = [],
|
||||
songAuthorsString = ""
|
||||
|
||||
//* Extract authors as array
|
||||
$(".byline.ytmusic-player-bar").contents().each(function (index, item) {
|
||||
if (item.classList != undefined) {
|
||||
if (item.classList.contains("yt-simple-endpoint") == true) {
|
||||
songAuthors.push(item.innerHTML)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
//* If no authors found in previous method use this
|
||||
if (songAuthors.length == 0 || songAuthors.length == 1) {
|
||||
//* Clear old list
|
||||
songAuthors = []
|
||||
songAuthors.push($(".byline.ytmusic-player-bar").contents().first().text())
|
||||
}
|
||||
|
||||
//* Build Song autor string
|
||||
songAuthors.forEach((author, index, authors) => {
|
||||
if (index == 0)
|
||||
songAuthorsString = author;
|
||||
else if (index < authors.length - 2)
|
||||
songAuthorsString = songAuthorsString + ", " + author;
|
||||
else if (index < authors.length - 1) songAuthorsString = songAuthorsString + " and " + author;
|
||||
else songAuthorsString = songAuthorsString + " • " + author;
|
||||
});
|
||||
|
||||
return songAuthorsString
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
var playback = false,
|
||||
videoTitle,
|
||||
videoAuthor,
|
||||
videoTimestamps,
|
||||
playbackBoolean,
|
||||
smallImageKey,
|
||||
smallImageText,
|
||||
|
||||
lastPlaybackState = null,
|
||||
browsingStamp = Math.floor(Date.now()/1000)
|
||||
|
||||
/**
|
||||
* Handles Media Key controls
|
||||
* @param {data} data Data passed by socketConnector.js
|
||||
*/
|
||||
async function handleMediaKeys(data) {
|
||||
if(playback) {
|
||||
switch (data.mediaKeys) {
|
||||
case "pause":
|
||||
playbackBoolean ? $('.VideoContainer video')[0].pause() : $('.VideoContainer video')[0].play()
|
||||
break
|
||||
case "nextTrack":
|
||||
if($('.button-nfplayerNextEpisode') != null) $('.button-nfplayerNextEpisode').click()
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the Presence data and sends it back
|
||||
* to the background.js for further interaction
|
||||
*/
|
||||
async function updateData() {
|
||||
|
||||
playback =
|
||||
document.location.pathname.includes("/watch")
|
||||
&& $('.video-title h4').text() != ""
|
||||
&& $('.VideoContainer video')[0] != undefined
|
||||
&& !isNaN($('.VideoContainer video')[0].duration)
|
||||
? true : false
|
||||
|
||||
//* Browsing timestamp
|
||||
if(lastPlaybackState != playback) {
|
||||
lastPlaybackState = playback
|
||||
browsingStamp = Math.floor(Date.now()/1000)
|
||||
}
|
||||
|
||||
var data = {
|
||||
clientID: '499981204045430784',
|
||||
presenceData: {
|
||||
largeImageKey: 'nflix_lg',
|
||||
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
|
||||
smallImageKey: smallImageKey,
|
||||
smallImageText: smallImageText,
|
||||
},
|
||||
trayTitle: $('<div/>').html(videoTitle).text(),
|
||||
playback: playbackBoolean,
|
||||
service: 'Netflix'
|
||||
}
|
||||
|
||||
//* If page has all required propertys
|
||||
if(playback) {
|
||||
videoTitle = $('.video-title h4').text()
|
||||
videoTimestamps = getTimestamps(Math.floor($('.VideoContainer video')[0].currentTime), Math.floor($('.VideoContainer video')[0].duration))
|
||||
playbackBoolean = !$('.VideoContainer video')[0].paused
|
||||
smallImageKey = playbackBoolean ? 'play' : 'pause'
|
||||
smallImageText = playbackBoolean ? await getString("presence.playback.playing") : await getString("presence.playback.paused")
|
||||
|
||||
|
||||
if($('.video-title span').length > 0) {
|
||||
data.presenceData.details = $('<div/>').html(videoTitle).text()
|
||||
data.presenceData.state = $('.video-title span:first').text() + " " + $('.video-title span:last').text()
|
||||
} else {
|
||||
data.presenceData.details = await getString("presence.watching")
|
||||
data.presenceData.state = $('<div/>').html(videoTitle).text()
|
||||
}
|
||||
|
||||
if(playbackBoolean) {
|
||||
data.presenceData.startTimestamp = videoTimestamps[0]
|
||||
data.presenceData.endTimestamp = videoTimestamps[1]
|
||||
} else {
|
||||
delete data.presenceData.startTimestamp
|
||||
delete data.presenceData.endTimestamp
|
||||
}
|
||||
|
||||
} else {
|
||||
data.presenceData.details = await getString("presence.browsing")
|
||||
delete data.presenceData.state
|
||||
delete data.presenceData.smallImageKey
|
||||
data.presenceData.startTimestamp = browsingStamp
|
||||
//* Prevent presence from being cleared after 1 minute
|
||||
data.playback = true
|
||||
}
|
||||
chrome.runtime.sendMessage({presence: data})
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
var playback = false,
|
||||
videoTitle,
|
||||
videoAuthor,
|
||||
videoTimestamps,
|
||||
playbackBoolean,
|
||||
smallImageKey,
|
||||
smallImageText,
|
||||
urlForVideo,
|
||||
lastURL = null;
|
||||
|
||||
/**
|
||||
* Updates the Presence data and sends it back
|
||||
* to the background.js for further interaction
|
||||
*/
|
||||
async function updateData() {
|
||||
urlForVideo = document.location.href;
|
||||
|
||||
if (urlForVideo != lastURL) {
|
||||
lastURL = urlForVideo;
|
||||
startTimeStamp = Math.floor(Date.now() / 1000);
|
||||
}
|
||||
|
||||
//* If page has all required propertys
|
||||
if ($('.watching').get(0) != undefined) {
|
||||
videoTitle = $('.contentDetails .primary').html();
|
||||
videoAuthor = $('.watching').text().match('[0-9]*')[0] + ' ' + (await getString('presence.watching'));
|
||||
playbackBoolean = true;
|
||||
|
||||
var data = {
|
||||
clientID: '516742299355578380',
|
||||
presenceData: {
|
||||
details: $('<div/>').html(videoTitle).text(),
|
||||
state: $('<div/>').html(videoAuthor).text(),
|
||||
largeImageKey: 'rt_lg',
|
||||
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
|
||||
startTimestamp: startTimeStamp
|
||||
},
|
||||
trayTitle: $('<div/>').html(videoTitle).text(),
|
||||
playback: playbackBoolean,
|
||||
service: 'Rabb.it'
|
||||
};
|
||||
} else if (document.location.pathname == '/') {
|
||||
data = {
|
||||
clientID: '516742299355578380',
|
||||
presenceData: {
|
||||
details: await getString('presence.browsing'),
|
||||
largeImageKey: 'rt_lg',
|
||||
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
|
||||
startTimestamp: startTimeStamp
|
||||
},
|
||||
trayTitle: '',
|
||||
service: 'Rabbit',
|
||||
playback: true
|
||||
};
|
||||
}
|
||||
|
||||
console.log(data);
|
||||
chrome.runtime.sendMessage({ presence: data });
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
var playback = false,
|
||||
videoTitle,
|
||||
videoAuthor,
|
||||
videoTimestamps,
|
||||
playbackBoolean,
|
||||
smallImageKey,
|
||||
smallImageText,
|
||||
urlForVideo,
|
||||
lastURL = null;
|
||||
|
||||
/**
|
||||
* Handles Media Key controls
|
||||
* @param {data} data Data passed by socketConnector.js
|
||||
*/
|
||||
async function handleMediaKeys(data) {
|
||||
if (playback) {
|
||||
switch (data.mediaKeys) {
|
||||
case 'pause':
|
||||
playbackBoolean ? $('.player-video video')[0].pause() : $('.player-video video')[0].play();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the Presence data and sends it back
|
||||
* to the background.js for further interaction
|
||||
*/
|
||||
async function updateData() {
|
||||
urlForVideo = document.location.href;
|
||||
|
||||
playback = $('.player-video video')[0] != undefined && $('.tw-font-size-4') != '';
|
||||
|
||||
//* If page has all required propertys
|
||||
if (playback) {
|
||||
if (urlForVideo != lastURL) {
|
||||
lastURL = urlForVideo;
|
||||
startTimeStamp = Math.floor(Date.now() / 1000);
|
||||
}
|
||||
|
||||
videoTitle = $('.tw-ellipsis.tw-font-size-4.tw-line-height-body').text();
|
||||
videoAuthor = $('.channel-header__banner-toggle h5').text();
|
||||
playbackBoolean = !$('.player-video video').paused;
|
||||
smallImageKey = playbackBoolean ? 'play' : 'pause';
|
||||
smallImageText = playbackBoolean
|
||||
? await getString('presence.playback.playing')
|
||||
: await getString('presence.playback.paused');
|
||||
|
||||
var data = {
|
||||
clientID: '501021996336021504',
|
||||
presenceData: {
|
||||
details: $('<div/>').html(videoTitle).text(),
|
||||
state: $('<div/>').html(videoAuthor).text(),
|
||||
largeImageKey: 'twitch_lg',
|
||||
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
|
||||
smallImageKey: smallImageKey,
|
||||
smallImageText: smallImageText
|
||||
},
|
||||
trayTitle: $('<div/>').html(videoTitle).text(),
|
||||
playback: playbackBoolean,
|
||||
service: 'Twitch'
|
||||
};
|
||||
|
||||
if (playbackBoolean) {
|
||||
data.presenceData.startTimestamp = startTimeStamp;
|
||||
} else {
|
||||
delete data.presenceData.startTimestamp;
|
||||
}
|
||||
|
||||
chrome.runtime.sendMessage({ presence: data });
|
||||
}
|
||||
}
|
||||
@@ -1,100 +0,0 @@
|
||||
var playback = false,
|
||||
videoTitle,
|
||||
videoAuthor,
|
||||
videoTimestamps,
|
||||
playbackBoolean,
|
||||
liveBoolean,
|
||||
startTimestamp,
|
||||
smallImageKey,
|
||||
smallImageText;
|
||||
|
||||
/**
|
||||
* Handles Media Key controls
|
||||
* @param {data} data Data passed by socketConnector.js
|
||||
*/
|
||||
async function handleMediaKeys(data) {
|
||||
if (playback) {
|
||||
switch (data.mediaKeys) {
|
||||
case "pause":
|
||||
playbackBoolean
|
||||
? $(".video-stream")[0].pause()
|
||||
: $(".video-stream")[0].play();
|
||||
break;
|
||||
case "nextTrack":
|
||||
$(".ytp-next-button")[0].click();
|
||||
break;
|
||||
case "previousTrack":
|
||||
$(".ytp-prev-button")[0].click();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the Presence data and sends it back
|
||||
* to the background.js for further interaction
|
||||
*/
|
||||
async function updateData() {
|
||||
playback =
|
||||
document.location.pathname.includes("/watch") &&
|
||||
$(".ytd-video-primary-info-renderer .title").text() != "" &&
|
||||
$(".video-stream")[0] != undefined &&
|
||||
!isNaN($(".video-stream")[0].duration)
|
||||
? true
|
||||
: false;
|
||||
|
||||
//* If page has all required propertys
|
||||
if (playback) {
|
||||
if (!startTimestamp) startTimestamp = Math.floor(Date.now() / 1000);
|
||||
videoTitle = $(".ytd-video-primary-info-renderer .title").text();
|
||||
videoAuthor = document
|
||||
.querySelector("#upload-info .ytd-channel-name")
|
||||
.innerText.trim();
|
||||
videoTimestamps = getTimestamps(
|
||||
Math.floor($(".video-stream")[0].currentTime),
|
||||
Math.floor($(".video-stream")[0].duration)
|
||||
);
|
||||
playbackBoolean = !$(".video-stream")[0].paused;
|
||||
liveBoolean = Boolean($(".ytp-live")[0]);
|
||||
smallImageKey = playbackBoolean ? "play" : "pause";
|
||||
smallImageText = playbackBoolean
|
||||
? await getString("presence.playback.playing")
|
||||
: await getString("presence.playback.paused");
|
||||
|
||||
var data = {
|
||||
clientID: "463097721130188830",
|
||||
presenceData: {
|
||||
details: $("<div/>")
|
||||
.html(videoTitle)
|
||||
.text(),
|
||||
state: $("<div/>")
|
||||
.html(videoAuthor)
|
||||
.text(),
|
||||
largeImageKey: "yt_lg",
|
||||
largeImageText:
|
||||
chrome.runtime.getManifest().name +
|
||||
" V" +
|
||||
chrome.runtime.getManifest().version,
|
||||
smallImageKey: smallImageKey,
|
||||
smallImageText: smallImageText
|
||||
},
|
||||
trayTitle: $("<div/>")
|
||||
.html(videoTitle)
|
||||
.text(),
|
||||
playback: playbackBoolean,
|
||||
service: "YouTube"
|
||||
};
|
||||
|
||||
if (playbackBoolean) {
|
||||
data.presenceData.startTimestamp = liveBoolean
|
||||
? startTimestamp
|
||||
: videoTimestamps[0];
|
||||
if (!liveBoolean) data.presenceData.endTimestamp = videoTimestamps[1];
|
||||
} else {
|
||||
delete data.presenceData.startTimestamp;
|
||||
delete data.presenceData.endTimestamp;
|
||||
}
|
||||
|
||||
chrome.runtime.sendMessage({ presence: data });
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
$(document).ready(function() {
|
||||
setInterval(function() {
|
||||
if(document.location.hostname == "flex.aniflex.org"
|
||||
|| document.location.hostname == "www.mp4upload.com"
|
||||
|| document.location.hostname == "www.aniseason.tv"
|
||||
|| document.location.hostname == "www.mp4upload.com"
|
||||
|| document.location.hostname == "www.ani-stream.com"
|
||||
|| document.location.hostname == "openload.co"
|
||||
|| document.location.hostname == "mysembed.net"
|
||||
|| document.location.hostname == "www.rapidvideo.com"
|
||||
|| document.location.hostname == "fruithosts.net"
|
||||
|| document.location.hostname == "vidoza.net"
|
||||
|| document.location.hostname == "oload.fun"
|
||||
|| document.location.hostname == "streamango.com"
|
||||
|| document.location.hostname == "openload.co"
|
||||
|| document.location.hostname == "static.crunchyroll.com") {
|
||||
if($('video.jwplayer:first').get(0) != undefined && !isNaN($('video.jwplayer:first').get(0).duration)) {
|
||||
chrome.runtime.sendMessage({iframe_video: {curr: $('video.jwplayer:first').get(0).currentTime, dur: $('video.jwplayer:first').get(0).duration, paused: $('video.vjs-tech:first').get(0).paused}}, function(response) {});
|
||||
} else if($('video.vjs-tech:first').get(0) != undefined && !isNaN($('video.vjs-tech:first').get(0).duration)) {
|
||||
chrome.runtime.sendMessage({iframe_video: {curr: $('video.vjs-tech:first').get(0).currentTime, dur: $('video.vjs-tech:first').get(0).duration, paused: $('video.vjs-tech:first').get(0).paused}}, function(response) {});
|
||||
} else if($('video.jw-video:first').get(0) != undefined && !isNaN($('video.jw-video:first').get(0).duration)) {
|
||||
chrome.runtime.sendMessage({iframe_video: {curr: $('video.jw-video:first').get(0).currentTime, dur: $('video.jw-video:first').get(0).duration, paused: $('video.jw-video:first').get(0).paused}});
|
||||
} else if($('video.video-js:first').get(0) != undefined && !isNaN($('video.video-js:first').get(0).duration)) {
|
||||
chrome.runtime.sendMessage({iframe_video: {currTime: $('video.video-js:first').get(0).currentTime, dur: $('video.video-js:first').get(0).duration, paused: $('video.video-js:first').get(0).paused}}, function(response) {});
|
||||
}
|
||||
}
|
||||
}, 1000)
|
||||
})
|
||||
@@ -1,25 +0,0 @@
|
||||
$(document).ready(async function() {
|
||||
$('.PlikeThisProject').html((await getString("tab.installed.likeThisProject")).replace("{{github_link}}", '<a target="_blank" href="https://github.com/Timeraa/PreMiD">GitHub</a>'))
|
||||
|
||||
var hasNextChanged = true,
|
||||
index = 0
|
||||
while(hasNextChanged) {
|
||||
if(await getString("tab.updated.added" + index, false) != null) {
|
||||
var item = document.getElementById('WhatsNewList').appendChild(document.createElement('li'))
|
||||
item.innerHTML = await getString("tab.updated.added" + index)
|
||||
} else hasNextChanged = false;
|
||||
index++
|
||||
}
|
||||
|
||||
hasNextChanged = true
|
||||
index = 0
|
||||
while(hasNextChanged) {
|
||||
if(await getString("tab.updated.changed" + index, false) != null) {
|
||||
var item = document.getElementById('WhatChangedList').appendChild(document.createElement('li'))
|
||||
item.innerHTML = await getString("tab.updated.changed" + index)
|
||||
} else hasNextChanged = false;
|
||||
index++
|
||||
}
|
||||
})
|
||||
|
||||
$('.gotIt').click(function() { window.close()})
|
||||
2
Extension/js/util/jquery-3.3.1.min.js
vendored
@@ -1,70 +0,0 @@
|
||||
//* Define variables
|
||||
var availableLanguages = ["ar", "it", "en", "da", "de", "es", "fr", "he", "la", "nl", "pt_pt", "pt_br", "ru", "sv", "no"],
|
||||
currentLanguageFile = null,
|
||||
defaultLanguageFile = null,
|
||||
detectLanguage = chrome.i18n.getUILanguage().toLowerCase()
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} languageCode Language code to load file from
|
||||
*/
|
||||
async function loadLanguageFile(languageCode) {
|
||||
//* Load default Language file in case string is not in a language file
|
||||
defaultLanguageFile = await fetch(chrome.runtime.getURL('languages/en.json'))
|
||||
.then(response => response.json())
|
||||
.then(responseData => {
|
||||
return responseData
|
||||
})
|
||||
//* Load actual language file to try to get String from
|
||||
return await fetch(chrome.runtime.getURL('languages/' + languageCode + '.json'))
|
||||
.then(response => response.json())
|
||||
.then(responseData => {
|
||||
return responseData
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} term Term definition to get the string value of
|
||||
*/
|
||||
async function getString(term, returnError = true) {
|
||||
//* Load Language files if they are not set
|
||||
if((currentLanguageFile && defaultLanguageFile) == null) {
|
||||
//* Check if we have language xx in our available languages
|
||||
if(availableLanguages.includes(detectLanguage))
|
||||
//* Load and set file variable
|
||||
currentLanguageFile = await loadLanguageFile(detectLanguage);
|
||||
else
|
||||
//* Load and set file variable
|
||||
currentLanguageFile = await loadLanguageFile("en");
|
||||
}
|
||||
|
||||
//* Check if the term is NOT available in the user's language file
|
||||
if(!currentLanguageFile.hasOwnProperty(term)) {
|
||||
//* Return error if it couldn't be found in the default file as well
|
||||
if(!defaultLanguageFile.hasOwnProperty(term)) {
|
||||
if(returnError) console.error(`Could not find translation for "${term}"!`)
|
||||
return null;
|
||||
} else {
|
||||
//* Return needed term value
|
||||
return defaultLanguageFile[term]
|
||||
}
|
||||
} else {
|
||||
//* Return needed term value
|
||||
return currentLanguageFile[term]
|
||||
}
|
||||
}
|
||||
|
||||
//* Automatically translate everything with [term] attribute
|
||||
$(document).ready(translate)
|
||||
|
||||
/**
|
||||
* Translates all html tags with [term] attribute
|
||||
*/
|
||||
async function translate() {
|
||||
$('[term]:empty').each(async (index, element) => {
|
||||
element = $(element)
|
||||
element.html(await getString(element.attr("term")))
|
||||
});
|
||||
}
|
||||
6
Extension/js/util/materialize.min.js
vendored
7
Extension/js/util/socket.io-2.1.1.min.js
vendored
@@ -1,66 +0,0 @@
|
||||
var iframe_video = {dur: null, curr: null, paused: true}
|
||||
chrome.runtime.onMessage.addListener(function(data) {
|
||||
if(data.tabPriority)
|
||||
if(typeof updateData === "function")
|
||||
updateData();
|
||||
|
||||
if(data.mediaKeys)
|
||||
if(typeof handleMediaKeys === "function")
|
||||
handleMediaKeys(data)
|
||||
|
||||
if(!sessionStorage.getItem("tabPriority")) {
|
||||
sessionStorage.setItem("tabPriority", true)
|
||||
priorityMessage();
|
||||
}
|
||||
|
||||
if(!data.tabPriority) {
|
||||
sessionStorage.setItem("tabPriority", false)
|
||||
}
|
||||
|
||||
if(data.iframe_video != undefined)
|
||||
iframe_video = data.iframe_video
|
||||
})
|
||||
|
||||
function priorityMessage() {
|
||||
chrome.storage.sync.get(['options'], async function(result) {
|
||||
if(result.options.tabPriority) {
|
||||
if(result.options.darkTheme) {
|
||||
$(('<div id="premid-connectinfo" class="dark"><img draggable="false" src="' + chrome.runtime.getURL('icon.png') + '"><h1>' + chrome.runtime.getManifest().name + '</h1><h2>' + await getString("tabPriority.prioritized") + '</h2></div>')).appendTo('body')
|
||||
} else {
|
||||
$(('<div id="premid-connectinfo"><img draggable="false" src="' + chrome.runtime.getURL('icon.png') + '"><h1>' + chrome.runtime.getManifest().name + '</h1><h2>' + await getString("tabPriority.prioritized") + '</h2></div>')).appendTo('body')
|
||||
}
|
||||
|
||||
$('#premid-connectinfo h2').width(textWidth($('#premid-connectinfo h2'))+60)
|
||||
setTimeout(() => {
|
||||
$('#premid-connectinfo').remove()
|
||||
}, 5*1000)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate textWidth in PX
|
||||
* @returns Number
|
||||
*/
|
||||
function textWidth(element){
|
||||
var html_org = $(element).html();
|
||||
var html_calc = '<span>' + html_org + '</span>';
|
||||
$(element).html(html_calc);
|
||||
var width = $(element).find('span:first').width();
|
||||
$(element).html(html_org);
|
||||
return width;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get Timestamps
|
||||
* @param {Number} videoTime Song Time seconds
|
||||
* @param {Number} videoDuration Song Duration seconds
|
||||
*/
|
||||
function getTimestamps(videoTime, videoDuration) {
|
||||
var startTime = Date.now();
|
||||
var endTime =
|
||||
Math.floor(startTime / 1000) -
|
||||
videoTime +
|
||||
videoDuration;
|
||||
return [Math.floor(startTime/1000), endTime]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"شكرا لك لتنزيل PreMiD\n","tab.installed.subHeading.didInstallQuestion":"هل قمت بتنزيل التطبيق بعد؟","tab.installed.subHeading.notInstalled":"لا؟ تابع الخطوات التالية","tab.installed.instructions.download":"قم بتنزيل النسخة الاجدد من {{github_link}}","tab.installed.instructions.github":"مستودع GitHub الخاص بي","tab.installed.instructions.wait":"افتح المثبت وانتظر حتى يتم التثبيت","tab.installed.instructions.warnings":"","tab.installed.instructions.autostart":"","tab.installed.subHeading.ready":"","tab.installed.intro":"","tab.updated.heading":"","tab.updated.subHeading.whatsNew":"","tab.updated.subHeading.whatChanged":"","presence.playback.playing":"","presence.playback.paused":"","popup.tabs.options":"الاعدادات","popup.tabs.credits":"","popup.options.headings.general":"","popup.options.headings.presences":"","popup.options.enabled":"","popup.options.titleMenubar":"","popup.options.mediaControls":"","popup.options.checkForUpdates":"","popup.options.darkTheme":"","popup.options.systemStartup":"","presence.episode":"","presence.browsing":"","presence.watching":"","tab.installed.letsStart":"","tab.installed.getSupport":"","tab.installed.likeThisProject":"","tab.updated.gotIt":"","extension.description":"","popup.options.connectInfo":"","popup.error":"","popup.error.message":"","presence.lookingForAnime":"","tabPriority.prioritized":"","popup.options.tabPriority":"","tab.updated.changed0":"","tab.updated.changed1":"","tab.updated.changed2":"","tab.updated.added0":"","tab.updated.changed3":"","tab.updated.changed4":"","tab.updated.added1":"","tab.updated.added2":"","tab.updated.changed5":"","tab.updated.changed6":""}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Tak fordi du installerede PreMiD","tab.installed.subHeading.didInstallQuestion":"Har du installeret applikationen endnu?","tab.installed.subHeading.notInstalled":"Ikke? Følg disse trin:","tab.installed.instructions.download":"Download den seneste version fra {{github_link}}","tab.installed.instructions.github":"mit GitHub depot","tab.installed.instructions.wait":"Åben installatøren og vent til den er installeret","tab.installed.instructions.warnings":"Du modtager nok en advarsel om FireWall og SmartScreen (Jeg lover, det er ikke en virus)","tab.installed.instructions.autostart":"Applikationen vil starte automatisk, du kan tjekke dette ved at kigge i din proceslinje (Windows) eller din menubar (MacOS)","tab.installed.subHeading.ready":"Allerede? Du er klar!","tab.installed.intro":"Start ved at bruge en af vores understøttede services og nyd den søde smag af at være sej.","tab.updated.heading":"PreMiD er blevet opdateret!","tab.updated.subHeading.whatsNew":"Hvad er nyt?","tab.updated.subHeading.whatChanged":"Hvad er ændret?","presence.playback.playing":"Afspiller","presence.playback.paused":"Afspilning på pause","popup.tabs.options":"Indstillinger","popup.tabs.credits":"Kredit","popup.options.headings.general":"Generelt","popup.options.headings.presences":"Presences","popup.options.enabled":"Tændt","popup.options.titleMenubar":"Titel Menubar","popup.options.mediaControls":"Mediekontrol","popup.options.checkForUpdates":"Tjek for opdateringer","popup.options.darkTheme":"Mørkt Tema","popup.options.systemStartup":"System startup","presence.episode":"Episode {{episode}}","presence.browsing":"Browsing...","presence.watching":"Seere","tab.installed.letsStart":"Lad os begynde!","tab.installed.getSupport":"Få hjælp","tab.installed.likeThisProject":"Synes godt om dette projekt? Stjern det på {{github_link}}!","tab.updated.gotIt":"Forstået!","extension.description":"PreMiD tilføjer Discord Rich Presence integration, mediekontrol og meget mere til YouTube/YouTube Musik, Twitch etc...","popup.options.connectInfo":"Forbindelsesinformation","popup.error":"Fejl","popup.error.message":"Kunne ikke indlæse kredit","presence.lookingForAnime":"Søger efter Anime...","tabPriority.prioritized":"Fane prioteret","popup.options.tabPriority":"Fane Prioterings Info","tab.updated.changed0":"Komplet omskrivning af udvidelse","tab.updated.changed1":"Fane Priotering virker nu som det burde have gjort altid","tab.updated.changed2":"Dræbte ulækre insekter","tab.updated.added0":"Crunchyroll Understøttelse","tab.updated.changed3":"Netflix viser nu Ser \"Film Navn\" når film ses","tab.updated.changed4":"Mediekontrol knapper fikset","tab.updated.added1":"Aniflix Understøttelse","tab.updated.added2":"Fane Prioterings skift","tab.updated.changed5":"Oversættelsessystemseftersyn","tab.updated.changed6":"Fiksede kredit kune viste Engelsk fejlbesked"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Vielen Dank für das Installieren von PreMiD","tab.installed.subHeading.didInstallQuestion":"Hast du die Application schon installiert?","tab.installed.subHeading.notInstalled":"Nein? Folge diesen Schritten:","tab.installed.instructions.download":"Lade dir die neueste Version von {{github_link}} herunter","tab.installed.instructions.github":"meinem GitHub Repository","tab.installed.instructions.wait":"Öffne das Installationsprogramm und warte bis es installiert ist","tab.installed.instructions.warnings":"Möglicherweise bekommst du eine Warnung von deiner FireWall und SmartScreen (Es ist kein Virus. Das verspreche ich!)","tab.installed.instructions.autostart":"Die Application sollte automatisch starten. Du kannst dies mit einem Blick auf deine Taskbar (Windows) oder deine Menubar (Mac OS) überprüfen","tab.installed.subHeading.ready":"Ja? Jetzt bis du bereit!","tab.installed.intro":"Starte indem du einen unserer unterstützten services benutzt und genieße den süßen Geschmack von Coolness!","tab.updated.heading":"PreMiD wurde aktualisiert!","tab.updated.subHeading.whatsNew":"Was ist neu?","tab.updated.subHeading.whatChanged":"Was hat sich geändert?","presence.playback.playing":"Wiedergabe","presence.playback.paused":"Wiedergabe pausiert","popup.tabs.options":"Einstellungen","popup.tabs.credits":"Credits","popup.options.headings.general":"Generell","popup.options.headings.presences":"Presenzen","popup.options.enabled":"Aktiviert","popup.options.titleMenubar":"Titel Menubar","popup.options.mediaControls":"Medienkontrolle","popup.options.checkForUpdates":"Auf Updates überprüfen","popup.options.darkTheme":"Dunkles Farbschema","popup.options.systemStartup":"Systemstart","presence.episode":"Episode {{episode}}","presence.browsing":"Stöbert...","presence.watching":"Schaut","tab.installed.letsStart":"Lass uns loslegen!","tab.installed.getSupport":"Erhalte Support","tab.installed.likeThisProject":"Du magst das Projekt? Gib uns auf {{github_link}} einen Stern!","tab.updated.gotIt":"Verstanden!","extension.description":"PreMiD fügt Discord-Rich-Presence-Integration, Medienkontrolle und vieles mehr zu YouTube/YouTube Music, Twitch etc. hinzu...","popup.options.connectInfo":"Verbindungsinfo","popup.error":"Fehler","popup.error.message":"Konnte Credits nicht laden","presence.lookingForAnime":"Sucht Anime...","tabPriority.prioritized":"Tab priorisiert","popup.options.tabPriority":"Tab Priorität Info","tab.updated.changed0":"Kompletter recode der Erweiterung","tab.updated.changed1":"Tab Priorität funktioniert jetzt wie sie es schon immer sollte","tab.updated.changed2":"Nervige Bugs getötet","tab.updated.added0":"CrunchyRoll Support","tab.updated.changed3":"Netflix zeigt jetzt bei Filmen: Schaut \"Filmname\"","tab.updated.changed4":"Medienkontrolle gefixt","tab.updated.added1":"Aniflix Support","tab.updated.added2":"Tab Priorität Schalter","tab.updated.changed5":"Übersetzungssystem überarbeitet","tab.updated.changed6":"Englische Fehlermeldung in den Credits behoben"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Thank you for installing PreMiD","tab.installed.subHeading.didInstallQuestion":"Did you install the application yet?","tab.installed.subHeading.notInstalled":"No? Follow these steps:","tab.installed.instructions.download":"Download the latest version from {{github_link}}","tab.installed.instructions.github":"my GitHub repository","tab.installed.instructions.wait":"Open the installer and wait until it installed","tab.installed.instructions.warnings":"You may receive a warning about FireWall and SmartScreen (Its not a virus i promise!)","tab.installed.instructions.autostart":"The application should start automatically, you can check this by looking at your Taskbar (Windows) or your Menubar (MacOS)","tab.installed.subHeading.ready":"Yes? You are ready to go!","tab.installed.intro":"Start by using one of our supported services and enjoy the sweet taste of coolness!","tab.updated.heading":"PreMiD has been updated!","tab.updated.subHeading.whatsNew":"Whats new?","tab.updated.subHeading.whatChanged":"What changed?","presence.playback.playing":"Playing back","presence.playback.paused":"Playback paused","popup.tabs.options":"Options","popup.tabs.credits":"Credits","popup.options.headings.general":"General","popup.options.headings.presences":"Presences","popup.options.enabled":"Enabled","popup.options.titleMenubar":"Title Menubar","popup.options.mediaControls":"Media Controls","popup.options.checkForUpdates":"Check for updates","popup.options.darkTheme":"Dark Theme","popup.options.systemStartup":"System Startup","presence.episode":"Episode {{episode}}","presence.browsing":"Browsing...","presence.watching":"Watching","tab.installed.letsStart":"Let's Start!","tab.installed.getSupport":"Get Support","tab.installed.likeThisProject":"Like this project? Star it on {{github_link}}!","tab.updated.gotIt":"Got it!","extension.description":"PreMiD adds Discord Rich Presence integration, Media controls and much more to YouTube/YouTube Music, Twitch etc...","popup.options.connectInfo":"Connection Info","popup.error":"Error","popup.error.message":"Could not load credits","presence.lookingForAnime":"Searching for Anime...","tabPriority.prioritized":"Tab prioritized","popup.options.tabPriority":"Tab Priority Info","tab.updated.changed0":"Complete rewrite of extension","tab.updated.changed1":"Tab Priority now works how it should have been all the time","tab.updated.changed2":"Killed nasty bugs","tab.updated.added0":"Crunchyroll Support","tab.updated.changed3":"Netflix now shows Watching \"Movie Name\" when watching movies","tab.updated.changed4":"Media Control keys fixed","tab.updated.added1":"Aniflix Support","tab.updated.added2":"Tab Priority toggle","tab.updated.changed5":"Translation system overhaul","tab.updated.changed6":"Fixed credits only showing English error message"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Gracias por instalar PreMiD","tab.installed.subHeading.didInstallQuestion":"¿Ya has instalado la aplicación?","tab.installed.subHeading.notInstalled":"¿No? Sigue estos pasos:","tab.installed.instructions.download":"Descarga la versión mas reciente de {{github_link}}","tab.installed.instructions.github":"mi repositorio de GitHub","tab.installed.instructions.wait":"Abre el instalador y espera hasta que se instale","tab.installed.instructions.warnings":"Puede que recibas una alerta del FireWall o de SmartScreen (¡No es un virus lo prometo!)","tab.installed.instructions.autostart":"La aplicación debería iniciarse automáticamente, puedes comprobarlo en el Administrador de Tareas (Windows) o tu Monitor de Actividad(MacOS)","tab.installed.subHeading.ready":"¿Si? ¡Está todo listo!","tab.installed.intro":"¡Empieza usando uno de nuestros servicios soportados y disfruta del dulce sabor de tener estilo!","tab.updated.heading":"¡PreMiD ha sido actualizado!","tab.updated.subHeading.whatsNew":"¿Que novedades hay?","tab.updated.subHeading.whatChanged":"¿Que ha cambiado?","presence.playback.playing":"Reproduciendo","presence.playback.paused":"Reproducción pausada","popup.tabs.options":"Opciones","popup.tabs.credits":"Créditos","popup.options.headings.general":"General","popup.options.headings.presences":"Presencias","popup.options.enabled":"Habilitado","popup.options.titleMenubar":"Titulo de Barra de menú","popup.options.mediaControls":"Controles Multimedia","popup.options.checkForUpdates":"Comprobar actualizaciones","popup.options.darkTheme":"Tema Oscuro","popup.options.systemStartup":"Iniciar con el Sistema","presence.episode":"Episodio {{episode}}","presence.browsing":"Navegando...","presence.watching":"Viendo","tab.installed.letsStart":"¡Empecemos!","tab.installed.getSupport":"Necesito Ayuda","tab.installed.likeThisProject":"¿Te gusta este proyecto? ¡Dale una estrella en {{github_link}}!","tab.updated.gotIt":"¡Entendido!","extension.description":"PreMiD agrega integración de Presencia rica de discord, Controles Multimedia y mucho mas a Youtube/Youtube Music, Twitch etc...","popup.options.connectInfo":"Información de la conexión","popup.error":"Error","popup.error.message":"No se pudieron cargar los créditos","presence.lookingForAnime":"Buscando por Anime...","tabPriority.prioritized":"Pestaña priorizada","popup.options.tabPriority":"Información sobre la Pestaña Priorizada","tab.updated.changed0":"Extensión reescrita completamente","tab.updated.changed1":"La Pestaña de Prioridad ahora funciona como siempre debió hacerlo","tab.updated.changed2":"Arreglados algunos bugs","tab.updated.added0":"Soporte para Crunchyroll","tab.updated.changed3":"Netflix ahora muestra Viendo \"Nombre de la película\" cuando ves películas","tab.updated.changed4":"Teclas de Control Multimedia arregladas","tab.updated.added1":"Soporte para Aniflix","tab.updated.added2":"Interruptor de la Pestaña de Prioridad","tab.updated.changed5":"Revisión del sistema de traducción","tab.updated.changed6":"Solucionado error que muestra en los créditos un mensaje de error en Inglés"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Merci d'avoir installé PreMiD","tab.installed.subHeading.didInstallQuestion":"Avez-vous déjà installé l'application ?","tab.installed.subHeading.notInstalled":"Non ? Suivez ces étapes :","tab.installed.instructions.download":"Téléchargez la dernière version depuis $1","tab.installed.instructions.github":"mon dépôt GitHub","tab.installed.instructions.wait":"Ouvrez l'installateur et attendez la fin de l'installation","tab.installed.instructions.warnings":"Vous pourriez recevoir un avertissement du pare-feu ou de SmartScreen (je promets que ce n'est pas un virus)","tab.installed.instructions.autostart":"L'application devrait démarrer automatiquement, vous pouvez le vérifier en regardant votre barre des tâches (Windows) ou votre barre de menu (MacOS)","tab.installed.subHeading.ready":"Oui ? Vous êtes prêts à décoller !","tab.installed.intro":"Commencez par regarder une vidéo sur YouTube, regarder vos streamers favoris sur Twitch, regarder vos animes préférés sur KissAnime ou JKAnime, peut-être même Netflix... Qui sait ?<br>Ou vous pouvez simplement écouter vos musiques préférées sur SoundCloud et YouTube Music. Les paramètres peuvent êtres accédés en cliquant sur l'icône PreMiD dans votre navigateur.","tab.updated.heading":"PreMiD a été mis à jour !","tab.updated.subHeading.whatsNew":"Quoi de neuf ?","tab.updated.subHeading.whatChanged":"Qu'est-ce qui a changé ?","presence.playback.playing":"Lecture","presence.playback.paused":"Lecture en pause","popup.tabs.options":"Options","popup.tabs.credits":"Crédits","popup.options.headings.general":"Général","popup.options.headings.presences":"Présences","popup.options.enabled":"Activé","popup.options.titleMenubar":"","popup.options.mediaControls":"Commandes multimédias","popup.options.checkForUpdates":"Rechercher des mises à jour","popup.options.darkTheme":"Thème Sombre","popup.options.systemStartup":"Démarrage du système","presence.episode":"Épisode","presence.browsing":"En train de naviguer...","presence.watching":"en train de regarder","tab.installed.letsStart":"Commençons!","tab.installed.getSupport":"Obtenir de l'aide","tab.installed.likeThisProject":"","tab.updated.gotIt":"","extension.description":"PreMiD ajoute l'intégration Discord Rich Presence, les commandes multimédias et bien plus encore à YouTube/YouTube Music, Twitch, etc...","popup.options.connectInfo":"Informations de connexion","popup.error":"Erreur","popup.error.message":"Impossible de charger les crédits","presence.lookingForAnime":"En attente d'Anime...","tabPriority.prioritized":"","popup.options.tabPriority":"","tab.updated.changed0":"","tab.updated.changed1":"","tab.updated.changed2":"","tab.updated.added0":"","tab.updated.changed3":"","tab.updated.changed4":"","tab.updated.added1":"","tab.updated.added2":"","tab.updated.changed5":"","tab.updated.changed6":""}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"תודה לך שהורדת את PreMiD","tab.installed.subHeading.didInstallQuestion":"כבר הורדת את התוכנה?\n","tab.installed.subHeading.notInstalled":"לא? אם כך תעקוב אחרי השלבים הבאים:","tab.installed.instructions.download":"הורד את הגרסה העדכנית ביותר ב1$ {{github_link}}","tab.installed.instructions.github":"המאגר GitHub שלי","tab.installed.instructions.wait":"פתח את ההתקנה וחכה עד שזה יהיה מוכן","tab.installed.instructions.warnings":"יש סיכוי שתקבל אזהרה על FireWall וSmartScreen (זה לא וירוס, אני מבטיח)","tab.installed.instructions.autostart":"התוכנה אמורה להתכיל אוטומטית, אתה יכול לבדוק את זה בכך שתסתכל על הTaskbar או על ה Menubar ","tab.installed.subHeading.ready":"כן? אז אתה מוכן להתחיל!","tab.installed.intro":"התחל בכך שתצפה בסרטונים בYouTube, צפה בסטרימים האהובים עליך בTwitch, צפה באנימות האהובות עליך בKissAnime או JKAnime, אפילו אולי Netflix... מי יודע<br>\nאו שתקשיב לשירים האהובים עליך בSoundCloud או בYouTube Music. \nכדי למצוא את ההגדרות לחצו על האייקון של PreMiD בדפדפן שלכם","tab.updated.heading":"PreMiD עודכן!","tab.updated.subHeading.whatsNew":"מה חדש?","tab.updated.subHeading.whatChanged":"מה השתנה?","presence.playback.playing":"מפעיל מחדש","presence.playback.paused":"Playback הופסק","popup.tabs.options":"הגדרות","popup.tabs.credits":"תודות","popup.options.headings.general":"כללי","popup.options.headings.presences":"הצגות","popup.options.enabled":"דלוק","popup.options.titleMenubar":"Title Menubar (Mac OS only)","popup.options.mediaControls":"הגדרות מדיה","popup.options.checkForUpdates":"בדוק עדכונים","popup.options.darkTheme":"רקע שחור","popup.options.systemStartup":"הדלקת System","presence.episode":"פרק {{episode}}","presence.browsing":"גולש..","presence.watching":"צופה","tab.installed.letsStart":"בואו נתחיל!","tab.installed.getSupport":"קבל תמיכה","tab.installed.likeThisProject":"אוהב את הפרוייקט הזה? תשפר אותו רק בשביל {{github_link}}!","tab.updated.gotIt":"הבנתי!","extension.description":"PreMiD מוסיפה אינטגרציית Discord Rich Presence, הגדרות מדיה ועוד הרבה לYouTube/YouTube Music, Twitch ועוד..\n","popup.options.connectInfo":"אודות התחברות","popup.error":"שגיאה","popup.error.message":"לא היה ניתן לטעון את ההשראים","presence.lookingForAnime":"מחפש אחר אנימה...","tabPriority.prioritized":"עדיפות כרטיסייה","popup.options.tabPriority":"עדיפות כרטיסייה","tab.updated.changed0":"סיים את הרישום מחדש של התוסף","tab.updated.changed1":"עדיפות כרטיסיות עכשיו עובד איך שזה היה צריך לעבוד כל הזמן ","tab.updated.changed2":"בעיות מוזרות הושמטו","tab.updated.added0":"Crunchyroll תמיכה","tab.updated.changed3":"Netflix עכשיו מראה - \"Watching שם הסרט\" מתי שצופים בסרטים","tab.updated.changed4":"כפתורי הגדרות המדיה תוקנו","tab.updated.added1":"Aniflix תמיכה","tab.updated.added2":"החלפה בין עדיפות הכרטיסייה","tab.updated.changed5":"תרגום מערכת שיפוץ","tab.updated.changed6":"תורמים עכשיו מראים רק הודעות שגיאות באנגלית"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Grazie per aver installato PreMiD","tab.installed.subHeading.didInstallQuestion":"Hai già installato l'applicazione?","tab.installed.subHeading.notInstalled":"No? Segui questi passaggi:","tab.installed.instructions.download":"Scarica l'ultima versione da {{github_link}}","tab.installed.instructions.github":"la mia repository di GitHub","tab.installed.instructions.wait":"Apri l'installer e aspetta fino al termine dell'installazione","tab.installed.instructions.warnings":"Potresti ricevere un'avviso per il FireWall e lo SmartScreen (Non è un virus, lo prometto!)","tab.installed.instructions.autostart":"L'applicazione dovrebbe aprirsi automaticamente, puoi controllarlo guardando nella tua Barra delle Applicazioni (Windows) o nella Barra dei Menu (MacOS)","tab.installed.subHeading.ready":"Si? Sei pronto per partire!","tab.installed.intro":"Inizia guardando un video su YouTube, i tuoi streamer preferiti su Twitch, Guarda i tuoi anime preferiti su KissAnime o JKAnime, forse pure su Netflix... Chissà? <br>Oppure senti le tue canzoni preferite su SoundCloud e YouTube Music. Le impostazioni possono essere trovate cliccando l'icona di PreMiD nel tuo browser.","tab.updated.heading":"PreMiD è stato aggiornato!","tab.updated.subHeading.whatsNew":"Che c'è di nuovo?","tab.updated.subHeading.whatChanged":"Cosa è cambiato?","presence.playback.playing":"Riproducendo","presence.playback.paused":"Playback in pausa","popup.tabs.options":"Opzioni","popup.tabs.credits":"Crediti","popup.options.headings.general":"Generale","popup.options.headings.presences":"Presences","popup.options.enabled":"Attivato","popup.options.titleMenubar":"Titoli Barra dei Menu","popup.options.mediaControls":"Controlli Multimediali","popup.options.checkForUpdates":"Cerca aggiornamenti","popup.options.darkTheme":"Tema Scuro","popup.options.systemStartup":"Avvio Sistema","presence.episode":"Episodio {{episodio}}","presence.browsing":"Navigando...","presence.watching":"Guardando","tab.installed.letsStart":"Iniziamo!","tab.installed.getSupport":"Ottieni aiuto","tab.installed.likeThisProject":"Ti piace questo progetto? Valutalo su {{github_link}}","tab.updated.gotIt":"Capito!","extension.description":"PreMiD aggiunge l'integrazione della Dircord Rich Presence, controlli multimediali e molto altro ancora su YouTube/YouTube Music, Twitch ecc...","popup.options.connectInfo":"Informazioni Connessione","popup.error":"Errore","popup.error.message":"Crediti non caricati","presence.lookingForAnime":"Cercando Anime...","tabPriority.prioritized":"Scheda con priorità","popup.options.tabPriority":"Informazioni Priorità Scheda","tab.updated.changed0":"Completa riscrittura dell'estensione","tab.updated.changed1":"Priorità scheda ora funziona come avrebbe dovuto fin dall'inizio","tab.updated.changed2":"Sterminati sgradevoli bug","tab.updated.added0":"Supporto Crunchyroll","tab.updated.changed3":"Netflix ora mostra Guardando \"Nome Film\" mentre si guardano film","tab.updated.changed4":"Controlli tasti multimediali corretti","tab.updated.added1":"Supporto Aniflix","tab.updated.added2":"Rimuovi Priorità Scheda","tab.updated.changed5":"Sistema di traduzione revisionato","tab.updated.changed6":"Corretto l'errore che mostrava il messaggio di errore solo in Inglese nei crediti"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"ありがとございます","tab.installed.subHeading.didInstallQuestion":"","tab.installed.subHeading.notInstalled":"","tab.installed.instructions.download":"","tab.installed.instructions.github":"","tab.installed.instructions.wait":"","tab.installed.instructions.warnings":"","tab.installed.instructions.autostart":"","tab.installed.subHeading.ready":"","tab.installed.intro":"","tab.updated.heading":"","tab.updated.subHeading.whatsNew":"","tab.updated.subHeading.whatChanged":"","presence.playback.playing":"","presence.playback.paused":"","popup.tabs.options":"","popup.tabs.credits":"","popup.options.headings.general":"","popup.options.headings.presences":"","popup.options.enabled":"","popup.options.titleMenubar":"","popup.options.mediaControls":"","popup.options.checkForUpdates":"","popup.options.darkTheme":"","popup.options.systemStartup":"","presence.episode":"","presence.browsing":"","presence.watching":"","tab.installed.letsStart":"","tab.installed.getSupport":"","tab.installed.likeThisProject":"","tab.updated.gotIt":"","extension.description":"","popup.options.connectInfo":"","popup.error":"","popup.error.message":"","presence.lookingForAnime":"","tabPriority.prioritized":"","popup.options.tabPriority":"","tab.updated.changed0":"","tab.updated.changed1":"","tab.updated.changed2":"","tab.updated.added0":"","tab.updated.changed3":"","tab.updated.changed4":"","tab.updated.added1":"","tab.updated.added2":"","tab.updated.changed5":"","tab.updated.changed6":""}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"","tab.installed.subHeading.didInstallQuestion":"","tab.installed.subHeading.notInstalled":"","tab.installed.instructions.download":"","tab.installed.instructions.github":"","tab.installed.instructions.wait":"","tab.installed.instructions.warnings":"","tab.installed.instructions.autostart":"","tab.installed.subHeading.ready":"","tab.installed.intro":"","tab.updated.heading":"","tab.updated.subHeading.whatsNew":"","tab.updated.subHeading.whatChanged":"","presence.playback.playing":"","presence.playback.paused":"","popup.tabs.options":"","popup.tabs.credits":"","popup.options.headings.general":"","popup.options.headings.presences":"","popup.options.enabled":"","popup.options.titleMenubar":"","popup.options.mediaControls":"","popup.options.checkForUpdates":"","popup.options.darkTheme":"","popup.options.systemStartup":"","presence.episode":"","presence.browsing":"","presence.watching":"","tab.installed.letsStart":"","tab.installed.getSupport":"","tab.installed.likeThisProject":"","tab.updated.gotIt":"","extension.description":"","popup.options.connectInfo":"","popup.error":"","popup.error.message":"","presence.lookingForAnime":"","tabPriority.prioritized":"","popup.options.tabPriority":"","tab.updated.changed0":"","tab.updated.changed1":"","tab.updated.changed2":"","tab.updated.added0":"","tab.updated.changed3":"","tab.updated.changed4":"","tab.updated.added1":"","tab.updated.added2":"","tab.updated.changed5":"","tab.updated.changed6":""}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Gratias ago YT Presence instruere","tab.installed.subHeading.didInstallQuestion":"Iamne usum instruxisti","tab.installed.subHeading.notInstalled":"Nonne est? Obtempera ii gradi","tab.installed.instructions.download":"Instruere suprema forma a $1","tab.installed.instructions.github":"GitHub logium meum","tab.installed.instructions.wait":"Aperi instruens et exspecta dum instruxit","tab.installed.instructions.warnings":"Admonitum super FireWall et SmartScreen accipere potes (Virus non est, promitto)","tab.installed.instructions.autostart":"Usus statim incipere debet, id per optutu ad regula initii (Windows et MacOS) tua examinare potes","tab.installed.subHeading.ready":"Enimne? Incohare potes!","tab.installed.intro":"Incipe per video spectante in YouTube, per streamer amari spectante in Twitch, fortasse etiam Netflix... quis scit? Aut carmina optima in SoundCloud et YouTube Music audis.","tab.updated.heading":"PreMiD corrigam est!","tab.updated.subHeading.whatsNew":"Quid nove est?","tab.updated.subHeading.whatChanged":"Quid mutatum est?","presence.playback.playing":"Canens rursus","presence.playback.paused":"Canens rursus intermissum","popup.tabs.options":"Investitura","popup.tabs.credits":"Quis id facit","popup.options.headings.general":"Communis","popup.options.headings.presences":"Salus","popup.options.enabled":"Activus","popup.options.titleMenubar":"Indicium","popup.options.mediaControls":"Media gubernatio","popup.options.checkForUpdates":"Quaerens correctiones","popup.options.darkTheme":"Niger","popup.options.systemStartup":"Incipens ad disciplina initium","presence.episode":"Series","presence.browsing":"Inquirens...","presence.watching":"spectat","tab.installed.letsStart":"Initium!","tab.installed.getSupport":"Auxilium nancisci","tab.installed.likeThisProject":"Id amas? Largi {{github_link}}!","tab.updated.gotIt":"","extension.description":"","popup.options.connectInfo":"","popup.error":"","popup.error.message":"","presence.lookingForAnime":"","tabPriority.prioritized":"","popup.options.tabPriority":"","tab.updated.changed0":"","tab.updated.changed1":"","tab.updated.changed2":"","tab.updated.added0":"","tab.updated.changed3":"","tab.updated.changed4":"","tab.updated.added1":"","tab.updated.added2":"","tab.updated.changed5":"","tab.updated.changed6":""}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Bedankt voor het installeren van PreMiD","tab.installed.subHeading.didInstallQuestion":"Heb je de applicatie al geïnstalleerd?","tab.installed.subHeading.notInstalled":"Zo niet? Volg deze stappen:","tab.installed.instructions.download":"Download de nieuwste versie vanaf $1","tab.installed.instructions.github":"mijn repository","tab.installed.instructions.wait":"Open het installatieprogramma en wacht totdat het is geïnstalleerd","tab.installed.instructions.warnings":"U ontvangt mogelijk een waarschuwing over FireWall en SmartScreen (het is geen virus dat beloof ik)","tab.installed.instructions.autostart":"De applicatie zou automatisch moeten starten, u kunt dit controleren door te kijken naar uw taakbalk (Windows) of uw menubalk (MacOS)","tab.installed.subHeading.ready":"Ja? Je bent klaar om te beginnen!","tab.installed.intro":"Begin met het bekijken van een video op YouTube, het bekijken van je favoriete streamers op Twitch, Bekijk je favoriete animaties op KissAnime of JKAnime, misschien zelfs Netflix ... Wie weet?<br>Of je luistert gewoon naar je favoriete nummers op SoundCloud en YouTube Music. Instellingen kunnen worden gevonden door op het pictogram PreMiD in uw browser te klikken.","tab.updated.heading":"PreMiD is bijgewerkt!","tab.updated.subHeading.whatsNew":"Wat is er nieuw?","tab.updated.subHeading.whatChanged":"Wat is er veranderd?","presence.playback.playing":"Afspelen","presence.playback.paused":"Afspelen gepauzeerd","popup.tabs.options":"Opties","popup.tabs.credits":"Credits","popup.options.headings.general":"Algemeen","popup.options.headings.presences":"Presences","popup.options.enabled":"Ingeschakeld","popup.options.titleMenubar":"Titel Menubar","popup.options.mediaControls":"Mediabediening","popup.options.checkForUpdates":"Controleer op updates","popup.options.darkTheme":"Donker Thema","popup.options.systemStartup":"Sys","presence.episode":"Aflevering","presence.browsing":"Browsen...","presence.watching":"Aan het kijken","tab.installed.letsStart":"Laten we beginnen!","tab.installed.getSupport":"Krijg ondersteuning","tab.installed.likeThisProject":"Vind je dit project leuk? Ster het op {{github_link}}!","tab.updated.gotIt":"Begrepen!","extension.description":"PreMiD voegt Discord Rich Presence-integratie, mediabediening en nog veel meer toe aan YouTube / YouTube Music, Twitch enz.","popup.options.connectInfo":"Verbindingsinformatie","popup.error":"Foutmelding","popup.error.message":"Kan credits niet laden","presence.lookingForAnime":"","tabPriority.prioritized":"","popup.options.tabPriority":"","tab.updated.changed0":"","tab.updated.changed1":"","tab.updated.changed2":"","tab.updated.added0":"","tab.updated.changed3":"","tab.updated.changed4":"","tab.updated.added1":"","tab.updated.added2":"","tab.updated.changed5":"","tab.updated.changed6":""}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Takk for at du installerte PreMiD","tab.installed.subHeading.didInstallQuestion":"Har du installert applikasjonen enda?","tab.installed.subHeading.notInstalled":"Ikke? Følg disse trinnene:","tab.installed.instructions.download":"Last ned den nyeste versjonen fra $1","tab.installed.instructions.github":"mitt GitHub repository","tab.installed.instructions.wait":"Åpne installasjonsprogrammet og vent til den er ferdig med å installere","tab.installed.instructions.warnings":"Det kan hende at du får en advarsel fra Brannmuren eller SmartScreen (Det er ikke et virus, jeg lover!)","tab.installed.instructions.autostart":"Applikasjonen bør starte automatisk, du kan sjekke om den har gjort dette ved å sjekke...","tab.installed.subHeading.ready":"Ja? Da er du klar til å bruke PreMiD","tab.installed.intro":"Start ved å bruke en av våre støttede tjenester og nyt kulhetsfølelsen","tab.updated.heading":"PreMiD har blitt oppdatert","tab.updated.subHeading.whatsNew":"Hva er nytt?","tab.updated.subHeading.whatChanged":"Hva har endret seg?","presence.playback.playing":"Spiller av","presence.playback.paused":"Avspilling pauset","popup.tabs.options":"Alternativer","popup.tabs.credits":"Bidragsytere","popup.options.headings.general":"Generelt","popup.options.headings.presences":"Presences","popup.options.enabled":"Aktivert","popup.options.titleMenubar":"Tittel Menylinje","popup.options.mediaControls":"Mediakontroll","popup.options.checkForUpdates":"Sjekk etter oppdatering","popup.options.darkTheme":"Mørkt Tema","popup.options.systemStartup":"Start ved S","presence.episode":"Episode","presence.browsing":"Surfer på...","presence.watching":"ser på","tab.installed.letsStart":"La oss komme igang","tab.installed.getSupport":"Få Hjelp","tab.installed.likeThisProject":"Liker du prosjektet? Gi det en stjerne på {{github_link}}","tab.updated.gotIt":"Ok","extension.description":"PreMiD gir deg Discord Rich Presence integrasjon, Mediakontroller og mye mer for Youtube/Youtube Music, Twitch osv...","popup.options.connectInfo":"Tilkoblingsinformasjon","popup.error":"Feil","popup.error.message":"Kunne ikke laste inn listen over bidragsytere","presence.lookingForAnime":"Leter etter Anime","tabPriority.prioritized":"Fane prioritert","popup.options.tabPriority":"Faneprioriteringsinfo","tab.updated.changed0":"Komplett omskriving av utvidelsen","tab.updated.changed1":"Faneprioritering fungerer nå sånn som det burde ha gjort hele tiden","tab.updated.changed2":"Fjernet feil","tab.updated.added0":"Støtte for Crunchyroll","tab.updated.changed3":"Netflix viser nå Ser på \"Filmnavn\" når man ser på filmer","tab.updated.changed4":"Mediekontrollknapper fikset","tab.updated.added1":"Støtte for Aniflix","tab.updated.added2":"Skru av/på faneprioritering","tab.updated.changed5":"Endret oversetningssystemet","tab.updated.changed6":"Fikset problem hvor bidragsytervinduet viste feilmelding på engelsk"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Obrigado por instalar o PreMiD","tab.installed.subHeading.didInstallQuestion":"Você já instalou o aplicativo?","tab.installed.subHeading.notInstalled":"Não? Siga estás etapas:","tab.installed.instructions.download":"Baixe a ultima versão de {{github_link}}","tab.installed.instructions.github":"meu repositório no GitHub","tab.installed.instructions.wait":"Abra o instalador e aguarde até que ele seja instalado","tab.installed.instructions.warnings":"Você provavelmente pode receber um aviso do FireWall e/ou SmartScreen (não é um vírus eu prometo!)","tab.installed.instructions.autostart":"A aplicação pode iniciar automaticamente, você pode checar isso na sua TaskBar (Windows) ou na sua Menubar (MacOS)","tab.installed.subHeading.ready":"Sim? Você está pronto pra começar!","tab.installed.intro":"Comece usando um dos nossos serviços suportados e aproveite o gosto de ser maneiro!","tab.updated.heading":"PreMiD foi atualizado!","tab.updated.subHeading.whatsNew":"O que há de novo?","tab.updated.subHeading.whatChanged":"O que mudou?","presence.playback.playing":"Tocando","presence.playback.paused":"Pausado","popup.tabs.options":"Opções","popup.tabs.credits":"Créditos","popup.options.headings.general":"Geral","popup.options.headings.presences":"Presenças","popup.options.enabled":"Ativado","popup.options.titleMenubar":"Título Menubar","popup.options.mediaControls":"Controles de Mídia","popup.options.checkForUpdates":"Checar por atualizações","popup.options.darkTheme":"Modo escuro","popup.options.systemStartup":"Iniciar com o Sistema","presence.episode":"Episódio {{episode}}","presence.browsing":"Procurando...","presence.watching":"Assistindo","tab.installed.letsStart":"Vamos começar!","tab.installed.getSupport":"Receba Suporte","tab.installed.likeThisProject":"Gostou desse projeto? De uma estrela no {{github_link}}!","tab.updated.gotIt":"Consegui!","extension.description":"PreMiD adiciona Integração do Discord Rich Presence, Controles de Mídia e muito mais para o Youtube/Youtube Music, Twitch etc...","popup.options.connectInfo":"Informação da Conexão","popup.error":"Erro","popup.error.message":"Não foi possível carregar os créditos","presence.lookingForAnime":"Procurando pelo Anime...","tabPriority.prioritized":"Aba priorizada","popup.options.tabPriority":"Informações da Prioridade de Aba","tab.updated.changed0":"Reescrita completa da extensão","tab.updated.changed1":"Prioridade de Aba agora funciona como deveria ter sido o tempo todo","tab.updated.changed2":"Matou bugs desagradáveis","tab.updated.added0":"Suporte ao Crunchyroll","tab.updated.changed3":"Netflix agora mostra assistindo \"Movie Name\" ao assistir filmes","tab.updated.changed4":"Teclas do controle de mídia corrigidos","tab.updated.added1":"Suporte ao Aniflix","tab.updated.added2":"Alterar Prioridade de Aba","tab.updated.changed5":"Revisão do sistema de tradução","tab.updated.changed6":"Corrigido os créditos mostrando apenas mensagem de erro em inglês"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Obrigado por instalares PreMiD","tab.installed.subHeading.didInstallQuestion":"Já instalas-te a aplicação?","tab.installed.subHeading.notInstalled":"Não? Segue estes passos:","tab.installed.instructions.download":"Baixa a ultima versão apartir de $1","tab.installed.instructions.github":"o meu repositorio do GitHub","tab.installed.instructions.wait":"Abre o instalador e espera","tab.installed.instructions.warnings":"Tu podes receber um aviso do FireWall ou SmartScreen ( Não é um vírus eu prometo! )","tab.installed.instructions.autostart":"O aplicativo deve iniciar automaticamente, tu podes verificar isso olhando para a tua barra de tarefas (Windows) ou da tua barra de menu (MacOS)","tab.installed.subHeading.ready":"Sim? Então estas pronto para ir!","tab.installed.intro":"Começa a usar um dos nossos serviços suportados e aproveita o doce sabor da frieza!","tab.updated.heading":"PreMiD foi atualizado!","tab.updated.subHeading.whatsNew":"O que há de novo?","tab.updated.subHeading.whatChanged":"O que mudou?","presence.playback.playing":"A tocar","presence.playback.paused":"Em pausa","popup.tabs.options":"Opções","popup.tabs.credits":"Créditos","popup.options.headings.general":"General","popup.options.headings.presences":"Presenças","popup.options.enabled":"Ativado","popup.options.titleMenubar":"Título Menubar","popup.options.mediaControls":"Controles de Mídia","popup.options.checkForUpdates":"Verificar por atualizações","popup.options.darkTheme":"Tema escuro","popup.options.systemStartup":"Inicializar com o sistema","presence.episode":"Episódio","presence.browsing":"A pesquisar...","presence.watching":"a vêr","tab.installed.letsStart":"Vamos Começar!","tab.installed.getSupport":"Receba suporte","tab.installed.likeThisProject":"Gostas deste projeto? Apoia com {{github_link}}!","tab.updated.gotIt":"Consegui!","extension.description":"O PreMiD adiciona uma integração com o Discord Rich Presence, Controles de Mídia e muito mais para YouTube/YouTube Music, Twitch etc..","popup.options.connectInfo":"Informação de Conexão","popup.error":"Erro","popup.error.message":"Não possível carregar os créditos","presence.lookingForAnime":"A Procurar Animes...","tabPriority.prioritized":"Tab priorizada","popup.options.tabPriority":"Tabela Informações prioritárias","tab.updated.changed0":"Reescrita completa da extensão","tab.updated.changed1":"Tab Priority agora funciona como deveria ter funcionado o tempo todo","tab.updated.changed2":"Bugs desagradáveis corrigidos","tab.updated.added0":"Crunchyroll Supporte","tab.updated.changed3":"A Netflix agora mostra assistindo \"Nome do Filme\" ao assistir filmes","tab.updated.changed4":"Teclas de controle de mídia fixas","tab.updated.added1":"Aniflix Supporte","tab.updated.added2":"Alternância da Tab Priority","tab.updated.changed5":"Revisão do sistema de tradução","tab.updated.changed6":"Créditos corrigidos a mostrar erros em Inglês"}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Спасибо за установку PreMiD","tab.installed.subHeading.didInstallQuestion":"Вы уже установили приложение?","tab.installed.subHeading.notInstalled":"Нет? Тогда следуйте этим инструкциям:","tab.installed.instructions.download":"Скачайте последнюю версию с {{github_link}}","tab.installed.instructions.github":"моего репозитория","tab.installed.instructions.wait":"Запустите установщик и дождитесь окончания установки","tab.installed.instructions.warnings":"Вы можете увидеть предупреждение FireWall или SmartScreen (Это не вирус, я клянусь)","tab.installed.instructions.autostart":"Приложение должно запуститься автоматически, вы можете это проверить посмотрев в меню задач (Windows) или менюбар (MacOS)","tab.installed.subHeading.ready":"Да? Тогда вы можете начинать!","tab.installed.intro":"Начните с использования одного из поддерживаемых нами сервисов и насладитесь вкусом крутости!","tab.updated.heading":"PreMiD был обновлен!","tab.updated.subHeading.whatsNew":"Что нового?","tab.updated.subHeading.whatChanged":"Что изменилось?","presence.playback.playing":"Воспроизводится","presence.playback.paused":"Воиспроизведение приостановлено","popup.tabs.options":"Опции","popup.tabs.credits":"О нас","popup.options.headings.general":"Основное","popup.options.headings.presences":"Сервисы","popup.options.enabled":"Включено","popup.options.titleMenubar":"Строка меню","popup.options.mediaControls":"Управление медиа","popup.options.checkForUpdates":"Проверять обновления","popup.options.darkTheme":"Темная тема","popup.options.systemStartup":"Запуск при старте системы","presence.episode":"Эпизод","presence.browsing":"Смотрит...","presence.watching":"смотрит","tab.installed.letsStart":"Давайте начнем!","tab.installed.getSupport":"Получить поддержку","tab.installed.likeThisProject":"Нравится проект? Поддержи нас звездой на {{github_link}}!","tab.updated.gotIt":"Хорошо!","extension.description":"PreMiD добавляет интеграцию с Discord Rich Presence, управление медиа и многое другое для YouTube/YouTube Music, Twitch и т.д.","popup.options.connectInfo":"Информация о соединении","popup.error":"Ошибка","popup.error.message":"Не удалось загрузить пользователей","presence.lookingForAnime":"Ищет аниме...","tabPriority.prioritized":"Вкладка в приоритете","popup.options.tabPriority":"","tab.updated.changed0":"","tab.updated.changed1":"","tab.updated.changed2":"","tab.updated.added0":"","tab.updated.changed3":"","tab.updated.changed4":"","tab.updated.added1":"","tab.updated.added2":"","tab.updated.changed5":"","tab.updated.changed6":""}
|
||||
@@ -1 +0,0 @@
|
||||
{"tab.installed.heading":"Tack för att du har installerat PreMiD","tab.installed.subHeading.didInstallQuestion":"Har du installerat programmet ännu?","tab.installed.subHeading.notInstalled":"Nej? Följ dessa steg:","tab.installed.instructions.download":"Ladda ner den senaste versionen från $1","tab.installed.instructions.github":"mitt GitHub-förråd","tab.installed.instructions.wait":"Öppna installationsprogrammet och vänta tills det installeras","tab.installed.instructions.warnings":"Du kanske får en varning om brandvägg och Smartscreen (det är inte ett virus jag lovar)","tab.installed.instructions.autostart":"Applikationen bör starta automatiskt, du kan kontrollera detta genom att titta på ditt aktivitetsfält (Windows) eller menyraden (Mac OS)","tab.installed.subHeading.ready":"Ja? Du är redo att gå!","tab.installed.intro":"Börja med att titta på en video på YouTube, titta på dina älskade streamers på Twitch, Se dina favoritanimier på KissAnime eller JKAnime, kanske även Netflix ... Vem vet? <br> Eller du lyssnar bara på dina favoritlåtar på SoundCloud och YouTube Music. Inställningar kan hittas genom att klicka på PreMiD-ikonen i din webbläsare.","tab.updated.heading":"PreMid har uppdaterats!","tab.updated.subHeading.whatsNew":"Vad är nytt?","tab.updated.subHeading.whatChanged":"Vad har förändrats?","presence.playback.playing":"Spelar tillbaka","presence.playback.paused":"Uppspelning pausad","popup.tabs.options":"Alternativ","popup.tabs.credits":"Medhjälpare","popup.options.headings.general":"Allmänt","popup.options.headings.presences":"Presenceser","popup.options.enabled":"Aktiverad","popup.options.titleMenubar":"Titel Menubar","popup.options.mediaControls":"Mediekontroller","popup.options.checkForUpdates":"Sök efter uppdateringar","popup.options.darkTheme":"Mörkt Tema","popup.options.systemStartup":"Systemstart","presence.episode":"Avsnitt","presence.browsing":"Bläddrar...","presence.watching":"Tittar på","tab.installed.letsStart":"Låt oss börja!","tab.installed.getSupport":"Få stöd","tab.installed.likeThisProject":"Gilla detta projekt? Stjärna den på {{github_link}}!","tab.updated.gotIt":"Jag fattar!","extension.description":"PreMiD lägger till Discord Rich Presence integration, Media kontroller och mycket mer till YouTube / YouTube Music, Twitch osv...\n","popup.options.connectInfo":"Anslutningsinfo","popup.error":"Fel","popup.error.message":"Kunde inte ladda medhjälpar listan","presence.lookingForAnime":"","tabPriority.prioritized":"","popup.options.tabPriority":"","tab.updated.changed0":"","tab.updated.changed1":"","tab.updated.changed2":"","tab.updated.added0":"","tab.updated.changed3":"","tab.updated.changed4":"","tab.updated.added1":"","tab.updated.added2":"","tab.updated.changed5":"","tab.updated.changed6":""}
|
||||
@@ -1,70 +0,0 @@
|
||||
{
|
||||
"name": "PreMiD",
|
||||
"author": "Timeraa & Fruxh",
|
||||
"description": "__MSG_description__",
|
||||
"default_locale": "en",
|
||||
"version": "1.3.2.4",
|
||||
"manifest_version": 2,
|
||||
"web_accessible_resources": ["icon.png", "languages/*.json"],
|
||||
"browser_action": {
|
||||
"default_popup": "html/popup.html",
|
||||
"default_icon": {
|
||||
"1024": "icon.png"
|
||||
}
|
||||
},
|
||||
"icons": {
|
||||
"1024": "icon.png"
|
||||
},
|
||||
"background": {
|
||||
"scripts": ["js/util/socket.io-2.1.1.min.js", "js/background.js"]
|
||||
},
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": ["<all_urls>"],
|
||||
"js": [
|
||||
"js/util/jquery-3.3.1.min.js",
|
||||
"js/util/socketConnector.js",
|
||||
"js/util/langManager.js"
|
||||
],
|
||||
"css": ["css/connect.css"]
|
||||
},
|
||||
{
|
||||
"matches": ["<all_urls>"],
|
||||
"js": ["js/util/jquery-3.3.1.min.js", "js/presences/iframeWitch.js"],
|
||||
"all_frames": true
|
||||
},
|
||||
{
|
||||
"matches": ["*://www.youtube.com/*"],
|
||||
"js": ["js/presences/Video/YouTube.js"]
|
||||
},
|
||||
{
|
||||
"matches": ["*://music.youtube.com/*"],
|
||||
"js": ["js/presences/Music/YouTube_Music.js"]
|
||||
},
|
||||
{
|
||||
"matches": ["*://soundcloud.com/*"],
|
||||
"js": ["js/presences/Music/SoundCloud.js"]
|
||||
},
|
||||
{
|
||||
"matches": ["*://www.netflix.com/*"],
|
||||
"js": ["js/presences/Video/Netflix.js"]
|
||||
},
|
||||
{
|
||||
"matches": ["*://www.twitch.tv/*"],
|
||||
"js": ["js/presences/Video/Twitch.js"]
|
||||
},
|
||||
{
|
||||
"matches": ["*://www.crunchyroll.com/*"],
|
||||
"js": ["js/presences/Anime/Crunchyroll.js"]
|
||||
}
|
||||
],
|
||||
"permissions": ["http://localhost:3020/", "tabs", "storage"],
|
||||
"content_security_policy": "script-src 'self' https://*.premid.app/*; object-src 'self'",
|
||||
"applications": {
|
||||
"gecko": {
|
||||
"id": "support@premid.app",
|
||||
"strict_min_version": "52.0",
|
||||
"update_url": "https://api.premid.app/firefox/updates"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
@font-face {
|
||||
font-family: "Roboto";
|
||||
src: url("../fonts/Roboto/Roboto-Regular.ttf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Roboto";
|
||||
font-weight: "bold";
|
||||
src: url("../fonts/Roboto/Roboto-Bold.ttf") format("truetype");
|
||||
}
|
||||
|
||||
#premid-connectinfo.dark {
|
||||
background-color: #596cae !important;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
box-shadow: 0px 0px 14px rgba(25, 25, 25, 0.5) !important;
|
||||
}
|
||||
|
||||
#premid-connectinfo:not(.dark) {
|
||||
color: #575757;
|
||||
background-color: white !important;
|
||||
box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.15) !important;
|
||||
}
|
||||
|
||||
#premid-connectinfo {
|
||||
position: fixed !important;
|
||||
top: 5px !important;
|
||||
right: 5px !important;
|
||||
z-index: 10000 !important;
|
||||
width: auto !important;
|
||||
overflow: hidden !important;
|
||||
white-space: nowrap !important;
|
||||
border-radius: 5px !important;
|
||||
height: 50px !important;
|
||||
user-select: none !important;
|
||||
|
||||
.animate {
|
||||
animation-name: slideIn !important;
|
||||
animation-duration: 5s !important;
|
||||
animation-timing-function: cubic-bezier(0.55, 0.55, 0, 1.2) !important;
|
||||
}
|
||||
|
||||
* {
|
||||
font-family: "Roboto", sans-serif !important;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
img {
|
||||
float: left !important;
|
||||
margin: 5px !important;
|
||||
width: 40px !important;
|
||||
height: 40px !important;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 17px !important;
|
||||
font-weight: 600 !important;
|
||||
margin: 0 !important;
|
||||
margin-top: 6px !important;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 15px !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slideIn {
|
||||
0% {
|
||||
right: -110%;
|
||||
}
|
||||
|
||||
10% {
|
||||
right: 5px;
|
||||
}
|
||||
|
||||
90% {
|
||||
right: 5px;
|
||||
}
|
||||
|
||||
100% {
|
||||
right: -150%;
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
/* The switch - the box around the slider */
|
||||
|
||||
.switch {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 35px;
|
||||
height: 15px;
|
||||
}
|
||||
|
||||
/* Hide default HTML checkbox */
|
||||
|
||||
.switch input {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The slider */
|
||||
|
||||
.slider {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: rgb(255, 75, 75);
|
||||
-webkit-transition: 0.25s;
|
||||
transition: 0.25s;
|
||||
}
|
||||
|
||||
.slider:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
height: 17px;
|
||||
width: 17px;
|
||||
left: -2.5px;
|
||||
top: -2.5px;
|
||||
background-color: white;
|
||||
-webkit-transition: 0.25s;
|
||||
transition: 0.25s cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||
border: 1px solid lightgray;
|
||||
}
|
||||
|
||||
input:checked + .slider {
|
||||
background-color: rgb(75, 255, 75);
|
||||
}
|
||||
|
||||
input:disabled + .slider {
|
||||
background-color: rgb(255, 75, 75);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
input:disabled + .slider:before {
|
||||
background-color: rgb(255, 75, 75);
|
||||
border: 1px solid rgb(255, 75, 75);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
input:focus + .slider {
|
||||
box-shadow: 0 0 1px rgb(75, 255, 75);
|
||||
}
|
||||
|
||||
input:hover + .slider {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
input:checked + .slider:before {
|
||||
transform: translateX(20px);
|
||||
}
|
||||
|
||||
/* Rounded sliders */
|
||||
|
||||
.slider.round {
|
||||
border-radius: 34px;
|
||||
}
|
||||
|
||||
.slider.round:before {
|
||||
border-radius: 50%;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
.right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#content h1 {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
table {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
tr td:first-child {
|
||||
width: 90%;
|
||||
}
|
||||
@@ -1,342 +0,0 @@
|
||||
@font-face {
|
||||
font-family: "Roboto";
|
||||
src: url("../fonts/Roboto/Roboto-Regular.ttf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Roboto";
|
||||
font-weight: bold;
|
||||
src: url("../fonts/Roboto/Roboto-Bold.ttf") format("truetype");
|
||||
}
|
||||
|
||||
* {
|
||||
font-family: "Roboto", sans-serif;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
overflow: hidden;
|
||||
width: 350px;
|
||||
height: 600px;
|
||||
max-height: 600px;
|
||||
}
|
||||
|
||||
/* Adds smooth transition when user changes theme
|
||||
! Needs fix
|
||||
html,
|
||||
body,
|
||||
.tabs,
|
||||
.card-panel {
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
*/
|
||||
|
||||
.dark {
|
||||
background-color: hsl(220, 7%, 11%);
|
||||
.tabs {
|
||||
background-color: hsl(220, 7%, 11%);
|
||||
}
|
||||
|
||||
.card-panel,
|
||||
.usercard {
|
||||
background-color: hsl(220, 7%, 15%);
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(255, 255, 255, 0.25);
|
||||
}
|
||||
|
||||
.switch {
|
||||
input:not(:checked) > .lever {
|
||||
background-color: rgba(80, 80, 80, 0.5) !important;
|
||||
}
|
||||
|
||||
input:not(:checked) > .lever:after {
|
||||
background-color: rgba(80, 80, 80, 1) !important;
|
||||
}
|
||||
}
|
||||
|
||||
#pMiDOption,
|
||||
.credit-panel {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
}
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
.waves-effect.waves-discord .waves-ripple {
|
||||
/* The alpha value allows the text and background color
|
||||
of the button to still show through. */
|
||||
background-color: rgba(114, 137, 218, 0.4);
|
||||
}
|
||||
|
||||
html:not(.dark) ::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
#tabContent {
|
||||
position: relative;
|
||||
top: 125px;
|
||||
height: calc(600px - 125px);
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
#header {
|
||||
z-index: 10000;
|
||||
position: fixed;
|
||||
height: 75px;
|
||||
width: 100%;
|
||||
background-color: rgba(89, 107, 174, 1);
|
||||
}
|
||||
|
||||
.headerTabs {
|
||||
z-index: 10000;
|
||||
position: fixed;
|
||||
top: 75px;
|
||||
}
|
||||
|
||||
.row {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#header img {
|
||||
height: 75px;
|
||||
position: relative;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
#pMiDHeading {
|
||||
color: #7289da;
|
||||
margin: 5px;
|
||||
margin-bottom: 10px;
|
||||
padding: 0;
|
||||
font-size: 23px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#pMiDOption,
|
||||
.credit-panel {
|
||||
color: rgb(146, 146, 146);
|
||||
}
|
||||
|
||||
#pMiDOption {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.card-panel .row .col {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#options {
|
||||
margin: 5px;
|
||||
width: calc(100% - 10px);
|
||||
|
||||
tr {
|
||||
border: none;
|
||||
|
||||
td {
|
||||
padding: 5px 0;
|
||||
|
||||
&:first-child {
|
||||
width: 80%;
|
||||
}
|
||||
&:last-child {
|
||||
width: 20%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lever {
|
||||
float: right;
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.switch {
|
||||
cursor: pointer;
|
||||
|
||||
label {
|
||||
.lever {
|
||||
width: 42px;
|
||||
height: 24px;
|
||||
background: #72767d;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
left: 3px;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
box-shadow: none;
|
||||
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked:not(:disabled) ~ .lever:active::before,
|
||||
input[type="checkbox"]:checked:not(:disabled).tabbed:focus ~ .lever::before {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.switch label input[type="checkbox"]:checked + .lever:before,
|
||||
.switch label input[type="checkbox"]:checked + .lever:after {
|
||||
left: 21px;
|
||||
}
|
||||
|
||||
.switch label input[type="checkbox"]:checked + .lever:after {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.switch label input[type="checkbox"]:checked + .lever {
|
||||
background-color: #7289da;
|
||||
}
|
||||
|
||||
.yt:checked + .lever {
|
||||
background-color: rgb(218, 39, 39) !important;
|
||||
}
|
||||
|
||||
.twitch:checked + .lever {
|
||||
background-color: #7d5bbe !important;
|
||||
}
|
||||
|
||||
.soundcloud:checked + .lever {
|
||||
background-color: rgb(255, 102, 0) !important;
|
||||
}
|
||||
|
||||
.netflix:checked + .lever {
|
||||
background-color: rgba(204, 22, 23, 1) !important;
|
||||
}
|
||||
|
||||
.rabbit:checked + .lever {
|
||||
background-color: #fe6600 !important;
|
||||
}
|
||||
|
||||
.anime4you:checked + .lever {
|
||||
background-color: #6e46b6 !important;
|
||||
}
|
||||
|
||||
.crunchyroll:checked + .lever {
|
||||
background-color: #ea5d13 !important;
|
||||
}
|
||||
|
||||
.aniflix:checked + .lever {
|
||||
background-color: #e23333 !important;
|
||||
}
|
||||
|
||||
.card-panel {
|
||||
margin: 10px 5px;
|
||||
padding: 14px;
|
||||
box-shadow: 0px 3px 14px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.tabs .tab a {
|
||||
color: rgba(90, 109, 174, 0.75);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.tabs .tab a:hover,
|
||||
.tabs .tab a.active {
|
||||
color: #7289da;
|
||||
}
|
||||
|
||||
.tabs .tab a:focus,
|
||||
.tabs .tab a:focus.active {
|
||||
color: #7289da;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.tabs .indicator {
|
||||
background-color: #7289da;
|
||||
box-shadow: 5px 5px black;
|
||||
}
|
||||
|
||||
#credits table tr {
|
||||
border: none;
|
||||
}
|
||||
|
||||
#credits table tr td {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.credit-panel {
|
||||
margin: 5px;
|
||||
padding: 0;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.credits_text h6 {
|
||||
font-size: 17px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.usercard:hover .credits_text h6 {
|
||||
color: rgba(255, 255, 255, 0.8) !important;
|
||||
}
|
||||
|
||||
.credits_text p {
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.credits_container {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
align-items: center;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.usercard {
|
||||
user-select: none;
|
||||
background: #fff;
|
||||
box-shadow: 0px 3px 14px rgba(0, 0, 0, 0.15);
|
||||
flex-grow: 1;
|
||||
flex: 1 0;
|
||||
float: left;
|
||||
justify-content: center;
|
||||
margin: 10px;
|
||||
padding-top: 15px;
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
width: 50%;
|
||||
transition: all 150ms ease-out;
|
||||
min-width: 100px;
|
||||
min-height: 150px;
|
||||
color: rgb(102, 102, 102);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.usercard .credits_text * {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.usercard .credits_avatar img {
|
||||
width: 50px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.usercard div {
|
||||
top: -4px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.usercard:hover:not(.noHover) {
|
||||
background-color: var(--hoverColor);
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
transform: scale(1.025);
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
@font-face {
|
||||
font-family: "Roboto";
|
||||
src: url("chrome-extension://__MSG_@@extension_id__/fonts/Roboto/Roboto-Regular.ttf")
|
||||
format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Roboto";
|
||||
font-weight: bold;
|
||||
src: url("chrome-extension://__MSG_@@extension_id__/fonts/Roboto/Roboto-Bold.ttf")
|
||||
format("truetype");
|
||||
}
|
||||
|
||||
* {
|
||||
font-family: "Roboto" !important;
|
||||
color: #fff;
|
||||
}
|
||||
@@ -1,128 +0,0 @@
|
||||
body {
|
||||
color: rgb(146, 146, 146);
|
||||
}
|
||||
|
||||
.dark {
|
||||
background-color: hsl(220, 7%, 11%);
|
||||
}
|
||||
|
||||
.dark .tabs,
|
||||
.dark .card-panel {
|
||||
background-color: hsl(220, 7%, 15%);
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#pMiDHeader {
|
||||
z-index: 10000;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
height: 75px;
|
||||
width: 100%;
|
||||
background-color: rgba(89, 107, 174, 1);
|
||||
}
|
||||
|
||||
#pMiDHeader img {
|
||||
height: 75px;
|
||||
position: relative;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
#pMiDHeading {
|
||||
color: #596cae;
|
||||
margin: 5px;
|
||||
margin-bottom: 20px;
|
||||
padding: 0;
|
||||
font-size: 30px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 25px !important;
|
||||
margin: 0 !important;
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 22px !important;
|
||||
margin: 0 !important;
|
||||
margin-top: 5px !important;
|
||||
margin-bottom: 5px !important;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 17px !important;
|
||||
margin: 0 !important;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
#content {
|
||||
position: relative;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
top: 75px;
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
.card-panel {
|
||||
margin-top: 50px !important;
|
||||
margin-bottom: 50px !important;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-left: 25px !important;
|
||||
font-size: 17px;
|
||||
margin: 0;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style-type: disc !important;
|
||||
}
|
||||
|
||||
#buttonWrapper {
|
||||
text-align: center;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
a.btn {
|
||||
width: 49%;
|
||||
padding: 10px !important;
|
||||
margin-bottom: 5px;
|
||||
height: unset !important;
|
||||
line-height: unset !important;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
a.close {
|
||||
background-color: rgba(89, 107, 174, 1) !important;
|
||||
}
|
||||
|
||||
a.close:hover {
|
||||
background-color: rgba(89, 107, 174, 0.75) !important;
|
||||
}
|
||||
|
||||
a.getSupport {
|
||||
background-color: #575757 !important;
|
||||
}
|
||||
|
||||
a.getSupport:hover {
|
||||
background-color: rgba(87, 87, 87, 0.75) !important;
|
||||
}
|
||||
|
||||
a.gotIt {
|
||||
background-color: #3cac38 !important;
|
||||
}
|
||||
|
||||
a.gotIt:hover {
|
||||
background-color: rgba(60, 172, 56, 0.75) !important;
|
||||
}
|
||||
|
||||
.smallCenter {
|
||||
text-align: center;
|
||||
font-size: 15px;
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>PreMiD - Updated</title>
|
||||
<link rel="stylesheet" href="../../css/tab.css" />
|
||||
<!-- Import materialize.css -->
|
||||
<link
|
||||
type="text/css"
|
||||
rel="stylesheet"
|
||||
href="../../css/materialize.min.css"
|
||||
media="screen,projection"
|
||||
/>
|
||||
<script src="../../js/util/jquery-3.3.1.min.js"></script>
|
||||
<script src="../../js/util/langManager.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="pMiDHeader"><img src="../../icon.png" draggable="false" /></div>
|
||||
<div id="content">
|
||||
<div class="card-panel">
|
||||
<h1 term="tab.updated.heading" id="pMiDHeading"></h1>
|
||||
<h3 term="tab.updated.subHeading.whatsNew"></h3>
|
||||
<ul id="WhatsNewList"></ul>
|
||||
<h3 term="tab.updated.subHeading.whatChanged"></h3>
|
||||
<ul id="WhatChangedList"></ul>
|
||||
<div id="buttonWrapper">
|
||||
<a term="tab.updated.gotIt" class="gotIt waves-effect btn"></a>
|
||||
</div>
|
||||
<p class="smallCenter PlikeThisProject"></p>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../js/updated.js"></script>
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="../../js/util/materialize.min.js"
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,41 +0,0 @@
|
||||
<div align="center"><img draggable="false" alt="Localization" src="gitassets/localization.png"></div>
|
||||
|
||||
# Localization
|
||||
|
||||
We are partnered with POEditor, so all translations will be made in it.
|
||||
|
||||
## Supported languages
|
||||
|
||||
These languages already added in the application/extension, but may need some improvements.
|
||||
|
||||
| Language | Percentage |
|
||||
| :-------------: | :-------------------------------------------------------------------------------: |
|
||||
| Arabic | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/ar"> |
|
||||
| Bosnian | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/bs"> |
|
||||
| Danish | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/da"> |
|
||||
| Dutch | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/nl"> |
|
||||
| English | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/en"> |
|
||||
| French | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/fr"> |
|
||||
| German | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/de"> |
|
||||
| Hebrew | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/he"> |
|
||||
| Italian | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/it"> |
|
||||
| Japanese | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/ja"> |
|
||||
| Latin | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/la"> |
|
||||
| Norwegian | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/no"> |
|
||||
| Polish | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/pl"> |
|
||||
| Portuguese | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/pt"> |
|
||||
| Portuguese (BR) | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/pt-br"> |
|
||||
| Russian | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/ru"> |
|
||||
| Spanish | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/es"> |
|
||||
| Swedish | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/sv"> |
|
||||
| Turkish | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/tr"> |
|
||||
| Ukrainian | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/uk"> |
|
||||
| Vietnamese | <img draggable="false" alt="error" src="https://api.premid.app/langStatus/vi"> |
|
||||
|
||||
## How to start?
|
||||
|
||||
1. Join our [Discord server](https://discord.gg/WvfVZ8T).
|
||||
2. Locate the `#how-to-contribute` text channel.
|
||||
3. Click on the link given and register a new account.
|
||||
4. Wait until you will be accepted or rejected.
|
||||
5. All translation instructions will be sent to you in near future.
|
||||
370
POEditor_en.json
@@ -1,370 +0,0 @@
|
||||
[
|
||||
{
|
||||
"term": "tab.installed.heading",
|
||||
"definition": "Thank you for installing PreMiD",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.subHeading.didInstallQuestion",
|
||||
"definition": "Did you install the application yet?",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.subHeading.notInstalled",
|
||||
"definition": "No? Follow these steps:",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.instructions.download",
|
||||
"definition": "Download the latest version from $1",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "$1 gets replaced by a value"
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.instructions.github",
|
||||
"definition": "my GitHub repository",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "Link to the GitHub project"
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.instructions.wait",
|
||||
"definition": "Open the installer and wait until it installed",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.instructions.warnings",
|
||||
"definition": "You may receive a warning about FireWall and SmartScreen (Its not a virus i promise!)",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.instructions.autostart",
|
||||
"definition": "The application should start automatically, you can check this by looking at your Taskbar (Windows) or your Menubar (MacOS)",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.subHeading.ready",
|
||||
"definition": "Yes? You are ready to go!",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.intro",
|
||||
"definition": "Start by using one of our supported services and enjoy the sweet taste of coolness!",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "Pls leave <br> as is."
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.heading",
|
||||
"definition": "PreMiD has been updated!",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.subHeading.whatsNew",
|
||||
"definition": "Whats new?",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.subHeading.whatChanged",
|
||||
"definition": "What changed?",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "presence.playback.playing",
|
||||
"definition": "Playing back",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "presence.playback.paused",
|
||||
"definition": "Playback paused",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.tabs.options",
|
||||
"definition": "Options",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.tabs.credits",
|
||||
"definition": "Credits",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.options.headings.general",
|
||||
"definition": "General",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.options.headings.presences",
|
||||
"definition": "Presences",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.options.enabled",
|
||||
"definition": "Enabled",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.options.titleMenubar",
|
||||
"definition": "Title Menubar",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "Menubar is a name (Mac OS only)"
|
||||
},
|
||||
{
|
||||
"term": "popup.options.mediaControls",
|
||||
"definition": "Media Controls",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "Media Control keys (Keyboard\/headphones)"
|
||||
},
|
||||
{
|
||||
"term": "popup.options.checkForUpdates",
|
||||
"definition": "Check for updates",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.options.darkTheme",
|
||||
"definition": "Dark Theme",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "Dark Theme option in preferences"
|
||||
},
|
||||
{
|
||||
"term": "connectionInfo.connected",
|
||||
"definition": "Connected to %SERVICE%",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "%SERVICE% will be replaced."
|
||||
},
|
||||
{
|
||||
"term": "connectionInfo.disconnected",
|
||||
"definition": "Disconnected from %SERVICE%",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "%SERVICE% will be replaced."
|
||||
},
|
||||
{
|
||||
"term": "popup.options.systemStartup",
|
||||
"definition": "System Startup",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "Startup option in preferences"
|
||||
},
|
||||
{
|
||||
"term": "presence.episode",
|
||||
"definition": "Episode",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "presence.browsing",
|
||||
"definition": "Browsing...",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "Status when just browsing around"
|
||||
},
|
||||
{
|
||||
"term": "presence.watching",
|
||||
"definition": "watching",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "Status when watching (e.g.: 44 watching)"
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.letsStart",
|
||||
"definition": "Let's Start!",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.getSupport",
|
||||
"definition": "Get Support",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.installed.likeThisProject",
|
||||
"definition": "Like this project? Star it on $1!",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "$1 will be replaced with the GitHub repository."
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.gotIt",
|
||||
"definition": "Got it!",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.added0",
|
||||
"definition": "New Design!",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.added1",
|
||||
"definition": "Rabb.it support",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.nextVersion.added2",
|
||||
"definition": "Amazon Prime support",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.added3",
|
||||
"definition": "Anime4You support",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.nextVersion.added4",
|
||||
"definition": "CrunchyRoll support",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.changed0",
|
||||
"definition": "Lots of bugs killed, they won't bug you anymore",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "tab.updated.changed1",
|
||||
"definition": "Lots of rewrites",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "extension.description",
|
||||
"definition": "PreMiD adds Discord Rich Presence integration, Media controls and much more to YouTube\/YouTube Music, Twitch etc...",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": "This is the description of the extension."
|
||||
},
|
||||
{
|
||||
"term": "popup.options.connectInfo",
|
||||
"definition": "Connection Info",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.error",
|
||||
"definition": "Error",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "popup.error.message",
|
||||
"definition": "Could not load credits",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "presence.lookingForAnime",
|
||||
"definition": "Searching for Anime...",
|
||||
"context": "",
|
||||
"term_plural": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
}
|
||||
]
|
||||
197
README.md
@@ -1,186 +1,43 @@
|
||||
<div align="center">
|
||||
|
||||
# <img src="gitassets/icon.png" width="24px" draggable="false"><b> </b>PreMiD · Discord Rich Presence for your Media!
|
||||
<img src=".github/Logo.png" width="150px" draggable="false"><br>
|
||||
|
||||
###  [](https://www.codacy.com/project/Timeraa/PreMiD/dashboard?utm_source=github.com&utm_medium=referral&utm_content=PreMiD/PreMiD&utm_campaign=Badge_Grade_Dashboard&branchId=10584370) [](https://discord.gg/WvfVZ8T) [](https://chrome.google.com/webstore/detail/premid/agjnjboanicjcpenljmaaigopkgdnihi)
|
||||
[](https://twitter.com/PreMiDapp)
|
||||
# PreMiD
|
||||
|
||||
<img src="gitassets/PreMiDExample.png">
|
||||
## Your Rich Presence for web services!
|
||||
|
||||
<a target="_blank" href="https://discord.gg/WvfVZ8T" title="Join our Discord!">
|
||||
<img draggable="false" src="https://discordapp.com/api/guilds/493130730549805057/widget.png?style=banner2" height="76px" draggable="false" alt="Join my Discord!">
|
||||
</a>
|
||||
<a target="_blank" href="https://www.patreon.com/bePatron?u=4610890" data-patreon-widget-type="become-patron-button"><img src="gitassets/patreonBTN.png" draggable="false" height="76px" alt="Support me on Patreon!"></a>
|
||||
<details>
|
||||
<summary><b><u>Other options</u></b> (Click to expand)</summary>
|
||||

|
||||

|
||||

|
||||
[](https://chrome.google.com/webstore/detail/premid/agjnjboanicjcpenljmaaigopkgdnihi)
|
||||

|
||||

|
||||

|
||||
|
||||
<ol>
|
||||
|
||||
<a target="_blank" href="https://ko-fi.com/E1E1HLLE"><img draggable="false" height="56px" src='https://az743702.vo.msecnd.net/cdn/kofi1.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
|
||||
|
||||
<a target="_blank" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZU8Q766ACS2WS&lc=US"><img src="gitassets/PayPal.svg" height="56px" draggable="false" alt="PayPal"></a>
|
||||
|
||||
#### BitCoin: `18WHUcQbThwExKhUyLGPRFUGSwFqftpsEn`
|
||||
|
||||
</ol>
|
||||
</details>
|
||||
</div>
|
||||
<img src=".github/example.png" draggable="false"><br>
|
||||
|
||||
# About
|
||||
|
||||
**PreMiD** is a simple, configurable utility that allows you to show what you're watching/listening in your Discord **now playing status**. It supports [many different platforms](#support), and will support multiple users watching the same content simultaneously in an upcoming update.
|
||||
**PreMiD** is a simple, configurable utility that allows you to show what you're doing on the web in your Discord **now playing status**. It supports many different websites, and will support multiple users watching the same content simultaneously in an upcoming update.
|
||||
|
||||
# Features
|
||||
|
||||
- Integrates with Discord's official Rich Presence API library.
|
||||
- Supports your keyboard's **Media Control** function keys.
|
||||
- Automatically clears your current presence after 1 minute of inactivity.
|
||||
- Supports **YouTube, YouTube Music, Netflix, SoundCloud** and many more to come.
|
||||
- _Watch parties and more are coming soon!_
|
||||
· Displays your current web service in Discord as your status.<br>
|
||||
· Grants full control over Presences.<br>
|
||||
· Supports over 100 web services, still rising!<br>
|
||||
· _Watch parties and more are coming soon!_
|
||||
|
||||
# Table of contents
|
||||
# Installation/Troubleshooting
|
||||
|
||||
- [About](#about)
|
||||
- [Summary](#summary)
|
||||
- [Features](#features)
|
||||
- [Localization](#localization)
|
||||
- [Contributing](#contributing)
|
||||
- [Support](#support)
|
||||
- [Operating Systems](#operating-systems)
|
||||
- [Services](#services)
|
||||
- [Installation](#installation)
|
||||
- [Extension](#extension)
|
||||
- Chrome
|
||||
- Firefox
|
||||
- Opera
|
||||
- [Application](#application)
|
||||
- Mac OS
|
||||
- Windows
|
||||
- Linux
|
||||
### Installation instructions, Troubleshooting guides etc. can be found in our [**Wiki**](https://wiki.premid.app).
|
||||
|
||||
# Localization
|
||||
# Support us
|
||||
|
||||
Our application has a lot of languages included and we are happy to see a new translators in our little project.
|
||||
|
||||
## Contributing
|
||||
|
||||
If you're interested in helping us visit the [LOCALIZATION.md](LOCALIZATION.md)
|
||||
|
||||
# Support
|
||||
|
||||
### **Operating Systems**
|
||||
|
||||
| Operating System | Application | Chrome | Firefox |
|
||||
| :--------------- | :---------: | :----: | :-----: |
|
||||
| Windows | ✓ | ✓ | Beta |
|
||||
| Linux | Self-build | ✓ | Beta |
|
||||
| Mac OS | ✓ | ✓ | Beta |
|
||||
|
||||
#### **Additional Browsers**
|
||||
|
||||
| Operating System | Opera | Vivaldi |
|
||||
| :--------------- | :---: | :-----: |
|
||||
| Windows | ✓ | ✓ |
|
||||
| Linux | ✓ | ✓ |
|
||||
| Mac OS | ✓ | ✓ |
|
||||
|
||||
### **Services**
|
||||
|
||||
| Video | Music | Anime |
|
||||
| :-----: | :-----------: | :---------: |
|
||||
| YouTube | YouTube Music | Crunchyroll |
|
||||
| Netflix | SoundCloud | Anime4You |
|
||||
| Twitch | | Aniflix |
|
||||
| Rabb.it | | |
|
||||
|
||||
<i>More availabe on our soon releasing presence store for free!</i>
|
||||
|
||||
Want to request a support for other services? Open an [Issue](https://github.com/Timeraa/PreMiD/issues/new?template=service_request.md)!
|
||||
|
||||
# Installation
|
||||
|
||||
<b><font size="4">YOU HAVE TO INSTALL BOTH THE EXTENSION AND THE APPLICATION</font></b>
|
||||
|
||||
## Extension
|
||||
|
||||
<details>
|
||||
<summary><b><u>Installing the Chrome extension</u></b> (Click to expand)</summary>
|
||||
<h1>Chrome Extension Installation</h1>
|
||||
<ol>
|
||||
<li>Click <a href="https://chrome.google.com/webstore/detail/premid/agjnjboanicjcpenljmaaigopkgdnihi">this</a> link</li>
|
||||
</li>
|
||||
<li>Click "Add to Chrome"</li>
|
||||
<li>Install the <a href="#application">application</a></li>
|
||||
</ol>
|
||||
</details>
|
||||
<details>
|
||||
<summary><b><u>Installing the Firefox extension</u></b> (Click to expand)</summary>
|
||||
<h1>Firefox Extension Installation</h1>
|
||||
<ol>
|
||||
<b>Firefox removed our Extension from the addon store.<br>
|
||||
We're currently trying upload it to our own servers and could revive it from the dead.<br>
|
||||
Until then, we have to stay positive and you have to download our addon manually <u>or just use another browser!</u></b>
|
||||
<li>Switch to the <a href="https://github.com/PreMiD/PreMiD/releases">releases tab</a></li>
|
||||
</li>
|
||||
<li>Download <a href="https://github.com/PreMiD/PreMiD/releases">premid-1.3.1.2-fx.xpi</a></li>
|
||||
<li>Got to <a href="about:addons">about:addons</a></li>
|
||||
<li>Click on the little gear symbol on the upper right hand side</li>
|
||||
<li>Choose <b>"Install add-on from file"</b></li>
|
||||
<li>Select the file you downloaded recently</li>
|
||||
<li>Accept the installation by clicking on <b>"Add"</b></li>
|
||||
<li>Install the <a href="#application">application</a></li>
|
||||
</ol>
|
||||
</details>
|
||||
<details>
|
||||
<summary><b><u>Installing the Opera extension</u></b> (Click to expand)</summary>
|
||||
<h1>Opera Extension Installation</h1>
|
||||
<ol>
|
||||
<li>Install the extension called "<a href="https://addons.opera.com/en/extensions/details/install-chrome-extensions/">Install Chrome Extensions</a>"
|
||||
</li>
|
||||
<li>Now install the <a href="https://chrome.google.com/webstore/detail/premid/agjnjboanicjcpenljmaaigopkgdnihi">PreMiD extension</a></li>
|
||||
<li>Install the <a href="#application">application</a></li>
|
||||
</ol>
|
||||
</details>
|
||||
|
||||
## Application
|
||||
|
||||
<details>
|
||||
<summary><b><u>Mac OS</u></b> (Click to expand)</summary>
|
||||
<h1>Installation on Mac OS</h1>
|
||||
<ol>
|
||||
<li>Download the latest version of the <a href="https://github.com/Timeraa/YT-Presence/releases/latest">application</a>
|
||||
</li>
|
||||
<li>Open the downloaded <b>.dmg</b> file</li>
|
||||
<li>Drag <b>PreMiD</b> Into your <b>Applications</b> Folder</li>
|
||||
<li>Open your Launchpad or press F4</li>
|
||||
<li>Open <b>PreMiD</b></li>
|
||||
<li>Press <b>"Allow"</b> if a window pops up</li>
|
||||
<li>Install <a href="#extension">extension</a> if not already</li>
|
||||
</ol>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b><u>Windows</u></b> (Click to expand)</summary>
|
||||
<h1>Installation on Windows</h1>
|
||||
<ol>
|
||||
<li>Download the latest installer from <a href="https://github.com/Timeraa/YT-Presence/releases/">here</a></li>
|
||||
<li>Open the downloaded <b>.exe</b> installer</li>
|
||||
<li>If SmartScreen comes up press more informations then press run anyways. (It's not a virus, I promise.)</li>
|
||||
<li>PreMiD should install itself and start automatically. (You can tell by looking at the taskbar.)</li>
|
||||
<li>Install the <a href="#extension">extension</a>, if you haven't already.</li>
|
||||
</ol>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b><u>Linux</u></b> (Click to expand)</summary>
|
||||
<h1>Installation on Linux</h1>
|
||||
<p>If you want to talk about the GNU/Linux support: https://github.com/Timeraa/PreMiD/issues/21</p>
|
||||
<ol>
|
||||
<li>Clone the repository: <code>git clone https://github.com/Timeraa/PreMiD.git</code></li>
|
||||
<li>Change the working directory: <code>cd PreMiD/src</code></li>
|
||||
<li>Install dependencies and the application itself: <code>npm install</code></li>
|
||||
<li>Now you can start the application: <code>npm start</code></li>
|
||||
</ol>
|
||||
</details>
|
||||
|
||||
[](https://sourcerer.io/fame/Timeraa/Timeraa/PreMiD/links/0)[](https://sourcerer.io/fame/Timeraa/Timeraa/PreMiD/links/1)[](https://sourcerer.io/fame/Timeraa/Timeraa/PreMiD/links/2)[](https://sourcerer.io/fame/Timeraa/Timeraa/PreMiD/links/3)[](https://sourcerer.io/fame/Timeraa/Timeraa/PreMiD/links/4)[](https://sourcerer.io/fame/Timeraa/Timeraa/PreMiD/links/5)[](https://sourcerer.io/fame/Timeraa/Timeraa/PreMiD/links/6)[](https://sourcerer.io/fame/Timeraa/Timeraa/PreMiD/links/7)
|
||||
<div>
|
||||
<a target="_blank" href="https://www.patreon.com/bePatron?u=4610890" data-patreon-widget-type="become-patron-button" title="Support me on Patreon!">
|
||||
<img height="75px" draggable="false" src=".github/Patreon.png">
|
||||
</a>
|
||||
<a target="_blank" href="https://discord.gg/WvfVZ8T" title="Join our Discord!">
|
||||
<img height="75px" draggable="false" src="https://discordapp.com/api/guilds/493130730549805057/widget.png?style=banner2" alt="Join my Discord!">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
112
devMode.ts
Normal file
@@ -0,0 +1,112 @@
|
||||
import * as ts from "typescript";
|
||||
import chalk from "chalk";
|
||||
import { ChildProcess, spawn } from "child_process";
|
||||
import { removeSync, writeFileSync, copySync } from "fs-extra";
|
||||
import { extname } from "path";
|
||||
import * as glob from "fast-glob";
|
||||
|
||||
//* Current child process = null
|
||||
var currChild: ChildProcess = null;
|
||||
|
||||
//* Format Host
|
||||
const formatHost: ts.FormatDiagnosticsHost = {
|
||||
getCanonicalFileName: path => path,
|
||||
getCurrentDirectory: ts.sys.getCurrentDirectory,
|
||||
getNewLine: () => ts.sys.newLine
|
||||
};
|
||||
|
||||
//* Create ts program
|
||||
const createProgram = ts.createSemanticDiagnosticsBuilderProgram;
|
||||
|
||||
//* Create Watch compoile host
|
||||
const host = ts.createWatchCompilerHost(
|
||||
"./tsconfig.json",
|
||||
{},
|
||||
ts.sys,
|
||||
createProgram,
|
||||
null,
|
||||
fileChange
|
||||
);
|
||||
|
||||
if (process.argv.length == 3 && process.argv[2] == "compile")
|
||||
prepareDist().then(() => process.exit());
|
||||
//* Create watch program
|
||||
else ts.createWatchProgram(host);
|
||||
|
||||
async function fileChange(diagnostic: ts.Diagnostic) {
|
||||
//* TS compilation != done
|
||||
if (diagnostic.code !== 6194) {
|
||||
//* If error
|
||||
if ([6031, 6032].includes(diagnostic.code))
|
||||
console.log(
|
||||
chalk.blueBright(ts.formatDiagnostic(diagnostic, formatHost))
|
||||
);
|
||||
else
|
||||
console.log(chalk.redBright(ts.formatDiagnostic(diagnostic, formatHost)));
|
||||
return;
|
||||
} else
|
||||
console.log(chalk.greenBright(ts.formatDiagnostic(diagnostic, formatHost)));
|
||||
|
||||
console.log(currChild && currChild.killed);
|
||||
//* Kill old child if exists && alive
|
||||
if (currChild && !currChild.killed) currChild.kill();
|
||||
|
||||
//* Run devMode script
|
||||
prepareDist();
|
||||
|
||||
//* Clear console
|
||||
console.clear();
|
||||
|
||||
//* Run child
|
||||
currChild = spawn("yarn start", {
|
||||
shell: true,
|
||||
stdio: "inherit"
|
||||
});
|
||||
}
|
||||
|
||||
//* Prepare dist folder
|
||||
async function prepareDist() {
|
||||
//* Select files
|
||||
var dist = await glob("dist/app/**/*", { onlyFiles: true }),
|
||||
src = await glob("src/**/*", { onlyFiles: true });
|
||||
|
||||
//* Filter file differences
|
||||
var nDist = dist.map(f => [f.replace("dist/app/", ""), f]);
|
||||
src = src
|
||||
.map(f => f.replace("src/", "").split(".")[0])
|
||||
.filter(sf => nDist.find(d => d[0].split(".")[0] == sf));
|
||||
|
||||
//* Old files, delete
|
||||
Promise.all(
|
||||
dist
|
||||
.filter(f => !src.includes(f.replace("dist/app/", "").split(".")[0]))
|
||||
.map(f => removeSync(f))
|
||||
);
|
||||
|
||||
//* Copy package.json (minified)
|
||||
var packageJSON = require("./package.json"),
|
||||
srcPackageJSON = packageJSON;
|
||||
|
||||
//* Delete scripts, not needed
|
||||
delete srcPackageJSON.scripts;
|
||||
|
||||
//* only electron as devDependency
|
||||
srcPackageJSON.devDependencies = {
|
||||
electron: packageJSON.devDependencies.electron
|
||||
};
|
||||
|
||||
//* Write file
|
||||
await writeFileSync(
|
||||
"./src/package.json",
|
||||
JSON.stringify(srcPackageJSON, null, 2)
|
||||
);
|
||||
|
||||
//* Copy files from src to dist
|
||||
copySync("src", "dist/app", {
|
||||
filter: function(path) {
|
||||
if (path.includes("node_modules")) return false;
|
||||
return extname(path) !== ".ts";
|
||||
console.log(path);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="124px" height="33px" viewBox="0 0 124 33" enable-background="new 0 0 124 33" xml:space="preserve">
|
||||
<path fill="#253B80" d="M46.211,6.749h-6.839c-0.468,0-0.866,0.34-0.939,0.802l-2.766,17.537c-0.055,0.346,0.213,0.658,0.564,0.658
|
||||
h3.265c0.468,0,0.866-0.34,0.939-0.803l0.746-4.73c0.072-0.463,0.471-0.803,0.938-0.803h2.165c4.505,0,7.105-2.18,7.784-6.5
|
||||
c0.306-1.89,0.013-3.375-0.872-4.415C50.224,7.353,48.5,6.749,46.211,6.749z M47,13.154c-0.374,2.454-2.249,2.454-4.062,2.454
|
||||
h-1.032l0.724-4.583c0.043-0.277,0.283-0.481,0.563-0.481h0.473c1.235,0,2.4,0,3.002,0.704C47.027,11.668,47.137,12.292,47,13.154z"
|
||||
/>
|
||||
<path fill="#253B80" d="M66.654,13.075h-3.275c-0.279,0-0.52,0.204-0.563,0.481l-0.145,0.916l-0.229-0.332
|
||||
c-0.709-1.029-2.29-1.373-3.868-1.373c-3.619,0-6.71,2.741-7.312,6.586c-0.313,1.918,0.132,3.752,1.22,5.031
|
||||
c0.998,1.176,2.426,1.666,4.125,1.666c2.916,0,4.533-1.875,4.533-1.875l-0.146,0.91c-0.055,0.348,0.213,0.66,0.562,0.66h2.95
|
||||
c0.469,0,0.865-0.34,0.939-0.803l1.77-11.209C67.271,13.388,67.004,13.075,66.654,13.075z M62.089,19.449
|
||||
c-0.316,1.871-1.801,3.127-3.695,3.127c-0.951,0-1.711-0.305-2.199-0.883c-0.484-0.574-0.668-1.391-0.514-2.301
|
||||
c0.295-1.855,1.805-3.152,3.67-3.152c0.93,0,1.686,0.309,2.184,0.892C62.034,17.721,62.232,18.543,62.089,19.449z"/>
|
||||
<path fill="#253B80" d="M84.096,13.075h-3.291c-0.314,0-0.609,0.156-0.787,0.417l-4.539,6.686l-1.924-6.425
|
||||
c-0.121-0.402-0.492-0.678-0.912-0.678h-3.234c-0.393,0-0.666,0.384-0.541,0.754l3.625,10.638l-3.408,4.811
|
||||
c-0.268,0.379,0.002,0.9,0.465,0.9h3.287c0.312,0,0.604-0.152,0.781-0.408L84.564,13.97C84.826,13.592,84.557,13.075,84.096,13.075z
|
||||
"/>
|
||||
<path fill="#179BD7" d="M94.992,6.749h-6.84c-0.467,0-0.865,0.34-0.938,0.802l-2.766,17.537c-0.055,0.346,0.213,0.658,0.562,0.658
|
||||
h3.51c0.326,0,0.605-0.238,0.656-0.562l0.785-4.971c0.072-0.463,0.471-0.803,0.938-0.803h2.164c4.506,0,7.105-2.18,7.785-6.5
|
||||
c0.307-1.89,0.012-3.375-0.873-4.415C99.004,7.353,97.281,6.749,94.992,6.749z M95.781,13.154c-0.373,2.454-2.248,2.454-4.062,2.454
|
||||
h-1.031l0.725-4.583c0.043-0.277,0.281-0.481,0.562-0.481h0.473c1.234,0,2.4,0,3.002,0.704
|
||||
C95.809,11.668,95.918,12.292,95.781,13.154z"/>
|
||||
<path fill="#179BD7" d="M115.434,13.075h-3.273c-0.281,0-0.52,0.204-0.562,0.481l-0.145,0.916l-0.23-0.332
|
||||
c-0.709-1.029-2.289-1.373-3.867-1.373c-3.619,0-6.709,2.741-7.311,6.586c-0.312,1.918,0.131,3.752,1.219,5.031
|
||||
c1,1.176,2.426,1.666,4.125,1.666c2.916,0,4.533-1.875,4.533-1.875l-0.146,0.91c-0.055,0.348,0.213,0.66,0.564,0.66h2.949
|
||||
c0.467,0,0.865-0.34,0.938-0.803l1.771-11.209C116.053,13.388,115.785,13.075,115.434,13.075z M110.869,19.449
|
||||
c-0.314,1.871-1.801,3.127-3.695,3.127c-0.949,0-1.711-0.305-2.199-0.883c-0.484-0.574-0.666-1.391-0.514-2.301
|
||||
c0.297-1.855,1.805-3.152,3.67-3.152c0.93,0,1.686,0.309,2.184,0.892C110.816,17.721,111.014,18.543,110.869,19.449z"/>
|
||||
<path fill="#179BD7" d="M119.295,7.23l-2.807,17.858c-0.055,0.346,0.213,0.658,0.562,0.658h2.822c0.469,0,0.867-0.34,0.939-0.803
|
||||
l2.768-17.536c0.055-0.346-0.213-0.659-0.562-0.659h-3.16C119.578,6.749,119.338,6.953,119.295,7.23z"/>
|
||||
<path fill="#253B80" d="M7.266,29.154l0.523-3.322l-1.165-0.027H1.061L4.927,1.292C4.939,1.218,4.978,1.149,5.035,1.1
|
||||
c0.057-0.049,0.13-0.076,0.206-0.076h9.38c3.114,0,5.263,0.648,6.385,1.927c0.526,0.6,0.861,1.227,1.023,1.917
|
||||
c0.17,0.724,0.173,1.589,0.007,2.644l-0.012,0.077v0.676l0.526,0.298c0.443,0.235,0.795,0.504,1.065,0.812
|
||||
c0.45,0.513,0.741,1.165,0.864,1.938c0.127,0.795,0.085,1.741-0.123,2.812c-0.24,1.232-0.628,2.305-1.152,3.183
|
||||
c-0.482,0.809-1.096,1.48-1.825,2c-0.696,0.494-1.523,0.869-2.458,1.109c-0.906,0.236-1.939,0.355-3.072,0.355h-0.73
|
||||
c-0.522,0-1.029,0.188-1.427,0.525c-0.399,0.344-0.663,0.814-0.744,1.328l-0.055,0.299l-0.924,5.855l-0.042,0.215
|
||||
c-0.011,0.068-0.03,0.102-0.058,0.125c-0.025,0.021-0.061,0.035-0.096,0.035H7.266z"/>
|
||||
<path fill="#179BD7" d="M23.048,7.667L23.048,7.667L23.048,7.667c-0.028,0.179-0.06,0.362-0.096,0.55
|
||||
c-1.237,6.351-5.469,8.545-10.874,8.545H9.326c-0.661,0-1.218,0.48-1.321,1.132l0,0l0,0L6.596,26.83l-0.399,2.533
|
||||
c-0.067,0.428,0.263,0.814,0.695,0.814h4.881c0.578,0,1.069-0.42,1.16-0.99l0.048-0.248l0.919-5.832l0.059-0.32
|
||||
c0.09-0.572,0.582-0.992,1.16-0.992h0.73c4.729,0,8.431-1.92,9.513-7.476c0.452-2.321,0.218-4.259-0.978-5.622
|
||||
C24.022,8.286,23.573,7.945,23.048,7.667z"/>
|
||||
<path fill="#222D65" d="M21.754,7.151c-0.189-0.055-0.384-0.105-0.584-0.15c-0.201-0.044-0.407-0.083-0.619-0.117
|
||||
c-0.742-0.12-1.555-0.177-2.426-0.177h-7.352c-0.181,0-0.353,0.041-0.507,0.115C9.927,6.985,9.675,7.306,9.614,7.699L8.05,17.605
|
||||
l-0.045,0.289c0.103-0.652,0.66-1.132,1.321-1.132h2.752c5.405,0,9.637-2.195,10.874-8.545c0.037-0.188,0.068-0.371,0.096-0.55
|
||||
c-0.313-0.166-0.652-0.308-1.017-0.429C21.941,7.208,21.848,7.179,21.754,7.151z"/>
|
||||
<path fill="#253B80" d="M9.614,7.699c0.061-0.393,0.313-0.714,0.652-0.876c0.155-0.074,0.326-0.115,0.507-0.115h7.352
|
||||
c0.871,0,1.684,0.057,2.426,0.177c0.212,0.034,0.418,0.073,0.619,0.117c0.2,0.045,0.395,0.095,0.584,0.15
|
||||
c0.094,0.028,0.187,0.057,0.278,0.086c0.365,0.121,0.704,0.264,1.017,0.429c0.368-2.347-0.003-3.945-1.272-5.392
|
||||
C20.378,0.682,17.853,0,14.622,0h-9.38c-0.66,0-1.223,0.48-1.325,1.133L0.01,25.898c-0.077,0.49,0.301,0.932,0.795,0.932h5.791
|
||||
l1.454-9.225L9.614,7.699z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 462 KiB |
@@ -1 +0,0 @@
|
||||
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 272.1"><style>.st0{fill:#7289DA;}</style><path class="st0" d="M142.8 120.1c-5.7 0-10.2 4.9-10.2 11s4.6 11 10.2 11c5.7 0 10.2-4.9 10.2-11s-4.6-11-10.2-11zM106.3 120.1c-5.7 0-10.2 4.9-10.2 11s4.6 11 10.2 11c5.7 0 10.2-4.9 10.2-11 .1-6.1-4.5-11-10.2-11z"/><path class="st0" d="M191.4 36.9h-134c-11.3 0-20.5 9.2-20.5 20.5v134c0 11.3 9.2 20.5 20.5 20.5h113.4l-5.3-18.3 12.8 11.8 12.1 11.1 21.6 18.7V57.4c-.1-11.3-9.3-20.5-20.6-20.5zm-38.6 129.5s-3.6-4.3-6.6-8c13.1-3.7 18.1-11.8 18.1-11.8-4.1 2.7-8 4.6-11.5 5.9-5 2.1-9.8 3.4-14.5 4.3-9.6 1.8-18.4 1.3-25.9-.1-5.7-1.1-10.6-2.6-14.7-4.3-2.3-.9-4.8-2-7.3-3.4-.3-.2-.6-.3-.9-.5-.2-.1-.3-.2-.4-.2-1.8-1-2.8-1.7-2.8-1.7s4.8 7.9 17.5 11.7c-3 3.8-6.7 8.2-6.7 8.2-22.1-.7-30.5-15.1-30.5-15.1 0-31.9 14.4-57.8 14.4-57.8 14.4-10.7 28-10.4 28-10.4l1 1.2c-18 5.1-26.2 13-26.2 13s2.2-1.2 5.9-2.8c10.7-4.7 19.2-5.9 22.7-6.3.6-.1 1.1-.2 1.7-.2 6.1-.8 13-1 20.2-.2 9.5 1.1 19.7 3.9 30.1 9.5 0 0-7.9-7.5-24.9-12.6l1.4-1.6s13.7-.3 28 10.4c0 0 14.4 25.9 14.4 57.8 0-.1-8.4 14.3-30.5 15zM303.8 79.7h-33.2V117l22.1 19.9v-36.2h11.8c7.5 0 11.2 3.6 11.2 9.4v27.7c0 5.8-3.5 9.7-11.2 9.7h-34v21.1h33.2c17.8.1 34.5-8.8 34.5-29.2v-29.8c.1-20.8-16.6-29.9-34.4-29.9zm174 59.7v-30.6c0-11 19.8-13.5 25.8-2.5l18.3-7.4c-7.2-15.8-20.3-20.4-31.2-20.4-17.8 0-35.4 10.3-35.4 30.3v30.6c0 20.2 17.6 30.3 35 30.3 11.2 0 24.6-5.5 32-19.9l-19.6-9c-4.8 12.3-24.9 9.3-24.9-1.4zM417.3 113c-6.9-1.5-11.5-4-11.8-8.3.4-10.3 16.3-10.7 25.6-.8l14.7-11.3c-9.2-11.2-19.6-14.2-30.3-14.2-16.3 0-32.1 9.2-32.1 26.6 0 16.9 13 26 27.3 28.2 7.3 1 15.4 3.9 15.2 8.9-.6 9.5-20.2 9-29.1-1.8l-14.2 13.3c8.3 10.7 19.6 16.1 30.2 16.1 16.3 0 34.4-9.4 35.1-26.6 1-21.7-14.8-27.2-30.6-30.1zm-67 55.5h22.4V79.7h-22.4v88.8zM728 79.7h-33.2V117l22.1 19.9v-36.2h11.8c7.5 0 11.2 3.6 11.2 9.4v27.7c0 5.8-3.5 9.7-11.2 9.7h-34v21.1H728c17.8.1 34.5-8.8 34.5-29.2v-29.8c0-20.8-16.7-29.9-34.5-29.9zm-162.9-1.2c-18.4 0-36.7 10-36.7 30.5v30.3c0 20.3 18.4 30.5 36.9 30.5 18.4 0 36.7-10.2 36.7-30.5V109c0-20.4-18.5-30.5-36.9-30.5zm14.4 60.8c0 6.4-7.2 9.7-14.3 9.7-7.2 0-14.4-3.1-14.4-9.7V109c0-6.5 7-10 14-10 7.3 0 14.7 3.1 14.7 10v30.3zM682.4 109c-.5-20.8-14.7-29.2-33-29.2h-35.5v88.8h22.7v-28.2h4l20.6 28.2h28L665 138.1c10.7-3.4 17.4-12.7 17.4-29.1zm-32.6 12h-13.2v-20.3h13.2c14.1 0 14.1 20.3 0 20.3z"/></svg>
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 91 KiB |
BIN
installer_assets/appIcon.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 79 KiB |
@@ -1,39 +0,0 @@
|
||||
var os = require('os')
|
||||
var os = os.platform()
|
||||
|
||||
var path = require('path')
|
||||
var chalk = require('chalk')
|
||||
|
||||
if(os == 'darwin') {
|
||||
console.log(chalk.yellow("Creating installer for Mac OS..."))
|
||||
var createDMG = require('electron-installer-dmg')
|
||||
|
||||
createDMG({
|
||||
appPath: "./out/PreMiD-darwin-x64/PreMiD.app",
|
||||
name: "PreMiD",
|
||||
background: "./installer_assets/dmg-background.png",
|
||||
icon: "./installer_assets/appIcon.icns",
|
||||
contents: [
|
||||
{ x: 500, y: 250, type: 'link', path: '/Applications'},
|
||||
{ x: 175, y: 250, type: 'file', path: path.join(__dirname, './out/PreMiD-darwin-x64/PreMiD.app')}
|
||||
],
|
||||
out: "./dist/installer/",
|
||||
overwrite: true
|
||||
}, function done(err) {
|
||||
if(err) console.error(err);
|
||||
else console.log(chalk.green("Created installer for Mac OS!"))
|
||||
})
|
||||
} else if(os == "win32") {
|
||||
console.log(chalk.yellow("Creating installer for Windows..."))
|
||||
var electronInstaller = require('electron-winstaller');
|
||||
|
||||
resultPromise = electronInstaller.createWindowsInstaller({
|
||||
appDirectory: './out/PreMiD-win32-x64',
|
||||
outputDirectory: './dist/installer/',
|
||||
exe: './PreMiD.exe',
|
||||
iconUrl: 'https://raw.githubusercontent.com/Timeraa/PreMiD/master/installer_assets/appIcon.ico',
|
||||
noMsi: true
|
||||
});
|
||||
|
||||
resultPromise.then(() => console.log(chalk.green("Created installer for Windows!")), (e) => console.log(`No dice: ${e.message}`));
|
||||
}
|
||||
257
installer_assets/installer.xml
Normal file
@@ -0,0 +1,257 @@
|
||||
<project>
|
||||
<shortName>PreMiD</shortName>
|
||||
<fullName>PreMiD</fullName>
|
||||
<version>{{VERSION}}</version>
|
||||
<installerFilename>${product_fullname}-${product_version}-installer_64bit.${platform_exec_suffix}</installerFilename>
|
||||
<wrapLicenseFileText>0</wrapLicenseFileText>
|
||||
<logoImage>../installer_assets/appIcon.png</logoImage>
|
||||
<osxApplicationBundleIcon>../installer_assets/appIcon.icns</osxApplicationBundleIcon>
|
||||
<componentList>
|
||||
<component>
|
||||
<name>default</name>
|
||||
<description>Default Component</description>
|
||||
<canBeEdited>1</canBeEdited>
|
||||
<selected>1</selected>
|
||||
<show>1</show>
|
||||
<folderList>
|
||||
<folder>
|
||||
<description>Program Files</description>
|
||||
<destination>${installdir}</destination>
|
||||
<name>programfiles</name>
|
||||
<platforms>all</platforms>
|
||||
<distributionFileList>
|
||||
<distributionFile>
|
||||
<origin>update.ini</origin>
|
||||
</distributionFile>
|
||||
</distributionFileList>
|
||||
</folder>
|
||||
<folder>
|
||||
<description>Program Files</description>
|
||||
<destination>${installdir}</destination>
|
||||
<name>programfileslinux</name>
|
||||
<platforms>linux</platforms>
|
||||
</folder>
|
||||
<folder>
|
||||
<description>Program Files</description>
|
||||
<destination>${installdir}</destination>
|
||||
<name>programfileswindows</name>
|
||||
<platforms>windows</platforms>
|
||||
<distributionFileList>
|
||||
<distributionDirectory allowWildcards="1">
|
||||
<origin>../dist/PACKAGEDNAME/*</origin>
|
||||
</distributionDirectory>
|
||||
<distributionFile>
|
||||
<origin>../installer_assets/appIcon.ico</origin>
|
||||
</distributionFile>
|
||||
<distributionFile>
|
||||
<origin>../installer_assets/updater.exe</origin>
|
||||
</distributionFile>
|
||||
</distributionFileList>
|
||||
</folder>
|
||||
<folder>
|
||||
<description>Program Files</description>
|
||||
<destination>${installdir}</destination>
|
||||
<name>programfilesosx</name>
|
||||
<platforms>osx</platforms>
|
||||
<distributionFileList>
|
||||
<distributionFile>
|
||||
<origin>../installer_assets/updater.app</origin>
|
||||
</distributionFile>
|
||||
<distributionFile>
|
||||
<origin>../dist/PACKAGEDNAME/PreMiD.app</origin>
|
||||
</distributionFile>
|
||||
</distributionFileList>
|
||||
</folder>
|
||||
</folderList>
|
||||
<startMenuShortcutList>
|
||||
<startMenuShortcut>
|
||||
<comment></comment>
|
||||
<name>${product_fullname}</name>
|
||||
<runAsAdmin>0</runAsAdmin>
|
||||
<runInTerminal>0</runInTerminal>
|
||||
<windowsExec>${installdir}/PreMiD.exe</windowsExec>
|
||||
<windowsExecArgs></windowsExecArgs>
|
||||
<windowsIcon></windowsIcon>
|
||||
<windowsPath>${installdir}/</windowsPath>
|
||||
</startMenuShortcut>
|
||||
</startMenuShortcutList>
|
||||
</component>
|
||||
</componentList>
|
||||
<preInstallationActionList>
|
||||
<kill>
|
||||
<abortOnError>0</abortOnError>
|
||||
<name>${product_fullname}.exe</name>
|
||||
<progressText>Killing ${product_fullname}</progressText>
|
||||
<showMessageOnError>0</showMessageOnError>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>windows</type>
|
||||
</platformTest>
|
||||
</ruleList>
|
||||
</kill>
|
||||
<runProgram>
|
||||
<program>pkill</program>
|
||||
<programArguments>PreMiD</programArguments>
|
||||
<runAs>${env(USER)}</runAs>
|
||||
<useMSDOSPath>0</useMSDOSPath>
|
||||
<workingDirectory>${installdir}/</workingDirectory>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>osx</type>
|
||||
</platformTest>
|
||||
<processTest>
|
||||
<logic>is_running</logic>
|
||||
<name>PreMiD</name>
|
||||
</processTest>
|
||||
</ruleList>
|
||||
</runProgram>
|
||||
<runProgram>
|
||||
<program>${windows_folder_local_appdata}\premid\Update.exe</program>
|
||||
<programArguments>--uninstall</programArguments>
|
||||
<onErrorActionList>
|
||||
<deleteFile>
|
||||
<matchHiddenFiles>1</matchHiddenFiles>
|
||||
<path>${windows_folder_local_appdata}\premid</path>
|
||||
</deleteFile>
|
||||
</onErrorActionList>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>windows</type>
|
||||
</platformTest>
|
||||
<fileExists>
|
||||
<path>${windows_folder_local_appdata}\premid\PreMiD.exe</path>
|
||||
</fileExists>
|
||||
</ruleList>
|
||||
</runProgram>
|
||||
<runProgram>
|
||||
<program>${windows_folder_common_appdata}\${system_username}\premid\Update.exe</program>
|
||||
<programArguments>--uninstall</programArguments>
|
||||
<onErrorActionList>
|
||||
<deleteFile>
|
||||
<matchHiddenFiles>1</matchHiddenFiles>
|
||||
<path>${windows_folder_common_appdata}\${system_username}\premid</path>
|
||||
</deleteFile>
|
||||
</onErrorActionList>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>windows</type>
|
||||
</platformTest>
|
||||
<fileExists>
|
||||
<path>${windows_folder_common_appdata}\${system_username}\premid\PreMiD.exe</path>
|
||||
</fileExists>
|
||||
</ruleList>
|
||||
</runProgram>
|
||||
</preInstallationActionList>
|
||||
<postInstallationActionList>
|
||||
<runProgram>
|
||||
<abortOnError>0</abortOnError>
|
||||
<program>PreMiD.exe</program>
|
||||
<programArguments>&</programArguments>
|
||||
<progressText>Launching PreMiD</progressText>
|
||||
<show>0</show>
|
||||
<showMessageOnError>0</showMessageOnError>
|
||||
<workingDirectory>${installdir}</workingDirectory>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>windows</type>
|
||||
</platformTest>
|
||||
</ruleList>
|
||||
</runProgram>
|
||||
<setInstallerVariableFromRegEx show="0">
|
||||
<name>escaped_installdir</name>
|
||||
<pattern> </pattern>
|
||||
<substitution>\\ </substitution>
|
||||
<text>${installdir}</text>
|
||||
</setInstallerVariableFromRegEx>
|
||||
<runProgram>
|
||||
<program>open</program>
|
||||
<programArguments> ${escaped_installdir}/PreMiD.app</programArguments>
|
||||
<progressText>Launching PreMiD</progressText>
|
||||
<runAs>${env(USER)}</runAs>
|
||||
<useMSDOSPath>0</useMSDOSPath>
|
||||
<workingDirectory>${installdir}/</workingDirectory>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>osx</type>
|
||||
</platformTest>
|
||||
</ruleList>
|
||||
</runProgram>
|
||||
<deleteFile>
|
||||
<path>${installdir}/update</path>
|
||||
</deleteFile>
|
||||
<addDirectoriesToUninstaller>
|
||||
<addContents>1</addContents>
|
||||
<files>${installdir}</files>
|
||||
</addDirectoriesToUninstaller>
|
||||
<deleteFile>
|
||||
<path>${windows_folder_local_appdata}\premid</path>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>windows</type>
|
||||
</platformTest>
|
||||
</ruleList>
|
||||
</deleteFile>
|
||||
</postInstallationActionList>
|
||||
<preUninstallationActionList>
|
||||
<kill>
|
||||
<abortOnError>0</abortOnError>
|
||||
<name>${product_fullname}.exe</name>
|
||||
<progressText>Killing ${product_fullname}</progressText>
|
||||
<showMessageOnError>0</showMessageOnError>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>windows</type>
|
||||
</platformTest>
|
||||
</ruleList>
|
||||
</kill>
|
||||
<runProgram>
|
||||
<program>pkill</program>
|
||||
<programArguments>PreMiD</programArguments>
|
||||
<runAs>${env(USER)}</runAs>
|
||||
<useMSDOSPath>0</useMSDOSPath>
|
||||
<workingDirectory>${installdir}/</workingDirectory>
|
||||
<ruleList>
|
||||
<platformTest>
|
||||
<type>osx</type>
|
||||
</platformTest>
|
||||
<processTest>
|
||||
<logic>is_running</logic>
|
||||
<name>PreMiD</name>
|
||||
</processTest>
|
||||
</ruleList>
|
||||
</runProgram>
|
||||
<deleteFile>
|
||||
<path>${installdir}/update/</path>
|
||||
</deleteFile>
|
||||
<deleteFile>
|
||||
<matchHiddenFiles>1</matchHiddenFiles>
|
||||
<path>${windows_folder_appdata}/${product_fullname}</path>
|
||||
</deleteFile>
|
||||
</preUninstallationActionList>
|
||||
<defaultInstallationMode>unattended</defaultInstallationMode>
|
||||
<enableRollback>0</enableRollback>
|
||||
<enableTimestamp>1</enableTimestamp>
|
||||
<installationScope>user</installationScope>
|
||||
<overwritePolicy>onlyIfNewer</overwritePolicy>
|
||||
<osxApplicationBundleIdentifier>eu.Timeraa.PreMiD</osxApplicationBundleIdentifier>
|
||||
<outputDirectory>../dist/installer</outputDirectory>
|
||||
<productDisplayIcon>${installdir}/appIcon.ico</productDisplayIcon>
|
||||
<saveRelativePaths>1</saveRelativePaths>
|
||||
<unattendedModeUI>minimal</unattendedModeUI>
|
||||
<vendor>Timeraa</vendor>
|
||||
<windowsExecutableIcon>../installer_assets/appIcon.ico</windowsExecutableIcon>
|
||||
<parameterList>
|
||||
<directoryParameter>
|
||||
<name>installdir</name>
|
||||
<description>Installer.Parameter.installdir.description</description>
|
||||
<explanation>Installer.Parameter.installdir.explanation</explanation>
|
||||
<value></value>
|
||||
<default>${platform_install_prefix}/${product_shortname}</default>
|
||||
<allowEmptyValue>0</allowEmptyValue>
|
||||
<cliOptionName>prefix</cliOptionName>
|
||||
<mustBeWritable>1</mustBeWritable>
|
||||
<mustExist>0</mustExist>
|
||||
<width>40</width>
|
||||
</directoryParameter>
|
||||
</parameterList>
|
||||
</project>
|
||||