Compare commits

...

494 Commits

Author SHA1 Message Date
Finn
e1dfe30661 testing out the new funding feature 2019-06-11 03:16:58 +02:00
Florian Metz
54b2561da1 ⬆️ Bump this version already! 2019-05-25 02:58:28 +02:00
Florian Metz
fbba7a30d0 Merge pull request #141 from Janmeeba/stable
Fix for at least 1 hour long Soundcloud tracks.
2019-05-25 02:29:34 +02:00
Jan Tuovinen
6d41e6b962 Fix for at least 1 hour long Soundcloud tracks.
Tracks that are at least one hour long will have two colons so this commit should check whether there are one or two colons in the timestamp, and then calculate the seconds based on that, so as to not ignore seconds when the track exceeds an hour.
2019-05-24 10:01:02 +03:00
Fruxh
ed32aad64a hotfix 2019-05-23 00:14:01 +02:00
Finn
0d7f1657de wrong repo nvm 2019-05-01 23:00:21 +02:00
Finn
e905f01305 Dutch
added Dutch
2019-05-01 22:59:57 +02:00
Fruxh
fcf020658a changed version to 1.3.1.7 2019-04-05 21:47:26 +02:00
Fruxh
4d8cd8a926 shortend summary due to chrome guidelines 2019-04-05 21:46:26 +02:00
Fruxh
ec871c1a41 changed summary 2019-04-05 21:40:52 +02:00
Timeraa
acf7fe3117 Firefox is weird okay... 2019-03-31 04:17:07 +02:00
Timeraa
55f99980cc version bump 2019-03-31 00:00:16 +01:00
Florian Metz
7079cc0d20 Fix Crunchyroll error
Rename crunchyroll.js to Crunchyroll.js (esentially kills extension)
2019-03-30 23:52:52 +01:00
joshuah345
dfb68c512b Rename crunchyroll.js to Crunchyroll.js 2019-03-30 18:50:35 -04:00
Timeraa
85ff73c055 V1.3.1.5 (Hotfix 2) 2019-03-27 23:44:52 +01:00
Fruxh
96bb31de5f another hotfix 2019-03-27 23:43:15 +01:00
Fruxh
b06f13e32a Merge branch 'stable' of https://github.com/PreMiD/PreMiD into stable 2019-03-25 21:48:46 +01:00
Fruxh
512282c446 removed xmas style 2019-03-25 21:48:43 +01:00
Timeraa
0986583365 fix errors 2019-03-25 21:47:42 +01:00
Timeraa
7e5c07c6e5 Stuff + hotfix 2019-03-25 21:37:03 +01:00
Fruxh
99d14139d2 hotfix 2019-03-25 20:48:52 +01:00
Florian Metz
e0e8a66d48 Merge pull request #124 from OfficialCRUGG/stable
Changed "YouTube Presence" to "PreMiD" in Readme
2019-03-17 18:50:43 +01:00
CRUGG
6d029505ed Changed "YouTube Presence" to "PreMiD" in Readme 2019-03-17 18:47:45 +01:00
MulverineX
45227c6628 Commit Spam Bad 2019-03-14 16:58:56 -06:00
MulverineX
76f88ffd66 Delete utils.js 2019-03-14 16:53:03 -06:00
MulverineX
5a6864f26e Delete check-versions.js 2019-03-14 16:52:57 -06:00
MulverineX
8eca4c8054 Delete build.js 2019-03-14 16:52:50 -06:00
MulverineX
1a12ce8992 Delete prod.env.js 2019-03-14 16:52:35 -06:00
MulverineX
db8d6ce4ab Delete index.js 2019-03-14 16:52:26 -06:00
MulverineX
9874c5f417 Delete dev.env.js 2019-03-14 16:51:57 -06:00
MulverineX
9f2e4277bb Delete stylesheet.css 2019-03-14 16:51:48 -06:00
MulverineX
2d933416f8 Delete premid.svg 2019-03-14 16:51:39 -06:00
MulverineX
6886f3081f Delete submit.svg 2019-03-14 16:51:32 -06:00
MulverineX
3edbbda7fa Delete premid-white.svg 2019-03-14 16:51:25 -06:00
MulverineX
7e7160e0bf Delete master-logo.svg 2019-03-14 16:51:19 -06:00
MulverineX
a9f92dc9f3 Delete logo.svg 2019-03-14 16:51:13 -06:00
MulverineX
57d6da52bb Delete logo-big.svg 2019-03-14 16:51:04 -06:00
MulverineX
72dc85d90d Delete localization.svg 2019-03-14 16:50:57 -06:00
MulverineX
ff5ff54e88 Delete learn-more.svg 2019-03-14 16:50:51 -06:00
MulverineX
6ab0fa3fbd Delete early.svg 2019-03-14 16:50:43 -06:00
MulverineX
4d4c02ebb3 Delete Navigation.vue 2019-03-14 16:50:32 -06:00
MulverineX
a34542171c Delete Credits.vue 2019-03-14 16:50:22 -06:00
MulverineX
fce6138031 Delete Help.vue 2019-03-14 16:50:14 -06:00
MulverineX
38c8197989 Delete Settings.vue 2019-03-14 16:50:08 -06:00
MulverineX
b7f4578c34 Delete Share.vue 2019-03-14 16:50:01 -06:00
MulverineX
e5ea72e334 Delete index.js 2019-03-14 16:49:52 -06:00
MulverineX
73a0f610c3 Delete colors.less 2019-03-14 16:49:41 -06:00
MulverineX
ee2d884434 Delete App.vue 2019-03-14 16:49:33 -06:00
MulverineX
a9ac568dc0 Delete main.js 2019-03-14 16:49:25 -06:00
MulverineX
365dac5c2b Delete .gitkeep 2019-03-14 16:49:18 -06:00
MulverineX
511069b641 Delete .gitignore 2019-03-14 16:49:07 -06:00
MulverineX
342d3bbd49 Delete index.html 2019-03-14 16:48:59 -06:00
MulverineX
28da67c0c5 Delete package.json 2019-03-14 16:48:50 -06:00
MulverineX
47c9de2e22 Update Edits (Waiting for timeraa for changelog) 2019-03-09 19:01:33 -07:00
MulverineX
9e6f8c16a5 Installed Page Done 2019-03-09 18:50:45 -07:00
MulverineX
1f8d3aa7f4 Tab Initilization 2019-03-09 17:48:45 -07:00
MulverineX
209c16eff8 Popup Credits Done, Big Settings Progress 2019-03-09 17:41:54 -07:00
Finn
49b0135798 updated links 2019-03-08 21:20:24 +01:00
Finn
f4e9434294 fixed codacy badge (again) 2019-02-05 23:22:36 +01:00
Finn
8068d4e591 initial COC 2019-02-01 23:06:23 +01:00
Fruxh
be9f60abf3 new localization pic 2019-01-30 15:31:36 +01:00
Fruxh
6431afec31 perfection 2019-01-30 15:29:42 +01:00
Fruxh
43c744df59 I SAID GO BACK 2019-01-30 15:14:13 +01:00
Finn
116d7b4365 updated links 2019-01-30 15:06:08 +01:00
Fruxh
3ce0379c99 moved to .github 2019-01-30 14:32:28 +01:00
Fruxh
24a8dfdfdb fixed typos 2019-01-30 14:29:33 +01:00
Finn
3952044a82 intial CONTRIBUTING page 2019-01-30 14:19:22 +01:00
Finn
a11128ae9f intial SUPPORT file 2019-01-30 12:29:07 +01:00
EGGSY
804445637d Fixed the "chat" widget!
Yes I've permission, check: https://the-person-under-this-message.is-inside.me/wJCQDmvw.png
2019-01-22 23:11:40 +03:00
Finn
e9d1718793 added important message ;) 2019-01-21 17:58:51 +01:00
Finn
d9953ff0ac updated browsers 2019-01-21 17:39:40 +01:00
Finn
5433bf013d updated Firefoxinstallation intructions
someone had to do it...
2019-01-21 17:37:08 +01:00
Paz
f8c473d039 Update README.md 2019-01-08 20:23:10 +08:00
Timeraa
1f2054beb7 Organization stuff 2019-01-02 21:25:09 +01:00
Florian Metz
2385942f7c Merge pull request #82 from beescuit/live-elapsed
Add livestream support to youtube
2019-01-02 20:03:59 +01:00
beescoitu
36bef805ea Add livestream support 2019-01-02 16:55:36 -02:00
Fruxh
f9c01d03d3 typos (don't hit me >///<) 2018-12-22 00:52:26 +01:00
Fruxh
f05dcf99ff added userIDs 2018-12-22 00:51:44 +01:00
Florian Metz
1a58cdb08f Merge pull request #63 from xPazz/V1.4
web thingos
2018-12-20 19:03:01 +01:00
Paz
5d6bc5bc55 bad footer n fixes 2018-12-21 01:49:02 +08:00
Paz
edf0c62ce3 make meta all nice 2018-12-21 00:40:47 +08:00
Paz
0a9f3efecc css fixes + discord link 2018-12-20 23:55:20 +08:00
Paz
a7bc98d1e3 now this looks nice 2018-12-20 23:28:22 +08:00
Paz
ac03bc50b7 cool button + new page transition 2018-12-20 23:02:50 +08:00
Paz
61a8d07912 bugfixes & performance 2018-12-20 22:49:28 +08:00
Paz
2d744f1080 Update StoreInstall.vue 2018-12-20 21:33:24 +08:00
Paz
2582fe20db profile page start 2018-12-20 21:31:31 +08:00
Paz
6a322ef9d5 whaoh how did those icons get there 2018-12-20 21:11:04 +08:00
Paz
bbcbd55e5a Update Navbar.vue 2018-12-20 20:48:17 +08:00
Paz
99f6e1b346 hey that looks nice 2018-12-20 20:45:53 +08:00
Paz
a7c564ee20 make fontawesome my daddy, fill contents, dynamic download page 2018-12-20 20:25:22 +08:00
Paz
bf9b6f634c fix some things and make darkmode not autistic 2018-12-20 18:58:46 +08:00
Paz
1698c9311b dark modeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 2018-12-20 18:14:19 +08:00
Paz
6b7c2c6f01 port credits from extension 2018-12-20 17:24:34 +08:00
Paz
54e52758e5 this also works 2018-12-20 16:41:17 +08:00
Paz
4f9a85b3a7 Merge remote-tracking branch 'upstream/master' into V1.4 2018-12-20 16:33:57 +08:00
Paz
7fe63a2cfe sort contributors all nicely 2018-12-20 16:31:08 +08:00
Paz
a7c418ac79 some css 2018-12-20 16:23:29 +08:00
Paz
3a51ce523c poor attempt at making contributors page dynamic 2018-12-20 16:15:46 +08:00
Paz
ff0f8bd86e fix links 2018-12-20 15:35:51 +08:00
Paz
12d4b1448d Update README.md 2018-12-20 15:25:52 +08:00
Paz
3e552f19b5 lotsa things 2018-12-20 15:23:30 +08:00
Fruxh
13e2ce88d5 fixed Credits 2018-12-19 18:51:32 +01:00
Fruxh
276814f2d8 added Proofreader 2018-12-19 18:29:41 +01:00
Fruxh
4263c59117 added Admin 2018-12-19 18:25:29 +01:00
Fruxh
786e1441d7 added Moderator 2018-12-19 18:16:51 +01:00
Fruxh
4100673705 added Designer 2018-12-19 17:55:31 +01:00
Timeraa
759d4475fc undo test 2018-12-19 16:58:12 +01:00
Timeraa
2e986a4bdd test 2018-12-19 16:57:35 +01:00
Timeraa
005afae9aa Sourcerer testing 2018-12-17 20:11:06 +01:00
Timeraa
739cdea934 🐞 {{episode}} Anime4You fix 2018-12-15 20:18:55 +01:00
Timeraa
894e774523 POEditor string update message 2018-12-15 19:40:09 +01:00
Timeraa
397a3f5d80 ♻️ Small Readme.md improvements 2018-12-15 18:41:34 +01:00
Timeraa
c30c6a4cfb ♻️ Name change of TranslationManager 2018-12-15 18:33:10 +01:00
Timeraa
01134c94b8 Better Language management 2018-12-15 17:41:24 +01:00
Timeraa
0cd963a9cf 🐞 {{github_link}} not being replaced 2018-12-15 15:42:12 +01:00
Timeraa
1db452829d Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-12-15 15:32:39 +01:00
Timeraa
9e7d0d7429 ♻️ Small App improvements 2018-12-15 15:32:33 +01:00
Florian Metz
de891f783f Merge pull request #60 from ohlookitsderpy/patch-1
Remove force language on chrome webstore link
2018-12-14 14:00:25 +01:00
David Ralph
dd4922ea77 don't force langauge on chrome url 2018-12-14 12:27:33 +00:00
Fruxh
e0ac7022fc Merge branch 'master' of https://github.com/Timeraa/PreMiD 2018-12-13 18:10:31 +01:00
Fruxh
0809c80965 Twitch fix part 1 2018-12-13 18:10:28 +01:00
Fruxh
1e5e8ef5fc updated services 2018-12-13 17:16:09 +01:00
Fruxh
bc44ee346a new node version? 2018-12-12 17:39:44 +01:00
Fruxh
2ed9a55c9b Added Firefox intructions, updated services 2018-12-12 16:24:20 +01:00
Timeraa
88196afc14 Website OwO 2018-12-12 15:40:37 +01:00
Timeraa
60605eb347 Manifest (Firefox) Remove "applications" for Chrome 2018-12-10 02:30:15 +01:00
Timeraa
d361621dc3 Mommy i fixed a bug! 2018-12-10 02:29:58 +01:00
Florian Metz
1e99b7ffa2 Update ar.json (POEditor.com) 2018-12-10 00:33:50 +01:00
Florian Metz
143e02d16c Update it.json (POEditor.com) 2018-12-10 00:33:48 +01:00
Florian Metz
92cb18389e Update sv.json (POEditor.com) 2018-12-10 00:33:46 +01:00
Florian Metz
ce4383505c Update es.json (POEditor.com) 2018-12-10 00:33:44 +01:00
Florian Metz
6e0ab7f24d Update ru.json (POEditor.com) 2018-12-10 00:33:42 +01:00
Florian Metz
64461d649b Update pt_BR.json (POEditor.com) 2018-12-10 00:33:40 +01:00
Florian Metz
19acd42336 Update pt_PT.json (POEditor.com) 2018-12-10 00:33:38 +01:00
Florian Metz
5d050348ea Update no.json (POEditor.com) 2018-12-10 00:33:36 +01:00
Florian Metz
6d34e8e9bb Update la.json (POEditor.com) 2018-12-10 00:33:34 +01:00
Florian Metz
5a80658ec5 Update he.json (POEditor.com) 2018-12-10 00:33:32 +01:00
Florian Metz
be3ba2219a Update de.json (POEditor.com) 2018-12-10 00:33:30 +01:00
Florian Metz
00026ee452 Update fr.json (POEditor.com) 2018-12-10 00:33:29 +01:00
Florian Metz
706e381f02 Update en.json (POEditor.com) 2018-12-10 00:33:27 +01:00
Florian Metz
d06655316b Update nl.json (POEditor.com) 2018-12-10 00:33:25 +01:00
Florian Metz
17308694d8 Update da.json (POEditor.com) 2018-12-10 00:33:23 +01:00
Timeraa
ef7dfa7709 Missing language files oof 2018-12-10 00:31:54 +01:00
Timeraa
871ece2514 V1.3 ready 2018-12-10 00:13:02 +01:00
Timeraa
106ea10d93 Config fix 2018-12-09 23:37:47 +01:00
Timeraa
5398b98195 Tab Priority fix 2018-12-09 23:34:36 +01:00
Timeraa
4caef40690 V1.3 🤔 2018-12-09 23:09:01 +01:00
Timeraa
a7ab6f11fb POEditor stuff 2018-12-09 15:49:28 +01:00
Fruxh
41b1d68de6 ? 2018-12-09 15:47:33 +01:00
Fruxh
c322c8818b Anime4You Firefox support part1 2018-12-09 15:47:21 +01:00
Timeraa
6a2de3a9a7 Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-12-09 13:54:31 +01:00
Timeraa
f40c52d317 Stuff 2018-12-09 13:53:56 +01:00
Florian Metz
c2774fc562 Merge pull request #55 from Voknehzyr/master
♻️ README.md & LOCALIZATION.md updates
2018-12-08 19:14:47 +01:00
Voknehzyr
bad7fd1234 ♻️ More fixes for god of fixes
Too hard to create all these names for commits, :feelsbad:
2018-12-08 21:12:43 +03:00
Voknehzyr
3bc2227f70 🐛 Fix implemented
* Table now displays correctly.
2018-12-08 21:07:11 +03:00
Voknehzyr
8c2c25ad52 ♻️ README.md & LOCALIZATION.md
* Unused text removed
* More information for translators
* Text improvements
2018-12-08 21:03:03 +03:00
Florian Metz
0dc4511f0f Merge pull request #53 from simon511000/patch-1
Update fr.json
2018-12-08 14:39:14 +01:00
simon511000
3cdf057be5 Update fr.json 2018-12-08 14:34:11 +01:00
Timeraa
727e11996c Tab Priority message showing after page reload 2018-12-08 01:55:49 +01:00
Timeraa
7259154e0c Yet another Tab Priority bug fix 2018-12-08 01:34:04 +01:00
Timeraa
8e5212b37a Netflix overhaul 2018-12-08 00:33:50 +01:00
Timeraa
b09b4929ea Tab Priority bug fixes 2018-12-08 00:02:33 +01:00
Timeraa
5629bb63c0 Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-12-07 23:03:07 +01:00
Timeraa
2c100466c4 Moar firefox lul 2018-12-07 23:02:52 +01:00
Florian Metz
a963567d95 Merge pull request #52 from Voknehzyr/master
♻️ Readme major update
2018-12-07 18:53:36 +01:00
Voknehzyr
6f9b1586bf ♻️ Readme updates
* Badge improvements.
2018-12-07 20:50:53 +03:00
Voknehzyr
3076ed37dd ♻️ Readme major update
* Heading images and donation buttons are now centered.
* Improved tables
* System support more infromative now.
* Part of donation options are hidden now.
* Some improvements in code.
2018-12-07 20:39:13 +03:00
Timeraa
38fe1c60f6 Firefox stuffs again 2018-12-07 17:53:07 +01:00
Timeraa
fc551a7acd Discord banner 2018-12-07 15:23:17 +01:00
Timeraa
1e974807e5 Moar Firefox stuff 2018-12-06 18:04:44 +01:00
Timeraa
0dc258ebde Firefox LAOL 2018-12-05 14:38:01 +01:00
Timeraa
b26e92ecb7 Firefox extension V0.0.0......1 :3 2018-12-04 21:22:02 +01:00
Timeraa
6488a62c45 Lazyness is overwhelming 2018-12-02 19:34:20 +01:00
Timeraa
cf3825be83 Discord link update duh 2018-12-02 18:56:23 +01:00
Timeraa
a4bb14d1a0 Language system improvements 2018-12-02 17:04:43 +01:00
Florian Metz
a5e431e31c Update no.json (POEditor.com) 2018-12-02 02:31:56 +01:00
Florian Metz
4005f2c6de Update pt_BR.json (POEditor.com) 2018-12-02 02:31:54 +01:00
Florian Metz
b0b9be552b Update sv.json (POEditor.com) 2018-12-02 02:31:53 +01:00
Florian Metz
acacdc870a Update es.json (POEditor.com) 2018-12-02 02:31:51 +01:00
Florian Metz
66a89572ca Update ru.json (POEditor.com) 2018-12-02 02:31:49 +01:00
Florian Metz
a12c817821 Update pt_PT.json (POEditor.com) 2018-12-02 02:31:47 +01:00
Florian Metz
d19912ff5b Update la.json (POEditor.com) 2018-12-02 02:31:45 +01:00
Florian Metz
111ede487d Update he.json (POEditor.com) 2018-12-02 02:31:43 +01:00
Florian Metz
6f7ca3cb5e Update de.json (POEditor.com) 2018-12-02 02:31:41 +01:00
Florian Metz
e6b63095ad Update fr.json (POEditor.com) 2018-12-02 02:31:39 +01:00
Florian Metz
a40e8e3c57 Update en.json (POEditor.com) 2018-12-02 02:31:37 +01:00
Florian Metz
0d129be808 Update nl.json (POEditor.com) 2018-12-02 02:31:35 +01:00
Florian Metz
d70ab1beab Update da.json (POEditor.com) 2018-12-02 02:31:33 +01:00
Timeraa
5666cbd9c0 Languages AHH 2018-12-02 02:30:13 +01:00
Timeraa
b0d4eb7c3f credits fix for uneven count 2018-12-02 01:51:53 +01:00
Timeraa
ed5773883b Version bump 2018-12-02 01:36:26 +01:00
Timeraa
fc668cb395 added/removed stuffs 2018-12-02 01:36:20 +01:00
Timeraa
d7746c48f2 YouTube Music improvements 2018-12-02 01:35:56 +01:00
Timeraa
b5cb340a43 Twitch fix 2018-12-02 01:34:44 +01:00
Timeraa
44089e28f7 Anime4You additions x10 2018-12-02 00:02:45 +01:00
Timeraa
1c6fb7f1ac Moar additions 2018-12-01 23:51:33 +01:00
Timeraa
4198b31cd7 Anime4You Bug fixes & additions 2018-12-01 23:44:06 +01:00
Timeraa
638364d3d2 Netflix fix + small additions 2018-12-01 23:28:08 +01:00
Timeraa
e7195e40b0 Readme update 2018-12-01 23:07:40 +01:00
Florian Metz
1e084234fd Merge pull request #45 from Voknehzyr/master
♻️ Small credits tab update
2018-12-01 21:28:56 +01:00
Voknehzyr
833813098d ♻️ Small credits tab update
* `scale` property was decreased
* Colored nicknames work normally now
* Fixed bug with white nicknames when white theme was enabled
2018-12-01 23:25:30 +03:00
Timeraa
df0e27e56a descriptions 2018-12-01 20:00:12 +01:00
Florian Metz
5b8fbf8ea6 Update sv.json (POEditor.com) 2018-12-01 19:51:05 +01:00
Florian Metz
3286d38fc8 Update es.json (POEditor.com) 2018-12-01 19:51:03 +01:00
Florian Metz
8838185cbf Update ru.json (POEditor.com) 2018-12-01 19:51:01 +01:00
Florian Metz
0be5bfd050 Update pt_PT.json (POEditor.com) 2018-12-01 19:50:59 +01:00
Florian Metz
154b265e1f Update la.json (POEditor.com) 2018-12-01 19:50:57 +01:00
Florian Metz
7a9e965cc2 Update he.json (POEditor.com) 2018-12-01 19:50:55 +01:00
Florian Metz
e05a770f51 Update de.json (POEditor.com) 2018-12-01 19:50:53 +01:00
Florian Metz
fd5e5ff7d4 Update fr.json (POEditor.com) 2018-12-01 19:50:51 +01:00
Florian Metz
53e73cc42a Update en.json (POEditor.com) 2018-12-01 19:50:49 +01:00
Florian Metz
c419eef405 Update nl.json (POEditor.com) 2018-12-01 19:50:47 +01:00
Florian Metz
0c24ac38be Update da.json (POEditor.com) 2018-12-01 19:50:45 +01:00
Timeraa
67535d8691 Final touches ugh 2018-12-01 19:49:29 +01:00
Timeraa
1205d5d113 Finishing touches for V1.2.50 2018-12-01 19:28:35 +01:00
Timeraa
7be63d8e99 Show error message when credits could not load 2018-12-01 18:36:49 +01:00
Timeraa
695cf18449 Jonny Jonny, Yes Papa, leaving bot tokens again, Yes Papa 2018-12-01 18:07:39 +01:00
Timeraa
a117d42f67 Credits finished (hopefully lol) 2018-12-01 17:23:34 +01:00
Florian Metz
a98dd3382c Merge pull request #42 from Voknehzyr/master
♻️ Optimizations and additions
2018-12-01 13:29:54 +01:00
Timeraa
34e0755b78 *Should probably not leak my db credentials* 2018-12-01 13:25:12 +01:00
Voknehzyr
975f8d81ce ♻️ Optimizations and additions
* Now themes have transitions when changing
* Usercards now growing a little bit when user hovers them.
2018-12-01 14:34:02 +03:00
Florian Metz
769b6465d1 Merge pull request #40 from Voknehzyr/master
New design reworks
2018-12-01 01:52:44 +01:00
Voknehzyr
12d3a781ff 🔧 UI reworks
* Switches has been reworked.
* Small improvements in styles.
* Updated dark style for notification.
2018-12-01 00:59:13 +03:00
Voknehzyr
0bab251f3d Merge branch 'master' of https://github.com/Timeraa/PreMiD 2018-11-30 20:22:09 +03:00
Voknehzyr
8eb0d43287 Popup revision
New styles and improvements for current elements.
2018-11-30 20:19:13 +03:00
Timeraa
44e69429ad *everything else, i am lazy to name this* 2018-11-29 22:36:57 +01:00
Timeraa
d787de821a Language stuff AHHHH 2018-11-29 22:36:36 +01:00
Timeraa
7c616718fd Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-11-29 21:35:52 +01:00
Timeraa
2edfab25d7 New Update tab 2018-11-29 21:35:42 +01:00
Timeraa
584fc6088e Readme changes lul 2018-11-29 21:31:37 +01:00
Timeraa
99254b3315 URL fix for some providers 2018-11-29 19:20:29 +01:00
Timeraa
e5f3d86b9f New Installation tab 2018-11-29 19:20:07 +01:00
Florian Metz
0322aeada2 Merge pull request #36 from Leeo97one/patch-1
👍
2018-11-28 23:26:28 +01:00
Léo
6d9ca8a820 Add build instructions for Linux 2018-11-28 23:25:03 +01:00
Finn
c57f647ddd Xmas icon :3 2018-11-28 22:27:11 +01:00
Timeraa
1f5669532f Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-11-28 21:59:44 +01:00
Timeraa
055d6a6790 Show Connection once 2018-11-28 21:59:26 +01:00
Finn
9eb03f2c16 Merge branch 'master' of https://github.com/Timeraa/PreMiD 2018-11-28 21:51:23 +01:00
Finn
f6569f5091 Pokyun support part 3 2018-11-28 21:51:20 +01:00
Timeraa
cb0a632944 OOPS 2018-11-28 21:51:04 +01:00
Timeraa
576c3cc7d2 FIX LAOL 2018-11-28 21:50:21 +01:00
Timeraa
8490e93b99 LOL 2018-11-28 21:47:42 +01:00
Timeraa
31d318b7d2 Fixed message width 2018-11-28 21:47:29 +01:00
Finn
cd50872acb Pandora support part 2 2018-11-28 21:21:51 +01:00
Finn
ff7ff8ee58 Pokyun support part 1 2018-11-28 21:21:37 +01:00
Finn
14d29dc167 Another surprise fix :3 2018-11-28 20:37:11 +01:00
Finn
99aa8579cd Another surprise ;) 2018-11-28 17:59:53 +01:00
Finn
5df7be8fef Pandora support part 1 2018-11-28 17:23:13 +01:00
Timeraa
4fbd56cf08 BitCoin :O 2018-11-28 04:12:22 +01:00
Timeraa
01f9ccdb4d link fix ugh 2018-11-27 22:16:06 +01:00
Timeraa
c6749105e0 Linux installation note 2018-11-27 22:14:56 +01:00
Timeraa
7a582a6576 Small organisations 2018-11-27 21:49:12 +01:00
Timeraa
dfab4af72c Remove unused fonts 2018-11-27 21:47:03 +01:00
Timeraa
a200246843 Fixed font loading issue 2018-11-27 21:45:04 +01:00
Timeraa
89a6c467d4 Add languages to availableLanguages 2018-11-27 21:40:41 +01:00
Timeraa
a4bc108cdc Merge conflicts AGAIN AHHHH 2018-11-27 21:36:39 +01:00
Timeraa
d0f5b803fa Credits (WIP) 2018-11-27 21:34:07 +01:00
Timeraa
10f1acc0ac Functions async & await for every getString() 2018-11-27 21:33:48 +01:00
Timeraa
10da4bc4e6 Faster & reliable getString() method 2018-11-27 21:26:04 +01:00
Finn
cb6d5865a4 Google support part 1 2018-11-27 17:59:48 +01:00
Finn
fe19187dad JKAnime iFrame fix part 1 2018-11-27 17:49:20 +01:00
Finn
024e9b247e 9Anime part 3 2018-11-27 17:49:08 +01:00
Finn
d058940728 socketConnector fix :3 2018-11-27 17:21:11 +01:00
Finn
5ca16e8f1c 9Anime part 2 2018-11-27 17:18:00 +01:00
Finn
d52ddfed36 9Anime part 1 2018-11-27 17:15:34 +01:00
Timeraa
b1ba8e4d6e getString() fix 2018-11-27 17:07:46 +01:00
Timeraa
2e9c5d3bac Ew comments 2018-11-27 17:07:32 +01:00
Florian Metz
ac79d8482f Update sv.json (POEditor.com) 2018-11-27 16:52:42 +01:00
Florian Metz
597594b5bc Update es.json (POEditor.com) 2018-11-27 16:52:40 +01:00
Florian Metz
7736259f70 Update ru.json (POEditor.com) 2018-11-27 16:52:38 +01:00
Florian Metz
f3558f4aa7 Update pt_PT.json (POEditor.com) 2018-11-27 16:52:36 +01:00
Florian Metz
e6fa3dd823 Update la.json (POEditor.com) 2018-11-27 16:52:34 +01:00
Florian Metz
c4b1502385 Update he.json (POEditor.com) 2018-11-27 16:52:32 +01:00
Florian Metz
ccb75f4166 Update de.json (POEditor.com) 2018-11-27 16:52:30 +01:00
Florian Metz
bc3932d008 Update fr.json (POEditor.com) 2018-11-27 16:52:28 +01:00
Florian Metz
9e29398b11 Update en.json (POEditor.com) 2018-11-27 16:52:25 +01:00
Florian Metz
a0646862fc Update nl.json (POEditor.com) 2018-11-27 16:52:23 +01:00
Florian Metz
2085b0340f Update da.json (POEditor.com) 2018-11-27 16:52:21 +01:00
Timeraa
1550997d55 Merge conflict AHH 2018-11-27 16:51:39 +01:00
Timeraa
18f6c24809 Updated Language file stuff 2018-11-27 16:50:26 +01:00
Florian Metz
7c387140d4 Prevent deletion of all POEditor strings :3 2018-11-26 23:58:53 +01:00
Finn
91765df50d Rabb.it language support 2018-11-26 23:48:46 +01:00
Finn
ac4cd8f5c6 Rabb.it support 2018-11-26 23:48:28 +01:00
Finn
27ef9efb38 SuperAnimes language support 2018-11-26 23:01:36 +01:00
Finn
874dd9ff62 SuperAnimes support 2018-11-26 23:01:00 +01:00
Timeraa
a3cce7edcd Fixed old Translation stuffs 2018-11-26 18:49:40 +01:00
Timeraa
1ac98acefd Merge conflicts... 2018-11-26 18:45:01 +01:00
Timeraa
9370a9331b Stuffs.... 2018-11-26 18:42:30 +01:00
Finn
cfe2522699 YouTubeTV support 2018-11-26 17:58:52 +01:00
Florian Metz
ee9bd8dd1a Update en.json (POEditor.com) 2018-11-26 15:46:05 +01:00
Finn
532ac4f8a7 Big update part ? 2018-11-25 23:28:06 +01:00
Finn
1859fce603 Merge conflict 2018-11-25 21:15:11 +01:00
Finn
452c1da6b8 Rabb.it part 1 2018-11-25 21:06:13 +01:00
Florian Metz
75569abbe2 Update de.json (POEditor.com) 2018-11-25 20:40:44 +01:00
Florian Metz
0ce772a6d6 Update de.json (POEditor.com) 2018-11-25 20:40:21 +01:00
Timeraa
92c28368f6 custom Language System Part 1 2018-11-25 20:31:23 +01:00
Timeraa
216228d9e4 *Part 2* 2018-11-25 15:00:12 +01:00
Timeraa
c13145971a Redesign Part 2 2018-11-25 14:59:20 +01:00
Timeraa
c78e90588a REDESIGN Part 1.... 2018-11-25 14:56:35 +01:00
Finn
8e3b7b0418 Added a secret :3 2018-11-25 14:39:32 +01:00
Florian Metz
f3eac47dc7 Windows 32 bit 2018-11-23 23:09:53 +01:00
Florian Metz
bf7304df3b Merge pull request #31 from kaikecarlos/kaikepatch-1
👍
2018-11-23 13:55:12 +01:00
kaikecarlos
c5ddf1a1c7 Rename dependencies. 2018-11-23 08:35:07 -03:00
kaikecarlos
de951e3ea0 Rename dependencies. 2018-11-23 08:33:30 -03:00
kaikecarlos
44b7e34d7f Rename dependencies. 2018-11-23 08:33:09 -03:00
kaikecarlos
e025496bbc Rename dependencies. 2018-11-23 08:32:34 -03:00
kaikecarlos
db747ea246 Update index.js 2018-11-23 08:31:52 -03:00
kaikecarlos
84c1110f18 electron-config has been renamed to "electron-store"
https://www.npmjs.com/package/electron-store
2018-11-23 08:30:16 -03:00
Fruxh
73253cda17 Updated language code 2018-11-22 21:43:47 +01:00
Fruxh
34f6ac59f6 Version bump 2018-11-22 21:22:43 +01:00
Fruxh
da814b0a5a Renamed language folder 2018-11-22 21:17:23 +01:00
Fruxh
99421e7617 Added Portuguese 2018-11-22 21:14:10 +01:00
Fruxh
c30eb02d91 Added French 2018-11-22 21:13:31 +01:00
Fruxh
59185b6112 Added Spanish 2018-11-22 21:12:50 +01:00
Timeraa
79c070ec0d version bump 2018-11-19 17:52:06 +01:00
Florian Metz
ce4b1c8014 Update messages.json (POEditor.com) 2018-11-19 17:48:27 +01:00
Florian Metz
3d3d44440a Update messages.json (POEditor.com) 2018-11-19 17:48:25 +01:00
Florian Metz
a91f7126e1 Update messages.json (POEditor.com) 2018-11-19 17:48:23 +01:00
Florian Metz
d9358b6134 Update messages.json (POEditor.com) 2018-11-19 17:48:21 +01:00
Florian Metz
fd4cdcaba6 Update messages.json (POEditor.com) 2018-11-19 17:48:19 +01:00
Florian Metz
13fd612b50 Update messages.json (POEditor.com) 2018-11-19 17:48:17 +01:00
Florian Metz
905872232d Update messages.json (POEditor.com) 2018-11-19 17:48:15 +01:00
Florian Metz
409fa79f59 Update messages.json (POEditor.com) 2018-11-19 17:48:13 +01:00
Timeraa
82304058b2 lets pull some languages... 2018-11-19 17:47:03 +01:00
Florian Metz
ec457a0e44 Merge pull request #23 from Voknehzyr/master
Improvements in updateChecker.js
2018-11-19 13:57:39 +01:00
Voknehzyr
f176938831 🎨 Improvements in updateChecker.js 2018-11-19 14:54:51 +03:00
Timeraa
33c5a40e9f Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-11-18 22:41:39 +01:00
Timeraa
57874362c3 Version bump 2018-11-18 22:41:35 +01:00
Timeraa
c1581f3845 Connection message fix oops 2018-11-18 22:41:29 +01:00
Florian Metz
72d510a6c1 Merge pull request #22 from Voknehzyr/master
Russian translation arrived 👍
2018-11-18 22:04:09 +01:00
Voknehzyr
723233be84 🇷🇺 Russian translation arrived.
First version of Russian translation, I tried to make it more user-friendly.
2018-11-18 23:40:47 +03:00
Timeraa
ad9a0b2f50 Small changes to FimFiction.js 2018-11-18 18:27:09 +01:00
Timeraa
b881ea1e03 FimFiction Semi-Support 2018-11-18 18:11:50 +01:00
Timeraa
e2fb3802d7 Linux support (hopefully) 2018-11-17 11:53:55 +01:00
Timeraa
eb7674cf04 Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-11-17 11:35:53 +01:00
Timeraa
3ee169ba14 Donator stuffs 2018-11-17 11:35:48 +01:00
Florian Metz
4a903053de Linux support? 2018-11-17 11:25:59 +01:00
Timeraa
961ad02e8a #BugFixingTime 2018-11-16 20:03:27 +01:00
Timeraa
472a063979 Image fix OwO 2018-11-16 20:03:05 +01:00
Timeraa
4fd61c97df Typo 🤦 2018-11-10 14:05:06 +01:00
Timeraa
5b81c31ba2 Organisation done? I hope lul 2018-11-10 14:03:51 +01:00
Timeraa
ef9507a282 Organisation Part 2 2018-11-10 14:01:12 +01:00
Timeraa
4efe137e82 Updated presence request 2018-11-10 13:59:05 +01:00
Timeraa
cea5a282c2 Updated feature requests 2018-11-10 13:58:30 +01:00
Timeraa
2ad69bf1e9 Rich Presence requests 2018-11-10 13:58:22 +01:00
Timeraa
397cfaf23a Project organisation Part 1 2018-11-10 13:52:30 +01:00
Timeraa
8223c073ef Opera installation update 2018-11-08 15:46:52 +01:00
Timeraa
b564b5d0f6 Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-11-08 15:41:58 +01:00
Timeraa
c744f1ff93 version bump 2018-11-08 15:41:55 +01:00
Fruxh
39656bec03 Added Ko-fi button 2018-11-07 22:43:39 +01:00
Timeraa
5b1f7db2c5 Uncomplete translation fix 2018-11-07 15:41:51 +01:00
Florian Metz
f914026c14 Update messages.json (POEditor.com) 2018-11-07 15:39:14 +01:00
Florian Metz
156150bd36 Create messages.json (POEditor.com) 2018-11-07 15:39:12 +01:00
Florian Metz
99b7e83324 Create messages.json (POEditor.com) 2018-11-07 15:39:10 +01:00
Florian Metz
4222d98e49 Update messages.json (POEditor.com) 2018-11-07 15:39:08 +01:00
Florian Metz
cd00881afb Update messages.json (POEditor.com) 2018-11-07 15:39:06 +01:00
Timeraa
d1cf1e4243 danish translations 2018-11-07 15:38:18 +01:00
Timeraa
cf5227a81f *oof* 2018-11-06 17:51:48 +01:00
Timeraa
2110fbee8d V1.2.3 (Extension) 2018-11-06 17:51:18 +01:00
Timeraa
680116082b Moved links under image 2018-11-06 16:58:03 +01:00
Timeraa
94092eb6af Contributors section gone until something better is found :P 2018-11-02 20:33:44 +01:00
Timeraa
1286fb165c Small syntax fix 2018-11-02 20:27:07 +01:00
Timeraa
36a22bd5eb Example image for Readme 2018-11-02 20:25:52 +01:00
Timeraa
15fa4b80b2 forgot the version 2018-11-02 14:34:13 +01:00
Florian Metz
2c5281a41c Create messages.json (POEditor.com) 2018-11-02 14:33:09 +01:00
Timeraa
2e433d73db Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-11-02 14:32:12 +01:00
Timeraa
1f915c6c5e KissAnime.ru fix 2018-11-02 14:31:57 +01:00
Florian Metz
bec69b3abf Create messages.json (POEditor.com) 2018-11-02 01:52:13 +01:00
Florian Metz
530e82cc6d Windows fixes for V1.2 2018-11-02 01:28:00 +01:00
Timeraa
29765230b1 Basically everything for 1.2 :P 2018-11-01 19:53:24 +01:00
Timeraa
29a556c7d1 Version 1.2 Preparations 2018-11-01 14:58:59 +01:00
Timeraa
7f3d4ba8aa Readme update 2018-10-27 14:24:14 +02:00
Timeraa
9c714c9c4e Small changes here and there 2018-10-27 14:20:34 +02:00
Timeraa
91ef9955b4 More support 2018-10-27 14:20:00 +02:00
Timeraa
97f0f3784d Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-10-26 21:02:42 +02:00
Timeraa
42d903ac16 added some strings 2018-10-26 21:02:39 +02:00
Timeraa
b9111348d3 Rewrites here and there 2018-10-26 21:01:29 +02:00
Fruxh
69b7fa79de fixed hyperlinks 2018-10-21 10:59:49 +02:00
Timeraa
4c67233e83 Readme update 2018-10-21 01:49:32 +02:00
Timeraa
c9d14992b9 Updates... 2018-10-21 01:07:31 +02:00
Timeraa
f06411e018 Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-10-21 01:04:04 +02:00
Timeraa
73b9c419ff Small bug fixes 2018-10-21 01:04:01 +02:00
Florian Metz
e763d98134 Better Readme Part1 2018-10-21 01:01:18 +02:00
Florian Metz
0533256b87 Update messages.json (POEditor.com) 2018-10-21 00:59:42 +02:00
Florian Metz
4d0c874a95 Update messages.json (POEditor.com) 2018-10-21 00:59:40 +02:00
Florian Metz
ae1608e0bb Update messages.json (POEditor.com) 2018-10-21 00:59:38 +02:00
Florian Metz
88ae7c8994 Update messages.json (POEditor.com) 2018-10-21 00:59:36 +02:00
Florian Metz
d697ce8c81 Update messages.json (POEditor.com) 2018-10-21 00:59:34 +02:00
Florian Metz
a684cf1294 Update en_EN.json (POEditor.com) 2018-10-21 00:59:32 +02:00
Timeraa
b9d4028074 Added languages 2018-10-21 00:54:39 +02:00
Timeraa
916cb7e76f V1.1.2 2018-10-21 00:35:15 +02:00
Paz
6dd61af5dd ok!!!!! 2018-10-21 00:05:25 +08:00
Paz
5bee7c0791 eawrgweraghwaehr 2018-10-21 00:01:00 +08:00
Paz
a4a731f04a rehgerhherh 2018-10-21 00:00:48 +08:00
Paz
b15d3c5375 FINAL CHANGES NOW 2018-10-21 00:00:12 +08:00
Paz
99ba73f194 hopefully final changes 2018-10-20 23:59:38 +08:00
Paz
1456c15f91 Update README.md 2018-10-20 23:55:19 +08:00
Paz
8a26580453 Add files via upload 2018-10-20 23:41:49 +08:00
Paz
af393ad0ca Delete donateonpaypal.png 2018-10-20 23:41:37 +08:00
Paz
8a46f3a7d2 Update README.md 2018-10-20 23:41:02 +08:00
Paz
0aff71496c Add files via upload 2018-10-20 23:40:41 +08:00
Paz
f3a5642bcd Delete paypal.png 2018-10-20 23:40:25 +08:00
Paz
b97e6e0870 Update README.md 2018-10-20 23:39:57 +08:00
Paz
3e704c3d22 Update README.md 2018-10-20 23:22:51 +08:00
Paz
ae02fa80ce Update README.md 2018-10-20 23:22:18 +08:00
Paz
ec5c1038b3 Update README.md 2018-10-20 23:21:55 +08:00
Paz
e5e6295a83 Add files via upload 2018-10-20 23:18:57 +08:00
Paz
19560fe60f Add files via upload 2018-10-20 23:13:23 +08:00
Paz
1f1b469a4b Add files via upload 2018-10-20 23:12:22 +08:00
Paz
eb095a7497 Delete patreonBTN.png 2018-10-20 23:11:51 +08:00
Paz
6415b095ab Delete discord-logo.svg 2018-10-20 23:11:39 +08:00
Paz
d93c959da8 Delete developerMode.png 2018-10-20 23:11:28 +08:00
Paz
09893e1409 Delete loadUnpackedExtension.png 2018-10-20 23:11:15 +08:00
Paz
93ec6384d0 Create discord.svg 2018-10-20 23:10:37 +08:00
Paz
a221bf33b2 Delete logo.png 2018-10-20 23:10:07 +08:00
Paz
c7ec3d2197 Delete icon.png 2018-10-20 23:09:57 +08:00
Paz
18d04099fd Create logo.png 2018-10-20 23:09:24 +08:00
Timeraa
fec52ee19f Fix for #15 2018-10-19 14:15:48 +02:00
Timeraa
d87a22da23 Description translations... 2018-10-17 20:23:48 +02:00
Timeraa
4bda273947 Translation update! <3 2018-10-17 20:17:52 +02:00
Timeraa
7c8a2e32b4 Added Patreon link 2018-10-17 19:20:13 +02:00
Timeraa
45e8d0c2b6 Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-10-17 18:06:03 +02:00
Timeraa
3fe0b93567 Help 2018-10-17 18:06:01 +02:00
Timeraa
06147dd5cc small things lul 2018-10-17 18:05:34 +02:00
Florian Metz
44dae3832e Version update 2018-10-16 17:24:47 +02:00
Timeraa
4f06d804e9 Updated Readme.md 2018-10-16 15:19:47 +02:00
Timeraa
fb87b201da Version bump! 2018-10-16 15:10:49 +02:00
Timeraa
a58090b334 Bug fix 2018-10-16 15:08:35 +02:00
Timeraa
0050bfe36f SoundCloud support 2018-10-16 14:58:40 +02:00
Timeraa
d40233cb1e Typo 2018-10-14 19:56:19 +02:00
Timeraa
3125f8e7d1 Updated Readme file 2018-10-14 19:53:18 +02:00
Timeraa
0646fb77f2 Twitch Support and small improvements in Netflix.js 2018-10-14 16:50:46 +02:00
Timeraa
c5a3a17a94 Netflix Support 2018-10-14 14:48:49 +02:00
Timeraa
e4b1880025 forgot the logo... 2018-10-14 12:51:24 +02:00
Timeraa
c0b74c1605 Small changes to Readme 2018-10-14 12:51:09 +02:00
Timeraa
96aed66af2 Presence fix when changing from YouTube to other service 2018-10-13 14:56:04 +02:00
Timeraa
65e23a90a1 Code organisation 2018-10-13 14:49:59 +02:00
Timeraa
f3405b5724 YT Music improvements, Port change + Netflix "semi-support" 2018-10-12 22:16:34 +02:00
Timeraa
5bef1e5663 code cleanup 2018-10-09 19:44:46 +02:00
Timeraa
5120cee05a Extension organisation + Connection info 2018-10-09 19:04:59 +02:00
Timeraa
895e593d02 syntax fix 2018-10-09 19:04:43 +02:00
Timeraa
32d8070119 Faster song/video recognition 2018-10-09 17:32:49 +02:00
Timeraa
46273ecbe5 Fixed decode error (Mac menubar) 2018-10-09 17:27:20 +02:00
Timeraa
4268099a06 Window organisation 2018-10-09 17:26:54 +02:00
Timeraa
921db2f6cb Updated Mac installer 2018-10-09 15:57:22 +02:00
Florian Metz
f640c45464 Shortened description, too long. 2018-10-07 20:14:39 +02:00
Florian Metz
d4dc7a32a4 Updated readme.md 2018-10-07 20:14:07 +02:00
Florian Metz
33e5171742 Final preparation for V1.0 2018-10-07 17:46:25 +02:00
Timeraa
ebb4857782 Fix for RPC not working with autostart 2018-10-07 15:08:03 +02:00
Timeraa
c47d253967 Final? preparations for V1.0 (Mac OS side) 2018-10-07 03:58:39 +02:00
Timeraa
c58e7d2ccf fixes 2018-10-05 18:35:19 +02:00
Timeraa
f3cad86f6f Bug fixes/squirrel stuffs 2018-10-05 18:31:06 +02:00
Timeraa
a23655de42 small changes. 2018-09-23 18:48:31 +02:00
Timeraa
b7b899ea40 Troubleshooting + organisation stuffs 2018-09-22 22:43:03 +02:00
Timeraa
89029b1bc3 Some improvements 2018-09-22 21:30:50 +02:00
Timeraa
9b4212e00c Added new Discord link to readme 2018-09-22 21:30:38 +02:00
Timeraa
6b158e1e23 Oops, uploaded extension 2018-09-22 21:30:27 +02:00
Timeraa
6cae350ef2 Version 1.0 (Dev-build) 2018-09-22 20:33:32 +02:00
Timeraa
3b83738208 Fixed Markdown/HTML errors 2018-09-18 16:15:04 +02:00
Florian Metz
6b894eadf7 Opera Installation
Added instructions for Opera.
2018-09-18 16:13:28 +02:00
MrAlex
13128b6a0f Opera tutorial 2018-09-17 15:38:03 +02:00
Florian Metz
4b84238fb4 Typo 🧐 2018-09-10 17:28:04 +02:00
Timeraa
7345ecde7b Wrong donation link language 2018-08-06 23:26:43 +02:00
Timeraa
8272cf0ade Donation link.... finally :P 2018-08-06 21:34:02 +02:00
Timeraa
cae3d41af0 Added Line break for Note: 2018-08-02 21:34:49 +02:00
Timeraa
54061018ea Removed useless line 2018-08-02 21:33:19 +02:00
Timeraa
0281b3c9f9 Readme should now be more useful. 2018-08-02 21:32:18 +02:00
Timeraa
70c8d3f837 Organisation, YTM rewrite semi-done 2018-07-31 14:53:17 +02:00
Timeraa
19dcd072c7 V1.0 handleYTM recode 2018-07-30 16:58:32 +02:00
Timeraa
4c5474cb0f V1.0 preparation 2018-07-30 02:14:33 +02:00
Timeraa
2c5baf6b87 Removed .vscode, oops :P 2018-07-24 21:56:45 +02:00
Timeraa
508c2fe5b6 Fix version 2018-07-24 19:49:03 +02:00
Timeraa
200bd1be74 fixed typo 2018-07-24 19:22:34 +02:00
Timeraa
29617de259 updated package.json 2018-07-24 19:21:08 +02:00
Timeraa
96f1a1153b Merge branch 'master' of https://github.com/Timeraa/YT-Presence 2018-07-24 19:20:23 +02:00
Timeraa
c931fd1737 More useful installation instructions 2018-07-24 19:20:01 +02:00
Florian Metz
8f8e9a538d Merge pull request #2 from Timeraa/beta
Release V0.3
2018-07-24 18:57:57 +02:00
Timeraa
8dbec207cb Version 0.3 2018-07-24 18:51:54 +02:00
Timeraa
4ca0fff9d9 Organisation 2018-07-24 17:07:14 +02:00
Timeraa
97378addf5 Organised Syntax 2018-07-24 17:02:08 +02:00
Timeraa
1888243853 Removed redundant code. 2018-07-24 17:01:50 +02:00
Timeraa
e0e61f7e7d Testing for new GUI 2018-07-21 14:12:59 +02:00
Florian Metz
d2b7054d80 Merge pull request #1 from Timeraa/add-license-1
Create LICENSE
2018-07-21 14:05:19 +02:00
Florian Metz
afbd0a3301 Create LICENSE 2018-07-21 14:05:05 +02:00
Timeraa
5a8c10ba82 - Update notice
* Descriptions
2018-07-21 13:51:16 +02:00
Florian Metz
c1b0aaec2d Added Update Note 2018-07-15 21:28:46 +02:00
Timeraa
3ac0b252ff Installation testing 2018-07-11 19:28:37 +02:00
Timeraa
f199c3051b Installer testing 2018-07-11 19:23:00 +02:00
Timeraa
aa575ee267 Installation tests 2018-07-11 19:10:00 +02:00
Timeraa
20c9120b3f removed reimport 2018-07-11 19:03:47 +02:00
Timeraa
8e17cff31c Change Installer 2018-07-11 18:36:35 +02:00
Timeraa
69641c0b93 Testing Installer 2018-07-11 16:36:40 +02:00
Timeraa
0a39d8622c Installer Testing 2018-07-11 16:10:02 +02:00
213 changed files with 37310 additions and 4053 deletions

30
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,30 @@
# Contributing
## Requiered knowledge
- JavaScript
- html5
- NodeJS
Additional:
- CSS
- [VueJS](https://vuejs.org/)
- [ElectronJS](https://electronjs.org/)
- [NPMjs](https://www.npmjs.com/)
A source code editor is also requiered. We recommend [Visual Studio Code](https://code.visualstudio.com/).
### Installing the components
1. Install [Git](https://git-scm.com/)
2. Install [Node](https://nodejs.org/en/)
### Cloning the project
1. Fork the [repository](https://github.com/PreMiD/PreMiD)
2. Open a terminal and type `git clone https://github.com/PreMiD/PreMiD`
### Coding your vision
Please keep the structure. We don't want to disorganize our project. Chaotic files may not be accepted.

12
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: Timeraa
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
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZU8Q766ACS2WS&lc=US

View File

@@ -1,7 +1,6 @@
---
name: Feature request
about: Suggest an idea for YT Presence
about: Suggest an idea for PreMiD
---
**Is your feature request related to a problem? Please describe.**

View File

@@ -0,0 +1,16 @@
---
name: Service request
about: Suggest Rich Presence support for a website
---
**What's the name of the service?**
Ex. www.youtube.com | YouTube
**What should the Presence display?**
Informations about the current video
**Why do you want support for this service?**
Tell us why you want to have support for this website. Please don't just tell us "I use it all the time"
**Are you able to provide an image for the service? (512x512 minimum)**
If you can provide the logo pls paste a link in here or the image

13
.github/SUPPORT.md vendored Normal file
View File

@@ -0,0 +1,13 @@
# How to get support
## Take a look at the [wiki](https://wiki.premid.app)
Our GitHub wiki is full of information around PreMiD.<br>
Take a look and feel free to contribute if you want to add something new.
## [Open a issue](https://github.com/PreMiD/PreMiD/issues/new/choose) on [GitHub](https://github.com/PreMiD/PreMiD)
Simply open a issue if you don't feel allright.<br>
*Aand there he goes...*
## Ask a staff member in [#support](https://discord.gg/WvfVZ8T)
The team is ready to tell you the secrets of the underworld.<br>
Join our [Discord server](https://discord.gg/WvfVZ8T) and find out what we're hiding.

4
.gitignore vendored
View File

@@ -1,2 +1,6 @@
node_modules
out
dist
server
.vscode
.env

66
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,66 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at contact@premid.app or by contacting a staff member on our [Discord server](https://discord.gg/WvfVZ8T). All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -0,0 +1,5 @@
{
"description": {
"message": "PreMiD adds Discord Rich Presence support to a lot of services you use and love."
}
}

View File

@@ -1,56 +0,0 @@
function updatePresence(tabId, changeInfo, tab) {
if (tab.url) {
// Create a URL object from the current tab URL
const url = new URL(tab.url);
// Parse data
if (tab.url.startsWith("https://music.youtube.com/")) {
const data = {
connected: true,
service: "ytm",
url: tab.url
}
} else {
const data = {
connected: true,
service: "NaN"
}
}
if (!data) return;
$.ajax({
async: true,
crossDomain: true,
url: "http://localhost:3000/",
method: "POST",
headers: {
"content-type": "application/json"
},
processData: false,
data: JSON.stringify(data),
error: function(jqXHR, textStatus, errorThrown) {}
})
}
}
chrome.tabs.onUpdated.addListener(updatePresence);
function sendAlive() {
$.ajax({
async: true,
crossDomain: true,
url: "http://localhost:3000/",
method: "POST",
headers: {
"content-type": "application/json"
},
processData: false,
data: JSON.stringify({
connected: true,
service: "keepAlive"
}),
error: function(jqXHR, textStatus, errorThrown) {}
})
}
setInterval(sendAlive, 1*1000)

View File

@@ -0,0 +1 @@
@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
Extension/css/inputs.css Normal file
View File

@@ -0,0 +1 @@
.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 Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.right{float:right}#content h1{margin:5px}table{margin:5px}tr td:first-child{width:90%}

1
Extension/css/popup.css Normal file

File diff suppressed because one or more lines are too long

1
Extension/css/reset.css Normal file
View File

@@ -0,0 +1 @@
@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
Extension/css/tab.css Normal file
View File

@@ -0,0 +1 @@
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}

View File

@@ -0,0 +1,202 @@
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.

Binary file not shown.

Binary file not shown.

View File

@@ -1,56 +0,0 @@
//* Start interval
window.onload = function() {
setInterval(updateData, 1000);
};
//* Create used variables
let urlForVideo,
songTime,
calcDifference = [];
function updateData() {
if (document.location.href.includes("youtube"))
urlForVideo = document.location.href;
if ($(".ytp-time-current").html() != " ") {
const data = {
connected: true,
service: "yt",
url: urlForVideo,
currentSongTitle: $(".style-scope.ytd-video-primary-info-renderer")
.children()
.eq(2)
.contents()
.first()
.html(),
currentSongAuthor: $(
"#upload-info .style-scope .ytd-video-owner-renderer"
)
.contents()
.first()
.html(),
currentSongStartTime: getSeconds($(".ytp-time-current").html()),
currentSongEndTime: getSeconds($(".ytp-time-duration").html()),
currentSongCover: "NAN"
};
$.ajax({
async: true,
crossDomain: true,
url: "http://localhost:3000/",
method: "POST",
headers: {
"content-type": "application/json"
},
processData: false,
data: JSON.stringify(data),
error: function(jqXHR, textStatus, errorThrown) {}
});
}
}
function getSeconds(string) {
const a = string.split(":");
const seconds = +a[0] * 60 + +a[1];
return seconds;
}

View File

@@ -1,74 +0,0 @@
//* Start interval
window.onload = function() {
setInterval(updateData, 1000);
};
//* Create used variables
let urlForVideo, songTime, calcDifference;
function updateData() {
if (document.location.href.includes("music.youtube")) urlForVideo = document.location.href;
if($(".time-info.style-scope.ytmusic-player-bar").html() != " ") {
songTime = $(".time-info.style-scope.ytmusic-player-bar").html();
calcDifference = songTime.split(" / ", 2);
var currentSongAuthors = []
$(".byline.ytmusic-player-bar").contents().each(function(index, item) {
if(item.classList != undefined) {
if(item.classList.contains("yt-simple-endpoint") == true) {
currentSongAuthors.push(item.innerHTML)
}
}
})
var currentSongAuthorString = ""
if(currentSongAuthors.length == 0 || currentSongAuthors.length == 1) {
currentSongAuthorString = $(".byline.ytmusic-player-bar").contents().first().text()
} else {
for(var i = 0; i < currentSongAuthors.length; i++) {
if(i == currentSongAuthors.length -1) {
currentSongAuthorString = currentSongAuthorString + " - " + currentSongAuthors[i]
} else {
if(i == 0) {
currentSongAuthorString = currentSongAuthorString + currentSongAuthors[i]
} else {
currentSongAuthorString = currentSongAuthorString + ", " + currentSongAuthors[i]
}
}
}
}
const data = {
connected: true,
service: "ytm",
url: urlForVideo,
currentSongTitle: $(".title.style-scope.ytmusic-player-bar").html(),
currentSongAuthor: currentSongAuthorString,
currentSongStartTime: getSeconds(calcDifference[0]),
currentSongEndTime: getSeconds(calcDifference[1]),
currentSongCover: $(".image.style-scope.ytmusic-player-bar").attr("src")
};
$.ajax({
async: true,
crossDomain: true,
url: "http://localhost:3000/",
method: "POST",
headers: {
"content-type": "application/json"
},
processData: false,
data: JSON.stringify(data),
error: function(jqXHR, textStatus, errorThrown) {}
})
}
}
function getSeconds(string) {
const a = string.split(":");
const seconds = +a[0] * 60 + +a[1];
return seconds;
}

278
Extension/html/popup.html Normal file
View File

@@ -0,0 +1,278 @@
<!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">Rabb.it</h5></td>
<td>
<div class="switch">
<label>
<input
type="checkbox"
class="toggleRabbit rabbit"
/><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>
<tr>
<td><h5 id="pMiDOption">Aniflix</h5></td>
<td>
<div class="switch">
<label>
<input
type="checkbox"
class="toggleAniflix aniflix"
/><span class="lever"></span>
</label>
</div>
</td>
</tr>
<tr>
<td><h5 id="pMiDOption">Anime4You</h5></td>
<td>
<div class="switch">
<label>
<input
type="checkbox"
class="toggleAnime4You anime4you"
/><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>

BIN
Extension/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

52
Extension/installed.html Normal file
View File

@@ -0,0 +1,52 @@
<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://premid.app/help"
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>

File diff suppressed because one or more lines are too long

193
Extension/js/background.js Normal file
View File

@@ -0,0 +1,193 @@
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
}

47
Extension/js/credits.js Normal file
View File

@@ -0,0 +1,47 @@
//* 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>`;
}

View File

@@ -0,0 +1,4 @@
$(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>'))
})

165
Extension/js/options.js Normal file
View File

@@ -0,0 +1,165 @@
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})
}

18
Extension/js/popup.js Normal file
View File

@@ -0,0 +1,18 @@
$(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)
}

View File

@@ -0,0 +1,71 @@
var playback = false,
videoTitle,
videoAuthor,
videoTimestamps,
playbackBoolean,
smallImageKey,
smallImageText
/**
* Updates the Presence data and sends it back
* to the background.js for further interaction
*/
async function updateData() {
playback =
document.location.pathname.includes("/stream/")
&& iframe_video != null
&& iframe_video.dur != null
? true : false
//* If page has all required propertys
if(playback) {
if($('.entry-title').html().match(new RegExp(" Der Film "), "") != null) {
videoTitle = $('.entry-title').html().replace(new RegExp(" Der Film .*"), "")
videoAuthor = $('.entry-title').html().match(new RegExp("Der Film .*"), "")
} else if($('.entry-title').html().match(new RegExp(" OVA "), "") != null) {
videoTitle = $('.entry-title').html().replace(new RegExp(" OVA .*"), "")
videoAuthor = $('.entry-title').html().match(new RegExp("OVA .*"), "");
} else if($('.entry-title').html().match(new RegExp(" Folge [0-9]*"), "") != " Folge ") {
videoTitle = $('.entry-title').html().replace(new RegExp(" Folge [0-9]* .*"), "")
videoAuthor = $('.entry-title').html().match(new RegExp(" Folge [0-9]* .*"), "")
} else if($('.entry-title').html().match(new RegExp(" Spezial Folge"), "") != null) {
videoTitle = $('.entry-title').html().replace(new RegExp(" Spezial Folge .*"), "")
videoAuthor = $('.entry-title').html().match(new RegExp(" Spezial Folge .*"), "")
} else if($('.entry-title').html().match(new RegExp(" Folge "), "") != null) {
videoTitle = $('.entry-title').html().replace(new RegExp(" Folge .*"), "")
videoAuthor = $('.entry-title').html().match(new RegExp(" Folge .*"), "")
}
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: '521104874738417664',
presenceData: {
details: $('<div/>').html(videoTitle).text(),
state: $('<div/>').html(videoAuthor).text(),
largeImageKey: 'aniflix_lg',
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
smallImageKey: smallImageKey,
smallImageText: smallImageText,
},
trayTitle: $('<div/>').html(videoTitle).text(),
playback: playbackBoolean,
service: 'Aniflix'
}
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})
}
}

View File

@@ -0,0 +1,95 @@
var playback = false,
videoTitle,
videoAuthor,
videoTimestamps,
playbackBoolean,
smallImageKey,
smallImageText,
urlForVideo,
lastURL = null,
startTimeStamp
/**
* 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);
}
playback =
$('.titleshow h1').text().trim() != ""
&& iframe_video.dur != null ? true : false
//* If page has all required propertys
if(playback) {
videoTitle = $('.titleshow h1').html()
videoAuthor = (await getString("presence.episode")).replace("{{episode}}", $('.episoden a.active').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: '517148876273090577',
presenceData: {
details: $('<div/>').html(videoTitle).text(),
state: $('<div/>').html(videoAuthor).text(),
largeImageKey: 'a4y_lg',
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
smallImageKey: smallImageKey,
smallImageText: smallImageText,
},
trayTitle: $('<div/>').html(videoTitle).text(),
playback: playbackBoolean,
service: 'Anime4You'
}
if(playbackBoolean) {
data.presenceData.startTimestamp = videoTimestamps[0]
data.presenceData.endTimestamp = videoTimestamps[1]
} else {
delete data.presenceData.startTimestamp
delete data.presenceData.endTimestamp
}
} else if(!document.location.pathname.includes('/show/')) {
var data = {
clientID: '517148876273090577',
presenceData: {
details: await getString('presence.lookingForAnime'),
largeImageKey: 'a4y_lg',
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
startTimestamp: startTimeStamp
},
trayTitle: $('<div/>').html(videoTitle).text(),
playback: true,
service: 'Anime4You'
}
} else if(document.location.pathname.includes('/show/')) {
var videoTitle = $('.titleshow h1').text().trim(),
videoEpisode = (await getString("presence.episode").replace("{{episode}}", $('.episoden a.active').text()))
var data = {
clientID: '517148876273090577',
presenceData: {
details: $('<div/>').html(videoTitle).text(),
state: $('<div/>').html(videoEpisode).text(),
largeImageKey: 'a4y_lg',
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
startTimestamp: startTimeStamp
},
trayTitle: $('<div/>').html(videoTitle).text(),
playback: true,
service: 'Anime4You'
}
}
chrome.runtime.sendMessage({presence: data})
}

View File

@@ -0,0 +1,54 @@
var playback = false,
videoTitle,
videoAuthor,
videoTimestamps,
playbackBoolean,
smallImageKey,
smallImageText
/**
* 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()
videoAuthor = (await getString("presence.episode")).replace("{{episode}}", $('#showmedia_about_media h4').get(1).innerHTML.trim().match(new RegExp("[0-9].*"))[0]) + " - " + $('#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})
}
}

View File

@@ -0,0 +1,81 @@
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
}

View File

@@ -0,0 +1,111 @@
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 + " &bull; " + author;
});
return songAuthorsString
}

View File

@@ -0,0 +1,95 @@
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})
}

View File

@@ -0,0 +1,59 @@
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 });
}

View File

@@ -0,0 +1,72 @@
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 });
}
}

View File

@@ -0,0 +1,79 @@
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 = $("#upload-info .style-scope .ytd-video-owner-renderer").contents().first().html()
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})
}
}

View File

@@ -0,0 +1,28 @@
$(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)
})

25
Extension/js/updated.js Normal file
View File

@@ -0,0 +1,25 @@
$(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 Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,70 @@
//* 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 Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,66 @@
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]
}

View File

@@ -0,0 +1 @@
{"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":""}

View File

@@ -0,0 +1 @@
{"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"}

View File

@@ -0,0 +1 @@
{"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"}

View File

@@ -0,0 +1 @@
{"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"}

View File

@@ -0,0 +1 @@
{"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"}

View File

@@ -0,0 +1 @@
{"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":""}

View File

@@ -0,0 +1 @@
{"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":"תורמים עכשיו מראים רק הודעות שגיאות באנגלית"}

View File

@@ -0,0 +1 @@
{"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"}

View File

@@ -0,0 +1 @@
{"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":""}

View File

@@ -0,0 +1 @@
{"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":""}

View File

@@ -0,0 +1 @@
{"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":""}

View File

@@ -0,0 +1 @@
{"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":""}

View File

@@ -0,0 +1 @@
{"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"}

View File

@@ -0,0 +1 @@
{"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"}

View File

@@ -0,0 +1 @@
{"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"}

View File

@@ -0,0 +1 @@
{"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":""}

View File

@@ -0,0 +1 @@
{"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":""}

View File

@@ -1,30 +1,78 @@
{
"name": "YT Presence",
"version": "0.1",
"description":
"Show your current YouTube Video / Song in your Discord profile.",
"manifest_version": 2,
"icons": {
"2024": "images/icon.png"
},
"background": {
"scripts": ["jquery-3.2.1.min.js", "background.js"],
"persistent": true
},
"browser_action": {
"default_icon": {
"2024": "images/icon.png"
}
},
"content_scripts": [
{
"js": ["jquery-3.2.1.min.js", "handleYTM.js"],
"matches": ["https://music.youtube.com/*"]
},
{
"js": ["jquery-3.2.1.min.js", "handleYT.js"],
"matches": ["https://www.youtube.com/*"]
}
],
"permissions": ["http://localhost/*", "tabs"]
"name": "PreMiD",
"author": "Timeraa & Fruxh",
"description": "__MSG_description__",
"default_locale": "en",
"version": "1.3.1.9",
"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.aniflix.tv/*" ],
"js": [ "js/presences/Anime/Aniflix.js" ]
},
{
"matches": [ "*://www.anime4you.one/*" ],
"js": [ "js/presences/Anime/Anime4You.js" ]
},
{
"matches": [ "*://www.twitch.tv/*" ],
"js": [ "js/presences/Video/Twitch.js" ]
},
{
"matches": [ "*://www.rabb.it/*" ],
"js": [ "js/presences/Video/Rabb.it.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"
}
}
}

View File

@@ -1,198 +0,0 @@
html,
body {
margin: 0;
padding: 0;
}
body {
transition: 0.5s all ease-out;
width: 200px;
min-height: 200px;
}
button {
height: 30px;
width: 30px;
outline: none;
}
#header {
width: 100%;
height: 50px;
line-height: 50px;
background-color: #ce1d2a;
box-shadow: 0px 0px 8px 2px #cccccc;
}
#header h1 {
position: relative;
margin: 0;
padding: 0;
text-align: center;
font-size: 20px;
color: white;
font-weight: 900;
}
#footer {
overflow: hidden;
position: relative;
bottom: 0;
left: 0;
width: 100%;
height: 50px;
text-align: center;
background-color: rgb(230, 230, 230);
}
#footer p {
margin-top: 5px;
}
#footer a {
text-decoration: none;
color: #2196f3;
}
#footer a:hover {
text-decoration: underline;
color: #1a76c2;
}
#footer #heart {
color: #ff0c1e;
font-size: 20px;
}
#heading {
width: 100%;
text-align: center;
}
#heading h1 {
margin: 5px;
padding: 0;
font-size: 20px;
font-weight: 700;
}
#optionsTable {
width: 100%;
}
#optionsTable table {
width: 90%;
margin-left: 5%;
}
#optionsTable th {
width: 50%;
}
#connectionStatus {
width: 100%;
height: 20px;
}
#connectionBar {
background-color: rgb(30, 243, 30);
width: 100%;
height: 100%;
text-align: center;
line-height: 15px;
}
#connectionBar p {
margin: 0;
padding: 0;
}
.right {
float: right;
}
/* 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: #ccc;
-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.4s;
transition: 0.4s;
border: 1px solid lightgray;
}
input:checked + .slider {
background-color: #2196f3;
}
input:disabled + .slider {
background-color: rgb(160, 160, 160);
cursor: not-allowed;
}
input:disabled + .slider:before {
background-color: lightgray;
border: 1px solid rgb(160, 160, 160);
cursor: not-allowed;
}
input:focus + .slider {
box-shadow: 0 0 1px #2196f3;
}
input:checked + .slider:before {
-webkit-transform: translateX(20px);
-ms-transform: translateX(20px);
transform: translateX(20px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
.noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}

View File

@@ -1,75 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<link href="popup.css" rel="stylesheet">
</head>
<body>
<div id="header">
<h1 class="noselect">YT Presence</h1>
</div>
<div id="content">
<div id="heading">
<h1 class="noselect">Options</h1>
</div>
<div id="optionsTable">
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td class="noselect">Enabled</td>
<td class="right">
<label class="switch">
<input class="togglePresence" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td class="noselect">YouTube</td>
<td class="right">
<label class="switch">
<input class="toggleYouTube" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td class="noselect">YouTube Music</td>
<td class="right">
<label class="switch">
<input class="toggleYouTubeMusic" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="footer">
<p class="noselect">Made with
<span id="heart">&hearts;</span> by
<strong>
<a target="_blank" title="Click to visit Timeraa's GitHub profile." draggable="false" href="https://github.com/Timeraa/">Timeraa</a>
</strong> &
<strong>
<a target="_blank" title="Click to visit RedstoneDaedalus's GitHub profile." draggable="false" href="https://github.com/RedstoneDaedalus/">RedstoneDaedalus</a>
</strong>
</p>
</div>
<div id="connectionStatus">
<div id="connectionBar">
<p class="noselect">Connected to server.</p>
</div>
</div>
<script src="popup.js"></script>
</body>
</html>

View File

@@ -1,68 +0,0 @@
const togglePresence = $(".togglePresence"),
toggleYouTube = $(".toggleYouTube"),
toggleYouTubeMusic = document.getElementsByClassName("toggleYouTubeMusic")[0];
window.onload = function() {
togglePresence.on("change", switchPresence);
toggleYouTube.on("change", switchYouTube);
toggleYouTubeMusic.on("change", switchYouTubeMusic);
if (localStorage.enabled === "true") togglePresence.checked = true;
else {
togglePresence.checked = false;
toggleYouTube.checked = false;
toggleYouTubeMusic.checked = false;
toggleYouTube.disabled = true;
toggleYouTubeMusic.disabled = true;
}
if (localStorage.youtube === "true") {
toggleYouTube.checked = true;
toggleYouTube.disabled = false;
} else toggleYouTube.checked = false;
if (localStorage.youTubeMusic === "true") {
toggleYouTubeMusic.checked = true;
toggleYouTubeMusic.disabled = false;
} else toggleYouTubeMusic.checked = false;
};
function switchPresence() {
if (localStorage.enabled === "true") {
localStorage.enabled = "false";
localStorage.youTube = "false";
localStorage.youTubeMusic = "false";
toggleYouTube.checked = false;
toggleYouTube.disabled = true;
toggleYouTubeMusic.checked = false;
toggleYouTubeMusic.disabled = true;
} else {
localStorage.enabled = "true";
localStorage.youTube = "true";
localStorage.youTubeMusic = "true";
toggleYouTube.checked = true;
toggleYouTube.disabled = false;
toggleYouTubeMusic.checked = true;
toggleYouTubeMusic.disabled = false;
}
}
function switchYouTube() {
if (localStorage.youTube === "true") {
localStorage.youTube = "false";
toggleYouTube.checked = false;
} else {
localStorage.youTube = "true";
toggleYouTube.checked = true;
}
}
function switchYouTubeMusic() {
if (localStorage.youTubeMusic === "true") {
localStorageyouTubeMusic = "false";
toggleYouTubeMusic.checked = false;
} else {
localStorageyouTubeMusic = "true";
toggleYouTubeMusic.checked = true;
}
}

View File

@@ -0,0 +1,84 @@
@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%;
}
}

View File

@@ -0,0 +1,78 @@
/* 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%;
}

View File

@@ -0,0 +1,15 @@
.right {
float: right;
}
#content h1 {
margin: 5px;
}
table {
margin: 5px;
}
tr td:first-child {
width: 90%;
}

342
Extension/scss/popup.scss Normal file
View File

@@ -0,0 +1,342 @@
@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);
}

17
Extension/scss/reset.scss Normal file
View File

@@ -0,0 +1,17 @@
@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;
}

128
Extension/scss/tab.scss Normal file
View File

@@ -0,0 +1,128 @@
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;
}

38
Extension/updated.html Normal file
View File

@@ -0,0 +1,38 @@
<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>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,40 @@
<svg width="208" height="208" viewBox="0 0 208 208" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d)">
<circle cx="104" cy="100" r="100" fill="white"/>
</g>
<g filter="url(#filter1_d)">
<path d="M149.691 32.4765H59.3977C51.7833 32.4765 45.584 38.6759 45.584 46.3576V137.459C45.584 145.141 51.7833 151.34 59.3977 151.34H135.81L132.239 138.875L140.864 146.893L149.017 154.44L163.504 167.243V46.3576C163.504 38.6759 157.305 32.4765 149.691 32.4765Z" fill="#7289DA"/>
</g>
<g filter="url(#filter2_d)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M70 72C70 68.134 73.134 65 77 65H133C136.866 65 140 68.134 140 72V110C140 113.866 136.866 117 133 117H77C73.134 117 70 113.866 70 110V72ZM99.5 90.5L79 105V76L99.5 90.5ZM114.5 77H107.5C106.119 77 105 78.1193 105 79.5C105 80.8807 106.119 82 107.5 82H114.5C115.881 82 117 80.8807 117 79.5C117 78.1193 115.881 77 114.5 77ZM126.5 89C127.881 89 129 90.1193 129 91.5C129 92.8807 127.881 94 126.5 94H107.5C106.119 94 105 92.8807 105 91.5C105 90.1193 106.119 89 107.5 89H126.5ZM129 102.5C129 101.119 127.881 100 126.5 100H107.5C106.119 100 105 101.119 105 102.5C105 103.881 106.119 105 107.5 105H126.5C127.881 105 129 103.881 129 102.5Z" fill="white"/>
</g>
<defs>
<filter id="filter0_d" x="0" y="0" width="208" height="208" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
</filter>
<filter id="filter1_d" x="41.584" y="32.4765" width="125.92" height="142.766" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
</filter>
<filter id="filter2_d" x="66" y="65" width="78" height="60" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,16 @@
<svg width="78" height="60" viewBox="0 0 78 60" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 7C4 3.13401 7.13401 0 11 0H67C70.866 0 74 3.13401 74 7V45C74 48.866 70.866 52 67 52H11C7.13401 52 4 48.866 4 45V7ZM33.5 25.5L13 40V11L33.5 25.5ZM48.5 12H41.5C40.1193 12 39 13.1193 39 14.5C39 15.8807 40.1193 17 41.5 17H48.5C49.8807 17 51 15.8807 51 14.5C51 13.1193 49.8807 12 48.5 12ZM60.5 24C61.8807 24 63 25.1193 63 26.5C63 27.8807 61.8807 29 60.5 29H41.5C40.1193 29 39 27.8807 39 26.5C39 25.1193 40.1193 24 41.5 24H60.5ZM63 37.5C63 36.1193 61.8807 35 60.5 35H41.5C40.1193 35 39 36.1193 39 37.5C39 38.8807 40.1193 40 41.5 40H60.5C61.8807 40 63 38.8807 63 37.5Z" fill="white"/>
</g>
<defs>
<filter id="filter0_d" x="0" y="0" width="78" height="60" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,11 @@
<svg width="100%" height="100%" viewBox="0 0 60 59" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M45.5 53.5V42.5L54 48L45.5 53.5Z" fill="white"/>
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="60" height="59">
<path d="M38 48C38 41.9249 42.9249 37 49 37C51.2136 37 53.2744 37.6538 55 38.7789V0H0V55H40.5143C38.9436 53.0981 38 50.6593 38 48Z" fill="black"/>
<path d="M49 59C55.0751 59 60 54.0751 60 48C60 44.1384 58.0102 40.7416 55 38.7789V55H40.5143C42.5319 57.443 45.5841 59 49 59Z" fill="black"/>
</mask>
<g mask="url(#mask0)">
<path d="M28.4814 6.27539C15.7741 6.60057 15.1674 8.37451 6.65292 18.232C-0.842697 31.3504 6.75744 47.693 18.7606 48.8064L7.94126 38.6266L16.7352 45.502C6.40346 35.3364 8.05776 18.7253 20.466 11.1255L20.4849 11.2126C22.5536 20.7528 24.2772 28.702 27.9276 34.9492C29.8785 27.6612 30.653 23.8801 33.6304 17.8408C32.3271 22.2015 31.6973 24.0426 31.7227 28.1071C33.9929 21.2529 36.0437 17.1177 39.12 13.4218C44.3431 17.521 47.914 30.2057 46.1436 38.3551L47.381 37.0811C46.0486 39.586 43.97 41.8778 41.8381 43.9031L43.5969 43.4767C41.3585 45.875 40.2925 46.6745 37.4145 48.6998C46.9866 48.0705 54.3615 37.3529 52.0824 25.7836C49.8033 14.2142 40.5351 6.61424 28.4814 6.27539Z" fill="#A80E33"/>
<path d="M0.159891 16.9349L0 17.5211L5.54288 15.176C-2.34507 29.6194 4.21046 47.2608 16.8418 48.4866L9.27368 39.7993L15.7226 44.596C4.85002 33.4036 6.44893 18.4804 19.5067 10.1128C21.6925 20.6594 23.1684 26.0248 27.0215 32.924C29.0745 24.8998 30.5506 20.8127 33.6837 14.1634C32.3122 18.9646 31.8982 21.5737 31.9249 26.0486C34.3139 18.5019 35.7227 14.5551 38.9601 10.4859C46.3151 18.9601 48.2338 26.475 47.381 36.9745C48.8548 36.1938 49.5264 35.2056 50.419 32.3376C49.7261 37.8272 47.381 39.9591 42.2112 43.7432C43.6769 43.3355 44.4449 43.0392 45.7289 42.4108C43.5414 45.1265 42.0534 46.4326 39.0667 48.4866C49.1398 47.7937 55.7486 36.2284 53.3503 23.4904C50.9519 10.7524 41.1985 2.38473 28.5138 2.01166C15.1414 2.36968 9.12008 6.08161 0.159891 16.9349Z" fill="#E40813"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,3 @@
<svg width="104" height="22" viewBox="0 0 104 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.28 22H5.65V15.79H8.8C13.93 15.79 16.54 12.04 16.54 8.26C16.54 4.51 13.96 0.76 8.77 0.76H0.28V22ZM5.65 11.02V5.77H8.77C12.01 5.74 12.01 11.05 8.77 11.02H5.65ZM30.7209 22H37.4109L31.6209 14.71C34.2009 13.9 35.7909 11.68 35.7909 7.75C35.6709 2.77 32.2809 0.76 27.9009 0.76H19.4109V22H24.8409V15.25H25.8009L30.7209 22ZM24.8409 10.63V5.77H27.9909C31.3809 5.77 31.3809 10.63 27.9909 10.63H24.8409ZM45.7295 5.8H55.0895V0.76H40.2995V22H55.0895V16.93H45.7295V13.75H54.3395V9.1H45.7295V5.8ZM57.9655 22H63.3355V15.88L62.9755 11.59L63.1255 11.56L65.9755 18.85H69.6655L72.4555 11.56L72.6355 11.59L72.3055 15.88L72.2755 22H77.6755V0.76H72.3055L67.8055 11.14L63.3355 0.76H57.9655V22ZM85.9234 0.76H80.5534V22H85.9234V0.76ZM87.3152 0.879998C87.1952 0.969999 87.1352 3.01 87.1352 5.38V9.73L89.7152 12.04C91.1252 13.3 92.3552 14.35 92.4452 14.35C92.5052 14.35 92.5652 12.46 92.5652 10.18V5.98H94.5752C96.1952 5.98 96.6452 6.07 97.1552 6.49L97.7852 6.97V11.26C97.7852 13.6 97.6952 15.7 97.6352 15.91C97.2752 16.81 96.3452 16.99 91.6352 16.99H87.1352V19.48V22H92.1752C96.6452 22 97.3652 21.94 98.6552 21.49C100.515 20.89 102.045 19.54 102.765 17.89C103.305 16.66 103.335 16.39 103.335 11.47C103.335 6.61 103.305 6.28 102.765 5.11C102.045 3.49 100.605 2.14 98.8052 1.45C97.5752 0.91 96.9452 0.879998 92.4452 0.789999C89.7152 0.729998 87.4052 0.789999 87.3152 0.879998Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,3 @@
<svg width="104" height="22" viewBox="0 0 104 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.28 22H5.65V15.79H8.8C13.93 15.79 16.54 12.04 16.54 8.26C16.54 4.51 13.96 0.76 8.77 0.76H0.28V22ZM5.65 11.02V5.77H8.77C12.01 5.74 12.01 11.05 8.77 11.02H5.65ZM30.7209 22H37.4109L31.6209 14.71C34.2009 13.9 35.7909 11.68 35.7909 7.75C35.6709 2.77 32.2809 0.76 27.9009 0.76H19.4109V22H24.8409V15.25H25.8009L30.7209 22ZM24.8409 10.63V5.77H27.9909C31.3809 5.77 31.3809 10.63 27.9909 10.63H24.8409ZM45.7295 5.8H55.0895V0.76H40.2995V22H55.0895V16.93H45.7295V13.75H54.3395V9.1H45.7295V5.8ZM57.9655 22H63.3355V15.88L62.9755 11.59L63.1255 11.56L65.9755 18.85H69.6655L72.4555 11.56L72.6355 11.59L72.3055 15.88L72.2755 22H77.6755V0.76H72.3055L67.8055 11.14L63.3355 0.76H57.9655V22ZM85.9234 0.76H80.5534V22H85.9234V0.76ZM87.3152 0.879998C87.1952 0.969999 87.1352 3.01 87.1352 5.38V9.73L89.7152 12.04C91.1252 13.3 92.3552 14.35 92.4452 14.35C92.5052 14.35 92.5652 12.46 92.5652 10.18V5.98H94.5752C96.1952 5.98 96.6452 6.07 97.1552 6.49L97.7852 6.97V11.26C97.7852 13.6 97.6952 15.7 97.6352 15.91C97.2752 16.81 96.3452 16.99 91.6352 16.99H87.1352V19.48V22H92.1752C96.6452 22 97.3652 21.94 98.6552 21.49C100.515 20.89 102.045 19.54 102.765 17.89C103.305 16.66 103.335 16.39 103.335 11.47C103.335 6.61 103.305 6.28 102.765 5.11C102.045 3.49 100.605 2.14 98.8052 1.45C97.5752 0.91 96.9452 0.879998 92.4452 0.789999C89.7152 0.729998 87.4052 0.789999 87.3152 0.879998Z" fill="#7289DA"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,31 @@
<html>
<head>
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<link href="https://rsms.me/inter/inter.css" rel="stylesheet">
<link href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" rel="stylesheet">
<link href="static/assets/fonts/stylesheet.css" rel="stylesheet">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="apple-touch-icon" sizes="180x180" href="static/assets/meta/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="static/assets/meta/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="static/assets/meta/favicon-16x16.png">
<link rel="manifest" href="static/assets/meta/site.webmanifest">
<link rel="shortcut icon" href="static/assets/meta/favicon.ico">
<meta name="apple-mobile-web-app-title" content="PreMiD">
<meta name="application-name" content="PreMiD">
<meta name="msapplication-TileColor" content="#ed1c24">
<meta name="msapplication-config" content="static/assets/meta/browserconfig.xml">
<meta name="theme-color" content="#414042">
<style>
</style>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
<script type="text/javascript" src="static/js/manifest.37a2ecbb1d1b7e6c9ada.js"></script><script type="text/javascript" src="static/js/vendor.497e1de4c7ea968ba1b8.js"></script><script type="text/javascript" src="static/js/app.c5388d8d0082e725f8da.js"></script></body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,40 @@
<svg width="208" height="208" viewBox="0 0 208 208" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d)">
<circle cx="104" cy="100" r="100" fill="white"/>
</g>
<g filter="url(#filter1_d)">
<path d="M149.691 32.4765H59.3977C51.7833 32.4765 45.584 38.6759 45.584 46.3576V137.459C45.584 145.141 51.7833 151.34 59.3977 151.34H135.81L132.239 138.875L140.864 146.893L149.017 154.44L163.504 167.243V46.3576C163.504 38.6759 157.305 32.4765 149.691 32.4765Z" fill="#7289DA"/>
</g>
<g filter="url(#filter2_d)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M70 72C70 68.134 73.134 65 77 65H133C136.866 65 140 68.134 140 72V110C140 113.866 136.866 117 133 117H77C73.134 117 70 113.866 70 110V72ZM99.5 90.5L79 105V76L99.5 90.5ZM114.5 77H107.5C106.119 77 105 78.1193 105 79.5C105 80.8807 106.119 82 107.5 82H114.5C115.881 82 117 80.8807 117 79.5C117 78.1193 115.881 77 114.5 77ZM126.5 89C127.881 89 129 90.1193 129 91.5C129 92.8807 127.881 94 126.5 94H107.5C106.119 94 105 92.8807 105 91.5C105 90.1193 106.119 89 107.5 89H126.5ZM129 102.5C129 101.119 127.881 100 126.5 100H107.5C106.119 100 105 101.119 105 102.5C105 103.881 106.119 105 107.5 105H126.5C127.881 105 129 103.881 129 102.5Z" fill="white"/>
</g>
<defs>
<filter id="filter0_d" x="0" y="0" width="208" height="208" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
</filter>
<filter id="filter1_d" x="41.584" y="32.4765" width="125.92" height="142.766" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
</filter>
<filter id="filter2_d" x="66" y="65" width="78" height="60" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,16 @@
<svg width="78" height="60" viewBox="0 0 78 60" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 7C4 3.13401 7.13401 0 11 0H67C70.866 0 74 3.13401 74 7V45C74 48.866 70.866 52 67 52H11C7.13401 52 4 48.866 4 45V7ZM33.5 25.5L13 40V11L33.5 25.5ZM48.5 12H41.5C40.1193 12 39 13.1193 39 14.5C39 15.8807 40.1193 17 41.5 17H48.5C49.8807 17 51 15.8807 51 14.5C51 13.1193 49.8807 12 48.5 12ZM60.5 24C61.8807 24 63 25.1193 63 26.5C63 27.8807 61.8807 29 60.5 29H41.5C40.1193 29 39 27.8807 39 26.5C39 25.1193 40.1193 24 41.5 24H60.5ZM63 37.5C63 36.1193 61.8807 35 60.5 35H41.5C40.1193 35 39 36.1193 39 37.5C39 38.8807 40.1193 40 41.5 40H60.5C61.8807 40 63 38.8807 63 37.5Z" fill="white"/>
</g>
<defs>
<filter id="filter0_d" x="0" y="0" width="78" height="60" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show More