From d6f07b989e5afdd5c12610fbb174d1791ef6479d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germain=20Carr=C3=A9?= Date: Sun, 28 May 2023 02:14:10 +0200 Subject: [PATCH 01/11] Adding https?://user:password@ handling in site domain & fixing grunt release on linux --- Gruntfile.js | 14 +++++---- ...ckages_Grunt.sh => create_package_Grunt.sh | 0 package-lock.json | 30 ++++++++++++------- src/content/js/content_script.js | 4 ++- 4 files changed, 31 insertions(+), 17 deletions(-) rename create_packages_Grunt.sh => create_package_Grunt.sh (100%) mode change 100644 => 100755 diff --git a/Gruntfile.js b/Gruntfile.js index 2c29137..b8eeee0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -105,7 +105,7 @@ module.exports = function (grunt) { options: { stdout: true }, - command: 'create-package_Grunt.sh' + command: './create_package_Grunt.sh' } } }); @@ -113,11 +113,13 @@ module.exports = function (grunt) { // debug group task grunt.registerTask('debug', ['jshint', 'clean:debug', 'sass', 'copy']); - // release group task - grunt.registerTask('release', ['jshint', 'clean:release', 'sass', 'copy:release', 'shell:ps']); - - // Runs the .sh package create. Possibly. - // grunt.registerTask('release', ['jshint', 'clean:release', 'sass', 'copy:release', 'shell:sh']); + if (process.platform === "win32") { + // release group task + grunt.registerTask('release', ['jshint', 'clean:release', 'sass', 'copy:release', 'shell:ps']); + } else { + // Runs the .sh package create. Possibly. + grunt.registerTask('release', ['jshint', 'clean:release', 'sass', 'copy:release', 'shell:sh']); + } // review group task grunt.registerTask('review', ['clean:release', 'copy:release']); diff --git a/create_packages_Grunt.sh b/create_package_Grunt.sh old mode 100644 new mode 100755 similarity index 100% rename from create_packages_Grunt.sh rename to create_package_Grunt.sh diff --git a/package-lock.json b/package-lock.json index bcfde9e..c4e2181 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1613,14 +1613,24 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001289", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001289.tgz", - "integrity": "sha512-hV6x4IfrYViN8cJbGFVbjD7KCrhS/O7wfDgvevYRanJ/IN+hhxpTcXXqaxy3CzPNFe5rlqdimdEB/k7H0YzxHg==", + "version": "1.0.30001489", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz", + "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, "node_modules/chalk": { "version": "4.1.2", @@ -7338,9 +7348,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001289", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001289.tgz", - "integrity": "sha512-hV6x4IfrYViN8cJbGFVbjD7KCrhS/O7wfDgvevYRanJ/IN+hhxpTcXXqaxy3CzPNFe5rlqdimdEB/k7H0YzxHg==", + "version": "1.0.30001489", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz", + "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==", "dev": true }, "chalk": { diff --git a/src/content/js/content_script.js b/src/content/js/content_script.js index 9c47a2b..2bfbb55 100644 --- a/src/content/js/content_script.js +++ b/src/content/js/content_script.js @@ -1061,7 +1061,9 @@ async function init() { $.each(settings.sites, function (i, site) { - if (window.location.href.includes(site.domain)) { + // remove user and password from domain for urls looking like https://user:password@domain/path + let domain = site.domain.replace(/^(https?:\/\/)(.+):(.+)@/, '$1'); + if (window.location.href.includes(domain)) { log(['servarr site match found: ', site]); if (window.location.href.indexOf(site.searchPath) === -1) { From db862621305148878d282168db1b02cda5bb4600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germain=20Carr=C3=A9?= Date: Tue, 30 May 2023 16:45:46 +0200 Subject: [PATCH 02/11] Adding primevideo.com (#142) --- .../assets/images/integrations/primevideo.png | Bin 0 -> 29917 bytes src/content/js/content_script.js | 79 ++++++++++++++++-- src/content/js/core.js | 6 ++ 3 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 src/content/assets/images/integrations/primevideo.png diff --git a/src/content/assets/images/integrations/primevideo.png b/src/content/assets/images/integrations/primevideo.png new file mode 100644 index 0000000000000000000000000000000000000000..89b25da79c10e680d138d82ecf70a83813981f16 GIT binary patch literal 29917 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

N zAs~M>9D^qkJ>7cd(WtG!!bd$c&`5L$D@}LO#?QsUvt{3JeQ1q2H@-n5MDUJzyp%Lk zNd>7ko?AFecT<5~^^F+;$7OkC7dUvt_9zh!&GNu0PUKg`!51r>klijd$vH}u87Bif z>n0}%mUXuJvC;^icue8qn38R?zPQ2*3k$BmafN4cf>A%NbHXHYI>XZ zlngEOx{)7_buNXwn~UsPyGJ(%kUobo$%`3i@56;Htx5=&S7Pl+i{+Z6m@zg8Nt5BCauAr+OIzx?rs_$~oUXElFQ)P##}oMA!;fQv zOGSlf0DMj}eaDvZK#lIoUFKM>-;X!ChC%#vRLx}B{b66SMGX_ZnXiT@P1P!}+>6+` z?(<~7f{;qn9SP&*8O^CcKFY+-Dq<15lnW8*bIKMm`?NC=Q&ZJHpRl(Lv%S{N@&2(W zoSEd4eC3mvUct0S*~6|^>0`IUhyG$iw7MHf~QQMjBkCVIuAH!hm*NaMkgWHqW7HPno^Hgna!1(}t^ts3TY)i%G(H|J=ou@SD*+@JntG(@-3q zsCRzgH~!%)!75iTU4PLV3POF2DKTnvAcRnhyW;uccBW4y*w{$ zRRlvJbMns1+!x0^0kg3#g?E!vB}XC0xzHeHfCFAHWCQ!8W<82svSgLfqtufD>Z=gh z=8&eo82RahSwOvOv8v7q{_^vz6+y(eja)ZR?oqwnqjf-gNiZVHX?# z%g{ekqyupY^|kLf?B>dF{kWa z@Q8IjzKB(0THfoW(7R@Iu*^lck0@yi!7kqdgD9**4Y z>+?#pH+sur1*_*Xoiq#alFxpv*T200DW|#3`*9OpXhxF2DQ&(aN^(5gS-2vdtDd;N zll>f{aEo}Fg4qp#m6C6F~5R=EDPB@JYZdc9-o_TYzac0#M8m9sDYxgVNjf>WT za&!X1dasqcPTgbl`DVF}-A5EfOZ$Izqkv8L(Bh8x>CsLN)4}eIg z1MSii#q3QEeLeTbn#YC0j=ftAXph}7^^GYd_?eA+7_%H5SvF?#(b$tkHNB+Ag(TbS z3_liyAME#|H)@R1Id$RZ99R0jzWB>vG;|TM7%(&+yFGdW8j0##ezBM`s@k)k_9#58&BMT__D6!LT+PB>kn zA`v{3MFpQt7OwFmEsr#7C2xCC7t5dh+AZhM0kO;gSTF!1V8g227Fd9;u6&C(o--)f?$~l}1K0qX2@$hA3Tp|_x+F|7aj7q)>T>Bw8rB+&?eu89l^vq8(;>)ZHc#q|m^tmjm7s z$w3)~Nj4eytzL+Ks<$z8-QLuq;;HwX6v`3n)ERpm5*9YvCvBmMrOE^p|GL}ksDRd5g)GtTT1Isn; zpjy{zi0L^wlQw+Fe2+un!%5>7+KdRf;9716)!1GxvLU~&+EcN3)VZVG@m`+{!1qI> z;(D#ml@IoZNDnx&VQ)O`XuOr^{RvN|;;p063W2H2+8Hhg`J>%`hR$bsgWxj*tu;VU zN=u8LIZLt%(rP)hIt!`q&$1tk6ej&IHy}sw&l?bI0LPzS{J8-Q1#tYi0RlE~{x3Jc zECh}}H=yAFj{om3{3GHYNg&tq|NIO8ix>V~lK(p@{Xcu*AD#T?K0Lydx6&Hs+ggSB{Y{Jm@cMPL7& yN0M?t{^K|N{l>qs>Qi5+k3$muT`lU*4>^2d99(stO5BC+Dc@GRl@EXV@_zu%H~UEd literal 0 HcmV?d00001 diff --git a/src/content/js/content_script.js b/src/content/js/content_script.js index 2bfbb55..c684790 100644 --- a/src/content/js/content_script.js +++ b/src/content/js/content_script.js @@ -730,6 +730,72 @@ locator: 'prepend', imgStyles: 'width: 30px; margin: 7px 0 0 0;' } + }, + // primevideo sonarr + { + id: 'primevideo', + deferMs: 2000, + defaultSite: 'sonarr', + search: { + containerSelector: 'head > title', + selectorType: 'text', + modifiers: [ + { + type: 'replace', + from: /^Prime video: /i, + to: '' + } + ] + }, + where: [ + { + selector: 'input[name=titleType]', + attribute: 'value', + operator: 'eq', + value: 'season' + } + ], + match: { + term: 'www.primevideo.com/detail' + }, + icon: { + containerSelector: 'h1', + locator: 'append', + imgStyles: 'width: 30px;margin: 8px 0 0 8px;' + } + }, + // primevideo radarr + { + id: 'primevideo', + deferMs: 2000, + defaultSite: 'radarr', + search: { + containerSelector: 'head > title', + selectorType: 'text', + modifiers: [ + { + type: 'replace', + from: /^Prime video: /i, + to: '' + } + ] + }, + where: [ + { + selector: 'input[name=titleType]', + attribute: 'value', + operator: 'eq', + value: 'movie' + } + ], + match: { + term: 'www.primevideo.com/detail' + }, + icon: { + containerSelector: 'h1', + locator: 'append', + imgStyles: 'width: 30px;margin: 8px 0 0 8px;' + } }, // myanimelist sonarr { @@ -1104,7 +1170,7 @@ async function init() { function (ii, integration) { /* test the integration should be used by matching against the url */ if (window.location.href.includes(integration.match.term)) { - log(['integration matched to domain: ', integration]); + log(['integration['+ii+'] '+integration.id+' matched to domain: ', integration]); var matchContainer = $(integration.match.containerSelector), site = null; @@ -1137,8 +1203,10 @@ async function init() { } if (site == null) { + log(['integration '+integration.id+' site not found', 'integration', integration]); return; } + log(['integration '+integration.id+' site found: '+site.id, 'site', site, 'integration', integration]); // if the site integration has a where property, then the rules within the where must be evaluated // and asserted to be correct before the integration is used @@ -1146,26 +1214,27 @@ async function init() { $.each(integration.where, function(i, rule) { switch (rule.operator){ case 'eq': + log(['integration '+integration.id+' site '+site.id+' rule: '+rule.attribute+' '+rule.operator+' '+rule.value+', found: '+getElementValue($(rule.selector), rule.attribute)]); if (rule.value !== getElementValue($(rule.selector), rule.attribute)) { site = null; - } - + } break; } }); if (site == null) { + log(['integration '+integration.id+' where rules failed']); return; } + log(['integration '+integration.id+' site '+site.id+' where rules successed']); } - log(['integration matched to site: ', integration, site], $(integration.search.containerSelector)); - // This is a bit janky, but some sites (looking at you trakt) load quite slowly and need the processing to be deferred otherwise the // containers aren't available. Integrations can therefore have a deferMs setting which will be used here to delay execution. // In the case of trakt, page refreshes and tab activations work fine, but page to page navigations don't ¯\_(ツ)_/¯ let deferMs = integration.hasOwnProperty('deferMs') ? integration.deferMs : 0; + log(['integration '+integration.id+' site '+site.id+', in '+deferMs+'ms, will look for '+integration.search.containerSelector, $(integration.search.containerSelector)]); setTimeout(() => { /* iterate all the containers */ $.each($(integration.search.containerSelector), function(i_el, container) { diff --git a/src/content/js/core.js b/src/content/js/core.js index 8ad519b..34cc77c 100644 --- a/src/content/js/core.js +++ b/src/content/js/core.js @@ -244,6 +244,12 @@ let sessionId, image: 'senscritique.png', enabled: true }, + { + id: 'primevideo', + name: 'Prime Video', + image: 'primevideo.png', + enabled: true + }, { id: 'myanimelist', name: 'MyAnimeList', From c5ae0d0094b51b8ea0af2d760ff904250fef19be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germain=20Carr=C3=A9?= Date: Tue, 30 May 2023 16:46:55 +0200 Subject: [PATCH 03/11] Adding betaseries.com (#141) Co-authored-by: Rob Green --- README.md | 2 +- .../assets/images/integrations/betaseries.png | Bin 0 -> 73151 bytes src/content/js/content_script.js | 56 +++++++++++++++++- src/content/js/core.js | 6 ++ 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/content/assets/images/integrations/betaseries.png diff --git a/README.md b/README.md index 208ed57..61a9d1d 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This is an extension for Chromium browsers and Firefox that: 2. When right-clicking selected text on any page this extension exposes a context menu with entries for Sonarr, Radarr, Lidarr and Readarr that allow a direct search for the selected text in a new tab. -3. Adds Servarr icons as direct search links on IMDb, TVDb, TMDb, Trakt, TVmaze, MusicBrainz, Letterboxd, TV Calendar, Rotten Tomatoes, metacritic, simkl, IPTorrents, last.fm, Allociné, SensCritique and MyAnimeList websites. (Only applicable to Sonarr and Radarr at present). +3. Adds Servarr icons as direct search links on IMDb, TVDb, TMDb, Trakt, TVmaze, MusicBrainz, Letterboxd, TV Calendar, Rotten Tomatoes, metacritic, simkl, IPTorrents, last.fm, Allociné, SensCritique, Betaseries and MyAnimeList websites. (Only applicable to Sonarr and Radarr at present). The extension can be disabled from the extension's popup and each context menu item can be disabled from the settings page. diff --git a/src/content/assets/images/integrations/betaseries.png b/src/content/assets/images/integrations/betaseries.png new file mode 100644 index 0000000000000000000000000000000000000000..5bfa96972f6a61f3576d4ce6799ac866c02ac019 GIT binary patch literal 73151 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 vxAnh7C*cr|X|}-IH2oJxQ~sAgmn(2Oe6=d Date: Sat, 22 Jul 2023 14:37:04 +0100 Subject: [PATCH 04/11] add warnings for integrations page --- src/content/js/content_script.js | 107 +++++++++++++++++-------------- src/content/js/core.js | 10 ++- src/content/js/options.js | 34 +++++++--- src/content/sass/options.scss | 35 ++++++++++ src/manifest.json | 2 +- 5 files changed, 128 insertions(+), 60 deletions(-) diff --git a/src/content/js/content_script.js b/src/content/js/content_script.js index 3f4dd96..d031ec6 100644 --- a/src/content/js/content_script.js +++ b/src/content/js/content_script.js @@ -35,7 +35,7 @@ modifiers: [] }, match: { - term: 'imdb.com', + terms: ['imdb.com'], containerSelector: 'meta[property="og:type"]', attribute: 'content', }, @@ -71,7 +71,7 @@ ] }, match: { - term: 'imdb.com', + terms: ['imdb.com'], containerSelector: 'meta[property="og:type"]', attribute: 'content', }, @@ -99,7 +99,7 @@ modifiers: [] }, match: { - term: 'themoviedb.org', + terms: ['themoviedb.org'], containerSelector: 'link[rel="canonical"]', attribute: 'href' }, @@ -135,7 +135,7 @@ ] }, match: { - term: 'themoviedb.org', + terms: ['themoviedb.org'], containerSelector: 'link[rel="canonical"]', attribute: 'href' }, @@ -168,7 +168,7 @@ ] }, match: { - term: 'thetvdb.com', + terms: ['thetvdb.com'], containerSelector: '#series_basic_info', attribute: 'text' }, @@ -196,7 +196,7 @@ modifiers: [] }, match: { - term: 'thetvdb.com', + terms: ['thetvdb.com'], containerSelector: '#series_basic_info', attribute: 'text' }, @@ -234,7 +234,7 @@ ] }, match: { - term: 'trakt.tv', + terms: ['trakt.tv'], containerSelector: '#main-nav ul li a.selected', attribute: 'text' }, @@ -263,7 +263,7 @@ modifiers: [] }, match: { - term: 'trakt.tv', + terms: ['trakt.tv'], containerSelector: '#main-nav ul li a.selected', attribute: 'text' }, @@ -300,7 +300,7 @@ ] }, match: { - term: 'trakt.tv', + terms: ['trakt.tv'], containerSelector: '#main-nav ul li a.selected', attribute: 'text' }, @@ -329,7 +329,7 @@ modifiers: [] }, match: { - term: 'trakt.tv', + terms: ['trakt.tv'], containerSelector: '#main-nav ul li a.selected', attribute: 'text' }, @@ -348,7 +348,7 @@ modifiers: [] }, match: { - term: 'tvmaze.com/shows/' + terms: ['tvmaze.com/shows/'] }, icon: { containerSelector: 'h1.show-for-medium', @@ -365,7 +365,7 @@ modifiers: [] }, match: { - term: 'tvmaze.com/countdown' + terms: ['tvmaze.com/countdown'] }, icon: { containerSelector: 'div.show-name', @@ -388,7 +388,7 @@ ] }, match: { - term: 'musicbrainz.org/artist' + terms: ['musicbrainz.org/artist'] }, icon: { containerSelector: '.artistheader > h1', @@ -410,7 +410,7 @@ ] }, match: { - term: 'letterboxd.com/film/' + terms: ['letterboxd.com/film/'] }, icon: { containerSelector: '#featured-film-header > h1', @@ -427,7 +427,7 @@ modifiers: [] }, match: { - term: 'pogdesign.co.uk/cat' + terms: ['pogdesign.co.uk/cat'] }, icon: { containerSelector: 'p[data-episode]', @@ -444,7 +444,7 @@ modifiers: [] }, match: { - term: 'rottentomatoes.com/m' + terms: ['rottentomatoes.com/m'] }, icon: { containerSelector: 'h1.scoreboard__title', @@ -461,7 +461,7 @@ modifiers: [] }, match: { - term: 'rottentomatoes.com/tv' + terms: ['rottentomatoes.com/tv'] }, icon: { containerSelector: 'h1.title', @@ -493,7 +493,7 @@ modifiers: [] }, match: { - term: 'metacritic.com', + terms: ['metacritic.com'], containerSelector: 'meta[property="og:type"]', attribute: 'content' }, @@ -514,7 +514,7 @@ modifiers: [] }, match: { - term: 'simkl.com/tv', + terms: ['simkl.com/tv'], }, icon: { containerSelector: 'td.SimklTVDetailPoster div:nth-of-type(1)', @@ -534,7 +534,7 @@ modifiers: [] }, match: { - term: 'simkl.com/tv/calendar', + terms: ['simkl.com/tv/calendar'], }, icon: { containerSelector: 'table.SimklTVCalendarDayList > tbody > tr > td > div > div.SimklTVCalendarDayListLink:nth-of-type(1)', @@ -554,7 +554,7 @@ modifiers: [] }, match: { - term: 'simkl.com/movie' + terms: ['simkl.com/movie'] }, icon: { containerSelector: 'td.SimklTVDetailPoster div:nth-of-type(1)', @@ -573,7 +573,7 @@ modifiers: [] }, match: { - term: 'iptorrents.com/tv' + terms: ['iptorrents.com/tv'] }, icon: { containerSelector: 'b.MovieTitle', @@ -600,7 +600,7 @@ ] }, match: { - term: 'iptorrents.com/movies' + terms: ['iptorrents.com/movies'] }, icon: { containerSelector: 'b.MovieTitle', @@ -618,7 +618,7 @@ modifiers: [] }, match: { - term: 'last.fm/music' + terms: ['last.fm/music'] }, icon: { containerSelector: '.header-new-title', @@ -635,7 +635,7 @@ modifiers: [] }, match: { - term: 'last.fm/music' + terms: ['last.fm/music'] }, icon: { containerSelector: '.header-new-crumb > span', @@ -661,7 +661,7 @@ } ], match: { - term: 'allocine.fr/series' + terms: ['allocine.fr/series'] }, icon: { containerSelector: '.titlebar-page .titlebar-title', @@ -687,7 +687,7 @@ } ], match: { - term: 'allocine.fr/film' + terms: ['allocine.fr/film'] }, icon: { containerSelector: '.titlebar-page .titlebar-title', @@ -705,7 +705,7 @@ modifiers: [] }, match: { - term: 'senscritique.com/serie' + terms: ['senscritique.com/serie'] }, icon: { containerSelector: 'h1', @@ -723,7 +723,7 @@ modifiers: [] }, match: { - term: 'senscritique.com/film' + terms: ['senscritique.com/film'] }, icon: { containerSelector: 'h1', @@ -749,7 +749,10 @@ } ], match: { - term: 'betaseries.com/serie' + terms: [ + 'betaseries.com/serie', + 'betaseries.com/en/show' + ] }, icon: { containerSelector: 'h1[class^="blockInformations__title"]', @@ -775,7 +778,10 @@ } ], match: { - term: 'betaseries.com/film' + terms: [ + 'betaseries.com/film', + 'betaseries.com/en/movie' + ] }, icon: { containerSelector: 'h1[class^="blockInformations__title"]', @@ -808,7 +814,7 @@ } ], match: { - term: 'www.primevideo.com/detail' + terms: ['www.primevideo.com/detail'] }, icon: { containerSelector: 'h1', @@ -841,7 +847,7 @@ } ], match: { - term: 'www.primevideo.com/detail' + terms: ['www.primevideo.com/detail'] }, icon: { containerSelector: 'h1', @@ -867,7 +873,7 @@ } ], match: { - term: 'myanimelist.net/anime' + terms: ['myanimelist.net/anime'] }, icon: { containerSelector: 'h1', @@ -893,7 +899,7 @@ } ], match: { - term: 'myanimelist.net/anime' + terms: ['myanimelist.net/anime'] }, icon: { containerSelector: 'h1', @@ -918,7 +924,7 @@ // ] // }, // match: { - // term: 'next-episode.net/movies' + // terms: ['next-episode.net/movies'] // }, // icon: { // containerSelector: 'div[id^="title_"]', @@ -951,7 +957,7 @@ // ] // }, // match: { - // term: 'next-episode.net', + // terms: ['next-episode.net'], // containerSelector: 'body', // selectorType: 'itemType' // }, @@ -1180,7 +1186,7 @@ async function init() { $.each(settings.sites, function (i, site) { // remove user and password from domain for urls looking like https://user:password@domain/path - let domain = site.domain.replace(/^(https?:\/\/)(.+):(.+)@/, '$1'); + let domain = site.domain.replace(/^([http|https]?:\/\/)(.+):(.+)@/, '$1'); if (window.location.href.includes(domain)) { log(['servarr site match found: ', site]); @@ -1221,8 +1227,11 @@ async function init() { $.each(integrations.filter(_i => { return _i.id == settingsIntegration.id; }), function (ii, integration) { /* test the integration should be used by matching against the url */ - if (window.location.href.includes(integration.match.term)) { - log(['integration['+ii+'] '+integration.id+' matched to domain: ', integration]); + if (integration.match.terms + .map(t => window.location.href.includes(t)) + .includes(true)) { + + log([`integration[${ii}] ${integration.id} matched to domain: `, integration]); var matchContainer = $(integration.match.containerSelector), site = null; @@ -1255,10 +1264,11 @@ async function init() { } if (site == null) { - log(['integration '+integration.id+' site not found', 'integration', integration]); + log([`integration ${integration.id} site not found`, 'integration', integration]); return; } - log(['integration '+integration.id+' site found: '+site.id, 'site', site, 'integration', integration]); + + log([`integration ${integration.id} site found: ${site.id}`, 'site', site, 'integration', integration]); // if the site integration has a where property, then the rules within the where must be evaluated // and asserted to be correct before the integration is used @@ -1266,19 +1276,21 @@ async function init() { $.each(integration.where, function(i, rule) { switch (rule.operator){ case 'eq': - log(['integration '+integration.id+' site '+site.id+' rule: '+rule.attribute+' '+rule.operator+' '+rule.value+', found: '+getElementValue($(rule.selector), rule.attribute)]); + log([`integration ${integration.id} site found: ${site.id} rule: ${rule.attribute} ${rule.operator} ${rule.value}, found: ${getElementValue($(rule.selector), rule.attribute)}`]); + if (rule.value !== getElementValue($(rule.selector), rule.attribute)) { site = null; - } + } break; } }); if (site == null) { - log(['integration '+integration.id+' where rules failed']); + log([`integration ${integration.id} where rules failed`]); return; } - log(['integration '+integration.id+' site '+site.id+' where rules successed']); + + log([`integration ${integration.id} site ${site.id} where rules succeeded`]); } // This is a bit janky, but some sites (looking at you trakt) load quite slowly and need the processing to be deferred otherwise the @@ -1286,7 +1298,8 @@ async function init() { // In the case of trakt, page refreshes and tab activations work fine, but page to page navigations don't ¯\_(ツ)_/¯ let deferMs = integration.hasOwnProperty('deferMs') ? integration.deferMs : 0; - log(['integration '+integration.id+' site '+site.id+', in '+deferMs+'ms, will look for '+integration.search.containerSelector, $(integration.search.containerSelector)]); + log([`integration ${integration.id} site ${site.id}, in ${deferMs}ms, will look for ${integration.search.containerSelector}`, $(integration.search.containerSelector)]); + setTimeout(() => { /* iterate all the containers */ $.each($(integration.search.containerSelector), function(i_el, container) { diff --git a/src/content/js/core.js b/src/content/js/core.js index ff603f9..8887bd4 100644 --- a/src/content/js/core.js +++ b/src/content/js/core.js @@ -224,7 +224,8 @@ let sessionId, id: 'iptorrents', name: 'IPTorrents', image: 'iptorrents.png', - enabled: true + enabled: true, + warning: 'IPTorrents requires an account to be actively used or it is removed. The developer does not maintain an active account. This integration is entirely community supported.' }, { id: 'lastfm', @@ -254,7 +255,8 @@ let sessionId, id: 'primevideo', name: 'Prime Video', image: 'primevideo.png', - enabled: true + enabled: true, + warning: 'This integration was created by a community member for the French version of the website and is not maintained by the developer.' }, { id: 'myanimelist', @@ -536,6 +538,10 @@ async function getSettings() { // try to find the integration if (data.sonarrRadarrLidarrAutosearchSettings.integrations.some(integration => integration.id === defaultSettings.integrations[i].id)) { + if (defaultSettings.integrations[i].hasOwnProperty('warning')) { + data.sonarrRadarrLidarrAutosearchSettings.integrations[i].warning = defaultSettings.integrations[i].warning; + } + continue; } diff --git a/src/content/js/options.js b/src/content/js/options.js index 8609fee..3cef545 100644 --- a/src/content/js/options.js +++ b/src/content/js/options.js @@ -402,17 +402,31 @@ var initialiseIntegrationsForm = function (settings) { let wrapper = $('

'); $.each(settings.integrations, function (i, integration) { - wrapper - .append( - $('
') - .append($('
') - .append($(`
`)) - .append($('
') - .append($(`
${integration.name}
`)) - .append($(``).prop('checked', integration.enabled)) - ) - ) + let card = $('
'); + + console.log(integration, 'integration.hasOwnProperty(warning):', integration.hasOwnProperty('warning')); + + if (integration.hasOwnProperty('warning')) { + card + .append($(`
`) + .append($(`
`) + .on('mouseover', function () { + $(`#card-warning-tooltip-${$(this).attr('data-warning-id')}`).css('display', 'block'); + }) + .on('mouseout', function () { + $(`#card-warning-tooltip-${$(this).attr('data-warning-id')}`).css('display', 'none'); + }))) + .append($(`
`).text(integration.warning)); + } + + card + .append($(`
`)) + .append($('
') + .append($(`
${integration.name}
`)) + .append($(``).prop('checked', integration.enabled)) ); + + wrapper.append($('
').append(card)); }); $('#integrationsOptionsForm').prepend(wrapper); diff --git a/src/content/sass/options.scss b/src/content/sass/options.scss index beb5efb..67b82ae 100644 --- a/src/content/sass/options.scss +++ b/src/content/sass/options.scss @@ -54,6 +54,41 @@ a, a:focus, a:hover { margin: 0 auto; } +.card-warning { + position: absolute; + width: 60px; + height: 60px; + top: -30px; + right: -30px; + transform: rotate(45deg); + border: 30px solid transparent; + border-bottom-color: black; + z-index: 10; +} + +.card-warning > div { + color: darkorange; + position: absolute; + top: 3px; + left: -10px; + transform: rotate(-45deg); + cursor: help; + z-index: 10; +} + +.card-warning-tooltip { + display: none; + position: absolute; + top: 0px; + right: 0px; + left: 0px; + bottom: 0px; + padding: 5px; + background-color: rgba(0,0,0,0.9); + z-index: 5; + border-radius: 0.25rem; +} + .list-group-item { background-color: #212529!important; border: 1px solid rgba(255,255,255,0.5); diff --git a/src/manifest.json b/src/manifest.json index d81eaf2..75e3c03 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Sonarr/Radarr/Lidarr autosearch", "description": "Exposes a context menu that enables direct searching for tv shows, movies and other text in Sonarr, Radarr, Lidarr and Readarr.", - "version": "2.7.1.0", + "version": "2.8.0.0", "browser_action": { "default_icon": "content/assets/images/SonarrRadarrLidarr128.png", "default_popup": "popup.html" From 28e9f418c9bbf7370d858cb9829f69ae83eed85a Mon Sep 17 00:00:00 2001 From: Rob Green Date: Sat, 22 Jul 2023 14:52:50 +0100 Subject: [PATCH 05/11] Update manifest.json limit extension to integration URLs --- src/manifest.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index 75e3c03..bd68f8c 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -45,7 +45,23 @@ } ], "permissions": [ - "", + "*://*imdb*", + "*://*themoviedb.org*", + "*://*thetvdb.com*", + "*://*trakt.tv*", + "*://*tvmaze.com*", + "*://*musicbrainz.org*", + "*://*letterboxd.com*", + "*://*pogdesign.co.uk*", + "*://*rottentomatoes.com*", + "*://*metacritic.com*", + "*://*simkl.com*", + "*://*iptorrents*", + "*://*last.fm*", + "*://*allocine.fr*", + "*://*myanimelist.net*", + "*://*betaseries.com*", + "*://*primevideo*", "storage", "activeTab", "contextMenus" From 1261d77eb89c04f2b221707d6fc9d8bc8d6e669f Mon Sep 17 00:00:00 2001 From: Rob Green Date: Sat, 22 Jul 2023 15:26:41 +0100 Subject: [PATCH 06/11] Add new musicbrainz matches & improve URL matching --- src/content/js/content_script.js | 46 ++++++++++++++++++++++++++++++++ src/manifest.json | 34 +++++++++++------------ 2 files changed, 63 insertions(+), 17 deletions(-) diff --git a/src/content/js/content_script.js b/src/content/js/content_script.js index d031ec6..ff5c635 100644 --- a/src/content/js/content_script.js +++ b/src/content/js/content_script.js @@ -396,6 +396,52 @@ imgStyles: 'width: 26px; margin: 0 5px -4px 0;' } }, + { + id: 'musicbrainz', + defaultSite: 'lidarr', + search: { + containerSelector: '.rgheader > h1 > a', + selectorType: 'href', + modifiers: [ + { + type: 'replace', + from: '/release-group/', + to: 'lidarr:' + } + ] + }, + match: { + terms: ['musicbrainz.org/release-group'] + }, + icon: { + containerSelector: '.rgheader > h1', + locator: 'prepend', + imgStyles: 'width: 26px; margin: 0 5px -4px 0;' + } + }, + { + id: 'musicbrainz', + defaultSite: 'lidarr', + search: { + containerSelector: '.releaseheader > h1 > a', + selectorType: 'href', + modifiers: [ + { + type: 'replace', + from: '/release/', + to: 'lidarr:' + } + ] + }, + match: { + terms: ['musicbrainz.org/release'] + }, + icon: { + containerSelector: '.releaseheader > h1', + locator: 'prepend', + imgStyles: 'width: 26px; margin: 0 5px -4px 0;' + } + }, { id: 'letterboxd', defaultSite: 'radarr', diff --git a/src/manifest.json b/src/manifest.json index bd68f8c..6f920af 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -45,23 +45,23 @@ } ], "permissions": [ - "*://*imdb*", - "*://*themoviedb.org*", - "*://*thetvdb.com*", - "*://*trakt.tv*", - "*://*tvmaze.com*", - "*://*musicbrainz.org*", - "*://*letterboxd.com*", - "*://*pogdesign.co.uk*", - "*://*rottentomatoes.com*", - "*://*metacritic.com*", - "*://*simkl.com*", - "*://*iptorrents*", - "*://*last.fm*", - "*://*allocine.fr*", - "*://*myanimelist.net*", - "*://*betaseries.com*", - "*://*primevideo*", + "*://*.imdb.com/*", + "*://*.themoviedb.org/*", + "*://*.thetvdb.com/*", + "*://*.trakt.tv/*", + "*://*.tvmaze.com/*", + "*://*.musicbrainz.org/*", + "*://*.letterboxd.com/*", + "*://*.pogdesign.co.uk/*", + "*://*.rottentomatoes.com/*", + "*://*.metacritic.com/*", + "*://*.simkl.com/*", + "*://*.iptorrents*", + "*://*.last.fm/*", + "*://*.allocine.fr/*", + "*://*.myanimelist.net/*", + "*://*.betaseries.com/*", + "*://*.primevideo.com/*", "storage", "activeTab", "contextMenus" From 9aef379d49acf4576ac912929689431d239567ea Mon Sep 17 00:00:00 2001 From: Rob Green Date: Sat, 22 Jul 2023 15:37:58 +0100 Subject: [PATCH 07/11] Update README.md --- README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 61a9d1d..df0771e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Chrome Web Store](https://img.shields.io/chrome-web-store/v/jmmjjcddjldjdjgckdiokhfokccdnekc?label=Chrome%20web%20store&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADdYAAA3WAZBveZwAAAIISURBVDhPdVLPaxNBFP52tyVpTGPbIImlLVEDtvVWwRZPooJUiLd6WBQFETTtRelV%2FAc8it6s6V0r%2BOsaBD14UwtCwEp%2FYNAejLvZNLuzM9M3s5tgC%2F3g7Xvvm%2Fn2vTczBv7D%2BrydI3eXrEQ2LqS0uJTf%2FZC%2Faof8yemll9tqn0JXSCKb3FOyjCb2gYR%2FPRbemnr2YkXlWkii6%2BQqnfwg%2BJxz12dzVHnFWHx9Lnd%2BdaB2aiu1p5KZOkS%2FkQDbiZkITcYaPCUneiie%2F3TSyZz4nUSSmbAOD6Ln6m186B2GCYlLuS2kt5cB7mmhlH0D3g67Z1J8pd0r8Lno6gXDLsP%2BYuJhdQMPqpuYe2%2BheeSGXlMwaBjLNEpKOK6Ib2MenGNZvPOHUG8GitJYd0K8%2FZWn3emYUWKjqIT6QAR9P056CATNtQ%2BME2eorV1Ila1FMfCD%2F8T0sItMwooZIJs0MTvSAEInZtScsmadtQtFimciCvjjfsXCzEXk00P0kzTuTDGMNpZhiuh0JRX3A76kruM45atkfXqFYFBb%2Bf4ChBSYtP7h8mA2XgECJloknDAflaqq1TJZdzhJgrqzhlZrExfoejrg9P4CxsuZ6cqGnpjEz8ndJGupvINZqpQwo0MJuXDbAb%2FWf6aiXtjeJ0Ztj5G7T1YaTSQKC0dHApqpFobiDbX4mCrV9UYAu%2FF1yscRLQLJAAAAAElFTkSuQmCC&style=plastic&color=brightgreen)](https://chrome.google.com/webstore/detail/sonarrradarrlidarr-autose/jmmjjcddjldjdjgckdiokhfokccdnekc) [![Chrome Web Store](https://img.shields.io/chrome-web-store/users/jmmjjcddjldjdjgckdiokhfokccdnekc?label=users&style=plastic&color=brightgreen)](https://chrome.google.com/webstore/detail/sonarrradarrlidarr-autose/jmmjjcddjldjdjgckdiokhfokccdnekc) [![Chrome Web Store](https://img.shields.io/chrome-web-store/stars/jmmjjcddjldjdjgckdiokhfokccdnekc?label=rating&style=plastic&color=brightgreen)](https://chrome.google.com/webstore/detail/sonarrradarrlidarr-autose/jmmjjcddjldjdjgckdiokhfokccdnekc)
[![Mozilla Add-on](https://img.shields.io/amo/v/sonarr-radarr-lidarr-search?label=Firefox%20add-ons&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAANCAYAAACZ3F9%2FAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAI6SURBVChTfVJNSFRRGD33vjdv3nvOmx9%2FygQRs5yoHAiMyGUGgdlGym2LNjW0SGhjtNB9hJvauAmiMGjTSmhTRBpWi1AzwkZTR0mdmeffzJt5z3e%2F7gyTtIgOXD74OOfcw%2BHD%2F0DZHo3syy%2FkvFBdHYBX579R8obg%2Bf3Y959Q%2BuLh6rYCVp2g0YYkQuoUlNYa1j%2F5jj6e0RE2NxAMWFAVQOAzhNbLWsfXy3y5kaJ7LZdA%2FnN46mm4wevx9Pjb9Iee%2B%2B5mpEvleRiRbJnaBJ8lhu7G2fDI%2FHTlR7od%2F4So04loEaglzKeu0tzUINPcIMzGBZzsG0XDsSVA04hMf4H5XjsXfefqsKN3ggWAozpwKIzjXa%2FZ%2BRuD2LJM5Ow2MIOAXQFkOIPH2mTkE6q3EWuW1QHSEORgtrYD418GUGQJWGEdoV1g%2Fv1Z1Hd%2Fg9i2wMIylTAaee5rW1bYIWDbABZrMDGZwFyGY5k2kVZtZCgPUcxBrMhEfBf0SwGtqzb3PXMlv1aXwo4Ubpm4wiZhFBaxl1mGbf%2BEcGaQCLwB3y6BF6RJyshShs1WyklHksna5rVHRmQP0D0UNAXTogUKJ3SYP6CXS4txeCIGErGh4MjYcEW4GhrgQnVeWQ25XiuaBw%2B4QMAHVPkUWYo8E6cYhqD6CfWI6NbHnpYODmA1dCfoM%2Fch052besjhWtAF5wL%2BvorSjkXMNZ9pFt2KLj2Wsf66nD%2BQBu2Sfg2MToEY56R8Z6S%2BbCo8mKlSJIDf81Pn%2Bw9CHy8AAAAASUVORK5CYII%3D&style=plastic&color=orange)](https://addons.mozilla.org/en-GB/firefox/addon/sonarr-radarr-lidarr-search/) [![Mozilla Add-on](https://img.shields.io/amo/users/sonarr-radarr-lidarr-search?label=users&style=plastic&color=orange)](https://addons.mozilla.org/en-GB/firefox/addon/sonarr-radarr-lidarr-search/) [![Mozilla Add-on](https://img.shields.io/amo/stars/sonarr-radarr-lidarr-search?label=rating&style=plastic&color=orange)](https://addons.mozilla.org/en-GB/firefox/addon/sonarr-radarr-lidarr-search/)
-[![](https://img.shields.io/static/v1?label=Edge%20add-ons&message=v2.7.1.0&color=blue&style=plastic&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVDhPVVLPaxNBFP7eZJPNNomCqGj1aBGkB8WKF4/iyR4sQqGm4M1TKyoI1T+gf0BBqHhRoQW9CO1BEcUKIhSlh4rx18FKm1q7aZJustmdnZ3xTSj+ePDNDPPeN9+bb4bwT5x4vdqrocYN5HlNsg/oEFF7haj1Ku/UpxdPj77bKcUf4sBCbcQgnTZQRU0KGgk0xTDoIOf4KLjrxsvV77rZcHz+6G3ZJZ5aaFwCzEMDQ0xkApMsEZJ3IuRz6yjl11DIb8LNth45IhmmgQX/EGc/BVW/GPoNmFTB8TLwDvTA2eN2iT3uKnZ5qyh5m7wO4GSSYRF1grHvbz4Wq5VNBIGDUBbQambgL9fQrFS5n5ARMxQjhRAM0lfF2lJ10BajsA/G3c0owThF7mtvOdowZelvVY0OkWoJlWrECSGSOOmEbe8IuT3gC3GbGqZZg1x+e7P95PoMS2D/8wc61cGMUiFkItlNxaoqFqnIa50adKHY18oSiNy2JdnIFVbYwF+QqsFqATqyxYrtx8JofNV6h7i9BUpSUNYb2uFBYGNEoAqtfyKWPmP7hUyiG0w08wxO8GNEEZDJcs8Y3XXx3oglEtUvCKqfIbSH+J4DcaLOvjw+2ySa+HCQs5+FQEnELbjf3oOcPMieZtL7pPUdGL1EacIG6D4k0bnGs1tTwkz2rxtjrmi7nStCW6NY0orxdJnXizAm5sPtm1R4rtmksAMm+2dZoMwagTx8DNqkXM82/w1b12GUG08num7/98m57V4+cUyoaDDn/+jLhA0ScecLpWqOTDrVmLtmfwQH8BseJ1GMK7TIYwAAAABJRU5ErkJggg==)](https://microsoftedge.microsoft.com/addons/detail/sonarrradarrlidarr-auto/aclgfcjonnhgdkinhmmafdbkpegfcnal) ![Edge](https://img.shields.io/static/v1?label=users&message=441&color=blue&style=plastic) +[![](https://img.shields.io/static/v1?label=Edge%20add-ons&message=v2.8.0.0&color=blue&style=plastic&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVDhPVVLPaxNBFP7eZJPNNomCqGj1aBGkB8WKF4/iyR4sQqGm4M1TKyoI1T+gf0BBqHhRoQW9CO1BEcUKIhSlh4rx18FKm1q7aZJustmdnZ3xTSj+ePDNDPPeN9+bb4bwT5x4vdqrocYN5HlNsg/oEFF7haj1Ku/UpxdPj77bKcUf4sBCbcQgnTZQRU0KGgk0xTDoIOf4KLjrxsvV77rZcHz+6G3ZJZ5aaFwCzEMDQ0xkApMsEZJ3IuRz6yjl11DIb8LNth45IhmmgQX/EGc/BVW/GPoNmFTB8TLwDvTA2eN2iT3uKnZ5qyh5m7wO4GSSYRF1grHvbz4Wq5VNBIGDUBbQambgL9fQrFS5n5ARMxQjhRAM0lfF2lJ10BajsA/G3c0owThF7mtvOdowZelvVY0OkWoJlWrECSGSOOmEbe8IuT3gC3GbGqZZg1x+e7P95PoMS2D/8wc61cGMUiFkItlNxaoqFqnIa50adKHY18oSiNy2JdnIFVbYwF+QqsFqATqyxYrtx8JofNV6h7i9BUpSUNYb2uFBYGNEoAqtfyKWPmP7hUyiG0w08wxO8GNEEZDJcs8Y3XXx3oglEtUvCKqfIbSH+J4DcaLOvjw+2ySa+HCQs5+FQEnELbjf3oOcPMieZtL7pPUdGL1EacIG6D4k0bnGs1tTwkz2rxtjrmi7nStCW6NY0orxdJnXizAm5sPtm1R4rtmksAMm+2dZoMwagTx8DNqkXM82/w1b12GUG08num7/98m57V4+cUyoaDDn/+jLhA0ScecLpWqOTDrVmLtmfwQH8BseJ1GMK7TIYwAAAABJRU5ErkJggg==)](https://microsoftedge.microsoft.com/addons/detail/sonarrradarrlidarr-auto/aclgfcjonnhgdkinhmmafdbkpegfcnal) ![Edge](https://img.shields.io/static/v1?label=users&message=441&color=blue&style=plastic) ## Overview @@ -12,7 +12,7 @@ This is an extension for Chromium browsers and Firefox that: 2. When right-clicking selected text on any page this extension exposes a context menu with entries for Sonarr, Radarr, Lidarr and Readarr that allow a direct search for the selected text in a new tab. -3. Adds Servarr icons as direct search links on IMDb, TVDb, TMDb, Trakt, TVmaze, MusicBrainz, Letterboxd, TV Calendar, Rotten Tomatoes, metacritic, simkl, IPTorrents, last.fm, Allociné, SensCritique, Betaseries and MyAnimeList websites. (Only applicable to Sonarr and Radarr at present). +3. Adds Servarr icons as direct search links on IMDb, TVDb, TMDb, Trakt, TVmaze, MusicBrainz, Letterboxd, TV Calendar, Rotten Tomatoes, metacritic, simkl, IPTorrents, last.fm, Allociné, SensCritique, Betaseries, Prime Video and MyAnimeList websites. The extension can be disabled from the extension's popup and each context menu item can be disabled from the settings page. @@ -26,7 +26,7 @@ Leave a review: [![Chrome Web Store](https://img.shields.io/chrome-web-store/v/jmmjjcddjldjdjgckdiokhfokccdnekc?label=Chrome%20web%20store&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADdYAAA3WAZBveZwAAAIISURBVDhPdVLPaxNBFP52tyVpTGPbIImlLVEDtvVWwRZPooJUiLd6WBQFETTtRelV%2FAc8it6s6V0r%2BOsaBD14UwtCwEp%2FYNAejLvZNLuzM9M3s5tgC%2F3g7Xvvm%2Fn2vTczBv7D%2BrydI3eXrEQ2LqS0uJTf%2FZC%2Faof8yemll9tqn0JXSCKb3FOyjCb2gYR%2FPRbemnr2YkXlWkii6%2BQqnfwg%2BJxz12dzVHnFWHx9Lnd%2BdaB2aiu1p5KZOkS%2FkQDbiZkITcYaPCUneiie%2F3TSyZz4nUSSmbAOD6Ln6m186B2GCYlLuS2kt5cB7mmhlH0D3g67Z1J8pd0r8Lno6gXDLsP%2BYuJhdQMPqpuYe2%2BheeSGXlMwaBjLNEpKOK6Ib2MenGNZvPOHUG8GitJYd0K8%2FZWn3emYUWKjqIT6QAR9P056CATNtQ%2BME2eorV1Ila1FMfCD%2F8T0sItMwooZIJs0MTvSAEInZtScsmadtQtFimciCvjjfsXCzEXk00P0kzTuTDGMNpZhiuh0JRX3A76kruM45atkfXqFYFBb%2Bf4ChBSYtP7h8mA2XgECJloknDAflaqq1TJZdzhJgrqzhlZrExfoejrg9P4CxsuZ6cqGnpjEz8ndJGupvINZqpQwo0MJuXDbAb%2FWf6aiXtjeJ0Ztj5G7T1YaTSQKC0dHApqpFobiDbX4mCrV9UYAu%2FF1yscRLQLJAAAAAElFTkSuQmCC&style=plastic&color=brightgreen)](https://chrome.google.com/webstore/detail/sonarrradarrlidarr-autose/jmmjjcddjldjdjgckdiokhfokccdnekc)
[![Mozilla Add-on](https://img.shields.io/amo/v/sonarr-radarr-lidarr-search?label=Firefox%20add-ons&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAANCAYAAACZ3F9%2FAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAI6SURBVChTfVJNSFRRGD33vjdv3nvOmx9%2FygQRs5yoHAiMyGUGgdlGym2LNjW0SGhjtNB9hJvauAmiMGjTSmhTRBpWi1AzwkZTR0mdmeffzJt5z3e%2F7gyTtIgOXD74OOfcw%2BHD%2F0DZHo3syy%2FkvFBdHYBX579R8obg%2Bf3Y959Q%2BuLh6rYCVp2g0YYkQuoUlNYa1j%2F5jj6e0RE2NxAMWFAVQOAzhNbLWsfXy3y5kaJ7LZdA%2FnN46mm4wevx9Pjb9Iee%2B%2B5mpEvleRiRbJnaBJ8lhu7G2fDI%2FHTlR7od%2F4So04loEaglzKeu0tzUINPcIMzGBZzsG0XDsSVA04hMf4H5XjsXfefqsKN3ggWAozpwKIzjXa%2FZ%2BRuD2LJM5Ow2MIOAXQFkOIPH2mTkE6q3EWuW1QHSEORgtrYD418GUGQJWGEdoV1g%2Fv1Z1Hd%2Fg9i2wMIylTAaee5rW1bYIWDbABZrMDGZwFyGY5k2kVZtZCgPUcxBrMhEfBf0SwGtqzb3PXMlv1aXwo4Ubpm4wiZhFBaxl1mGbf%2BEcGaQCLwB3y6BF6RJyshShs1WyklHksna5rVHRmQP0D0UNAXTogUKJ3SYP6CXS4txeCIGErGh4MjYcEW4GhrgQnVeWQ25XiuaBw%2B4QMAHVPkUWYo8E6cYhqD6CfWI6NbHnpYODmA1dCfoM%2Fch052besjhWtAF5wL%2BvorSjkXMNZ9pFt2KLj2Wsf66nD%2BQBu2Sfg2MToEY56R8Z6S%2BbCo8mKlSJIDf81Pn%2Bw9CHy8AAAAASUVORK5CYII%3D&style=plastic&color=orange)](https://addons.mozilla.org/en-GB/firefox/addon/sonarr-radarr-lidarr-search/)
-[![](https://img.shields.io/static/v1?label=Edge%20add-ons&message=v2.7.1.0&color=blue&style=plastic&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVDhPVVLPaxNBFP7eZJPNNomCqGj1aBGkB8WKF4/iyR4sQqGm4M1TKyoI1T+gf0BBqHhRoQW9CO1BEcUKIhSlh4rx18FKm1q7aZJustmdnZ3xTSj+ePDNDPPeN9+bb4bwT5x4vdqrocYN5HlNsg/oEFF7haj1Ku/UpxdPj77bKcUf4sBCbcQgnTZQRU0KGgk0xTDoIOf4KLjrxsvV77rZcHz+6G3ZJZ5aaFwCzEMDQ0xkApMsEZJ3IuRz6yjl11DIb8LNth45IhmmgQX/EGc/BVW/GPoNmFTB8TLwDvTA2eN2iT3uKnZ5qyh5m7wO4GSSYRF1grHvbz4Wq5VNBIGDUBbQambgL9fQrFS5n5ARMxQjhRAM0lfF2lJ10BajsA/G3c0owThF7mtvOdowZelvVY0OkWoJlWrECSGSOOmEbe8IuT3gC3GbGqZZg1x+e7P95PoMS2D/8wc61cGMUiFkItlNxaoqFqnIa50adKHY18oSiNy2JdnIFVbYwF+QqsFqATqyxYrtx8JofNV6h7i9BUpSUNYb2uFBYGNEoAqtfyKWPmP7hUyiG0w08wxO8GNEEZDJcs8Y3XXx3oglEtUvCKqfIbSH+J4DcaLOvjw+2ySa+HCQs5+FQEnELbjf3oOcPMieZtL7pPUdGL1EacIG6D4k0bnGs1tTwkz2rxtjrmi7nStCW6NY0orxdJnXizAm5sPtm1R4rtmksAMm+2dZoMwagTx8DNqkXM82/w1b12GUG08num7/98m57V4+cUyoaDDn/+jLhA0ScecLpWqOTDrVmLtmfwQH8BseJ1GMK7TIYwAAAABJRU5ErkJggg==)](https://microsoftedge.microsoft.com/addons/detail/sonarrradarrlidarr-auto/aclgfcjonnhgdkinhmmafdbkpegfcnal) +[![](https://img.shields.io/static/v1?label=Edge%20add-ons&message=v2.8.0.0&color=blue&style=plastic&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVDhPVVLPaxNBFP7eZJPNNomCqGj1aBGkB8WKF4/iyR4sQqGm4M1TKyoI1T+gf0BBqHhRoQW9CO1BEcUKIhSlh4rx18FKm1q7aZJustmdnZ3xTSj+ePDNDPPeN9+bb4bwT5x4vdqrocYN5HlNsg/oEFF7haj1Ku/UpxdPj77bKcUf4sBCbcQgnTZQRU0KGgk0xTDoIOf4KLjrxsvV77rZcHz+6G3ZJZ5aaFwCzEMDQ0xkApMsEZJ3IuRz6yjl11DIb8LNth45IhmmgQX/EGc/BVW/GPoNmFTB8TLwDvTA2eN2iT3uKnZ5qyh5m7wO4GSSYRF1grHvbz4Wq5VNBIGDUBbQambgL9fQrFS5n5ARMxQjhRAM0lfF2lJ10BajsA/G3c0owThF7mtvOdowZelvVY0OkWoJlWrECSGSOOmEbe8IuT3gC3GbGqZZg1x+e7P95PoMS2D/8wc61cGMUiFkItlNxaoqFqnIa50adKHY18oSiNy2JdnIFVbYwF+QqsFqATqyxYrtx8JofNV6h7i9BUpSUNYb2uFBYGNEoAqtfyKWPmP7hUyiG0w08wxO8GNEEZDJcs8Y3XXx3oglEtUvCKqfIbSH+J4DcaLOvjw+2ySa+HCQs5+FQEnELbjf3oOcPMieZtL7pPUdGL1EacIG6D4k0bnGs1tTwkz2rxtjrmi7nStCW6NY0orxdJnXizAm5sPtm1R4rtmksAMm+2dZoMwagTx8DNqkXM82/w1b12GUG08num7/98m57V4+cUyoaDDn/+jLhA0ScecLpWqOTDrVmLtmfwQH8BseJ1GMK7TIYwAAAABJRU5ErkJggg==)](https://microsoftedge.microsoft.com/addons/detail/sonarrradarrlidarr-auto/aclgfcjonnhgdkinhmmafdbkpegfcnal) [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/K3K22CEIT) @@ -34,6 +34,13 @@ All support is very gratefully received, thank you :raised_hands: :sunglasses: : ## Change log (just the most recent; see [releases](https://github.com/trossr32/sonarr-radarr-lidarr-autosearch-browser-extension/releases) for full history) +**New features (V2.8.0.0)** +- New feature: Limit extension permissions to integration sites only (#145) +- New feature: Add release-group and release URLs for musicbrainz integration. **Thanks to Pompiedom**. (#146). +- Bug fix: Adding user:password syntax handling in site domain & fixing grunt release on linux. **Thanks to carsso**. +- New feature: Add betaseries.com integration. **Thanks to carsso**. +- New feature: Add primevideo.com integration. **Thanks to carsso**. + **Bug fixes (V2.7.1)** - Bug fix: TmdbId not parsed correctly from Trakt to Radarr search for some titles (#131) - Bug fix: Icon not showing on IMDB (#134) @@ -114,7 +121,9 @@ Thanks to the following for helping with this project: aommm
Flo
almottier
-dannyvink +dannyvink
+Pompiedom
+carsso Buy Me a Coffee at ko-fi.com From 08080fd30d5e04900c0a96598a90250edca27168 Mon Sep 17 00:00:00 2001 From: Rob Green Date: Sat, 22 Jul 2023 15:39:09 +0100 Subject: [PATCH 08/11] Update README.md --- README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/README.md b/README.md index df0771e..253702b 100644 --- a/README.md +++ b/README.md @@ -48,17 +48,6 @@ All support is very gratefully received, thank you :raised_hands: :sunglasses: : **New features (V2.7)** - Readarr integration. Added as 2 separate configurations for ebooks and audiobooks. Works similarly to Lidarr, i.e. there are no site integrations so this only exposes new entries in the context menu. -**Bug fix (V2.6.1)** -- Bug fix: Lidarr test failing (#111) - -**New features (V2.6)** -- MyAnimeList integration (Thanks to dannyvink for making this contribution.) - -**New features & bug fix (V2.5)** -- New feature to allow absolute positioning of the servarr icon either anchored to the side of the page or floating at a user defined position. Only works when one instance of the icon should be injected to the page, otherwise falls back to default positioning. Unsure if this is a feature anyone will actually want to use, but if you find it useful or have any suggestions for improvement please let me know. -- Bug fix: IMDb was not correctly identifying TV shows and was falling back to everything being identified as a movie when viewing the German version of the site. -- Remove 'tabs' permission for the extension as not required. Google took down the package because of this permission being included and not required, so this release should see the extension available on the Chrome Web Store soon. - ## Getting started [Extension on the Chrome web store](https://chrome.google.com/webstore/detail/sonarrradarrlidarr-autose/jmmjjcddjldjdjgckdiokhfokccdnekc) From bfef6d1ef26d2059961f4e4cd657088f6c1fde00 Mon Sep 17 00:00:00 2001 From: Rob Green Date: Sat, 22 Jul 2023 15:39:42 +0100 Subject: [PATCH 09/11] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 253702b..9ab0dfc 100644 --- a/README.md +++ b/README.md @@ -36,10 +36,10 @@ All support is very gratefully received, thank you :raised_hands: :sunglasses: : **New features (V2.8.0.0)** - New feature: Limit extension permissions to integration sites only (#145) -- New feature: Add release-group and release URLs for musicbrainz integration. **Thanks to Pompiedom**. (#146). -- Bug fix: Adding user:password syntax handling in site domain & fixing grunt release on linux. **Thanks to carsso**. -- New feature: Add betaseries.com integration. **Thanks to carsso**. -- New feature: Add primevideo.com integration. **Thanks to carsso**. +- New feature: Add release-group and release URLs for musicbrainz integration. Thanks to Pompiedom. (#146). +- Bug fix: Adding user:password syntax handling in site domain & fixing grunt release on linux. Thanks to carsso. +- New feature: Add betaseries.com integration. Thanks to carsso. +- New feature: Add primevideo.com integration. Thanks to carsso. **Bug fixes (V2.7.1)** - Bug fix: TmdbId not parsed correctly from Trakt to Radarr search for some titles (#131) From 4817c623e77565a6a4b84beee4784df6ab6e63ab Mon Sep 17 00:00:00 2001 From: Rob Green Date: Sat, 22 Jul 2023 15:46:53 +0100 Subject: [PATCH 10/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9ab0dfc..bfd2f7c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Chrome Web Store](https://img.shields.io/chrome-web-store/v/jmmjjcddjldjdjgckdiokhfokccdnekc?label=Chrome%20web%20store&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADdYAAA3WAZBveZwAAAIISURBVDhPdVLPaxNBFP52tyVpTGPbIImlLVEDtvVWwRZPooJUiLd6WBQFETTtRelV%2FAc8it6s6V0r%2BOsaBD14UwtCwEp%2FYNAejLvZNLuzM9M3s5tgC%2F3g7Xvvm%2Fn2vTczBv7D%2BrydI3eXrEQ2LqS0uJTf%2FZC%2Faof8yemll9tqn0JXSCKb3FOyjCb2gYR%2FPRbemnr2YkXlWkii6%2BQqnfwg%2BJxz12dzVHnFWHx9Lnd%2BdaB2aiu1p5KZOkS%2FkQDbiZkITcYaPCUneiie%2F3TSyZz4nUSSmbAOD6Ln6m186B2GCYlLuS2kt5cB7mmhlH0D3g67Z1J8pd0r8Lno6gXDLsP%2BYuJhdQMPqpuYe2%2BheeSGXlMwaBjLNEpKOK6Ib2MenGNZvPOHUG8GitJYd0K8%2FZWn3emYUWKjqIT6QAR9P056CATNtQ%2BME2eorV1Ila1FMfCD%2F8T0sItMwooZIJs0MTvSAEInZtScsmadtQtFimciCvjjfsXCzEXk00P0kzTuTDGMNpZhiuh0JRX3A76kruM45atkfXqFYFBb%2Bf4ChBSYtP7h8mA2XgECJloknDAflaqq1TJZdzhJgrqzhlZrExfoejrg9P4CxsuZ6cqGnpjEz8ndJGupvINZqpQwo0MJuXDbAb%2FWf6aiXtjeJ0Ztj5G7T1YaTSQKC0dHApqpFobiDbX4mCrV9UYAu%2FF1yscRLQLJAAAAAElFTkSuQmCC&style=plastic&color=brightgreen)](https://chrome.google.com/webstore/detail/sonarrradarrlidarr-autose/jmmjjcddjldjdjgckdiokhfokccdnekc) [![Chrome Web Store](https://img.shields.io/chrome-web-store/users/jmmjjcddjldjdjgckdiokhfokccdnekc?label=users&style=plastic&color=brightgreen)](https://chrome.google.com/webstore/detail/sonarrradarrlidarr-autose/jmmjjcddjldjdjgckdiokhfokccdnekc) [![Chrome Web Store](https://img.shields.io/chrome-web-store/stars/jmmjjcddjldjdjgckdiokhfokccdnekc?label=rating&style=plastic&color=brightgreen)](https://chrome.google.com/webstore/detail/sonarrradarrlidarr-autose/jmmjjcddjldjdjgckdiokhfokccdnekc)
[![Mozilla Add-on](https://img.shields.io/amo/v/sonarr-radarr-lidarr-search?label=Firefox%20add-ons&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAANCAYAAACZ3F9%2FAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAI6SURBVChTfVJNSFRRGD33vjdv3nvOmx9%2FygQRs5yoHAiMyGUGgdlGym2LNjW0SGhjtNB9hJvauAmiMGjTSmhTRBpWi1AzwkZTR0mdmeffzJt5z3e%2F7gyTtIgOXD74OOfcw%2BHD%2F0DZHo3syy%2FkvFBdHYBX579R8obg%2Bf3Y959Q%2BuLh6rYCVp2g0YYkQuoUlNYa1j%2F5jj6e0RE2NxAMWFAVQOAzhNbLWsfXy3y5kaJ7LZdA%2FnN46mm4wevx9Pjb9Iee%2B%2B5mpEvleRiRbJnaBJ8lhu7G2fDI%2FHTlR7od%2F4So04loEaglzKeu0tzUINPcIMzGBZzsG0XDsSVA04hMf4H5XjsXfefqsKN3ggWAozpwKIzjXa%2FZ%2BRuD2LJM5Ow2MIOAXQFkOIPH2mTkE6q3EWuW1QHSEORgtrYD418GUGQJWGEdoV1g%2Fv1Z1Hd%2Fg9i2wMIylTAaee5rW1bYIWDbABZrMDGZwFyGY5k2kVZtZCgPUcxBrMhEfBf0SwGtqzb3PXMlv1aXwo4Ubpm4wiZhFBaxl1mGbf%2BEcGaQCLwB3y6BF6RJyshShs1WyklHksna5rVHRmQP0D0UNAXTogUKJ3SYP6CXS4txeCIGErGh4MjYcEW4GhrgQnVeWQ25XiuaBw%2B4QMAHVPkUWYo8E6cYhqD6CfWI6NbHnpYODmA1dCfoM%2Fch052besjhWtAF5wL%2BvorSjkXMNZ9pFt2KLj2Wsf66nD%2BQBu2Sfg2MToEY56R8Z6S%2BbCo8mKlSJIDf81Pn%2Bw9CHy8AAAAASUVORK5CYII%3D&style=plastic&color=orange)](https://addons.mozilla.org/en-GB/firefox/addon/sonarr-radarr-lidarr-search/) [![Mozilla Add-on](https://img.shields.io/amo/users/sonarr-radarr-lidarr-search?label=users&style=plastic&color=orange)](https://addons.mozilla.org/en-GB/firefox/addon/sonarr-radarr-lidarr-search/) [![Mozilla Add-on](https://img.shields.io/amo/stars/sonarr-radarr-lidarr-search?label=rating&style=plastic&color=orange)](https://addons.mozilla.org/en-GB/firefox/addon/sonarr-radarr-lidarr-search/)
-[![](https://img.shields.io/static/v1?label=Edge%20add-ons&message=v2.8.0.0&color=blue&style=plastic&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVDhPVVLPaxNBFP7eZJPNNomCqGj1aBGkB8WKF4/iyR4sQqGm4M1TKyoI1T+gf0BBqHhRoQW9CO1BEcUKIhSlh4rx18FKm1q7aZJustmdnZ3xTSj+ePDNDPPeN9+bb4bwT5x4vdqrocYN5HlNsg/oEFF7haj1Ku/UpxdPj77bKcUf4sBCbcQgnTZQRU0KGgk0xTDoIOf4KLjrxsvV77rZcHz+6G3ZJZ5aaFwCzEMDQ0xkApMsEZJ3IuRz6yjl11DIb8LNth45IhmmgQX/EGc/BVW/GPoNmFTB8TLwDvTA2eN2iT3uKnZ5qyh5m7wO4GSSYRF1grHvbz4Wq5VNBIGDUBbQambgL9fQrFS5n5ARMxQjhRAM0lfF2lJ10BajsA/G3c0owThF7mtvOdowZelvVY0OkWoJlWrECSGSOOmEbe8IuT3gC3GbGqZZg1x+e7P95PoMS2D/8wc61cGMUiFkItlNxaoqFqnIa50adKHY18oSiNy2JdnIFVbYwF+QqsFqATqyxYrtx8JofNV6h7i9BUpSUNYb2uFBYGNEoAqtfyKWPmP7hUyiG0w08wxO8GNEEZDJcs8Y3XXx3oglEtUvCKqfIbSH+J4DcaLOvjw+2ySa+HCQs5+FQEnELbjf3oOcPMieZtL7pPUdGL1EacIG6D4k0bnGs1tTwkz2rxtjrmi7nStCW6NY0orxdJnXizAm5sPtm1R4rtmksAMm+2dZoMwagTx8DNqkXM82/w1b12GUG08num7/98m57V4+cUyoaDDn/+jLhA0ScecLpWqOTDrVmLtmfwQH8BseJ1GMK7TIYwAAAABJRU5ErkJggg==)](https://microsoftedge.microsoft.com/addons/detail/sonarrradarrlidarr-auto/aclgfcjonnhgdkinhmmafdbkpegfcnal) ![Edge](https://img.shields.io/static/v1?label=users&message=441&color=blue&style=plastic) +[![](https://img.shields.io/static/v1?label=Edge%20add-ons&message=v2.8.0.0&color=blue&style=plastic&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVDhPVVLPaxNBFP7eZJPNNomCqGj1aBGkB8WKF4/iyR4sQqGm4M1TKyoI1T+gf0BBqHhRoQW9CO1BEcUKIhSlh4rx18FKm1q7aZJustmdnZ3xTSj+ePDNDPPeN9+bb4bwT5x4vdqrocYN5HlNsg/oEFF7haj1Ku/UpxdPj77bKcUf4sBCbcQgnTZQRU0KGgk0xTDoIOf4KLjrxsvV77rZcHz+6G3ZJZ5aaFwCzEMDQ0xkApMsEZJ3IuRz6yjl11DIb8LNth45IhmmgQX/EGc/BVW/GPoNmFTB8TLwDvTA2eN2iT3uKnZ5qyh5m7wO4GSSYRF1grHvbz4Wq5VNBIGDUBbQambgL9fQrFS5n5ARMxQjhRAM0lfF2lJ10BajsA/G3c0owThF7mtvOdowZelvVY0OkWoJlWrECSGSOOmEbe8IuT3gC3GbGqZZg1x+e7P95PoMS2D/8wc61cGMUiFkItlNxaoqFqnIa50adKHY18oSiNy2JdnIFVbYwF+QqsFqATqyxYrtx8JofNV6h7i9BUpSUNYb2uFBYGNEoAqtfyKWPmP7hUyiG0w08wxO8GNEEZDJcs8Y3XXx3oglEtUvCKqfIbSH+J4DcaLOvjw+2ySa+HCQs5+FQEnELbjf3oOcPMieZtL7pPUdGL1EacIG6D4k0bnGs1tTwkz2rxtjrmi7nStCW6NY0orxdJnXizAm5sPtm1R4rtmksAMm+2dZoMwagTx8DNqkXM82/w1b12GUG08num7/98m57V4+cUyoaDDn/+jLhA0ScecLpWqOTDrVmLtmfwQH8BseJ1GMK7TIYwAAAABJRU5ErkJggg==)](https://microsoftedge.microsoft.com/addons/detail/sonarrradarrlidarr-auto/aclgfcjonnhgdkinhmmafdbkpegfcnal) ![Edge](https://img.shields.io/static/v1?label=users&message=487&color=blue&style=plastic) ## Overview From 191cb73975f7af65f8f4d58ac3e1096616fe6447 Mon Sep 17 00:00:00 2001 From: Rob Green Date: Sat, 22 Jul 2023 15:50:08 +0100 Subject: [PATCH 11/11] Update package-lock.json --- package-lock.json | 110 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 78 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index c4e2181..6442b32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4159,9 +4159,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -5131,6 +5131,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/raw-body": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", @@ -5195,6 +5201,12 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -5338,9 +5350,9 @@ } }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -5704,14 +5716,15 @@ } }, "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" @@ -5799,14 +5812,24 @@ } }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "engines": { "node": ">= 4.0.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5958,9 +5981,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9324,9 +9347,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -10063,6 +10086,12 @@ "side-channel": "^1.0.4" } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "raw-body": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", @@ -10115,6 +10144,12 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -10211,9 +10246,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "shebang-command": { @@ -10506,14 +10541,15 @@ } }, "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" } }, "tr46": { @@ -10576,11 +10612,21 @@ } }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -10707,9 +10753,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrap-ansi": {