From 63d5500c21e122fc0d11e82b6149f6f009c6a04a Mon Sep 17 00:00:00 2001 From: Ephellon Date: Sat, 28 Sep 2019 21:21:52 -0600 Subject: [PATCH] Beta branch update (#102) * DO NOT USE: Quick save for BETA. Currently switching laptops. * Beta Update (#76) * Start work on v5.0 Simple rename and push to `beta-branch` * Fixed minor bug that would cause searches to fail for cached media. * Fixed the plugin script * New cloud-like layout. * Update to v4.2 (BETA). Moved and restructured code to be cloud based. Added several new options. Added Developer options. * Fixed major bug * Fix "Hide WTP" icon Fixed the icon and made code simpler, `document.queryBy` is `$` and `document.furnish` is `furnish` * Start work on v5.0 Simple rename and push to `beta-branch` * Fixed minor bug that would cause searches to fail for cached media. * Fixed the plugin script * Quick save while switching laptops. New cloud-like layout. * Quick back-up, DO NOT USE. * Update to v4.2 (BETA). Moved and restructured code to be cloud based. Added several new options. Added Developer options. * Fix "hide web to plex" icon. Make code easier to use * Updated document.furnish, and class Prompt * Crap ton of fixes and changes... * Added Vumoo support. Dropped GoStream. * The user can now disable default sites. Added the `configuration` var * Removed restart requirement for disabling default sites * Reenabled GoStream (updated script). Added `Notify` to helpers.js * Added GoStream as a search provider (again) * Added Medusa as a manager, added the testing suite (to be removed), etc. * Update README.md * Update README.md * Match README layout of Wiki * Update test page. Minor aesthetic error in background.js * Beta branches merge (#77) * Start work on v5.0 Simple rename and push to `beta-branch` * Fixed minor bug that would cause searches to fail for cached media. * Fixed the plugin script * Quick save while switching laptops. New cloud-like layout. * Quick back-up, DO NOT USE. * Update to v4.2 (BETA). Moved and restructured code to be cloud based. Added several new options. Added Developer options. * Fix "hide web to plex" icon. Make code easier to use * Updated document.furnish, and class Prompt * Crap ton of fixes and changes... * Added Vumoo support. Dropped GoStream. * The user can now disable default sites. Added the `configuration` var * Removed restart requirement for disabling default sites * Reenabled GoStream (updated script). Added `Notify` to helpers.js * Added GoStream as a search provider (again) * Added Medusa as a manager, added the testing suite (to be removed), etc. * Update README.md * Update README.md * Match README layout of Wiki * Update test page. Minor aesthetic error in background.js * Update ZIP and CRX * Update ZIP and CRX * Fixed list adding feature. Added FLocs to background.js (testing) * Adjusted Tubi script. Works again * Made variable/function names strict. Changed code layout. * Updated scripts (onload listeners). Renamed more variables. * Quick fix * Added consistent.stream as a download source * Added webtoplex. Also fixed minor loading error in plugn.js * Fixed manifest to run on webtoplex and the test page * Added the offer modules (right-hand info cards) to youtube.js * Updated README (added site), and manifest (corrected information) * Updated the packages (.zip, .crx) * Stricter variable naming. Easier developer mode. Updated the packages. * Minor aesthetic error for CouchPotato related settings * Personal preference. Add feature later for similar functionality. * Fixed minor ID grabbing error * Fixed/enhanced loose matching * Fixed minor clearing bug * Fixed search provider feature * fixed caching error (erases entries after filling up) * fixed merge conflicts * Added develoepr notifications for erased cache. Fixed a few sites * Moved save button location (easier to access) * Fixed bug that would close elements on YouTube * Fixed a bug for Watcher (options). Minor changes to utils (less strict) * Permissions API; rename cache; update: youtube and webtoplex; options * Revamped Plex It! Fixed plugin loading. Fixed options page * Muted (no longer runs on) domains that don't use the extension * Added Redbox. Fixed YouTube. Fixed common.js. Fixed plugns.js. * Added Kitsu. Updated layouts * Added more permissions * Stricter variable names * Updated packages * Updated permissions, updated sites, updated packages. * Added "modify" feature * Added the "theme" feature. Fixed minor bugs. * Updated download scripts. Updated layout. Updated errors. * Added multiple TLD option (array). Fixed scripts. * Updated download scripts (deterred use of blobs). Updated packages. * Fixed minor date error for Vumoo * Fixed "Preferred Server" setting... Maybe? * Updated options page. Updated Plugn script. Miscellaneous cloud updates. * Updated options pagae. Fixed minor errors in scripts. * Added Sick Beard support. Fixed minor errors/bugs. * Corrected Allocine on options page... Now save-able * Updated README * Changed TMDb API token (a "more public" one) * Added multiple oload domains... * Fixed error: unable to save options. "Added" Allocine (correctly). * Updated packages * Added another domain for consistent.stream. Made Plugins more stable. * Added app.plex.tv as a supported site. Made minor bug fixes * Major bug fixed (thanks to mattssn11) * Fixed major bug (plugin instance). Added Plex as a download source. --- README.md | 104 +- src.crx | Bin 462284 -> 733029 bytes src.zip | Bin 461604 -> 732338 bytes src/background.js | 521 ++- src/cloud/__layout__.js | 39 + src/cloud/__test__.js | 37 + src/cloud/allocine.js | 29 + src/cloud/amazon.js | 55 + src/cloud/couchpotato.js | 40 + src/cloud/fandango.js | 20 + src/cloud/flickmetrix.js | 61 + src/cloud/google.js | 61 + src/cloud/google.play.js | 24 + src/cloud/gostream.js | 22 + src/cloud/hulu.js | 48 + src/cloud/imdb.js | 119 + src/cloud/itunes.js | 47 + src/cloud/justwatch.js | 31 + src/cloud/letterboxd.js | 76 + src/cloud/metacritic.js | 49 + src/cloud/moviemeter.js | 34 + src/cloud/movieo.js | 75 + src/cloud/netflix.js | 28 + src/cloud/plex.js | 36 + src/cloud/plugin.indomovietv.js | 59 + src/cloud/plugin.kitsu.js | 36 + src/cloud/plugin.myanimelist.js | 29 + src/cloud/plugin.myshows.js | 29 + src/cloud/plugin.redbox.js | 28 + src/cloud/plugin.shanaproject.js | 23 + src/cloud/plugin.toloka.js | 53 + src/cloud/rottentomatoes.js | 85 + src/cloud/tmdb.js | 79 + src/cloud/trakt.js | 104 + src/cloud/tubi.js | 22 + src/cloud/tvdb.js | 44 + src/cloud/tvmaze.js | 27 + src/cloud/verizon.js | 58 + src/cloud/vrv.js | 80 + src/cloud/vudu.js | 32 + src/cloud/vumoo.js | 68 + src/cloud/webtoplex.js | 55 + src/cloud/youtube.js | 139 + src/download/consistent.js | 29 + src/download/oload.js | 19 +- src/download/plex.js | 146 + src/helpers.js | 229 +- src/img/allocine.png | Bin 0 -> 4011 bytes src/img/justwatch.png | Bin 0 -> 20135 bytes src/img/local.medusa.png | Bin 0 -> 1280 bytes src/img/local.sickBeard.png | Bin 0 -> 26627 bytes src/img/moviemeter.png | Bin 0 -> 2997 bytes src/img/tubi.png | Bin 0 -> 4266 bytes src/img/vumoo.png | Bin 0 -> 3702 bytes src/manifest.json | 127 +- src/options/index.css | 647 ++++ src/options/index.html | 1095 +++---- src/options/index.js | 1056 +++++- src/options/test/blank.html | 5 + src/options/test/index.html | 225 ++ src/options/test/index.js | 104 + src/options/test/loading.png | Bin 0 -> 1804 bytes src/options/test/movie.poster.jpg | Bin 0 -> 59546 bytes src/options/test/noise.png | Bin 0 -> 54413 bytes src/options/test/tv-show.poster.jpg | Bin 0 -> 56325 bytes src/plugn.js | 740 ++++- src/popup/index.html | 145 +- src/popup/index.js | 8 +- src/sites/__layout__.js | 2 + src/sites/__test__.js | 2 + src/sites/{flenix => allocine}/index.css | 0 src/sites/allocine/index.js | 2 + src/sites/amazon/index.js | 60 +- src/sites/common.css | 157 +- src/sites/common.js | 5 + src/sites/couchpotato/index.js | 54 +- src/sites/fandango/index.js | 44 +- src/sites/flenix/index.js | 62 - src/sites/flickmetrix/index.js | 108 +- src/sites/google/index.js | 74 +- src/sites/google/play.js | 52 +- src/sites/gostream/index.js | 65 +- src/sites/hulu/index.js | 41 +- src/sites/imdb/index.js | 185 +- src/sites/itunes/index.js | 47 +- src/sites/justwatch/index.css | 0 src/sites/justwatch/index.js | 2 + src/sites/layout.js | 34 - src/sites/letterboxd/index.js | 101 +- src/sites/metacritic/index.js | 64 +- src/sites/moviemeter/index.css | 0 src/sites/moviemeter/index.js | 2 + src/sites/movieo/index.js | 130 +- src/sites/netflix/index.js | 44 +- src/sites/plex/index.css | 0 src/sites/plex/index.js | 2 + src/sites/rottentomatoes/index.js | 106 +- src/sites/theme.css | 38 + src/sites/tmdb/index.js | 127 +- src/sites/trakt/index.js | 195 +- src/sites/tubi/index.css | 0 src/sites/tubi/index.js | 2 + src/sites/tvdb/index.js | 77 +- src/sites/tvmaze/index.js | 59 +- src/sites/verizon/index.js | 72 +- src/sites/vrv/index.js | 121 +- src/sites/vudu/index.js | 61 +- src/sites/vumoo/index.css | 0 src/sites/vumoo/index.js | 2 + src/sites/webtoplex/index.css | 0 src/sites/webtoplex/index.js | 2 + src/sites/youtube/index.js | 56 +- src/utils.js | 3751 +++++++++++++--------- 113 files changed, 8456 insertions(+), 4733 deletions(-) create mode 100644 src/cloud/__layout__.js create mode 100644 src/cloud/__test__.js create mode 100644 src/cloud/allocine.js create mode 100644 src/cloud/amazon.js create mode 100644 src/cloud/couchpotato.js create mode 100644 src/cloud/fandango.js create mode 100644 src/cloud/flickmetrix.js create mode 100644 src/cloud/google.js create mode 100644 src/cloud/google.play.js create mode 100644 src/cloud/gostream.js create mode 100644 src/cloud/hulu.js create mode 100644 src/cloud/imdb.js create mode 100644 src/cloud/itunes.js create mode 100644 src/cloud/justwatch.js create mode 100644 src/cloud/letterboxd.js create mode 100644 src/cloud/metacritic.js create mode 100644 src/cloud/moviemeter.js create mode 100644 src/cloud/movieo.js create mode 100644 src/cloud/netflix.js create mode 100644 src/cloud/plex.js create mode 100644 src/cloud/plugin.indomovietv.js create mode 100644 src/cloud/plugin.kitsu.js create mode 100644 src/cloud/plugin.myanimelist.js create mode 100644 src/cloud/plugin.myshows.js create mode 100644 src/cloud/plugin.redbox.js create mode 100644 src/cloud/plugin.shanaproject.js create mode 100644 src/cloud/plugin.toloka.js create mode 100644 src/cloud/rottentomatoes.js create mode 100644 src/cloud/tmdb.js create mode 100644 src/cloud/trakt.js create mode 100644 src/cloud/tubi.js create mode 100644 src/cloud/tvdb.js create mode 100644 src/cloud/tvmaze.js create mode 100644 src/cloud/verizon.js create mode 100644 src/cloud/vrv.js create mode 100644 src/cloud/vudu.js create mode 100644 src/cloud/vumoo.js create mode 100644 src/cloud/webtoplex.js create mode 100644 src/cloud/youtube.js create mode 100644 src/download/consistent.js create mode 100644 src/download/plex.js create mode 100644 src/img/allocine.png create mode 100644 src/img/justwatch.png create mode 100644 src/img/local.medusa.png create mode 100644 src/img/local.sickBeard.png create mode 100644 src/img/moviemeter.png create mode 100644 src/img/tubi.png create mode 100644 src/img/vumoo.png create mode 100644 src/options/index.css create mode 100644 src/options/test/blank.html create mode 100644 src/options/test/index.html create mode 100644 src/options/test/index.js create mode 100644 src/options/test/loading.png create mode 100644 src/options/test/movie.poster.jpg create mode 100644 src/options/test/noise.png create mode 100644 src/options/test/tv-show.poster.jpg create mode 100644 src/sites/__layout__.js create mode 100644 src/sites/__test__.js rename src/sites/{flenix => allocine}/index.css (100%) create mode 100644 src/sites/allocine/index.js create mode 100644 src/sites/common.js delete mode 100644 src/sites/flenix/index.js create mode 100644 src/sites/justwatch/index.css create mode 100644 src/sites/justwatch/index.js delete mode 100644 src/sites/layout.js create mode 100644 src/sites/moviemeter/index.css create mode 100644 src/sites/moviemeter/index.js create mode 100644 src/sites/plex/index.css create mode 100644 src/sites/plex/index.js create mode 100644 src/sites/theme.css create mode 100644 src/sites/tubi/index.css create mode 100644 src/sites/tubi/index.js create mode 100644 src/sites/vumoo/index.css create mode 100644 src/sites/vumoo/index.js create mode 100644 src/sites/webtoplex/index.css create mode 100644 src/sites/webtoplex/index.js diff --git a/README.md b/README.md index a710d87..9ef26bb 100644 --- a/README.md +++ b/README.md @@ -8,49 +8,61 @@ This browser extension searches your [Plex Media Server (PMS)](https://www.plex. ---- -## Features: - -- Can save media directly from noted sites (file downloads/magnet URLs) - - Right-click | Web to Plex | Save as "Show/Movie (Year)" -- Can push requests to your chosen download manager - - [Radarr](https://radarr.video/) - - [Sonarr](https://sonarr.tv/) - - [CouchPotato](https://couchpota.to/) - - [Watcher 3](https://nosmokingbandit.github.io/) - - [Ombi](https://ombi.io/) -- Offers search options via right-click (context menu) - - Right-click | Web to Plex | Find "Show/Movie (Year)" -- Offers a Plex-like GUI - - Web to Plex button - - Settings page - - Pop-up page -- Offers a status via the browser badge and button - - Orange/Yellow: item is on Plex - - Blue (button): item isn't on Plex, but can be sent for - - Grey (badge)/Red (button): item is unavailable/not found - - Grey (button): item is loading -- Offers an easy login feature - - Offers an API login feature -- Offers a "Direct Plex URL" feature - - i.e. you can specify `localhost:32400` as your Plex URL to avoid bandwidth usage for Plex requests - -# Download Managers - -Optionally, you can configure your download manager(s) (see support table) in the extension's options. After that, you can immediately add a TV show or movie with one click, right from your favorite site. +# NZB Managers + +Optionally, you can configure NZB Manager (see support table) in the extension's options. After that, you can immediately add a TV show or movie with one click, right from your favorite site. ## Supported Managers | Manager | Movie Support | TV Show Support | Searchable -| ----------------------------------------------- | ------------- | --------------- | ---------- -| [Watcher 3](https://nosmokingbandit.github.io/) | Yes | | -| [CouchPotato](https://couchpota.to/) | Yes | Yes | -| [Radarr](https://radarr.video/) | Yes | | Yes -| [Sonarr](https://sonarr.tv/) | | Yes | Yes -| [Ombi](https://ombi.io/) | Yes | Yes | Yes +| ----------------------------------------------- |:-------------:|:---------------:|:----------: +| [Watcher 3](https://nosmokingbandit.github.io/) | ✔ | ❌ | ❌ +| [CouchPotato](https://couchpota.to/) | ✔ | ✔ | ❌ +| [Radarr](https://radarr.video/) | ✔ | ❌ | ✔ +| [Sonarr](https://sonarr.tv/) | ❌ | ✔ | ✔ +| [Ombi](https://ombi.io/) | ❔ | ❔ | ✔ +| [Medusa](https://pymedusa.com/) | ❌ | ✔ | ✔ +| [Sick Beard](https://sickbeard.com/) | ❌ | ✔ | ❌ + +### Key + +| ✔ | ❌ | ❔ | +| - | - | - | +| yes | no | yes (with help) | + +---- + +## Features +### Easy login +You can log into Plex using either an access token, your credentials, or Ombi (if setup). + +### Download (![download icon](https://github.com/SpaceK33z/web-to-plex/blob/master/src/img/16.png)) +On certain sites (denoted with the "download" icon), the user can choose to save/engage media directly, instead of waiting for their NZB manager to find the item. + +### Plex It! (![plex it icon](https://github.com/SpaceK33z/web-to-plex/blob/master/src/img/plexit.16.png)) +Click the icon to open **Plex It!** (left sidebar), click it again to add the current item(s) to your list. -If you don't feel like actually downloading the movie, or want a simple watchlist, you can also use the built-in "Plex It!" feature to bookmark the current page. +It's primary purpose is to provide a watchlist service on sites that don't support watchlists. + +### Hide Web to Plex (![hide icon](https://github.com/SpaceK33z/web-to-plex/blob/master/src/img/hide.16.png)) +Use this to hide the **Web to Plex** button. It changes the button's opacity to 10% to make it almost invisible so that it isn't as distracting on sites like Netflix. + +### Reload Web to Plex (![reload icon](https://github.com/SpaceK33z/web-to-plex/blob/master/src/img/reload.16.png)) +Use this to reload **Web to Plex** on the current page. This can sometimes fix loading issues or cache errors. + +### Plex URL +This is a *moderately advance* setting, but is very useful to know. If you know your Plex server's URL (e.g. `https://localhost:32400`), then you can specify this and avoid bandwidth usage, as the extension will communicate with Plex on your device instead of `https://app.plex.tv/`. + +### Find this | Right Click +If you aren't satisfied with a found item, or it is incorrect, you can right click the page and use the **Web to Plex | Find "XYZ"** feature to search for the item. + +The sites used as search engines (IMDb, TMDb, and TVDb) will automatically create a cached version of the information (for "Local Search" results). + +-------- ## Supported sites +*Given in order of completion* + 1. [Movieo](http://movieo.me/) 2. [IMDb](http://imdb.com/) 3. [Trakt.tv](https://trakt.tv/) @@ -76,11 +88,17 @@ If you don't feel like actually downloading the movie, or want a simple watchlis 23. [Toloka](https://toloka.to/)6 24. [Shana Project](https://www.shanaproject.com/)6 25. [My Anime List](https://myanimelist.com/)6 -26. [YouTube](https://youtube.com/) -27. [Flickmetrix (Cinesift)](https://flickmetrix.com/) -28. [Allociné](https://www.allocine.fr/) -29. [MovieMeter](https://www.moviemeter.nl/) -30. [JustWatch](https://justwatch.com/) +26. [My Shows](https://en.myshows.me/)6 +27. [YouTube](https://youtube.com/) +28. [Flickmetrix (Cinesift)](https://flickmetrix.com/) +29. [Allociné](https://www.allocine.fr/) +30. [MovieMeter](https://www.moviemeter.nl/) +31. [JustWatch](https://justwatch.com/) +32. [Vumoo](https://vumoo.to/)1 +33. [Web to Plex](https://ephellon.github.io/web.to.plex/)2/3/4/5 +34. [Indomovie](https://indomovie.club)5/6 +35. [Kitsu](https://kitsu.io/)6 +36. [Redbox](https://redbox.com/)6 *Notes* @@ -97,7 +115,7 @@ If you don't feel like actually downloading the movie, or want a simple watchlis **Download on [FireFox Add-ons](https://addons.mozilla.org/en-US/firefox/addon/web-to-plex/).** -**Download the [SRC](https://github.com/Ephellon/web-to-plex/archive/master.zip)** +**Download the [SRC](archive/master.zip).** ## Requirements @@ -107,6 +125,6 @@ If you don't feel like actually downloading the movie, or want a simple watchlis ## Issues & Contributions -If you have any problem with the extension, please don't hesitate to [submit an issue](https://github.com/SpaceK33z/web-to-plex/issues/new). +If you have any problem with the extension, please don't hesitate to [submit an issue](https://github.com/SpaceK33z/web-to-plex/issues/new/choose). All contributions are welcome. diff --git a/src.crx b/src.crx index 455fd7cd7c7f89fcfc9ca4cbfff6bcd408b84ee0..7862da9b3c9703eac1b8907125ab65467bc5d8c0 100644 GIT binary patch delta 300862 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�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

XoQSSe`Z|?g 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

lTsG1e(uus64 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

K42a^-Lr_=busg~k?M3xhG0GkBk6 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 TVd_t{YPzMy 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

jQx^X%5Q?-i90$LQw*-H2^Ws0l{_?kM40S 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 &=ski%fE@V=b6)b6{Crs5y;S!pU5tE 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 m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }: - console; + __context_parent__, + __context_save_element__, + BACKGROUND_TERMINAL = + BACKGROUND_DEVELOPER? + console: + { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }; let date = (new Date), YEAR = date.getFullYear(), MONTH = date.getMonth() + 1, DATE = date.getDate(); +let BACKGROUND_STORAGE = chrome.storage.sync || chrome.storage.local; +let BACKGROUND_CONFIGURATION; + // returns the proper CORS mode of the URL let cors = url => ((/^(https|sftp)\b/i.test(url) || /\:(443|22)\b/? '': 'no-') + 'cors'); // Create a Crypto-Key -// new Key(number:integer, string) -> string +// new Key(number:integer, string:symbol) -> string class Key { constructor(length = 8, symbol = '') { let values = []; @@ -29,9 +32,7 @@ class Key { } rehash(length, symbol) { - if(length) - /* Do nothing */; - else + if(length <= 0) length = this.length; return this.value = new Key(length, symbol); @@ -63,10 +64,10 @@ class Headers { function ChangeStatus({ ITEM_ID, ITEM_TITLE, ITEM_TYPE, ID_PROVIDER, ITEM_YEAR, ITEM_URL = '', FILE_TYPE = '', FILE_PATH }) { let FILE_TITLE = ITEM_TITLE.replace(/\-/g, ' ').replace(/[\s\:]{2,}/g, ' - ').replace(/[^\w\s\-\']+/g, ''), - // File friendly title - SEARCH_TITLE = ITEM_TITLE.replace(/[\-\s]+/g, '-').replace(/[^\w\-]+/g, ''), - // Search friendly title - SEARCH_PROVIDER = /[it]m/i.test(ID_PROVIDER)? 'GX': 'GG'; + // File friendly title + SEARCH_TITLE = ITEM_TITLE.replace(/[\-\s]+/g, '-').replace(/\s*&\s*/g, ' and ').replace(/[^\w\-\'\*\#]+/g, ''), + // Search friendly title + SEARCH_PROVIDER = /\b(tv|show|series)\b/i.test(ITEM_TYPE)? 'GG': /^im/i.test(ID_PROVIDER)? 'VO': /^tm/i.test(ID_PROVIDER)? 'GX': 'GG'; ITEM_ID = (ITEM_ID && !/^tt$/i.test(ITEM_ID)? ITEM_ID: '') + ''; ITEM_ID = ITEM_ID.replace(/^.*\b(tt\d+)\b.*$/, '$1').replace(/^.*\bid=(\d+)\b.*$/, '$1').replace(/^.*(?:movie|tv|(?:tv-?)?(?:shows?|series|episodes?))\/(\d+).*$/, '$1'); @@ -85,27 +86,90 @@ function ChangeStatus({ ITEM_ID, ITEM_TITLE, ITEM_TYPE, ID_PROVIDER, ITEM_YEAR, title: `Find "${ ITEM_TITLE } (${ ITEM_YEAR || YEAR })"` }); - for(let array = 'IM TM TV'.split(' '), length = array.length, index = 0, item; index < length; index++) - chrome.contextMenus.update('W2P-' + (item = array[index]), { + for(let databases = 'IM TM TV'.split(' '), length = databases.length, index = 0, database; index < length; index++) + chrome.contextMenus.update('W2P-' + (database = databases[index]), { title: ( - ((ID_PROVIDER == (item += 'Db')) && ITEM_ID)? - `Open in ${ item } (${ (+ITEM_ID? '#': '') + ITEM_ID })`: - `Find in ${ item }` + ((ID_PROVIDER == (database += 'Db')) && ITEM_ID)? + `Open in ${ database } (${ (+ITEM_ID? '#': '') + ITEM_ID })`: + `Find in ${ database }` ), checked: false }); chrome.contextMenus.update('W2P-XX', { - title: `Find on ${ (SEARCH_PROVIDER == 'GX'? 'GoStream': 'Google') }`, + title: `Find on ${ (SEARCH_PROVIDER == 'VO'? 'Vumoo': SEARCH_PROVIDER == 'GX'? 'GoStream': 'Google') }`, checked: false }); } + +// get the saved options +function getConfiguration() { + return new Promise((resolve, reject) => { + function handleConfiguration(options) { + if((!options.plexToken || !options.servers) && !options.IGNORE_PLEX) + return reject(new Error('Required options are missing')), + null; + + let server, o; + + if(!options.IGNORE_PLEX) { + // For now we support only one Plex server, but the options already + // allow multiple for easy migration in the future. + server = options.servers[0]; + o = { + server: { + ...server, + // Compatibility for users who have not updated their settings yet. + connections: server.connections || [{ uri: server.url }] + }, + ...options + }; + } else { + o = options; + } + + resolve(o); + } + + BACKGROUND_STORAGE.get(null, options => { + if(chrome.runtime.lastError) + chrome.storage.local.get(null, handleOptions); + else + handleConfiguration(options); + }); + }); +} + +// self explanatory, returns an object; sets the configuration variable +function parseConfiguration() { + return getConfiguration().then(options => { + BACKGROUND_CONFIGURATION = options; + + if((BACKGROUND_DEVELOPER = options.DeveloperMode) && !parseConfiguration.gotConfig) { + parseConfiguration.gotConfig = true; + BACKGROUND_TERMINAL = + BACKGROUND_DEVELOPER? + console: + { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }; + + BACKGROUND_TERMINAL.warn(`BACKGROUND_DEVELOPER: ${BACKGROUND_DEVELOPER}`); + } + + return options; + }, error => { throw error }); +} + +(async() => { + await parseConfiguration(); +})(); + +/** CouchPotato - Movies **/ // At this point you might want to think, WHY would you want to do // these requests in a background page instead of the content script? // This is because Movieo is served over HTTPS, so it won't accept requests to // HTTP servers. Unfortunately, many people use CouchPotato over HTTP. -function viewCouchPotato(request, sendResponse) { +function Open_CouchPotato(request, sendResponse) { fetch(`${ request.url }?id=${ request.imdbId }`, { headers: new Headers(request.basicAuth), mode: cors(request.url) @@ -115,26 +179,27 @@ function viewCouchPotato(request, sendResponse) { sendResponse({ success, status: (success? json.media.status: null) }); }) .catch(error => { - sendResponse({ error: String(error), location: 'viewCouchPotato' }); + sendResponse({ error: String(error), location: '@0B: Open_CouchPotato' }); }); } -function addCouchpotato(request, sendResponse) { +function Push_CouchPotato(request, sendResponse) { fetch(`${ request.url }?identifier=${ request.imdbId }`, { headers: new Headers(request.basicAuth), mode: cors(request.url) }) .then(response => response.json()) - .catch(error => sendResponse({ error: 'Item not found', location: 'addCouchpotato => fetch.then.catch', silent: true })) + .catch(error => sendResponse({ error: 'Item not found', location: '@0B: Push_CouchPotato => fetch.then.catch', silent: true })) .then(response => { sendResponse({ success: response.success }); }) .catch(error => { - sendResponse({ error: String(error) , location: 'addCouchPotato'}); + sendResponse({ error: String(error) , location: '@0B: Push_CouchPotato'}); }); } -function addWatcher(request, sendResponse) { +/** Watcher - Movies **/ +function Push_Watcher(request, sendResponse) { let headers = { 'Content-Type': 'application/json', 'X-Api-Key': request.token, @@ -151,7 +216,7 @@ function addWatcher(request, sendResponse) { fetch(debug.url = `${ request.url }?apikey=${ request.token }&mode=addmovie&${ query }=${ id }`) .then(response => response.json()) - .catch(error => sendResponse({ error: 'Movie not found', location: 'addWatcher => fetch.then.catch', silent: true })) + .catch(error => sendResponse({ error: 'Movie not found', location: '@0B: Push_Watcher => fetch.then.catch', silent: true })) .then(response => { if((response.response + "") == "true") return sendResponse({ @@ -163,13 +228,14 @@ function addWatcher(request, sendResponse) { .catch(error => { sendResponse({ error: String(error), - location: `addWatcher => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, + location: `@0B: Push_Watcher => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, debug }); }); } -function addRadarr(request, sendResponse) { +/** Radarr - Movies **/ +function Push_Radarr(request, sendResponse) { let headers = { 'Content-Type': 'application/json', 'X-Api-Key': request.token, @@ -186,7 +252,7 @@ function addRadarr(request, sendResponse) { fetch(debug.url = `${ request.url }lookup/${ query }=${ id }&apikey=${ request.token }`) .then(response => response.json()) - .catch(error => sendResponse({ error: 'Movie not found', location: 'addRadarr => fetch.then.catch', silent: true })) + .catch(error => sendResponse({ error: 'Movie not found', location: '@0B: Push_Radarr => fetch.then.catch', silent: true })) .then(data => { let body, // Monitor, search, and download movie ASAP @@ -214,11 +280,11 @@ function addRadarr(request, sendResponse) { }; } - terminal.group('Generated URL'); - terminal.log('URL', request.url); - terminal.log('Head', headers); - terminal.log('Body', body); - terminal.groupEnd(); + BACKGROUND_TERMINAL.group('Generated URL'); + BACKGROUND_TERMINAL.log('URL', request.url); + BACKGROUND_TERMINAL.log('Head', headers); + BACKGROUND_TERMINAL.log('Body', body); + BACKGROUND_TERMINAL.groupEnd(); return debug.body = body; }) @@ -238,7 +304,7 @@ function addRadarr(request, sendResponse) { if (data && data[0] && data[0].errorMessage) { sendResponse({ error: data[0].errorMessage, - location: `addRadarr => fetch("${ request.url }", { headers }).then(data => { if })`, + location: `@0B: Push_Radarr => fetch("${ request.url }", { headers }).then(data => { if })`, debug }); } else if (data && data.path) { @@ -248,7 +314,7 @@ function addRadarr(request, sendResponse) { } else { sendResponse({ error: 'Unknown error', - location: `addRadarr => fetch("${ request.url }", { headers }).then(data => { else })`, + location: `@0B: Push_Radarr => fetch("${ request.url }", { headers }).then(data => { else })`, debug }); } @@ -256,13 +322,14 @@ function addRadarr(request, sendResponse) { .catch(error => { sendResponse({ error: String(error), - location: `addRadarr => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, + location: `@0B: Push_Radarr => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, debug }); }); } -function addSonarr(request, sendResponse) { +/** Sonarr - TV Shows **/ +function Push_Sonarr(request, sendResponse) { let headers = { 'Content-Type': 'application/json', 'X-Api-Key': request.token, @@ -275,7 +342,7 @@ function addSonarr(request, sendResponse) { fetch(debug.url = `${ request.url }lookup?apikey=${ request.token }&term=${ query }`) .then(response => response.json()) - .catch(error => sendResponse({ error: 'TV Show not found', location: 'addSonarr => fetch.then.catch', silent: true })) + .catch(error => sendResponse({ error: 'TV Show not found', location: '@0B: Push_Sonarr => fetch.then.catch', silent: true })) .then(data => { if (!data instanceof Array || !data.length) throw new Error('TV Show not found'); @@ -284,6 +351,7 @@ function addSonarr(request, sendResponse) { let body = { ...data[0], monitored: true, + seasonFolder: true, minimumAvailability: 'preDB', qualityProfileId: request.QualityID, rootFolderPath: request.StoragePath, @@ -292,11 +360,11 @@ function addSonarr(request, sendResponse) { } }; - terminal.group('Generated URL'); - terminal.log('URL', request.url); - terminal.log('Head', headers); - terminal.log('Body', body); - terminal.groupEnd(); + BACKGROUND_TERMINAL.group('Generated URL'); + BACKGROUND_TERMINAL.log('URL', request.url); + BACKGROUND_TERMINAL.log('Head', headers); + BACKGROUND_TERMINAL.log('Body', body); + BACKGROUND_TERMINAL.groupEnd(); return debug.body = body; }) @@ -316,7 +384,239 @@ function addSonarr(request, sendResponse) { if (data && data[0] && data[0].errorMessage) { sendResponse({ error: data[0].errorMessage, - location: `addSonarr => fetch("${ request.url }", { headers }).then(data => { if })`, + location: `@0B: Push_Sonarr => fetch("${ request.url }", { headers }).then(data => { if })`, + debug + }); + } else if (data && data.path) { + sendResponse({ + success: 'Added to ' + data.path + }); + } else { + sendResponse({ + error: 'Unknown error', + location: `@0B: Push_Sonarr => fetch("${ request.url }", { headers }).then(data => { else })`, + debug + }); + } + }) + .catch(error => { + sendResponse({ + error: String(error), + location: `@0B: Push_Sonarr => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, + debug + }); + }); +} + +/** Medusa - TV Shows **/ +function Push_Medusa(request, sendResponse) { + let headers = { + 'Content-Type': 'application/json', + 'X-Api-Key': request.token, + ...(new Headers(request.basicAuth)) + }, + id = request.tvdbId, + query = request.title.replace(/\s+/g, '+'), + debug = { headers, query, request }; + // setup stack trace for debugging + + fetch(debug.url = `${ request.root }internal/searchIndexersForShowName?api_key=${ request.token }&indexerId=0&query=${ query }`) + .then(response => response.json()) + .catch(error => sendResponse({ error: 'TV Show not found', location: '@0B: Push_Medusa => fetch.then.catch', silent: true })) + .then(data => { + data = data.results; + + if (!data instanceof Array || !data.length) + throw new Error('TV Show not found'); + + // Monitor, search, and download series ASAP + let body = data[0].join('|'); + + BACKGROUND_TERMINAL.group('Generated URL'); + BACKGROUND_TERMINAL.log('URL', request.url); + BACKGROUND_TERMINAL.log('Head', headers); + BACKGROUND_TERMINAL.log('Body', body); + BACKGROUND_TERMINAL.groupEnd(); + + return debug.body = body; + }) + .then(body => { + return fetch(`${ request.url }`, debug.requestHeaders = { + method: 'POST', + mode: cors(request.url), + body: JSON.stringify({ id: { tvdb: request.tvdbId } }), + headers + }); + }) + .then(response => response.text()) + .then(data => { + let path = request.StoragePath.replace(/\\?$/, '\\'); + + debug.data = + data = JSON.parse(data || `{"path":"${ path }${ request.title } (${ request.year })"}`); + + if (data && data.error) { + sendResponse({ + error: data.error, + location: `@0B: Push_Medusa => fetch("${ request.url }", { headers }).then(data => { if })`, + debug + }); + } else if (data && data.id) { + sendResponse({ + success: `Added to ${ path }${ request.title }(${ request.year })` + }); + } else { + sendResponse({ + error: 'Unknown error', + location: `@0B: Push_Medusa => fetch("${ request.url }", { headers }).then(data => { else })`, + debug + }); + } + }) + .catch(error => { + sendResponse({ + error: String(error), + location: `@0B: Push_Medusa => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, + debug + }); + }); +} + +/** Medusa - TV Shows **/ +function addMedusa(request, sendResponse) { + let headers = { + 'Content-Type': 'application/json', + 'X-Api-Key': request.token, + ...(new Headers(request.basicAuth)) + }, + id = request.tvdbId, + query = request.title.replace(/\s+/g, '+'), + debug = { headers, query, request }; + // setup stack trace for debugging + + fetch(debug.url = `${ request.root }internal/searchIndexersForShowName?api_key=${ request.token }&indexerId=0&query=${ query }`) + .then(response => response.json()) + .catch(error => sendResponse({ error: 'TV Show not found', location: 'addMedusa => fetch.then.catch', silent: true })) + .then(data => { + data = data.results; + + if (!data instanceof Array || !data.length) + throw new Error('TV Show not found'); + + // Monitor, search, and download series ASAP + let body = data[0].join('|'); + + BACKGROUND_TERMINAL.group('Generated URL'); + BACKGROUND_TERMINAL.log('URL', request.url); + BACKGROUND_TERMINAL.log('Head', headers); + BACKGROUND_TERMINAL.log('Body', body); + BACKGROUND_TERMINAL.groupEnd(); + + return debug.body = body; + }) + .then(body => { + return fetch(`${ request.url }`, debug.requestHeaders = { + method: 'POST', + mode: cors(request.url), + body: JSON.stringify({ id: { tvdb: request.tvdbId } }), + headers + }); + }) + .then(response => response.text()) + .then(data => { + let path = request.StoragePath.replace(/\\?$/, '\\'); + + debug.data = + data = JSON.parse(data || `{"path":"${ path }${ request.title } (${ request.year })"}`); + + if (data && data.error) { + sendResponse({ + error: data.error, + location: `addMedusa => fetch("${ request.url }", { headers }).then(data => { if })`, + debug + }); + } else if (data && data.id) { + sendResponse({ + success: `Added to ${ path }${ request.title }(${ request.year })` + }); + } else { + sendResponse({ + error: 'Unknown error', + location: `addMedusa => fetch("${ request.url }", { headers }).then(data => { else })`, + debug + }); + } + }) + .catch(error => { + sendResponse({ + error: String(error), + location: `addMedusa => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, + debug + }); + }); +} + +/** Sick Beard - TV Shows **/ +function Push_SickBeard(request, sendResponse) { + let headers = { + 'Content-Type': 'application/json', + 'X-Api-Key': request.token, + ...(new Headers(request.basicAuth)) + }, + id = request.tvdbId, + query = `tvdbid=${ id }`, + path = (`${ request.StoragePath }\\${ request.title }`).replace(/\\\\/g, '\\'), + debug = { headers, query, request }; + // setup stack trace for debugging + + fetch(debug.url = `${ request.url }?cmd=sb.searchtvdb&${ query }`) + .then(response => response.json()) + .catch(error => sendResponse({ error: 'TV Show not found', location: '@0B: Push_SickBeard => fetch.then.catch', silent: true })) + .then(data => { + if (!/^success$/i.test(data.result)) + throw new Error('TV Show not found'); + + data = data.data.results; + + // Monitor, search, and download series ASAP + let body = formify({ + tvdbid: id, + initial: request.QualityID, + location: encodeURIComponent(path), + status: 'wanted', + }); + + BACKGROUND_TERMINAL.group('Generated URL'); + BACKGROUND_TERMINAL.log('URL', request.url); + BACKGROUND_TERMINAL.log('Head', headers); + BACKGROUND_TERMINAL.log('Body', body); + BACKGROUND_TERMINAL.groupEnd(); + + return debug.body = body; + }) + .then(async body => { + await fetch(`${ request.url }?cmd=sb.addrootdir&${ body }`); + + return fetch(`${ request.url }?cmd=show.${ request.exists? 'addexisting': 'addnew' }&${ body }`, debug.requestHeaders = { + method: 'POST', + mode: cors(request.url), + // body: JSON.stringify(body), + headers + }); + }) + .then(response => response.text()) + .then(results => { + debug.data = + results = JSON.parse(results || `{"data":{},message:"",result:""}`); + + let { data, message, result } = results; + + data.path = `${ request.StoragePath }${ request.title } (${ request.year })`; + + if (data && !/^success$/i.test(result) && message) { + sendResponse({ + error: message, + location: `@0B: Push_SickBeard => fetch("${ request.url }", { headers }).then(results => { if })`, debug }); } else if (data && data.path) { @@ -326,7 +626,7 @@ function addSonarr(request, sendResponse) { } else { sendResponse({ error: 'Unknown error', - location: `addSonarr => fetch("${ request.url }", { headers }).then(data => { else })`, + location: `@0B: Push_SickBeard => fetch("${ request.url }", { headers }).then(results => { else })`, debug }); } @@ -334,13 +634,14 @@ function addSonarr(request, sendResponse) { .catch(error => { sendResponse({ error: String(error), - location: `addSonarr => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, + location: `@0B: Push_SickBeard => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, debug }); }); } -function addOmbi(request, sendResponse) { +/** Ombi* - TV Shows/Movies **/ +function Push_Ombi(request, sendResponse) { let headers = { 'Content-Type': 'application/json', 'ApiKey': request.token, @@ -353,9 +654,9 @@ function addOmbi(request, sendResponse) { // setup stack trace for debugging if(request.contentType == 'movie' && (id || null) === null) - sendResponse({ error: 'Invalid TMDbID', location: 'addOmbi => if', silent: true }); + sendResponse({ error: 'Invalid TMDbID', location: '@0B: Push_Ombi => if', silent: true }); else if((id || null) === null) - sendResponse({ error: 'Invalid TVDbID', location: 'addOmbi => else if', silent: true }); + sendResponse({ error: 'Invalid TVDbID', location: '@0B: Push_Ombi => else if', silent: true }); fetch(debug.url = request.url, { method: 'POST', @@ -363,7 +664,7 @@ function addOmbi(request, sendResponse) { body: JSON.stringify(body), headers }) - .catch(error => sendResponse({ error: `${ type } not found`, location: 'addOmbi => fetch.then.catch', silent: true })) + .catch(error => sendResponse({ error: `${ type } not found`, location: '@0B: Push_Ombi => fetch.then.catch', silent: true })) .then(response => response.text()) .then(data => { debug.data = @@ -377,7 +678,7 @@ function addOmbi(request, sendResponse) { else sendResponse({ error: data.errorMessage, - location: `addOmbi => fetch("${ request.url }", { headers }).then(data => { if })`, + location: `@0B: Push_Ombi => fetch("${ request.url }", { headers }).then(data => { if })`, debug }); } else if (data && data.path) { @@ -387,7 +688,7 @@ function addOmbi(request, sendResponse) { } else { sendResponse({ error: 'Unknown error', - location: `addOmbi => fetch("${ request.url }", { headers }).then(data => { else })`, + location: `@0B: Push_Ombi => fetch("${ request.url }", { headers }).then(data => { else })`, debug }); } @@ -395,7 +696,7 @@ function addOmbi(request, sendResponse) { .catch(error => { sendResponse({ error: String(error), - location: `addOmbi => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, + location: `@0B: Push_Ombi => fetch("${ request.url }", { headers }).catch(error => { sendResponse })`, debug }); }); @@ -404,7 +705,7 @@ function addOmbi(request, sendResponse) { // Unfortunately the native Promise.race does not work as you would suspect. // If one promise (Plex request) fails, we still want the other requests to continue racing. // See https://www.jcore.com/2016/12/18/promise-me-you-wont-use-promise-race/ for an explanation -function promiseRace(promises) { +function PromiseRace(promises) { if (!~promises.length) { return Promise.reject('Cannot start a race without promises!'); } @@ -422,12 +723,12 @@ function promiseRace(promises) { // The promise has rejected, remove it from the list of promises and just continue the race. let promise = promises.splice(index, 1)[0]; - promise.catch(error => terminal.log(`Plex request #${ index } failed:`, error)); - return promiseRace(promises); + promise.catch(error => BACKGROUND_TERMINAL.log(`Plex request #${ index } failed:`, error)); + return PromiseRace(promises); }); } -function $searchPlex(connection, headers, options) { +function $Search_Plex(connection, headers, options) { let type = options.type || 'movie', url = `${ connection.uri }/hubs/search`, field = options.field || 'title'; @@ -444,6 +745,7 @@ function $searchPlex(connection, headers, options) { let title = encodeURIComponent(options.title.replace(/\s+/g, ' ')), finalURL = `${ url }?query=${ field }:${ title }`; + // BACKGROUND_TERMINAL.warn(`Fetching <${ JSON.stringify(headers) } ${ finalURL } >`); return fetch(finalURL, { headers }) .then(response => response.json()) .then(data => { @@ -483,10 +785,11 @@ function $searchPlex(connection, headers, options) { found: !!media, key }; - }); + }) + .catch(error => { throw error }); } -async function searchPlex(request, sendResponse) { +async function Search_Plex(request, sendResponse) { let { options, serverConfig } = request, headers = { 'X-Plex-Token': serverConfig.token, @@ -495,17 +798,17 @@ async function searchPlex(request, sendResponse) { // Try all Plex connection URLs let requests = serverConfig.connections.map(connection => - $searchPlex(connection, headers, options) + $Search_Plex(connection, headers, options) ); try { // See what connection URL finishes the request first and pick that one. // TODO: optimally, as soon as the first request is finished, all other requests would be cancelled using AbortController. - let result = await promiseRace(requests); + let result = await PromiseRace(requests); sendResponse(result); } catch (error) { - sendResponse({ error: String(error), location: 'searchPlex' }); + sendResponse({ error: String(error), location: '@0B: Search_Plex' }); } } @@ -531,12 +834,12 @@ chrome.contextMenus.onClicked.addListener(item => { case 'im': url = (qu && pv == 'im')? `imdb.com/title/${ qu }/`: - `imdb.com/find?ref_=nv_sr_fn&s=all&q=${ tl }`; + `imdb.com/find?ref_=nv_sr_fn&s=all&q=${ tt }`; break; case 'tm': url = (qu && pv == 'tm')? `themoviedb.org/${ external.ITEM_TYPE == 'show'? 'tv': 'movie' }/${ qu }`: - `themoviedb.org/search?query=${ tl }`; + `themoviedb.org/search?query=${ tt }`; break; case 'tv': url = (qu && pv == 'tv')? @@ -544,7 +847,9 @@ chrome.contextMenus.onClicked.addListener(item => { `thetvdb.com/search?q=${ p(tl) }`; break; case 'xx': - url = external.SEARCH_PROVIDER == 'GX'? + url = external.SEARCH_PROVIDER == 'VO'? + `google.com/search?q=${ p(tl) }+site:vumoo.to`: + external.SEARCH_PROVIDER == 'GX'? `gostream.site/?s=${ p(tl) }`: `google.com/search?q="${ p(tl, ' ') } ${ yr }"+${ pv }db`; break; @@ -573,55 +878,72 @@ chrome.contextMenus.onClicked.addListener(item => { }); chrome.runtime.onMessage.addListener((request, sender, callback) => { - terminal.log('From: ' + sender); + BACKGROUND_TERMINAL.log('From: ' + sender); let item = (request? request.options || request: {}), ITEM_TITLE = item.title, ITEM_YEAR = item.year, ITEM_TYPE = item.type, - ID_PROVIDER = (i=>{for(let p in i)if(/^TVDb/i.test(p)&&i[p])return'TVDb';else if(/^TMDb/i.test(p)&&i[p])return'TMDb';return'IMDb'})(item), - ITEM_URL = item.href || '', + ID_PROVIDER = (i=>{for(let p in i)if(/^TV(Db)?/i.test(p)&&i[p])return'TVDb';else if(/^TM(Db)?/i.test(p)&&i[p])return'TMDb';return'IMDb'})(item), + ITEM_URL = (item.href || ''), FILE_TYPE = (item.tail || 'mp4'), - FILE_PATH = item.path || '', + FILE_PATH = (item.path || ''), ITEM_ID = ((i, I)=>{for(let p in i)if(RegExp('^'+I,'i').test(p))return i[p]})(item, ID_PROVIDER); try { switch (request.type) { case 'SEARCH_PLEX': - searchPlex(request, callback); + Search_Plex(request, callback); return true; + case 'VIEW_COUCHPOTATO': - viewCouchPotato(request, callback); + Open_CouchPotato(request, callback); + return true; + + case 'PUSH_COUCHPOTATO': + Push_CouchPotato(request, callback); + return true; + + case 'PUSH_RADARR': + Push_Radarr(request, callback); return true; - case 'ADD_COUCHPOTATO': - addCouchpotato(request, callback); + + case 'PUSH_SONARR': + Push_Sonarr(request, callback); return true; - case 'ADD_RADARR': - addRadarr(request, callback); + + case 'PUSH_MEDUSA': + Push_Medusa(request, callback); return true; - case 'ADD_SONARR': - addSonarr(request, callback); + + case 'PUSH_WATCHER': + Push_Watcher(request, callback); return true; - case 'ADD_WATCHER': - addWatcher(request, callback); + + case 'PUSH_OMBI': + Push_Ombi(request, callback); return true; - case 'ADD_OMBI': - addOmbi(request, callback); + + case 'PUSH_SICKBEARD': + Push_SickBeard(request, callback); return true; + case 'OPEN_OPTIONS': chrome.runtime.openOptionsPage(); return true; + case 'SEARCH_FOR': if(ITEM_TITLE && ITEM_TYPE) ChangeStatus({ ITEM_ID, ITEM_TITLE, ITEM_TYPE, ID_PROVIDER, ITEM_YEAR, ITEM_URL, FILE_TYPE, FILE_PATH }); return true; + case 'SAVE_AS': chrome.contextMenus.update('W2P-DL', { title: `Save as "${ ITEM_TITLE } (${ ITEM_YEAR })" (${ FILE_TYPE })` }); return true; - case 'DOWNLOAD_FILE': + case 'DOWNLOAD_FILE': let FILE_TITLE = ITEM_TITLE.replace(/\-/g, ' ').replace(/[\s\:]{2,}/g, ' - ').replace(/[^\w\s\-\']+/g, ''); // no try/catch, use callback for that @@ -639,8 +961,18 @@ chrome.runtime.onMessage.addListener((request, sender, callback) => { }); }); return true; + + case 'PLUGIN': + case 'SCRIPT': + case '_INIT_': + case '$INIT$': + case 'FOUND': + case 'GRANT_PERMISSION': + /* These are meant to be handled by plugn.js */ + return false; + default: - terminal.warn(`Unknown event [${ request.type }]`); + BACKGROUND_TERMINAL.warn(`Unknown event [${ request.type }]`); return false; } } catch (error) { @@ -653,12 +985,12 @@ chrome.runtime.onMessage.addListener((request, sender, callback) => { if(SessionState === false) { SessionState = true; - parentItem = chrome.contextMenus.create({ + __context_parent__ = chrome.contextMenus.create({ id: 'W2P', title: 'Web to Plex' }); - saveItem = chrome.contextMenus.create({ + __context_save_element__ = chrome.contextMenus.create({ id: 'W2P-DL', title: 'Nothing to Save' }); @@ -667,7 +999,7 @@ if(SessionState === false) { for(let array = 'IM TM TV'.split(' '), DL = {}, length = array.length, index = 0, item; index < length; index++) chrome.contextMenus.create({ id: 'W2P-' + (item = array[index]), - parentId: parentItem, + parentId: __context_parent__, title: `Using ${ item }Db`, type: 'checkbox', checked: true // implement a way to use the checkboxes? @@ -676,7 +1008,7 @@ if(SessionState === false) { // Non-standard search engines chrome.contextMenus.create({ id: 'W2P-XX', - parentId: parentItem, + parentId: __context_parent__, title: `Using best guess`, type: 'checkbox', checked: true // implement a way to use the checkboxes? @@ -684,5 +1016,14 @@ if(SessionState === false) { } +// turn object into URL paramaeters: +// { data: data, ... } => data=data&... +function formify(data) { + let body = []; + for(let key in data) + body.push(`${ key }=${ data[key] }`); + return body.join('&'); +} + if(chrome.runtime.lastError) /* Attempt Error Suppression */; diff --git a/src/cloud/__layout__.js b/src/cloud/__layout__.js new file mode 100644 index 0000000..0624771 --- /dev/null +++ b/src/cloud/__layout__.js @@ -0,0 +1,39 @@ +// optional +// "Friendly Name" requires: api|username|password|token +// api - the user's api tokens (external, such as TMDb/OMDb) +// username - the user's usernames (internal, such as Radarr/Sonarr/etc.) +// password - the user's passwords (internal) +// token - the user's tokens (internal) +// Example: "Web to Plex" requires: api, token + +let script = { + // required + "url": "< URL RegExp >", + // Example: *://*.amazon.*/*/video/(detail|buy)/* + // *:// - match any protocol (http, https, etc.) + // *.amazon - match any sub-domain (www, ww5, etc.) + // .* - match any TLD (com, net, org, etc.) + // /* - match any path + // (detail|buy) - match one of the items + + // optional + "ready": () => { /* return a boolean to describe if the page is ready */ }, + + // optional + "timeout": 1000, // if the script fails to complete, retry after ... milliseconds + + // required + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('#title').first, + year = $('#year').first, + image = $('#image').first, + type = script.getType(); // described below + + return { type, title, year, image }; + }, + + // optional | functioanlity only + "getType": () => 'movie' || 'show', +}; diff --git a/src/cloud/__test__.js b/src/cloud/__test__.js new file mode 100644 index 0000000..3a4ba32 --- /dev/null +++ b/src/cloud/__test__.js @@ -0,0 +1,37 @@ +let script = { + // required + "url": "*://ephellon.github.io/web.to.plex/test/*", + // Example: *://*.amazon.com/*/video/(detail|buy)/* + // *:// - match any protocol (http, https, etc.) + // *.amazon.com - match any sub-domain (www, ww5, etc.) + // /* - match any path + // (detail|buy) - match one of the items + + // optional + "ready": () => { + /* return a boolean to describe if the page is ready */ + return true; + }, + + // optional + "timeout": 1000, // if the script fails to complete, retry after ... milliseconds + + // required + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('#title').first, + year = $('#year').first, + image = $('#poster').first, + type = script.getType(); // described below + + title = title.textContent; + year = +year.textContent; + image = image.src || ''; + + return { type, title, year, image }; + }, + + // optional | functioanlity only + "getType": () => $('#example').first.getAttribute('type'), +}; diff --git a/src/cloud/allocine.js b/src/cloud/allocine.js new file mode 100644 index 0000000..50fcbab --- /dev/null +++ b/src/cloud/allocine.js @@ -0,0 +1,29 @@ +let script = { + "url": "*://*.allocine.fr/(film|series)/*", + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('.titlebar-title').first, + year = $('.date, .meta-body font').first, + image = $('.thumbnail-img').first, + type = script.getType(); + + if(!title || !year) + return 1000; + + title = title.textContent.trim(); + image = image.src; + + year.textContent.replace(/(\d{4})/, ''); + year = +R.$1; + + return { type, title, year, image }; + }, + + "getType": () => { + let { pathname } = top.location; + + return /\/(film)\//.test(pathname)? 'film': 'show'; + }, +}; diff --git a/src/cloud/amazon.js b/src/cloud/amazon.js new file mode 100644 index 0000000..3bc3adf --- /dev/null +++ b/src/cloud/amazon.js @@ -0,0 +1,55 @@ +// Web to Plex - Toloka Plugin +// Aurthor(s) - @ephellon (2019) + +/* Minimal Required Layout * + script { + url: string, + init: function => ({ type:string, title:string, year:number|null|undefined }) + } +*/ + +// REQUIRED [script:object]: The script object +let script = { + // REQUIRED [script.url]: this is what you ask Web to Plex access to; currently limited to a single domain + "url": "*://*.amazon.com/*/video/detail/*", + + // PREFERRED [script.ready]: a function to determine that the page is indeed ready + "ready": () => !$('[data-automation-id="imdb-rating-badge"], #most-recent-reviews-content > *:first-child').empty, + + // REQUIRED [script.init]: it will always be fired after the page and Web to Plex have been loaded + // OPTIONAL [ready]: if using script.ready, Web to Plex will pass a boolean of the ready state + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('[data-automation-id="title"], #aiv-content-title, .dv-node-dp-title') + .first.textContent + .replace(/(?:\(.+?\)|(\d+)|\d+\s+seasons?\s+(\d+))\s*$/gi, '') + .trim(), + // REQUIRED [title:string] + // you have access to the exposed "helper.js" file within the extension + year = +( + !(_year = $('[data-automation-id="release-year-badge"], .release-year')).empty? + _year.first.textContent.trim(): + (R.$1 || R.$2 || YEAR) + ), + // PREFERRED [year:number, null, undefined] + image = ( + (_image = $('.av-bgimg__div, div[style*="sgp-catalog-images"]')).empty? + $('.av-fallback-packshot img').src: + getComputedStyle(_image.first).backgroundImage.replace(/[^]*url\((["']?)(.+?)\1\)[^]*/i, '$2') + ), + // the rest of the code is up to you, but should be limited to a layout similar to this + type = script.getType(); + + // REQUIRED [{ type:'movie', 'show'; title:string; year:number }] + // PREFERRED [{ image:string; IMDbID:string; TMDbID:string, number; TVDbID:string, number }] + return { type, title, year, image }; + }, + + // OPTIONAL: the rest of this code is purely for functionality + "getType": () => { + return !$('[data-automation-id*="season"], [class*="season"], [class*="episode"], [class*="series"]').empty? + 'tv': + 'movie' + }, +}; diff --git a/src/cloud/couchpotato.js b/src/cloud/couchpotato.js new file mode 100644 index 0000000..6508ff4 --- /dev/null +++ b/src/cloud/couchpotato.js @@ -0,0 +1,40 @@ +let script = { + "url": "*://*.couchpotato.life/(movies|shows)/*", + + "ready": () => !$('.media-body .clearfix').empty && $('.media-body .clearfix').first.children.length, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('[itemprop="description"]').first, + year = title.previousElementSibling, + image = $('img[src*="wp-content"]'), + type = script.getType(), + IMDbID = script.getIMDbID(); + + title = title.textContent.trim(); + year = +year.textContent.trim(); + image = image.empty? '': image.first.src; + + return { type, title, year, image, IMDbID }; + }, + + "getType": () => { + let pathname = window.location.pathname; + + return /^\/movies?\//.test(pathname)? + 'movie': + /^\/shows?\//.test(pathname)? + 'show': + null + }, + + "getIMDbID": () => { + let link = $('[href*="imdb.com/title/tt"]'); + + if(!link.empty) + return link.first.href + .replace(/^.*imdb\.com\/title\//, '') + .replace(/\/(?:maindetails\/?)?$/, ''); + }, +}; diff --git a/src/cloud/fandango.js b/src/cloud/fandango.js new file mode 100644 index 0000000..715934c --- /dev/null +++ b/src/cloud/fandango.js @@ -0,0 +1,20 @@ +let script = { + "url": "*://*.fandango.com/[\\w\\-]+/movie-overview", + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('.subnav__title').first, + year = $('.movie-details__release-date').first, + image = $('.movie-details__movie-img').first, + type = 'movie'; + + title = title.textContent.trim().split(/\n+/)[0].trim(); + year = +year.textContent.replace(/.*(\d{4}).*/, '$1').trim(); + image = image.empty? '': image.src; + + title = title.replace(RegExp(`\\s*\\((${ year })\\)`), ''); + + return { type, title, year, image }; + }, +}; diff --git a/src/cloud/flickmetrix.js b/src/cloud/flickmetrix.js new file mode 100644 index 0000000..cf4a041 --- /dev/null +++ b/src/cloud/flickmetrix.js @@ -0,0 +1,61 @@ +let script = { + "url": "*://*.flickmetrix.com/(watchlist|seen|favourites|trash|share|\\?)?", + + "ready": () => $('#loadingOverlay > *').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + if(script.isList()) + return script.processList(ready); + + let element = $('#singleFilm'), type = 'movie'; + + _title = $('.title', film).first; + _year = $('.title + *', film).first; + _image = $('img', film).first; + + let title = _title.textContent.trim(), + year = +_year.textContent.replace(/^\(|\)$/g, '').trim(), + image = _image.src, + IMDbID = script.getIMDbID(element); + + return { type, title, year, image }; + }, + + "getIMDbID": (element) => { + let link = $('[href*="imdb.com/title/tt"]').first; + + if(link) + return link.href.replace(/^.*imdb\.com\/title\//, '').replace(/\/(?:maindetails\/?)?$/, ''); + }, + + "isList": () => $('#singleFilm').empty && !/\bid=\d+\b/i.test(location.search), + + "processList": (ready) => { + let _title, _year, _image, R = RegExp; + + let films = [], list = $('.film'), length = list.length - 1, type = 'movie'; + + list.forEach((element, index, array) => { + _title = $('.title', element).first; + _year = $('.title + *', element).first; + _image = $('img', element).first; + + if(!_title) + return; + + let title = _title.textContent.trim(), + year = +_year.textContent.replace(/^\(|\)$/g, '').trim(), + image = _image.src, + IMDbID = script.getIMDbID(element); + + films.push({ type, title, year, IMDbID }); + }); + + if(!films.length) + return new Notification('error', 'Failed to process list'); + + return films; + }, +}; diff --git a/src/cloud/google.js b/src/cloud/google.js new file mode 100644 index 0000000..6e787e1 --- /dev/null +++ b/src/cloud/google.js @@ -0,0 +1,61 @@ +let SHOW = '[href*="thetvdb.com/"][href*="id="], [href*="thetvdb.com/series/"], [href*="themoviedb.org/tv/"], [href*="imdb.com/title/tt"][href$="externalsites"]', + FILM = '[href*="themoviedb.org/tv/"], [href*="imdb.com/title/tt"]'; + // FILM = '#media_result_group, ...' + +let script = { + "url": "*://www.google.com/search", + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let type = script.getType(); + + if(type == 'movie') { + let _type = $('.kno-ecr-pt + *').first; // in case a tv show is incorrectly identified + + if(_type) { + type = _type.textContent; + + type = /\b(tv|show|series)\b/i.test(type)? 'show': /\b(movie|film|cinema|(?:\d+h\s+)?\d+m)\b/i.test(type)? 'movie': 'error'; + _year = (type == 'show'? $('.kno-fv').first || _year: _year) || { textContent: '' }; + } + + _title = $('.kno-ecr-pt').first; + _year = $('.kno-fb-ctx:not([data-local-attribute]) span').first; + _image = $('#media_result_group img').first; + } else if(type == 'show') { + _title = $(SHOW).first.querySelector('*'); + _year = { textContent: '' }; + _image = { src: '' }; + } else if(type == 'error') { + return null; + } + + (_year.textContent + '').replace(/(\d{4})/); + + let year = +R.$1, + title = _title.textContent.replace((type == 'movie'? /^(.+)$/: /(.+)(?:(?:\:\s*series\s+info|\-\s*(?:all\s+episodes|season)).+)$/i), '$1').trim(), + image = (_image || {}).src; + + year = year > 999? year: 0; + + let IMDbID = script.getIMDbID(); + + return { type, title, year, image, IMDbID }; + }, + + "getIMDbID": () => { + let link = $('a._hvg[href*="imdb.com/title/tt"]').first; + + if(link) + return link.href.replace(/.*(tt\d+).*/, '$1'); + }, + + "getType": () => ( + !$(SHOW).empty? + 'show': + !$(FILM).empty? + 'movie': + 'error' + ), +}; diff --git a/src/cloud/google.play.js b/src/cloud/google.play.js new file mode 100644 index 0000000..14fc93f --- /dev/null +++ b/src/cloud/google.play.js @@ -0,0 +1,24 @@ +let script = { + "url": "*://play.google.com/store/(movies|tv)/details/*", + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let type = script.getType(), + title = $('h1').first, + year = $(`h1 ~ div span:${ type == 'movie'? 'first': 'last' }-of-type`).first, + image = $('img[alt="cover art" i]').first; + + title = title.textContent.replace(/\s*\(\s*(\d{4})\s*\).*?$/, '').trim(); + year = +(year.textContent || R.$1).replace(/^.*?(\d{4})/, '$1').trim(); + image = (image || {}).src; + + return { type, title, year, image }; + }, + + "getType": () => ( + location.pathname.startsWith('/store/movies')? + 'movie': + 'show' + ), +}; diff --git a/src/cloud/gostream.js b/src/cloud/gostream.js new file mode 100644 index 0000000..e5757b4 --- /dev/null +++ b/src/cloud/gostream.js @@ -0,0 +1,22 @@ +let script = { + "url": "*://*.gostream.site/(?!genre|most-viewed|top-imdb|contact)", + + "ready": () => { let e = $('.movieplay iframe, .desc iframe'); return e.empty? false: e.first.src != '' }, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('[itemprop="name"]:not(meta)').first, + year = $('.mvic-desc [href*="year/"]').first, + image = $('.hiddenz, [itemprop="image"]').first, + type = 'movie'; + + Notify('update', 'Select the OL/VH server'); + + title = title.textContent.trim(); + year = +(year? year.textContent.trim(): 0); + image = (image? image.src: null); + + return { type, title, year, image }; + }, +}; diff --git a/src/cloud/hulu.js b/src/cloud/hulu.js new file mode 100644 index 0000000..9ea56ec --- /dev/null +++ b/src/cloud/hulu.js @@ -0,0 +1,48 @@ +let script = { + "url": "*://*.hulu.com/(watch|series|movie)/*", + + "ready": () => !$('[class$="__meta"]').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + let { pathname } = top.location; + let type, title, year, image; + + if(/^\/(series|movie)\//.test(pathname)) { + type = R.$1; + title = $('[class~="masthead__title"i]').first; + year = $('[class~="masthead__meta"i]').child(type == 'series'? 4: 3); + image = $('[class~="masthead__artwork"i]').first; + + title = title.textContent; + year = +year.textContent; + type = /\b(tv|show|season|series)\b/i.test(type)? 'show': 'movie'; + image = image? image.src: null; + } else { + title = $('[class$="__second-line"]').first; + year = (new Date).getFullYear(); + type = script.getType(); + + title = title.textContent; + } + + if(!title) + return 5000; + + return { type, title, year, image }; + }, + + "getType": () => { + let { pathname } = top.location; + + if(/^\/series\//.test(pathname)) { + return 'show'; + } else { + let tl = $('[class$="__third-line"]').first; + + return /^\s*$/.test(tl.textContent)? + 'movie': + 'show'; + } + }, +}; diff --git a/src/cloud/imdb.js b/src/cloud/imdb.js new file mode 100644 index 0000000..0b5c69c --- /dev/null +++ b/src/cloud/imdb.js @@ -0,0 +1,119 @@ +let script = { + "url": "*://*.imdb.com/(title|list)/(tt|ls)\\d+/", + + "ready": () => !$('#servertime').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let type = script.getType(), + IMDbID = script.getIMDbID(), + title, year, image; + + let usa = /\b(USA?|United\s+States)\b/i, + date, country, reldate, regdate, alttitle, options; + + switch(type) { + case 'movie': + title = $('.originalTitle, .title_wrapper h1'); + alttitle = title.first; + reldate = $('.title_wrapper [href*="/releaseinfo"]').first; + year = $('.title_wrapper #titleYear').first; + image = $('img[alt$="poster"i]').first; + + // TODO: Less risky way to accompilsh this? + title = title.last.childNodes[0].textContent.trim(); + alttitle = (alttitle == title? title: alttitle.childNodes[0].textContent.trim()); + title = usa.test(country)? title: alttitle; + country = reldate.textContent.replace(/[^]+\((\w+)\)[^]*?$/, '$1'); + year = +script.clean(year.textContent); + image = (image || {}).src; + options = { type, title, alttitle, year, image }; + break; + + case 'show': + title = $('.originalTitle, .title_wrapper h1'); + alttitle = title.first; + reldate = $('.title_wrapper [href*="/releaseinfo"]').first; + date = $('title').first.textContent.trim(); + regdate = date.match(/Series\s*\(?(\d{4})(?:[^\)]+\))?/i); + image = $('img[alt$="poster"i]').first; + + // TODO: Less risky way to accompilsh this? + title = title.last.textContent.trim(); + alttitle = (alttitle == title? title: alttitle.childNodes[0].textContent.trim()); + title = usa.test(country)? title: alttitle; + country = reldate.textContent.replace(/[^]+\((\w+)\)[^]*?$/, '$1'); + year = parseInt(regdate[1]); + image = (image || {}).src; + options = { type, title, alttitle, year, image }; + break; + + case 'list': + let items = $('#main .lister-item'); + + options = []; + + if(!/[\?\&]mode=simple\b/i.test(top.location.search)) + top.open(location.href.replace(/([\?\&]|\/$)(?:mode=\w+&*)?/, '$1mode=simple&'), '_self'); + + items.forEach(element => { + let option = script.process(element); + + if(option) + options.push(option); + }); + break; + + default: return null; + } + + return options; + }, + + "getType": () => { + let tag = $('meta[property="og:type"]').first, + type = 'error'; + + if(tag) { + switch(tag.content) { + case 'video.movie': + type = 'movie'; + break; + + case 'video.tv_show': + type = 'show'; + break; + }; + } else if(top.location.pathname.startsWith('/list/')) { + type = 'list'; + } + + return type; + }, + + "getIMDbID": () => { + let tag = $('meta[property="pageId"]'); + + return tag? tag.content: null; + }, + + "process": (element) => { + let title = $('.col-title a', element).first, + year = $('.col-title a + *', element).first, + image = $('img.loadlate, img[data-tconst]', element).first, + IMDbID = title.href.replace(/^[^]*\/(tt\d+)\b[^]*$/, '$1'), + type; + + title = title.textContent.trim(); + year = script.clean(year.textContent); + image = image.src; + type = (/[\-\u2010-\u2015]/.test(year)? 'show': 'movie'); + + year = +year; + + return { type, title, year, image, IMDbID }; + }, + + "clean": year => (year + '').replace(/^\(|\)$/g, '').trim(), +}; diff --git a/src/cloud/itunes.js b/src/cloud/itunes.js new file mode 100644 index 0000000..ca18f09 --- /dev/null +++ b/src/cloud/itunes.js @@ -0,0 +1,47 @@ +let script = { + "url": "", + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title, year, image, type = script.getType(); + + switch(type) { + case 'movie': + title = $('[class*="movie-header__title"i]').first.textContent; + year = +$('[datetime]').first.textContent || title.replace(RegExp(`[^]*\\((${ year })\\)[^]*`), '$1'); + image = ($('[class*="product"] ~ * picture img').first || {}).src; + + title = title.replace(RegExp(`\\s*\\(${ year }\\)`), ''); + break; + + case 'tv': + title = $('h1[itemprop="name"], h1').first.textContent.replace(/\s*\((\d+)\)\s*/, '').trim(); + year = +$('.release-date > *:last-child').first.textContent.replace(/[^]*(\d{4})[^]*?$/g, '$1').trim(); + image = $('[class*="product"] ~ * picture img').first.src; + + title = title.replace(RegExp(`\\s*\\(${ year }\\)`), ''); + break; + + default: + /* Error */ + return {}; + } + + setTimeout(script.adjustButton, 1000); + + return { type, title, year, image }; + }, + + "getType": () => { + return /(\/\w+)?\/tv-season\//.test(top.location.pathname)? + 'tv': + 'movie' + }, + + "adjustButton": () => { + let button = $('.web-to-plex-button').first; + + button.attributes.style.value += '; box-sizing: border-box !important; font-size: 16px !important; line-height: normal !important;'; + }, +}; diff --git a/src/cloud/justwatch.js b/src/cloud/justwatch.js new file mode 100644 index 0000000..aa8154e --- /dev/null +++ b/src/cloud/justwatch.js @@ -0,0 +1,31 @@ +let script = { + "url": "*://*.justwatch.com/(\\w{2})/(tv(?:-show)|movie)/*", + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('.title-block').first, + year = $('.title-block .text-muted').first, + image = $('.title-poster__image').first, + type = script.getType(); + + if(!title || !year) + return 1000; + + year = year.textContent; + title = title.firstElementChild.firstChild.textContent.trim(); + year = +year.replace(/\D+/g, ''); + image = image.src; + + return { type, title, year, image }; + }, + + "getType": () => { + let { pathname } = top.location; + + if(/^\/tv(-show)?\//.test(pathname)) + return 'show'; + else + return 'movie'; + }, +}; diff --git a/src/cloud/letterboxd.js b/src/cloud/letterboxd.js new file mode 100644 index 0000000..bd51e8e --- /dev/null +++ b/src/cloud/letterboxd.js @@ -0,0 +1,76 @@ +let script = { + "url": "*://*.letterboxd.com/(film|list)/", + + "ready": () => (script.getType('list')? true: !$('.js-watch-panel').empty), + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title, year, image, type = script.getType(), IMDbID; + + switch(type) { + case 'movie': + title = $('.headline-1[itemprop="name"]').first.textContent.trim(); + year = +$('small[itemprop="datePublished"]').first.textContent.trim(); + image = ($('.image').first || {}).src; + IMDbID = script.getIMDbID(type); + + return { type, title, year, image, IMDbID }; + break; + + case 'list': + let items = $('.poster-list .poster-container'), + options = []; + + items.forEach((element, index, array) => { + let option = script.process(element); + + if(option) + options.push(option); + }); + + return options; + break; + + default: + /* Error */ + return {}; + } + }, + + "getType": (suspectedType) => { + let type = /^\/(film)\//i.test(top.location.pathname)? 'movie': 'list'; + + if(suspectedType) + return type == suspectedType; + + return type; + }, + + "getIMDbID": (type) => { + if(type == 'movie') { + let link = $( + '.track-event[href*="imdb.com/title/tt"i]' + ); + + if(!link.empty) { + link = link.first.href.replace(/^.*imdb\.com\/title\//i, ''); + + return link.replace(/\/(?:maindetails\/?)?$/, ''); + } + } + }, + + "process": (element) => { + let title = $('.frame-title', element).first, + image = $('img', element).first, + type = 'movie', + year; + + title = title.textContent.replace(/\((\d+)\)/, '').trim(); + year = +RegExp.$1; + image = image.src; + + return { type, title, year, image }; + }, +}; diff --git a/src/cloud/metacritic.js b/src/cloud/metacritic.js new file mode 100644 index 0000000..0d79826 --- /dev/null +++ b/src/cloud/metacritic.js @@ -0,0 +1,49 @@ +let script = { + "url": "*://*.metacritic.com/(movie|tv|list)/*", + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title, year, image, + type = script.getType(); + + switch(type) { + case 'tv': + case 'movie': + title = $('.product_page_title > *, .product_title').first; + year = $('.product_page_title > .release_year, .product_data .release_data').first; + image = $('.summary_img').first; + + title = title.textContent.replace(/\s+/g, ' ').trim(); + year = +year.textContent.replace(/\s+/g, ' ').replace(/.*(\d{4}).*$/, '$1').trim(); + image = (image || {}).src; + + type = type == 'tv'? 'show': type; + + return { type, title, year, image }; + break; + + case 'list': + /* Not yet implemented */ + break; + + default: + /* Error */ + return {}; + break; + } + }, + + "getType": () => { + /^\/(movie|tv|list)\//.test(top.location.pathname); + + let type = RegExp.$1; + + return type; + }, + + "process": (element) => { + /* Not implemented... Metacritic has too much sh*t loading to even try to open a console */ + /* Targeted for v5/v6 */ + }, +}; diff --git a/src/cloud/moviemeter.js b/src/cloud/moviemeter.js new file mode 100644 index 0000000..318df15 --- /dev/null +++ b/src/cloud/moviemeter.js @@ -0,0 +1,34 @@ +let script = { + "url": "*://*.moviemeter.nl/film/\\d+", + + "ready": () => !$('.rating + p font').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('.details span').first, + year = $('.details *').first, + image = $('.poster').first, + type = script.getType(); + + if(!title || !year) + return 1000; + + year = year.lastChild.textContent; + title = title.textContent.replace(year, '').trim(); + year = +year.replace(/\D+/g, ''); + image = image.src; + + return { type, title, year, image }; + }, + + "getType": () => { + let time = $('.rating + p font').last; + + time = time.textContent; + + if(/(series|show)/.test(time)) + return 'show'; + return 'film'; + }, +}; diff --git a/src/cloud/movieo.js b/src/cloud/movieo.js new file mode 100644 index 0000000..1513a00 --- /dev/null +++ b/src/cloud/movieo.js @@ -0,0 +1,75 @@ +let script = { + "url": "*://*.movieo.me/*", + + "ready": () => !$('.share-box, .zopim').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title, year, image, IMDbID, + type = script.getType(); + + switch(type) { + case 'movie': + title = $('#doc_title').first; + year = $('meta[itemprop="datePublished"i]').first; + image = $('img.poster').first; + + title = title.dataset.title.trim(); + year = +year.content.slice(0, 4); + image = (image || {}).src; + IMDbID = script.getIMDbID(); + break; + + case 'list': + let items = $('[data-title][data-id]'), + options = []; + + items.forEach((element, index, array) => { + let option = script.process(element); + + if(option) + options.push(option); + }); + + return options; + break; + + default: + /* Error */ + return {}; + break; + } + + return { type, title, year, image }; + }, + + "getType": () => { + let type = /\/(black|seen|watch)?lists?\//i.test(top.location.pathname)? + 'list': + 'movie'; + + return type; + }, + + "getIMDbID": () => { + let link = $( + '.tt-parent[href*="imdb.com/title/tt"i]' + ).first; + + if(link) + return link.href.replace(/^[^]*\/title\//i, ''); + }, + + "process": (element) => { + let title = $('.title', element).first, + image = $('.poster-cont', element).first, + year, type = 'movie'; + + title = title.textContent.trim().replace(/\s*\((\d{4})\)/, ''); + year = +RegExp.$1; + image = image.getAttribute('data-src'); + + return { type, title, year, image }; + }, +}; diff --git a/src/cloud/netflix.js b/src/cloud/netflix.js new file mode 100644 index 0000000..d125ed4 --- /dev/null +++ b/src/cloud/netflix.js @@ -0,0 +1,28 @@ +let script = { + "url": "*://*.netflix.com/watch/\\d+", + + "ready": () => { + let element = $('[class$="__time"]').first; + + return element && !/^([0:]+|null|undefined)?$/.test(element.textContent); + }, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('.video-title h4').first, + year = 0, + image = '', + type = script.getType(); + + title = title.textContent; + + return { type, title, year, image }; + }, + + "getType": () => { + let element = $('[class*="playerEpisodes"]').first; + + return !!element? 'show': 'movie'; + }, +}; diff --git a/src/cloud/plex.js b/src/cloud/plex.js new file mode 100644 index 0000000..7d6280e --- /dev/null +++ b/src/cloud/plex.js @@ -0,0 +1,36 @@ +let script = { + "url": "*://app.plex.tv/desktop#!/server/([a-f\\d]+)/(details|list)\\?*", + + "ready": () => $('.loading').empty, + + "timeout": 5000, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('[data-qa-id$="maintitle"i] *').first, + year = $('[data-qa-id$="secondtitle"i] *').first, + type = script.getType(); + + if(!title || !year || type == 'error') + return 5000; + + title = title.textContent; + year = year.textContent; + + year = +(year || YEAR); + + return { type, title, year }; + }, + + "getType": () => { + let cell = $('[data-qa-id$="celltitle"i]').first; + + if(!cell) + return 'error'; + + if(/seasons?/i.test(cell.textContent)) + return 'show'; + return 'movie'; + }, +}; diff --git a/src/cloud/plugin.indomovietv.js b/src/cloud/plugin.indomovietv.js new file mode 100644 index 0000000..42fbb96 --- /dev/null +++ b/src/cloud/plugin.indomovietv.js @@ -0,0 +1,59 @@ +let plugin = { + "url": "*://*.indomovietv.*/(?!tag|$)", + // TLD changes often: net, org + + "ready": () => !$('[itemprop="name"i]:not(meta), [itemprop="datePublished"i]').empty, + + "timeout": 1000, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('[itemprop="name"i]:not(meta)').first, + year = $('[itemprop="datePublished"i]').first, + image = $('[itemprop="image"i]').first, + type = 'movie'; + + title = title.textContent; + year = +year.textContent.replace(/[^]*(\d{4})[^]*/, '$1'); + image = image.src; + + // auto-prompt downloading for the user + let links = $('[class~="idtabs"i] [href^="#div"i]'); + + if(links.length > 1) { + OLOAD_EVENTS.push(setTimeout( + () => Notify('update', 'Finding download links...', 3000), + 500 + )); + + links.forEach((link, index, array) => OLOAD_EVENTS.push(setTimeout( + () => { + link.click(); + + if(index == links.length -1) + OLOAD_EVENTS.push(setTimeout( + () => Notify('update', 'No download links found'), + 7000 + )); + }, + index * 4500 + ))); + } + + return { type, title, year, image }; + }, +}, + OLOAD_EVENTS = []; + +top.addEventListener('message', request => { + try { + request = request.data; + + if(request) + if(request.from == 'oload' || request.found == true) + OLOAD_EVENTS.forEach(timeout => clearTimeout(timeout)); + } catch(error) { + throw error; + } +}); diff --git a/src/cloud/plugin.kitsu.js b/src/cloud/plugin.kitsu.js new file mode 100644 index 0000000..d433dc1 --- /dev/null +++ b/src/cloud/plugin.kitsu.js @@ -0,0 +1,36 @@ +// Web to Plex - Kitsu Plugin +// Aurthor(s) - @ephellon (2019) +let plugin = { + "url": "*://*.kitsu.io/anime/*", + + "ready": () => !$('img[data-src][src]').empty, + + "timeout": 1000, + + "init": () => { + let _title = /^\s*(?:english|romanized)\s+(.+)\s*$/i, + _year = /^\s*aired\s+.+(\d{4})(?:\s+to.+)?\s*$/i; + + let title = $('.media--information li').filter(e => _title.test(e.textContent))[0], + year = $('.media--information li').filter(e => _year.test(e.textContent))[0], + image = $('.media-poster img').first, + type = plugin.getType(); + + title = title.textContent.replace(_title, '$1'); + year = +year.textContent.replace(_year, '$1'); + image = image.src; + + return { + type, + title, + year, + image + }; + }, + + "getType": () => { + $('.media--information li').filter(e => /^\s*type\s+(movie|tv([\s\-]?show)?)\s*$/i.test(e.textContent)); + + return /tv/i.test(RegExp.$1)? 'show': 'movie'; + }, +}; diff --git a/src/cloud/plugin.myanimelist.js b/src/cloud/plugin.myanimelist.js new file mode 100644 index 0000000..52b1c86 --- /dev/null +++ b/src/cloud/plugin.myanimelist.js @@ -0,0 +1,29 @@ +// Web to Plex - My Anime List Plugin +// Aurthor(s) - @ephellon (2018) + +let plugin = { + "url": "*://*.myanimelist.net/anime/\\d+/*", + + "init": () => { + let title = document.queryBy('table h2:nth-of-type(1) + *') + .first.textContent.replace(/^[^\:]+:/, '') + .trim(), + type = document.queryBy('table h2:nth-of-type(2) + *') + .first.textContent.trim() + .toLowerCase() + .split(/\s+/) + .reverse()[0], + year = +(document.queryBy('table h2:nth-of-type(2) ~ .spaceit ~ .spaceit') + .first.textContent.trim() + .replace(/[^]*(\d{4})[^]*/, '$1')), + image = document.queryBy('table img') + .first.src; + + return { + type, + title, + year, + image + }; + }, +}; diff --git a/src/cloud/plugin.myshows.js b/src/cloud/plugin.myshows.js new file mode 100644 index 0000000..009f0bc --- /dev/null +++ b/src/cloud/plugin.myshows.js @@ -0,0 +1,29 @@ +// Web to Plex - My Shows Plugin +// Aurthor(s) - @enchained (2018) + +let plugin = { + "url": "*://*.myshows.me/view/\\d+/*", + + "init": () => { + let specific = /\/\/(\w{2})\./.test(location.origin); + + let title = ( + specific ? + document.queryBy('[itemprop="name"]').first.textContent: + document.queryBy('main > h1').first.textContent + ) + .trim(), + year = +(document.queryBy('div.clear > p.flat') + .first.textContent.trim() + .replace(/[^]*?(\d{4})[^]*/, '$1')), + IMDbID = document.queryBy('[href*="/title/tt"]') + .first.href.replace(/[^]*(tt\d+)[^]*/, '$1'); + + return { + type: 'show', + title, + year, + IMDbID + }; + }, +}; diff --git a/src/cloud/plugin.redbox.js b/src/cloud/plugin.redbox.js new file mode 100644 index 0000000..f6a64f7 --- /dev/null +++ b/src/cloud/plugin.redbox.js @@ -0,0 +1,28 @@ +let plugin = { + "url": "*://*.redbox.com/(ondemand-)?(movies|tvshows)/(?!featured|$)", + + "ready": () => !$('[data-test-id$="-name"i]').empty, + + "timeout": 1000, + + "init": (ready) => { + let R = RegExp; + + let title = $('[data-test-id$="-name"i]').first, + year = $('[data-test-id$="-info"i]').first, + image = $('[data-test-id$="-img"i]').first, + type = plugin.getType(); + + title = title.textContent.replace(/\s*\((\d{4})\)/, ''); + year = +(R.$1 || year.textContent.split(/\s*\|\s*/)[1]); + image = image.src; + + return { type, title, year, image }; + }, + + "getType": () => { + return /\bmovies\b/.test(location.pathname)? + 'movie': + 'show'; + }, +}; diff --git a/src/cloud/plugin.shanaproject.js b/src/cloud/plugin.shanaproject.js new file mode 100644 index 0000000..a3cd5f2 --- /dev/null +++ b/src/cloud/plugin.shanaproject.js @@ -0,0 +1,23 @@ +// Web to Plex - Shana Project Plugin +// Aurthor(s) - @ephellon (2018) +let plugin = { + "url": "*://*.shanaproject.com/series/\\d+", + + "init": () => { + let title = $('.overview i, #header_big .header_info_block') + .first.textContent.trim(), + year = +$('#header_big .header_info_block + *') + .first.textContent.trim() + .replace(/[^]*(\d{4})[^]*/m, '$1'), + image = $('#header_big .header_display_box') + .first.style['background-image'].trim() + .replace(/url\((.+)\)/i, '$1'); + + return { + type: 'show', + title, + year, + image + }; + }, +}; diff --git a/src/cloud/plugin.toloka.js b/src/cloud/plugin.toloka.js new file mode 100644 index 0000000..778d7c2 --- /dev/null +++ b/src/cloud/plugin.toloka.js @@ -0,0 +1,53 @@ +// Web to Plex - Toloka Plugin +// Aurthor(s) - @chmez (2017) +/* Minimal Required Layout * + plugin { + url: string, + init: function => ({ type:string, title:string, year:number|null|undefined }) + } +*/ +// REQUIRED [plugin:object]: The plugin object +let plugin = { + // REQUIRED [plugin.url]: this is what you ask Web to Plex access to; currently limited to a single domain + "url": "*://*.toloka.to/*", + + // REQUIRED [plugin.init]: this is what Web to Plex will call on when the url is detected + // it will always be fired after the page and Web to Plex have been loaded + "init": () => { + let title = document.queryBy('.maintitle') + .first.textContent.replace(/^.+\/(.+?)\(([\d]{4})\)\s*$/, '$1') + .trim(), + // REQUIRED [title:string] + // you have access to the exposed "helper.js" file within the extension + + year = +RegExp.$2, + // PREFERRED [year:number, null, undefined] + + image = document.queryBy('.postbody img') + .first.src, + // OPTIONAL [image:string] + + IMDbID = plugin.getID(); + + // the rest of the code is up to you, but should be limited to a layout similar to this + // REQUIRED [{ type:'movie', 'show'; title:string; year:number }] + // PREFERRED [{ image:string; IMDbID:string; TMDbID:string, number; TVDbID:string, number }] + return { + type: 'movie', + title, + year, + image, + IMDbID + }; + }, + + // OPTIONAL: the rest of this code is purely for functionality + "getID": () => { + let links = document.queryBy('.postlink'), + regex = /^https?\:\/\/(?:w{3}\.)?imdb\.com\/title\/(tt\d+)/i; + + for(let link in links) + if(regex.test(links[link])) + return RegExp.$1; + } +}; diff --git a/src/cloud/rottentomatoes.js b/src/cloud/rottentomatoes.js new file mode 100644 index 0000000..a17d40d --- /dev/null +++ b/src/cloud/rottentomatoes.js @@ -0,0 +1,85 @@ +let script = { + "url": "*://*.rottentomatoes.com/([mt]|browse)/*", + + "ready": () => { + let element = $('#reviews').first; + + return !!element; + }, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title, type, year, image; + + type = script.getType(); + + switch(type) { + case 'movie': + case 'show': + title = $('.playButton + .title, [itemprop="name"], [class*="wrap__title" i]').first; + year = $('time').first; + image = $('[class*="posterimage" i]').first; + + if(!title) + return 1000; + + title = title.textContent.trim().replace(/(.+)\:[^]*$/, type == 'movie'? '$&': '$1'); + year = +year.textContent.replace(/[^]*(\d{4})/, '').trim(); + image = (image || {}).srcset; + + if(image) + image = image.replace(/([^\s]+)[^]*/, '$1'); + + return { type, title, year, image }; + break; + + case 'list': + let options, elements = $('.mb-movie'); + + elements.forEach((element, index, array) => { + let option = script.process(element); + + if(option) + options.push(option); + }); + + return options; + break; + + default: + return 1000; + break; + } + }, + + "getType": () => { + let { pathname } = top.location; + + return (/^\/browse\/i/.test(pathname))? + 'list': + (/^\/m/.test(pathname))? + 'movie': + (/^\/t/.test(pathname))? + 'show': + 'error'; + }, + + "process": (element) => { + let title = $('.movieTitle').first, + image = $('.poster').first, + type = $('[href^="/m/"], [href^="/t/"]').first; + + title = title.textContent.trim(); + image = image.src; + type = /\/([mt])\//i.test(type.href)? RegExp.$1 == 'm'? 'movie': 'show': null; + + if(!type) + return {}; + + if(type == 'show') + title = title.replace(/\s*\:\s*seasons?\s+\d+\s*/i, ''); + + return { type, title, image }; + }, +}; diff --git a/src/cloud/tmdb.js b/src/cloud/tmdb.js new file mode 100644 index 0000000..6dd9535 --- /dev/null +++ b/src/cloud/tmdb.js @@ -0,0 +1,79 @@ +let script = { + "url": "*://*.themoviedb.org/(movie|tv)/\\d+", + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let type = script.getType(), + TMDbID = script.getTMDbID(), + title, year, image; + + let options; + + switch(type) { + case 'movie': + case 'tv': + title = $('.title > span > *:not(.release_date)').first; + year = $('.title .release_date').first; + image = $('img.poster').first; + + title = title.textContent.trim(); + year = +year.textContent.replace(/\(|\)/g, '').trim(); + image = (image || {}).src; + + if(type != 'movie') + type = 'show'; + + options = { type, title, year, image, TMDbID }; + break; + + case 'list': + let items = $('.item.card'); + + options = []; + + items.forEach(element => { + let option = script.process(element); + + if(option) + options.push(option); + }); + break; + + default: return null; + } + + return options; + }, + + "getType": () => { + let { pathname } = top.location; + + return (/\/(movie|tv)\/\d+/.test(pathname))? + RegExp.$1: + (/(^\/discover\/|\/(movie|tv)\/([^\d]+|\B))/i.test(pathname))? + 'list': + 'error'; + }, + + "getTMDbID": () => { + return +top.location.pathname.replace(/\/(?:movie|tv)\/(\d+).*/, '$1'); + }, + + "process": (element) => { + let title = $('.title').first, + year = $('.title + *').first, + image = $('.poster').first, + type = title.id.split('_'), + TMDbID = +type[1]; + + title = title.textContent.trim(); + year = year.textContent; + image = image.src; + type = (type[0] == 'movie'? 'movie': 'show'); + + year = +year; + + return { type, title, year, image, TMDbID }; + }, +}; diff --git a/src/cloud/trakt.js b/src/cloud/trakt.js new file mode 100644 index 0000000..d9c66fa --- /dev/null +++ b/src/cloud/trakt.js @@ -0,0 +1,104 @@ +/** TODO + - re-enable list functionality (fix it) +**/ + +let script = { + "url": "*://*.trakt.tv/(movie|show)s/*", + + "ready": () => !$('#info-wrapper ul.external, .format-date').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let type = script.getType(), + IMDbID, TMDbID, TVDbID, + title, year, image, options; + + switch(type) { + case 'movie': + case 'show': + title = $('.mobile-title').first; + year = $('.mobile-title .year').first; + image = $('.poster img.real[alt="poster"i]').first; + IMDbID = script.getIMDbID(); + TMDbID = script.getTMDbID(); + TVDbID = script.getTVDbID(); + + if(!IMDbID && !TMDbID && !TVDbID) + return 5000; + + title = title.textContent.replace(/(.+)(\d{4}).*?$/, '$1').replace(/\s*\:\s*Season.*$/i, '').trim(); + year = +(R.$2 || year.textContent).trim(); + image = (image || {}).src; + + options = { type, title, year, image, IMDbID, TMDbID, TVDbID }; + break; + + case 'list': + let items = $('*'); + + options = []; + + items.forEach((element, index, array) => { + let option = script.process(element, items); + + if(option) + options.push(option); + }); + break; + + default: + return null; + } + + return options; + }, + + "getType": () => { + let { pathname } = top.location; + + return ( + // /^\/(dashboard|calendars|people|search|(?:movie|show)s?\/(?:trending|popular|watched|collected|anticipated|boxoffice)|$)/i.test(pathname)? + // 'list': + /^\/(movie|show)s\//i.test(pathname)? + RegExp.$1: + 'error' + ) + }, + + "getIMDbID": () => { + let link = $( + // HTTPS and HTTP + '[href*="imdb.com/title/tt"]' + ).first; + + if(link) + return link.href.replace(/^.*?imdb\.com\/.+\b(tt\d+)\b/, '$1'); + }, + + "getTMDbID": () => { + let link = $( + // HTTPS and HTTP + '[href*="themoviedb.org/"]' + ).first; + + if(link) + return link.href.replace(/^.*?themoviedb.org\/(?:movie|tv|shows?|series)\/(\d+).*?$/, '$1'); + }, + + "getTVDbID": () => { + let link = $( + // HTTPS and HTTP + '[href*="thetvdb.com/"]' + ).first; + + if(link) + return link.href.replace(/^.*?thetvdb.com\/.+\/(\d+)\b.*?$/, '$1'); + }, + + "process": (element, elements) => { + let type, title, year; + + return { type, title, year }; + }, +}; diff --git a/src/cloud/tubi.js b/src/cloud/tubi.js new file mode 100644 index 0000000..53e7aee --- /dev/null +++ b/src/cloud/tubi.js @@ -0,0 +1,22 @@ +let script = { + "url": "*://*.tubitv.com/(movies|series)/\\d+/*", + + "timeout": 1000, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('._1mbQP').first, + year = $('._3BhXb').first, + image = $('._2TykB').first, + type = script.getType(); // described below + + title = title.textContent.trim(); + year = +year.textContent.replace(/[^]*\((\d+)\)[^]*/g, '$1').trim(); + image = image.getAttribute('style').replace(/[^]+url\('([^]+?)'\)/, '$1'); + + return { type, title, year, image }; + }, + + "getType": () => (/^\/movies?/.test(top.location.pathname)? 'movie': 'show'), +}; diff --git a/src/cloud/tvdb.js b/src/cloud/tvdb.js new file mode 100644 index 0000000..b449385 --- /dev/null +++ b/src/cloud/tvdb.js @@ -0,0 +1,44 @@ +let script = { + "url": "*://*.thetvdb.com/series/*", + + "ready": () => !$('#series_basic_info').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('#series_title, .translated_title').first, + image = $('img[src*="/posters/"]').first, + type = 'show', + TVDbID = script.getTVDbID(), + Db = {}, year; + + title = title.textContent.trim(); + image = (image || {}).src; + + $('#series_basic_info').first.textContent + .replace(/^\s+|\s+$/g, '') + .replace(/^\s+$/gm, '') + .replace(/^\s+(\S)/gm, '$1') + .split(RegExp(`\\n*\\n*`)) + .forEach(value => { + value = value.split(/\n+/, 2); + + let n = value[0], v = value[1]; + + n = n.replace(/^([\w\s]+).*$/, '$1').replace(/\s+/g, '_').toLowerCase(); + + Db[n] = /,/.test(v)? v.split(/\s*,\s*/): v; + }); + + year = +(((Db.first_aired || YEAR) + '').slice(0, 4)); + + return { type, title, year, image, TVDbID }; + }, + + "getTVDbID": () => { + let { pathname } = top.location; + + if(/\/series\/(\d+)/.test(pathname)) + return RegExp.$1; + }, +}; diff --git a/src/cloud/tvmaze.js b/src/cloud/tvmaze.js new file mode 100644 index 0000000..a3f0c21 --- /dev/null +++ b/src/cloud/tvmaze.js @@ -0,0 +1,27 @@ +let script = { + "url": "*://*.tvmaze.com/shows/*", + + "ready": () => !$('#general-info-panel .rateit').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('header.columns > h1').first, + year = $('#year').first, + image = $('figure img').first, + type = 'show', + TVDbID = script.getTVDbID(); + + title = title.textContent.trim(); + year = +year.textContent.replace(/\((\d+).+\)/, '$1'); + image = (image || {}).src; + + return { type, title, year, image, TVDbID }; + }, + + "getTVDbID": () => { + let { pathname } = top.location; + + return pathname.replace(/\/shows\/(\d+).*/, '$1'); + }, +}; diff --git a/src/cloud/verizon.js b/src/cloud/verizon.js new file mode 100644 index 0000000..a64625b --- /dev/null +++ b/src/cloud/verizon.js @@ -0,0 +1,58 @@ +let script = { + "url": "*://*.verizon.com/*/(movie|show)s?/*", + + "ready": () => !$('.container .btn-with-play, .moredetails, .more-like').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let image = $('.cover img').first, + type = script.getType(), + title, year; + + if(script.ondemand) { + if(type == 'movie') { + title = $('.detail *').first; + year = $('.rating *').first; + } else if(type == 'show') { + title = { textContent: top.location.pathname.replace(/\/ondemand\/tvshows?\/([^\/]+?)\/.*/i) }; + year = $('#showDetails > * > *:nth-child(4) *:last-child').first; + + title.textContent = decodeURL(title.textContent).toCpas(); + } else { + return null; + } + } else if(script.watch) { + title = $('[class*="title__"]').first; + year = $('[class*="subtitle__"]').first; + } else { + title = $('.copy > .title').first; + year = (type == 'movie')? + $('.copy > .details').first: + $('.summary ~ .title ~ *').first; + } + + if(!title) + return 1000; + + year = +year.textContent.slice(0, 4).trim(); + title = title.textContent.replace(RegExp(`\\s*\\(${ year }\\).*`), '').trim(); + image = (image || {}).src; + + return { type, title, year, image }; + }, + + "getType": () => { + let { pathname } = top.location; + + return /\bmovies?\b/i.test(pathname)? + 'movie': + /\bseries\b/i.test(pathname)? + 'show': + 'error' + }, + + ondemand: /\bondemand\b/i.test(top.location.pathname), + + watch: /\bwatch\b/i.test(top.location.pathname), +}; diff --git a/src/cloud/vrv.js b/src/cloud/vrv.js new file mode 100644 index 0000000..c68855a --- /dev/null +++ b/src/cloud/vrv.js @@ -0,0 +1,80 @@ +let script = { + "url": "*://*.vrv.co/(series|watch)/", + + "ready": () => { + let img = $('.h-thumbnail > img').first, + pre = $('#content .content .card').first; + + return script.getType('list')? pre && pre.textContent: img && img.src; + }, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let type = script.getType(), + title, year, image, options; + + switch(type) { + case 'movie': + case 'show': + title = $('.series, .series-title, .video-title, [class*="series"] .title, [class*="video"] .title').first; + year = $('.additional-information-item').first; + image = $('.series-poster img').first; + + title = title.textContent.replace(/(unrated|mature|tv-?\d{1,2})\s*$/i, '').trim(); + year = year? +year.textContent.replace(/.+(\d{4}).*/, '$1').trim(): 0; + image = (image || {}).src; + + options = { type, title, year, image }; + break; + + case 'list': + let items = $('#content .content .card'); + + options = []; + + items.forEach(element => { + let option = script.process(element); + + if(option) + options.push(option); + }); + break; + + default: + return 5000; + } + + return options; + }, + + "getType": (expected) => { + let type = 'error', + { pathname } = top.location; + + type = (/^\/(?:series)\//.test(pathname) || (/^\/(?:watch)\//.test(pathname) && !$('.content .series').empty))? + 'show': + (/^\/(?:watch)\//.test(pathname) && $('.content .series').empty)? + 'movie': + (/\/(watchlist)\b/i.test(pathname))? + 'list': + type; + + if(expected) + return type == expected; + + return type; + }, + + "process": (element) => { + let title = $('.info > *', element).first, + image = $('.poster-image img', element).first, + type = $('.info [class*="series"], .info [class*="movie"]', element).first; + + title = title.textContent.trim(); + image = image.src; + type = type.getAttribute('class').replace(/[^]*(movie|series)[^]*/, '$1'); + + return { type, title, image }; + }, +}; diff --git a/src/cloud/vudu.js b/src/cloud/vudu.js new file mode 100644 index 0000000..9c35c74 --- /dev/null +++ b/src/cloud/vudu.js @@ -0,0 +1,32 @@ +let script = { + "url": "*://*.vudu.com/*", + + "ready": () => !$('img[src*="poster" i]').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('.head-big').first, + year = $('.container .row:first-child .row ~ * > .row span').first, + image = $('img[src*="poster" i]').first, + type = script.getType(); + + title = title.textContent.replace(/\((\d{4})\)/, '').trim(); + year = year? year.textContent.split(/\s*\|\s*/): R.$1; + image = (image || {}).src; + + if(!title) + return 5000; + + year = +year[year.length - 1].slice(0, 4); + year |= 0; + + return { type, title, year, image }; + }, + + "getType": () => { + return /(?:Season-\d+\/\d+)$/i.test(window.location.pathname)? + 'show': + 'movie'; + }, +}; diff --git a/src/cloud/vumoo.js b/src/cloud/vumoo.js new file mode 100644 index 0000000..dd7b1b8 --- /dev/null +++ b/src/cloud/vumoo.js @@ -0,0 +1,68 @@ +let script = { + "url": "*://*.vumoo.to/(movies|tv-series)/*", + + "ready": () => !$('[role="presentation"i]').empty, + + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('.film-box h1').first, + year = $('.film-box > * span').filter(e => /\b\d{4}\b/.test(e.textContent))[0], + image = $('.poster').first, + type = script.getType(); + + title = title.textContent.replace(/\s*season\s+\d+\s*$/i, '').replace(/\s*\((\d{4})\)/, '').trim(); + year = +(type == 'movie')? + R.$1: + year.textContent.replace(/[^]*(\d{4})[^]*/, '$1'); + image = (image? image.src: null); + + // auto-prompt downloading for the user + let servers = $('.play'), + roles = $('[role="presentation"i] a'); + + if(servers.length > 1 && type != 'show') { + OLOAD_EVENTS.push(setTimeout( + () => Notify('update', 'Finding download links...', 3000), + 500 + )); + + servers.forEach((server, index, array) => OLOAD_EVENTS.push(setTimeout( + () => { + roles[index].click(); + server.click(); + + if(index == servers.length -1) + OLOAD_EVENTS.push(setTimeout( + () => Notify('update', 'No download links found'), + 7000 + )); + }, + index * 4500 + ))); + } + + return { type, title, year, image }; + }, + + "getType": () => { + let { pathname } = top.location; + + return pathname.startsWith('/movies')? + 'movie': + 'show'; + }, +}, + OLOAD_EVENTS = []; + +top.addEventListener('message', request => { + try { + request = request.data; + + if(request) + if(request.from == 'oload' || request.found == true) + OLOAD_EVENTS.forEach(timeout => clearTimeout(timeout)); + } catch(error) { + throw error; + } +}); diff --git a/src/cloud/webtoplex.js b/src/cloud/webtoplex.js new file mode 100644 index 0000000..43da023 --- /dev/null +++ b/src/cloud/webtoplex.js @@ -0,0 +1,55 @@ +// optional +// "Web to Plex" requires: api, token +// 'Friendly Name' requires permissions... + +let script = { + // required + "url": "*://ephellon.github.io/web.to.plex/(?!test|login)", + // Example: *://*.amazon.com/*/video/(detail|buy)/* + // *:// - match any protocol (http, https, etc.) + // *.amazon.com - match any sub-domain (www, ww5, etc.) + // /* - match any path + // (detail|buy) - match one of the items + + // optional + "ready": () => location.search && location.search.length > 1 && $('#tmdb').first.textContent, + + // optional + "timeout": 5000, // if the script fails to complete, retry after ... milliseconds + + // required + "init": (ready) => { + let _title, _year, _image, R = RegExp; + + let title = $('#title').first, + year = $('#year').first, + image = $('#poster').first, + type = script.getType(), // described below + IMDbID = script.getID('imdb')||"", + TMDbID = script.getID('tmdb')|0; + + title = title.textContent; + year = year.textContent|0; + image = image.src; + + return { type, title, year, image, IMDbID, TMDbID }; + }, + + // optional | functioanlity only + "getType": () => ($('#info').first.getAttribute('type') == 'movie'? 'movie': 'show'), + + "getID": (provider) => $(`#${provider}`).first.textContent, +}; + +let login = /\blogin\b/.test(location.pathname), + apikey = $('#apikey').first; + +if(login && configuration.TMDbAPI && !apikey.value) { + apikey.value = configuration.TMDbAPI; + + return -1; + // no longer needed to run +} else if(login) { + return -1; + // don't run on the login page +} diff --git a/src/cloud/youtube.js b/src/cloud/youtube.js new file mode 100644 index 0000000..4809913 --- /dev/null +++ b/src/cloud/youtube.js @@ -0,0 +1,139 @@ +let openedByUser = false, + listenersSet = false, + listenerInt; + +let script = { + "url": "*://www.youtube.com/.+", + + "timeout": 1000, + + "init": (ready, rerun = false) => { + let _title, _year, _image, R = RegExp; + + let options, type, + alternative = $('#offer-module-container[class*="movie-offer"], #offer-module-container[class*="unlimited-offer"]'); + + if($('.more-button:not(span), .less-button').empty || !$('.opened').empty || !$('iron-dropdown[class*="ytd"][aria-hidden]').empty) + return script.timeout; + + // open and close the meta-information + // open + $('.more-button:not(span)').first.click(); + // close + setTimeout(() => $('.less-button').first.click(), script.timeout); + + // try to not bug the page content too much, use an alternative method first (if applicable) + if(!alternative.empty && !rerun) { + alternative = alternative.first; + + let title = $('#title', alternative).first, + year = $('#info p', alternative).child(2).lastElementChild, + image = $('#img img', alternative).first, + type = /\bmovie-offer\b/i.test(alternative.classList)? 'movie': 'show'; + + if(!title || !year) + return -1; + + title = title.textContent; + year = year.textContent|0; + image = image.src; + + title = title.replace(R(`\\s*(\\(\\s*)?${ year }\\s*(\\))?`), ''); + + return { type, title, year, image }; + } + + type = script.getType(); + + if(type == 'error') + return -1; + + if(type == 'movie' || type == 'show') { + let title = $((type == 'movie'? '.title': '#owner-container, #header #main-title')).first, + year = $('#content ytd-expander').first, + image = $('#img img').first || { src: '' }; + + if(!title) + return -1; + + title = title.textContent.trim(); + year = (year)? + +year.textContent.replace(/[^]*(?:release|air) date\s+(?:(?:\d+\/\d+\/)?(\d{2,4}))[^]*/i, ($0, $1, $$, $_) => +$1 < 1000? 2000 + +$1: $1): + YEAR; + image = (image)? + image.src: + null; + + title = title.replace(R(`\\s*(\\(\\s*)?${ year }\\s*(\\))?`), ''); + + options = { type, title, year }; + } else if(type == 'list') { + let title = $('#title').first, + year = $('#stats *').child(2), + image = $('#thumbnail #img').first; + + if(!title) + return -1; + + title = title.textContent.trim(); + year = parseInt(year.textContent); + image = (image || {}).src; + type = 'show'; + + options = { type, title, year, image }; + } else { + return -1; + } + + if(!listenersSet) { + listenerInt = setInterval(() => { + let closed = 'collapsed' in $('ytd-expander').first.attributes; + + if(closed && !openedByUser) + script.init(true); + }, 10); + + $('ytd-expander').first.addEventListener('mouseup', event => { + let closed = 'collapsed' in $('ytd-expander').first.attributes; + + if(!closed) + openedByUser = true; + else + openedByUser = false; + }); + + listenersSet = true; + } else { + clearInterval(listenerInt); + } + + return options; + }, + + "getType": () => { + let title = $('.super-title, #title, #header #main-title').filter(e => e.textContent)[0], + subtitle = $('#header #main-title + #sub-title').filter(e => e.textContent)[0], + owner = $('#owner-container, #upload-info [href^="/channel/"]'); + + if(owner.empty) + return 'error'; + else + owner = owner.first.textContent.replace(/^\s+|\s+$/g, ''); + + let R = { + movie: /\byoutube movies\b/i, + show : /\b(s\d+\b.+\be\d+|season \d+)\b/i, + list : /\/playlist\b/, + }; + + return (R.movie.test(owner))? + 'movie': + ((title && R.show.test(title.textContent)) || (subtitle && R.show.test(subtitle.textContent)))? + 'show': + (title && R.list.test(top.location.pathname))? + 'list': + 'error'; + }, +}; + +// $('a[href*="/watch?v="]').forEach(element => element.onclick = event => open(event.target.href, '_self')); diff --git a/src/download/consistent.js b/src/download/consistent.js new file mode 100644 index 0000000..04255fb --- /dev/null +++ b/src/download/consistent.js @@ -0,0 +1,29 @@ +let NO_DEBUGGER = false; + +let terminal = + NO_DEBUGGER? + { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }: + console; + +let check; + +check = document.body.onload = event => { + let video = document.querySelector('video'); + + if(video && (video.src || video.textContent)) { + let { src } = video; + + src = src || video.textContent; + + if(/^blob:/i.test(src)) + throw ' URL detected. Unable to reform file.'; + + try { + top.postMessage({ href: src, tail: 'MP4', type: 'SEND_VIDEO_LINK', from: 'consistent' }, '*'); + } catch(error) { + terminal.error('Failed to post message:', error); + } + } else { + setTimeout(check, 500); + } +}; diff --git a/src/download/oload.js b/src/download/oload.js index 2f28926..6afa47d 100644 --- a/src/download/oload.js +++ b/src/download/oload.js @@ -5,14 +5,25 @@ let terminal = { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }: console; -document.body.onload = event => { +let check; + +check = document.body.onload = event => { let video = document.querySelector('div > p + p'); - if(video) { + if(video && (video.src || video.textContent)) { + let { src } = video; + + src = src || video.textContent; + + if(/^blob:/i.test(src)) + throw ' URL detected. Unable to reform file.'; + try { - top.postMessage({ href: `https://oload.fun/stream/${ video.textContent }?mime=true`, tail: 'mp4', type: 'SEND_VIDEO_LINK', from: 'oload' }, '*'); + top.postMessage({ href: `https://oload.fun/stream/${ src }?mime=true`, tail: 'MP4', type: 'SEND_VIDEO_LINK', from: 'oload' }, '*'); } catch(error) { - terminal.log('Failed to post message:', error); + terminal.error('Failed to post message:', error); } + } else { + setTimeout(check, 500); } }; diff --git a/src/download/plex.js b/src/download/plex.js new file mode 100644 index 0000000..e8a8482 --- /dev/null +++ b/src/download/plex.js @@ -0,0 +1,146 @@ +/** plxdwnld - Pip Longrun / Ephellon +* +* This project is licensed under the terms of the MIT license, see https://piplongrun.github.io/plxdwnld/LICENSE.txt +* +* @author Pip Longrun +* @version 0.2 +* @see https://piplongrun.github.io/plxdwnld/ +* +*/ + +let plxdwnld = (() => { + let self = {}, R = RegExp, + baseURI, AccessToken, + RegExps = { + clientID: /server\/([a-f\d]{40})\//i, + metadataID: /key=%2Flibrary%2Fmetadata%2F(\d+)/i, + }, + URLExps = { + API_resource: 'https://plex.tv/api/resources?includeHttps=1&X-Plex-Token={token}', + API_library: '{baseuri}/library/metadata/{id}?X-Plex-Token={token}', + download: '{baseuri}{partkey}?download=1&X-Plex-Token={token}', + }, + access_token_path = '//Device[@clientIdentifier=\'{clientID}\']/@accessToken', + base_uri_path = '//Device[@clientIdentifier=\'{clientID}\']/Connection[@local=0]/@uri', + part_key_path = '//Media/Part[1]/@key'; + + // Errors + let ERROR = { + EMPTY: 'No response data was received', + NOT_PLEX: 'You are not browsing (or logged into) Plex', + NOT_MEDIA: 'You are not viewing a media item', + INVALID_TOKEN: 'Unable to find a valid Access Token', + }; + + let getXML = (url, callback) => { + fetch(`//cors-anywhere.herokuapp.com/${ url }`, { method: 'GET', headers: { 'X-Requested-With': 'XMLHttpRequest' } }) + .then(Q => console.log(Q) || Q) + .then(Q => Q.text()) + .then(text => { + if(!text.length) + throw ERROR.EMPTY; + + let Parser = new DOMParser(), + XML = Parser.parseFromString(text, 'text/xml'); + + callback(XML); + }) + .catch(error => { throw error }); + }; + + let getMetadata = (XML) => { + let clientID = RegExps.clientID.test(location.href)? + R.$1: + null; + + if(clientID) { + let access_token_node = XML.evaluate( + access_token_path.replace(/{clientid}/ig, clientID), + XML, + null, + XPathResult.FIRST_ORDERED_NODE_TYPE, + null + ), + base_uri_node = XML.evaluate( + base_uri_path.replace(/{clientid}/ig, clientID), + XML, + null, + XPathResult.FIRST_ORDERED_NODE_TYPE, + null + ); + + if(access_token_node.singleNodeValue && base_uri_node.singleNodeValue) { + AccessToken = access_token_node.singleNodeValue.textContent; + baseURI = base_uri_node.singleNodeValue.textContent; + + let metadataID = RegExps.metadataID.test(location.href)? + R.$1: + null; + + if(metadataID) + getXML( + URLExps.API_library + .replace(/{baseuri}/ig, baseURI) + .replace(/{id}/ig, metadataID) + .replace(/{token}/ig, AccessToken) + , GetDownloadURL + ); + else + throw ERROR.NOT_MEDIA; + } else { + throw ERROR.INVALID_TOKEN; + } + } else { + throw ERROR.NOT_MEDIA; + } + }; + + let GetDownloadURL = (XML) => { + let part_key_node = XML.evaluate(part_key_path, XML, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); + + if(part_key_node.singleNodeValue) { + let href = URLExps.download + .replace(/{baseuri}/ig, baseURI) + .replace(/{partkey}/ig, part_key_node.singleNodeValue.textContent) + .replace(/{token}/ig, AccessToken); + + top.postMessage({ href, tail: 'MP4', type: 'SEND_VIDEO_LINK', from: 'plex' }, '*'); + } else { + throw ERROR.NOT_MEDIA; + } + }; + + self.init = () => { + if(localStorage.myPlexAccessToken !== undefined) + getXML(URLExps.API_resource.replace(/{token}/ig, localStorage.myPlexAccessToken), getMetadata); + else + throw ERROR.NOT_PLEX; + }; + + return self; +})(); + +let NO_DEBUGGER = false; + +let terminal = + NO_DEBUGGER? + { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }: + console; + +let check; + +check = document.body.onload = event => { + let loading = document.querySelector('.loading'); + + if(!loading) { + setTimeout(() => { + try { + plxdwnld.init(); + } catch(error) { + terminal.error('Failed to post message:', error); + } + }, 5000) + } else { + setTimeout(check, 500); + } +}; diff --git a/src/helpers.js b/src/helpers.js index 96caee1..557def2 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -1,204 +1,57 @@ -(() => { - -String.prototype.toCaps = function toCaps(all) { - /** Titling Caplitalization - * Articles: a, an, & the - * Conjunctions: and, but, for, nor, or, so, & yet - * Prepositions: across, after, although, at, because, before, between, by, during, from, if, in, into, of, on, to, through, under, with, & without - */ - let array = this.toLowerCase(), - titles = /(?!^|(?:an?|the)\s+)\b(a([st]|nd?|cross|fter|lthough)?|b(e(cause|fore|tween)|ut|y)|during|from|in(to)?|[io][fn]|[fn]?or|the|[st]o|through|under|with(out)?|yet)(?!\s*$)\b/gi, - cap_exceptions = /([\|\"\(]\s*[a-z]|[\:\.\!\?]\s+[a-z]|(?:^\b|[^\'\-\+]\b)[^aeiouy\d\W]+\b)/gi, // Punctuation exceptions, e.g. "And not I" - all_exceptions = /\b((?:ww)?(?:m+[dclxvi]*|d+[clxvi]*|c+[lxvi]*|l+[xvi]*|x+[vi]*|v+i*|i+))\b/gi, // Roman Numberals - cam_exceptions = /\b((?:mr?s|[sdjm]r|mx)|(?:adm|cm?dr?|chf|c[op][lmr]|cpt|gen|lt|mjr|sgt)|doc|hon|prof)\./gi; // Titles (Most Common?) - - array = array.split(/\s+/); - - let index, length, string, word; - for(index = 0, length = array.length, string = [], word; index < length; index++) { - word = array[index]; - - if(word) - string.push( word[0].toUpperCase() + word.slice(1, word.length) ); - } - - string = string.join(' '); - - if(!all) - string = string - .replace(titles, ($0, $1, $$, $_) => $1.toLowerCase()) - .replace(cap_exceptions, ($0, $1, $$, $_) => $1.toUpperCase()) - .replace(all_exceptions, ($0, $1, $$, $_) => $1.toUpperCase()) - .replace(cam_exceptions, ($0, $1, $$, $_) => $0[0].toUpperCase() + $0.slice(1, $0.length).toLowerCase()); - - return string; -}; - -(function(parent) { -/* SortBy.js */ -/** Usage + Example - // document.queryBy( selectors )... - - let index = 0; - // the order given is the order handled - document.queryBy("div:last-child, div:nth-child(2), div:first-child") - .forEach((element, index, array) => element.innerHTML = index + 1); - - // output w/sortBySelector: -

-
2
-
1
- - // output w/o sortBySelector: -
1
-
2
-
3
- */ - parent.queryBy = function queryBy(selectors, container = parent) { - // Helpers - let copy = array => [].slice.call(array), - query = (SELECTORS, CONTAINER = container) => CONTAINER.querySelectorAll(SELECTORS); - - // Get rid of enclosing syntaxes: [...] and (...) - let regexp = /(\([^\(\)]+?\)|\[[^\[\]]+?\])/g, - pulled = [], - media = [], - index, length; - - // The index shouldn't be longer than the length of the selector's string - // Keep this to prevent infinite loops - for(index = 0, length = selectors.length; index++ < length && regexp.test(selectors);) - selectors = selectors.replace(regexp, ($0, $1, $$, $_) => '\b--' + pulled.push($1) + '\b'); - - let order = selectors.split(','), - dummy = copy(order), - output = [], - generations = 0; - - // Replace those syntaxes (they were ignored) - for(index = 0, length = dummy.length, order = [], regexp = /[\b]--(\d+)[\b]/g; index < length; index++) - order.push(dummy[index].replace(regexp, ($0, $1, $$, $_) => pulled[+$1 - 1])); - - // Make sure to put the elements in order - // Handle the :parent (pseudo) selector - for(index = 0, length = order.length; index < length; generations = 0, index++) { - let selector = order[index], ancestor; - - selector = selector - .replace(/\:nth-parent\((\d+)\)/g, ($0, $1, $$, $_) => (generations -= +$1, '')) - .replace(/(\:{1,2}parent\b|<\s*(\*|\s*(,|$)))/g, ($0, $$, $_) => (--generations, '')) - .replace(/<([^<,]+)?/g, ($0, $1, $$, $_) => (ancestor = $1, --generations, '')); - - let elements = query(selector), - parents = [], parent; - - for(; generations < 0; generations++) - elements.forEach( element => { - let P = element, - E = C => [].slice.call(query(ancestor, C)), - F; - - for(let I = 0, L = -generations; ancestor && !!P && I < L; I++) - P = !!~E(P.parentElement).indexOf(P)? P: P.parentElement; - - parent = ancestor? !~E(P.parentElement).indexOf(P)? null: P: P.parentElement; - - if(!~parents.indexOf(parent)) - parents.push(parent); - }); - media.push(parents.length? parents: elements); - } - - // Create a continuous array from the sub-arrays - for(index = 1, length = media.length; index < length; index++) - media.splice(0, 1, copy(media[0]).concat( copy(media[index]) )); - output = [].slice.call(media[0]).filter( value => value ); - - // Remove repeats - for(index = 0, length = output.length, media = []; index < length; index++) - if(!~media.indexOf(output[index])) - media.push(output[index]); - - let properties = { writable: false, enumerable: false, configurable: false }; - - Object.defineProperties(media, { - first: { - value: media[0], - ...properties - }, - last: { - value: media[media.length - 1], - ...properties - }, - child: { - value: index => media[index - 1], - ...properties - } - }); +async function load(name = '') { + if(!name) return; - return media; - }; + let HELPERS_STORAGE = chrome.storage.sync || chrome.storage.local; -/** Adopted from - * LICENSE: MIT (2018) - */ - parent.furnish = function furnish(name, attributes = {}, ...children) { - let u = v => v && v.length, R = RegExp; + name = '~/cache/' + (name.toLowerCase().replace(/\s+/g, '_')); - if( !u(name) ) - throw TypeError(`TAGNAME cannot be ${ (name === '')? 'empty': name }`); + return new Promise((resolve, reject) => { + function LOAD(DISK) { + let data = JSON.parse(DISK[name] || null); - let options = attributes.is === true? { is: true }: null; + return resolve(data); + } - delete attributes.is; + HELPERS_STORAGE.get(null, DISK => { + if (chrome.runtime.lastError) + chrome.storage.local.get(null, LOAD); + else + LOAD(DISK); + }); + }); +} - name = name.split(/([#\.][^#\.\[\]]+)/).filter( u ); +async function save(name = '', data) { + if(!name) return; - if(name.length <= 1) - name = name[0].split(/^([^\[\]]+)(\[.+\])/).filter( u ); + let HELPERS_STORAGE = chrome.storage.sync || chrome.storage.local; - if(name.length > 1) - for(let n = name, i = 1, l = n.length, t, v; i < l; i++) - if((v = n[i].slice(1, n[i].length)) && (t = n[i][0]) == '#') - attributes.id = v; - else if(t == '.') - attributes.classList = [].slice.call(attributes.classList || []).concat(v); - else if(/\[(.+)\]/.test(n[i])) - R.$1.split('][').forEach(N => attributes[(N = N.split('=', 2))[0]] = N[1] || ''); - name = name[0]; + name = '~/cache/' + (name.toLowerCase().replace(/\s+/g, '_')); + data = JSON.stringify(data); - let element = document.createElement(name, options); + await HELPERS_STORAGE.set({[name]: data}, () => data); - if(attributes.classList instanceof Array) - attributes.classList = attributes.classList.join(' '); + return name; +} - Object.entries(attributes).forEach( - ([name, value]) => (/^(on|(?:inner|outer)(?:HTML|Text)|textContent|class(?:List|Name)$|value)/.test(name))? - element[name] = value: - element.setAttribute(name, value) - ); +async function kill(name) { + let HELPERS_STORAGE = chrome.storage.sync || chrome.storage.local; - children - .filter( child => child !== undefined && child !== null ) - .forEach( - child => - child instanceof Element? - element.append(child): - child instanceof Node? - element.appendChild(child): - element.appendChild( - parent.createTextNode(child) - ) - ); + return HELPERS_STORAGE.remove(['~/cache/' + (name.toLowerCase().replace(/\s+/g, '_'))]); +} - return element; - } -})(document); +async function Notify(state, text, timeout = 7000, requiresClick = true) { + return top.postMessage({ type: 'NOTIFICATION', data: { state, text, timeout, requiresClick } }, '*'); +} -let PRIMITIVE = Symbol.toPrimitive, - queryBy = document.queryBy, - furnish = document.furnish; +async function Require(permission, name, alias) { + let allowed = await load(`has/${ name }`), + allotted = await load(`get/${ name }`); -queryBy[PRIMITIVE] = furnish[PRIMITIVE] = String.prototype.toCaps[PRIMITIVE] = () => 'function () { [foreign code] }'; + top.postMessage({ type: 'PERMISSION', data: { permission, name, alias, allowed, allotted } }); -})(); + /* Already asked for permission */ + if(typeof allowed == 'boolean') + /* The allowed permission(s) */ + return allotted; +} diff --git a/src/img/allocine.png b/src/img/allocine.png new file mode 100644 index 0000000000000000000000000000000000000000..c5375d649006935805d5f80b681edb1039a0e953 GIT binary patch literal 4011 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 z%0A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�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
EG@$*~xoM_u3n1t-G zvwj8q&WpFj`8$+TzqAF~a34>G zBQWl#mrd0saN(};$frpYNTMT-DS%o}1V1$cPyniniM#@zFOLxg(AJK2Gv0VW5a{4L z-pYUa_`34Ih3iGh2dp8N3+`El@uv$+QdGUFQhB%KvVLea1Q52lN7P3{waM9|P+WARfRAV-3F-z^bhG zBVmoT$4=XHqyq`3le~FYb=0{12i%GNYq|Hl4a%{HZdAU0AziD~ovQ5kHuh~QyfI<4ed$H!o>@1BLn z!dd0E^S3C!x@K;9{;oOYo{O;$!8kL!{SW%fjqHtQO)pykqC`!hH+MnI~=2W`3MgH*TIX=57)p=6{t*^PLZ6|IF~-K>+7eL_q=ObdD~m3>$sqE;(S?_CzV~9+Hp*OHXSp! z!RJ+B(CQrf1IL2IoXLaNO)PK3X7Ziyz(zF6I*0w|bsQ)Aukm=?O6ROsOfnYj*j{hm zRPoq-ckT&T$M~j2%oJx&z7~J-!AVBD`T*x!Rsj$rokaLe5=oA75MN(BC{+Qn98{DA z4w@Fh(6J0cS7s10U@9Y^oFNJz!JsA~CSK?07_E<|7zRj;>)J8H-*oQI!!>!1$!_P? zYt>$sqo3@%+A?%pXyX#eIzRl3lMv(%#Efyxb6ls`N4zBh@qjV~5WK7|lJ_bAC}P8r zPHb@JM)S=fI}_!K`UzA&C=6U>4xD}q1Z@ink2!En3=U`y1wV+WmL$RYN3KR7kJk}F za)QToO&s$zEfZuvvYmQet&1^4T~GXqU_4+Ij~H{rrilSi3=zvJ2v0Z*0OfdV%kr9) zm(>TkUO@mMf&)gnph84<7U(mA1{CELP?b-g7JGjaUJ9WD$>6b$ zte!XvAQ`b);>M*9hUgL?erU+c_;saO^;WLgkmKk&S z_0|2W13B(F9}oaB(nTvGRY|y`7DBF5S#ATD4-sha84#A`J8&i**D=UZ9`+SvW(yI5 z^I`khTFI5~`Z`!(bm7QA$E8RDWe!4}HClE^-+^e^fMp&JpFvSz zd5$5nJApXxJQwxyhs!u8Nn@P|qs?;zalDmzUbf%26>UU2I+o}1tMfV+W%ZxdWsisL z@f`Xs4kp`Z?^aq&RnGXbEdSN7_X%=4%=bVcffN6~ks26=$)^viy+M?7Ky`42$xh!v zs)#_@H*(e}uz5^%5#%H(e3f(7vMkblej~24ajpFhx<_7zb9g?9Rl7cx*Qy--@)+1( zTeZXS>Wel!hjl%=STUZ6V{Y>J_$^ccyf%>2k+@!=BC)C>@E}5+@>%ZzasYl>aJeD_ z#9*l|0wo)PRKScC0xp~64%gELaZ%UKBf()ss?Ra8?V2P!XLH|{ukWC9EK-lj)?(*z z0P(O80BrP}4IQgNKVk>l`>z!*M?NuPWr8VVqy|R@2HE+vbr2l9%IOmshzODd5J5`; zR7*nQyz~bG-oRrbuO15`RTlz?nOp^-RNlACYtjekt6i4eN2m0ttJeMHSLyPa9GAdr z`WVFI7>t`Ij?1qd7c@c@*@fd6Qrx&$7(P%@B{-0o5x5V%d!q` z4R!?AGs@*khOEi!XKV9=@NA2y$5=<9#J%Gjx9NMSKUvnbec3j@j-7Qvj5En4;TD49 z)(Gc0>AyCRvyr$Q#)y?80S&&wdx9ZoP(uTf01^&}z<|Lz&oaMUH?}%2~$MKf_UpvUnNSv(Pw~|trtZPl4GzO~k5t^u@;S7HI2uiZS`Q$KAR+;2kJEbDci p$JWLf6XX98$i+w;y)w!g|35xW;c2Jb9Af|g002ovPDHLkV1gY#Fbn_y literal 0 HcmV?d00001 diff --git a/src/img/local.medusa.png b/src/img/local.medusa.png new file mode 100644 index 0000000000000000000000000000000000000000..36e775d295c8f7792ccd84bfb98e46bb10e1fa79 GIT binary patch literal 1280 zcmaJ=3saH_6#XcX#B#GydrWLjS!%WHq9#Tv=!Qxb0X|537#bf*CP<`}FVf0Yn{;!U z)J!Q?b8`a~Ej5B33hPLag{hE_Fw^yolDMnl;veYF+j*&yDdx>v={1(-`No&lZeEZJlt6z#pxpY88CWp*#?*Aw8FfRwHJg1j0eT&`YN#G^(RJ z=v(Cpx5KES9vA(WhzG%Q17Y+Yo6t|#mzgk?ERH)A9j=pk$;P)d=CdQHf5&_JII^p7 zS7*xWNr$Y5u+uv1Y44&<#}H+V8QhJ}?OY7K7}qcSQUD(4FN&Q>d0*tJg_y7Ue(@1u zyX~vPt9vjNl-O=@uUp{oM-(f2gX(rTbr&7B^LIi7xY&JX3N~>oD=FiHGBGJ>VreOL z*yXza=K~_wL}mwCJnYHJ-Jn{SnCzzzNn9(%eC?h&{s;XCk*z6`0!*^0ZHN<9{I<47 zt8GtKRmXT{KXe$V*yekCWADAhN+iS?&M!YS?SE$=#+@_yxO22_xda1>T=d=qh|bX- z7kFoYbpAPArhKbZ5+gBXw>I12B^D&!X;Ux{&D36PcD|&#>G|XYGOudTG=^1?6@|YA z;|^z-T_u8L1t{_Xz3WnZg{s-t=_xElRh9D*NHkdpU`8p^$(Z|T?c?ujnwpx(7fW8Y zcA*BhBOxfO5CCy;A`Ro_#_1h*&=?GcXUyg1TwzS2E&heo7gWuy8tA*DmK79N9}f@1 zjh+U<;a#)YS3X%c%ws?_dHa1`7T@dIPrSDDQBFSUx#ez$+^OoAZENIS?jW_Ek_ly( zI~f1$Ia%M>*j=6T{+({Du(#t78P4Z4HaBC=*d)AGtJN^AR{KCY_X3rL+k@ZBQ+{4t zT%>;eMWEN~lhA1NvIF>Q>(&77te>!RHl!@|f>Z2RSIe7I#?FPQmb@2_CLtK?m?%nm zuU?qicP>h*WhA9_u%wrN9;%!@C0$^-Yf6hk3$9c0i{|(x1+GJOdOW_F^w&`mg0TZJKZ@bvkN4py^tz>||M%P$!KCs8c_932h#gblt#m zqw=Byv>`j7??49Q38!hV^0KI|jw7Bg_883DjNh{_5;#wzy?PwFTlW{yw+vfr7KT>@ zyesdiSR5Bt-5DZkjn=Dm=S=%uLAxh*4S+_YDXy5qmWCK%I^DUx!Ta{^IpNGoAo2l; z9n7D!R-Q;Xf)QZBP{T~7-*IuKF<`#mCp!w(;%v!MoK0pv1!x5MH~GyRb0B2(;*q|> zjyY}uoL{Q1z#9Ypv*ZJ>TmWdJ`Yr$`!JvHLZZpv94Yeo-?0BobpX(L%Y%l_`ygL7i U%ga%wmE#ISz!MJ&{7+~652Mpcv;Y7A literal 0 HcmV?d00001 diff --git a/src/img/local.sickBeard.png b/src/img/local.sickBeard.png new file mode 100644 index 0000000000000000000000000000000000000000..bc16cb332b7cfe1b17b46b5c188cb439dd479a1e GIT binary patch literal 26627 zcmV)KK)Sz)P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>DXP8MuK~#8N?Y#%I zUDtWv`Q7$<2OfF{NPxX}iV}-Nld|a|MY1Fp$&%wtlJQtcG%J~zwPdaFS~C+T6Q_)4 zGI8QKWnxQ?71^>zcGRd!i4?2Y01_a2$LsIie&_%D?{gj=fkzOO)#A*)*f{6x`t7gp za?UHncM%?Y?4MWaFV7D4t{NMv&&|E1r+4uFuHM0`%a!g`rLOM2Qj|*VXzTwGX%9W$s(;vlBQDuuN(@tenPnT%ctI?<}q-PQoIvrP5J1MO| zOQg{kZFJN|n`g3VS2s$d2x;AY14=H_RF(%MWD5a{Qk!z2IpqeES5cI@o#Dc>HQ!b9DC z!`D^1dxlEou9A_QBZ`5D0g6I!yOm&KAZbt(Ik($Fh;gD^=}mbqq-3tTX$$F%`ht)L z!kv_bbhB6|yHChoOj6$^JwW_K1VTj&movcmAytI&T8-Lb9d}LpVk~~7`q`OTX9V}% z(Rg}7xLGU%adSqYHU4il8)9x4Ai6XL z@{!V^u6;ND%C9tB=purqJx-Uu#RJ!}Jb`(j@k*aI6S&OzL(vLJkpGHciQI<5>mXwj_e%ubJ zsZL(7+|{c-E7{{>AzBi{aj!mW^U)H4a(GQZ#&PwoGs+urp*9T5nrqYH#{ zyF4%K-u;>G*2((&O5I%_tW>(L6<7C}qov{!D2dP@&b?(o7mYMUUo$uu2#nzSvqWO- zl(WQC#8-LUyq@l*`XrGHzPEHh2>PN;mnRFjlF6Z5F=I-QMs!sL`jxp-Up2DEc+D@hc?E^eXP*gHEDY{27wHl2xjr!czPaWU;uWtW|U;C8GF6sRIupE0XhL3;z zD#Ub@0U?HgdI~TbHBvQTAdR+F#O27#>yWGGQb`OV%jKFRWLE-yg^D$$aSB-< zY0Me&bXdc3JX)(7RK{=0evf97LkWzsl&>-vrAZ0bu)=6Vn}>pQi>z3@%G;Z)?J zC%}RDZj%)H*Hfud=_{2hJ9_&^?s(ymPp|p0T|-~~#KX^_CYKGb$pHJl_`5yhtH%EI z$oTqSl)4|2iq^PA1gS*0e6eF3Ed>(+>DFTs&YU=a3*7v;6Y%C*>NAQ|pGVTwmz_el zqkQ*+rcm4TjZ;az)EY$45Mc7uw9^u7JdmgWY;=%r9jFJhrDXl*vRS6bgcDeEdnp;D zbDx*h81i=YobpIYOkL@gkHNhK#?{>nu+ao3e_=1A=euiUD@qQ8@cR4?_F8q3O1 zA?q9b0f(X#P-VDpXzaS472~_!`PNJR?B9Lz8_W6y%QC=YfBet;x>s%bqoI*iKOus2 zr(vcaQrMAWmlGHS83sS($WH(hl08oMl%+83 z_L8zKGe{Z?5}iTKeI^4cn*UtWgx6SKfzZXpZGXKcWL zgPOyl5zHKV?(XXC8CkLZ z7glb)>;s+7N3()w!>csF?$7+=?o$)L`mv!EtA1W+=rJ%#=W0l~s`HX0C!YfYT#|sZ zA*nurp|S?v*$j?UAxQbual0fsTc~yyDxoCVF*o6dtUkzOT4^GZ<~&!TfWxc$)}7&W zf6jJ2+kYjbDO%C@)JZVqb!7tD4c#VYF;ir5v8+vn`le0V*8ilSS@8b3cj+bL1olR4 zjype-?z(z((+a7N3_r>+le>PpCy<8^V<*+msW&sM(hy9dW^K|)r5^RN^VlmZUVQW0 ze)^S9eBu*X=R#?AjW2%mqvcxP%6In<4E>^*yx-EPkbuyAHUOZ6d)M``X_L(sJ>qM1BW`}Avs0D}>u0`5Tn znGq7KXVdgAU9uarM3P`a`d>j~r;N)fpv7PmOS_(ZHB?%uu~J-q|} z{pFjwcB&nUI4m+i-|g$KEO+;QP*bh7Els%+FaQahOMn58jIdpHbP}hMMofdFJe-;G zY%>!adPaRE;6T`v zAyNu$IZ)oKkX)G^B-;)=xw`jkO4X9~(rs2ASP41YARc(ApMqPWfN;~0>aV3_>Z(CX zC440ut5cN&ml;F5YGS4YM{aUbo4}Ru1`SdhMK3^Uic9-0rvG#=p}ni8yY~Yxyzr?3 zH>Y3>Jod*Q?d$LDf2dq4U*B#wigh_CsHp^mVRdKjn3w?vvMMa7NY$7qF3VLNGYEe4 z4RB;;z~qDFYQ|6z}u%x8U?5Q&#QdHh`xYCxN1(+!B_OPK@n`e=! zG+om)4CYB`DIMD_{{XeC;s$Mrxq@H>*}X(O2#HiHYK|;MfUqgAAnHRf2yBNDRSz>z zM{NpQDPQ+)BdZ5&);QKO0wZgm*^7Z9fCqjWD>y-2!_cfDI6M2#xZ#>oT%G>YSb1jV zm2j4Di$+bjM5A~?jxJRW-@~h^W?~Xkodgl>ccN0Mtn8G!e(lJ&{{$|HBDTL!Y+bKT zuT%lS2hd1gL(`!7sLxL?0%HXGPJw~AtQryWkV~bVARjO`(FOeH9Qmt zuUOZwCf{Bvm3rN@3b_KnNoCb)Gf`WZahgY`fu(%P5fk8PGpEOSY0PJd3{+0n&mb`Z zsG>j{a6EzJT>W|nP2AmVFc&A#uP$cyq8yw75mSUCLR_KK3*iwMtPoT{G(ox!dDO0qqy z5!ksCfGXkvI8uc6=?5T*dbC}IV-<3wq-V9CHH@mGFLy_M-Qahqpb<+tjJcGU5U3;~ zgIfr1buMiHVIis|IwvH|qFAaVqSKen17;^0~wVx}84dndvj!ct}iBRi64*^^Bb{3qLSLVuV(7_YDaaX<*tBjq(jB z?%k*0fFAYvNomvtx7{@`a_`44pYAUG^1JVSQ{Uj&2h~w2As&fLDvrSaG=iEDdX0D! zL+Pzd1$v+g`P>?Hr%EO;Acr(dNDYeY^bF3DG$-uAL&a(Kt0X zYo_Q{yA>D-;;THPgV7;A<3t6QimY9vQTu=2x2?q%9a_Wg0qYq8B_^;*Q+`eZn+ z$Kv3rlW}rJW=(MP_4GxT%Ac8?iEr+CHeNbiA;l2SW4E|VFd|JwYNcOKn`bJeamw_dAHl>X|^{lwp^baih{odfuiMig^^Qkt$f zGiub+B_YCf+&g7b2S}#vqw1i(otc`+F7Re*FQsJtDEh+BOrUa3;~8g-okHcq3?Pq) zQ>f>%7yyRosKANY>3IIgVM+0!*mvT1OfSrfn3{u&A)8W@)r_!*PoIjqY~?_2U%YsD zf9yMcB$_IdMt(L@Z%S>PoSupWwbS3-9lbIyz(77sY-S_?U>49+94bNmdyFYLT~!X^ zEG@qnGF&fKP*~J@#&_7;NAj%&T|7Z+!KFU!OY7AarnA{p!l^5ZPI}_3L#yzuKmG0J z2L?xWnP3j8m=h8yqz-{L-9QRBR~&dK%K4+Q1VGA%U@#0s#(}g~>wH2g1JY8X5EyMh zYGQ<(;2j((6IuPq##YoHl4d(?2B9rrl_rsPm=|$&A3YqeoIGKPJ-b5p+5xFvGqNHk z=4N7Uf%66z4ooA*2Z!RSjhkb`*a|5i#s-XKA(RCz)H>!t_895I>4K?v&cLxSA)UH6 z=CZNpcqbK!H>SwcIP-NC#>{CZpJhn3vj*Hqx~L2bX%OBEPcB0H=*5ILV49nq*;jb% zv;X37Utj;aq;gdfq;e7B-SHwb=vj>4dZ>2+UYipVuyt;a zwlgP4#7hT@R6c7~;OT}!BC=b9*>Jqli6Is`lBb@00&ICF>QeU$@x&{8{G2eSRj{e*|Dj`~Kf}O=HcamS1`n z4iSKiX^c+YFkaSNnD2uFisM7Mp4%p}(>N!|pH-6DrLqeqIxeN>!u;GR+Z5s6XdN`nBQL%X&m2CO zX{6*Faxb9$%ox)!L@c82J$+Lf2}f!VX36oLM(%Rp4kE$cd0>SvH#Nqa+AwY$(V{Tj zv>9NrJs3oABsNi++HOfxdZyQISBeci*cK6%6!sZB?qLFeNhNG!dDcIt!S!`b5!pNU z6p=d4&xop00L_vyAf+~w%C_nh67sh7m=I{#&RgjA6eS)Qe6s5in*;l3yw@GNl7M_%cH$Zyyi8AbgPrc0FVT z@T33yobae9VlgGe?9v8!NYin#kbD^O^`EEeoH1-mP{327MTTG6pFhIB9UGhLmJPk-ynaYW8sOR6`mKm1_hLai2$ z?Rh>9%Jd|k2}Wf!(qx`8q7g{Wal%EIkpNgo6w|CBr5pcxwiyv_JWZAV!}-Ew_FPc^ zlAxhkXrn4mzk%9^=;|8WS}UkHw9ET-T|K86jF=OU$V}~K+_!`f3 z3wr=)4_)CzY#!y5;6VT^oR)gfw8hR#+JjF(Fa=CyC|tnHM?!SZN*!q?yol|&eU4D| zeR6s-KK0En$Ele~p;~bM5aWc@?jw7?6UU~`7}i2TV>81h(;$G2d=Q?}r1v1O(-UzP z19;$~GQJm%%5r{{K8h|CtORu+!az`@HQ6xbsBr3(#!zXhtZRBsS|Trl=LxXoY*s<3{7N4%0Kt9+eNmS- zRX;~gs>HLVcbNu&AODh=VGpO!B+H348kB!Rd-F>GFCO4r{jgvwr5EX`vhbPvt;! z5^O@EQ`(uVH>y?8ZO+MwO)a|NJiI$a6X@zZGIS5|yb~pY=Lj%I`@StzlViwv;iACY0X{NiX{KkiTIkl{nInk(aMni zda)_rprObD4+}cP+=)9csyz9PW{NI*PJ6ExVS+C||4f{ko$;8^VEMiRV>Kf)UNHsZ z^fGpa7Z^pbUBM%7Nr7K4@Ce2nx9R^RXwVHIHEq!>lu}!E8vRUA z-;aFiA0O}O?OSDTw5?D;t?QOW4uB-4)*&A1Ux2&3)Ras`G8?X$$}8WDW5RYt@4%Ry z8CV5iEfxADO_Gj(<@VjgSDPRX;+IAEqO`?9dHG*{?&&x(amK`Yy&#$!j^Vyy3@Q%w zbwz(~L|3^LJ>A%7gXaL~&1OL=u@o~4#h96ENToMpUe;{B#;PZ6rLq?jAoQk{tK!FR zxH)pz z3jn0x4t=L&0N1R+&vZarN(B+LhopD)4!Ipd>Pv0d36wgk&ns2^N=lOYPZERbFLzfw z=l=7j9@jko*y|D>kddy{qm|gQwiN4Dlwzo#S&iT^5ka!TxdavP|egPmBrA{2{JlS?!?gU_LI=hj^&Lc9r?0rnlXu395pCY%s*0x<5yBVx+0 z^z<1Y)Me~0um7;)%&;In3}gH+N;-5=AwAQt{!=BiLR#z*G=2vEHsdanG)1e~td>6X z-UmNYE|&U9pfH1HP1}T5M@TDqNtGnPTo%Hk83Z^TaP@+Rq1MGrLOM*5fuTCyNfhzv zr__aP@ER3|HXwX5H)VOzN&Q#iOH%uf?s>t8f2|*R;BftTIqtfq65H3(PD(dYzKcM$ zyw8E&POKX%S}UBM0;vgCulJ)q8%W(!=j+E-CS36koG?oOX!=rQm5&28j33UqL<*5>j!X=Z^f7QC;b@7}X1O~#MwGF0B&LAaKBZH}2aw%V z8(;X&Q}GosKu*ZliuAu_O)2iYsvP6Pvgb? z-N)mT6RKa16+^>OL1mH0`vQty!|9d5Iyx>vT&9x{9%~x?Q}f{74DkMU-20KP?rt#v4J2-{&CeQFNpq#|bp>?NU=~_q z5TGfyTck-9AU>Ap#S_E)v#M7;^#emxx_ji^r&BL51oM25b8KoNKL7L+@vYs@8=f4Q z%g2bVvh}xLQHfz0GCXmOQfS=8^WR*<(ZPoL?uP?w;OObXEP-h{?5FoXbn`F(9 zs-<6g*L{DdT&@h{1^DH`Pkw~6M0#U$Syzppza#f5m~ zSX0x>v+xmKUHa9L9m*q`$()&+jozLf!8;OVJG@f+sL3TEy$U~Xrw=@t=!;_`B*ucs zmr@pq&`2J*&PS%VpnP%}j;?g$LY zR3rxuW-#I5G=9|MnKBSos+_=lK4${TV*9IX1gsm~*A zFtuZf$Lbgo-^HFj+5jg|^>-gTtZCk(@y!00H2nHS!~(69Fc_F36=b}x^~H&`>eA_jZ=jMH>>FnyEA z>RiFN*KJM23JIP z-w0$?N0M%cE28^|vq4m2O3xe2cMwTWww-%L74@81Nu0oq0tY`>*-MU|nL(aDWPbSh zr{fb}|6=Su{7TGM7bGQVPJE$=^k2EP5|?cTPFl(O{Q*TJdDUpx{0#KAH%&4+n826_?)48c zxq|AV?j?wnU&;jJu`bg;wl+%t%`g1S->y{3Y&WT6&ed`BiUS<%X{R#*)&_1Jq6!e0 zQ4L!Ct6Y|l`R)lns9`%;@{{xC3k-lf9WD?qP4k1b^wiM>qioiZ2MmTWtn0$i% zSUD`=Q-;+#+9VZng9xroEY7y-p{&tU({F%76&gI)kjk?f99S=oojcL?D2bHNY6iv*l4z5>$+xim)p@L zldx?~QTN#SCGcNFYzluzCQij4KlX?>x}# zsOf-6S|_kSraXii?cP7MGJUwpLW{sx(q@n)8E$b~NljQ~h~C|O!!fvGy{_rQ5EL=1 zz=i6F1XP;8?E}z~Zk#$g>5{k0DH%@ocz<7v@Z^C5@vpw{XL6wA=;1uUeCI?YquIpc zF2+bdpPEbQ&1T!HayvJoZgaKw!-@DQqy3#29V|t)-jW0tqQ6(TTQZI}5|5ra9iRN> z*W(pkah@vO_)JX46Y&u?a0>pdT_F`h#wx98Cyk7D)~yeNKu7)1=DmX}bsbb5Q+rkb z8^SRf!X!RBmxr_Y-;E&Un!5N|fenhJI{F0|YFyIn4skvJf}+V`w2cQyW!v^^zTeWr zH(%NvpZwNWy>GspG!T(;7Ef4$eap4UL(Vk;i!oPkD@9MYAXQ($`$LQBza;73Fy7WY zzZHZ1tr!^qL2-o}J!7C00|R2R6P>>YkTIFy&&2L{l>d4REV_ z(YM1cBFN0W$t1xl;rraPPxtPHfs;;WQZ1F0?~W4LXl?+0{|0(tEF$&mbmx4O4N5Ej* z5b+B#3H7*Qi_E7q77TseCFK|&DR}m>+_=w;yt(x0#~<@_5qx^X48mK}LJQFa0_unP zu4o1a(II|%Qz#J~CP}Z5V-ip*Vj^g%J}m5{EljiMk_wp6R1_nm=@?$^Sq5>V`sI!X z3q1v94c%!9iD&6_`2jEl-hV@C=gZGO8~ab55CYQi>*XTqvZQuzxTI)AKKf!a){KSb z*%jyQ+*FKBtKsLQeqq)hg$OJ}9MaXJZF%w?&1xF4VWq~hvnx)|RAa?ZE3T8{3PUiK z<;H(*eDTPk`0DN#jmI>DLcp?XhJOUFcX(BHc!cS;2oE7M38yZ0AKF1n{3Zy`dIM() zW+#tDu{uB5nLBeN=B7{jc(-52Rt2M4l_ZKVl(~&=&4A>Ko8VS+mQ_?&bZO?$H#9E7 za{^fEt5S*=jvk4}WcwR-JkIC#Jlerq8F8ryjV9Q+sTucNSBV2hYhs8(+;FL!$_mI9 zOfcb(SOhLi!LE&IPh@(&6>qw#ET%1Mdf16e<+yGbXFd)wmdC-;2)@4b{CDEy+>B_* z^skuAt$yA8LoqNsE`b}AU#%Gf1V`oCp;Ub|q}K_6M6dy&Gyz1Pn>-%#lP6++>ZFg6 z7kOQno9fKzn4dTvvuBP)b#_8PG)z>VB*9fspbu;i?BVCch)FeJ_i+prQA6FmV^Wai z__L?J9aY&Hz zhKMc#Bc={|hD4}*UJ9+wO~l;9u~?9hv$>R?@b*R&oCBxmKdBz(_sv+CJrh$WUWuub z2cpjLBi>J6!ci`(XBdJF9#o*GlFH>w0QRb)Dd1BF4_TEh$KgvO=kyck<;YlA8NB7PQXD;9kA+$@R*p0!{b`qVoixC3pD?&& z?5`Ie-TP8V6g8zDkw)cX+VTY?kZH;XL$RBRV<>Kr5DF00YehrMGb7DDbLOxJe>xFe zb@FXu(@_`7s7v8SiR)|YBw&IoJ zNh$~A$W}_7SUJQgqom1}!^3j%^z?M>IeFS^E0|gY78P$N4wY{@=qmq;-9v~yeez(; zP95``!A#|opMn|4g_s{Cl=IqQwza=N#yxd`)qR6hfQxfobezCe=v|FR-5U%jm; z=Ed{ZGijbNXsS5MCXS@<96Y>M8GwkO3D*SZQ=6TPnF-NF(#}hv(1AYk z6Iu|R8Jdu5x)O|6xg-Kf|B3KPEhI^UUCazt>#8D7^TLqq49kz4MX%1Cj=8B5KKkwL zOO7a;aSD=xW<31t6LMrQDH_NHBHnYCoTrr|f(P|)>-S&y4{_6VKr7;8yS$m znMsz%$GMU37aTY#-%QdCJz+3j!D}|><*S{veNU1uM?+Hpx6NTt{cM``Gb4zGHq&Ar z%Am!oGm}xApE)H#PDhnd5hl2R^?80Z01KHYzSn@TH>i1C$#1u6nmNdktn+%(jQXj? z;nT-s&(Qmzqqf>f)o}^DY{&DJ_HZMPE->k~KsOJo&vVn4dFb92@*fhvHsZsVbJw>?%+$}SWHCX;tNLgQz^HjN9tdV zyN!#9NK;96wb788tOKi_@n|w;_|c3VF?&&_E?bJd$T&4W7pLWzGd78)y!WJ;5yTWk z7tzRC#sZr83Ycfn#|$T$=FT6l^jFau?Pdo^qPZY-GIPof9%{mi2{f*I+j&(=91Mrx zAoAsl*{ned(=pRP7A+!nA3Y>fkvkt3jtme7saskA30@v?ua1}swuQg;Y$JZ>Ppk1y z{%9ut-G82sJ%`k%e#_PQQHYF}>27x=JGi<82l@SSabD{G^mO{t2zx6CozGRUNQ5D0 z$f$P{UF}Io%>>Frc#|ed+Mzmk#@d7FA=7w_f{BhQnV-g{pOFelwjlm=7SpJIFISe!UIpU-B%V9--Pen(0dROE*?$2GqAn0o`5^Q2-)_e5e||Pz zJhY%WcQYQ}Q;Uy(X+HKJljm(o`N73knV<_qv|W#g-`8F6*T(W3m|{8H}Lv<|J_QW=24&gcp=_=8R5WCn07PS4I{>K}kKyw`~!rS5m}G8kSba1`vo ziBdfLw5FtD7$aYi>*3Rl`1WpWUsm}09Kdl|05vePy0;a4oq%+fO3k?QioWO*4OR_x z#nn65WdK>7~AS^E!x)A1!S056l$kkY3X=A;Fx z%1^58LJ_;obz(-2&NNtrX)YYm6t5gDs1G3lsmj^_QM}7|@MO*V^B2?BUnJ6gUH$yQ z7v|$P{@rx^n?IY66BDm9hG<4p8k3d6yRU0TZ+9owuPnwDn~Tve6UcISKAxqKspPcq z+Rzx27cWzS+OXi``y|I4>1SHll(Wcs0D@edpHP`>mC#xt%@i;ZIPl&LOmoVd19dCZ z!X*$HPGOG#4yw*in~QJ`?R2O^>ZemEa3&vHtjRu$Q6R_#V@LCUkxCuyKT!ytGYFT#+(jzRhpB`roU_dDd^e*ox0Tz7WSJqitI2_u^mV#--#8k9rnYe&tAyZP0Em0@b=G#F``^;&&a*DMr z&p+AS@HhF=u9HA~jo4D8{Oy-l;)*TZdX9K(cip!9^=v7xdT(7@S7g6k@aP%Da^El8 zdeyeFXBB4VW$J&gB5=aI{2&lGb2|4+$}NqQ>+kKv%3;l1YAwNAjIC>AVnvzZ{-PvV zrIz4nY2;Hh4QXL3X|?6=H;CnH)ft;=KI{$AG0kekKAE?E6_9rO2i&Ux3p{y($4+2g z$b0%GI|PC;=uIi)NzL0CRHgh+sqyJizk@D2l-^ZuNHxoBNNcbS3`Z{;p}5+(Y-_~3 z?(T~FZ|qeY#d!9WrqpVNK;-5+SMwl)qAe*ifeW-p5^O) zFJn#G>YD9^xb2FH-y6JYTPZHxh`=O5FIOjzOkWS3Y{mFUQ6>PQw&F_Rg4fs2!<95` zU4*Sl^ZIM!iY?Y&M0Bs;h$(zsLSWO4AlhQ0VHW6$aO0>$XW$@|{>s~~{%}uE&#+3n z9>jJ_3ZDN9pS;G+iBj{1xD`h5I)D(})!XL=Ip)nvo_mfR@q7GJ^Sl|$ij@Gi{iB}w z$-u(xH}0&&wzb9BFkXm_<0VZ6L(;)4!`;7jP<>wc-nl^%w6@Dzu(w@NimSF3Wmld3 zeGiO*rRyE*N^ym>&NbW1F*XDOU%zvf&KKmvY}B|pMus_ITKnw2y1z@%lt!(|2b&j> z=j62`R3rWUam%(#Vo+XxeNGNAT2?UNtD(8Q=C5n+3qUJ~Zl=pMhsx_>=Me2BIh-qU z`j<1}9M`s;Py-N~twL`Ht1+uDNwgUQ3hEz?lrUfyxc{_4%3oYz8qW;HT$i z;>^rMoSHr(hi}p^e=MLqzRvd}(pO(^JJybgA^Whin91eKE{$lw@nQBqL_kS&C!{f3!jb$e<7jqDrgTO) z;+w@u_2=(kcmpT1{pnuZqhNcFP>QhrrVwc=2VFRVpCc?#NDSQsvr>}F%e7__1IjxW` zpMN$2V_i}wt=N`F-=30cXY878w-Ja1A0=Bl7Ppy&+*gB;2xdX!PI#3hUk4M^A4i(7%$g*GQ67e}#-qkxS zh8T<9!BL+HPecAwGL`3s zt*h3?ZQCymO@M+gjim1qgA#1Jy!!4Qzh=(MrsZ-^^z;q-L~zf*s1Nb>4y}xVk=0J? z?jMf9(X~YMY6A@&%h9Q6dQSPpU-e=E9tdRL1+#NH|a`EBOKfT4|`773#20 zz?fq%5Y$5)IMI-wu>63HNEo2ar(fqKC1{CB#R=UbHPcF;5pri0`3qwpSQ-Q*n`u(S zQ~ry@#kNd17!;z4pdC%M=vy!VPl64N23*o+f*FZt49P5AAjqs%Yei{DsqrjnX#khQ zeFHHxxJtxaE#X@ogDW@3@T$!*Ft%Rz>m`KaJ}rc%9vBs&2gfY1{23Vp86+pI(z4k= zOF+*e2{3_e2)0ETFhTO}GqoZVs0ClKDX9B=w~2IY5vq{<@!^pe9T;48AWK7~T=3fc znQ4|Tv&4%GAT%+Eq|BZ%Ov3sEj4~%giYQB?RP3uG<<5<&cW$}!+7Qtt$@FF7(zjqp z1U@UxZzM4Ex~8!EkJsh!iRqTX1s{MIA6X%vr(XhxASOrMW;dtbB7rlSKqqMlm&Yfd zyv!?gCC;g=p6zchF6vm?#R!THJX=)(Rf;Ayca+1)$U3y$5))L^;pTCvm%NSF2zdI( zCff1*0f2mi9PkDLnkF&K(g@Mcjl#jXj-nTW>^-Vl)&#|tc$aVt_4z+T$RZFz z63hdWz$|*^x^w+zbpRs)&}&DkJoW-BTxxHb{Qnvv<9_*QOXg7CI=^%Bi32@-u}YfN z213tVAS@Ii$l)?!xW7ME z%LE{(;MY?*QPSE#f|i>A`)Sb2Dj)ix*;Ur28rmV0m=IVY(XJ>X;>J<|h|T6sA}WOE zK35r5>sF2FpomWbRp-10?eEmrSfHrJh84r+*qno3EAlz@>G@7P@*Ll*QQymy`O6%; z%Ej1sv=dM7m1DL{ejW$pRFCv_N24x3q`{|S7V%O%1SJDL2cO4iM?gZKdCv$0J+t!2D ze;4WlB$XvV=hn~LNb4M_ufIs3AI#)`_M z&kH>Brb%sf%I|T^O&;^N1ljuKtY6x%!AVZb^mf{%IlQ=sX3%}3(VQ#&)NPwS+-Xb? zoA@F;G5v)pIcK6MJAuZSv6i?jIToxqv1-Vla!G&2h1Z$WLPII`pFSB+zOvVYIG3ZB zM*SCawTPkqVqChRqBcS8@?|d+Ay8MP7}a{wPStYtDFFsL?XJ4trONUCHwLpD5bKV2w%OFP2 z8-%$>a6I*LEB^iG=Jfp9IO4N%x9-^KWnliE0;abg0E!JF zv;_>(kYFRga}!6sO^m?L&rZ!1KJmZ3_rUPb;Kt-NVi$mh)h5jq)gdC4Hi8nd3={-s zQ$Y;E0#VQ4u*&oDLT~gAGxzL{CypM9U;UTAE!CcRp%)04sMVvT_^S`~$CX={S!5Zn z6JQkxS!)#H!10J@_BG=>Ql~E;t;Ir3(;%5Q&rT_)!aZH3*s`V^S8XrH6`RZ6hv*Rz z*^OJMM?AZ)6AwRC7h$SikZH+40}E}?4{Z?91nXAx#I|+33Dgr;Z7Zfdj8ZE9dhk>K zlo;vn|A+b5bFdbb3L{xQ^a#Jda^C~-?i+85nvd@Bd3dB7&5K5;Dzg58RO65fUZ&{{ z2{AvAE9L-OJOdn>0D3RXSC5z8{no2K+}%|kPPPIaj$?s$2;s|?c&`qUF2;bken(Bx z&z`b_;P-a`c$d99?IDZ|4#sDneB6JGG3VyjirA;wg@`jVZ1t97Y!Eoq=rU#Vhy)6v zczjR9AAG4EpZ>-|JoaKOj!iN@$A5un5G6(KIbL;gs%6LX(HA&9)V8*$H;VDuN1O4< zuPnsNM_9Z`1g9RvdbRpb#Nyk*c<)cY%vpe@7!VCpj1@z?!$+C(VWuu+&dfyo?q?Uo zXmx3w^UE!by~6j8-*{_mUNLS$w^%Ml6NvZ?2%ixc$1mS#6DR13W0(oDwM7!{1U=@u zAO@J9E4};vYd+l5RWSn~&35|Sxio?*A?XCC>qcW2l@x% z*~16?f#-ZM7mg7pC;50%A$F{<*d#26#5^K3sOf+4r*rZ0;i|W1ArOQD(aY6=sdFN7 zaARV&6}t~M;sH#LC{@Z0E0|tL!;8U5+?3vdXuoFL-n{@nHnOQyYZz ze@b)EwN|aqNvH*E7V#bv2jvCTn4Jd>A1Fy>9AFHokhF9xM$j+SPpgDPIP>NmyHfd! z2nJN~u@~#{?>}FS<7fExP7dv>gK!qLdL_Q_L@iED$$?Ti2%C-dbpyrV<3vC)!VFWZ zq%|(KjXVH%t|^XAwBpN8H^OHG&j}KIFu42El_a z(1HyeGm3tTs@`pai;SLT45Xjg9OgA+5T*K$TuGmZX|NxBWJnH$?kR}s=Y4+)n?W)S zU@po6ji*y5Fb$n1K+@iHC$8AEIR@kx7|4r=5D~}hk>~31FF#w2!>8NPEhp>Tau9rC zx?6;k*727!&M)(NF=0wk_ZKVmuOIn4<|b0+FqDK_(*X=@tAfk6du{}7{d-j!%w^(#wGj_LU30r{gxUDpOUwjN?U-LL*hy|Ny=()c4RShI zGa%`x8wGX+as8O0LsRZ~n>ei(2v8W~eGlFwCs00sp1tj>Or%~l$T#uR{xT|~Vmm}x zcSIWi;~he-Y8)=(1yMcs^!E7ucKm=h5)6yt$*FdHXJ0GUj+SG?I7Bnd))Z5-mH7H| zwU`pcD0^;z!8v79793mG_QtM_#kgiWXAmoK!_NM=;nM!NW?N5Oy|q`~d?9vjEX8G; z`S@hTYZB{LmSXLSiZvKSo7b#@wfdaM%LQa)SPtwx*LB-*M0?GN`2Xh5Yw?9AtJ#uw zR`?>rCF|D5gV)~}ZQXjV--kd_N8THfYa^u&MA z>~XH}NB{7B2Zs9lH|ATv{vuVPte?3-GoKR%E(?CsM9Ot z-+f(w+;LSg#^sm|^|nL&Xy##9j4Th!5v8hWV7(~d-?a=*Hqr+YVJ{G);d zI0yBU)D7na*xz^SRyFB}5lnz-fI*UNVH%k3#Vm^a1q??0>2H72?VhXNE+(QbQOnP~ z(u`wgIt@h5qV|_YJ|_LHyB>^^oI2+Hs2L=mH+-5k7)xYfHlVA`0BVS!3``|7Wfjm`fHcvC zw}hZ^z1f&6a$o`A(mQ9^MOs8em~P;$V$Z>dI*_Une6#H=+D@Ye{LPxJ9M%hfB*OA;^SYM@%}z5 ze%~$eiM(phQF~5i^$x6*c3tfwd0pKD5-@38{?dp9jk3^1G`A;PgmnQr#{onWh%t;LqXa9Hied_MRgO0XR?yzQJ#8B`+jvy+RjMLBrK2AJ2_pKR%)7QFWk<>MgBf9 zACN?C6IpHL7~b%zjWN7(Lkx_J`x9||I12M^2akRsk{BSTCvBN-q9J9V7stm+@45f# z5BK%;4lk;G6-3GzU`5=;l?KoV$??-br5h6h3g*Jz{!!Wc;piC^a2BVJp7z zd{a}+wm(Jpf@T?e4maZDq!>f(c~3!%z!7!cTvEesJFPPmBKZ_tmsC4{>jp+C_lTRsS-dB}ieQ%< z!h$&V*z`nv=%4V5wM4E5$K zuZzF;Grtg{5-gmzMpcfV_X8Tf$Kiu?w)HIBNjvkmhSt2KY+j}U<7lm{)D+XXgw(icC$OvfsHXywKjUAH6pN7qWS2ck<7 zPuYqj9gi}3{`dj88DajZAO_iY{E(cev~Tc(ibzc&K7sKiNy^Q~QWd>4Eu|+W5I*C? zR9#+tE1uuq)U_$%GyOYT_XibE%Y1(FkuSx|r;euaL`zyXeTlU!oI^Wc_oANi(_vi} zf|5_*W8f<`#ORuBqTy=O&|Ch}gwpr2@hX%PT(vD8J#ywac09UfYx>*uXaQ`BqOhrd z`N||PDR-8(QE11r|Ws_oar$og$!0C9l}t0PqW$l7hO za?@ooFuF=+Kz3XeT|kaR0!a5vwq*nTHY(C>u9TA1eW%63#A#h;Vs?Hq9^d!U;z0iY zcyW;#4<~__rs==97OPj>~iJ)GRG@6ZHarXy4J6X z@oAVGf9U8Jjvn?h@Al!oC}m0;8gYyEwzmV$xQdRd<}!KP1pHUtQf8Z@15E`XwGY*=e?hgO?b<8|4y;AwCO1tR_l%QY8ZTB zTdtoMAaE*FKz;d{kmjFoSJUSP`JmM7898{>DW%g1^%4LD*`@#Z&9BG7)2Chq_{GEl z5&vi3bYDDp!=2uU>6OE|Ud(X&WwKfQgVqYm)%(j7_Z~kgR2SmvEtkaBRjZv=k%MO+ zO!o`Y44>b%u|QyeMVc^b4xah11iXu!Ig$?8IH@@PJ8|J{ikyvf;ig_{my9eT- zo8GQLZ-_fDzc%;_+}Cc~5x;cb12H~4x@_IQED^K!@Uu@^{`jlo8&{`D* zDwzhHYw!&qWEzQ9^uiSMYltD{d`z5g2Xj(52{0xdU7yOK;l2N}c;Y8(7{`tXk!w=* z(T4ZqxjnbEHQGZK&?eLUp7*Mp8k1CSc8$U{M&FENMwRx*d zTkoO@UmCZpUK?FZ+m@v1zxeZ~pOgb!kJTf?F*?v6YsXfJ@mIL)PHBP<-gdhQ$N?Ny zZV6~`gq9C};uEm&GkJV(OrP8@(*Pr+L%z_3!&uM3j+sbhQn zqKIGf5?uTZ0RG}Ps=uOo>16|)kBF|Gu9%T3`s_1L`%7UA1^QA zL0Zby-qJK8D~9}`1Uy(8zLJkt^bLskJK~bn8)U;;@y^@c^dqYU@KJ`OvU7%i)8$vk zZ@lkA@zb~7R3!3eMxryv&5U9r`ZTC+aXRnl4|b2l-+bU5Le3UV znYOw=tFsL0Kj_Gu9TNrd@45PhxMu5iALF`o{l<9z-4DcA|C+dS*L70mxv2I8-T4Ee@%pS z8t7Px>g?&5mPS~R1J9q2Vc$UWgqAWUVpiNSdF*A|4%M=~V40VOtpQZd4kMaCo!W-L znR>=?JTWsJUwdg!OjoOM)3)vL;RhcQLV6|9^KnSC0dr;+A=W!?y(2DJxA9f!d1UaN z_PpX5#d@^s^C@b|*#V|@E$+DV>iDhq|F`juTiz6_qz&%A@`l(nzQ&qmxi-IF5yHRq z+M7kh+eG*sy51ZorY7TdP33<5-M<{ey=#R2^nwSBa&G-Uf8txQe#OSPY{QoG^7frL z9#0=U5SOjr5NCwnl`;jr!aYLEx$L5^pBx|eOYwr1hSvpNg846E{Hqq*W3~Pnnu#jrt!5x?6?^MJG*1;hVSVVa`otn zxN`H3SSKg#y?5Rp_gr~XyywpQqF>Vawrg*QU;FX*#`@8XCKg)lxkLNn$i%DhK-_(F ze@x7u5>B=n)}?v+FCKpGJ8^@Y-y!)BL-M(p0Zqz0&}KTYD-A8}>p*7;5FYJp2Vb*yccF{TY$1UqUph@oyJ#&9TcUh3#sO3p13wqP`rt1~^V}5cM%KtV9gJP_QPz#Diid8vD@J+;ZLaiRoR&F#e4lKv zRQ9>;vD){{zL#Rt%GKdNBY#dlS^)JuE;G<4n?0th&8+CfC-~A=KtwC#TZB>-?t~jm zC`CCc-joJ0U8~2N zwr!1@wr-6sU{ObCfN#kxP(F|MUw>;{wdq<9>h$c?tMZ6Ub5L^(rc-YiP!EE)VbBD4 zxY7oWau$0vsH-;ZRDX@wvT}W_9UYIpp5C}=%O!E=rMKE1?_9T8QgoR#!C4b=Aya{4 z%)-mL=`2$H-Npy>*&Z?U$yl$>B~@zJ=^~xUenU zaf}?>F6!%FOU^kCX(G7SYwS>FOu%#y^^o2Tz^11ULzo#^VN)wmE#}{FOo^c5HA+ z_lyWgfLDaqV9_>yVHNHc0_2Hm8Uy0x97-Ehid}KZnoXKIjY(R%MToYv&0FO?ODl+H zkuV6mZOyvaDAPfI*Jx_V)N0+>xIe^1+S{(VA%5ZR`;8NxcdT6>f9?K<;{I!HjB7Vt zDj(-k$qfS0im|>iK`0b;)Pa~&Tq=NxII_)X$Qj#v;(*umX^Z|@;mq4kOi_?CIPX8N z=d>k}_Zd&k%xHY9%|u)}J|44TejICrlrlJix(G+?$B4M18z;0A2a1+rinPF&{4eT2 zTaE*Y&WY2goYcSYE&{>~%nB0MFg+A^u>!|9MQ|D=-G6jSMAUn-rbq zLL54FBu-AJqhK)9eb?S3CfMYT`JmJO6Gxr5G>-K5rJXQo4+aRa(Im`3Sncu-r269^ zghuK-q(5y)wPKU({uS%!LrkLd9V@rUJPd|dGA>=cPAYs&{N0~?pH~%`hQ9y4hopYj z#4q3Xo_O$vdpuQJJvtgcdHvhGC&BYi$%OpGwRgvRZ+T0s85|a)fv;(`kCvk!t~koN zSoI1g>Kg{AOF~~fd{7wzSL3^4<0egElbPb#)5hMeI5l-@Srb9vy+`9fxV~&`)XcXZ zyyBcIt0TdHuABgcV?xySCL#XH^;btvnZIpY zipjjLc=CNL$zbtuH!T_%@U#2uYeS+f`fw=z)i3QXveY136E{Z+I4aL_Df=NPJWEC zNkb#78W|1FOftoO`;E894cm7vN-ELJRT%JfMB3x7EnDSt9rrZP+rSzNgcm@fji#d< z9TWcX-w4*&Y6f9uDVS%Lk4ptPkuD*ErviA5s-Os=?L5F`Bq-SNkosW?QkP0=)zZ1N z9yPdGEpg6KOjyqfYd!Tfu>?Oao-bqFlA*7aUcOz`*NJY05Tm1bVB$f>^^D}i()2Ly9lNL2|sBD{8wD2pglQw9@3r7ww zo^jyC&%bi(n*?V`xN5|kcU`U7L&WaGuKv+smIx;7IJ!YygL{x`ij-g(nK>W{U6x!AsH ztpuhoCT32>(aAH`obS8kO>yh?t2{PKy2pejj_4Ni_KmHNu5RI)amvggxM%TMEC-BHE3cmX3*(#jM34wHyNe>9LiEK$v>d3o(>Liy)90|6M$>(p_cMYz{ z?4XhaEC)HZEAn0&Z5z4mNqNSnqK+z8n|WmL8{}|ZC$&2^q^T8*rok4ZK@yRvFV60g zjue88>p#KO7PFGzaR7(X3SII|@Z1GMm+&L;@ zG*F8X=vQNfQQU}_2=hmMFF>&+E*Lpt#i}LvF@u6^FkKKH*(8&20MEe_$Ks_E$363S z*R?mq<U$MrBTZ#>Alnx1uD@;}Bs~Rt%x% zlAOb#l^dc@8o@*sZV*&|Bmz(}qJv|`gJFROB&4YW zQja$(?-moQKTjUdKL8NySr&n}7U z9`P9X`+mERAM-16w`%%!)t1e6JUeyyC(VW617Vl0Tp6QcsJ3S^a^!d|3{_o{8Q{gyo&jlKh@442?+c=_`IrQz91wjLKv&GBM)Zwh zrQCkB(P+;aQ7XY|AC2&7xTM}85UWNoK|(fH2;JQ`5Tl!~6t@dFoGaC3I)Vn!gQd*= zgOJ#sIU&z^N`u0@RAPL96GdkO2Ood`(MRL)y}P}}ZLSwg3>Fwr`^6qH0B~3XKs_#J zCDsxG@dX1bjg%{D*3!0Ckjc^D+ja`&v*0ip6GA5Sg*2}lsGO&jID+aQ#>csW;8w3_ z0ohw5i0)CP?dq(FtxTn${oo|!$|q__6CIkI&C3@|F3F-uBQMXBl8nJ7wF3hI-Y zMW0~dgHR*Vkf?eVzN#kEjFsfSLPRLdr)aK!dpM~AjKcN6@=XePf2aiCyXGeA6XRxYj&tyk}hKd z)t#%ujA&NJb7zE`WW&6OQk#w2g$x`W+G9106F#ft9KCYtguis@K{D6Q2GG$!H7XA} zO-VI4rP)CwU+n`I_tZe`K@_w{N(O25G|i=o((D*2ou9>-AoIsK?AbeCeg}>)eeq-b zA}-_MLyTUp$e0j`#d0Z;|HN>^(H0ITMeNH~t&R;t!_k@2)X^)2f(;7M909f0tqW-CjD)CiW)&h#ClfKb4(Ko(PMKxer1JT?dIdCW( zg9HoU=BdNcoH!vZpl6W1p!u{0d*%4bxI)t-rYJjCuZ}ynZ;y?#g>TumHTuMe-u@Lh za6QadWZDN4(4U=wjPM{^@Og^Hl_;1KOu&OSq9LNI2shk_m^L4fRaYcXbyQjRQoStr zP#8v_ovaPFZ6-%Bk}#MsXez;kH|}zj7pKt^tg}^P8{?H@-9vcR6o48={{X0w3rQd^WS{ zSrx^=VqO6$Q~P^wdCRZ2O8@#lJ={9@%cigElVl?xkOKh` zbG1Zd`xxL&HCSaGl7|S7yFZvwW%=?aJAb74#a;F1I`j`b^r>>(kyq)(#HO*KL7cA? z@G~`6f3iL^_3K-1dT0g{-8oaMey7=Ne@>`wAmy}TsVnJ*!Ko0hjrGaftT5FRVy(i& zfku##B4AZK2dp)HDjGO2Dr5U;;%d+$tnHsTf7|Ftyyxnx62rL z)B(J-1p_R2VTlD64VD3u2lvxAAR_&O5u1-qBqX9{?c^}#&k)!Q0fNA^f|00@KRXXe z7rYrkokKY>2J>v%bG~rVW)Fl#DE;i5*?($jM$;R&Zrm2D*quYtAsV0BDg3a@ zihtoRf#RpAzUT2O;XbG**c$wG(9?&LCddO?i+qSFJlYH^cJ&WO|BCh5vM<%;lr|a* z3)T8>w|B1dm%NRw9oIcjT|eAt4)*umT&a{+!qt2P3Ir6S^1Aq=L*tvG+|w^9)WG3x zBnXsPjVc(S3hJaWc{FO+EF&CzF$g(?l3?)XDGiQ~o(BamyK4*%VEWWfLbarsi<&4( z<17*$m}n%6sL1y8N!_YFGzNWw5C};fh%bWKSyH;|(zfQ%#oocx0ZxGmE+QYu$1e1i1Qjp_E0Xu7|2h{A9bjv223{(Rqn<=$Rg1SjBc53YO zrRbBrY6C%pm}$(ZuJI$LDfMfnftDh`_|}kgph(b|SSw)G2Gi5t^lbC9)3wGwzW1m9 zS9#gG;K$MCZoDA&5iI z9F01Ef?l@Jf67e1w8`X=i*u`Hgk-mc1iW!diSvWS6RwmMgD{Zdpr%7CuYzcI!QhMu zo}^7UAvCS_AiC1%gR*EZ(ujtW=oSPoGYY9lrm+Ol-5yb}NV+^rpblCNV$u$Q{!!T= zTvw}poKyEH23W+C%DIdPuko^Dn#L?=Rc*8dcarc#^fcp1S`C%YmsenDZ|JBgGexcu z^gkbfD730kl4f=SeR=#a7FtO3qfgd!B(#`~*_qj6)3a0m!?Esz&wSz&&r!<^>Tv%r z{KL8FnVH{iM)|3BtEHJv)vJ30o37BHl2-~sEJZY&nE{YlV2&y#XwOeYb79&Hf{NrN zQWllGdZ>XlW$*a7L_(|(ZIvj~fb(d?YJeJt%?JpG0S53l^voiYt_;jXQGX!5!`8Dg z01)|HzP1@i7^VyvOUSK}djuBopL z0bmXhS8XJdA$Vwmy6VdeD&{V*Yz^Y*pSBg!j6g`A(R7U#Ge$HMW`2&RoOUo#*LqeN zGlA;iuUM>5@iskT2H?}LvmmWYy5PdW69#FrOt+Xe(@iC>cmv} zH!5o{J#9o2B_T$HVw!hrL>?UZLcECHm^r2Nv>oY>6`|%mHDoYSrzV84WrwXTZQwMO zXTRS;ZMSP0w3lFopgxv2H6Tog`UAmMzx1!Zy!eD#6jJTXWyCT=;w0f0fK;^wb3k|` zbdiyj=JsjNv`s|St(wWC2L!4e&-WoT1hi^)sZ?HVI-L~Z!a?;+bg5|v6G_Z$&>2TQ z7T{GsFs<-~$D$73&5|dHt?)G|mhv|>nV^5of76Ys{u~z_I9MWuquGEHAt<|&| zg2N3EOe9B*#SKfb@_`S=MD?TgY+mRW=A#PvXcr*}^TDcJ#*m3g2x=b&VG+m-L)%2g zOF8{R2+%aDk<={JFpsLk3m2qWD^P|is-(PP|EM(+%mWHt9#!r3fdvyl|EPIsK=tPZ zE%H^;rj&c(y-OODEB;kW%-%S4Nd84OYhsKpSL{@4^=D2UoA|p|-SxGYZm98QLWursJ75=O+^(u&!Ad_oF=eEy$_% z(z)RSH;G`bFMOB{^$%Fcqpoq7MHb?GT3dL+qyhq9A&9N%v|0#LHRZ(3&dmMU(PJn7 z*5z;h`9GzIik=sM`ZdFKKlazYc;?8&N7T^&U8^^F=gWiYKq#ri=9xpm`9IrOh1^*| z6EF~SGj$+ZCKXB$UhxTB)Y8;}Xh@qFgXhA4B*i zN8d06eVNb-FdUK$-29MCAu(;-fN<&oCurhXWesb>ng6GKt71JZb+%NNvkTO>wgDbb zAr;JAz@FNrY&yt7nu5wN`c`Jv#0;*2Hd7s(@g!8zW(c8@El8L?rFfAJ7z7_{1Feap zF*`MLaAsome>r*J^oOsx>jR&6U#}5>@Pgt0_`Oe_I=Sc3Z&&NBed=j_sZv^1Y`06T zGY6w3bq7Emk5wfArS*LP6wi|3K~aQ)o)Usw;Su``(r_eAe2Q=omBl6#K1qNPqaO&c zgs5Qa^ua_(x0U)xnn3v`R1TQh*7G7_2|{LRXtkb6%Nb1YdrLT#gTd^unTcoBViuJIlUUm!Ak@hi#CTL0v}>xH`olE(JB{iOVc|fB z7wdrEZAa8<^_f$rC;w!w+4>)+r>pjx-O?jHrvS1^s6+!MIQR723ggB z(>&crwXn@Fl#$Z4(a9BF5`(E+j<=kVVRHN$;D;$QMl@`S&3b*|^u)|J=jN;b*YwQ%!zcUqpIkcC zyHEhCiw=UR@a!i(UYVQw)>yq*c(AX(_nqS_M{ek?bXJsnELB7WC?h%>G|m!pcm_c} z>K=(ivT%q%9K=Nx_Vh(*#pYBVqEo&ggqi`8q!HS)C!;gN!B5q-ZC2MX8D<2e34w+~ z09(VT4h#mNlEx4NtiRIF5I-@2%44e79#)^N*(1@Jl@@?;m7m*vPcLCIW-itaz$oHz zFobafheB~+Ow(9t8JQWC5H=vZaG^0N*JEg%JfJkd&lnSUJr!1;T+Imd4>Rb>mX;MzjOW&R9VLgEHX~5((wuRZ(W;k33-}nT~AG35BX! zi2BLBwvDty%~YKBNJ_}G%{K#)s6L!5LWqzYE32&7ruIoxy_`7++$%IDv-Ng}pQZ77 z7HxW`vX~LX3`JieYD2g$OI?e}X}fFnHr0XwJZSYK2F0XhuvU*q3ozS&nP6nfp=E%D zX(#P--)v|&twyt5n5{KhCl+e07hCn(H)l@o`}U9jtt*a3d<>-n7T#cp`2PUd?Ja2b S)%AJ+0000c}wj);V|?c$U(9anBQ>nuAN?doy7G72 zjUIWM_=Pk+u@yZmLJHH2hS^>!*f{X1HyfDI@$2615S?w4xav!HwVo7mhq6@Fp7+8? zb>_;dMbY)E6Pgiea*ou3^nF?Z%JeiN=E`yM?{>QQ@XrgNFZN-kJYle_5}-bAA@UBYdVIW`WhPsuE$r5tWuh- zRdg$Rm|1mrZb6+NmM5^ezlE%>>0LT1G!^?m%DxdA()T}zF5`Xl8ZCxTeh5GO6lr-v zUpVt@yj*g<8v3AgP0!Qtic~UGIfCP5WX|Y9R=>MpY_4~$q_5sTyE!bkZ}=@R7hH@} zt=kmQv99+FEh;`bs$ktAYOf$wh{Gmm6Xgij5STBs3n#Hr98aJ*Gj{X}mXd$%%2?7WlGEJSX+L~<&M?uE5Hm|0gEUrHyLXzcZ z2;w1q^N07KvH%RXJ2pYJl9$Q$Pn~0mw0LbkY*!xkfT4vb+2>Iblmv+R7{ZE0l|;XB=&T9R}o}6o%keuu|Yw~Y$iZtB(pO0yej{iRi~|DSg1U6B_U0Z`fYw@ zXs&!K_m7OD%CUR1=7|hDZ^ApBCa>Bg(UH-dlhVFml8M zFuEN7UnoB-ZmMdJ2Jnllb6aT|t*3eQHU8o(H+=nK8oTJ@K;E)}%R&bjc|*Ic`bkwXgdk8)pFCg|Xn#1tCrj==SP74tVJv;dOr3IuhKTA|@ z*kOLdq!#a=NAaI_mUW|9{0&(z%@n>4qwig>+GbrdAklX}HWD?+iQ{n>ypIrtR z?y$B32QU4RURUSW`?8rH`byLmf!Ye(98v%l)BbUAwNHaIEqs(V1<43qoSLw|E#Si2 zCB?2uT3@Yd5w1+(-X;D<3@!oQS&+(A5QEA&3cAgZPkE98TX$bQJ6&)@%v0K$A+x(f zWDpd%{hGm>e|@;T@0Ewep+{Jz>@-qx{g(bd!1ePxH5_bmDb!c+1eY)|WgAnd4l`jj zX?#KjO8}@A#yhs$46V*l46<m1}Xu#&7SH=K>6TOfX8Y1`U&phcM z%u-CSpiPmth)Hb3Y8#Giq-k8v28d&JotEHO#547rU4QEzguq6Kq|M4lU(y)9 zxN>-?pxpADKw;8#64=;0WF2N{`9J)Ty;hH%I;Z1F4M%nPwRQw)jXo=D{%a!`v6lYu z8t(9vZX;S&N9ONb0G%&i$V)uTZ!o0)CADdUdZWE37WeTaiZaK&*Wz@39H)ub5lcZH zPZ!!&L5(e<5=|`7mO7}br`l4&J`VL#TNkh@D2-oMQ+&t=fBm8YY@0=w>P(^@Nnb(p z)~1-piqdVTbP1hD()13jwCRkrT|7@&MKA0Ui}(2Gf?`;%AIF~(7jl1Ptp&p!nN+nh z70e`kIKz)PuixFnK4Cnz41FL2a6ePu6C$O0t7$dqs#;uFS58~;5}xtCCVu&bpy1Lt z-{;Y@7g2c5qBiT)SFCMES2p7|B8t__Z8g%WZu|AS9pkFbi_w9JY{#f}LDQ*&qV zn%R`y1x+|QTd7auZ$Qmh!p0IcEfI$(Qpj{STrh;DMs&gAcDin2Gh2SsIQ!J>K4u z&@%ayb%L5&w)$!=B)i-Ko)P-0)J(7BUU$5Mk0(S)yoPs`G5urv_AEMGsc|@eRz0=c ziz2dp55hpRl0i%1gc{8sX1?ugKzj7CevjR)hW_-Fdi@o=m9G-*`k%pFPNbAO%#6yU zG&yn2k$T?e$irAnvngpO_QU#7-7>4r2l}3t8@LI3&DO%``oZ}R+kum)f!YY(xwi1K z!|&R(@>Ag&R3;q1u0@5r7j88{wZ*lzlMhLTxS~@hZ2kWZOrEdn$%-LaP4Yz0f zhxSuz@r_JcJ+_y-M_e5A_X|WxKptTzo%O`Y<_(Ryl)-v3xZ&^2ZiEvTLd7 zafW2_*0u`ax2hJ`!aFn-r|(OphK??%r+Kzd+}$?+QE}X^g3wjzTmlBlSZ}DD9|4ql z$JP-Gf}Ga=-WT*8k#!{6?b5~5Nn^-*_#8}9B=K3L-(6J1_%VZkR&=MvP&C^6e941` zGb2QwGY6R)m3P{j_Vwq1g(|G+N~^B{;yg*JH7_1#uL6d-$EwY$vgW(D!HYUUttE>N z-Nf(iUU?Bw5|0_*AndfLxdb<@LFmLj$3C!}-y5sBiqPfnYm`D;<8^+ypWP*MvsTi) zGZR*2(lO!t%pd_1O2}Q0j)|ORay$w`9>4IEsPk#eh5*{#j> zp+!r_cY{Bx^}7qWL#pC(vMf8<0^Zq?{)jU_7g-#zx|w}pd23{-*<;eLk1#z@e^8v) zMDocohIA~C*6xNJO}2mJF|YmsoiazV#6D}7D2UTDS&oO;tB7GbM|rl)jA`5Q-m@lWT y#$r&@|8Tzt_u77kCL;@0p~WWt|9v)}71}Ra`*TW(H}Zg6HOTF_rwhdik^5gS)uFZk literal 0 HcmV?d00001 diff --git a/src/img/tubi.png b/src/img/tubi.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8ce56942971269f4d8d003e55e7e999ee5e10e GIT binary patch literal 4266 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 literal 0 HcmV?d00001 diff --git a/src/img/vumoo.png b/src/img/vumoo.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf273a8509b710bbb99f78f9eefe39b49c36979 GIT binary patch literal 3702 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 literal 0 HcmV?d00001 diff --git a/src/manifest.json b/src/manifest.json index 41273b8..8d93081 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,9 +1,9 @@ { - "update_url": "https://github.com/Ephellon/web-to-plex/raw/master/src.crx", +// "update_url": "https://ephellon.github.com/web.to.plex/update.xml", "name": "Web to Plex", "description": "Adds a button on various movie & TV show sites to open the item in Plex, or send to your designated NZB manager for download.", - "homepage_url": "https://github.com/Ephellon/web-to-plex/", + "homepage_url": "https://github.com/SpaceK33z/web-to-plex/", "manifest_version": 2, "version": "4.1", @@ -25,104 +25,171 @@ "content_scripts": [ // Allows media downloads { - "matches": ["*://*.openload.co/*", "*://*.openload.com/*", "*://*.oload.fun/*"], + "matches": [ + "*://*.openload.co/*", "*://*.oload.co/*", + "*://*.openload.com/*", "*://*.oload.com/*", + "*://*.openload.fun/*", "*://*.oload.fun/*", + "*://*.openload.biz/*", "*://*.oload.biz/*", + "*://*.openload.vip/*", "*://*.oload.vip/*", + "*://*.openload.club/*", "*://*.oload.club/*", + "*://*.openload.io/*", "*://*.oload.io/*", + "*://*.openload.xyz/*", "*://*.oload.xyz/*", + "*://*.openload.cc/*", "*://*.oload.cc/*", + "*://*.openload.to/*", "*://*.oload.to/*", + "*://*.openload.is/*", "*://*.oload.is/*", + "*://*.openload.gg/*", "*://*.oload.gg/*", + "*://*.openload.tv/*", "*://*.oload.tv/*", + "*://*.openload.fm/*", "*://*.oload.fm/*", + "*://*.openload.cx/*", "*://*.oload.cx/*", + "*://*.openload.ac/*", "*://*.oload.ac/*", + "*://*.openload.name/*", "*://*.oload.name/*", + "*://*.openload.global/*", "*://*.oload.global/*" + ], "js": ["download/oload.js"], "all_frames": true }, + { + "matches": ["*://*.consistent.stream/titles/*", "*://*.consistent.stream/watch/*"], + "js": ["download/consistent.js"], + "all_frames": true + }, + { + "matches": ["*://app.plex.tv/desktop/*"], + "js": ["download/plex.js"], + "all_frames": true + }, + + // Testing purposes only + { + "matches": ["*://ephellon.github.io/web.to.plex/test/*"], + "js": ["utils.js", "sites/__test__.js"], + "css": ["sites/common.css", "sites/theme.css"] + }, // The sites { "matches": ["*://*.movieo.me/*"], "js": ["history-hack.js", "utils.js", "sites/movieo/index.js"], - "css": ["sites/movieo/index.css", "sites/common.css"] + "css": ["sites/movieo/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.imdb.com/*"], "js": ["utils.js", "sites/imdb/index.js"], - "css": ["sites/imdb/index.css", "sites/common.css"] + "css": ["sites/imdb/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.trakt.tv/*"], "js": ["history-hack.js", "utils.js", "sites/trakt/index.js"], - "css": ["sites/trakt/index.css", "sites/common.css"] + "css": ["sites/trakt/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.letterboxd.com/*"], "js": ["utils.js", "sites/letterboxd/index.js"], - "css": ["sites/letterboxd/index.css", "sites/common.css"] + "css": ["sites/letterboxd/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.tvmaze.com/shows/*"], "js": ["utils.js", "sites/tvmaze/index.js"], - "css": ["sites/tvmaze/index.css", "sites/common.css"] + "css": ["sites/tvmaze/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.thetvdb.com/series/*"], "js": ["utils.js", "sites/tvdb/index.js"], - "css": ["sites/tvdb/index.css", "sites/common.css"] + "css": ["sites/tvdb/index.css", "sites/common.css", "sites/theme.css"] },{ - "matches": ["*://*.themoviedb.org/movie/*", "https://*.themoviedb.org/tv/*"], + "matches": ["*://*.themoviedb.org/movie/*", "*://*.themoviedb.org/tv/*"], "js": ["utils.js", "sites/tmdb/index.js"], - "css": ["sites/tmdb/index.css", "sites/common.css"] + "css": ["sites/tmdb/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.vrv.co/*"], "js": ["utils.js", "sites/vrv/index.js"], - "css": ["sites/vrv/index.css", "sites/common.css"] + "css": ["sites/vrv/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.hulu.com/*"], "js": ["utils.js", "sites/hulu/index.js"], - "css": ["sites/hulu/index.css", "sites/common.css"] + "css": ["sites/hulu/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://play.google.com/store/*"], "js": ["utils.js", "sites/google/play.js"], - "css": ["sites/google/index.css", "sites/common.css"] + "css": ["sites/google/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://itunes.apple.com/*"], "js": ["utils.js", "sites/itunes/index.js"], - "css": ["sites/itunes/index.css", "sites/common.css"] + "css": ["sites/itunes/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.metacritic.com/*"], "js": ["utils.js", "sites/metacritic/index.js"], - "css": ["sites/metacritic/index.css", "sites/common.css"] + "css": ["sites/metacritic/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.fandango.com/*"], "js": ["utils.js", "sites/fandango/index.js"], - "css": ["sites/fandango/index.css", "sites/common.css"] + "css": ["sites/fandango/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.amazon.com/*"], "js": ["utils.js", "sites/amazon/index.js"], - "css": ["sites/amazon/index.css", "sites/common.css"] + "css": ["sites/amazon/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.vudu.com/*"], "js": ["utils.js", "sites/vudu/index.js"], - "css": ["sites/vudu/index.css", "sites/common.css"] + "css": ["sites/vudu/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.verizon.com/*"], "js": ["utils.js", "sites/verizon/index.js"], - "css": ["sites/verizon/index.css", "sites/common.css"] + "css": ["sites/verizon/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.couchpotato.life/*/*"], "js": ["utils.js", "sites/couchpotato/index.js"], - "css": ["sites/couchpotato/index.css", "sites/common.css"] + "css": ["sites/couchpotato/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.rottentomatoes.com/*/*"], "js": ["utils.js", "sites/rottentomatoes/index.js"], - "css": ["sites/rottentomatoes/index.css", "sites/common.css"] + "css": ["sites/rottentomatoes/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.netflix.com/watch/*"], "js": ["utils.js", "sites/netflix/index.js"], - "css": ["sites/netflix/index.css", "sites/common.css"] + "css": ["sites/netflix/index.css", "sites/common.css", "sites/theme.css"] },{ - "matches": ["*://*.gostream.site/*"], - "js": ["utils.js", "sites/gostream/index.js"], - "css": ["sites/gostream/index.css", "sites/common.css"] + "matches": ["*://*.vumoo.to/*"], + "js": ["utils.js", "sites/vumoo/index.js"], + "css": ["sites/vumoo/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://www.google.com/*"], "js": ["utils.js", "sites/google/index.js"], - "css": ["sites/google/index.css", "sites/common.css"] + "css": ["sites/google/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://www.youtube.com/*"], "js": ["utils.js", "sites/youtube/index.js"], - "css": ["sites/youtube/index.css", "sites/common.css"] + "css": ["sites/youtube/index.css", "sites/common.css", "sites/theme.css"] },{ "matches": ["*://*.flickmetrix.com/*"], "js": ["utils.js", "sites/flickmetrix/index.js"], - "css": ["sites/flickmetrix/index.css", "sites/common.css"] + "css": ["sites/flickmetrix/index.css", "sites/common.css", "sites/theme.css"] + },{ + "matches": ["*://*.justwatch.com/*"], + "js": ["utils.js", "sites/justwatch/index.js"], + "css": ["sites/justwatch/index.css", "sites/common.css", "sites/theme.css"] + },{ + "matches": ["*://*.moviemeter.nl/*"], + "js": ["utils.js", "sites/moviemeter/index.js"], + "css": ["sites/moviemeter/index.css", "sites/common.css", "sites/theme.css"] + },{ + "matches": ["*://*.allocine.fr/*"], + "js": ["utils.js", "sites/allocine/index.js"], + "css": ["sites/allocine/index.css", "sites/common.css", "sites/theme.css"] + },{ + "matches": ["*://*.gostream.site/*"], + "js": ["utils.js", "sites/gostream/index.js"], + "css": ["sites/gostream/index.css", "sites/common.css", "sites/theme.css"] + },{ + "matches": ["*://*.tubitv.com/*"], + "js": ["utils.js", "sites/tubi/index.js"], + "css": ["sites/tubi/index.css", "sites/common.css", "sites/theme.css"] + },{ + "matches": ["*://ephellon.github.io/web.to.plex/?*", "*://ephellon.github.io/web.to.plex/index.html?*", "*://ephellon.github.io/web.to.plex/login.html?*"], + "js": ["utils.js", "sites/webtoplex/index.js"], + "css": ["sites/webtoplex/index.css", "sites/common.css", "sites/theme.css"] + },{ + "matches": ["*://app.plex.tv/desktop/*"], + "js": ["utils.js", "sites/plex/index.js"], + "css": ["sites/plex/index.css", "sites/common.css", "sites/theme.css"] + },{ + "matches": ["https://*/*"], + "js": ["utils.js", "sites/common.js"] } ], @@ -153,5 +220,5 @@ "contextMenus", "" ], - "web_accessible_resources": ["img/*"] + "web_accessible_resources": ["img/*", "options/*"] } diff --git a/src/options/index.css b/src/options/index.css new file mode 100644 index 0000000..2083ac0 --- /dev/null +++ b/src/options/index.css @@ -0,0 +1,647 @@ +html, body { + height: 100%; +} + +body { + background: url(../img/noise.png) fixed, url(../img/256.png) no-repeat fixed center, #3f4245 !important; + color: #333 !important; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif, system; + font-size: 18px !important; + padding: 1em; + width: 90vw; + flex-grow: 1; + padding: 25px; + overflow: auto; + position: absolute; +} + +a { + color: #cc7b19 !important; + text-decoration: none !important; +} + +a[target="_blank"]::after { + content: " [\2197]"; + font-size: 70%; + + vertical-align: super; +} + +h1 { + position: sticky; + top: 0; +} + +h2 { + text-align: center; +} + +hr { + border: 1px solid #6668; +} +hr:last-child { + display: none; +} + +article { + z-index: 3; +} + +section { + display: block !important; + margin-bottom: 20px; + box-sizing: border-box; +} + +label { + color: #eee !important; + font-weight: 400 !important; + display: inline-block; + margin-bottom: 5px; +} + +input[type="text"], input[type="password"], textarea, select { + width: 30vw !important; + line-height: 1.5em !important; + transition: background 0.2s; + display: block !important; + height: 38px !important; + padding: 6px 12px; + font-size: 16px !important; + color: #eee !important; + vertical-align: middle; + background: rgba(255, 255, 255, 0.25); + border: 3px solid rgba(0, 0, 0, 0); + border-radius: 3px; + font-family: inherit; + margin: 0; +} + +textarea, select[multiple] { + height: 114px !important; +} + +div:not(body > div) { + color: rgba(255, 255, 255, 0.45) !important; + display: block; + margin-top: 5px !important; + margin-bottom: 10px !important; + box-sizing: border-box; + font-size: 14px !important; + z-index: 18 !important; +} + +button, input[type="button"i], .button { + padding: 10px 18px !important; + font-size: 16px !important; + line-height: 1.33 !important; + border-radius: 3px; + font-family: inherit; + text-transform: uppercase; + border: 0; + box-shadow: none !important; + position: relative; + overflow: hidden; + color: #fff !important; + background: #cc7b19 !important; + margin-bottom: 0; + font-weight: 400 !important; + vertical-align: middle; + cursor: pointer !important; + white-space: nowrap; + user-select: none; + transition: all 0.1s; +} + +button:hover, input[type="button"i]:hover, .button:hover { + background: #e59029 !important; +} + +[id$="_test"] { + background: #cc7b19 !important; + margin-bottom: 2px; + padding: 10px 8px 10px 10px !important; +} + +[id$="_status"] { + padding: 0 6px !important; + font-size: 16px !important; + border-radius: 3px; + font-family: monospace, sans-serif, sans, arial; + border: 0; + box-shadow: none !important; + color: #fff !important; + background: #666 !important; + border-radius: 4px; +} + +[id$="_status"].false { + background: #cc1b19 !important; +} + +[id$="_status"].true { + background: #7bcc19 !important; +} + +[id$="token"], [data-option$="Token"], [data-option$="API"] { + font-family: monospace, consolas, sans-serif, sans serif, sans, arial; +} + +[id$="-token"]:not(:placeholder-shown), [data-option$="-Token"]:not(:placeholder-shown), [data-option$="-API"]:not(:placeholder-shown) { + text-transform: uppercase; +} + +em { + color: #cc7b19 !important; +} + +select { + margin-left: 10px !important; + font-size: 16px !important; + line-height: inherit; + text-transform: none; +} + +#footer { + text-align: center; + + bottom: 0; + left: 0; + position: fixed; + + width: 100%; +} + +[in-use] { + color: #197bcc; +} + +[in-use]::after { + content: '\2610'; +} + +[in-use="true"i]::after { + content: '\2611'; +} + +[top] { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +[bottom] { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +/* notifications */ +.notification { + background: #F45A26; + border-radius: 4px; + color: #FFF !important; + cursor: pointer; + display: block; + font-family: arial, verdana, sans-serif; + font-size: 20px; + text-align: center; + + position: fixed; + left: 50%; + margin-left: -175px; + padding: 10px; + top: 80px; + + width: 350px; + z-index: 999999; +} + +/* Web to Plex general information notifications */ +.notification.info { + background: #666!important; +} + +/* Web to Plex update notifications */ +.notification.update { + background: #2A2AFF!important; +} + +/* Web to Plex warning notifications */ +.notification.warning { + background: #FF2A2A!important; +} + +/* Web to Plex prompt */ +.prompt { + background: #0008!important; + box-sizing: border-box!important; + color: #eee!important; + display: block!important; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 24px; + overflow: auto; + + height: 100%!important; + width: 100%!important; + + bottom: 0!important; + left: 0!important; + right: 0!important; + top: 0!important; + position: fixed!important; + z-index: 999999999!important; +} + +.prompt-body { + background: #282828; + box-shadow: 0 5px 15px #0008; + display: block; + + left: 20%; + top: 5%; + padding-top: 10px; + padding-bottom: 70px; + position: relative; + + height: 60%; + width: 60%; +} + +.prompt-header, .prompt-footer { + background: #323232; + border: 1px solid #0000; + box-sizing: border-box; + color: #eee; + text-size-adjust: 100%; + + margin-top: 0; + padding: 15px 20px; + position: absolute; + + height: 65px; + width: 100%; + + -webkit-tap-highlight-color: #0000; +} + +.prompt-header { + text-align: left; + border-bottom-color: #222; + border-bottom-width: 1px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + + top: 0; +} + +.prompt-options { + display: block; + overflow-x: hidden; + overflow-y: auto; + + padding: 12px; + position: relative; + top: 65px; + + max-height: calc(100% - 65px); +} + +.prompt-option { + background: #323232; + border: 1px solid #202020; + border-radius: 3px; + color: #999; + display: block; + text-align: left; + + margin-bottom: 10px; + padding: 10px; + + min-height: 20px; +} + +.prompt-option.mutable { + max-width: 60%; +} + +.prompt-option.mutable > *:last-child { + background: #ffffff40; + border-radius: 3px; + transition: all 0.1s; + + height: 30px; + width: 30px; + + float: right; + margin-right: -9px; + margin-top: -9px; + padding: 0; +} + +.prompt-option.mutable > *:last-child:hover { + background: #ffffff4d; +} + +.prompt-option.mutable > *:last-child::after { + content: '\00d7'; +} + +.prompt-footer { + text-align: right; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-top-color: #222; + border-top-width: 1px; + + bottom: 0; +} + +.prompt-input { + float: left; + position: relative; + margin-left: -16px!important; + margin-top: -11px!important; +} + +.prompt-accept, .prompt-decline { + transition: all 0.1s; +} + +.prompt-accept { + background: #cc7b19!important; + margin-left: 5px!important; +} + +.prompt-accept:hover { + background: #e59029!important; +} + +.prompt-decline { + background: #ffffff40!important; +} + +.prompt-decline:hover { + background: #ffffff4d!important; +} + +[type="password"] ~ .hidden-help, .hide { + display: none; +} + +article { + color: #999; + background: rgba(0, 0, 0, 0.15) !important; + width: 35vw !important; + position: relative !important; + padding: 15px !important; +} + +summary, option { + margin-bottom: 20px !important; + padding-left: 0; + list-style: none !important; + margin-top: 0 !important; + color: #999; + cursor: pointer; +} + +select:not([multiple]) > option { + background: url(../img/noise.png), #3f4245 !important; +} + +details:last-child > summary { + margin-bottom: 0 !important; +} + +details[open] > summary, h1, h2, h3, h4, h5, h6 { + color: #cc7b19 !important; + text-shadow: 0 0 5px #000; + + z-index: 999; +} + +.test { + background: #197bcc !important; + font-family: monospace; +} + +.test:hover { + background: #298bdc !important; +} + +/* bbodine @CodePen - https://codepen.io/bbodine1/pen/novBm */ +.checkbox { + width: 80px; + height: 26px; + background: #000; + margin: 15px 0; + position: relative; + border-radius: 50px; + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.2); +} + +span.checkbox { + display: inline-block; + + margin: 0; + vertical-align: text-bottom; +} + +.checkbox::after { + content: 'OFF'; + color: #666; + position: absolute; + right: 10px; + z-index: 0; + font: 12px/26px Arial, sans-serif; + font-weight: bold; + text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.15); +} + +.checkbox::before { + content: 'ON'; + color: #cc7b19; + position: absolute; + left: 10px; + z-index: 0; + font: 12px/26px Arial, sans-serif; + font-weight: bold; +} + +.checkbox[prompt-yes]::before { + content: attr(prompt-yes); + text-transform: uppercase; +} + +.checkbox[prompt-no]::after { + content: attr(prompt-no); + text-transform: uppercase; +} + +.checkbox[prompt-size="large"i]::before, .checkbox[prompt-size="large"i]::after { + font-size: 30px !important; +} + +.checkbox[prompt-size="medium"i]::before, .checkbox[prompt-size="medium"i]::after { + font-size: 21px !important; +} + +.checkbox[prompt-size="normal"i]::before, .checkbox[prompt-size="normal"i]::after { + font-size: 12px !important; +} + +.checkbox[prompt-size="small"i]::before, .checkbox[prompt-size="small"i]::after { + font-size: 6px !important; +} + +.checkbox[prompt="y/n"i]::before { + content: 'YES'; +} + +.checkbox[prompt="y/n"i]::after { + content: 'NO'; +} + +.checkbox label { + display: block; + width: 34px; + height: 20px; + cursor: pointer; + position: absolute; + top: 3px; + left: 3px; + z-index: 1; + background: #666; + border-radius: 50px; + transition: all 0.4s ease; + box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.3); +} + +.checkbox input[type=checkbox] { + visibility: hidden; +} + +.checkbox input[type=checkbox]:checked + label { + left: 43px; + background: #cc7b19; +} + +.checkbox[disabled] { + opacity: 0.25 !important; +} + +[white] { + color: #fff!important; +} + +[orange] { + color: #cc7b19!important; +} + +input[type="range"] { + appearance: none; + -webkit-appearance: none; + + background: #0004; + outline: none; + + height: 5px!important; + width: 83%!important; +} + +input[type="range"] + output { + display: inline-block; + position: relative; + width: 7%!important; + color: #cc7b19; + line-height: 20px; + text-align: center; + border-radius: 3px; + background: #000; + padding: 5px 10px; + margin-left: 8px; + vertical-align: sub; +} + +input[type="range"] + output::after { + position: absolute; + top: 8px; + left: -7px; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #000; + border-bottom: 7px solid transparent; + content: ''; +} + +input[type="range"]::-webkit-slider-thumb { + appearance: none; + -webkit-appearance: none; + + background: #cc7b19; + border: 1px solid #cc7b19; + border-radius: 100%; + cursor: pointer; + + height: 32px; + width: 32px; +} + +input[type="range"]::-moz-range-thumb { + background: #cc7b19; + border: 1px solid #cc7b19; + border-radius: 100%; + cursor: pointer; + + height: 32px; + width: 32px; +} + +#version { + color: #fff; + + position: fixed; + right: 4px; + top: calc(100vh - 24px); +} + +[disabled], [disabled] * { + cursor: not-allowed!important; + color: #909090EE!important; +} + +[code], code { + border: 1px solid #FFF3; + font-family: monospace, console, consolas, system, arial !important; + + padding: 0 3px; +} + +*::-webkit-scrollbar { + width: 10px; +} + +*::-webkit-scrollbar-thumb { + min-height: 50px; + background: rgba(255, 255, 255, 0.15); + border: 2px solid rgba(0, 0, 0, 0); + border-radius: 8px; + background-clip: padding-box; +} + +*::-webkit-scrollbar-track { + background: url(../img/noise.png) fixed, url(../img/256.png) no-repeat fixed center, #3f4245 !important; +} + +*::placeholder { + color: #999!important; +} + +*::-moz-placeholder, *:-moz-placeholder { + color: #999; +} + +*::-webkit-input-placeholder { + color: #999; +} diff --git a/src/options/index.html b/src/options/index.html index 013d495..32dd9f3 100644 --- a/src/options/index.html +++ b/src/options/index.html @@ -1,570 +1,9 @@ - Web To Plex Options + Web To Plex | Options @@ -595,38 +34,38 @@

Plex Settings

-
-
- Advanced Settings - -

List Options

+
+
+ Media Settings
-

AutoGrab

-
- - -
+

+ Auto Grab + + + + +

When the user presses the Grab button, the extension should:
    @@ -1010,7 +636,7 @@

    AutoGrab

  • ASK user: Find items not on Plex, and grab what the user approves
-

Maximum AutoGrabs

+

Maximum Auto Grabs

@@ -1018,13 +644,76 @@

Maximum AutoGrabs


-

Search Options

-
-

Loose Searching

-
- - -
+
+

+ Prompt for Save Location + + + + +

+
+ When the user presses the Grab button should the save location be asked for? +
+ Only supports Medusa, Radarr, and Sonarr. +
+
+
+
+

+ Prompt for Quality + + + + +

+
+ When the user presses the Grab button should the quality be asked for? +
+ Only supports Medusa, Radarr, and Sonarr. +
+
+
+
+ +
+
+ Notification Settings +

+ Ignore Found Items + + + + +

+
+ When the user presses the Grab button and an item already exists, should the notification be ignored or not? +
+
+

+ Ignore Repetitive Notifications + + + + +

+
+ When the user presses the Grab button and there are several incoming notifications of similar information, should the notifications be ignored (after the first one) or not? +
+
+
+ +
+
+ Search Settings +
+

+ Loose Searching + + + + +


@@ -1035,19 +724,26 @@

Loose Searching

Higer sensitivity means more strict searches.
- +
-

Manager Searching

-
- - -
+

+ Manager Searching + + + + +

Allows the extension to use your manager(s) to find media.
- Currently supports: Ombi, Radarr, and Sonarr. + Currently supports: Medusa, Ombi, Radarr, and Sonarr.
-
+
+
+ +
+
+ Advance Settings

API Keys

@@ -1078,16 +774,31 @@

Configuration Data (Copy/Paste)


-

"Local Search" Cache

- +

Cached Data

+
- This will empty all of you "Local Search" results. + This will remove all of your Local Search, permission, and other cached data.
This action cannot be undone.
+
+

Developer Options

+
+

+ Developer Mode + + + + +

+ +
@@ -1138,16 +849,54 @@

External Links

Download, and/or find more information for Ombi. + +
+ +
+ Download, and/or find more information for Medusa. +
+
+ +
+ +
+ Download, and/or find more information for Sick Beard. +
+

-
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/src/options/index.js b/src/options/index.js index dcda978..00afca3 100644 --- a/src/options/index.js +++ b/src/options/index.js @@ -6,7 +6,7 @@ #4: See https://github.com/SpaceK33z/web-to-plex/issues/61 */ -let NO_DEBUGGER = false; +let DEVELOPER_MODE; if(chrome.runtime.lastError) /* Always causes errors on *nix machines, so just "poke" the errors here */ @@ -14,64 +14,177 @@ if(chrome.runtime.lastError) // FireFox doesn't support sync storage. const storage = (chrome.storage.sync || chrome.storage.local), - $$ = (selector, all) => (all? document.querySelectorAll(selector): document.querySelector(selector)), - __servers__ = $$('#plex_servers'), - __watcher_qualityProfile__ = $$(`[data-option="watcherQualityProfileId"]`), - __watcher_storagePath__ = $$(`[data-option="watcherStoragePath"]`), - __radarr_qualityProfile__ = $$(`[data-option="radarrQualityProfileId"]`), - __radarr_storagePath__ = $$(`[data-option="radarrStoragePath"]`), - __sonarr_qualityProfile__ = $$(`[data-option="sonarrQualityProfileId"]`), - __sonarr_storagePath__ = $$(`[data-option="sonarrStoragePath"]`), - __save__ = $$('#save'), + $ = (selector, all) => (all? document.querySelectorAll(selector): document.querySelector(selector)), + __servers__ = $('[data-option="preferredServer"]'), + __sickBeard_qualityProfile__ = $(`[data-option="sickBeardQualityProfileId"]`), + __sickBeard_storagePath__ = $(`[data-option="sickBeardStoragePath"]`), + __medusa_qualityProfile__ = $(`[data-option="medusaQualityProfileId"]`), + __medusa_storagePath__ = $(`[data-option="medusaStoragePath"]`), + __watcher_qualityProfile__ = $(`[data-option="watcherQualityProfileId"]`), + __watcher_storagePath__ = $(`[data-option="watcherStoragePath"]`), + __radarr_qualityProfile__ = $(`[data-option="radarrQualityProfileId"]`), + __radarr_storagePath__ = $(`[data-option="radarrStoragePath"]`), + __sonarr_qualityProfile__ = $(`[data-option="sonarrQualityProfileId"]`), + __sonarr_storagePath__ = $(`[data-option="sonarrStoragePath"]`), + __save__ = $('#save'), __options__ = [ + /* Plex Settings */ 'plexURL', 'plexToken', 'UseOmbi', - 'couchpotatoURLRoot', - 'couchpotatoToken', - 'couchpotatoBasicAuthUsername', - 'couchpotatoBasicAuthPassword', -// 'couchpotatoQualityProfileId', + 'preferredServer', + + /* Manager Settings */ + // Ombi + 'usingOmbi', + 'ombiURLRoot', + 'ombiToken', + + // Medusa + 'usingMedusa', + 'medusaURLRoot', + 'medusaToken', + 'medusaBasicAuthUsername', + 'medusaBasicAuthPassword', + 'medusaStoragePath', + 'medusaQualityProfileId', + + // Watcher + 'usingWatcher', 'watcherURLRoot', 'watcherToken', 'watcherBasicAuthUsername', 'watcherBasicAuthPassword', 'watcherStoragePath', 'watcherQualityProfileId', + + // Radarr + 'usingRadarr', 'radarrURLRoot', 'radarrToken', 'radarrBasicAuthUsername', 'radarrBasicAuthPassword', 'radarrStoragePath', 'radarrQualityProfileId', + + // Sonarr + 'usingSonarr', 'sonarrURLRoot', 'sonarrToken', 'sonarrBasicAuthUsername', 'sonarrBasicAuthPassword', 'sonarrStoragePath', 'sonarrQualityProfileId', - 'ombiURLRoot', - 'ombiToken', + // Sick Beard + 'usingSickBeard', + 'sickBeardURLRoot', + 'sickBeardToken', + 'sickBeardBasicAuthUsername', + 'sickBeardBasicAuthPassword', + 'sickBeardStoragePath', + 'sickBeardQualityProfileId', + + // CouchPotato + 'enableCouchPotato', + 'usingCouchPotato', + 'couchpotatoURLRoot', + 'couchpotatoToken', + 'couchpotatoBasicAuthUsername', + 'couchpotatoBasicAuthPassword', + // 'couchpotatoQualityProfileId', + + /* Other Settings */ // Connection settings 'UseProxy', 'ProxyURL', 'ProxyHeaders', - // Advance Settings - 'OMDbAPI', - 'TMDbAPI', + // Media settings 'UseAutoGrab', 'AutoGrabLimit', + 'PromptLocation', + 'PromptQuality', + + // Notification Settings + 'NotifyNewOnly', + 'NotifyOnlyOnce', + + // Search Settings 'UseLoose', 'UseLooseScore', 'ManagerSearch', + // Advance Settings + 'OMDbAPI', + 'TMDbAPI', + 'DeveloperMode', + + // Hidden values + 'watcherQualities', + 'radarrQualities', + 'sonarrQualities', + 'medusaQualities', + 'sickBeardQualities', + 'watcherStoragePaths', + 'radarrStoragePaths', + 'sonarrStoragePaths', + 'medusaStoragePaths', + 'sickBeardStoragePaths', + '__radarrQuality', + '__sonarrQuality', + '__medusaQuality', + '__sickBeardQuality', + '__radarrStoragePath', + '__sonarrStoragePath', + '__medusaStoragePath', + '__sickBeardStoragePath', + '__domains', + '__caught', + '__theme', + + // Builtins + 'builtin_allocine', + 'builtin_amazon', + 'builtin_couchpotato', + 'builtin_fandango', + 'builtin_flickmetrix', + 'builtin_google', + 'builtin_googleplay', + 'builtin_hulu', + 'builtin_imdb', + 'builtin_justwatch', + 'builtin_letterboxd', + 'builtin_metacritic', + 'builtin_moviemeter', + 'builtin_movieo', + 'builtin_netflix', + 'builtin_plex', + 'builtin_rottentomatoes', + 'builtin_shanaproject', + 'builtin_showrss', + 'builtin_tmdb', + 'builtin_tvmaze', + 'builtin_tvdb', + 'builtin_trakt', + 'builtin_vrv', + 'builtin_verizon', + 'builtin_vudu', + 'builtin_vumoo', + 'builtin_youtube', + 'builtin_itunes', + 'builtin_gostream', + 'builtin_tubi', + 'builtin_webtoplex', + // Plugins - End of file, before "let empty = ..." 'plugin_toloka', 'plugin_shanaproject', 'plugin_myanimelist', 'plugin_myshows', + 'plugin_indomovie', + 'plugin_redbox', + 'plugin_kitsu', ]; let PlexServers = [], @@ -79,11 +192,21 @@ let PlexServers = [], ClientID = null, manifest = chrome.runtime.getManifest(), terminal = // See #3 - NO_DEBUGGER? - { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }: - console; - -chrome.manifest = chrome.runtime.getManifest(); + (DEVELOPER_MODE = $('[data-option="DeveloperMode"]').checked)? + console: + { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }; + +chrome.manifest = manifest; + +// Not really important variables +// The "caught" IDs (already asked for in managers) +let __caught = { + imdb: [], + tmdb: [], + tvdb: [], +}, +// The theme classes + __theme = []; // create and/or queue a notification // state = "error" - red @@ -286,7 +409,7 @@ function getServers(plexToken) { if(/^\s*Invalid/i.test(data)) return null; - return data.Device.filter(device => device.provides === 'server'); + return data.Device.filter(device => !!~device.provides.split(',').indexOf('server')); }); } @@ -307,9 +430,9 @@ function tryPlexLogin(username, password) { } function performPlexLogin() { - let u = $$('#plex_username').value, - p = $$('#plex_password').value, - s = $$('#plex_test_status'); + let u = $('#plex_username').value, + p = $('#plex_password').value, + s = $('#plex_test_status'); s.title = ''; __servers__.innerHTML = ''; @@ -321,7 +444,7 @@ function performPlexLogin() { return s.title = 'Invalid login information', null; if(response.user) { - let t = $$('#plex_token'); + let t = $('#plex_token'); ClientID = t.value = t.textContent = response.user.authToken; @@ -331,8 +454,9 @@ function performPlexLogin() { } function performPlexTest(ServerID) { - let plexToken = $$('#plex_token').value, - teststatus = $$('#plex_test_status'); + let plexToken = $('#plex_token').value, + teststatus = $('#plex_test_status'), + inusestataus = [...$('[in-use="plex_token"]', true)]; __save__.disabled = true; __servers__.innerHTML = ''; @@ -341,9 +465,11 @@ function performPlexTest(ServerID) { getServers(plexToken).then(servers => { PlexServers = servers || []; teststatus.textContent = '!'; + inusestataus.map(e => e.setAttribute('in-use', false)); if(!servers) return teststatus.title = 'Failed to communicate with Plex', teststatus.classList = false; + inusestataus.map(e => e.setAttribute('in-use', true)); __save__.disabled = false; teststatus.classList = true; @@ -353,7 +479,7 @@ function performPlexTest(ServerID) { source = server.sourceTitle; $option.value = server.clientIdentifier; - $option.textContent = `${ server.name } ${ source ? `(${ source })` : '' }`; + $option.textContent = `${ server.name }${ source ? ` \u2014 ${ source }` : '' }`; __servers__.appendChild($option); }); @@ -381,14 +507,22 @@ function getPlexConnections(server) { function getOptionValues() { let options = {}; + for(let key in __caught) + __caught[key] = __caught[key].filter(id => id).slice(0, 100); + + __theme = __theme.filter(v => v); + + $('[data-option="__caught"i]').value = JSON.stringify(__caught); + $('[data-option="__theme"i]').value = JSON.stringify(__theme); + __options__.forEach(option => { - let element = $$( + let element = $( `[data-option="${ option }"]` ); if(element) { if(element.type == 'checkbox') - options[option] = element.checked || element.getAttribute('checked') == "true"; + options[option] = element.checked || element.getAttribute('save') == "true"; else options[option] = element.value; } @@ -398,9 +532,9 @@ function getOptionValues() { } function performOmbiLogin() { - let l = $$('#ombi_url').value, - a = $$('#ombi_api').value, - s = $$('#plex_test_status'), + let l = $('#ombi_url').value, + a = $('#ombi_api').value, + s = $('#plex_test_status'), e = ($0, $1, $$, $_) => ($1 + (/\\/.test($_)? '\\': '/')); l = l @@ -419,9 +553,9 @@ function performOmbiLogin() { /* Get Plex's details first. If it's disabled, or non-existent, then exit */ /* Swagger API says "enable", but we'll go with "enabled" */ if(json && (json.enable || json.enabled)) { - let t = $$('#plex_token'), - s = $$('#plex_servers'), - u = $$('[data-option="UseOmbi"]'); + let t = $('#plex_token'), + u = $('[data-option="UseOmbi"]'), + s = __servers__; json = (json && json.servers.length? json.servers[0]: {}); @@ -439,8 +573,8 @@ function performOmbiLogin() { /* Now we can fill in the other details */ if(u.checked) { // Ombi - let L = $$('[data-option="ombiURLRoot"]'), - A = $$('[data-option="ombiToken"]'); + let L = $('[data-option="ombiURLRoot"]'), + A = $('[data-option="ombiToken"]'); L.value = L.textContent = l; A.value = A.textContent = a; @@ -453,8 +587,8 @@ function performOmbiLogin() { .then( json => { if(!json || (!json.enabled && !json.enable)) return; - let k = $$('[data-option="couchpotatoToken"]'), - K = $$('[data-option="couchpotatoURLRoot"]'); + let k = $('[data-option="couchpotatoToken"]'), + K = $('[data-option="couchpotatoURLRoot"]'); k.value = k.textContent = json.apiKey; K.value = K.textContent = json.ip.replace(/(?:[^\/]+\/\/)?([^\/]+)\/?/, `http${ json.ssl? 's': '' }://$1:${ json.port }/`); @@ -469,10 +603,10 @@ function performOmbiLogin() { .then( json => { if(!json || (!json.enabled && !json.enable)) return; - let k = $$('[data-option="radarrToken"]'), - K = $$('[data-option="radarrURLRoot"]'), - q = $$('[data-option="radarrQualityProfileId"]'), - Q = $$('[data-option="radarrStoragePath"]'), + let k = $('[data-option="radarrToken"]'), + K = $('[data-option="radarrURLRoot"]'), + q = $('[data-option="radarrQualityProfileId"]'), + Q = $('[data-option="radarrStoragePath"]'), _q, _Q; k.value = k.textContent = json.apiKey; @@ -493,10 +627,10 @@ function performOmbiLogin() { .then( json => { if(!json || (!json.enabled && !json.enable)) return; - let k = $$('[data-option="sonarrToken"]'), - K = $$('[data-option="sonarrURLRoot"]'), - q = $$('[data-option="sonarrQualityProfileId"]'), - Q = $$('[data-option="sonarrStoragePath"]'), + let k = $('[data-option="sonarrToken"]'), + K = $('[data-option="sonarrURLRoot"]'), + q = $('[data-option="sonarrQualityProfileId"]'), + Q = $('[data-option="sonarrStoragePath"]'), _q, _Q; k.value = k.textContent = json.apiKey; @@ -523,15 +657,34 @@ function performOmbiLogin() { function performOmbiTest(refreshing = false) { let options = getOptionValues(), - teststatus = $$('#ombi_test_status'), - path = $$('[data-option="ombiURLRoot"]'), + teststatus = $('#ombi_test_status'), + path = $('[data-option="ombiURLRoot"]'), url, - headers = { headers: { apikey: options.ombiToken, accept: 'text/html' } }; + headers = { headers: { apikey: options.ombiToken, accept: 'text/html' } }, + enabled = $('#using-ombi'); teststatus.textContent = '?'; options.ombiURLRoot = url = path.value = options.ombiURLRoot.replace(/^(\:\d+)/, 'localhost$1').replace(/^(?!^http(s)?:)/, 'http$1://').replace(/\/+$/, ''); - let Get = () => + let Get = () => { + fetch(`${ url }/api/v1/Request/movie`) + .then(r => r.json()) + .thne(json => { + json.map(item => { + __caught.imdb.push(item.imdbId); + __caught.tmdb.push(item.theMovieDbId); + }); + }); + + fetch(`${ url }/api/v1/Request/tv`) + .then(r => r.json()) + .thne(json => { + json.map(item => { + __caught.imdb.push(item.imdbId); + __caught.tvdb.push(item.tvDbId); + }); + }); + fetch(`${ url }/api/v1/Status`, headers) .then( response => response.text() ) .then( status => { @@ -539,15 +692,18 @@ function performOmbiTest(refreshing = false) { if ((status = +status) >= 200 && status < 400) { teststatus.textContent = '!'; - teststatus.classList = 'true'; + enabled.checked = teststatus.classList = true; + enabled.parentElement.removeAttribute('disabled'); } else { teststatus.textContent = '!'; - teststatus.classList = 'false'; + enabled.checked = teststatus.classList = false; + enabled.parentElement.setAttribute('disabled'); throw new Error(`Ombi error [${ status }]`); } } ) .catch( error => { new Notification('error', error) } ); + } if(refreshing) Get(); @@ -582,23 +738,31 @@ function getWatcher(options, api = "getconfig") { function performWatcherTest(QualityProfileID = 'Default', refreshing = false) { let options = getOptionValues(), - teststatus = $$('#watcher_test_status'), - path = $$('[data-option="watcherURLRoot"]'), + teststatus = $('#watcher_test_status'), + path = $('[data-option="watcherURLRoot"]'), storagepath = __watcher_storagePath__, quality = __watcher_qualityProfile__, - url; + url, + enabled = $('#using-watcher'); quality.innerHTML = ''; teststatus.textContent = '?'; storagepath.value = '[Empty]'; options.watcherURLRoot = url = path.value = options.watcherURLRoot.replace(/^(\:\d+)/, 'localhost$1').replace(/^(?!^http(s)?:)/, 'http$1://').replace(/\/+$/, ''); - let Get = () => - getWatcher(options, 'getconfig').then(config => { - if(!config || !config.config) return new Notification('error', 'Failed to get Watcher configuration'); + let Get = () => { + getWatcher(options, 'liststatus').then(list => { + list.map(item => { + __caught.imdb.push(item.movies.imdbid); + __caught.tmdb.push(item.movies.tmdbid); + }); + }); + + getWatcher(options, 'getconfig').then(configuration => { + if(!configuration || !configuration.response) return new Notification('error', 'Failed to get Watcher configuration'); - let names = config.config.Quality.Profiles, - path = config.config.Postprocessing.moverpath, + let names = configuration.config.Quality.Profiles, + path = configuration.config.Postprocessing.moverpath, syntax = path.replace(/\/([\w\s\/\\\{\}]+)$/, '$1'), profiles = []; @@ -611,25 +775,34 @@ function performWatcherTest(QualityProfileID = 'Default', refreshing = false) { }); teststatus.textContent = '!'; - teststatus.classList = !!profiles.length; + teststatus.classList = enabled.checked = !!profiles.length; if(!profiles.length) - teststatus.title = 'Failed to communicate with Watcher'; + return teststatus.title = 'Failed to communicate with Watcher'; + enabled.parentElement.removeAttribute('disabled'); + let qualities = []; profiles.forEach(profile => { let option = document.createElement('option'); + let { id, name } = profile; - option.value = profile.id; - option.textContent = profile.name; + option.value = id; + option.textContent = name; + qualities.push({ id, name }); quality.appendChild(option); }); + $('[data-option="watcherQualities"i]').value = JSON.stringify(qualities); + // Because the was reset, the original value is lost. if(QualityProfileID) - quality.value = QualityProfileID; + $('[data-option="__radarrQuality"i]').value = quality.value = QualityProfileID; }); + let StoragePaths = []; getRadarr(options, 'rootfolder').then(storagepaths => { storagepaths.forEach(path => { let option = document.createElement('option'); - option.value = option.textContent = path.path; + StoragePaths.push((option.value = option.textContent = path.path).replace(/\\/g, '/')); storagepath.appendChild(option); }); + $('[data-option="radarrStoragePaths"i]').value = JSON.stringify(storagepaths); + // Because the was reset, the original value is lost. if(QualityProfileID) - quality.value = QualityProfileID; + $('[data-option="__sonarrQuality"i]').value = quality.value = QualityProfileID; }); + let StoragePaths = []; getSonarr(options, 'rootfolder').then(storagepaths => { storagepaths.forEach(path => { let option = document.createElement('option'); - option.value = option.textContent = path.path; + StoragePaths.push((option.value = option.textContent = path.path).replace(/\\/g, '/')); storagepath.appendChild(option); }); + $('[data-option="sonarrStoragePaths"i]').value = JSON.stringify(storagepaths); + // Because the was reset, the original value is lost. + if(QualityProfileID) + $('[data-option="__medusaQuality"i]').value = quality.value = QualityProfileID; + }); + + let StoragePaths = []; + getMedusa(options, 'config').then(configuration => { + let storagepaths = configuration.main.rootDirs.filter(d => d.length > 1); + + if(storagepaths.length < 1) return new Notification('error', 'Medusa has no usable storage paths'); + + storagepaths.forEach(path => { + let option = document.createElement('option'); + + StoragePaths.push((option.value = option.textContent = path).replace(/\\/g, '/').replace(/\/+$/, '')); + storagepath.appendChild(option); + }); + + $('[data-option="medusaStoragePaths"i]').value = JSON.stringify(storagepaths.map(path => ({ path, id: path }))); + + // Because the was reset, the original value is lost. + if(QualityProfileID) + $('[data-option="__sickBeardQuality"i]').value = quality.value = QualityProfileID; + }); + + let StoragePaths = []; + getSickBeard(options, 'sb.getrootdirs').then(configuration => { + let storagepaths = configuration.data.filter(d => +d.valid > 0); + + if(storagepaths.length < 1) return new Notification('error', 'Sick Beard has no usable storage paths'); + + storagepaths = storagepaths.map(path => { + let option = document.createElement('option'); + + StoragePaths.push((path = option.value = option.textContent = path.location).replace(/\\/g, '/').replace(/\/+$/, '')); + storagepath.appendChild(option); + + return path; + }); + + $('[data-option="sickBeardStoragePaths"i]').value = JSON.stringify(storagepaths.map((path, index, array) => ({ path, id: index }))); + + // Because the + + +
+ Run on ${ title } +
+ +
+`; + } + } else { + let title = builtin_array[index], + name = 'builtin_' + title.toLowerCase().replace(/\s+/g, ''), + url = new URL(builtins[title]), + js = name.replace(/^builtin_/i, ''), + o = url.origin, + r = url.host.replace(/^(ww\w+\.)/, ''); + + builtin_sites[r] = o; + + builtinElement.innerHTML += +` +

${ title }

+
+ + +
+
+ Run on ${ title } +
+ +
+`; + } + + // save(`permission:${ r }`, true); + // save(`script:${ r }`, js); + // save(`builtin:${ r }`, true); +} + +save('builtin.sites', builtin_sites); + +$('[id^="builtin_"]', true) + .forEach(element => element.addEventListener('click', event => { + let self = event.target, + bid = self.getAttribute('bid'), + js = self.getAttribute('js'); + + if(self.checked) { + terminal.log(bid, builtin_sites[bid]); + requestURLPermissions(builtin_sites[bid].replace(/https?:\/\/(ww\w+\.)?/i, '*://*.').replace(/\/?$/, '/*'), granted => { + save(`permission:${ bid }`, granted); + save(`script:${ bid }`, granted? js: null); + }); + } else { + save(`permission:${ bid }`, false); + save(`script:${ bid }`, null); + } + + save(`builtin:${ bid }`, true); + }) +); + // Plugins and their links let plugins = { + 'Indomovie': ['https://indomovietv.club/', 'https://indomovietv.org/', 'https://indomovietv.net/'], 'Toloka': 'https://toloka.to/', 'Shana Project': 'https://www.shanaproject.com/', 'My Anime List': 'https://myanimelist.net/', 'My Shows': 'https://myshows.me/', + 'Redbox': 'https://www.redbox.com/', + 'Kitsu': 'https://kitsu.io/', // Dont' forget to add to the __options__ array! -}, array = [], sites = {}, pluginElement = $$('#plugins'); +}, plugin_array = [], plugin_sites = {}, pluginElement = $('#plugins'); for(let plugin in plugins) - array.push(plugin); -array = array.sort(); + plugin_array.push(plugin); +plugin_array = plugin_array.sort((a,b) => { let [x, y] = [a, b].map(v => v.toLowerCase()); return x < y? -1: 1; }); -for(let index = 0, length = array.length; pluginElement && index < length; index++) { - let title = array[index], - name = 'plugin_' + title.toLowerCase().replace(/\s+/g, ''), - url = new URL(plugins[title]), - js = name.replace(/^plugin_/i, ''), - o = url.origin, - r = url.host.replace(/^(ww\w+\.)/, ''); +for(let index = 0, length = plugin_array.length; pluginElement && index < length; index++) { + let plugin = plugins[plugin_array[index]]; - sites[r] = o; + if(plugin instanceof Array) { + for(let i = 0, l = plugin.length; i < l; i++) { + let title = plugin_array[index], + name = 'plugin_' + title.toLowerCase().replace(/\s+/g, ''), + url = new URL(plugin[i]), + js = name.replace(/^plugin_/i, ''), + o = url.origin, + r = url.host.replace(/^(ww\w+\.)/, ''); - pluginElement.innerHTML += + plugin_sites[r] = o; + + if(!i) + pluginElement.innerHTML += `

${ title }

@@ -1207,24 +1855,49 @@ for(let index = 0, length = array.length; pluginElement && index < length; index
- Allows the ${ title } plugin to run on ${ r } + Run on ${ title }

`; + } + } else { + let title = plugin_array[index], + name = 'plugin_' + title.toLowerCase().replace(/\s+/g, ''), + url = new URL(plugins[title]), + js = name.replace(/^plugin_/i, ''), + o = url.origin, + r = url.host.replace(/^(ww\w+\.)/, ''); + + plugin_sites[r] = o; + + pluginElement.innerHTML += +` +

${ title }

+
+ + +
+
+ Run on ${ title } +
+ +
+`; + } } -save('optional.sites', sites); +save('optional.sites', plugin_sites); -$$('[id^="plugin_"]', true) +$('[id^="plugin_"]', true) .forEach(element => element.addEventListener('click', event => { let self = event.target, pid = self.getAttribute('pid'), js = self.getAttribute('js'); if(self.checked) { - terminal.log(pid, sites[pid]) - requestURLPermissions(sites[pid].replace(/https?:\/\/(ww\w+\.)?/i, '*://*.').replace(/\/?$/, '/*'), granted => { + terminal.log(pid, plugin_sites[pid]); + requestURLPermissions(plugin_sites[pid].replace(/https?:\/\/(ww\w+\.)?/i, '*://*.').replace(/\/?$/, '/*'), granted => { save(`permission:${ pid }`, granted); save(`script:${ pid }`, granted? js: null); }); @@ -1232,6 +1905,8 @@ $$('[id^="plugin_"]', true) save(`permission:${ pid }`, false); save(`script:${ pid }`, null); } + + save(`builtin:${ pid }`, false); }) ); @@ -1240,13 +1915,13 @@ let empty = () => {}; document.addEventListener('DOMContentLoaded', restoreOptions); __save__.addEventListener('click', saveOptions); -$$('#plex_test') +$('#plex_test') .addEventListener('click', event => { - let pt = $$('#plex_token').value, - pu = $$('#plex_username').value, - pp = $$('#plex_password').value, - ou = $$('#ombi_url').value, - oa = $$('#ombi_api').value; + let pt = $('#plex_token').value, + pu = $('#plex_username').value, + pp = $('#plex_password').value, + ou = $('#ombi_url').value, + oa = $('#ombi_api').value; if(pt) performPlexTest(ServerID); @@ -1255,14 +1930,17 @@ $$('#plex_test') else if(ou && oa) performOmbiLogin(); }); -$$('#watcher_test', true).forEach(element => element.addEventListener('click', event => performWatcherTest())); -$$('#radarr_test', true).forEach(element => element.addEventListener('click', event => performRadarrTest())); -$$('#sonarr_test', true).forEach(element => element.addEventListener('click', event => performSonarrTest())); -$$('#ombi_test', true).forEach(element => element.addEventListener('click', event => performOmbiTest())); +$('#watcher_test', true).forEach(element => element.addEventListener('click', event => performWatcherTest())); +$('#radarr_test', true).forEach(element => element.addEventListener('click', event => performRadarrTest())); +$('#sonarr_test', true).forEach(element => element.addEventListener('click', event => performSonarrTest())); +$('#medusa_test', true).forEach(element => element.addEventListener('click', event => performMedusaTest())); +$('#ombi_test', true).forEach(element => element.addEventListener('click', event => performOmbiTest())); +$('#sickBeard_test', true).forEach(element => element.addEventListener('click', event => performSickBeardTest())); +$('#enable-couchpotato', true).forEach(element => element.addEventListener('click', event => enableCouchPotato())); /* INPUT | Get the JSON data */ -$$('#json_get').addEventListener('click', event => { - let data_container = $$('#json_data'), +$('#json_get').addEventListener('click', event => { + let data_container = $('#json_data'), data = atob((data_container.value || data_container.textContent).replace(/\s*\[.+\]\s*/, '')); if(!data) return new Notification('warning', 'The data cannot be blank, null, or undefined'); @@ -1277,8 +1955,8 @@ $$('#json_get').addEventListener('click', event => { }); /* OUTPUT | Set the JSON data */ -$$('#json_set').addEventListener('click', event => { - let data_container = $$('#json_data'), +$('#json_set').addEventListener('click', event => { + let data_container = $('#json_data'), data = getOptionValues(); data_container.value = data_container.textContent = `[${ (new Date).toString().slice(0, 24) }]${ btoa(JSON.stringify(data)) }`; @@ -1287,21 +1965,23 @@ $$('#json_set').addEventListener('click', event => { }); /* Erase Cached Searches */ -$$('#erase_cache').addEventListener('click', event => { +$('#erase_cache').addEventListener('click', event => { let options = JSON.stringify(getOptionValues()); - storage.clear(); - - restoreOptions(options); - new Notification('info', 'Clearing...', 3000); + storage.get(null, items => { + for(let item in items) + if(/^~\/cache\//i.test(item)) + storage.remove(item); + }); - setTimeout(saveOptions, 1000); // requires at least 1s for proper functioning + saveOptions(event); }); -$$('#version') - .innerHTML = `Version ${ chrome.manifest.version }`; -$$('[type="range"]', true) +$('#version') + .innerHTML = `Version ${ manifest.version }`; + +$('[type="range"]', true) .forEach((element, index, array) => { let sibling = element.nextElementSibling, symbol = element.getAttribute('symbol') || ''; @@ -1310,3 +1990,67 @@ $$('[type="range"]', true) element.oninput = (event, self) => (self = event.target).nextElementSibling.value = self.value + (self.getAttribute('symbol') || ''); }); + +$('.checkbox', true) + .forEach((element, index, array) => { + element.addEventListener('click', event => { + let self = event.target; + + while(!~[...self.classList].indexOf('checkbox') && self.parentElement && self.parentElement != self) + self = self.parentElement; + + if('disabled' in self.attributes) + return event.preventDefault(true); + /* Stop the event from further processing */ + }); + }); + +$('.test', true) + .forEach((element, index, array) => { + element.addEventListener('click', async event => { + event.preventDefault(true); + + let self = event.target; + + await saveOptions(event); + + open(self.href, self.target); + }); + }); + +$('[id^="theme:"i]', true) + .forEach((element, index, array) => { + element.addEventListener('click', async event => { + let self = event.target, + R = RegExp; + + let [a, b] = self.getAttribute('theme').split(/\s*:\s*/).filter(v => v), + value = `${self.id.replace(/^theme:/i, '')}-${b}`; + + if(/^(checkbox)$/i.test(self.type) && (self.checked + '') == a) + __theme.push(value); + else if(/^(text|input|button|\B)$/i.test(self.type) && R(self.value + '', 'i').test(a)) + __theme.push(value); + else + __theme = __theme.filter(v => v != value); + }); + }); + +// CORS exception: SecurityError +// MUST be { window }, never { top } +let { hash } = window.location; + +if(hash.length > 1) + switch(hash = hash.slice(1, hash.length).toLowerCase()) { + case 'save': + setTimeout(async() => { + await saveOptions(); + + window.postMessage({ type: 'INITIALIZE' }); + }, 1000); + break; + + default: + terminal.log(`Unknown event "${ hash }"`); + break; + }; diff --git a/src/options/test/blank.html b/src/options/test/blank.html new file mode 100644 index 0000000..4d9c7fd --- /dev/null +++ b/src/options/test/blank.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/options/test/index.html b/src/options/test/index.html new file mode 100644 index 0000000..4110c7e --- /dev/null +++ b/src/options/test/index.html @@ -0,0 +1,225 @@ + + + + Web to Plex | Testing + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + + + diff --git a/src/options/test/index.js b/src/options/test/index.js new file mode 100644 index 0000000..6512ca1 --- /dev/null +++ b/src/options/test/index.js @@ -0,0 +1,104 @@ +let $ = selector => document.querySelector(selector); + +function modify({ type, title, year, info }) { + let object = { title, year, ...info }; + + $('#example').setAttribute('type', type); + + $('#movie').removeAttribute('active'); + $('#tv-show').removeAttribute('active'); + + $(`#${ type }`).setAttribute('active', true); + + let element; + for(let key in object) + if(element = $(`#${ key }`)) + element.innerHTML = object[key] || ""; + + $('#body').setAttribute('style', `background-image: url("${ type }.poster.jpg")`); + $('#poster').setAttribute('src', `${ type }.poster.jpg`); + + let { imdb, tmdb, tvdb } = object, + ids = { imdb, tmdb, tvdb }; + + for(let id in ids) + $(`#${ id }`).setAttribute('href', ( + ids[id]? + id == 'imdb'? + `https://www.imdb.com/videoembed/${ object[id.toUpperCase()] }/`: + id == 'tmdb'? + `https://www.youtube.com/embed/${ object[id.toUpperCase()] }`: + `https://www.youtube.com/embed/${ object[id.toUpperCase()] }`: + 'blank.html' + )); +} + +function as(type) { + open('blank.html', 'frame'); + + return modify({ + "movie": { + 'type': "movie", + 'title': "Being John Malkovich", + 'year': 1999, + 'info': { + 'rating': "R", + 'runtime': "1:53", + 'genre': "Comedy, Drama, Fantasy", + 'release-date': "December 3, 1999 (USA)", + + 'imdb': "tt0120601", + 'IMDB': "vi3568894233", + 'tmdb': 492, + 'TMDB': "HdVvjvW_OEo", + 'tvdb': null, + 'TVDB': null, + }, + }, + + "tv-show": { + 'type': "tv-show", + 'title': "Love, Death & Robots", + 'year': 2019, + 'info': { + 'rating': "TV-MA", + 'runtime': "0:15", + 'genre': "Animation, Comedy, Fantasy, Horror, Science-Fiction", + 'release-date': "May 15, 2019 (USA)", + + 'imdb': "tt9561862", + 'IMDB': "vi1035648281", + 'tmdb': 86831, + 'TMDB': "wUFwunMKa4E", + 'tvdb': 357888, + 'TVDB': "wUFwunMKa4E", + }, + }, + }[type]); +} + +document.querySelectorAll('#movie, #tv-show').forEach(element => { + element.onmouseup = event => { + let self = event.target; + + as(self.id); + }; +}); + +document.querySelectorAll('[target="frame"]').forEach(element => { + let body = document.body, + frame = $('#frame'), + loading = $('#loading'); + + element.onmouseup = event => { + loading.setAttribute('loading', true); + loading.removeAttribute('style'); + } + + frame.onload = frame.onerror = event => { + loading.setAttribute('loading', false); + setTimeout(() => loading.setAttribute('style', 'display:none'), 500); + } +}); + +document.body.onload = event => /#(movie|tv-show)/i.test(location.hash)? as(`${ location.hash.replace('#', '') }`): as('movie'); diff --git a/src/options/test/loading.png b/src/options/test/loading.png new file mode 100644 index 0000000000000000000000000000000000000000..749aa93169449de1b43b516ad826b6314d1a9683 GIT binary patch literal 1804 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 C?^g8y literal 0 HcmV?d00001 diff --git a/src/options/test/noise.png b/src/options/test/noise.png new file mode 100644 index 0000000000000000000000000000000000000000..7eead13ca236b9b03a2a309f5dc232b27fc12f39 GIT binary patch literal 54413 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�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 literal 0 HcmV?d00001 diff --git a/src/options/test/tv-show.poster.jpg b/src/options/test/tv-show.poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc96009e7a2caca8a73eac49750891fc6a5c5541 GIT binary patch literal 56325 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 wpV$vOJ>kp!2kdN literal 0 HcmV?d00001 diff --git a/src/plugn.js b/src/plugn.js index 9841ee9..daa0f8b 100644 --- a/src/plugn.js +++ b/src/plugn.js @@ -1,47 +1,237 @@ -/* Plugn.js (Plugin) - Web to Plex */ -/* global config */ +/* plugn.js (Plugin) - Web to Plex */ +/* global chrome */ + +let PLUGN_DEVELOPER = false; + +let PLUGN_TERMINAL = + PLUGN_DEVELOPER? + console: + { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }; + +let LAST, LAST_JS, LAST_INSTANCE, LAST_ID, LAST_TYPE, FOUND = {}; + +let PLUGN_STORAGE = chrome.storage.sync || chrome.storage.local; +let PLUGN_CONFIGURATION; + +let URLRegExp = ` + .replace(/^\\*\\:/,'\\\\w{3,}:') + // *:// + .replace(/\\*\\./g,'(?:[^\\\\.]+\\\\.)?') + // *. + .replace(/\\.\\*/g,'(?:\\\\.[^\\\\/\\\\.]+)?') + // .* + .replace(/([\\/\\?\\&\\#])\\*/g,'$1[^$]*'),'i') + // /* OR ?* OR &* OR #* +`; + +function load(name, private) { + return JSON.parse((private && sessionStorage? sessionStorage: localStorage).getItem(btoa(name))); +} + +function save(name, data, private) { + return (private && sessionStorage? sessionStorage: localStorage).setItem(btoa(name), JSON.stringify(data)); +} + +async function Load(name = '') { + if(!name) + return /* invalid name */; + + name = '~/cache/' + (name.toLowerCase().replace(/\s+/g, '_')); + + return new Promise((resolve, reject) => { + function LOAD(DISK) { + let data = JSON.parse(DISK[name] || null); + + return resolve(data); + } + + PLUGN_STORAGE.get(null, DISK => { + if(chrome.runtime.lastError) + chrome.storage.local.get(null, LOAD); + else + LOAD(DISK); + }); + }); +} -let KILL_DEBUGGER = false; +async function Save(name = '', data) { + if(!name) + return /* invalid name */; -let logger = - KILL_DEBUGGER? - { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }: - console; + name = '~/cache/' + (name.toLowerCase().replace(/\s+/g, '_')); + data = JSON.stringify(data); -function load(name) { - return JSON.parse(localStorage.getItem(btoa(name))); + await PLUGN_STORAGE.set({[name]: data}, () => data); + + return name; } -function save(name, data) { - return localStorage.setItem(btoa(name), JSON.stringify(data)); +function GetConsent(name, builtin) { + return PLUGN_CONFIGURATION[`${ (builtin? 'builtin': 'plugin') }_${ name }`]; } -function GetConsent(origin) { - return load('permission:' + origin); +async function GetAuthorization(name) { + let authorized = await Load(`has/${ name }`), + permissions = await Load(`get/${ name }`), + Ausername, Apassword, Atoken, + Aapi, Aserver, Aurl, Astorage, + Acache; + + if(!permissions) + return {}; + + function WriteOff(permission) { + if(/^(username)/i.test(permission)) + Ausername = true; + else if(/^(password)/i.test(permission)) + Apassword = true; + else if(/^(token)/i.test(permission)) + Atoken = true; + else if(/^(api)/i.test(permission)) + Aapi = true; + else if(/^(server)/i.test(permission)) + Aserver = true; + else if(/^(url(?:root)?)/i.test(permission)) + Aurl = true; + else if(/^(storage)/i.test(permission)) + Astorage = true; + else if(/^cache/i.test(permission)) + Acache = true; + } + + if(permissions.constructor === Array) + for(let permission of permissions) + WriteOff(permission); + else if(permissions.constructor === Object) + for(let permission in permissions) + WriteOff(permission); + + return { authorized, Ausername, Apassword, Atoken, Aapi, Aserver, Aurl, Astorage }; } -let locationchangecallbacks = []; +// get the saved options +function getConfiguration() { + return new Promise((resolve, reject) => { + function handleConfiguration(options) { + if((!options.plexToken || !options.servers) && !options.IGNORE_PLEX) + return reject(new Error('Required options are missing')), + null; + + let server, o; + + if(!options.IGNORE_PLEX) { + // For now we support only one Plex server, but the options already + // allow multiple for easy migration in the future. + server = options.servers[0]; + o = { + server: { + ...server, + // Compatibility for users who have not updated their settings yet. + connections: server.connections || [{ uri: server.url }] + }, + ...options + }; + + options.plexURL = o.plexURL? + `${ o.plexURL }web#!/server/${ o.server.id }/`: + `https://app.plex.tv/web/app#!/server/${ o.server.id }/`; + } else { + o = options; + } + + if(o.couchpotatoBasicAuthUsername) + o.couchpotatoBasicAuth = { + username: o.couchpotatoBasicAuthUsername, + password: o.couchpotatoBasicAuthPassword + }; + + // TODO: stupid copy/pasta + if(o.watcherBasicAuthUsername) + o.watcherBasicAuth = { + username: o.watcherBasicAuthUsername, + password: o.watcherBasicAuthPassword + }; + + if(o.radarrBasicAuthUsername) + o.radarrBasicAuth = { + username: o.radarrBasicAuthUsername, + password: o.radarrBasicAuthPassword + }; + + if(o.sonarrBasicAuthUsername) + o.sonarrBasicAuth = { + username: o.sonarrBasicAuthUsername, + password: o.sonarrBasicAuthPassword + }; + + if(o.usingOmbi && o.ombiURLRoot && o.ombiToken) { + o.ombiURL = o.ombiURLRoot; + } else { + delete o.ombiURL; // prevent variable ghosting + } + + if(o.usingCouchPotato && o.couchpotatoURLRoot && o.couchpotatoToken) { + o.couchpotatoURL = `${ items.couchpotatoURLRoot }/api/${encodeURIComponent(o.couchpotatoToken)}`; + } else { + delete o.couchpotatoURL; // prevent variable ghosting + } + + if(o.usingWatcher && o.watcherURLRoot && o.watcherToken) { + o.watcherURL = o.watcherURLRoot; + } else { + delete o.watcherURL; // prevent variable ghosting + } + + if(o.usingRadarr && o.radarrURLRoot && o.radarrToken) { + o.radarrURL = o.radarrURLRoot; + } else { + delete o.radarrURL; // prevent variable ghosting + } + + if(o.usingSonarr && o.sonarrURLRoot && o.sonarrToken) { + o.sonarrURL = o.sonarrURLRoot; + } else { + delete o.sonarrURL; // prevent variable ghosting + } + + resolve(o); + } -function watchlocationchange(subject) { - watchlocationchange[subject] = watchlocationchange[subject] || location[subject]; + PLUGN_STORAGE.get(null, options => { + if(chrome.runtime.lastError) + chrome.storage.local.get(null, handleOptions); + else + handleConfiguration(options); + }); + }); +} - if (watchlocationchange[subject] != location[subject]) { - watchlocationchange[subject] = location[subject]; +// self explanatory, returns an object; sets the configuration variable +function parseConfiguration() { + return getConfiguration().then(options => { + PLUGN_CONFIGURATION = options; - for(let index = 0, length = locationchangecallbacks.length, callback; index < length; index++) { - callback = locationchangecallbacks[index]; + if((PLUGN_DEVELOPER = options.DeveloperMode) && !parseConfiguration.gotConfig) { + parseConfiguration.gotConfig = true; + PLUGN_TERMINAL = + PLUGN_DEVELOPER? + console: + { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }; - if(callback && typeof callback == 'function') - callback(new Event('locationchange', { bubbles: true })); + PLUGN_TERMINAL.warn(`PLUGN_DEVELOPER: ${PLUGN_DEVELOPER}`); } - } + + return options; + }, error => { throw error }); } -Object.defineProperty(window, 'onlocationchange', { - set: callback => locationchangecallbacks.push(callback) +chrome.storage.onChanged.addListener(async(changes, namespace) => { + await parseConfiguration(); }); -setInterval(() => watchlocationchange('pathname'), 1000); +(async() => { + await parseConfiguration(); +})(); function RandomName(length = 16, symbol = '') { let values = []; @@ -51,20 +241,123 @@ function RandomName(length = 16, symbol = '') { return values.join(symbol).replace(/^[^a-z]+/i, ''); }; -let running = [], instance = RandomName(), TAB; +function prepare(code, alias, type) { + + let DATE = (new Date), + YEAR = DATE.getFullYear(), + MONT = DATE.getMonth(), + DAY = DATE.getDate(); + + return code + .replace(/\/\/+\s*"([^\"\n\f\r\v]+?)"\s*requires?\:?\s*(.+)([^]+)/i, ($0, $1, $2, $3, $$, $_) => +`let DATE = (new Date), + YEAR = ${YEAR}, + MONT = ${MONT}, + DAY = ${DAY}; +${ $3 } +;(async() => await Require("${ $2 }", "${ alias }", "${ $1 }"))();` -let tabchange = tabs => { - let tab = tabs[0]; + ) + ; +} + +let handle = async(results, tabID, instance, script, type) => { + let InstanceWarning = `[${ type.toUpperCase() }:${ script }] Instance failed to execute @${ tabID }#${ instance }`, + InstanceType = type; + + results = await results; + + if((!results || !results[0] || !instance) && !FOUND[instance]) + try { + instance = RandomName(); + tabchange([ TAB ]); + return; + } catch(error) { + return PLUGN_TERMINAL.warn(InstanceWarning); + } + + let data = await results[0]; + + if(typeof data == 'number') { + if(handle.timeout) + return /* already running */; + if(data < 0) + return chrome.tabs.sendMessage(tabID, { data, instance, [InstanceType.toLowerCase()]: script, instance_type: InstanceType, type: 'NO_RENDER' }) + /* stop execution and timeouts/intervals */; + + return handle.timeout = setTimeout(() => { let { request, sender, callback } = (processMessage.properties || {}); handle.timeout = null; processMessage(request, sender, callback) }, data); + } else if(typeof data == 'string') { + let R = RegExp; + + if(/^<([^<>]+)>$/.test(data)) + return PLUGN_TERMINAL.warn(`The instance requires the "${ R.$1 }" permission: ${ instance }`); + + data.replace(/^([^]+?)\s*\((\d{4})\):([\w\-]+)$/); + + let title = R.$1, + year = R.$2, + type = R.$3; - if(!tab) return; + data = { type, title, year }; + } + + if(typeof data == 'number') + return setTimeout(() => { let { request, sender, callback } = (processMessage.properties || {}); processMessage(request, sender, callback) }, data); + if(typeof data != 'object') + return /* setTimeout */; + + try { + if(data instanceof Array) { + data = data.filter(d => d); + + if(data.length > 1) { + chrome.tabs.sendMessage(tabID, { data, instance, [InstanceType.toLowerCase()]: script, instance_type: InstanceType, type: 'POPULATE' }); + return /* done */; + } + + /* the array is too small to parse, set it as a single item */ + data = data[0]; + } + + let { type, title, year } = data; + + title = title + .replace(/[\u2010-\u2015]/g, '-') // fancy hyphen + .replace(/[\u201a\u275f]/g, ',') // fancy comma + .replace(/[\u2018\u2019\u201b\u275b\u275c]/g, "'") // fancy apostrophe + .replace(/[\u201c-\u201f\u275d\u275e]/g, '"'); // fancy quotation marks + year = +year; + + data = { ...data, type, title, year }; + + chrome.tabs.insertCSS(tabID, { file: 'sites/common.css' }); + chrome.tabs.sendMessage(tabID, { data, instance, [InstanceType.toLowerCase()]: script, instance_type: InstanceType, type: 'POPULATE' }); + } catch(error) { + throw new Error(InstanceWarning + ' - ' + String(error)); + } +}; + +let running = [], instance = RandomName(), TAB, cache = {}; + +/* Handle script/plugin events */ +let tabchange = async tabs => { + let tab = tabs[0]; + + if(!tab || FOUND[instance]) return; TAB = tab; let id = tab.id, url = tab.url, - can, org, ali, js; - - if(!url || /^chrome/i.test(url) || (!!~running.indexOf(id) && !!~running.indexOf(instance))) + org, ali, js, + type, cached, + allowed; + + if( + !url + || /^(?:chrome|debugger|view-source)/i.test(url) + // || (!!~running.indexOf(id) && !!~running.indexOf(instance)) + ) return /* Stop if: a) There isn't a url @@ -72,58 +365,369 @@ let tabchange = tabs => { c) The tab AND instance are accounted for */; - url = new URL(url); - org = url.origin; - ali = url.host.replace(/^(ww\w+\.|\w{2}\.)/i, ''); - can = GetConsent(ali); - js = load(`script:${ ali }`); + url = new URL(url); + org = url.origin; + ali = url.host.replace(/^(ww\w+\.|\w{2}\.)/i, ''); + type = (load(`builtin:${ ali }`) + '') == 'true'? 'script': 'plugin'; + js = load(`${ type }:${ ali }`); + code = cache[ali]; + allowed = await GetConsent(ali, type == 'script'); + + if(!allowed || !js) return; + + let { authorized, ...A } = await GetAuthorization(js); - if(!can || !js) return; + if(code) { + chrome.tabs.executeScript(id, { file: 'helpers.js' }, () => { + // Sorry, but the instance needs to be callable multiple times + chrome.tabs.executeScript(id, { code }, results => handle(results, id, instance, js, type)); + }); + + return setTimeout(() => cache = {}, 1e6); + } - let name = (KILL_DEBUGGER? instance: `top.${instance }`); // makes debugging easier + let name = (!PLUGN_DEVELOPER? instance: `top.${ instance }`), // makes debugging easier + topmost = !/^top\./.test(name); - fetch(`https://ephellon.github.io/web.to.plex/plugins/${ js }.js`, { mode: 'cors' }) + let file = (PLUGN_DEVELOPER)? + (type === 'script')? + chrome.runtime.getURL(`cloud/${ js }.js`): + chrome.runtime.getURL(`cloud/plugin.${ js }.js`): + `https://ephellon.github.io/web.to.plex/${ type }s/${ js }.js`; + + await fetch(file, { mode: 'cors' }) .then(response => response.text()) - .then(code => { - chrome.tabs.executeScript(id, { file: 'helpers.js' }, () => { + .then(async code => { + await chrome.tabs.executeScript(id, { file: 'helpers.js' }, async() => { // Sorry, but the instance needs to be callable multiple times - chrome.tabs.executeScript(id, { code: `${ name } = (${ name } || (()=>{'use strict';\n${ code }\n;return RegExp(plugin.url.replace(/\\|.*?(\\)|$)/g, '').replace(/^\\*\\:/, '\\\\w{3,}:').replace(/\\*\\./g, '([^\\\\.]+\\\\.)?'), 'i').test("${ url.href }")?plugin.init():console.warn("The domain '${ org }' ('${ url.href }') does not match the domain pattern '"+plugin.url+"'")\n})()); ${ name }` }, results => handle(results, id, instance, js)) + await chrome.tabs.executeScript(id, { code: + (LAST = cache[ali] = +`/* ${ type }* (${ (!PLUGN_DEVELOPER? 'on':'off') }line) - "${ url.href }" */ +${ topmost? 'var ': '' }${ name } = (${ name } || (${ name }$ = $ => { +'use strict'; + +/* Required permissions */ +if(${ allowed } === false) + return ''; +if(${ authorized } === false) + return ''; +${ + (() => { + let o = []; + + for(let a in A) + o.push( +`if(${ A[a] } === false) + return '<${ a.slice(1) }>'; +` + ); + + return o.join(''); + })() +} +/* Start Injected */ +${ prepare(code, js, type) } +/* End Injected */ + +let InjectedReadyState; + +top.addEventListener('popstate', ${ type }.init); +top.addEventListener('pushstate-changed', ${ type }.init); + +return (${ type }.RegExp = RegExp( + ${ type }.url +${ URLRegExp } +).test +(location.href)? +/* URL matches pattern */ + ${ type }.ready? + /* Injected file has the "ready" property */ + (InjectedReadyState = + ${ type }.ready.constructor.name == 'AsyncFunction'? + /* "ready" is an async function */ + ${ type }.ready(): + /* "ready" is a sync (normal) function */ + ${ type }.ready() + )? + /* Injected file is ready */ + ${ type }.init( InjectedReadyState ): + /* Injected file isn't ready */ + (${ type }.timeout || 1000): + /* Injected file doesn't have the "ready" property */ + ${ type }.init(): +/* URL doesn't match pattern */ +(console.warn("The domain '${ org }' (" + location.href + ") does not match the domain pattern '" + ${ type }.url + "' (" + ${ type }.RegExp + ")"), -1); +})(document.queryBy)); + +console.log('[${ name.replace(/^(top\.)?(\w{7}).*$/i, '$1$2') }]', ${ name }); + +top.onlocationchange = (event) => chrome.runtime.sendMessage({ type: '$INIT$', options: { ${ type }: '${ js }' } }); + +;${ name };` + ) }, results => handle(results, LAST_ID = id, LAST_INSTANCE = instance, LAST_JS = js, LAST_TYPE = type)) }) }) .then(() => running.push(id, instance)) .catch(error => { throw error }); }; -window.onlocationchange = event => { - instance = RandomName(); - tabchange([TAB]); -}; +// listen for message event +let processMessage; -let handle = (results, tabID, instance, plugin) => { - let InstanceWarning = `Instance @${ tabID } [${ instance }] failed to execute`; +chrome.runtime.onMessage.addListener(processMessage = async(request, sender, callback) => { + let { options } = request, + tab = TAB || {}, + { id, url, href } = tab, + org; - if(!results || !results[0] || !instance) - return logger.warn(InstanceWarning); + processMessage.properties = { request, sender, callback }; - let data = results[0]; + if( + !url + || /^(?:chrome|debugger|view-source)/i.test(url) + // || (!!~running.indexOf(id) && !!~running.indexOf(instance)) + ) + return /* + Stop if: + a) There isn't a url + b) The url is a chrome url + c) The tab AND instance are accounted for + */; - try { - chrome.tabs.executeScript(tabID, { file: 'utils.js' }, () => { - chrome.tabs.insertCSS(tabID, { file: 'sites/common.css' }); - chrome.tabs.sendMessage(tabID, { data, plugin, instance, type: 'POPULATE' }); - }); - } catch(error) { - throw new Error(InstanceWarning + ': ' + String(error)); + url = new URL(url); + org = url.origin; + + let name = (!PLUGN_DEVELOPER? instance: `top.${ instance }`), // makes debugging easier + topmost = !/^top\./.test(name); + + if(request && request.options) { + let { type } = request, + { plugin, script } = options, + _type = type.toLowerCase(), + allowed; + + type = type.toUpperCase(); + + let file = (PLUGN_DEVELOPER)? + (_type === 'script')? + chrome.runtime.getURL(`cloud/${ script }.js`): + chrome.runtime.getURL(`cloud/plugin.${ plugin }.js`): + `https://ephellon.github.io/web.to.plex/${ _type }s/${ options[_type] }.js`; + + let { authorized, ...A } = await GetAuthorization(options[_type]); + + switch(type) { + case 'PLUGIN': + allowed = await GetConsent(plugin, false); + + await fetch(file, { mode: 'cors' }) + .then(response => response.text()) + .then(async code => { + await chrome.tabs.executeScript(id, { file: 'helpers.js' }, async() => { + // Sorry, but the instance needs to be callable multiple times + await chrome.tabs.executeScript(id, { code: + (LAST = cache[plugin] = +`/* plugin (${ (!PLUGN_DEVELOPER? 'on':'off') }line) - "${ url.href }" */ +${ topmost? 'var ': '' }${ name } = (${ name } || (${ name }$ = $ => { +'use strict'; + +/* Required permissions */ +if(${ allowed } === false) + return ''; +if(${ authorized } === false) + return ''; +${ + (() => { + let o = []; + + for(let a in A) + o.push( +`if(${ A[a] } === false) + return '<${ a.slice(1) }>'; +` + ); + + return o.join(''); + })() +} +/* Start Injected (Plugin) */ +${ prepare(code, plugin, _type) } +/* End Injected */ + +let PluginReadyState; + +top.addEventListener('popstate', plugin.init); +top.addEventListener('pushstate-changed', plugin.init); + +return (plugin.RegExp = RegExp( + plugin.url +${ URLRegExp } +).test +(location.href)? +/* URL matches pattern */ + plugin.ready? + /* Plugin has the "ready" property */ + (PluginReadyState = + plugin.ready.constructor.name == 'AsyncFunction'? + /* "ready" is an async function */ + plugin.ready(): + /* "ready" is a sync (normal) function */ + plugin.ready() + )? + /* Plugin is ready */ + plugin.init( PluginReadyState ): + /* Script isn't ready */ + (plugin.timeout || 1000): + /* Plugin doesn't have the "ready" property */ + plugin.init(): +/* URL doesn't match pattern */ +(console.warn("The domain '${ org }' (" + location.href + ") does not match the domain pattern '" + plugin.url + "' (" + plugin.RegExp + ")"), -1); +})(document.queryBy)); + +console.log('[${ name.replace(/^(top\.)?(\w{7}).*$/i, '$1$2') }]', ${ name }); + +top.onlocationchange = (event) => chrome.runtime.sendMessage({ type: '$INIT$', options: { plugin: '${ plugin }' } }); + +;${ name };` +) }, results => handle(results, LAST_ID = id, LAST_INSTANCE = instance, LAST_JS = plugin, LAST_TYPE = type)) + }) + }) + .then(() => running.push(id, instance)) + .catch(error => { throw error }); + break; + + case 'SCRIPT': + allowed = await GetConsent(script, true); + + await fetch(file, { mode: 'cors' }) + .then(response => response.text()) + .then(async code => { + await chrome.tabs.executeScript(id, { file: 'helpers.js' }, async() => { + // Sorry, but the instance needs to be callable multiple times + await chrome.tabs.executeScript(id, { code: + (LAST = cache[script] = +`/* script (${ (!PLUGN_DEVELOPER? 'on':'off') }line) - "${ url.href }" */ +${ topmost? 'var ': '' }${ name } = (${ name } || (${ name }$ = $ => { +'use strict'; + +/* Required permissions */ +if(${ allowed } === false) + return ''; +if(${ authorized } === false) + return ''; +${ + (() => { + let o = []; + + for(let a in A) + o.push( +`if(${ A[a] } === false) + return '<${ a.slice(1) }>'; +` + ); + + return o.join(''); + })() +} +/* Start Injected (Script) */ +${ prepare(code, script, _type) } +/* End Injected */ + +let ScriptReadyState; + +top.addEventListener('popstate', script.init); +top.addEventListener('pushstate-changed', script.init); + +return (script.RegExp = RegExp( + script.url +${ URLRegExp } +).test +(location.href)? +/* URL matches pattern */ + script.ready? + /* Script has the "ready" property */ + (ScriptReadyState = + script.ready.constructor.name == 'AsyncFunction'? + /* "ready" is an async function */ + script.ready(): + /* "ready" is a sync (normal) function */ + script.ready() + )? + /* Script is ready */ + script.init( ScriptReadyState ): + /* Script isn't ready */ + (script.timeout || 1000): + /* Script doesn't have the "ready" property */ + script.init(): +/* URL doesn't match pattern */ +(console.warn("The domain '${ org }' (" + location.href + ") does not match the domain pattern '" + script.url + "' (" + script.RegExp + ")"), -1); +})(document.queryBy)); + +console.log('[${ name.replace(/^(top\.)?(\w{7}).*$/i, '$1$2') }]', ${ name }); + +top.onlocationchange = (event) => chrome.runtime.sendMessage({ type: '$INIT$', options: { script: '${ script }' } }); + +;${ name };` + ) }, results => handle(results, LAST_ID = id, LAST_INSTANCE = instance, LAST_JS = script, LAST_TYPE = type)) + }) + }) + .then(() => running.push(id, instance)) + .catch(error => { throw error }); + break; + + // Soft reset (button reset) + case '_INIT_': + chrome.tabs.executeScript(id, { code: LAST }, results => handle(results, LAST_ID, LAST_INSTANCE, LAST_JS, LAST_TYPE)); + break; + + // Hard reset (program reset) + case '$INIT$': + let t = type.toLowerCase(), + data = {}; + + chrome.tabs.sendMessage(tab.id, { data, instance, [t]: script, instance_type: t, type: 'INITIALIZE' }); + // chrome.tabs.getCurrent(tab => { + // instance = RandomName(); + // + // setTimeout(() => tabchange([ tab ]), 5000); + // }); + break; + + case 'FOUND': + FOUND[request.instance] = request.found; + break; + + case 'GRANT_PERMISSION': + await Save(`has/${ options[_type] }`, options.allowed); + await Save(`get/${ options[_type] }`, options.permissions); + break; + + default: + instance = RandomName(); + return false; + }; } -}; + + return true; +}); // this doesn't actually work... -//chrome.tabs.onActiveChanged.addListener(tabchange); +chrome.tabs.onActiveChanged.addListener(tabchange); // workaround for the above -setInterval(() => - chrome.tabs.query({ - active: true, - currentWindow: true, - }, tabchange) -, 1000); +chrome.tabs.onActivated.addListener(change => { + instance = RandomName(); + + chrome.tabs.get(change.tabId, tab => tabchange([ tab ])); +}); + +let refresh; + +chrome.tabs.onUpdated.addListener(refresh = (ID, change, tab) => { + instance = RandomName(); + + if(change.status == 'complete' && !tab.discarded) + tabchange([ tab ]); + else if(!tab.discarded) + setTimeout(() => refresh(ID, change, tab), 1000); +}); diff --git a/src/popup/index.html b/src/popup/index.html index f8adb7b..e645603 100644 --- a/src/popup/index.html +++ b/src/popup/index.html @@ -164,8 +164,8 @@ box-shadow: 0 10px 128px inset #6A8592; } - #gostream:hover { - box-shadow: 0 10px 128px inset #028CC9; + #vumoo:hover { + box-shadow: 0 10px 128px inset #DD1B2F; } #shana-project:hover { @@ -180,6 +180,30 @@ box-shadow: 0 10px 128px inset #7A314E; } + #justwatch:hover { + box-shadow: 0 10px 128px inset #0E202C; + } + + #moviemeter:hover { + box-shadow: 0 10px 128px inset #000000; + } + + #allocine:hover { + box-shadow: 0 10px 128px inset #222222; + } + + #gostream:hover { + box-shadow: 0 10px 128px inset #028CC9; + } + + #tubi:hover { + box-shadow: 0 10px 128px inset #26262D; + } + + #webtoplex:hover { + box-shadow: 0 10px 128px inset #CC7B19; + } + #local-plex:hover { box-shadow: 0 10px 128px inset #F9BD03; } @@ -204,6 +228,14 @@ box-shadow: 0 10px 128px inset #E48F34; } + #local-medusa:hover { + box-shadow: 0 10px 128px inset #26B043; + } + + #local-sickBeard:hover { + box-shadow: 0 10px 128px inset #296737; + } + [save-file]:after, [cost-cash-low]:after, [cost-cash-med]:after, [cost-cash-hig]:after { content: "____"; color: transparent; @@ -229,7 +261,7 @@ float: right; } - [is-shy] label:after { + [is-shy] label:after, [is-dead] label:after { content: " \1f910"; float: right; } @@ -238,6 +270,11 @@ background: url("../img/48.png") no-repeat center; } + [not-safe] label:after { + content: " \1F527"; + float: right; + } + /* $1 - $10 */ [cost-cash-low]:after { background: url("../img/$48.png") no-repeat center; @@ -289,7 +326,7 @@ - + Verizon @@ -310,7 +347,7 @@ - + YouTube @@ -325,27 +362,33 @@ + + + Vumoo + + + fandango - + Amazon + + + IMDb - - - CouchPotato @@ -358,33 +401,27 @@ + + + The MovieDb - - - Letterboxd - + Hulu - - - Flickmetrix - - - @@ -394,42 +431,48 @@ + + + Flickmetrix + + + + + + JustWatch + + + + + + iTunes - + showRSS - - - Vudu + + + Movieo - - - GoStream - - - - - - TV Maze @@ -442,12 +485,48 @@ - + + + + iTunes + + + Allocine + + + + + + MovieMeter + + + + + + + + + GoStream + + + + + + Tubi + + + + + + Web to Plex + + + diff --git a/src/popup/index.js b/src/popup/index.js index ac75a63..faf74de 100644 --- a/src/popup/index.js +++ b/src/popup/index.js @@ -55,7 +55,9 @@ document.body.onload = function() { "disabled": "Not yet implemented", "is-shy": "Can only be accessed via: {*}", "is-slow": "Resource intensive (loads slowly)", + "is-dead": "Isn't meant to show the Web to Plex button", "local": "Opens a link to ^{*}", + "not-safe": "Updated irregularly, may drop support", "pop-ups": "Contains annoying/intrusive ads and/or pop-ups", "save-file": "Uses {*} before using your manager(s)", // $0.99 one time; $0.99 - $9.99/mon @@ -81,8 +83,10 @@ document.body.onload = function() { let elements = document.querySelectorAll(selectors.join(',')); - for(let element, index = 0, length = elements.length; index < length; index++) + for(let element, index = 0, length = elements.length; index < length; index++) { + let number = 1; for(let attribute in messages) if(attribute in (element = elements[index]).attributes) - element.title = `${ parse(messages[attribute], attribute, element) }. ${ element.title }`; + element.title += `\n${(number++)}) ${ parse(messages[attribute], attribute, element) }.`; + } } diff --git a/src/sites/__layout__.js b/src/sites/__layout__.js new file mode 100644 index 0000000..9831075 --- /dev/null +++ b/src/sites/__layout__.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: '< Page Alias >' }))(); diff --git a/src/sites/__test__.js b/src/sites/__test__.js new file mode 100644 index 0000000..68ee2d5 --- /dev/null +++ b/src/sites/__test__.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: '__test__' }))(); diff --git a/src/sites/flenix/index.css b/src/sites/allocine/index.css similarity index 100% rename from src/sites/flenix/index.css rename to src/sites/allocine/index.css diff --git a/src/sites/allocine/index.js b/src/sites/allocine/index.js new file mode 100644 index 0000000..850536c --- /dev/null +++ b/src/sites/allocine/index.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'allocine' }))(); diff --git a/src/sites/amazon/index.js b/src/sites/amazon/index.js index adc5d72..70796df 100644 --- a/src/sites/amazon/index.js +++ b/src/sites/amazon/index.js @@ -1,58 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isMovie() { - return !isShow(); -} - -function isShow() { - return document.querySelector('[data-automation-id*="seasons"], [class*="seasons"], [class*="episodes"], [class*="series"]'); -} - -function isPageReady() { - return document.querySelector('[data-automation-id="imdb-rating-badge"], #most-recent-reviews-content > *:first-child'); -} - -async function init() { - if (isPageReady()) - await initPlexThingy(isShow()? 'tv': 'movie'); - else - // This almost never happens, but sometimes the page is too slow so we need to wait a bit. - setTimeout(init, 1000); -} - -async function initPlexThingy(type) { - let button = renderPlexButton(), - R = RegExp; - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('[data-automation-id="title"], #aiv-content-title, .dv-node-dp-title'), - $year = document.querySelector('[data-automation-id="release-year-badge"], .release-year'), - $image = document.querySelector('.av-bgimg__div, div[style*="sgp-catalog-images"]'); - - if (!$title) - return modifyPlexButton( - button, - 'error', - 'Could not extract title from Amazon' - ), - null; - - let title = $title.textContent.replace(/(?:\(.+?\)|(\d+)|\d+\s+seasons?\s+(\d+))\s*$/gi, '').trim(), - year = $year? $year.textContent.trim(): R.$1 || R.$2 || YEAR, - image = getComputedStyle($image).backgroundImage; - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -if (isMovie() || isShow()) { - parseOptions().then(async() => await init()); -} +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'amazon' }))(); diff --git a/src/sites/common.css b/src/sites/common.css index e29cb44..3479a6c 100644 --- a/src/sites/common.css +++ b/src/sites/common.css @@ -116,8 +116,13 @@ background: #2A2AFF !important; } -/* Web to Plex warning notifications */ -.web-to-plex-notification.warning { +/* Web to Plex success notifications */ +.web-to-plex-notification.success { + background: #03BDF9 !important; +} + +/* Web to Plex error/warning notifications */ +.web-to-plex-notification.warning, .web-to-plex-notification.error { background: #FF2A2A !important; } @@ -218,7 +223,17 @@ max-width: 60% !important; } -.web-to-plex-prompt-option.mutable > *:last-child { +.web-to-plex-prompt-option.mutable > h2 { + background: #0000 !important; + color: inherit !important; + font-family: inherit !important; + font-size: initial !important; + text-align: inherit !important; + + margin: inherit !important; +} + +.web-to-plex-prompt-option.mutable > .remove { background: #ffffff40 !important; border-radius: 3px !important; transition: all 0.1s !important; @@ -228,18 +243,30 @@ float: right !important; margin-right: -9px !important; - margin-top: -9px !important; + margin-top: -42px !important; padding: 0 !important; } -.web-to-plex-prompt-option.mutable > *:last-child:hover { +.web-to-plex-prompt-option.mutable > .remove:hover { background: #ffffff4d !important; } -.web-to-plex-prompt-option.mutable > *:last-child:after { +.web-to-plex-prompt-option.mutable > .remove::after { content: '\00d7' !important; } +.web-to-plex-prompt-option.mutable > .quality { + width: 50% !important; +} + +.web-to-plex-prompt-option.mutable > .location { + width: 90% !important; +} + +.web-to-plex-prompt-option.mutable > .location:last-child:not(:first-child) { + margin-top: 5px !important; +} + .web-to-plex-prompt-footer { text-align: right !important; border-bottom-left-radius: 3px !important; @@ -300,8 +327,11 @@ left: 5px !important; padding: 10px !important; position: fixed !important; + right: unset !important; z-index: 999999 !important; + min-height: 0 !important; + min-width: 0 !important; height: 72px !important; width: 180px !important; @@ -313,7 +343,7 @@ display: initial !important; } -.web-to-plex-button.hide:not(:hover) { +.web-to-plex-button.hide:not(:hover), .web-to-plex-button.sleeper { opacity: 0.1; } @@ -363,14 +393,18 @@ outline: none !important; } -.web-to-plex-button.wtp--found::after, .web-to-plex-button.wtp--found::before { - background: #F9BD03 !important; -} - .web-to-plex-button.wtp--download::after, .web-to-plex-button.wtp--download::before { background: #265AF4 !important; } +.web-to-plex-button.wtp--queued::after, .web-to-plex-button.wtp--queued::before { + background: #568AF4 !important; +} + +.web-to-plex-button.wtp--found::after, .web-to-plex-button.wtp--found::before { + background: #F9BD03 !important; +} + .web-to-plex-button.wtp--error::after, .web-to-plex-button.wtp--error::before { background: #FF2A2A !important; } @@ -485,3 +519,104 @@ padding: 3px 6px !important; position: absolute !important; } + +/* bbodine @CodePen - https://codepen.io/bbodine1/pen/novBm */ +.checkbox { + width: 80px; + height: 26px; + background: #000; + margin: 15px 0; + position: relative; + border-radius: 50px; + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.2); +} + +span.checkbox { + display: inline-block; + + margin: 0; + vertical-align: text-bottom; +} + +.checkbox::after { + content: 'OFF'; + color: #666; + position: absolute; + right: 10px; + z-index: 0; + font: 12px/26px Arial, sans-serif; + font-weight: bold; + text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.15); +} + +.checkbox::before { + content: 'ON'; + color: #cc7b19; + position: absolute; + left: 10px; + z-index: 0; + font: 12px/26px Arial, sans-serif; + font-weight: bold; +} + +.checkbox[prompt-yes]::before { + content: attr(prompt-yes); + text-transform: uppercase; +} + +.checkbox[prompt-no]::after { + content: attr(prompt-no); + text-transform: uppercase; +} + +.checkbox[prompt-size="large"i]::before, .checkbox[prompt-size="large"i]::after { + font-size: 30px !important; +} + +.checkbox[prompt-size="medium"i]::before, .checkbox[prompt-size="medium"i]::after { + font-size: 21px !important; +} + +.checkbox[prompt-size="normal"i]::before, .checkbox[prompt-size="normal"i]::after { + font-size: 12px !important; +} + +.checkbox[prompt-size="small"i]::before, .checkbox[prompt-size="small"i]::after { + font-size: 6px !important; +} + +.checkbox[prompt="y/n"i]::before { + content: 'YES'; +} + +.checkbox[prompt="y/n"i]::after { + content: 'NO'; +} + +.checkbox label { + display: block; + width: 34px; + height: 20px; + cursor: pointer; + position: absolute; + top: 3px; + left: 3px; + z-index: 1; + background: #666; + border-radius: 50px; + transition: all 0.4s ease; + box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.3); +} + +.checkbox input[type=checkbox] { + visibility: hidden; +} + +.checkbox input[type=checkbox]:checked + label { + left: 43px; + background: #cc7b19; +} + +.checkbox[disabled] { + opacity: 0.25 !important; +} diff --git a/src/sites/common.js b/src/sites/common.js new file mode 100644 index 0000000..666ed58 --- /dev/null +++ b/src/sites/common.js @@ -0,0 +1,5 @@ +/* global Update(type:string, details:object) */ +if(init && typeof init == 'function') + /* Do nothing */; +else + (init = () => Update('PLUGIN', { instance_type: 'PLUGIN', plugin: location.hostname.replace(/(?:[\w\-]+\.)?([^\.]+)(?:\.[^\\\/]+)/, '$1') }))(); diff --git a/src/sites/couchpotato/index.js b/src/sites/couchpotato/index.js index 64a9de5..7ef46cf 100644 --- a/src/sites/couchpotato/index.js +++ b/src/sites/couchpotato/index.js @@ -1,52 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -function init() { - wait( - () => document.querySelector('.media-body .clearfix') && document.querySelector('.media-body .clearfix').children.length > 1, - () => initPlexThingy(isMovie()? 'movie': isShow()? 'show': null) - ); -} - -function isMovie() { - return /^\/movies?\//.test(window.location.pathname); -} - -function isShow() { - return /^\/shows?\//.test(window.location.pathname); -} - -function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button || !type) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('[itemprop="description"]'), - $date = $title.previousElementSibling, - $image = document.querySelector('img[src*="wp-content"]'); - - if (!$title || !$date) - return modifyPlexButton( - $button, - 'error', - 'Could not extract title or year from CouchPotato' - ); - - let title = $title.textContent.trim(), - year = $date.textContent.trim(), - image = ($image || {}).src, - IMDbID = getIMDbID(); - - findPlexMedia({ title, year, image, button, type, IMDbID }); -} - -function getIMDbID() { - let $link = document.querySelector( - '[href*="imdb.com/title/tt"]' - ); - if ($link) { - let link = $link.href.replace(/^.*imdb\.com\/title\//, ''); - return link.replace(/\/(?:maindetails\/?)?$/, ''); - } -} - -parseOptions().then(init); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'couchpotato' }))(); diff --git a/src/sites/fandango/index.js b/src/sites/fandango/index.js index 89e6444..366bb50 100644 --- a/src/sites/fandango/index.js +++ b/src/sites/fandango/index.js @@ -1,42 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isMovie() { - return /\/movie-overview\/?$/.test(window.location.pathname); -} - -async function initPlexThingy(type) { - let $parent = document.querySelector('.subnav ul'), - button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('.subnav__title'), - $year = document.querySelector('.movie-details__release-date'), - $image = document.querySelector('.movie-details__movie-img'); - - if (!$title || !$year) - return modifyPlexButton( - button, - 'error', - 'Could not extract title or year from Fandango' - ), - null; - - let title = $title.textContent.trim().split(/\n+/)[0].trim(), - year = $year.textContent.replace(/.*(\d{4}).*/, '$1').trim(), - image = ($image || {}).src; - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -if (isMovie()) { - parseOptions().then(async() => await initPlexThingy('movie')); -} +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'fandango' }))(); diff --git a/src/sites/flenix/index.js b/src/sites/flenix/index.js deleted file mode 100644 index 229a5f5..0000000 --- a/src/sites/flenix/index.js +++ /dev/null @@ -1,62 +0,0 @@ -/* global parseOptions, modifyPlexButton, findPlexMedia */ -function isMoviePage() { - // An example movie page: /movies/3030-the-1517-to-paris.html - return /\/(movies?|views?)\//.test(window.location.pathname); -} - -function isMoviePageReady() { - return !!document.querySelector('#videoplayer video').getAttribute('onplay') != ''; -} - -function init() { - if (isMoviePage()) - if (isMoviePageReady()) - initPlexThingy(); - else - // This almost never happens, but sometimes the page is too slow so we need to wait a bit. - setTimeout(init, 1000); -} - -parseOptions().then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - init(); -}); - -async function initPlexThingy() { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('#dle-content .about > h1'), - $date = document.querySelector('.features > .reset:nth-child(2) a'); - - if (!$title || !$date) - return modifyPlexButton( - button, - 'error', - 'Could not extract title or year from Flenix' - ), - null; - - let meta = { - method: 'POST', - headers: {'Content-Type': 'application/x-www-form-urlencoded'}, - mode: 'no-cors' - }; - - let title = $title.innerText.trim(), - year = $date.innerText, - type = 'movie'; - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ title, year, button, IMDbID, TMDbID, TVDbID, type, remote: '/engine/ajax/get.php', locale: 'flenix' }); -} diff --git a/src/sites/flickmetrix/index.js b/src/sites/flickmetrix/index.js index 1119254..4cbc2f3 100644 --- a/src/sites/flickmetrix/index.js +++ b/src/sites/flickmetrix/index.js @@ -1,106 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -function isMovie() { - return !!document.querySelector('#singleFilm') || /\bid=\d+\b/i.test(window.location.search); -} - -function isList() { - return !isMovie(); -} - -let START = +(new Date); - -function init() { - if(/\/(?=((?:watchlist|seen|favourites|trash)\b|$))/i.test(window.location.pathname)) - wait( - () => (!document.querySelector('#loadingOverlay > *')), - () => (isList()? initList: initPlexThingy)() - ); -} - -function initPlexThingy() { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $element = document.querySelector('#singleFilm'), - $title = $element.querySelector('.title'), - $date = $element.querySelector('.title + *'), - $image = $element.querySelector('img'); - - if (!$title || !$date) - return modifyPlexButton( - button, - 'error', - 'Could not extract title or year from Flickmetrix' - ); - - let title = $title.textContent.trim(), - year = $date.textContent.replace(/^\(|\)$/g, '').trim(), - image = ($image || {}).src, - IMDbID = getIMDbID($element); - - findPlexMedia({ title, year, button, type: 'movie', IMDbID }); -} - -function getIMDbID(element) { - let $link = element.querySelector( - '[href*="imdb.com/title/tt"]' - ); - if ($link) { - let link = $link.href.replace(/^.*imdb\.com\/title\//, ''); - return link.replace(/\/(?:maindetails\/?)?$/, ''); - } -} - -async function addInListItem(element) { - let $title = element.querySelector('.title'), - $date = element.querySelector('.title + *'), - $image = element.querySelector('img'); - - if (!$title) - return; - - let title = $title.textContent.trim(), - year = +$date.textContent.replace(/^\(|\)$/g, '').trim(), - image = $image.src, - type = 'movie', - IMDbID = getIMDbID(element); - - let Db = await getIDs({ type, title, year, IMDbID }), - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = title || Db.title; - year = year || Db.year; - IMDbID = IMDbID || Db.IMDbID; - - return { type, title, year, image, IMDbID, TMDbID, TVDbID }; -} - -function initList() { - let $listItems = document.querySelectorAll('.film'), - button = renderPlexButton(), - options = [], length = $listItems.length - 1; - - if (!button) - return /* Fatal Error: Fail Silently */; - - $listItems.forEach(async(element, index, array) => { - let option = await addInListItem(element); - - if(option) - options.push(option); - - if(index == length) - setTimeout(() => { - terminal.log(options) - if (!options.length) - new Notification('error', 'Failed to process list'); - else - squabblePlex(options, button); - }, 50); - }); -} - -parseOptions().then(window.onlocationchange = init); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'flickmetrix' }))(); diff --git a/src/sites/google/index.js b/src/sites/google/index.js index db88def..1e3c09f 100644 --- a/src/sites/google/index.js +++ b/src/sites/google/index.js @@ -1,72 +1,2 @@ -function isMovie() { - return document.querySelector('#media_result_group, [href*="themoviedb.org/tv/"], [href*="imdb.com/title/tt"]'); -} - -function isShow() { - return document.queryBy('[href*="thetvdb.com/"][href*="id="], [href*="thetvdb.com/series/"], [href*="themoviedb.org/tv/"], [href*="imdb.com/title/tt"][href$="externalsites"]').first; -} - -function init() { - if(isMovie() || isShow()) - initPlexThingy(isMovie()? 'movie': isShow()? 'show': null); -} - -async function initPlexThingy(type) { - let $title, $type, $date, $image; - - let button = renderPlexButton(); - if(!button || !type) - return /* Fail silently */; - - if(type == 'movie') { - $title = document.querySelector('.kno-ecr-pt'); - $type = document.querySelector('.kno-ecr-pt + *'); // in case a tv show is incorrectly identified - $date = document.querySelector('.kno-fb-ctx:not([data-local-attribute]) span'); - $image = document.querySelector('#media_result_group img'); - } else { - $title = isShow().querySelector('*'); - $date = { textContent: '' }; - $image = { src: '' }; - } - - if(!$title || !$date) - return modifyPlexButton(button, 'error', 'Could not extract title or year from Google'); - - if($type) { - type = $type.textContent; - - type = /\b(tv|show|series)\b/i.test(type)? 'show': /\b(movie|film|cinema|(?:\d+h\s+)?\d+m)\b/i.test(type)? 'movie': 'error'; - $date = (type == 'show'? document.querySelector('.kno-fv') || $date: $date) || { textContent: '' }; - } - - if(type == 'error') - return; - - let date = $date.textContent.replace(/(\d{4})/), - year = +RegExp.$1, - title = $title.textContent.replace((type == 'movie'? /^(.+)$/: /(.+)(?:(?:\:\s*series\s+info|\-\s*(?:all\s+episodes|season)).+)$/i), '$1').trim(), - image = ($image || {}).src; - - year = year > 999? year: 0; - - let IMDbID = getIMDbID(), - Db = await getIDs({ title, year, type, IMDbID }), - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -function getIMDbID() { - let link = document.querySelector('a._hvg[href*="imdb.com/title/tt"]'); - - if(link) - return link.href.replace(/.*(tt\d+).*/, '$1'); -} - -parseOptions() - .then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - init(); - }); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'google' }))(); diff --git a/src/sites/google/play.js b/src/sites/google/play.js index 7c59064..0d53cab 100644 --- a/src/sites/google/play.js +++ b/src/sites/google/play.js @@ -1,50 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -function isMoviePage() { - return window.location.pathname.startsWith('/store/movies/'); -} - -function isShowPage() { - return window.location.pathname.startsWith('/store/tv/'); -} - -function init() { - if (isMoviePage() || isShowPage()) { - wait( - () => document.querySelector('c-wiz span > button.id-track-click'), - () => initPlexThingy(isMoviePage() ? 'movie' : 'tv') - ); - } -} - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('h1'), - $year = document.querySelector(`h1 ~ div span:${ type === 'movie'? 'first': 'last' }-of-type`), - $image = document.querySelector('img[alt="cover art" i]'); - - if (!$title || !$year) - return modifyPlexButton(button, 'error', `Could not extract ${ !$title? 'title': 'year' } from Google`); - - let title = $title.textContent.replace(/\(\s*(\d{4})\s*\).*?$/, '').trim(), - year = (RegExp.$1 || $year.textContent).replace(/^.*?(\d+)/, '$1').trim(), - image = ($image || {}).src, - Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, button, IMDbID, TMDbID, TVDbID }); -} - -parseOptions().then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - init(); -}); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'google.play' }))(); diff --git a/src/sites/gostream/index.js b/src/sites/gostream/index.js index b8d1f3b..cc74b85 100644 --- a/src/sites/gostream/index.js +++ b/src/sites/gostream/index.js @@ -1,63 +1,2 @@ -/* global parseOptions, modifyPlexButton, findPlexMedia */ -function isMoviePage() { - // An example movie page: /movies/3030-the-1517-to-paris.html - return /\/(?!genre|most-viewed|top-imdb|contact)\b/.test(window.location.pathname); -} - -function isMoviePageReady() { - let e = document.querySelector('.movieplay iframe, .desc iframe'); - return !!e && e.src != '' && document.readyState == 'complete'; -} - -function init() { - if (isMoviePage()) - if (isMoviePageReady()) - initPlexThingy(); - else - // This almost never happens, but sometimes the page is too slow so we need to wait a bit. - setTimeout(init, 1000); -} - -parseOptions().then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - init(); -}); - -async function initPlexThingy() { - - let button = renderPlexButton(); - if (!button) - return /* an error occurred, fail silently */; - - let $title = document.querySelector('[itemprop="name"]:not(meta)'), - $year = document.querySelector('.mvic-desc [href*="year/"]'), - $image, start = +(new Date); - - wait(() => (+(new Date) - start > 5000) || ($image = document.querySelector('.hiddenz, [itemprop="image"]'))); - - if (!$title) - return modifyPlexButton( - button, - 'error', - 'Could not extract title from GoStream' - ), - null; - - new Notification('update', 'Select the Openload (OL) server to download'); - - let title = $title.innerText.trim(), - year = ($year? $year.innerText.trim(): 0), - image = ($image? $image.src: null), - type = 'movie'; - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ title, year, image, button, IMDbID, TMDbID, TVDbID, type }); -} +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'gostream' }))(); diff --git a/src/sites/hulu/index.js b/src/sites/hulu/index.js index 6e1d3e0..9b777ed 100644 --- a/src/sites/hulu/index.js +++ b/src/sites/hulu/index.js @@ -1,39 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isReady() { - return $$('#content [class$="__meta"]'); -} - -function isMovie() { - return window.location.pathname.startsWith('/movie/'); // /movies/ is STRICTLY for a collection of movies (e.g. the line-up) -} - -function isShow() { - return window.location.pathname.startsWith('/series/'); // /tv/ is STRICTLY for a collection of movies (e.g. the line-up) -} - -let $$ = selector => document.querySelector(selector); - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button || !type) - return /* Fatal Error: Fail Silently */; - - let $title = $$('#content [class$="__name"]'), - $year = $$('#content [class$="__meta"] [class$="segment"]:last-child'), - title = $title.innerText.replace(/^\s+|\s+$/g, '').toCaps(), - year = +$year.textContent.replace(/.*\((\d{4})\).*/, '$1'), - Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, button, IMDbID, TMDbID, TVDbID }); -} - -(window.onlocationchange = () => - wait(isReady, () => parseOptions().then(async() => await initPlexThingy(isMovie()? 'movie': isShow()? 'tv': null))) -)(); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'hulu' }))(); diff --git a/src/sites/imdb/index.js b/src/sites/imdb/index.js index 24ec8f7..1c4ef9a 100644 --- a/src/sites/imdb/index.js +++ b/src/sites/imdb/index.js @@ -1,183 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isMovie() { - let tag = $$('meta[property="og:type"]'); - return tag && tag.content === 'video.movie'; -} - -function isShow() { - let tag = $$('meta[property="og:type"]'); - return tag && tag.content === 'video.tv_show'; -} - -function isList() { - return window.location.pathname.startsWith('/list/'); -} - -function getIMDbID() { - let tag = $$('meta[property="pageId"]'); - return tag ? tag.content : undefined; -} - -let $$ = (selector, index = 0) => document.queryBy(selector)[index], - IMDbID = getIMDbID(), - usa = /\b(USA?|United\s+States)\b/i; - -function cleanYear(year) { - // The year can contain `()`, so we need to strip it out. - return year.replace(/^\(|\)$/g, '').trim(); -} - -async function initPlexMovie() { - let $parent = $$('.plot_summary'), - button = renderPlexButton(), - type = 'movie'; - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = $$('.originalTitle, .title_wrapper h1'), - $altname = $$('.title_wrapper h1'), - $date = $$('.title_wrapper [href*="/releaseinfo"]'), - $year = $$('.title_wrapper #titleYear'), - $image = $$('img[alt$="poster" i]'), - // TODO: Hmm there should be a less risky way... - title = $title.childNodes[0].textContent.trim(), - altname = ($altname == $title? title: $altname.childNodes[0].textContent.trim()), - country = $date.innerText.replace(/[^]+\((\w+)\)[^]*?$/, '$1'), - year = +cleanYear($year.textContent), - image = ($image || {}).src; - title = usa.test(country)? title: altname; - - let Db = await getIDs({ title, year, type, IMDbID }), - TMDbID = +Db.tmdb, - TVDbID = +Db.tvdb; - - IMDbID = IMDbID || Db.imdb; - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -async function initPlexShow() { - let $parent = $$('.plot_summary'), - button = renderPlexButton(), - type = 'show'; - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = $$('.originalTitle, .title_wrapper h1'), - $altname = $$('.title_wrapper h1'), - $date = $$('.title_wrapper [href*="/releaseinfo"]'), - date = $$('title').textContent, - dateMatch = date.match(/Series\s*\(?(\d{4})(?:[^\)]+\))?/i), - $image = $$('img[alt$="poster" i]'); - - if (!($title || $altname) || !dateMatch) - return modifyPlexButton(button, 'error', `Could not extract ${ !($title || $altname)? 'title': 'year' } from IMDb`); - - let title = $title.textContent.trim(), - altname = ($altname == $title? title: $altname.childNodes[0].textContent.trim()), - country = $date.innerText.replace(/[^]+\((\w+)\)[^]*?$/, '$1'), - year = parseInt(dateMatch[1]), - image = ($image || {}).src; - title = usa.test(country)? title: altname; - - let Db = await getIDs({ title, year, type, IMDbID }), - TMDbID = +Db.tmdb, - TVDbID = +Db.tvdb; - - IMDbID = IMDbID || Db.imdb; - title = Db.title; - year = Db.year; - - let savename = title.toLowerCase(), - cached = await load(`${savename}.imdb`); - - if(!cached) { - save(`${savename} (${year}).imdb`, { type, title, year, imdb: IMDbID, tmdb: TMDbID, tvdb: TVDbID }); - save(`${savename}.imdb`, +year); - terminal.log(`Saved as "${savename} (${year}).imdb"`); - } - - findPlexMedia({ type, title, year, button, IMDbID, TMDbID, TVDbID }); -} - -async function addInListItem(element) { - let $title = element.querySelector('.col-title a'), - $date = element.querySelector('.col-title a + *'), - $image = element.querySelector('img.loadlate, img[data-tconst]'), - $IMDbID = $title; - - if (!$title || !$date) - return; - - let title = $title.textContent.trim(), - year = cleanYear($date.textContent), - image = $image.src, - IMDbID = $IMDbID.href.replace(/.*\/(tt\d+)\b.*$/, '$1'), - type = (/[\-\u2010-\u2015]/.test(year)? 'show': 'movie'); - - year = parseInt(year); - - let Db = await getIDs({ type, title, year, IMDbID }), - TMDbID = +Db.tmdb, - TVDbID = +Db.tvdb; - - title = title || Db.title; - year = year || Db.year; - - let savename = title.toLowerCase(), - cached = await load(`${savename}.imdb`); - - if(!cached) { - save(`${savename} (${year}).imdb`, { type, title, year, imdb: IMDbID, tmdb: TMDbID, tvdb: TVDbID }); - save(`${savename}.imdb`, +year); - terminal.log(`Saved as "${savename} (${year}).imdb"`); - } - - return { type, title, year, image, IMDbID, TMDbID, TVDbID }; -} - -function initList() { - let $listItems = document.querySelectorAll('#main .lister-item'), - button = renderPlexButton(true), - options = [], length = $listItems.length - 1; - - if (!/&mode=simple/i.test(location.search)) - return location.search = location.search.replace(/&mode=\w+/, '&mode=simple'); - - if (!button) - return /* Fatal Error: Fail Silently */; - - $listItems.forEach(async(element, index, array) => { - let option = await addInListItem(element); - - if(option) - options.push(option); - - if(index == length) - setTimeout(() => { - if (!options.length) - new Notification('error', 'Failed to process list'); - else - squabblePlex(options, button); - }, 50); - }); -} - -let init = () => { - if (((isMovie() || isShow()) && IMDbID) || isList()) { - parseOptions().then(async() => { - if (isMovie()) - await initPlexMovie(); - else if (isShow()) - await initPlexShow(); - else if(isList()) - await initList(); - }); - } -} - -init(); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'imdb' }))(); diff --git a/src/sites/itunes/index.js b/src/sites/itunes/index.js index 3bfe34e..4f9ec1b 100644 --- a/src/sites/itunes/index.js +++ b/src/sites/itunes/index.js @@ -1,45 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isMovie() { - return /^(\/\w+)?\/movie\//.test(window.location.pathname); -} - -function isShow() { - return /^(\/\w+)?\/tv-season\//.test(window.location.pathname); -} - -let $$ = selector => document.querySelector(selector); - -async function initPlexThingy(type) { - let title, year, image, button = renderPlexButton(); - - if (!button || !type) - return /* Fatal Error: Fail Silently */; - - if(type == 'movie') { - let $title = $$('[class*="movie-header__title"]'), - $year = $$('[datetime]'), - $image = $$('[class*="product"] ~ * picture img'); - - title = $title.textContent; - year = +$year.textContent; - image = ($image || {}).src; - } else { - let meta = [$$('h1[itemprop="name"], h1'), $$('.release-date > *:last-child'), $$('[class*="product"] ~ * picture img')]; - - title = meta[0].textContent.replace(/\s*\((\d+)\)\s*/, '').trim(); - year = meta[1].textContent.replace(/[^]*(\d{4})[^]*?$/g, '$1').trim(); - image = meta[2].src; - } - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -parseOptions().then(async() => await initPlexThingy(isMovie()? 'movie': isShow()? 'tv': null)); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'itunes' }))(); diff --git a/src/sites/justwatch/index.css b/src/sites/justwatch/index.css new file mode 100644 index 0000000..e69de29 diff --git a/src/sites/justwatch/index.js b/src/sites/justwatch/index.js new file mode 100644 index 0000000..b5dff44 --- /dev/null +++ b/src/sites/justwatch/index.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'justwatch' }))(); diff --git a/src/sites/layout.js b/src/sites/layout.js deleted file mode 100644 index ea23844..0000000 --- a/src/sites/layout.js +++ /dev/null @@ -1,34 +0,0 @@ -/* Your file should look something similar to this */ -/* required: function init */ -function init( type ) { - if ( PageReady() ) - startWebtoPlex( type ); - else - setTimeout(init, 1000); -} - -function PageReady() { - // should return a boolen/object to indicate the page is finished loading - return document.readyState == 'complete'; -} - -async function startWebtoPlex(type) { - let button = renderButton(); - if (!button) - return /* Silent error */; - - let title = document.querySelector('#title').textContent, - year = document.querySelector('#year').textContent, - image = document.querySelector('#poster').textContent; - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - findPlexMedia({ title, year, image, button, IMDbID, TMDbID, TVDbID, type }); -} - -parseOptions().then(() => { - init( location.pathname.startsWith('/movie')? 'movie': 'show' ) -}); diff --git a/src/sites/letterboxd/index.js b/src/sites/letterboxd/index.js index 60d719a..80cd852 100644 --- a/src/sites/letterboxd/index.js +++ b/src/sites/letterboxd/index.js @@ -1,99 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -function isList() { - return /\/list\//i.test(window.location.pathname); -} - -let START = +(new Date); - -function init() { - if(/\/(film|list)\//i.test(window.location.pathname)) - wait( - () => (isList()? +(new Date) - START > 500: document.querySelector('.js-watch-panel')), - () => ((isList()? initList: initPlexThingy)()) - ); -} - -function initPlexThingy() { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('.headline-1[itemprop="name"]'), - $date = document.querySelector('small[itemprop="datePublished"]'), - $image = document.querySelector('.image'); - - if (!$title || !$date) - return modifyPlexButton( - button, - 'error', - 'Could not extract title or year from Letterboxd' - ); - - let title = $title.textContent.trim(), - year = $date.textContent.trim(), - image = ($image || {}).src, - IMDbID = getIMDbID(); - - findPlexMedia({ title, year, button, type: 'movie', IMDbID }); -} - -function getIMDbID() { - let $link = document.querySelector( - '.track-event[href*="imdb.com/title/tt"]' - ); - if ($link) { - let link = $link.href.replace(/^.*imdb\.com\/title\//, ''); - return link.replace(/\/(?:maindetails\/?)?$/, ''); - } -} - -async function addInListItem(element) { - let $title = element.querySelector('.frame-title'), - $image = element.querySelector('img'); - - if (!$title) - return; - - let title = $title.textContent.replace(/\((\d+)\)/, '').trim(), - year = +RegExp.$1, - image = $image.src, - type = 'movie'; - - let Db = await getIDs({ type, title, year }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = title || Db.title; - year = year || Db.year; - - return { type, title, year, image, IMDbID, TMDbID, TVDbID }; -} - -function initList() { - let $listItems = document.querySelectorAll('.poster-list .poster-container'), - button = renderPlexButton(true), - options = [], length = $listItems.length - 1; - - if (!button) - return /* Fatal Error: Fail Silently */; - - $listItems.forEach(async(element, index, array) => { - let option = await addInListItem(element); - - if(option) - options.push(option); - - if(index == length) - setTimeout(() => { - terminal.log(options) - if (!options.length) - new Notification('error', 'Failed to process list'); - else - squabblePlex(options, button); - }, 50); - }); -} - -parseOptions().then(init); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'letterboxd' }))(); diff --git a/src/sites/metacritic/index.js b/src/sites/metacritic/index.js index 07eb064..be3e7c5 100644 --- a/src/sites/metacritic/index.js +++ b/src/sites/metacritic/index.js @@ -1,62 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -function init() { - wait( - () => document.readyState === 'complete', - () => initPlexThingy(isMovie()? 'movie': isShow()? 'tv': null) || isList()? initList(): null - ); -} - -function isMovie() { - return /^\/movie\//i.test(window.location.pathname); -} - -function isShow() { - return /^\/tv\//i.test(window.location.pathname); -} - -function isList() { - return /(^\/list\/)/i.test(window.location.pathname); -} - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button || !type) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('.product_page_title > *, .product_title'), - $date = document.querySelector('.product_page_title > .release_year, .product_data .release_data'), - $image = document.querySelector('.summary_img'); - - if (!$title || !$date) - return console.log('failed'), modifyPlexButton( - button, - 'error', - `Could not extract ${ !$title? 'title': 'year' } from Metacritic` - ); - - let title = $title.textContent.replace(/\s+/g, ' ').trim(), - year = $date.textContent.replace(/\s+/g, ' ').replace(/.*(\d{4}).*$/, '$1').trim(), - image = ($image || {}).src; - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - type = type === 'tv'? 'show': type; - - findPlexMedia({ title, year, button, type, IMDbID, TMDbID, TVDbID }); -} - -async function initList() { - /* Not implemented... Metacritic has too much sh*t loading to even try to open a console */ - /* Targeted for v5/v6 */ -} - -parseOptions().then(() => { - init(); -}); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'metacritic' }))(); diff --git a/src/sites/moviemeter/index.css b/src/sites/moviemeter/index.css new file mode 100644 index 0000000..e69de29 diff --git a/src/sites/moviemeter/index.js b/src/sites/moviemeter/index.js new file mode 100644 index 0000000..4bf6acf --- /dev/null +++ b/src/sites/moviemeter/index.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'moviemeter' }))(); diff --git a/src/sites/movieo/index.js b/src/sites/movieo/index.js index fd7977c..7738986 100644 --- a/src/sites/movieo/index.js +++ b/src/sites/movieo/index.js @@ -1,128 +1,2 @@ -/* global parseOptions, modifyPlexButton, findPlexMedia */ -function isMoviePage() { - let path = window.location.pathname; - - if (!path.startsWith('/movies/')) - return false; - - // An example movie page: /movies/juno-hpsgt (can also have trailing slash!) - // Example non-movie page: /movies/watchlist/gbdx - // So if there is one slash extra (trailing slash not included), it's not a movie page. - let jup = path.replace('/movies/', '').slice(0, -1); - return !jup.includes('/'); -} - -function isList() { - let path = window.location.pathname; - - return /\/(black|seen|watch)?lists?\//i.test(path); -} - -function isPageReady() { - return !!document.querySelector('.share-box, .zopim'); -} - -function init() { - if (isMoviePage()) { - if (isPageReady()) { - initPlexThingy(); - } else { - // This almost never happens, but sometimes the page is too slow so we need to wait a bit. - // I could reproduce this by clicking on a movie in the movie watchlist, - // going back in history and then going forward in history. - setTimeout(init, 1000); - } - } else if (isList()) { - if (isPageReady()) { - initList(); - } else { - setTimeout(init, 1000); - } - } -} - -parseOptions().then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - init(); -}); - -function initPlexThingy() { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('#doc_title'), - $date = document.querySelector('meta[itemprop="datePublished"]'), - $image = document.querySelector('img.poster'); - - if (!$title || !$date) - return modifyPlexButton( - button, - 'error', - `Could not extract ${ !$title? 'title': 'year' } from Movieo` - ); - - let title = $title.dataset.title.trim(), - year = $date.content.slice(0, 4), - image = ($image || {}).src, - IMDbID = getIMDbID(); - - findPlexMedia({ title, year, button, image, type: 'movie', IMDbID }); -} - -function getIMDbID() { - let $link = document.querySelector( - '.tt-parent[href*="imdb.com/title/tt"]' - ); - if ($link) - return $link.href.replace(/^[^]*\/title\//, ''); -} - -async function addInListItem(element) { - let $title = element.querySelector('.title'), - $image = element.querySelector('.poster-cont'); - - if (!$title) - return; - - let title = $title.textContent.trim().replace(/\s*\((\d{4})\)/, ''), - year = +RegExp.$1, - image = $image.getAttribute('data-src'), - type = 'movie'; - - let Db = await getIDs({ type, title, year }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = title || Db.title; - year = year || Db.year; - - return { type, title, year, image, IMDbID, TMDbID, TVDbID }; -} - -function initList() { - let $listItems = document.querySelectorAll('[data-title][data-id]'), - button = renderPlexButton(true), - options = [], length = $listItems.length - 1; - - if (!button) - return /* Fatal Error: Fail Silently */; - - $listItems.forEach(async(element, index, array) => { - let option = await addInListItem(element); - - if(option) - options.push(option); - - if(index == length) - setTimeout(() => { - if (!options.length) - new Notification('error', 'Failed to process list'); - else - squabblePlex(options, button); - }, 50); - }); -} +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'movieo' }))(); diff --git a/src/sites/netflix/index.js b/src/sites/netflix/index.js index 72bded2..5bc66c2 100644 --- a/src/sites/netflix/index.js +++ b/src/sites/netflix/index.js @@ -1,42 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isReady() { - let element = $$('[class$="__time"]'); - - return document.readyState == 'complete' && element && !/^([0:]+|null|undefined)?$/.test(element.textContent); -} - -function isMovie() { - return !isShow(); -} - -function isShow() { - return $$('[class*="playerEpisodes"]'); -} - -let $$ = selector => document.querySelector(selector); - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button || !type) - return /* Fatal Error: Fail Silently */; - - let $title = $$('.video-title h4'), - title = $title.innerText.replace(/^\s+|\s+$/g, '').toCaps() || sessionStorage.getItem(`last-${type}-title`), - year = 0, - Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - sessionStorage.setItem(`last-${type}-title`, title); - - findPlexMedia({ type, title, year, button, IMDbID, TMDbID, TVDbID }); -} - -(window.onlocationchange = () => - wait(isReady, () => parseOptions().then(async() => await initPlexThingy(isMovie()? 'movie': isShow()? 'tv': null))) -)(); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'netflix' }))(); diff --git a/src/sites/plex/index.css b/src/sites/plex/index.css new file mode 100644 index 0000000..e69de29 diff --git a/src/sites/plex/index.js b/src/sites/plex/index.js new file mode 100644 index 0000000..f25c05c --- /dev/null +++ b/src/sites/plex/index.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'plex' }))(); diff --git a/src/sites/rottentomatoes/index.js b/src/sites/rottentomatoes/index.js index 28be81e..6fb798c 100644 --- a/src/sites/rottentomatoes/index.js +++ b/src/sites/rottentomatoes/index.js @@ -1,104 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -function init() { - wait( - () => (isList()? document.readyState === 'complete': document.querySelector('#reviews')), - () => (initPlexThingy(isMovie()? 'movie': isShow()? 'show': null) || isList()? initList(): null) - ); -} - -function isMovie() { - return /^\/m/.test(window.location.pathname); -} - -function isShow() { - return /^\/t/.test(window.location.pathname); -} - -function isList() { - return /^\/browse\//i.test(window.location.pathname); -} - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button || !type) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('.playButton + .title, [itemprop="name"]'), - $year = (type == 'movie'? $title.nextElementSibling: $title.querySelector('.subtle')), - $image = document.querySelector('[class*="posterimage" i]'); - - if (!$title || !$year) - return modifyPlexButton( - button, - 'error', - 'Could not extract title or year from Rotten Tomatoes' - ); - - let title = $title.textContent.trim().replace(/(.+)\:[^]*$/, type == 'movie'? '$&': '$1'), - year = $year.textContent.replace(/\D+/g, '').trim(), - image = ($image || {}).srcset, - Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - if (image) - image = image.replace(/([^\s]+)[^]*/, '$1'); - - findPlexMedia({ title, year, image, button, type, IMDbID, TMDbID, TVDbID }); -} - -async function addInListItem(element) { - let $title = element.querySelector('.movieTitle'), - $image = element.querySelector('.poster'), - $type = element.querySelector('[href^="/m/"], [href^="/t/"]'); - - if (!$title) - return; - - let title = $title.textContent.trim(), - image = $image.src, - type = /\/([mt])\//i.test($type.href)? RegExp.$1 == 'm'? 'movie': 'show': null; - - if(!type) - return {}; - if(type == 'show') - title = title.replace(/\s*\:\s*seasons?\s+\d+\s*/i, ''); - - let Db = await getIDs({ type, title }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb, - year = Db.year; - - title = title || Db.title; - - return { type, title, year, image, IMDbID, TMDbID, TVDbID }; -} - -function initList() { - let $listItems = document.querySelectorAll('.mb-movie'), - button = renderPlexButton(true), - options = [], length = $listItems.length - 1; - - if (!button) - return /* Fatal Error: Fail Silently */; - - $listItems.forEach(async(element, index, array) => { - let option = await addInListItem(element); - - if(option) - options.push(option); - - if(index == length) - setTimeout(() => { - if (!options.length) - new Notification('error', 'Failed to process list'); - else - squabblePlex(options, button); - }, 50); - }); -} - -parseOptions().then(init); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'rottentomatoes' }))(); diff --git a/src/sites/theme.css b/src/sites/theme.css new file mode 100644 index 0000000..6ad4146 --- /dev/null +++ b/src/sites/theme.css @@ -0,0 +1,38 @@ +/* Themes and other stylings for Web to Plex */ +/* Button Layout (Reference) + +// - an optional attribute value + +// The main button (container) +BUTTON .web-to-plex-button... + + // (Container) Holds the LIs that perform the various actions + UL + + // The Web to Plex (logo) button + LI #wtp-list-name.list-name + // The actionable anchor + A .list-action + IMG // Web to Plex logo + + // The Plex It! button + LI #wtp-plexit.list-item + IMG // Alarm bell + + // The hide button + LI #wtp-hide.list-item + IMG // Eye icon + + // The refresh button + LI #wtp-refresh.list-item + IMG // Refresh + + // The settings button + LI #wtp-options.list-item + IMG // Gear icon +*/ + +.web-to-plex-button.button-location-right { + left: unset !important; + right: 5px !important; +} diff --git a/src/sites/tmdb/index.js b/src/sites/tmdb/index.js index 9ca127a..6989aed 100644 --- a/src/sites/tmdb/index.js +++ b/src/sites/tmdb/index.js @@ -1,125 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -function init() { - wait( - () => document.readyState === 'complete', - () => (initPlexThingy(isMovie()? 'movie': isShow()? 'tv': null) || isList()? initList(): null) - ); -} - -function isMovie() { - return /\/movie\/\d+/i.test(window.location.pathname); -} - -function isShow() { - return /\/tv\/\d+/i.test(window.location.pathname); -} - -function isList() { - return /(^\/discover\/|\/(movie|tv)\/([^\d]+|\B))/i.test(window.location.pathname); -} - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button || !type) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('.title > span > *:not(.release_date)'), - $date = document.querySelector('.title .release_date'), - $image = document.querySelector('img.poster'); - - if (!$title || !$date) - return modifyPlexButton( - button, - 'error', - `Could not extract ${ !$title? 'title': 'year' } from TheMovieDb` - ); - - let title = $title.textContent.trim(), - year = $date.textContent.trim(), - image = ($image || {}).src, - apid = window.location.pathname.replace(/\/(?:movie|tv)\/(\d+).*/, '$1'); - - type = type == 'movie'? 'movie': 'show'; - - let Db = await getIDs({ title, year, TMDbID: apid, APIType: type, APIID: apid }), - IMDbID = Db.imdb, - TMDbID = +Db.tmdb, - TVDbID = +Db.tvdb; - - title = Db.title; - year = Db.year; - - let savename = title.toLowerCase(), - cached = await load(`${savename}.tmdb`); - - if(!cached) { - save(`${savename} (${year}).tmdb`, { type, title, year, imdb: IMDbID, tmdb: TMDbID, tvdb: TVDbID }); - save(`${savename}.tmdb`, +year); - terminal.log(`Saved as "${savename} (${year}).tmdb"`); - } - - findPlexMedia({ title, year, image, button, type, IMDbID, TMDbID, TVDbID }); -} - -async function addInListItem(element) { - let $title = element.querySelector('.title'), - $date = element.querySelector('.title + *'), - $image = element.querySelector('.poster'), - $type = $title.id.split('_'); - - if (!$title || !$date) - return; - - let title = $title.textContent.trim(), - year = $date.textContent, - image = $image.src, - type = ($type[0] == 'movie'? 'movie': 'show'), - TMDbID = +$type[1]; - - let Db = await getIDs({ type, title, year, TMDbID, APIType: type, APIID: TMDbID }), - IMDbID = Db.imdb, - TVDbID = +Db.tvdb; - - title = title || Db.title; - year = +year || Db.year; - - let savename = title.toLowerCase(), - cached = await load(`${savename}.tmdb`); - - if(!cached) { - save(`${savename} (${year}).tmdb`, { type, title, year, imdb: IMDbID, tmdb: TMDbID, tvdb: TVDbID }); - save(`${savename}.tmdb`, +year); - terminal.log(`Saved as "${savename} (${year}).tmdb"`); - } - - return { type, title, year, image, IMDbID, TMDbID, TVDbID }; -} - -function initList() { - let $listItems = document.querySelectorAll('.item.card'), - button = renderPlexButton(true), /* see if a button was already created */ - options = [], length = $listItems.length - 1; - - if (!button) - return /* Fatal Error: Fail Silently */; - - $listItems.forEach(async(element, index, array) => { - let option = await addInListItem(element); - - if(option) - options.push(option); - - if(index == length) - setTimeout(() => { - if (!options.length) - new Notification('error', 'Failed to process list'); - else - squabblePlex(options, button); - }, 50); - }); -} - -parseOptions().then(() => { - init(); -}); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'tmdb' }))(); diff --git a/src/sites/trakt/index.js b/src/sites/trakt/index.js index fa16184..4e035f8 100644 --- a/src/sites/trakt/index.js +++ b/src/sites/trakt/index.js @@ -1,193 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -let $$ = (element, all = false) => (element = document.querySelectorAll(element)).length > 1 && all? element: element[0]; - -function isMoviePage() { - return !isDash() && window.location.pathname.startsWith('/movies/'); -} - -function isShowPage() { - return !isDash() && window.location.pathname.startsWith('/shows/'); -} - -function isDash() { - return /^\/(dashboard|calendars|people|search|(?:movies|shows)\/(?:trending|popular|watched|collected|anticipated|boxoffice)|$)/i.test(window.location.pathname); -} - -function getIMDbID() { - let $link = $$( - // HTTPS and HTTP - '[href*="imdb.com/title/tt"]' - ); - - if ($link) - return $link.href.replace(/^.*?imdb\.com\/.+\b(tt\d+)\b/, '$1'); -} - -function getTVDbID() { - let $link = $$( - // HTTPS and HTTP - '[href*="thetvdb.com/"]' - ); - - if ($link) - return $link.href.replace(/^.*?thetvdb.com\/.+(?:(?:series\/?(?:\?id=)?)(\d+)\b).*?$/, '$1'); -} - -function getTMDbID() { - let $link = $$( - // HTTPS and HTTP - '[href*="themoviedb.org/"]' - ); - - if ($link) - return $link.href.replace(/^.*?themoviedb.org\/(?:movie|tv|shows?|series)\/(\d+).*?$/, '$1'); -} - -function init() { - if (isMoviePage() || isShowPage() || isDash()) { - wait( - () => ($$('#info-wrapper ul.external, .format-date') || document.readyState == 'complete'), - () => (isDash()? initDash(): initPlexThingy(isMoviePage() ? 'movie' : 'show')) - ); - } -} - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = $$('.mobile-title'), - $year = $$('.mobile-title .year'), - $image = $$('.poster img.real[alt="poster" i]'); - - if (!$title || !$year) - return modifyPlexButton(button, 'error', `Could not extract ${ !$title? 'title': 'year' } from Trakt`); - - let title = $title.textContent.replace(/(.+)(\d{4}).*?$/, '$1').replace(/\s*\:\s*Season.*$/i, '').trim(), - year = +(RegExp.$2 || $year.textContent).trim(), - image = ($image || {}).src, - IMDbID = getIMDbID(), - TMDbID = getTMDbID(), - TVDbID = getTVDbID(); - - if(!IMDbID && !TMDbID && !TVDbID) { - let Db = await getIDs({ title, year, type, IMDbID, TMDbID, TVDbID }); - - IMDbID = IMDbID || Db.imdb, - TMDbID = TMDbID || Db.tmdb, - TVDbID = TVDbID || Db.tvdb; - title = Db.title; - year = Db.year; - } - - let o = (type == 'movie')? { im: IMDbID, tm: +TMDbID }: { im: IMDbID, tm: +TMDbID, tv: +TVDbID }; - - /* use Trakt as a caching service when applicable */ - /* yes, Trakt asks not to scrape their site, and we're not saving this to a server, so I'm gonna say OK */ - let savename = title.toLowerCase(), - cached = {}; - - if(type == 'movie') { - cached.tmdb = await load(`${savename}.tmdb`); - cached.imdb = await load(`${savename}.imdb`); - - if(!cached.tmdb) { - save(`${title} (${year}).tmdb`, { title, year, imdb: o.im, tmdb: o.tm }); - save(`${title}.tmdb`, year); - } - - if(!cached.imdb) { - save(`${title} (${year}).imdb`, { title, year, imdb: o.im }); - save(`${title}.imdb`, year); - } - } else { - cached.tvdb = await load(`${savename}.tvdb`); - cached.tmdb = await load(`${savename}.tmdb`); - cached.imdb = await load(`${savename}.imdb`); - - if(!cached.tvdb) { - save(`${title} (${year}).tvdb`, { title, year, tvdb: o.tv, tmdb: o.tm, imdb: o.im }); - save(`${title}.tvdb`, year); - } - - if(!cached.tmdb) { - save(`${title} (${year}).tmdb`, { title, year, imdb: o.im, tmdb: o.tm }); - save(`${title}.tmdb`, year); - } - - if(!cached.imdb) { - save(`${title} (${year}).imdb`, { title, year, imdb: o.im }); - save(`${title}.imdb`, year); - } - } - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -async function initDash() { - let buttons = $$(".btn-watch-now, .quick-icons .watch-now", true); - - buttons.forEach((element, index, array) => { - element.preclick = element.preclick || element.onclick || (() => {}); - - element.onclick = async(event, rerun) => { - event.path.filter((v, i, a) => !!~[].slice.call(buttons).indexOf(v)).forEach((e, i, a) => e.preclick(event)); - - let ready = /^[^]+$/.test($$('#watch-now-content').innerText); - - if(!ready || !rerun) - return setTimeout( () => element.onclick(event, true), 5 ); - - let title = $$("#watch-now-content h3").innerText.replace(/^\s*where\s+to\s+watch\s*/i, ''), - image = $$('.poster img.real[alt="poster" i]'), - type = 'show', - year = YEAR, - button = $$(".w2p-channel"); - - if(title == '') - title = $$("#watch-now-content h1").innerText.replace(/^\s*(.+)\s+(\d+)\s*$/, '$1'), - year = RegExp.$2, - type = 'movie'; - - title = title.toCaps(); - - if(!button) { - $$("#watch-now-content .streaming-links").innerHTML += -` -
ondemand
- -`; - wait(() => button = $$(".w2p-channel"), () => {}); - } - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = +Db.tmdb, - TVDbID = +Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, button, IMDbID, TMDbID, TVDbID, txt: 'title', hov: 'null' }); - }; - }); -} - -parseOptions().then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - init(); -}); - -window.onlocationchange = (event) => { - init(); -}; +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'trakt' }))(); diff --git a/src/sites/tubi/index.css b/src/sites/tubi/index.css new file mode 100644 index 0000000..e69de29 diff --git a/src/sites/tubi/index.js b/src/sites/tubi/index.js new file mode 100644 index 0000000..fbe9b35 --- /dev/null +++ b/src/sites/tubi/index.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'tubi' }))(); diff --git a/src/sites/tvdb/index.js b/src/sites/tvdb/index.js index 447b099..8486015 100644 --- a/src/sites/tvdb/index.js +++ b/src/sites/tvdb/index.js @@ -1,75 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isShowPage() { - // An example movie page: /series/gravity-falls - return window.location.pathname.startsWith('/series/'); -} - -function isShowPageReady() { - return !!document.querySelector('#series_basic_info'); -} - -function init() { - if (isShowPage()) - if (isShowPageReady()) - initPlexThingy(); - else - // This almost never happens, but sometimes the page is too slow so we need to wait a bit. - setTimeout(init, 1000); -} - -parseOptions().then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - init(); -}); - -async function initPlexThingy() { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('#series_title'), - $image = document.querySelector('img[src*="/posters/"]'); - - if (!$title) - return modifyPlexButton( - button, - 'error', - `Could not extract title from TheTVDb` - ), - null; - - let title = $title.innerText.trim(), - year, - image = ($image || {}).src, - d = '', o = {}, - Db = document.querySelector('#series_basic_info') - .textContent - .replace(/^\s+|\s+$/g, '') - .replace(/^\s+$/gm, d) - .replace(/^\s+(\S)/gm, '$1') - .split(RegExp(`\\n*${d}\\n*`)) - .forEach(value => { - value = value.split(/\n+/, 2); - - let n = value[0], v = value[1]; - - n = n.replace(/^([\w\s]+).*$/, '$1').replace(/\s+/g, '_').toLowerCase(); - - o[n] = /,/.test(v)? v.split(/\s*,\s*/): v; - }); - - year = +(((o.first_aired || YEAR) + "").slice(0, 4)); - - let savename = title.toLowerCase(), - cached = await load(`${savename}.tvdb`); - - if(!cached) { - save(`${savename} (${year}).tvdb`, { title, year, tvdb: +o.thetvdb, imdb: o.imdb }); - save(`${savename}.tvdb`, +year); - terminal.log(`Saved as "${savename} (${year}).tvdb"`); - } - - findPlexMedia({ title, year, image, button, type: 'show', IMDbID: o.imdb, TVDbID: +o.thetvdb }); -} +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'tvdb' }))(); diff --git a/src/sites/tvmaze/index.js b/src/sites/tvmaze/index.js index 084580d..d704d5c 100644 --- a/src/sites/tvmaze/index.js +++ b/src/sites/tvmaze/index.js @@ -1,57 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isShowPage() { - // An example movie page: /shows/2757/colony - return window.location.pathname.startsWith('/shows/'); -} - -function isShowPageReady() { - return !!document.querySelector('#general-info-panel .rateit'); -} - -async function init() { - if (isShowPage()) - if (isShowPageReady()) - await initPlexThingy(); - else - // This almost never happens, but sometimes the page is too slow so we need to wait a bit. - setTimeout(init, 1000); -} - -parseOptions().then(async() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - await init(); -}); - -async function initPlexThingy() { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('header.columns > h1'), - $date = document.querySelector('#year'), - $image = document.querySelector('figure img'), - $apid = window.location.pathname.replace(/\/shows\/(\d+).*/, '$1'); - - if (!$title || !$date) - return modifyPlexButton( - button, - 'error', - `Could not extract ${ !$title? 'title': 'year' } from TV Maze` - ), - null; - - let title = $title.innerText.trim(), - year = $date.innerText.replace(/\((\d+).+\)/, '$1'), - image = ($image || {}).src, - Db = await getIDs({ title, year, type: 'tv', APIID: $apid }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ title, year, button, type: 'tv', IMDbID, TMDbID, TVDbID }); -} +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'tvmaze' }))(); diff --git a/src/sites/verizon/index.js b/src/sites/verizon/index.js index a922c25..b7294b1 100644 --- a/src/sites/verizon/index.js +++ b/src/sites/verizon/index.js @@ -1,70 +1,2 @@ -/* global wait, modifyPlexButton, parseOptions, findPlexMedia */ -function isMoviePage() { - return /\bmovies?\b/i.test(window.location.pathname); -} - -function isShowPage() { - return /\bseries\b/i.test(window.location.pathname); -} - -function isOnDemand() { - return /ondemand/i.test(window.location.pathname); -} - -function init() { - if (isMoviePage() || isShowPage()) { - wait( - () => document.querySelector('.container .btn-with-play, .moredetails, .more-like'), - () => initPlexThingy(isMoviePage() ? 'movie' : 'tv') - ); - } -} - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title, $year, $image = document.querySelector('.cover img'); - - if(isOnDemand()) { - if(isMoviePage()) { - $title = document.querySelector('.detail *'); - $year = document.querySelector('.rating *'); - } else { - $title = {textContent: window.location.pathname.replace(/\/ondemand\/tvshows?\/([^\/]+?)\/.*/i)}; - $year = document.querySelector('#showDetails > * > *:nth-child(4) *:last-child'); - - $title.textContent = decodeURL($title.textContent).toCpas(); - } - } else { - $title = document.querySelector('.copy > .title'); - $year = (type === 'movie')? - document.querySelector('.copy > .details'): - document.querySelector('.summary ~ .title ~ *'); - } - - if (!$title || !$year) - return modifyPlexButton(button, 'error', `Could not extract ${ !$title? 'title': 'year' } from Verizon`); - - let title = $title.textContent.trim(), - year = $year.textContent.slice(0, 4).trim(), - image = ($image || {}).src; - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -parseOptions().then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - init(); -}); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'verizon' }))(); diff --git a/src/sites/vrv/index.js b/src/sites/vrv/index.js index 0901970..c4a2052 100644 --- a/src/sites/vrv/index.js +++ b/src/sites/vrv/index.js @@ -1,119 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isShow() { - // An example movie page: /series/GR75MN7ZY/Deep-Space-69-Unrated - return /^\/(?:series)\//.test(window.location.pathname) || (/^\/(?:watch)\//.test(window.location.pathname) && document.querySelector('.content .series')); -} - -function isMovie() { - return /^\/(?:watch)\//.test(window.location.pathname) && !document.querySelector('.content .series'); -} - -function isPageReady() { - let img = document.querySelector('.h-thumbnail > img'), - pre = document.querySelector('#content .content .card'); - return isList()? pre && pre.textContent: img && img.src; -} - -function isList() { - return /\/(watchlist)\b/i.test(window.location.pathname); -} - -function init() { - if (isPageReady()) { - if (isShow()) - initPlexThingy('show'); - else if (isMovie()) - initPlexThingy('movie'); - else if(isList()) - initList(); - } else { - // This almost never happens, but sometimes the page is too slow so we need to wait a bit. - setTimeout(init, 1000); - } -} - -parseOptions().then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - (window.onlocationchange = init)(); -}); - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('.series, [class*="video"] .title, [class*="series"] .title'), - $year = document.querySelector('.additional-information-item'), - $image = document.querySelector('[class*="poster"][class*="wrapper"] img'); - - if (!$title) - return modifyPlexButton( - button, - 'error', - `Could not extract title from VRV` - ), - null; - - let title = $title.innerText.replace(/(unrated|mature|tv-?\d{1,2})\s*$/i, '').trim(), - year = $year? $year.textContent.replace(/.+(\d{4}).*/, '$1').trim(): 0, - image = ($image || {}).src, - Db = await getIDs({ type, title, year }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = title || Db.title; - year = year || Db.year; - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -async function addInListItem(element) { - let $title = element.querySelector('.info > *'), - $image = element.querySelector('.poster-image img'), - $type = element.querySelector('.info [class*="series"], .info [class*="movie"]'); - - if (!$title || !$type) - return; - - let title = $title.textContent.trim(), - image = $image.src, - type = $type.getAttribute('class').replace(/[^]*(movie|series)[^]*/, '$1'), - year; - - let Db = await getIDs({ type, title }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = +Db.tvdb; - - title = title || Db.title; - year = Db.year; - - return { type, title, year, image, IMDbID, TMDbID, TVDbID }; -} - -function initList() { - let $listItems = document.querySelectorAll('#content .content .card'), - button = renderPlexButton(), - options = [], length = $listItems.length - 1; - - if (!button) - return /* Fatal Error: Fail Silently */; - - $listItems.forEach(async(element, index, array) => { - let option = await addInListItem(element); - - if(option) - options.push(option); - - if(index == length) - setTimeout(() => { - if (!options.length) - new Notification('error', 'Failed to process list'); - else - squabblePlex(options, button); - }, 50); - }); -} +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'vrv' }))(); diff --git a/src/sites/vudu/index.js b/src/sites/vudu/index.js index bf346af..303f5ba 100644 --- a/src/sites/vudu/index.js +++ b/src/sites/vudu/index.js @@ -1,59 +1,2 @@ -/* global findPlexMedia, parseOptions, modifyPlexButton */ -function isMovie() { - return !isShow(); -} - -function isShow() { - return /(?:Season-\d+\/\d+)$/i.test(window.location.pathname); -} - -function isPageReady() { - return !!document.querySelector('img[src*="poster" i]'); -} - -async function init() { - if (isPageReady()) - await initPlexThingy(isMovie()? 'movie': isShow()? 'tv': null); - else - // This almost never happens, but sometimes the page is too slow so we need to wait a bit. - setTimeout(init, 1000); -} - -async function initPlexThingy(type) { - let button = renderPlexButton(); - - if (!button || !type) - return /* Fatal Error: Fail Silently */; - - let $title = document.querySelector('.head-big'), - $date = document.querySelector('.container .row:first-child .row ~ * > .row span'), - $image = document.querySelector('img[src*="poster" i]'); - - if (!$title) - return modifyPlexButton( - button, - 'error', - `Could not extract title from Vudu` - ); - - let title = $title.textContent.replace(/\((\d{4})\)/, '').trim(), - year = $date? $date.textContent.split(/\s*\|\s*/): RegExp.$1, - image = ($image || {}).src; - - year = +year[year.length - 1].slice(0, 4); - year |= 0; - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); -} - -if (isMovie() || isShow()) { - parseOptions().then(async() => await (window.onlocationchange = init)()); -} +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'vudu' }))(); diff --git a/src/sites/vumoo/index.css b/src/sites/vumoo/index.css new file mode 100644 index 0000000..e69de29 diff --git a/src/sites/vumoo/index.js b/src/sites/vumoo/index.js new file mode 100644 index 0000000..2793ee0 --- /dev/null +++ b/src/sites/vumoo/index.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'vumoo' }))(); diff --git a/src/sites/webtoplex/index.css b/src/sites/webtoplex/index.css new file mode 100644 index 0000000..e69de29 diff --git a/src/sites/webtoplex/index.js b/src/sites/webtoplex/index.js new file mode 100644 index 0000000..291f462 --- /dev/null +++ b/src/sites/webtoplex/index.js @@ -0,0 +1,2 @@ +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'webtoplex' }))(); diff --git a/src/sites/youtube/index.js b/src/sites/youtube/index.js index 0e215b7..7512c79 100644 --- a/src/sites/youtube/index.js +++ b/src/sites/youtube/index.js @@ -1,54 +1,2 @@ -let $$ = selector => document.querySelector(selector); - -function isMovie(owner) { - return /\byoutube movies\b/i.test(owner); -} - -function isShow() { - let __title__ = $$('.super-title'); - - return __title__ && /\bs\d+\b.+\be\d+\b/i.test(__title__.textContent); -} - -async function init() { - let owner = $$('#owner-container').textContent.replace(/^\s+|\s+$/g, ''); - - $$('.more-button').click(); // show the year and other information, fails otherwise - - if(isMovie(owner) || isShow()) - await initPlexThingy(isMovie(owner)? 'movie': isShow()? 'show': null); - - $$('.less-button').click(); // close the meta-information -} - -async function initPlexThingy(type) { - let button = renderPlexButton(); - if(!button || !type) - return /* Fail silently */; - - let $title = (type == 'movie'? $$('.title'): $$('#owner-container')), - $date = $$('#content ytd-expander'); - - if(!$title || !$date) - return modifyPlexButton(button, 'error', 'Could not extract title or year from YouTube'); - - let title = $title.textContent.trim(), - year = +$date.textContent.replace(/[^]*(?:release|air) date\s+(?:(?:\d+\/\d+\/)?(\d{2,4}))[^]*/i, ($0, $1, $$, $_) => +$1 < 1000? 2000 + +$1: $1); - - let Db = await getIDs({ title, year, type }), - IMDbID = Db.imdb, - TMDbID = Db.tmdb, - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - - findPlexMedia({ type, title, year, button, IMDbID, TMDbID, TVDbID }); -} - -parseOptions() - .then(() => { - window.addEventListener('popstate', init); - window.addEventListener('pushstate-changed', init); - wait(() => $$('#owner-container'), init) - }); +/* global Update(type:string, details:object) */ +(init = () => Update('SCRIPT', { script: 'youtube' }))(); diff --git a/src/utils.js b/src/utils.js index a276266..28e6d20 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,1694 +1,2540 @@ /* eslint-disable no-unused-vars */ -/* global config */ -function wait(on, then) { - if (on()) - then && then(); - else - setTimeout(() => wait(on, then), 50); -} +/* global configuration, init, Update, "Helpers" */ + +let configuration, init, Update; + +(async date => { + + // default date items + let YEAR = date.getFullYear(), + MONTH = date.getMonth() + 1, + DATE = date.getDate(), + // Notification items + NOTIFIED = false, + RUNNING = false, + // Other items + /* Items that the user has already asked for */ + CAUGHT; + + // simple helpers + let extURL = url => chrome.extension.getURL(url), + $ = (selector, container) => queryBy(selector, container), + // DO NOT EXPOSE + __CONFIG__, ALLOWED, PERMISS; + + let IMG_URL = { + 'nil': extURL('img/null.png'), + 'icon_16': extURL('img/16.png'), + 'icon_48': extURL('img/48.png'), + 'hide_icon_16': extURL('img/hide.16.png'), + 'hide_icon_48': extURL('img/hide.48.png'), + 'show_icon_16': extURL('img/show.16.png'), + 'show_icon_48': extURL('img/show.48.png'), + 'close_icon_16': extURL('img/close.16.png'), + 'close_icon_48': extURL('img/close.48.png'), + 'icon_white_16': extURL('img/_16.png'), + 'icon_white_48': extURL('img/_48.png'), + 'plexit_icon_16': extURL('img/plexit.16.png'), + 'plexit_icon_48': extURL('img/plexit.48.png'), + 'reload_icon_16': extURL('img/reload.16.png'), + 'reload_icon_48': extURL('img/reload.48.png'), + 'icon_outline_16': extURL('img/o16.png'), + 'icon_outline_48': extURL('img/o48.png'), + 'noise_background': extURL('img/noise.png'), + 'settings_icon_16': extURL('img/settings.16.png'), + 'settings_icon_48': extURL('img/settings.48.png'), + }; -let NO_DEBUGGER = false; - -let date = (new Date), - terminal = - NO_DEBUGGER? - { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m }: - console; - -let YEAR = date.getFullYear(), - MONTH = date.getMonth() + 1, - DATE = date.getDate(); - -let getURL = url => chrome.extension.getURL(url); - -let IMG_URL = { - 'i16': getURL('img/16.png'), - 'i48': getURL('img/48.png'), - '_16': getURL('img/_16.png'), - '_48': getURL('img/_48.png'), - 'o16': getURL('img/o16.png'), - 'o48': getURL('img/o48.png'), - 'h16': getURL('img/hide.16.png'), - 'h48': getURL('img/hide.48.png'), - 'j16': getURL('img/show.16.png'), - 'j48': getURL('img/show.48.png'), - 'p16': getURL('img/plexit.16.png'), - 'p48': getURL('img/plexit.48.png'), - 'r16': getURL('img/reload.16.png'), - 'r48': getURL('img/reload.48.png'), - 'x16': getURL('img/close.16.png'), - 'x48': getURL('img/close.48.png'), - 's16': getURL('img/settings.16.png'), - 's48': getURL('img/settings.48.png'), - 'noi': getURL('img/noise.png'), - 'nil': getURL('img/null.png'), -}; + // the storage - priority to sync + const UTILS_STORAGE = chrome.storage.sync || chrome.storage.local; -// the custom "on location change" event -let locationchangecallbacks = []; + async function load(name = '') { + if(!name) + return /* invalid name */; -function watchlocationchange(subject) { - watchlocationchange[subject] = watchlocationchange[subject] || location[subject]; + name = '~/cache/' + (name.toLowerCase().replace(/\s+/g, '_')); - if (watchlocationchange[subject] != location[subject]) { - watchlocationchange[subject] = location[subject]; + return new Promise((resolve, reject) => { + function LOAD(DISK) { + let data = JSON.parse(DISK[name] || null); - for(let index = 0, length = locationchangecallbacks.length, callback; index < length; index++) { - callback = locationchangecallbacks[index]; + return resolve(data); + } - if(callback && typeof callback == 'function') - callback(new Event('locationchange', { bubbles: true })); - } + UTILS_STORAGE.get(null, DISK => { + if(chrome.runtime.lastError) + chrome.storage.local.get(null, LOAD); + else + LOAD(DISK); + }); + }); } -} -Object.defineProperty(window, 'onlocationchange', { - set: callback => locationchangecallbacks.push(callback) -}); + async function save(name = '', data) { + if(!name) + return /* invalid name */; -setInterval(() => watchlocationchange('pathname'), 1000); // at least 1s is needed to properly fire the event ._. + name = '~/cache/' + (name.toLowerCase().replace(/\s+/g, '_')); + data = JSON.stringify(data); -// the storage -const storage = chrome.storage.sync || chrome.storage.local; + // erase entries after 400-500 have been made + UTILS_STORAGE.get(null, items => { + let array = [], bytes = 0; -async function load(name = '') { - if(!name) return; + for(let item in items) { + let object = items[item]; - name = 'Cache-Data/' + btoa(name.toLowerCase().replace(/\s+/g, '')); + array.push(item); + bytes += (typeof object == 'string'? object.length * 8: typeof object == 'boolean'? 8: JSON.stringify(object).length * 8)|0; + } - return new Promise((resolve, reject) => { - function LOAD(DISK) { - let data = JSON.parse(DISK[name] || null); + if((UTILS_STORAGE.MAX_ITEMS && array.length >= UTILS_STORAGE.MAX_ITEMS) || bytes >= UTILS_STORAGE.QUOTA_BYTES) { + UTILS_TERMINAL.warn('Exceeded quota. Erasing cache...'); - return resolve(data); - } + for(let item in items) + if(/^~\/cache\/(?!get|has)/i.test(item)) + UTILS_STORAGE.remove(item); - storage.get(null, DISK => { - if (chrome.runtime.lastError) - chrome.storage.local.get(null, LOAD); - else - LOAD(DISK); + UTILS_TERMINAL.log('Cache erased'); + } }); - }); -} -async function save(name = '', data) { - if(!name) return; + await UTILS_STORAGE.set({[name]: data}, () => data); - name = 'Cache-Data/' + btoa(name.toLowerCase().replace(/\s+/g, '')); - data = JSON.stringify(data); + return name; + } - await storage.set({[name]: data}, () => data); + async function remove(name) { + if(!name) + return /* invalid name */; - return name; -} + return await UTILS_STORAGE.remove(['~/cache/' + (name.toLowerCase().replace(/\s+/g, '_'))]); + } -async function kill(name) { - return storage.remove(['Cache-Data/' + btoa(name.toLowerCase().replace(/\s+/g, ''))]); -} + function encode(data) { + if(/^[\u0000-\u00ff]+$/.test(data)) + return btoa(data); + else + return data; + } -// create and/or queue a notification -// state = "error" - red -// state = "update" - blue -// state = "info" - grey -// anything else for state will show as orange -class Notification { - constructor(state, text, timeout = 7000, callback = () => {}, requiresClick = true) { - let queue = (Notification.queue = Notification.queue || { list: [] }), - last = queue.list[queue.list.length - 1]; + function decode(data) { + if(/^[a-z\d\+\/\=]+$/i.test(data)) + return atob(data); + else + return data; + } - if (last && last.done === false) - return (last => setTimeout(() => new Notification(state, text, timeout, callback, requiresClick), +(new Date) - last.start))(last); + /* Notifications */ + // create and/or queue a notification + // state = "warning" - red + // state = "error" + // state = "update" - blue + // state = "info" - grey + // anything else for state will show as orange + class Notification { + constructor(state, text, timeout = 7000, callback = () => {}, requiresClick = true) { + let queue = (Notification.queue = Notification.queue || { list: [] }), + last = queue.list[queue.list.length - 1] || document.queryBy('.web-to-plex-notification').first; + + if(!__CONFIG__) { + Options(); + + throw 'No configuration saved...'; + } - let element = document.furnish(`div.web-to-plex-notification.${state}`, { - onclick: event => { - let notification = Notification.queue[event.target.id], - element = notification.element; + if(((state == 'error' || state == 'warning') && __CONFIG__.NotifyNewOnly && /\balready\s+(exists?|(been\s+)?added)\b/.test(text)) || (__CONFIG__.NotifyOnlyOnce && NOTIFIED && state === 'info')) + return /* Don't match /.../i as to not match item titles */; + NOTIFIED = true; - notification.done = true; - Notification.queue.list.splice(notification.index, 1); - clearTimeout(notification.job); - element.remove(); + if(last && !last.done) + return (last => setTimeout(() => new Notification(state, text, timeout, callback, requiresClick), +(new Date) - last.start))(last); - let removed = delete Notification.queue[notification.id]; + let element = furnish(`div.web-to-plex-notification.${state}`, { + onmouseup: event => { + let notification = Notification.queue[event.target.id], + element = notification.element; - return (event.requiresClick)? null: notification.callback(removed); - } - }, text); - - queue[element.id = +(new Date)] = { - start: +element.id, - stop: +element.id + timeout, - span: +timeout, - done: false, - index: queue.list.length, - job: setTimeout(() => element.onclick({ target: element, requiresClick }), timeout), - id: +element.id, - callback, element - }; - queue.list.push(queue[element.id]); + notification.done = true; + Notification.queue.list.splice(notification.index, 1); + clearTimeout(notification.job); + element.remove(); - document.body.appendChild(element); + let removed = delete Notification.queue[notification.id]; - return queue[element.id]; + return (event.requiresClick)? null: notification.callback(removed); + } + }, text); + + queue[element.id = +(new Date)] = { + start: +element.id, + stop: +element.id + timeout, + span: +timeout, + done: false, + index: queue.list.length, + job: setTimeout(() => element.onmouseup({ target: element, requiresClick }), timeout), + id: +element.id, + callback, element + }; + queue.list.push(queue[element.id]); + + document.body.appendChild(element); + + return queue[element.id]; + } } -} - -class Prompt { - constructor(prompt_type, options, callback = () => {}, container = document.body) { - let prompt, remove, - array = (options instanceof Array? options: [].slice.call(options)), - data = [...array]; - - switch(prompt_type) { - /* Allows the user to add and remove items from a list */ - case 'prompt': - case 'input': - remove = element => { - let prompter = document.queryBy('.web-to-plex-prompt').first, - header = document.queryBy('.web-to-plex-prompt-header').first, - counter = document.queryBy('.web-to-plex-prompt-options').first; - - if(element === true) - return prompter.remove(); - else - element.remove(); - data.splice(+element.value, 1, null); - header.innerText = 'Approve ' + counter.children.length + (counter.children.length == 1?' item': ' items'); + class Prompt { + constructor(prompt_type, options, callback = () => {}, container = document.body) { + let prompt, remove, + array = (options instanceof Array? options: [].slice.call(options)), + data = [...array], + profiles = { + movie: JSON.parse( + __CONFIG__.usingRadarr? + __CONFIG__.radarrQualities: + __CONFIG__.usingWatcher? + __CONFIG__.watcherQualities: + '[]' + ), + show: JSON.parse( + __CONFIG__.usingSonarr? + __CONFIG__.sonarrQualities: + __CONFIG__.usingMedusa? + __CONFIG__.medusaQualities: + __CONFIG__.usingSickBeard? + __CONFIG__.sickBeardQualities: + '[]' + ) + }, + locations = { + movie: JSON.parse( + __CONFIG__.usingRadarr? + __CONFIG__.radarrStoragePaths: + __CONFIG__.usingWatcher? + __CONFIG__.watcherStoragePaths: + '[]' + ), + show: JSON.parse( + __CONFIG__.usingSonarr? + __CONFIG__.sonarrStoragePaths: + __CONFIG__.usingMedusa? + __CONFIG__.medusaStoragePaths: + __CONFIG__.usingSickBeard? + __CONFIG__.sickBeardStoragePaths: + '[]' + ) + }, + defaults = { + movie: ( + __CONFIG__.usingRadarr? + { quality: __CONFIG__.__radarrQuality, location: __CONFIG__.__radarrStoragePath }: + {} + ), + show: ( + __CONFIG__.usingSonarr? + { quality: __CONFIG__.__sonarrQuality, location: __CONFIG__.__sonarrStoragePath }: + __CONFIG__.usingMedusa? + { quality: __CONFIG__.__medusaQuality, location: __CONFIG__.__medusaStoragePath }: + __CONFIG__.usingSickBeard? + { quality: __CONFIG__.__sickBeardQuality, location: __CONFIG__.__sickBeardStoragePath }: + {} + ) }; - prompt = document.furnish('div.web-to-plex-prompt', {}, - document.furnish('div.web-to-plex-prompt-body', {}, - // The prompt's title - document.furnish('h1.web-to-plex-prompt-header', {}, 'Approve ' + array.length + (array.length == 1? ' item': ' items')), - - // The prompt's items - document.furnish('div.web-to-plex-prompt-options', {}, - ...(ITEMS => { - let elements = []; - - for(let index = 0, length = ITEMS.length, ITEM; index < length; index++) - ITEM = ITEMS[index], - elements.push( - document.furnish('li.web-to-plex-prompt-option.mutable', { value: index, innerHTML: `${ ITEM.title }${ ITEM.year? ` (${ ITEM.year })`: '' } \u2014 ${ ITEM.type }` }, - document.furnish('button', { title: `Remove "${ ITEM.title }"`, onclick: event => { remove(event.target.parentElement); event.target.remove() } }) - ), - ); - - return elements - })(array) - ), - - // The engagers - document.furnish('div.web-to-plex-prompt-footer', {}, - document.furnish('input.web-to-plex-prompt-input[type=text]', { placeholder: 'Add an item (enter to add): Title (Year) Type / ID Type', title: 'Solo: A Star Wars Story (2018) movie / tt3778644 m', onkeydown: async event => { - if (event.keyCode === 13) { - let title, year, type, self = event.target, R = RegExp, - movie = /^(m(?:ovies?)?|f(?:ilms?)?|c(?:inemas?)?)/i, - Db, IMDbID, TMDbID, TVDbID, value = self.value; - - self.setAttribute('disabled', self.disabled = true); - self.value = `Searching for "${ value }"...`; - data = data.filter(value => value !== null && value !== undefined); - - if(/^\s*((?:tt)?\d+)(?:\s+(\w+)|\s*)?$/i.test(value)) { - let APIID = R.$1, - type = R.$2 || (data.length? data[0].type: 'movie'), - APIType = movie.test(type)? /^tt/i.test(APIID)? 'imdb': 'tmdb': 'tvdb'; - - type = movie.test(type)? 'movie': 'show'; - - Db = await getIDs({ type, APIID, APIType }); - IMDbID = Db.imdb; - TMDbID = Db.tmdb; - TVDbID = Db.tvdb; - - title = Db.title; - year = Db.year; - } else if(/^([^]+)(\s*\(\d{2,4}\)\s*|\s+\d{2,4}\s+)([\w\s\-]+)$/.test(value)) { - title = R.$1; - year = R.$2 || YEAR + ''; - type = R.$3 || (data.length? data[0].type: 'movie'); - - year = +year.replace(/\D/g, '').replace(/^\d{2}$/, '20$&'); - type = movie.test(type)? 'movie': 'show'; - - Db = await getIDs({ type, title, year }); - IMDbID = Db.imdb; - TMDbID = Db.tmdb; - TVDbID = Db.tvdb; + switch(prompt_type) { + /* Allows the user to add and remove items from a list */ + case 'prompt': + case 'input': + remove = element => { + let prompter = $('.web-to-plex-prompt').first, + header = $('.web-to-plex-prompt-header').first, + counter = $('.web-to-plex-prompt-options').first; + + if(element === true) + return prompter.remove(); + else + element.remove(); + + data.splice(+element.value, 1, null); + header.innerText = 'Approve ' + counter.children.length + (counter.children.length == 1?' item': ' items'); + }; + + prompt = furnish('div.web-to-plex-prompt', {}, + furnish('div.web-to-plex-prompt-body', {}, + // The prompt's title + furnish('h1.web-to-plex-prompt-header', {}, 'Approve ' + array.length + (array.length == 1? ' item': ' items')), + + // The prompt's items + furnish('div.web-to-plex-prompt-options', {}, + ...(ITEMS => { + let elements = []; + + for(let index = 0, length = ITEMS.length, ITEM, P_QUA, P_LOC; index < length; index++) { + ITEM = ITEMS[index]; + + elements.push( + furnish('li.web-to-plex-prompt-option.mutable', { value: index, innerHTML: `

${ index + 1 } \u00b7 ${ ITEM.title }${ ITEM.year? ` (${ ITEM.year })`: '' } \u2014 ${ ITEM.type }

` }, + furnish('button.remove', { title: `Remove "${ ITEM.title }"`, onmouseup: event => { remove(event.target.parentElement); event.target.remove() } }), + ( + __CONFIG__.PromptQuality? + P_QUA = furnish('select.quality', { index, onchange: event => data[event.target.getAttribute('index')].quality = event.target.value }, ...profiles[/(movie|film|cinema)/i.test(ITEM.type)?'movie':'show'].map(Q => furnish('option', { value: Q.id }, Q.name))): + '' + ),( + __CONFIG__.PromptLocation? + P_LOC = furnish('select.location', { index, onchange: event => data[event.target.getAttribute('index')].location = event.target.value }, ...locations[/(movie|film|cinema)/i.test(ITEM.type)?'movie':'show'].map(Q => furnish('option', { value: Q.id }, Q.path))): + '' + ) + ) + ); + + if(P_QUA) P_QUA.value = defaults[ITEM.type].quality; + if(P_LOC) P_LOC.value = defaults[ITEM.type].location; + + P_QUA = P_LOC = null; } - event.preventDefault(); - if(type && title && !(/^(?:tt)?$/i.test(IMDbID || '') && /^0?$/.test(+TMDbID | 0) && /^0?$/.test(+TVDbID | 0))) { - remove(true); - new Prompt(prompt_type, [{ ...Db, type, IMDbID, TMDbID, TVDbID }, ...data], callback, container); - } else { - self.disabled = self.removeAttribute('disabled'); - self.value = value; - new Notification('error', `Couldn't find "${ value }"`); + return elements + })(array) + ), + + // The engagers + furnish('div.web-to-plex-prompt-footer', {}, + furnish('input.web-to-plex-prompt-input[type=text]', { placeholder: 'Add an item (enter to add): Title (Year) Type / ID Type', title: 'Solo: A Star Wars Story (2018) movie / tt3778644 m', onkeydown: async event => { + if(event.keyCode == 13) { + let title, year, type, self = event.target, R = RegExp, + movie = /^(m(?:ovies?)?|f(?:ilms?)?|c(?:inemas?)?)/i, + Db, IMDbID, TMDbID, TVDbID, value = self.value; + + self.setAttribute('disabled', self.disabled = true); + self.value = `Searching for "${ value }"...`; + data = data.filter(value => value !== null && value !== undefined); + + if(/^\s*((?:tt)?\d+)(?:\s+(\w+)|\s*)?$/i.test(value)) { + let APIID = R.$1, + type = R.$2 || (data.length? data[0].type: 'movie'), + APIType = movie.test(type)? /^tt/i.test(APIID)? 'imdb': 'tmdb': 'tvdb'; + + type = movie.test(type)? 'movie': 'show'; + + Db = await Identify({ type, APIID, APIType }); + IMDbID = Db.imdb; + TMDbID = Db.tmdb; + TVDbID = Db.tvdb; + + title = Db.title; + year = Db.year; + } else if(/^([^]+)(\s*\(\d{2,4}\)\s*|\s+\d{2,4}\s+)([\w\s\-]+)$/.test(value)) { + title = R.$1; + year = R.$2 || YEAR + ''; + type = R.$3 || (data.length? data[0].type: 'movie'); + + year = +year.replace(/\D/g, '').replace(/^\d{2}$/, '20$&'); + type = movie.test(type)? 'movie': 'show'; + + Db = await Identify({ type, title, year }); + IMDbID = Db.imdb; + TMDbID = Db.tmdb; + TVDbID = Db.tvdb; + } + + event.preventDefault(); + if(type && title && !(/^(?:tt)?$/i.test(IMDbID || '') && /^0?$/.test(+TMDbID | 0) && /^0?$/.test(+TVDbID | 0))) { + remove(true); + new Prompt(prompt_type, [{ ...Db, type, IMDbID, TMDbID, TVDbID }, ...data], callback, container); + } else { + self.disabled = self.removeAttribute('disabled'); + self.value = value; + new Notification('error', `Couldn't find "${ value }"`); + } } - } - } }), - document.furnish('button.web-to-plex-prompt-decline', { onclick: event => { remove(true); callback([]) } }, 'Close'), - document.furnish('button.web-to-plex-prompt-accept', { onclick: event => { remove(true); new Prompt(prompt_type, options, callback, container) } }, 'Reset'), - document.furnish('button.web-to-plex-prompt-accept', { onclick: event => { remove(true); callback(data.filter(value => value !== null && value !== undefined)) } }, 'Continue') + } }), + furnish('button.web-to-plex-prompt-decline', { onmouseup: event => { remove(true); callback([]) }, title: 'Close' }, '\u2718'), + furnish('button.web-to-plex-prompt-accept', { onmouseup: event => { remove(true); new Prompt(prompt_type, options, callback, container) }, title: 'Reset' }, '\u21BA'), + furnish('button.web-to-plex-prompt-accept', { onmouseup: event => { remove(true); callback(data.filter(value => value !== null && value !== undefined)) }, title: 'Continue' }, '\u2714') + ) ) - ) - ); - break; + ); + break; + + /* Allows the user to remove predetermined items */ + case 'select': + remove = element => { + let prompter = $('.web-to-plex-prompt').first, + header = $('.web-to-plex-prompt-header').first, + counter = $('.web-to-plex-prompt-options').first; + + if(element === true) + return prompter.remove(); + else + element.remove(); + + data.splice(+element.value, 1, null); + header.innerText = 'Approve ' + counter.children.length + (counter.children.length == 1?' item': ' items'); + }; + + prompt = furnish('div.web-to-plex-prompt', {}, + furnish('div.web-to-plex-prompt-body', {}, + // The prompt's title + furnish('h1.web-to-plex-prompt-header', {}, 'Approve ' + array.length + (array.length == 1? ' item': ' items')), + + // The prompt's items + furnish('div.web-to-plex-prompt-options', {}, + ...(ITEMS => { + let elements = []; + + for(let index = 0, length = ITEMS.length, ITEM, P_QUA, P_LOC; index < length; index++) { + ITEM = ITEMS[index]; + + elements.push( + furnish('li.web-to-plex-prompt-option.mutable', { value: index, innerHTML: `

${ index + 1 } \u00b7 ${ ITEM.title }${ ITEM.year? ` (${ ITEM.year })`: '' } \u2014 ${ ITEM.type }

` }, + furnish('button.remove', { title: `Remove "${ ITEM.title }"`, onmouseup: event => { remove(event.target.parentElement); event.target.remove() } }), + ( + __CONFIG__.PromptQuality? + P_QUA = furnish('select.quality', { index, onchange: event => data[event.target.getAttribute('index')].quality = event.target.value }, ...profiles[/(movie|film|cinema)/i.test(ITEM.type)?'movie':'show'].map(Q => furnish('option', { value: Q.id }, Q.name))): + '' + ),( + __CONFIG__.PromptLocation? + P_LOC = furnish('select.location', { index, onchange: event => data[event.target.getAttribute('index')].location = event.target.value }, ...locations[/(movie|film|cinema)/i.test(ITEM.type)?'movie':'show'].map(Q => furnish('option', { value: Q.id }, Q.path))): + '' + ) + ) + ); + + if(P_QUA) P_QUA.value = defaults[ITEM.type].quality; + if(P_LOC) P_LOC.value = defaults[ITEM.type].location; + + P_QUA = P_LOC = null; + } - /* Allows the user to remove predetermined items */ - case 'select': - remove = element => { - let prompter = document.queryBy('.web-to-plex-prompt').first, - header = document.queryBy('.web-to-plex-prompt-header').first, - counter = document.queryBy('.web-to-plex-prompt-options').first; + return elements + })(array) + ), - if(element === true) - return prompter.remove(); - else - element.remove(); + // The engagers + furnish('div.web-to-plex-prompt-footer', {}, + furnish('button.web-to-plex-prompt-decline', { onmouseup: event => { remove(true); callback([]) }, title: 'Close' }, '\u2718'), + furnish('button.web-to-plex-prompt-accept', { onmouseup: event => { remove(true); new Prompt(prompt_type, options, callback, container) }, title: 'Reset' }, '\u21BA'), + furnish('button.web-to-plex-prompt-accept', { onmouseup: event => { remove(true); callback(data.filter(value => value !== null && value !== undefined)) }, title: 'Continue' }, '\u2714') + ) + ) + ); + break; + + /* Allows the user to modify a single item (before being pushed) */ + case 'modify': + let { title, year, type, IMDbID, TMDbID, TVDbID } = options, + P_QUA, P_LOC; + + let i = IMDbID, + t = TMDbID, + v = TVDbID, + s = 'style="text-decoration: none !important; color: #cc7b19 !important; font-style: italic !important;" target="_blank"'; + + i = /^tt-?$/.test(i)? '': i; + t = /^0?$/.test(t)? '': t; + v = /^0?$/.test(v)? '': v; + + remove = element => { + let prompter = $('.web-to-plex-prompt').first, + header = $('.web-to-plex-prompt-header').first, + counter = $('.web-to-plex-prompt-options').first; + + if(element === true) + return prompter.remove(); + else + element.remove(); + }; + + type = /(movie|film|cinema)/i.test(type)?'movie':'show'; + + prompt = furnish('div.web-to-plex-prompt', {}, + furnish('div.web-to-plex-prompt-body', {}, + // The prompt's title + furnish('h1.web-to-plex-prompt-header', { innerHTML: `${ title }${ year? ` (${ year })`: '' } \u2014 ${ type }` }), + + // The prompt's items + furnish('div.web-to-plex-prompt-options', {}, + furnish('div.web-to-plex-prompt-option', { innerHTML: `${ i? `${i}`: '/' } \u2014 ${ t? `${t}`: '/' } \u2014 ${ v? `${v}`: '/' }` }), + ( + __CONFIG__.PromptQuality? + P_QUA = furnish('select.quality', { onchange: event => options.quality = event.target.value }, ...profiles[type].map(Q => furnish('option', { value: Q.id }, Q.name))): + '' + ), + furnish('br'), + ( + __CONFIG__.PromptLocation? + P_LOC = furnish('select.location', { onchange: event => options.location = event.target.value }, ...locations[type].map(Q => furnish('option', { value: Q.id }, Q.path))): + '' + ) + ), + + // The engagers + furnish('div.web-to-plex-prompt-footer', {}, + furnish('button.web-to-plex-prompt-decline', { onmouseup: event => { remove(true); callback([]) }, title: 'Close' }, '\u2718'), + furnish('button.web-to-plex-prompt-accept', { onmouseup: event => { remove(true); new Prompt(prompt_type, options, callback, container) }, title: 'Reset' }, '\u21BA'), + furnish('button.web-to-plex-prompt-accept', { onmouseup: event => { remove(true); callback(options) }, title: 'Continue' }, '\u2714') + ) + ) + ); - data.splice(+element.value, 1, null); - header.innerText = 'Approve ' + counter.children.length + (counter.children.length == 1?' item': ' items'); - }; + if(P_QUA) P_QUA.value = defaults[type].quality; + if(P_LOC) P_LOC.value = defaults[type].location; + + P_QUA = P_LOC = null; + break; + + case 'permission': + let { permission, name, alias } = options; + let existing, permissions; + + /* Only one permission prompt allowed */ + if(!(existing = $('.web-to-plex-prompt[type=permission]')).empty) + return existing.first; - prompt = document.furnish('div.web-to-plex-prompt', {}, - document.furnish('div.web-to-plex-prompt-body', {}, - // The prompt's title - document.furnish('h1.web-to-plex-prompt-header', {}, 'Approve ' + array.length + (array.length == 1? ' item': ' items')), - - // The prompt's items - document.furnish('div.web-to-plex-prompt-options', {}, - ...(ITEMS => { - let elements = []; - - for(let index = 0, length = ITEMS.length, ITEM; index < length; index++) - ITEM = ITEMS[index], - elements.push( - document.furnish('li.web-to-plex-prompt-option.mutable', { value: index, innerHTML: `${ ITEM.title }${ ITEM.year? ` (${ ITEM.year })`: '' } \u2014 ${ ITEM.type }` }, - document.furnish('button', { title: `Remove "${ ITEM.title }"`, onclick: event => { remove(event.target.parentElement); event.target.remove() } }) - ), - ); - - return elements - })(array) - ), - - // The engagers - document.furnish('div.web-to-plex-prompt-footer', {}, - document.furnish('button.web-to-plex-prompt-decline', { onclick: event => { remove(true); callback([]) } }, 'Close'), - document.furnish('button.web-to-plex-prompt-accept', { onclick: event => { remove(true); new Prompt(prompt_type, options, callback, container) } }, 'Reset'), - document.furnish('button.web-to-plex-prompt-accept', { onclick: event => { remove(true); callback(data.filter(value => value !== null && value !== undefined)) } }, 'Continue') + UTILS_TERMINAL.log(`Asking for permission(s):`, options); + + remove = element => { + let prompter = $('.web-to-plex-prompt').first, + header = $('.web-to-plex-prompt-header').first, + counter = $('.web-to-plex-prompt-options').first; + + if(element === true) + return prompter.remove(); + else + element.remove(); + }; + + callback = (allowed, permissions) => { + save(`has/${ name }`, allowed); + save(`get/${ name }`, permissions); + + ALLOWED = allowed; + PERMISS = permissions; + + ParsedOptions(); + + return Update(`GRANT_PERMISSION`, { allowed, permissions }, true), + (init && !RUNNING? (init(), RUNNING = true): RUNNING = false); + }; + + prompt = furnish('div.web-to-plex-prompt', {}, + furnish('div.web-to-plex-prompt-body', {}, + // The prompt's title + furnish('h1.web-to-plex-prompt-header', { innerHTML: `${ alias || name } (${ location.host }) would like:` }), + + // The prompt's items + furnish('div.web-to-plex-prompt-options', {}, + ...((permissions = permission.split(/\s*,\s*/).filter(v=>v&&v.length)).map( + __permission => + furnish('div.web-to-plex-prompt-option', { innerHTML: `Access to your ${ __permission } information` }) + ) + ) + ), + + + // The engagers + furnish('div.web-to-plex-prompt-footer', {}, + furnish('button.web-to-plex-prompt-decline', { onmouseup: event => { remove(true); callback(false, {}) }, title: 'Deny' }, '\u2718'), + furnish('button.web-to-plex-prompt-accept', { onmouseup: event => { remove(true); callback(true, permissions) }, title: 'Allow' }, '\u2714') + ) ) - ) - ); - break; + ); + break; - default: - return terminal.warn(`Unknown prompt type "${ prompt_type }"`); - break; + default: + return UTILS_TERMINAL.warn(`Unknown prompt type "${ prompt_type }"`); + break; + } + + prompt.setAttribute('type', prompt_type); + + return container.append(prompt), prompt; } + } - return container.append(prompt), prompt; + // open up the options page + function Options() { + chrome.runtime.sendMessage({ + type: 'OPEN_OPTIONS' + }); } -} -// Send an update query to background.js -function sendUpdate(type, options = {}) { - terminal.log(`Requesting update: ${ type }`, options); + // "secret frame" + function sFrame(url, callbacks) { + let { success, error } = callbacks; - chrome.runtime.sendMessage({ - type, - options - }); -} + let frame = document.furnish('iframe#web-to-plex-sframe', { + src: url, + style: ` + display: none !important; + opacity: 0 !important; + visibility: hidden !important; + `, -// get the saved options -function $getOptions() { - return new Promise((resolve, reject) => { - function handleOptions(options) { - if ((!options.plexToken || !options.servers) && !options.DO_NOT_USE) - return reject(new Error('Required options are missing')), - null; - - let server, o; - - if (!options.DO_NOT_USE) { - // For now we support only one Plex server, but the options already - // allow multiple for easy migration in the future. - server = options.servers[0]; - o = { - server: { - ...server, - // Compatibility for users who have not updated their settings yet. - connections: server.connections || [{ uri: server.url }] - }, - ...options - }; + onload: success, + onerror: error, + }); - options.plexURL = o.plexURL? - `${ o.plexURL }web#!/server/${ o.server.id }/`: - `https://app.plex.tv/web/app#!/server/${ o.server.id }/`; - } else { - o = options; - } + // todo: make iframe, load, delete + document.body.append(frame); + } - if (o.couchpotatoBasicAuthUsername) - o.couchpotatoBasicAuth = { - username: o.couchpotatoBasicAuthUsername, - password: o.couchpotatoBasicAuthPassword - }; + // Send an update query to background.js + Update = (type, options = {}, postToo) => { + if(configuration) + UTILS_TERMINAL.log(`Requesting update [post-to-top: ${ !!postToo }]: ${ type }`, options); + else + return sFrame(extURL(`options/index.html#save`), { + success: async event => { + let self = event.target; - // TODO: stupid copy/pasta - if (o.watcherBasicAuthUsername) - o.watcherBasicAuth = { - username: o.watcherBasicAuthUsername, - password: o.watcherBasicAuthPassword - }; + await ParsedOptions(); - if (o.radarrBasicAuthUsername) - o.radarrBasicAuth = { - username: o.radarrBasicAuthUsername, - password: o.radarrBasicAuthPassword - }; + Update(type, options, postToo); - if (o.sonarrBasicAuthUsername) - o.sonarrBasicAuth = { - username: o.sonarrBasicAuthUsername, - password: o.sonarrBasicAuthPassword - }; + self.remove(); + }, - if (o.ombiURLRoot && o.ombiToken) { - o.ombiURL = o.ombiURLRoot; - } else { - delete o.ombiURL; // prevent variable ghosting - } + error: async event => { + let self = event.target; + self.remove(); - if (o.couchpotatoURLRoot && o.couchpotatoToken) { - o.couchpotatoURL = `${ items.couchpotatoURLRoot }/api/${encodeURIComponent(o.couchpotatoToken)}`; - } else { - delete o.couchpotatoURL; // prevent variable ghosting - } + new Notification('error', `Fill in missing Web to Plex options`, 15000, Options, false); - if (o.watcherURLRoot && o.watcherToken) { - o.watcherURL = o.watcherURLRoot; - } else { - delete o.watcherURL; // prevent variable ghosting - } + throw `Unable to set configuration variable: ${ JSON.stringify(configuration) }`; + } + }); - if (o.radarrURLRoot && o.radarrToken) { - o.radarrURL = o.radarrURLRoot; - } else { - delete o.radarrURL; // prevent variable ghosting - } + chrome.runtime.sendMessage({ + type, + options + }); - if (o.sonarrURLRoot && o.sonarrToken) { - o.sonarrURL = o.sonarrURLRoot; - } else { - delete o.sonarrURL; // prevent variable ghosting - } + if(postToo) + top.postMessage(options); + }; - resolve(o); - } + // get the saved options + function options() { + return new Promise((resolve, reject) => { + function handleOptions(options) { + if((!options.plexToken || !options.servers) && !options.IGNORE_PLEX) + return reject(new Error('Required options are missing')), + null; + + let server, o; + + if(!options.IGNORE_PLEX) { + // For now we support only one Plex server, but the options already + // allow multiple for easy migration in the future. + server = options.servers[0]; + o = { + server: { + ...server, + // Compatibility for users who have not updated their settings yet. + connections: server.connections || [{ uri: server.url }] + }, + ...options + }; + + options.plexURL = o.plexURL? + `${ o.plexURL }web#!/server/${ o.server.id }/`: + `https://app.plex.tv/web/app#!/server/${ o.server.id }/`; + } else { + o = options; + } - storage.get(null, options => { - if (chrome.runtime.lastError) - chrome.storage.local.get(null, handleOptions); - else - handleOptions(options); - }); - }); -} + if(o.couchpotatoBasicAuthUsername) + o.couchpotatoBasicAuth = { + username: o.couchpotatoBasicAuthUsername, + password: o.couchpotatoBasicAuthPassword + }; + + // TODO: stupid copy/pasta + if(o.watcherBasicAuthUsername) + o.watcherBasicAuth = { + username: o.watcherBasicAuthUsername, + password: o.watcherBasicAuthPassword + }; + + if(o.radarrBasicAuthUsername) + o.radarrBasicAuth = { + username: o.radarrBasicAuthUsername, + password: o.radarrBasicAuthPassword + }; + + if(o.sonarrBasicAuthUsername) + o.sonarrBasicAuth = { + username: o.sonarrBasicAuthUsername, + password: o.sonarrBasicAuthPassword + }; + + if(o.medusaBasicAuthUsername) + o.medusaBasicAuth = { + username: o.medusaBasicAuthUsername, + password: o.medusaBasicAuthPassword + }; + + if(o.sickBeardBasicAuthUsername) + o.sickBeardBasicAuth = { + username: o.sickBeardBasicAuthUsername, + password: o.sickBeardBasicAuthPassword + }; + + if(o.usingOmbi && o.ombiURLRoot && o.ombiToken) { + o.ombiURL = o.ombiURLRoot; + } else { + delete o.ombiURL; // prevent variable ghosting + } -// self explanatory -function openOptionsPage() { - chrome.runtime.sendMessage({ - type: 'OPEN_OPTIONS' - }); -} + if(o.usingCouchPotato && o.couchpotatoURLRoot && o.couchpotatoToken) { + o.couchpotatoURL = `${ items.couchpotatoURLRoot }/api/${encodeURIComponent(o.couchpotatoToken)}`; + } else { + delete o.couchpotatoURL; // prevent variable ghosting + } -// self explanatory, returns an object -function parseOptions() { - return $getOptions() - .then( - options => (config = options), - error => { - new Notification( - 'warning', - 'Fill in missing Web to Plex options', - 15000, - openOptionsPage - ); - throw error; + if(o.usingWatcher && o.watcherURLRoot && o.watcherToken) { + o.watcherURL = o.watcherURLRoot; + } else { + delete o.watcherURL; // prevent variable ghosting + } + + if(o.usingRadarr && o.radarrURLRoot && o.radarrToken) { + o.radarrURL = o.radarrURLRoot; + } else { + delete o.radarrURL; // prevent variable ghosting + } + + if(o.usingSonarr && o.sonarrURLRoot && o.sonarrToken) { + o.sonarrURL = o.sonarrURLRoot; + } else { + delete o.sonarrURL; // prevent variable ghosting + } + + if(o.usingMedusa && o.medusaURLRoot && o.medusaToken) { + o.medusaURL = o.medusaURLRoot; + } else { + delete o.medusaURL; // prevent variable ghosting + } + + if(o.usingSickBeard && o.sickBeardURLRoot && o.sickBeardToken) { + o.sickBeardURL = o.sickBeardURLRoot; + } else { + delete o.sickBeardURL; // prevent variable ghosting + } + + resolve(o); } - ); -} -let config = parseOptions(), - AUTO_GRAB = { - ENABLED: config.UseAutoGrab, - LIMIT: config.AutoGrabLimit, - }; + UTILS_STORAGE.get(null, options => { + if(chrome.runtime.lastError) + chrome.storage.local.get(null, handleOptions); + else + handleOptions(options); + }); + }); + } -function HandleProxyHeaders(Headers = "", URL = "") { - let headers = {}; + // self explanatory, returns an object; sets the configuration variable + function ParsedOptions() { + return options() + .then( + options => { + configuration = {}; + + /* Don't expose the user's authentication information to sites */ + for(let key in options) + if(/username|password|token|api|server|url|storage|cache/i.test(key)) + if(ALLOWED && RegExp(PERMISS.join('|'),'i').test(key)) + configuration[key] = options[key]; + else + /* Do nothing */; + // else if(/(^cache-data|paths|qualities)/i.test(key)) + // /* Pre-parse JSON - make sure anything accessing thedata handles objects too */ + // configuration[key] = JSON.parse(options[key] || null); + else + /* Simple copy */ + configuration[key] = options[key]; - Headers.replace(/^[ \t]*([^\=\s]+)[ \t]*=[ \t]*((["'`])(?:[^\\\3]*|\\.)\3|[^\f\n\r\v]*)/gm, ($0, $1, $2, $3, $$, $_) => { - let string = !!$3; + CAUGHT = JSON.parse(options.__caught); + CAUGHT.bump = async(ids) => { + for(let id in ids) + CAUGHT[id.toLowerCase().slice(0, 4)].push(ids[id]); - if(string) { - headers[$1] = $2.replace(RegExp(`^${ $3 }|${ $3 }$`, 'g'), ''); - } else { - $2 = $2.replace(/@([\w\.]+)/g, (_0, _1, _$, __) => { - let path = _1.split('.'), property = top; + let __caught = JSON.stringify(CAUGHT); - for(let index = 0, length = path.length; index < length; index++) - property = property[path[index]]; + await UTILS_STORAGE.set({ __caught }, () => configuration.__caught = __caught); + }; - headers[$1] = property; - }) - .replace(/@\{b(ase-?)?64-url\}/gi, btoa(URL)) - .replace(/@\{enc(ode)?-url\}/gi, encodeURIComponent(URL)) - .replace(/@\{(raw-)?url\}/gi, URL); - } - }); + return __CONFIG__ = options; + }, + error => { + new Notification( + 'warning', + 'Fill in missing Web to Plex options', + 15000, + Options + ); + throw error; + } + ); + } - return headers; -} + await ParsedOptions(); -// fetch/search for the item's media ID(s) -async function getIDs({ title, year, type, IMDbID, TMDbID, TVDbID, APIType, APIID, meta, rerun }) { - let json = {}, // returned object - data = {}, // mutated object - promise, // query promise - api = { - tmdb: config.TMDbAPI || 'bcb95f026f9a01ffa707fcff71900e94', - omdb: config.OMDbAPI || 'PlzBanMe', - ombi: config.ombiToken, + let AUTO_GRAB = { + ENABLED: __CONFIG__.UseAutoGrab, + LIMIT: __CONFIG__.AutoGrabLimit, }, - apit = APIType || type, // api type (depends on "rqut") - apid = APIID || null, // api id - iid = IMDbID || null, // IMDbID - mid = TMDbID || null, // TMDbID - tid = TVDbID || null, // TVDbID - rqut = apit, // request type: tmdb, imdb, or tvdb - manable = config.ManagerSearch && !rerun; // is the user's "Manager Searches" option enabled? - - type = type || null; - meta = { ...meta, mode: 'cors' }; - rqut = - /(tv|show|series)/i.test(rqut)? - 'tvdb': - /(movie|film)/i.test(rqut)? - 'tmdb': - rqut || '*'; - manable = manable && (config.ombiURL || (config.radarrURL && rqut == 'tmdb') || (config.sonarrURL && rqut == 'tvdb')); - title = (title? title.replace(/\s*[\:,]\s*Season\s+\d+.*$/i, '').toCaps(): "") - .replace(/\u201a/g, ',') // fancy comma - .replace(/[\u2019\u201b]/g, "'") // fancy apostrophe - .replace(/[\u201c\u201d]/g, '"') // fancy quotation marks - .replace(/[^\u0000-\u00ff]+/g, ''); // only accept UTF-8 characters - year = year? (year + '').replace(/\D+/g, ''): year; - - let plus = (string, character = '+') => string.replace(/\s+/g, character); - - let local, savename; - - if(year) { - savename = `${title} (${year}).${rqut}`.toLowerCase(), - local = await load(savename); - } else { - year = await load(`${title}.${rqut}`.toLowerCase()) || year; - `${title} (${year}).${rqut}`.toLowerCase(); - local = await load(savename); - } + UTILS_DEVELOPER = __CONFIG__.DeveloperMode, // = { true: Developer Mode, fase: Standard Mode } + UTILS_TERMINAL = + UTILS_DEVELOPER? + console: + { error: m => m, info: m => m, log: m => m, warn: m => m, group: m => m, groupEnd: m => m, honor: m => m }; + + UTILS_TERMINAL.honor = UTILS_TERMINAL.honor? + UTILS_TERMINAL.honor: + (...messages) => { + if(messages.length == 1) { + let message = messages[0], + type = typeof message == 'object'? 'o': 'c'; + + UTILS_TERMINAL.log( + (type == 'o'? message: `%${ type }>> ${ message } <<`), + ( + type == 'o'? + null: + ` + background-color: #00332b; + border-bottom: 1px solid #0000; + border-top: 1px solid #065; + box-sizing: border-box; + clear: right; + color: #f5f5f5; + display: block !important; + line-height: 2; + user-select: text; + + flex-basis: 1; + flex-shrink: 1; + + margin: 0; + overflow-wrap: break-word; + pading: 3px 22px 1px 0; + position: fixed; + z-index: -1; + + min-height: 0; + min-width: 100%; + height: 100%; + width: 100%; + ` + ) + ); + } else { + messages.forEach(message => UTILS_TERMINAL.honor(message)); + } + }; - if(local) { - terminal.log('[LOCAL] Search results', local); - return local; - } + if(configuration) { + let host = location.host.replace(/^(ww\w+\.)/, ''), + doms = configuration.__domains.split(','); - /* the rest of this function is a beautiful mess that will need to be dealt with later... but it works */ - let url = - (manable && title && config.ombiURLRoot)? - `${ config.ombiURLRoot }api/v1/Search/${ (rqut == 'imdb' || rqut == 'tmdb' || apit == 'movie')? 'movie': 'tv' }/${ plus(title, '%20') }/?apikey=${ api.ombi }`: - (manable && (config.radarrURLRoot || config.sonarrURLRoot))? - (config.radarrURLRoot && (rqut == 'imdb' || rqut == 'tmdb'))? - (mid)? - `${ config.radarrURLRoot }api/movie/lookup/tmdb?tmdbId=${ mid }&apikey=${ config.radarrToken }`: - (iid)? - `${ config.radarrURLRoot }api/movie/lookup/imdb?imdbId=${ iid }&apikey=${ config.radarrToken }`: - `${ config.radarrURLRoot }api/movie/lookup?term=${ plus(title, '%20') }&apikey=${ config.radarrToken }`: - (tid)? - `${ config.sonarrURLRoot }api/series/lookup?term=tvdb:${ tid }&apikey=${ config.sonarrToken }`: - `${ config.sonarrURLRoot }api/series/lookup?term=${ plus(title, '%20') }&apikey=${ config.sonarrToken }`: - (rqut == 'imdb' || (rqut == '*' && !iid && title) || (rqut == 'tvdb' && !iid && title && rerun))? - (iid)? - `https://www.omdbapi.com/?i=${ iid }&apikey=${ api.omdb }`: - (year)? - `https://www.omdbapi.com/?t=${ plus(title) }&y=${ year }&apikey=${ api.omdb }`: - `https://www.omdbapi.com/?t=${ plus(title) }&apikey=${ api.omdb }`: - (rqut == 'tmdb' || (rqut == '*' && !mid && title && year) || apit == 'movie')? - (apit && apid)? - `https://api.themoviedb.org/3/${ apit }/${ apid }?api_key=${ api.tmdb }`: - (iid)? - `https://api.themoviedb.org/3/find/${ iid || mid || tid }?api_key=${ api.tmdb }&external_source=${ iid? 'imdb': mid? 'tmdb': 'tvdb' }_id`: - `https://api.themoviedb.org/3/search/${ apit }?api_key=${ api.tmdb }&query=${ encodeURI(title) }${ year? '&year=' + year: '' }`: - (rqut == 'tvdb' || (rqut == '*' && !tid && title) || (apid == tid))? - (tid)? - `https://api.tvmaze.com/shows/?thetvdb=${ tid }`: - (iid)? - `https://api.tvmaze.com/shows/?imdb=${ iid }`: - `https://api.tvmaze.com/search/shows?q=${ encodeURI(title) }`: - (title)? - (apit && year)? - `https://www.theimdbapi.org/api/find/${ apit }?title=${ encodeURI(title) }&year=${ year }`: - `https://www.theimdbapi.org/api/find/movie?title=${ encodeURI(title) }${ year? '&year=' + year: '' }`: - null; - - if(url === null) return null; - - let proxy = config.proxy, - cors = proxy.url, // if cors is requried and not uspported, proxy through this URL - headers = HandleProxyHeaders(proxy.headers, url); - - if(proxy.enabled && /(^http:\/\/)(?!localhost|127\.0\.0\.1(?:\/8)?|::1(?:\/128)?|:\d+)\b/i.test(url)) { - url = cors - .replace(/\{b(ase-?)?64-url\}/gi, btoa(url)) - .replace(/\{enc(ode)?-url\}/gi, encodeURIComponent(url)) - .replace(/\{(raw-)?url\}/gi, url); - - terminal.log({ proxy, url, headers }); + if(!~doms.indexOf(host)) + return; } - terminal.log(`Searching for "${ title } (${ year })" in ${ type || apit }/${ rqut }${ proxy.enabled? '[PROXY]': '' } => ${ url }`); + UTILS_TERMINAL.log('UTILS_DEVELOPER:', UTILS_DEVELOPER, configuration); - await(proxy? fetch(url, { mode: "cors", headers }): fetch(url)) - .then(response => response.text()) - .then(data => { - try { - if(data) - json = JSON.parse(data); - } catch(error) { - terminal.error(`Failed to parse JSON: "${ data }"`); + // parse the formatted headers and URL + function HandleProxyHeaders(Headers = "", URL = "") { + let headers = {}; + + Headers.replace(/^[ \t]*([^\=\s]+)[ \t]*=[ \t]*((["'`])(?:[^\\\3]*|\\.)\3|[^\f\n\r\v]*)/gm, ($0, $1, $2, $3, $$, $_) => { + let string = !!$3; + + if(string) { + headers[$1] = $2.replace(RegExp(`^${ $3 }|${ $3 }$`, 'g'), ''); + } else { + $2 = $2.replace(/@([\w\.]+)/g, (_0, _1, _$, __) => { + let path = _1.split('.'), property = top; + + for(let index = 0, length = path.length; index < length; index++) + property = property[path[index]]; + + headers[$1] = property; + }) + .replace(/@\{b(ase-?)?64-url\}/gi, btoa(URL)) + .replace(/@\{enc(ode)?-url\}/gi, encodeURIComponent(URL)) + .replace(/@\{(raw-)?url\}/gi, URL); } - }) - .catch(error => { - throw error; }); - terminal.log('Search results', { title, year, url, json }); + return headers; + } - if('results' in json) - json = json.results; + // fetch/search for the item's media ID(s) + // rerun enum - [0bWXYZ] - [Tried Different URL | Tried Matching Title | Tried Loose Searching | Tried Rerunning Altogether] + async function Identify({ title, alttitle, year, type, IMDbID, TMDbID, TVDbID, APIType, APIID, meta, rerun }) { + let json = {}, // returned object + data = {}, // mutated object + promise, // query promise + api = { + tmdb: __CONFIG__.TMDbAPI || '37930f472ee15263f0b1ef5cc72e181a', + omdb: __CONFIG__.OMDbAPI || 'PlzBanMe', + ombi: __CONFIG__.ombiToken, + }, + apit = APIType || type, // api type (depends on "rqut") + apid = APIID || null, // api id + iid = IMDbID || null, // IMDbID + mid = TMDbID || null, // TMDbID + tid = TVDbID || null, // TVDbID + rqut = apit, // request type: tmdb, imdb, or tvdb + manable = __CONFIG__.ManagerSearch && !(rerun & 0b1000), // is the user's "Manager Searches" option enabled? + UTF_16 = /[^0\u0020-\u007e, 1\u00a1\u00bf-\u00ff, 2\u0100-\u017f, 3\u0180-\u024f, 4\u0300-\u036f, 5\u0370-\u03ff, 6\u0400-\u04ff, 7\u0500-\u052f, 8\u20a0-\u20bf]+/g; + + type = type || null; + meta = { ...meta, mode: 'cors' }; + rqut = + /(tv|show|series)/i.test(rqut)? + 'tvdb': + /(movie|film|cinema)s?/i.test(rqut)? + 'tmdb': + rqut || '*'; + manable = manable && (__CONFIG__.usingOmbi || (__CONFIG__.usingRadarr && rqut == 'tmdb') || ((__CONFIG__.usingSonarr || __CONFIG__.usingMedusa /*|| __CONFIG__.usingSickBeard*/) && rqut == 'tvdb')); + title = (title? title.replace(/\s*[\:,]\s*seasons?\s+\d+.*$/i, '').toCaps(): "") + .replace(/[\u2010-\u2015]/g, '-') // fancy hyphen + .replace(/[\u201a\u275f]/g, ',') // fancy comma + .replace(/[\u2018\u2019\u201b\u275b\u275c`]/g, "'") // fancy apostrophe (tilde from anime results by TMDb) + .replace(/[\u201c-\u201f\u275d\u275e]/g, '"') // fancy quotation marks + .replace(UTF_16, ''); // only accept "usable" characters + /* 0[ -~], 1[¡¿-ÿ], 2[Ā-ſ], 3[ƀ-ɏ], 4[ò-oͯ], 5[Ͱ-Ͽ], 6[Ѐ-ӿ], 7[Ԁ-ԯ], 8[₠-₿] */ + /** Symbol Classes + 0) Basic Latin, and standard characters + 1) Latin (Supplement) + 2) Latin Extended I + 3) Latin Extended II + 4) Diatrical Marks + 5) Greek & Coptic + 6) Basic Cyrillic + 7) Cyrillic (Supplement) + 8) Currency Symbols + */ + year = year? (year + '').replace(/\D+/g, ''): year; + + let plus = (string, character = '+') => string.replace(/\s+/g, character); + + let local, savename; + + if(year) { + savename = `${title} (${year}).${rqut}`.toLowerCase(), + local = await load(savename); + } else { + year = await load(`${title}.${rqut}`.toLowerCase()) || year; + savename = `${title} (${year}).${rqut}`.toLowerCase(); + local = await load(savename); + } - if(json instanceof Array) { - let b = { release_date: '', year: '' }, - t = (s = "") => s.toLowerCase(), - c = (s = "") => t(s).replace(/\&/g, 'and').replace(/\W+/g, ''), - k = (s = "") => { + if(local) { + UTILS_TERMINAL.honor('[LOCAL] Search results', local); + return local; + } - let r = [ - [/(?!^\s*)\b(show|series|a([st]|nd?|cross|fter|lthough)?|b(e(cause|fore|tween)|ut|y)|during|from|in(to)?|[io][fn]|[fn]?or|the|[st]o|through|under|with(out)?|yet)\b\s*/gi, ''], - // try replacing common words, e.g. Conjunctions, "Show," "Series," etc. - [/\s+/g, '|'] - ]; + /* the rest of this function is a beautiful mess that will need to be dealt with later... but it works */ + let url = + (manable && title && __CONFIG__.usingOmbi)? + `${ __CONFIG__.ombiURLRoot }api/v1/Search/${ (rqut == 'imdb' || rqut == 'tmdb' || apit == 'movie')? 'movie': 'tv' }/${ plus(title, '%20') }/?apikey=${ api.ombi }`: + (manable && (__CONFIG__.usingRadarr || __CONFIG__.usingSonarr || __CONFIG__.usingMedusa /*|| __CONFIG__.usingSickBeard*/))? + (__CONFIG__.usingRadarr && (rqut == 'imdb' || rqut == 'tmdb'))? + (mid)? + `${ __CONFIG__.radarrURLRoot }api/movie/lookup/tmdb?tmdbId=${ mid }&apikey=${ __CONFIG__.radarrToken }`: + (iid)? + `${ __CONFIG__.radarrURLRoot }api/movie/lookup/imdb?imdbId=${ iid }&apikey=${ __CONFIG__.radarrToken }`: + `${ __CONFIG__.radarrURLRoot }api/movie/lookup?term=${ plus(title, '%20') }&apikey=${ __CONFIG__.radarrToken }`: + (__CONFIG__.usingSonarr)? + (tid)? + `${ __CONFIG__.sonarrURLRoot }api/series/lookup?term=tvdb:${ tid }&apikey=${ __CONFIG__.sonarrToken }`: + `${ __CONFIG__.sonarrURLRoot }api/series/lookup?term=${ plus(title, '%20') }&apikey=${ __CONFIG__.sonarrToken }`: + (__CONFIG__.usingMedusa)? + (tid)? + `${ __CONFIG__.medusaURLRoot }api/v2/series/tvdb${ tid }?detailed=true&api_key=${ __CONFIG__.medusaToken }`: + `${ __CONFIG__.medusaURLRoot }api/v2/internal/searchIndexersForShowName?query=${ plus(title) }&indexerId=0&api_key=${ __CONFIG__.medusaToken }`: + /* TODO: find a way to get CORS to work on Sick Beard URLs (localhost) */ + // (__CONFIG__.usingSickBeard)? + // (tid)? + // `${ __CONFIG__.sickBeardURLRoot }api/${ __CONFIG__.sickBeardToken }/?cmd=sb.searchtvdb&tvdbid=${ tid }`: + // `${ __CONFIG__.sickBeardURLRoot }api/${ __CONFIG__.sickBeardToken }/?cmd=sb.searchtvdb&name=${ encodeURIComponent(title) }`: + null: + (rqut == 'imdb' || (rqut == '*' && !iid && title) || (rqut == 'tvdb' && !iid && title && !(rerun & 0b1000)) && (rerun |= 0b1000))? + (iid)? + `https://www.omdbapi.com/?i=${ iid }&apikey=${ api.omdb }`: + (year)? + `https://www.omdbapi.com/?t=${ plus(title) }&y=${ year }&apikey=${ api.omdb }`: + `https://www.omdbapi.com/?t=${ plus(title) }&apikey=${ api.omdb }`: + (rqut == 'tmdb' || (rqut == '*' && !mid && title && year) || apit == 'movie')? + (apit && apid)? + `https://api.themoviedb.org/3/${ apit }/${ apid }?api_key=${ api.tmdb }`: + (iid)? + `https://api.themoviedb.org/3/find/${ iid || mid || tid }?api_key=${ api.tmdb }&external_source=${ iid? 'imdb': mid? 'tmdb': 'tvdb' }_id`: + `https://api.themoviedb.org/3/search/${ apit }?api_key=${ api.tmdb }&query=${ encodeURI(title) }${ year? '&year=' + year: '' }`: + (rqut == 'tvdb' || (rqut == '*' && !tid && title) || (apid == tid))? + (tid)? + `https://api.tvmaze.com/shows/?thetvdb=${ tid }`: + (iid)? + `https://api.tvmaze.com/shows/?imdb=${ iid }`: + `https://api.tvmaze.com/search/shows?q=${ encodeURI(title) }`: + (title)? + (apit && year)? + `https://www.theimdbapi.org/api/find/${ apit }?title=${ encodeURI(title) }&year=${ year }`: + `https://www.theimdbapi.org/api/find/movie?title=${ encodeURI(title) }${ year? '&year=' + year: '' }`: + null; + + if(url === null) return null; + + let proxy = __CONFIG__.proxy, + cors = proxy.url, // if cors is requried and not uspported, proxy through this URL + headers = HandleProxyHeaders(proxy.headers, url); + + if(proxy.enabled && /(^http:\/\/)(?!localhost|127\.0\.0\.1(?:\/8)?|::1(?:\/128)?|:\d+)\b/i.test(url)) { + url = cors + .replace(/\{b(ase-?)?64-url\}/gi, btoa(url)) + .replace(/\{enc(ode)?-url\}/gi, encodeURIComponent(url)) + .replace(/\{(raw-)?url\}/gi, url); + + UTILS_TERMINAL.log({ proxy, url, headers }); + } - for(let i = 0; i < r.length; i++) { - if(/^([\(\|\)]+)?$/.test(s)) return ""; + UTILS_TERMINAL.log(`Searching for "${ title } (${ year })" in ${ type || apit }/${ rqut }${ proxy.enabled? '[PROXY]': '' } => ${ url }`); - s = s.replace(r[i][0], r[i][1]); + await(proxy.enabled? fetch(url, { mode: "cors", headers }): fetch(url)) + .then(response => response.text()) + .then(data => { + try { + if(data) + json = JSON.parse(data); + } catch(error) { + UTILS_TERMINAL.error(`Failed to parse JSON: "${ data }"`); } + }) + .catch(error => { + throw error; + }); - return c(s); - }, - R = (s = "", S = "", n = !0) => { - let score = 100 * ((S.match(RegExp(`\\b(${k(s)})\\b`, 'i')) || [null]).length / (S.split(' ').length || 1)), - passing = config.UseLooseScore | 0; + UTILS_TERMINAL.honor('Search results', { title, year, url, json }); + + /* DO NOT change to else-if, won't work with Sick Beard: { data: { results: ... } } */ + if('data' in json) + json = json.data; + if('results' in json) + json = json.results; + + if(json instanceof Array) { + let b = { release_date: '', year: '' }, + t = (s = "") => s.toLowerCase(), + c = (s = "") => t(s).replace(/\&/g, 'and').replace(UTF_16, ''), + k = (s = "") => { + + let r = [ + [/(?!^\s*)\b(show|series|a([st]|nd?|cross|fter|lthough)?|b(e(cause|fore|tween)|ut|y)|during|from|in(to)?|[io][fn]|[fn]?or|the|[st]o|through|under|with(out)?|yet)\b\s*/gi, ''], + // try replacing common words, e.g. Conjunctions, "Show," "Series," etc. + [/\^\s*|\s*$/g, ''], + [/\s+/g, '|'], + [/[\u2010-\u2015]/g, '-'], // fancy hyphen + [/[\u201a\u275f]/g, ','], // fancy comma + [/[\u2018\u2019\u201b\u275b\u275c`]/g, "'"], // fancy apostrophe (tilde from anime results by TMDb) + [/[\u201c-\u201f\u275d\u275e]/g, '"'], // fancy quotation marks + [/'(?=\B)|\B'/g, ''] + ]; + + for(let i = 0; i < r.length; i++) { + if(/^([\(\|\)]+)?$/.test(s)) return ""; + + s = s.replace(r[i][0], r[i][1]); + } - return (S != '' && score >= passing) || (n? R(S, s, !n): n); - }, - en = /^(u[ks]-?|utf8-?)?en(glish)?$/i; - - // Find an exact match: Title (Year) | #IMDbID - let index, found, $data, lastscore; - for(index = 0, found = false, $data, lastscore = 0; (title && year) && index < json.length && !found; index++) { - $data = json[index]; - - let altt = $data.alternativeTitles, - $alt = (altt && altt.length? altt.filter(v => t(v) == t(title))[0]: null); - - // Radarr & Sonarr - if(manable) - found = ((t($data.title) == t(title) || $alt) && +year === +$data.year)? - $alt || $data: - found; - //api.tvmaze.com/ - else if(('externals' in ($data = $data.show || $data) || 'show' in $data) && $data.premiered) - found = (iid == $data.externals.imdb || t($data.name) == t(title) && year == $data.premiered.slice(0, 4))? - $data: - found; - //api.themoviedb.org/ \local - else if(('movie_results' in $data || 'tv_results' in $data || 'results' in $data) && $data.release_date) - found = (DATA => { - if(DATA.results) - if(rqut == 'tmdb') - DATA.movie_results = DATA.results; - else - DATA.tv_results = DATA.results; - - let i, f, o, l; - - for(i = 0, f = !1, o = DATA.movie_results, l = o.length | 0; i < l; i++) - f = (t(o.title) === t(title) && o.release_date.slice(0, 4) == year); - - for(i = (+f * l), o = (f? o: DATA.tv_results), l = (f? l: o.length | 0); i < l; i++) - f = (t(o.name) === t(title) && o.first_air_date.slice(0, 4) == year); - - return f? o: f = !!iid; - })($data); - //api.themoviedb.org/ \remote - else if(('original_name' in $data || 'original_title' in $data) && $data.release_date) - found = (tid == $data.id || (t($data.original_name || $data.original_title) == t(title) || t($data.name) == t(title)) && year == ($data || b).release_date.slice(0, 4))? - $data: - found; - //theimdbapi.org/ - else if($data.release_date) - found = (t($data.title) === t(title) && year == ($data.url || $data || b).release_date.slice(0, 4))? - $data: - found; - -// terminal.log(`Strict Matching: ${ !!found }`, !!found? found: null); - } + return c(s); + }, + R = (s = "", S = "", n = !0) => { + let l = s.split(' ').length, L = S.split(' ').length, E, + score = 100 * (((S.match(E = RegExp(`\\b(${k(s)})\\b`, 'gi')) || [null]).length) / (L || 1)), + passing = __CONFIG__.UseLooseScore | 0; + + UTILS_TERMINAL.log(`\tQuick Match => "${ s }"/"${ S }" = ${ score }% (${ E })`); + score *= (l > L? (L||1)/l: L > l? (l||1)/L: 1); + UTILS_TERMINAL.log(`\tActual Match (${ passing }% to pass) ~> ... = ${ score }%`); - // Find a close match: Title - for(index = 0; title && index < json.length && (!found || lastscore > 0); index++) { - $data = json[index]; - - let altt = $data.alternativeTitles, - $alt = (altt && altt.length? altt.filter(v => c(v) == c(title)): null); - - // Radarr & Sonarr - if(manable) - found = (c($data.title) == c(title) || $alt)? - $alt || $data: - found; - //api.tvmaze.com/ - else if('externals' in ($data = $data.show || $data) || 'show' in $data) - found = - // ignore language barriers - (c($data.name) == c(title))? + return (S != '' && score >= passing) || (n? R(S, s, !n): n); + }, + en = /^(u[ks]-?|utf8-?)?en(glish)?$/i; + + // Find an exact match: Title (Year) | #IMDbID + let index, found, $data, lastscore; + for(index = 0, found = false, $data, lastscore = 0; (title && year) && index < json.length && !found; rerun |= 0b0100, index++) { + $data = json[index]; + + let altt = $data.alternativeTitles, + $alt = (altt && altt.length? altt.filter(v => t(v) == t(title))[0]: null); + + // Managers + if(manable) + // Medusa + if(__CONFIG__.usingMedusa && $data instanceof Array) + found = ((t($data[4]) == t(title) || $alt) && +year == +$data[5].slice(0, 4))? + $alt || $data: + found; + // Radarr & Sonarr + else if(__CONFIG__.usingRadarr || __CONFIG__.usingSonarr) + found = ((t($data.title) == t(title) || $alt) && +year == +$data.year)? + $alt || $data: + found; + // Sick Beard + else if(__CONFIG__.usingSickBeard) + found = ((t($data.name) == t(title) || $alt) && +year == parseInt($data.first_aired))? + $alt || $data: + found; + //api.tvmaze.com/ + else if(('externals' in ($data = $data.show || $data) || 'show' in $data) && $data.premiered) + found = (iid == $data.externals.imdb || t($data.name) == t(title) && year == $data.premiered.slice(0, 4))? $data: - // trust the api matching - ($data.score > lastscore)? - (lastscore = $data.score || $data.vote_count, $data): found; - //api.themoviedb.org/ \local - else if('movie_results' in $data || 'tv_results' in $data || 'results' in $data) - found = (DATA => { - let i, f, o, l; - - if(DATA.results) - if(rqut == 'tmdb') - DATA.movie_results = DATA.results; - else - DATA.tv_results = DATA.results; - - for(i = 0, f = !1, o = DATA.movie_results, l = o.length | 0; i < l; i++) - f = (c(o.title) == c(title)); - - for(i = (+f * l), o = (f? o: DATA.tv_results), l = (f? l: o.length | 0); i < l; i++) - f = (c(o.name) == c(title)); - - return f? o: f; - })($data); - //api.themoviedb.org/ \remote - else if('original_name' in $data || 'original_title' in $data || 'name' in $data) - found = (c($data.original_name || $data.original_title || $data.name) == c(title))? - $data: - found; - //theimdbapi.org/ - else if(en.test($data.language)) - found = (c($data.title) == c(title))? - $data: - found; - -// terminal.log(`Title Matching: ${ !!found }`, !!found? found: null); - } + //api.themoviedb.org/ \local + else if(('movie_results' in $data || 'tv_results' in $data || 'results' in $data) && $data.release_date) + found = (DATA => { + if(DATA.results) + if(rqut == 'tmdb') + DATA.movie_results = DATA.results; + else + DATA.tv_results = DATA.results; + + let i, f, o, l; + + for(i = 0, f = !1, o = DATA.movie_results, l = o.length | 0; i < l; i++) + f = (t(o.title) == t(title) && o.release_date.slice(0, 4) == year); + + for(i = (+f * l), o = (f? o: DATA.tv_results), l = (f? l: o.length | 0); i < l; i++) + f = (t(o.name) == t(title) && o.first_air_date.slice(0, 4) == year); + + return f? o: f = !!iid; + })($data); + //api.themoviedb.org/ \remote + else if(('original_name' in $data || 'original_title' in $data) && $data.release_date) + found = (tid == $data.id || (t($data.original_name || $data.original_title) == t(title) || t($data.name) == t(title)) && year == ($data || b).release_date.slice(0, 4))? + $data: + found; + //theimdbapi.org/ + else if($data.release_date) + found = (t($data.title) == t(title) && year == ($data.url || $data || b).release_date.slice(0, 4))? + $data: + found; + + UTILS_TERMINAL.log(`Strict Matching: ${ !!found }`, !!found? found: null); + } + + // Find a close match: Title + for(index = 0; title && index < json.length && (!found || lastscore > 0); rerun |= 0b0100, index++) { + $data = json[index]; + + let altt = $data.alternativeTitles, + $alt = (altt && altt.length? altt.filter(v => c(v) == c(title)): null); + + // Managers + if(manable) + // Medusa + if(__CONFIG__.usingMedusa && $data instanceof Array) + found = (c($data[4]) == c(title) || $alt)? + $alt || $data: + found; + // Radarr & Sonarr + if(__CONFIG__.usingRadarr || __CONFIG__.usingSonarr) + found = (c($data.title) == c(title) || $alt)? + $alt || $data: + found; + // Sick Beard + if(__CONFIG__.usingSickBeard) + found = (c($data.name) == c(title) || $alt)? + $alt || $data: + found; + //api.tvmaze.com/ + else if('externals' in ($data = $data.show || $data) || 'show' in $data) + found = + // ignore language barriers + (c($data.name) == c(title))? + $data: + // trust the api matching + ($data.score > lastscore)? + (lastscore = $data.score || $data.vote_count, $data): + found; + //api.themoviedb.org/ \local + else if('movie_results' in $data || 'tv_results' in $data || 'results' in $data) + found = (DATA => { + let i, f, o, l; + + if(DATA.results) + if(rqut == 'tmdb') + DATA.movie_results = DATA.results; + else + DATA.tv_results = DATA.results; + + for(i = 0, f = !1, o = DATA.movie_results, l = o.length | 0; i < l; i++) + f = (c(o.title) == c(title)); + + for(i = (+f * l), o = (f? o: DATA.tv_results), l = (f? l: o.length | 0); i < l; i++) + f = (c(o.name) == c(title)); + + return f? o: f; + })($data); + //api.themoviedb.org/ \remote + else if('original_name' in $data || 'original_title' in $data || 'name' in $data) + found = (c($data.original_name || $data.original_title || $data.name) == c(title))? + $data: + found; + //theimdbapi.org/ + else if(en.test($data.language)) + found = (c($data.title) == c(title))? + $data: + found; + + UTILS_TERMINAL.log(`Title Matching: ${ !!found }`, !!found? found: null); + } - // Find an OK match (Loose Searching): Title ~ Title - // The examples below are correct - // GOOD, found: VRV's "Bakemonogatari" vs. TVDb's "Monogatari Series" - // /\b(monogatari)\b/i.test('bakemonogatari') === true - // this is what this option is for - // OK, found: "The Title of This is Bad" vs. "The Title of This is OK" (this is semi-errornous) - // /\b(title|this|bad)\b/i.test('title this ok') === true - // this may be a possible match, but it may also be an error: 'title' and 'this' - // BAD, not found: "Gun Show Showdown" vs. "Gundarr" - // /\b(gun|showdown)\b/i.test('gundarr') === false - // this should not match; the '\b' (border between \w and \W) keeps them from matching - for(index = 0; config.UseLoose && title && index < json.length && (!found || lastscore > 0); index++) { - $data = json[index]; - - let altt = $data.alternativeTitles, - $alt = (altt && altt.length? altt.filter(v => R(v, title)): null); - - // Radarr & Sonarr - if(manable) - found = (R($data.name, title) || $alt)? - $alt || $data: - found; - //api.tvmaze.com/ - else if('externals' in ($data = $data.show || $data) || 'show' in $data) - found = - // ignore language barriers - (R($data.name, title) || terminal.log('Matching:', [$data.name, title], R($data.name, title)))? + // Find an OK match (Loose Searching): Title ~ Title + // The examples below are correct + // GOOD, found: VRV's "Bakemonogatari" vs. TVDb's "Monogatari Series" + // /\b(monogatari)\b/i.test('bakemonogatari') === true + // this is what this option was designed for + // OK, found: "The Title of This is Bad" vs. "The Title of This is OK" (this is semi-errornous) + // /\b(title|this|bad)\b/i.test('title this ok') === true + // this may be a possible match, but it may also be an error: 'title' and 'this' + // the user's defined threshold is used in this case (above 65% would match these two items) + // BAD, not found: "Gun Show Showdown" vs. "Gundarr" + // /\b(gun|showdown)\b/i.test('gundarr') === false + // this should not match; the '\b' (border between \w and \W) keeps them from matching + for(index = 0; __CONFIG__.UseLoose && title && index < json.length && (!found || lastscore > 0); rerun |= 0b0010, index++) { + $data = json[index]; + + let altt = $data.alternativeTitles, + $alt = (altt && altt.length? altt.filter(v => R(v, title)): null); + + // Managers + if(manable) + // Medusa + if(__CONFIG__.usingMedusa && $data instanceof Array) + found = (R($data[4], title) || $alt)? + $alt || $data: + found; + // Radarr & Sonarr + if(__CONFIG__.usingRadarr || __CONFIG__.usingSonarr) + found = (R($data.name || $data.title, title) || $alt)? + $alt || $data: + found; + // Sick Beard + if(__CONFIG__.usingSickBeard) + found = (R($data.name, title) || $alt)? + $alt || $data: + found; + //api.tvmaze.com/ + else if('externals' in ($data = $data.show || $data) || 'show' in $data) + found = + // ignore language barriers + (R($data.name, title) || UTILS_TERMINAL.log('Matching:', [$data.name, title], R($data.name, title)))? + $data: + // trust the api matching + ($data.score > lastscore)? + (lastscore = $data.score, $data): + found; + //api.themoviedb.org/ \local + else if('movie_results' in $data || 'tv_results' in $data) + found = (DATA => { + let i, f, o, l; + + for(i = 0, f = !1, o = DATA.movie_results, l = o.length | 0; i < l; i++) + f = R(o.title, title); + + for(i = (+f * l), o = (f? o: DATA.tv_results), l = (f? l: o.length | 0); i < l; i++) + f = R(o.name, title); + + return f? o: f; + })($data); + //api.themoviedb.org/ \remote + else if('original_name' in $data || 'original_title' in $data) + found = (R($data.original_name, title) || R($data.original_title, title) || R($data.name, title))? + $data: + found; + //theimdbapi.org/ + else if(en.test($data.language)) + found = (R($data.title, title))? $data: - // trust the api matching - ($data.score > lastscore)? - (lastscore = $data.score, $data): found; - //api.themoviedb.org/ \local - else if('movie_results' in $data || 'tv_results' in $data) - found = (DATA => { - let i, f, o, l; - - for(i = 0, f = !1, o = DATA.movie_results, l = o.length | 0; i < l; i++) - f = R(o.title, title); - - for(i = (+f * l), o = (f? o: DATA.tv_results), l = (f? l: o.length | 0); i < l; i++) - f = R(o.name, title); - - return f? o: f; - })($data); - //api.themoviedb.org/ \remote - else if('original_name' in $data || 'original_title' in $data) - found = (R($data.original_name, title) || R($data.original_title, title) || R($data.name, title))? - $data: - found; - //theimdbapi.org/ - else if(en.test($data.language)) - found = (R($data.title, title))? - $data: - found; - -// terminal.log(`Loose Matching: ${ !!found }`, !!found? found: null); + + UTILS_TERMINAL.log(`Loose Matching: ${ !!found }`, !!found? found: null); + } + + json = found; } - json = found; + if((json === undefined || json === null || json === false) && !(rerun & 0b0001)) + return UTILS_TERMINAL.warn(`Trying to find "${ title }" again (as "${ (alttitle || title) }")`), rerun |= 0b0001, json = Identify({ title: (alttitle || title), year: YEAR, type, IMDbID, TMDbID, TVDbID, APIType, APIID, meta, rerun }); + else if((json === undefined || json === null)) + json = { IMDbID, TMDbID, TVDbID }; + + let ei = 'tt', + mr = 'movie_results', + tr = 'tv_results'; + + json = json && mr in json? json[mr].length > json[tr].length? json[mr]: json[tr]: json; + + if(json instanceof Array && (!__CONFIG__.usingMedusa? true: (__CONFIG__.usingSonarr || __CONFIG__.usingOmbi || __CONFIG__.usingSickBeard))) + json = json[0]; + + if(!json) + json = { IMDbID, TMDbID, TVDbID }; + + // Ombi, Medusa, Radarr and Sonarr + if(manable) + data = ( + (__CONFIG__.usingMedusa && !(__CONFIG__.usingSonarr || __CONFIG__.usingOmbi || __CONFIG__.usingSickBeard))? + { + imdb: iid || ei, + tmdb: mid | 0, + tvdb: tid || json[3] || (json[8]? json[8][1]: 0), + title: json.title || title, + year: +(json.year || year) + }: + { + imdb: iid || json.imdbId || ei, + tmdb: mid || json.tmdbId || json.theMovieDbId | 0, + tvdb: tid || json.tvdbId || json.theTvDbId | 0, + title: json.title || title, + year: +(json.year || year) + } + ); + //api.tvmaze.com/ + else if('externals' in (json = json.show || json)) + data = { + imdb: iid || json.externals.imdb || ei, + tmdb: mid || json.externals.themoviedb | 0, + tvdb: tid || json.externals.thetvdb | 0, + title: json.name || title, + year: ((json.premiered || json.first_aired_date || year) + '').slice(0, 4) + }; + //api.themoviedb.org/ + else if('imdb_id' in (json = mr in json? json[mr].length > json[tr].length? json[mr]: json[tr]: json) || 'original_name' in json || 'original_title' in json) + data = { + imdb: iid || json.imdb_id || ei, + tmdb: mid || json.id | 0, + tvdb: tid || json.tvdb | 0, + title: json.title || json.name || title, + year: ((json.release_date || json.first_air_date || year) + '').slice(0, 4) + }; + //omdbapi.com/ + else if('imdbID' in json) + data = { + imdb: iid || json.imdbID || ei, + tmdb: mid || json.tmdbID | 0, + tvdb: tid || json.tvdbID | 0, + title: json.Title || json.Name || title, + year: json.Year || year + }; + //theapache64.com/movie_db/ + else if('data' in json) + data = { + imdb: iid || json.data.imdb_id || ei, + tmdb: mid || json.data.tmdb_id | 0, + tvdb: tid || json.data.tvdb_id | 0, + title: json.data.name || json.data.title || title, + year: json.data.year || year + }; + //theimdbapi.org/ + else if('imdb' in json) + data = { + imdb: iid || json.imdb || ei, + tmdb: mid || json.id | 0, + tvdb: tid || json.tvdb | 0, + title, + year + }; + // given by the requesting service + else + data = { + imdb: iid || ei, + tmdb: mid | 0, + tvdb: tid | 0, + title, + year + }; + + year = +((data.year + '').slice(0, 4)) || 0; + data.year = year; + + let best = { title, year, data, type, rqut, score: json.score | 0 }; + + UTILS_TERMINAL.log('Best match:', url, { best, json }); + + if(best.data.imdb == ei && best.data.tmdb == 0 && best.data.tvdb == 0) + return UTILS_TERMINAL.log(`No information was found for "${ title } (${ year })"`), {}; + + save(savename, data); // e.g. "Coco (0)" on Netflix before correction / no repeat searches + save(savename = `${title} (${year}).${rqut}`.toLowerCase(), data); // e.g. "Coco (2017)" on Netflix after correction / no repeat searches + save(`${title}.${rqut}`.toLowerCase(), year); + + UTILS_TERMINAL.log(`Saved as "${ savename }"`, data); + + rerun |= 0b00001; + + return data; } - if((json === undefined || json === null || json === false) && !rerun) - return json = getIDs({ title, year: YEAR, type, IMDbID, TMDbID, TVDbID, APIType, APIID, meta, rerun: true }); - else if((json === undefined || json === null)) - json = { IMDbID, TMDbID, TVDbID }; - - let ei = 'tt', - mr = 'movie_results', - tr = 'tv_results'; + function Request_CouchPotato(options) { + // TODO: this does not work anymore! + if(!options.IMDbID) + return new Notification( + 'warning', + 'Stopped adding to CouchPotato: No IMDb ID' + ); + + chrome.runtime.sendMessage( + { + type: 'VIEW_COUCHPOTATO', + url: `${ __CONFIG__.couchpotatoURL }/media.get`, + IMDbID: options.IMDbID, + TMDbID: options.TMDbID, + TVDbID: options.TVDbID, + basicAuth: __CONFIG__.couchpotatoBasicAuth, + }, + response => { + let movieExists = response.success; + if(response.error) { + return new Notification( + 'warning', + 'CouchPotato request failed (see your console)' + ) || + (!response.silent && UTILS_TERMINAL.error('Error viewing CouchPotato: ' + String(response.error))); + } + if(!movieExists) { + __Request_CouchPotato__(options); + return; + } + new Notification( + 'warning', + `Movie already exists in CouchPotato (status: ${response.status})` + ); + } + ); + } - json = json && mr in json? json[mr].length > json[tr].length? json[mr]: json[tr]: json; + // Movies/TV Shows + function Request_Ombi(options) { + new Notification('info', `Sending "${ options.title }" to Ombi`, 3000); - if(json instanceof Array) - json = json[0]; + if((!options.IMDbID && !options.TMDbID) && !options.TVDbID) { + return new Notification( + 'warning', + 'Stopped adding to Ombi: No content ID' + ); + } - if(!json) - json = { IMDbID, TMDbID, TVDbID }; + let contentType = (/movies?|film/i.test(options.type)? 'movie': 'tv'); - // Ombi, Radarr and Sonarr - if(manable) - data = { - imdb: iid || json.imdbId || ei, - tmdb: mid || json.tmdbId || json.theMovieDbId | 0, - tvdb: tid || json.tvdbId || json.theTvDbId | 0, - title: json.title || title, - year: +(json.year || year) - }; - //api.tvmaze.com/ - else if('externals' in (json = json.show || json)) - data = { - imdb: iid || json.externals.imdb || ei, - tmdb: mid || json.externals.themoviedb | 0, - tvdb: tid || json.externals.thetvdb | 0, - title: json.name || title, - year: ((json.premiered || json.first_aired_date || year) + '').slice(0, 4) - }; - //api.themoviedb.org/ - else if('imdb_id' in (json = mr in json? json[mr].length > json[tr].length? json[mr]: json[tr]: json) || 'original_name' in json || 'original_title' in json) - data = { - imdb: iid || json.imdb_id || ei, - tmdb: mid || json.id | 0, - tvdb: tid || json.tvdb | 0, - title: json.title || json.name || title, - year: ((json.release_date || json.first_air_date || year) + '').slice(0, 4) - }; - //omdbapi.com/ - else if('imdbID' in json) - data = { - imdb: iid || json.imdbID || ei, - tmdb: mid || json.tmdbID | 0, - tvdb: tid || json.tvdbID | 0, - title: json.Title || json.Name || title, - year: json.Year || year - }; - //theapache64.com/movie_db/ - else if('data' in json) - data = { - imdb: iid || json.data.imdb_id || ei, - tmdb: mid || json.data.tmdb_id | 0, - tvdb: tid || json.data.tvdb_id | 0, - title: json.data.name || json.data.title || title, - year: json.data.year || year - }; - //theimdbapi.org/ - else if('imdb' in json) - data = { - imdb: iid || json.imdb || ei, - tmdb: mid || json.id | 0, - tvdb: tid || json.tvdb | 0, - title, - year - }; - // given by the requesting service - else - data = { - imdb: iid || ei, - tmdb: mid | 0, - tvdb: tid | 0, - title, - year - }; + chrome.runtime.sendMessage({ + type: 'PUSH_OMBI', + url: `${ __CONFIG__.ombiURL }api/v1/Request/${ contentType }`, + token: __CONFIG__.ombiToken, + title: options.title, + year: options.year, + imdbId: options.IMDbID, + tmdbId: options.TMDbID, + tvdbId: options.TVDbID, + contentType, + }, + response => { + UTILS_TERMINAL.log('Pushing to Ombi', response); - year = +((data.year + '').slice(0, 4)) || 0; - data.year = year; + if(response && response.error) { + return new Notification('warning', `Could not add "${ options.title }" to Ombi: ${ response.error }`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Ombi: ' + String(response.error), response.location, response.debug)); + } else if(response && response.success) { + let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(), + { IMDbID, TMDbID, TVDbID } = options; - let best = { title, year, data, type, rqut, score: json.score | 0 }; + CAUGHT.bump({ IMDbID, TMDbID, TVDbID }); - terminal.log('Best match:', url, { best, json }); + UTILS_TERMINAL.honor('Successfully pushed', options); + new Notification('update', `Added "${ options.title }" to Ombi`, 7000, () => window.open(__CONFIG__.ombiURL, '_blank')); + } else { + new Notification('warning', `Could not add "${ options.title }" to Ombi: Unknown Error`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Ombi: ' + String(response))); + } + } + ); + } - if(best.data.imdb == ei && best.data.tmdb == 0 && best.data.tvdb == 0) - return terminal.log(`No information was found for "${ title } (${ year })"`), {}; + // Movies/TV Shows + function __Request_CouchPotato__(options) { + new Notification('info', `Sending "${ options.title }" to CouchPotato`, 3000); + + chrome.runtime.sendMessage( + { + type: 'PUSH_COUCHPOTATO', + url: `${ __CONFIG__.couchpotatoURL }/movie.add`, + IMDbID: options.IMDbID, + TMDbID: options.TMDbID, + TVDbID: options.TVDbID, + basicAuth: __CONFIG__.couchpotatoBasicAuth, + }, + response => { + UTILS_TERMINAL.log('Pushing to CouchPotato', response); + + if(response.error) { + return new Notification( + 'warning', + `Could not add "${ options.title }" to CouchPotato (see your console)` + ) || + (!response.silent && UTILS_TERMINAL.error('Error adding to CouchPotato: ' + String(response.error), response.location, response.debug)); + } + if(response.success) { + let { IMDbID, TMDbID, TVDbID } = options; + + CAUGHT.bump({ IMDbID, TMDbID, TVDbID }); + + UTILS_TERMINAL.honor('Successfully pushed', options); + new Notification('update', `Added "${ options.title }" to CouchPotato`); + } else { + new Notification('warning', `Could not add "${ options.title }" to CouchPotato`); + } + } + ); + } - save(savename, data); // e.g. "Coco (0)" on Netflix before correction / no repeat searches - save(savename = `${title} (${year}).${rqut}`.toLowerCase(), data); // e.g. "Coco (2017)" on Netflix after correction / no repeat searches - save(`${title}.${rqut}`.toLowerCase(), year); + // Movies + function Request_Watcher(options) { + new Notification('info', `Sending "${ options.title }" to Watcher`, 3000); - terminal.log(`Saved as "${ savename }"`, data); + if(!options.IMDbID && !options.TMDbID) { + return new Notification( + 'warning', + 'Stopped adding to Watcher: No IMDb/TMDb ID' + ); + } - return data; -} + chrome.runtime.sendMessage({ + type: 'PUSH_WATCHER', + url: `${ __CONFIG__.watcherURL }api/`, + token: __CONFIG__.watcherToken, + StoragePath: __CONFIG__.watcherStoragePath, + basicAuth: __CONFIG__.watcherBasicAuth, + title: options.title, + year: options.year, + imdbId: options.IMDbID, + tmdbId: options.TMDbID, + }, + response => { + UTILS_TERMINAL.log('Pushing to Watcher', response); -function $pushAddToCouchpotato(options) { - // TODO: this does not work anymore! - if (!options.IMDbID) - return new Notification( - 'warning', - 'Stopped adding to CouchPotato: No IMDb ID' - ); - - chrome.runtime.sendMessage( - { - type: 'VIEW_COUCHPOTATO', - url: `${ config.couchpotatoURL }/media.get`, - IMDbID: options.IMDbID, - TMDbID: options.TMDbID, - TVDbID: options.TVDbID, - basicAuth: config.couchpotatoBasicAuth, - }, - response => { - let movieExists = response.success; - if (response.error) { - return new Notification( - 'warning', - 'CouchPotato request failed (see your console)' - ) || - (!response.silent && terminal.error('Error viewing CouchPotato: ' + String(response.error))); - } - if (!movieExists) { - pushCouchPotatoRequest(options); - return; - } - new Notification( - 'warning', - `Movie is already in CouchPotato (status: ${response.status})` - ); - } - ); -} + if(response && response.error) { + return new Notification('warning', `Could not add "${ options.title }" to Watcher: ${ response.error }`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Watcher: ' + String(response.error), response.location, response.debug)); + } else if(response && (response.success || (response.response + "") == "true")) { + let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(), + TMDbID = options.TMDbID || response.tmdbId, + IMDbID = options.IMDbID || response.imdbId; -// Movies/TV Shows -function pushOmbiRequest(options) { - new Notification('info', `Adding "${ options.title }" to Ombi`, 3000); + CAUGHT.bump({ IMDbID, TMDbID }); - if ((!options.IMDbID && !options.TMDbID) && !options.TVDbID) { - return new Notification( - 'warning', - 'Stopped adding to Ombi: No content ID' + UTILS_TERMINAL.honor('Successfully pushed', options); + new Notification('update', `Added "${ options.title }" to Watcher`, 7000, () => window.open(`${__CONFIG__.watcherURL}library/status${TMDbID? `#${title}-${TMDbID}`: '' }`, '_blank')); + } else { + new Notification('warning', `Could not add "${ options.title }" to Watcher: Unknown Error`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Watcher: ' + String(response))); + } + } ); } - let contentType = (/movies?|film/i.test(options.type)? 'movie': 'tv'); - - chrome.runtime.sendMessage({ - type: 'ADD_OMBI', - url: `${ config.ombiURL }api/v1/Request/${ contentType }`, - token: config.ombiToken, - title: options.title, - year: options.year, - imdbId: options.IMDbID, - tmdbId: options.TMDbID, - tvdbId: options.TVDbID, - contentType, - }, - response => { - terminal.log('Pushing to Ombi', response); + // Movies + function Request_Radarr(options, prompted) { + if(!options.IMDbID && !options.TMDbID) + return (!prompted)? new Notification( + 'warning', + 'Stopped adding to Radarr: No IMDb/TMDb ID' + ): null; - if (response && response.error) { - return new Notification('warning', `Could not add "${ options.title }" to Ombi: ${ response.error }`) || - (!response.silent && terminal.error('Error adding to Ombi: ' + String(response.error), response.location, response.debug)); - } else if (response && response.success) { - let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(); + let PromptValues = {}, + { PromptQuality, PromptLocation } = __CONFIG__; - terminal.log('Successfully pushed', options); - new Notification('update', `Added "${ options.title }" to Ombi`, 7000, () => window.open(config.ombiURL, '_blank')); - } else { - new Notification('warning', `Could not add "${ options.title }" to Ombi: Unknown Error`) || - (!response.silent && terminal.error('Error adding to Ombi: ' + String(response))); - } - } - ); -} + if(!prompted && (PromptQuality || PromptLocation)) + return new Prompt('modify', options, refined => Request_Radarr(refined, true)); -// Movies/TV Shows -function pushCouchPotatoRequest(options) { - new Notification('info', `Adding "${ options.title }" to CouchPotato`, 3000); - - chrome.runtime.sendMessage( - { - type: 'ADD_COUCHPOTATO', - url: `${ config.couchpotatoURL }/movie.add`, - IMDbID: options.IMDbID, - TMDbID: options.TMDbID, - TVDbID: options.TVDbID, - basicAuth: config.couchpotatoBasicAuth, - }, - response => { - terminal.log('Pushing to CouchPotato', response); - - if (response.error) { - return new Notification( - 'warning', - `Could not add "${ options.title }" to CouchPotato (see your console)` - ) || - (!response.silent && terminal.error('Error adding to CouchPotato: ' + String(response.error), response.location, response.debug)); - } - if (response.success) { - terminal.log('Successfully pushed', options); - new Notification('update', `Added "${ options.title }" to CouchPotato`); - } else { - new Notification('warning', `Could not add "${ options.title }" to CouchPotato`); - } - } - ); -} + if(PromptQuality && +options.quality > 0) + PromptValues.QualityID = +options.quality; + if(PromptLocation && options.location) + PromptValues.StoragePath = JSON.parse(__CONFIG__.radarrStoragePaths).map(item => item.id == options.location? item: null).filter(n => n)[0].path.replace(/\\/g, '\\\\'); + + new Notification('info', `Sending "${ options.title }" to Radarr`, 3000); + + chrome.runtime.sendMessage({ + type: 'PUSH_RADARR', + url: `${ __CONFIG__.radarrURL }api/movie/`, + token: __CONFIG__.radarrToken, + StoragePath: __CONFIG__.radarrStoragePath, + QualityID: __CONFIG__.radarrQualityProfileId, + basicAuth: __CONFIG__.radarrBasicAuth, + title: options.title, + year: options.year, + imdbId: options.IMDbID, + tmdbId: options.TMDbID, + ...PromptValues + }, + response => { + UTILS_TERMINAL.log('Pushing to Radarr', response); + + if(response && response.error) { + return new Notification('warning', `Could not add "${ options.title }" to Radarr: ${ response.error }`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Radarr: ' + String(response.error), response.location, response.debug)); + } else if(response && response.success) { + let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(), + TMDbID = options.TMDbID || response.tmdbId, + IMDbID = options.IMDbID || response.imdbId; -// Movies -function pushWatcherRequest(options) { - new Notification('info', `Adding "${ options.title }" to Watcher`, 3000); + CAUGHT.bump({ IMDbID, TMDbID }); - if (!options.IMDbID && !options.TMDbID) { - return new Notification( - 'warning', - 'Stopped adding to Watcher: No IMDb/TMDb ID' + UTILS_TERMINAL.honor('Successfully pushed', options); + new Notification('update', `Added "${ options.title }" to Radarr`, 7000, () => window.open(`${__CONFIG__.radarrURL}${TMDbID? `movies/${title}-${TMDbID}`: '' }`, '_blank')); + } else { + new Notification('warning', `Could not add "${ options.title }" to Radarr: Unknown Error`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Radarr: ' + String(response))); + } + } ); } - chrome.runtime.sendMessage({ - type: 'ADD_WATCHER', - url: `${ config.watcherURL }api/`, - token: config.watcherToken, - StoragePath: config.watcherStoragePath, - basicAuth: config.watcherBasicAuth, - title: options.title, - year: options.year, - imdbId: options.IMDbID, - tmdbId: options.TMDbID, - }, - response => { - terminal.log('Pushing to Watcher', response); - - if (response && response.error) { - return new Notification('warning', `Could not add "${ options.title }" to Watcher: ${ response.error }`) || - (!response.silent && terminal.error('Error adding to Watcher: ' + String(response.error), response.location, response.debug)); - } else if (response && (response.success || (response.response + "") == "true")) { - let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(), - TMDbID = options.TMDbID || response.tmdbId; - - terminal.log('Successfully pushed', options); - new Notification('update', `Added "${ options.title }" to Watcher`, 7000, () => window.open(`${config.watcherURL}library/status${TMDbID? `#${title}-${TMDbID}`: '' }`, '_blank')); - } else { - new Notification('warning', `Could not add "${ options.title }" to Watcher: Unknown Error`) || - (!response.silent && terminal.error('Error adding to Watcher: ' + String(response))); - } - } - ); -} + // TV Shows + function Request_Sonarr(options, prompted) { + if(!options.TVDbID) + return (!prompted)? new Notification( + 'warning', + 'Stopped adding to Sonarr: No TVDb ID' + ): null; + + let PromptValues = {}, + { PromptQuality, PromptLocation } = __CONFIG__; + + if(!prompted && (PromptQuality || PromptLocation)) + return new Prompt('modify', options, refined => Request_Sonarr(refined, true)); + + if(PromptQuality && +options.quality > 0) + PromptValues.QualityID = +options.quality; + if(PromptLocation && options.location) + PromptValues.StoragePath = JSON.parse(__CONFIG__.sonarrStoragePaths).map(item => item.id == options.location? item: null).filter(n => n)[0].path.replace(/\\/g, '\\\\'); + + new Notification('info', `Sending "${ options.title }" to Sonarr`, 3000); + + chrome.runtime.sendMessage({ + type: 'PUSH_SONARR', + url: `${ __CONFIG__.sonarrURL }api/series/`, + token: __CONFIG__.sonarrToken, + StoragePath: __CONFIG__.sonarrStoragePath, + QualityID: __CONFIG__.sonarrQualityProfileId, + basicAuth: __CONFIG__.sonarrBasicAuth, + title: options.title, + year: options.year, + tvdbId: options.TVDbID, + ...PromptValues + }, + response => { + UTILS_TERMINAL.log('Pushing to Sonarr', response); -// Movies -function pushRadarrRequest(options) { - new Notification('info', `Adding "${ options.title }" to Radarr`, 3000); + if(response && response.error) { + return new Notification('warning', `Could not add "${ options.title }" to Sonarr: ${ response.error }`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Sonarr: ' + String(response.error), response.location, response.debug)); + } else if(response && response.success) { + let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(), + TVDbID = options.TVDbID || response.tvdbId; - if (!options.IMDbID && !options.TMDbID) { - return new Notification( - 'warning', - 'Stopped adding to Radarr: No IMDb/TMDb ID' + CAUGHT.bump({ TVDbID }); + + UTILS_TERMINAL.honor('Successfully pushed', options); + new Notification('update', `Added "${ options.title }" to Sonarr`, 7000, () => window.open(`${__CONFIG__.sonarrURL}series/${title}`, '_blank')); + } else { + new Notification('warning', `Could not add "${ options.title }" to Sonarr: Unknown Error`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Sonarr: ' + String(response))); + } + } ); } - chrome.runtime.sendMessage({ - type: 'ADD_RADARR', - url: `${ config.radarrURL }api/movie/`, - token: config.radarrToken, - StoragePath: config.radarrStoragePath, - QualityID: config.radarrQualityProfileId, - basicAuth: config.radarrBasicAuth, - title: options.title, - year: options.year, - imdbId: options.IMDbID, - tmdbId: options.TMDbID, - }, - response => { - terminal.log('Pushing to Radarr', response); - - if (response && response.error) { - return new Notification('warning', `Could not add "${ options.title }" to Radarr: ${ response.error }`) || - (!response.silent && terminal.error('Error adding to Radarr: ' + String(response.error), response.location, response.debug)); - } else if (response && response.success) { - let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(), - TMDbID = options.TMDbID || response.tmdbId; - - terminal.log('Successfully pushed', options); - new Notification('update', `Added "${ options.title }" to Radarr`, 7000, () => window.open(`${config.radarrURL}${TMDbID? `movies/${title}-${TMDbID}`: '' }`, '_blank')); - } else { - new Notification('warning', `Could not add "${ options.title }" to Radarr: Unknown Error`) || - (!response.silent && terminal.error('Error adding to Radarr: ' + String(response))); - } - } - ); -} + // TV Shows + function Request_Medusa(options, prompted) { + if(!options.TVDbID) + return (!prompted)? new Notification( + 'warning', + 'Stopped adding to Medusa: No TVDb ID' + ): null; + + let PromptValues = {}, + { PromptQuality, PromptLocation } = __CONFIG__; + + if(!prompted && (PromptQuality || PromptLocation)) + return new Prompt('modify', options, refined => Request_Medusa(refined, true)); -// TV Shows -function pushSonarrRequest(options) { - new Notification('info', `Adding "${ options.title }" to Sonarr`, 3000); + if(PromptQuality && +options.quality > 0) + PromptValues.QualityID = +options.quality; + if(PromptLocation && options.location) + PromptValues.StoragePath = JSON.parse(__CONFIG__.medusaStoragePaths).map(item => item.id == options.location? item: null).filter(n => n)[0].path.replace(/\\/g, '\\\\'); + + new Notification('info', `Sending "${ options.title }" to Medusa`, 3000); + + chrome.runtime.sendMessage({ + type: 'PUSH_MEDUSA', + url: `${ __CONFIG__.medusaURL }api/v2/series`, + root: `${ __CONFIG__.medusaURL }api/v2/`, + token: __CONFIG__.medusaToken, + StoragePath: __CONFIG__.medusaStoragePath, + QualityID: __CONFIG__.medusaQualityProfileId, + basicAuth: __CONFIG__.medusaBasicAuth, + title: options.title, + year: options.year, + tvdbId: options.TVDbID, + ...PromptValues + }, + response => { + UTILS_TERMINAL.log('Pushing to Medusa', response); - if (!options.TVDbID) { - return new Notification( - 'warning', - 'Stopped adding to Sonarr: No TVDb ID' + if(response && response.error) { + return new Notification('warning', `Could not add "${ options.title }" to Medusa: ${ response.error }`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Medusa: ' + String(response.error), response.location, response.debug)); + } else if(response && response.success) { + let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(), + TVDbID = options.TVDbID || response.tvdbId; + + CAUGHT.bump({ TVDbID }); + + UTILS_TERMINAL.honor('Successfully pushed', options); + new Notification('update', `Added "${ options.title }" to Medusa`, 7000, () => window.open(`${__CONFIG__.medusaURL}home/displayShow?indexername=tvdb&seriesid=${options.TVDbID}`, '_blank')); + } else { + new Notification('warning', `Could not add "${ options.title }" to Medusa: Unknown Error`) || + (!response.silent && UTILS_TERMINAL.error('Error adding to Medusa: ' + String(response))); + } + } ); } - chrome.runtime.sendMessage({ - type: 'ADD_SONARR', - url: `${ config.sonarrURL }api/series/`, - token: config.sonarrToken, - StoragePath: config.sonarrStoragePath, - QualityID: config.sonarrQualityProfileId, - basicAuth: config.sonarrBasicAuth, - title: options.title, - year: options.year, - tvdbId: options.TVDbID, - }, - response => { - terminal.log('Pushing to Sonarr', response); + // TV Shows + function Request_SickBeard(options, prompted) { + if(!options.TVDbID) + return (!prompted)? new Notification( + 'warning', + 'Stopped adding to Sick Beard: No TVDb ID' + ): null; - if (response && response.error) { - return new Notification('warning', `Could not add "${ options.title }" to Sonarr: ${ response.error }`) || - (!response.silent && terminal.error('Error adding to Sonarr: ' + String(response.error), response.location, response.debug)); - } else if (response && response.success) { - let title = options.title.replace(/\&/g, 'and').replace(/\s+/g, '-').replace(/[^\w\-]+/g, '').replace(/\-{2,}/g, '-').toLowerCase(); + let PromptValues = {}, + { PromptQuality, PromptLocation } = __CONFIG__; - terminal.log('Successfully pushed', options); - new Notification('update', `Added "${ options.title }" to Sonarr`, 7000, () => window.open(`${config.sonarrURL}series/${title}`, '_blank')); - } else { - new Notification('warning', `Could not add "${ options.title }" to Sonarr: Unknown Error`) || - (!response.silent && terminal.error('Error adding to Sonarr: ' + String(response))); - } - } - ); -} + if(!prompted && (PromptQuality || PromptLocation)) + return new Prompt('modify', options, refined => Request_SickBeard(refined, true)); -// make the button -function renderPlexButton(persistent) { - let existingButtons = document.querySelectorAll('.web-to-plex-button'), - firstButton = existingButtons[0]; - - if (existingButtons.length && !persistent) - [].slice.call(existingButtons).forEach(button => button.remove()); - else if(persistent && firstButton !== null && firstButton !== undefined) - return firstButton; - - // - if(init) - button.setAttribute('class', 'closed floating web-to-plex-button restarting'), button.onmouseenter = button.onmouseleave = null, button.setAttribute('tooltip', 'Restarting...'), button.querySelector('.list-action').setAttribute('tooltip', 'Restarting...'), setTimeout(init, 500); - else - new Notification('warning', "Couldn't reload. Please refresh the page."); - } - }, - furnish('img[alt=Reload]', { src: IMG_URL.r48, onclick: event => event.target.parentElement.click() }) // - ), + document.body.appendChild(button); - furnish('li#wtp-options.list-item', { - tooltip: 'Open settings', - onclick: event => { - let self = event.target, parent = button; + return MASTER_BUTTON = button; + } - return openOptionsPage(); - } - }, - furnish('img[alt=Settings]', { src: IMG_URL.s48, onclick: event => event.target.parentElement.click() }) // + function UpdateButton(button, action, title, options = {}) { + if(!button) + return /* Rare, but happens: especially on failed download links sent*/; + + let multiple = (action == 'multiple' || options instanceof Array), + element = button.querySelector('.w2p-action, .list-action'), + delimeter = '', + ty = 'Item', txt = 'title', hov = 'tooltip', + em = /^(tt|0)?$/i, + tv = /tv[\s-]?|shows?|series/i; + + if(!element) { + element = button; + button = element.parentElement; + }; + + Update('SEARCH_FOR', { ...options, button }); + + /* Handle a list of items */ + if(multiple) { + options = [].slice.call(options); + + let saved_options = [], // a list of successful searches (not on Plex) + len = options.length, + s = (len == 1? '': 's'), + t = []; + + for(let index = 0; index < len; index++) { + let option = options[index]; + + // Skip empty entries + if(!option || !option.type || !option.title) + continue; + + // Skip queued entries + if( + !!~CAUGHT.imdb.indexOf(option.IMDbID) || + !!~CAUGHT.tmdb.indexOf(option.TMDbID) || + !!~CAUGHT.tvdb.indexOf(option.TVDbID) ) - // - ) - // - ); - // + continue; - document.body.appendChild(button); + // the action should be an array + // we'll give the button a list of links to engage, so make it snappy! + let url = `#${ option.IMDbID || 'tt' }-${ option.TMDbID | 0 }-${ option.TVDbID | 0 }`; - return button; -} + /* Failed */ + if(/#tt-0-0/i.test(url)) + continue; -function modifyPlexButton(button, action, title, options = {}) { - let multiple = (action == 'multiple' || options instanceof Array), - element = button.querySelector('.w2p-action, .list-action'), - delimeter = '', - ty = 'Item', txt = 'title', hov = 'tooltip', - em = /^(tt|0)?$/i, - tv = /tv[\s-]?|shows?|series/i; - - if(!element) { - element = button; - button = element.parentElement; - }; + saved_options.push(option); + t.push(option.title); + } + + t = t.join(', '); + t = t.length > 24? t.slice(0, 21).replace(/\W+$/, '') + '...': t; + + element.ON_CLICK = e => { + e.preventDefault(); + + let self = e.target, tv = /tv[\s-]?|shows?|series/i, fail = 0, + options = JSON.parse(decode(button.getAttribute('saved_options'))); + + for(let index = 0, length = options.length, option; index < length; index++) { + option = options[index]; + + try { + if(__CONFIG__.usingOmbi) + Request_Ombi(option, true); + else if(__CONFIG__.usingWatcher && !tv.test(option.type)) + Request_Watcher(option, true); + else if(__CONFIG__.usingRadarr && !tv.test(option.type)) + Request_Radarr(option, true); + else if(__CONFIG__.usingCouchPotato && !tv.test(option.type)) + Request_CouchPotato(option, true); + else if(__CONFIG__.usingSonarr && tv.test(option.type)) + Request_Sonarr(option, true); + else if(__CONFIG__.usingMedusa && tv.test(option.type)) + Request_Medusa(option, true); + else if(__CONFIG__.usingSickBeard && tv.test(option.type)) + Request_SickBeard(option, true); + + button.classList.replace('wtp--download', 'wtp--queued'); + } catch(error) { + UTILS_TERMINAL.error(`Failed to get "${ option.title }" (Error #${ ++fail })`) + } + } + NOTIFIED = false; - sendUpdate('SEARCH_FOR', { ...options, button }); + if(fail) + new Notification('error', `Failed to grab ${ fail } item${fail==1?'':'s'}`); + }; - /* Handle a list of items */ - if(multiple) { - options = [].slice.call(options); + button.setAttribute('saved_options', encode(JSON.stringify(saved_options))); + element.addEventListener('click', e => (AUTO_GRAB.ENABLED && AUTO_GRAB.LIMIT > options.length)? element.ON_CLICK(e): new Prompt('select', options, o => { button.setAttribute('saved_options', encode(JSON.stringify(o))); element.ON_CLICK(e) })); - let saved_options = [], // a list of successful searches (not on Plex) - len = options.length, - s = (len == 1? '': 's'), - t = []; + element.setAttribute(hov, `Grab ${len} new item${s}: ${ t }`); + button.classList.add(saved_options.length || len? 'wtp--download': 'wtp--error'); + } else { + /* Handle a single item */ - for(let index = 0; index < len; index++) { - let option = options[index]; + if(!options || !options.type || !options.title) + return; - // Skip empty entries - if(!option || !option.type || !option.title) continue; + let empty = (em.test(options.IMDbID) && em.test(options.TMDbID) && em.test(options.TVDbID)), + nice_title = `${options.title.toCaps()}${options.year? ` (${options.year})`: ''}`; - // the action should be an array - // we'll give the button a list of links to engage, so make it snappy! - let url = `#${ option.imdb || 'tt' }-${ option.tmdb | 0 }-${ option.tvdb | 0 }`; + if(options) { + ty = (/^(cine(ma)?|films?|movies?|theat[re]{2})$/i.test(options.type)? 'Movie': 'TV Show'); + txt = options.txt || txt; + hov = options.hov || hov; + } - /* Failed */ - if(/#tt-0-0/i.test(url)) - continue; + if(action == 'found') { + element.href = Request_PlexURL(__CONFIG__.server.id, options.key); + element.setAttribute(hov, `Watch "${options.title} (${options.year})" on Plex`); + button.classList.add('wtp--found'); + + new Notification('success', `Watch "${ nice_title }"`, 7000, e => element.click(e)); + } else if(action == 'downloader' || options.remote) { + + switch(options.remote) { + /* Vumoo & GoStream */ + case 'plex': + case 'oload': + case 'consistent': + let href = options.href, path = ''; + + if(__CONFIG__.usingOmbi) { + path = ''; + } else if(__CONFIG__.usingWatcher && !tv.test(options.type)) { + path = ''; + } else if(__CONFIG__.usingRadarr && !tv.test(options.type)) { + path = __CONFIG__.radarrStoragePath; + } else if(__CONFIG__.usingSonarr && tv.test(options.type)) { + path = __CONFIG__.sonarrStoragePath; + } else if(__CONFIG__.usingMedusa && tv.test(options.type)) { + path = __CONFIG__.medusaStoragePath; + } else if(__CONFIG__.usingSickBeard && tv.test(options.type)) { + path = __CONFIG__.sickBeardStoragePath; + } else if(__CONFIG__.usingCouchPotato) { + path = ''; + } - saved_options.push(option); - t.push(option.title); - } + element.href = `#${ options.IMDbID || 'tt' }-${ options.TMDbID | 0 }-${ options.TVDbID | 0 }`; - t = t.join(', '); - t = t.length > 24? t.slice(0, 21).replace(/\W+$/, '') + '...': t; + button.classList.remove('wtp--queued'); + button.classList.add('wtp--download'); - element.ON_CLICK = e => { - e.preventDefault(); + element.removeEventListener('click', element.ON_CLICK); + element.addEventListener('click', element.ON_DOWNLOAD = e => { + e.preventDefault(); - let self = e.target, tv = /tv[\s-]?|shows?|series/i, fail = 0, - options = JSON.parse(atob(button.getAttribute('saved_options'))); + Update('DOWNLOAD_FILE', { ...options, button, href, path }); + new Notification('update', 'Opening prompt (may take a while)...'); + }); - for(let index = 0, length = options.length, option; index < length; index++) { - option = options[index]; + element.setAttribute(hov, `Download "${ nice_title }" | ${ty}`); + Update('SAVE_AS', { ...options, button, href, path }); + new Notification('update', `"${ nice_title }" can be downloaded`, 7000, e => element.click(e)); + return; + + + /* Default & Error */ + default: + let url = `#${ options.IMDbID || 'tt' }-${ options.TMDbID | 0 }-${ options.TVDbID | 0 }`; + + /* Failed */ + if(/#tt-0-0/i.test(url)) + return UpdateButton(button, 'notfound', title, options); + + element.href = url; + button.classList.add('wtp--download'); + element.addEventListener('click', element.ON_CLICK = e => { + e.preventDefault(); + try { + if(__CONFIG__.usingOmbi) + Request_Ombi(options); + else if(__CONFIG__.usingWatcher && !tv.test(options.type)) + Request_Watcher(options); + else if(__CONFIG__.usingRadarr && !tv.test(options.type)) + Request_Radarr(options); + else if(__CONFIG__.usingCouchPotato && !tv.test(options.type)) + Request_CouchPotato(options); + else if(__CONFIG__.usingSonarr && tv.test(options.type)) + Request_Sonarr(options); + else if(__CONFIG__.usingMedusa && tv.test(options.type)) + Request_Medusa(options); + else if(__CONFIG__.usingSickBeard && tv.test(options.type)) + Request_SickBeard(options); + + button.classList.replace('wtp--download', 'wtp--queued'); + } catch(error) { + throw error; + } - try { - if(config.ombiURL) - pushOmbiRequest(option); - else if (config.watcherURL && !tv.test(option.type)) - pushWatcherRequest(option); - else if (config.radarrURL && !tv.test(option.type)) - pushRadarrRequest(option); - else if (config.sonarrURL && tv.test(option.type)) - pushSonarrRequest(option); - else if(config.couchpotatoURL && tv.test(option.type)) - $pushAddToCouchpotato(option); - } catch(error) { - terminal.error(`Failed to get "${ option.title }" (Error #${ ++fail })`) + }); } + NOTIFIED = false; + + element.setAttribute(hov, `Add "${ nice_title }" | ${ty}`); + element.style.removeProperty('display'); + } else if(action == 'notfound' || action == 'error' || empty) { + element.removeAttribute('href'); + + empty = !(options && options.title); + + if(empty) + element.setAttribute(hov, `${ty || 'Item'} not found`); + else + element.setAttribute(hov, `"${ nice_title }" was not found`); + + button.classList.remove('wtp--found'); + button.classList.add('wtp--error'); } - if (fail) - new Notification('error', `Failed to grab ${ fail } item${fail==1?'':'s'}`); - }; + if((action == 'downloader') && (!!~CAUGHT.imdb.indexOf(options.IMDbID) || !!~CAUGHT.tmdb.indexOf(options.TMDbID) || !!~CAUGHT.tvdb.indexOf(options.TVDbID))) { + element.setAttribute(hov, `Modify "${ nice_title }" | ${ty}`); - button.setAttribute('saved_options', btoa(JSON.stringify(saved_options))); - element.addEventListener('click', e => (AUTO_GRAB.ENABLED && AUTO_GRAB.LIMIT > options.length)? element.ON_CLICK(e): new Prompt('select', options, o => { button.setAttribute('saved_options', btoa(JSON.stringify(o))); element.ON_CLICK(e) })); + button.classList.remove('wtp--found'); + button.classList.add('wtp--queued'); + } + + element.id = options? `${options.IMDbID || 'tt'}-${options.TMDbID | 0}-${options.TVDbID | 0}`: 'tt-0-0'; + } + } + + // Find media on Plex + async function FindMediaItems(options, button) { + if(!(options && options.length && button)) + return; + + let results = [], + length = options.length, + queries = (FindMediaItems.queries = FindMediaItems.queries || {}); + + FindMediaItems.OPTIONS = options; + + let query = JSON.stringify(options); - element.setAttribute(hov, `Grab ${len} new item${s}: ${ t }`); - button.classList.add(saved_options.length || len? 'wtp--download': 'wtp--error'); - } else { - /* Handle a single item */ + query = (queries[query] = queries[query] || {}); - if(!options || !options.type || !options.title) return; + if(query.running === true) + return; + else if(query.results) { + let { results, multiple, items } = query; - let empty = (em.test(options.IMDbID) && em.test(options.TMDbID) && em.test(options.TVDbID)), - nice_title = `${options.title.toCaps()}${options.year? ` (${options.year})`: ''}`; + new Notification('update', `Welcome back. ${ multiple } new ${ items } can be grabbed`, 7000, (event, target = button.querySelector('.list-action')) => target.click({ ...event, target })); - if(options) { - ty = (options.type == 'movie'? 'Movie': 'TV Show'); - txt = options.txt || txt; - hov = options.hov || hov; + if(multiple) + UpdateButton(button, 'multiple', `Download ${ multiple } ${ items }`, results); + + return; } - if (action == 'found') { - element.href = getPlexMediaURL(config.server.id, options.key); - element.setAttribute(hov, `Watch "${options.title} (${options.year})" on Plex`); - button.classList.add('wtp--found'); - } else if (action == 'downloader' || options.remote) { - - switch(options.remote) { - /* GoStream */ - case 'oload': - let href = options.href, path = ''; - - if (config.ombiURL) { - path = ''; - } else if (config.watcherURL && !tv.test(options.type)) { - path = ''; - } else if (config.radarrURL && !tv.test(options.type)) { - path = config.radarrStoragePath; - } else if (config.sonarrURL && tv.test(options.type)) { - path = config.sonarrStoragePath; - } else if(config.couchpotatoURL && tv.test(options.type)) { - path = ''; - } + query.running = true; - element.href = `#${ options.IMDbID || 'tt' }-${ options.TMDbID | 0 }-${ options.TVDbID | 0 }`; - button.classList.add('wtp--download'); - element.removeEventListener('click', element.ON_CLICK); - element.addEventListener('click', element.ON_DOWNLOAD = e => { - e.preventDefault(); + new Notification('info', `Processing ${ length } item${ 's'[+(length === 1)] || '' }...`); - sendUpdate('DOWNLOAD_FILE', { ...options, button, href, path }); - new Notification('update', 'Opening prompt (may take a while)...'); - }); + for(let index = 0, option, opt; index < length; index++) { + let { IMDbID, TMDbID, TVDbID } = (option = await options[index]); - element.setAttribute(hov, `Download "${ nice_title }" | ${ty}`); - sendUpdate('SAVE_AS', { ...options, button, href, path }); - new Notification('update', `"${ nice_title }" can be downloaded`, 7000, e => element.click(e)); - return; + opt = { name: option.title, title: option.title, year: option.year, image: options.image, type: option.type, imdb: IMDbID, IMDbID, tmdb: TMDbID, TMDbID, tvdb: TVDbID, TVDbID }; + try { + await Request_Plex(option) + .then(async({ found, key }) => { + if(found) { + // ignore found items, we only want new items + } else { + option.field = 'original_title'; - /* Default & Error */ - default: - let url = `#${ options.IMDbID || 'tt' }-${ options.TMDbID | 0 }-${ options.TVDbID | 0 }`; - - /* Failed */ - if(/#tt-0-0/i.test(url)) - return modifyPlexButton(button, 'notfound', title, options); - - element.href = url; - button.classList.add('wtp--download'); - element.addEventListener('click', element.ON_CLICK = e => { - e.preventDefault(); - if (config.ombiURL) { - pushOmbiRequest(options); - } else if (config.watcherURL && !tv.test(options.type)) { - pushWatcherRequest(options); - } else if (config.radarrURL && !tv.test(options.type)) { - pushRadarrRequest(options); - } else if (config.sonarrURL && tv.test(options.type)) { - pushSonarrRequest(options); - } else if(config.couchpotatoURL && tv.test(options.type)) { - $pushAddToCouchpotato(options); + return await Request_Plex(option) + .then(({ found, key }) => { + if(found) { + // ignore found items, we only want new items + } else { + let available = (__CONFIG__.usingOmbi || __CONFIG__.usingWatcher || __CONFIG__.usingRadarr || __CONFIG__.usingSonarr || __CONFIG__.usingMedusa || __CONFIG__.usingSickBeard || __CONFIG__.usingCouchPotato), + action = (available ? 'downloader' : 'notfound'), + title = available ? + 'Not on Plex (download available)': + 'Not on Plex (download not available)'; + + results.push({ ...opt, found: false, status: action }); + } + }); } - }); + }) + } catch(error) { + UTILS_TERMINAL.error('Request to Plex failed: ' + String(error)); + // new Notification('error', 'Failed to query item #' + (index + 1)); } + } - element.setAttribute(hov, `Add "${ nice_title }" | ${ty}`); - element.style.removeProperty('display'); - } else if (action == 'notfound' || action == 'error' || empty) { - element.removeAttribute('href'); + results = results.filter(v => v.status == 'downloader'); - empty = !(options && options.title); + let img = furnish('img', { title: 'Add to Plex It!', src: IMG_URL.plexit_icon_48, onmouseup: event => {let frame = document.querySelector('#plexit-bookmarklet-frame'); frame.src = frame.src.replace(/(#plexit:.*)?$/, '#plexit:' + event.target.parentElement.getAttribute('data'))} }), + po, pi = furnish('li#plexit.list-item', { data: encode(JSON.stringify(results)) }, img), + op = document.querySelector('#wtp-plexit'); - if(empty) - element.setAttribute(hov, `${ty || 'Item'} not found`); - else - element.setAttribute(hov, `"${ nice_title }" was not found`); + if(po = button.querySelector('#plexit')) + po.remove(); + try { + button.querySelector('ul').insertBefore(pi, op); + } catch(e) { /* Don't do anything */ } - button.classList.remove('wtp--found'); - button.classList.add('wtp--error'); - } + let multiple = results.length, + items = multiple == 1? 'item': 'items'; - element.id = options? `${options.IMDbID || 'tt'}-${options.TMDbID | 0}-${options.TVDbID | 0}`: 'tt-0-0'; - } -} + new Notification('update', `Done. ${ multiple } new ${ items } can be grabbed`, 7000, (event, target = button.querySelector('.list-action')) => target.click({ ...event, target })); -async function squabblePlex(options, button) { - if(!(options && options.length && button)) - return; + query.running = false; + query.results = results; + query.multiple = multiple; + query.items = items; - let results = [], - length = options.length; + if(multiple) + UpdateButton(button, 'multiple', `Download ${ multiple } ${ items }`, results); + } - squabblePlex.OPTIONS = options; + async function FindMediaItem(options) { + if(!(options && options.title)) + return; - new Notification('info', `Processing ${ length } item${ 's'[+(length === 1)] || '' }...`); + let { IMDbID, TMDbID, TVDbID } = options; - for(let index = 0, option, opt; index < length; index++) { - let { IMDbID, TMDbID, TVDbID } = (option = await options[index]); + TMDbID = +TMDbID; + TVDbID = +TVDbID; - opt = { name: option.title, title: option.title, year: option.year, image: options.image, type: option.type, imdb: IMDbID, IMDbID, tmdb: TMDbID, TMDbID, tvdb: TVDbID, TVDbID }; + let opt = { name: options.title, year: options.year, image: options.image || IMG_URL.nil, type: options.type, imdb: IMDbID, IMDbID, tmdb: TMDbID, TMDbID, tvdb: TVDbID, TVDbID }, + op = document.querySelector('#wtp-plexit'), + img = (options.image)? + furnish('div', { tooltip: 'Add to Plex It!', style: `background: url(${ IMG_URL.plexit_icon_16 }) top right/60% no-repeat, #0004 url(${ opt.image }) center/contain no-repeat; height: 48px; width: 34px;`, draggable: true, onmouseup: event => {let frame = document.querySelector('#plexit-bookmarklet-frame'); frame.src = frame.src.replace(/(#plexit:.*)?$/, '#plexit:' + event.target.parentElement.getAttribute('data'))} }): + furnish('img', { title: 'Add to Plex It!', src: IMG_URL.plexit_icon_48, onmouseup: event => {let frame = document.querySelector('#plexit-bookmarklet-frame'); frame.src = frame.src.replace(/(#plexit:.*)?$/, '#plexit:' + event.target.parentElement.getAttribute('data'))} }); + + FindMediaItem.OPTIONS = options; try { - await getPlexMediaRequest(option) - .then(async({ found, key }) => { - if (found) { - // ignore found items, we only want new items + return Request_Plex(options) + .then(({ found, key }) => { + if(found) { + UpdateButton(options.button, 'found', 'On Plex', { ...options, key }); + opt = { ...opt, url: options.button.href, found: true, status: 'found' }; + + let po, pi = furnish('li#plexit.list-item', { data: encode(JSON.stringify(opt)) }, img); + + if(po = options.button.querySelector('#plexit')) + po.remove(); + try { + options.button.querySelector('ul').insertBefore(pi, op); + } catch(e) { /* Don't do anything */ } } else { - option.field = 'original_title'; + options.field = 'original_title'; - return await getPlexMediaRequest(option) + return Request_Plex(options) .then(({ found, key }) => { - if (found) { - // ignore found items, we only want new items + if(found) { + UpdateButton(options.button, 'found', 'On Plex', { ...options, key }); + opt = { ...opt, url: options.button.href, found: true, status: 'found' }; + + let po, pi = furnish('li#plexit.list-item', { data: encode(JSON.stringify(opt)) }, img); + + if(po = options.button.querySelector('#plexit')) + po.remove(); + try { + options.button.querySelector('ul').insertBefore(pi, op); + } catch(e) { /* Don't do anything */ } } else { - let available = (config.ombiURL || config.watcherURL || config.radarrURL || config.sonarrURL || config.couchpotatoURL), + let available = (__CONFIG__.usingOmbi || __CONFIG__.usingWatcher || __CONFIG__.usingRadarr || __CONFIG__.usingSonarr || __CONFIG__.usingMedusa || __CONFIG__.usingSickBeard || __CONFIG__.usingCouchPotato), action = (available ? 'downloader' : 'notfound'), title = available ? 'Not on Plex (download available)': 'Not on Plex (download not available)'; - results.push({ ...opt, found: false, status: action }); + UpdateButton(options.button, action, title, options); + opt = { ...opt, found: false, status: action }; + + let po, pi = furnish('li#plexit.list-item', { data: encode(JSON.stringify(opt)) }, img); + + if(po = options.button.querySelector('#plexit')) + po.remove(); + if(!!~[].slice.call(options.button.querySelector('ul').children).indexOf(op)) + try { + options.button.querySelector('ul').insertBefore(pi, op); + } catch(e) { /* Don't do anything */ } } + return found; }); } + return found; }) - } catch(error) { - terminal.error('Request to Plex failed: ' + String(error)); - // new Notification('error', 'Failed to query item #' + (index + 1)); - } + } catch(error) { + return UpdateButton( + options.button, + 'error', + 'Request to Plex Media Server failed', + options + ), + UTILS_TERMINAL.error(`Request to Plex failed: ${ String(error) }`), + false; + // new Notification('Failed to communicate with Plex'); + } } - results = results.filter(v => v.status == 'downloader'); + function Request_Plex(options) { + if(!(__CONFIG__.plexURL && __CONFIG__.plexToken) || __CONFIG__.IGNORE_PLEX) + return new Promise((resolve, reject) => resolve({ found: false, key: null })); - let img = furnish('img', { title: 'Add to Plex It!', src: IMG_URL.p48, onclick: event => {let frame = document.querySelector('#plexit-bookmarklet-frame'); frame.src = frame.src.replace(/(#plexit:.*)?$/, '#plexit:' + event.target.parentElement.getAttribute('data'))} }), - po, pi = furnish('li#plexit.list-item', { data: btoa(JSON.stringify(results)) }, img), - op = document.querySelector('#wtp-plexit'); + return new Promise((resolve, reject) => { + chrome.runtime.sendMessage({ + type: 'SEARCH_PLEX', + options, + serverConfig: __CONFIG__.server + }, + response => + (response && response.error)? + reject(response.error): + (!response)? + reject(new Error('Unknown error')): + resolve(response) + ); + }); + } - if(po = button.querySelector('#plexit')) - po.remove(); - button.querySelector('ul').insertBefore(pi, op); + function Request_PlexURL(PlexUIID, key) { + return __CONFIG__.plexURL.replace(RegExp(`\/(${ __CONFIG__.server.id })?$`), `/web#!/server/` + PlexUIID) + `/details?key=${encodeURIComponent( key )}`; + } - let multiple = results.length, - items = multiple == 1? 'item': 'items'; + /* Listen for events */ + chrome.runtime.onMessage.addListener(async(request, sender) => { + UTILS_TERMINAL.log(`Listener event [${ request.instance_type }#${ request[request.instance_type.toLowerCase()] }]:`, request); - new Notification('update', `Done. ${ multiple } new ${ items } can be grabbed`, 7000, (event, target = button.querySelector('.list-action')) => target.click({ ...event, target })); + let data = request.data, + LOCATION = `${ request.name || 'anonymous' } @ instance ${ request.instance }`, + PARSING_ERROR = `Can't parse missing information. ${ LOCATION }`, + BUTTON_ERROR = `The button failed to render. ${ LOCATION }`, + EMPTY_REQUEST = `The given request is empty. ${ LOCATION }`; - if (multiple) - modifyPlexButton(button, 'multiple', `Download ${ multiple } ${ items }`, results); -} + if(!data) + return UTILS_TERMINAL.warn(EMPTY_REQUEST); + let button = RenderButton(); -function findPlexMedia(options) { - if(!(options && options.title)) - return; + if(!button) + return UTILS_TERMINAL.warn(BUTTON_ERROR); + button.classList.remove('sleeper'); - let { IMDbID, TMDbID, TVDbID } = options; + switch(request.type) { + case 'POPULATE': - TMDbID = +TMDbID; - TVDbID = +TVDbID; + if(data instanceof Array) { + for(let index = 0, length = data.length, item; index < length; index++) + if(!(item = data[index]) || !item.type) + data.splice(index, 1, null); - let opt = { name: options.title, year: options.year, image: options.image || IMG_URL.nil, type: options.type, imdb: IMDbID, IMDbID, tmdb: TMDbID, TMDbID, tvdb: TVDbID, TVDbID }, - op = document.querySelector('#wtp-plexit'), - img = (options.image)? - furnish('div', { tooltip: 'Add to Plex It!', style: `background: url(${ IMG_URL.p16 }) top right/60% no-repeat, #0004 url(${ opt.image }) center/contain no-repeat; height: 48px; width: 34px;`, draggable: true, onclick: event => {let frame = document.querySelector('#plexit-bookmarklet-frame'); frame.src = frame.src.replace(/(#plexit:.*)?$/, '#plexit:' + event.target.parentElement.getAttribute('data'))} }): - furnish('img', { title: 'Add to Plex It!', src: IMG_URL.p48, onclick: event => {let frame = document.querySelector('#plexit-bookmarklet-frame'); frame.src = frame.src.replace(/(#plexit:.*)?$/, '#plexit:' + event.target.parentElement.getAttribute('data'))} }); + data = data.filter(value => value !== null && value !== undefined); - findPlexMedia.OPTIONS = options; + for(let index = 0, length = data.length, item; index < length; index++) { + let { image, type, title, year, IMDbID, TMDbID, TVDbID } = (item = data[index]); - try { - getPlexMediaRequest(options) - .then(({ found, key }) => { - if (found) { - modifyPlexButton(options.button, 'found', 'On Plex', { ...options, key }); - opt = { ...opt, url: options.button.href, found: true, status: 'found' }; + if(!item.title || !item.type) + continue; - let po, pi = furnish('li#plexit.list-item', { data: btoa(JSON.stringify(opt)) }, img); + let Db = await Identify(item); - if(po = options.button.querySelector('#plexit')) - po.remove(); - options.button.querySelector('ul').insertBefore(pi, op); - } else { - options.field = 'original_title'; + IMDbID = IMDbID || Db.imdb || 'tt'; + TMDbID = TMDbID || Db.tmdb || 0; + TVDbID = TVDbID || Db.tvdb || 0; - return getPlexMediaRequest(options) - .then(({ found, key }) => { - if (found) { - modifyPlexButton(options.button, 'found', 'On Plex', { ...options, key }); - opt = { ...opt, url: options.button.href, found: true, status: 'found' }; + title = title || Db.title; + year = +(year || Db.year || 0); - let po, pi = furnish('li#plexit.list-item', { data: btoa(JSON.stringify(opt)) }, img); + data.splice(index, 1, { type, title, year, image, button, IMDbID, TMDbID, TVDbID }); + } - if(po = options.button.querySelector('#plexit')) - po.remove(); - options.button.querySelector('ul').insertBefore(pi, op); - } else { - let available = (config.ombiURL || config.watcherURL || config.radarrURL || config.sonarrURL || config.couchpotatoURL), - action = (available ? 'downloader' : 'notfound'), - title = available ? - 'Not on Plex (download available)': - 'Not on Plex (download not available)'; + if(!data.length) + return UTILS_TERMINAL.error(PARSING_ERROR); + else + FindMediaItems(data, button); + } else { + if(!data || !data.title || !data.type) + return UTILS_TERMINAL.error(PARSING_ERROR); - modifyPlexButton(options.button, action, title, options); - opt = { ...opt, found: false, status: action }; + let { image, type, title, year, IMDbID, TMDbID, TVDbID } = data; + let Db = await Identify(data); - let po, pi = furnish('li#plexit.list-item', { data: btoa(JSON.stringify(opt)) }, img); + IMDbID = IMDbID || Db.imdb || 'tt'; + TMDbID = TMDbID || Db.tmdb || 0; + TVDbID = TVDbID || Db.tvdb || 0; - if(po = options.button.querySelector('#plexit')) - po.remove(); - if(!!~[].slice.call(options.button.querySelector('ul').children).indexOf(op)) - options.button.querySelector('ul').insertBefore(pi, op); - } - }); + title = title || Db.title; + year = +(year || Db.year || 0); + + let found = await FindMediaItem({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); + Update('FOUND', { ...request, found }, true); } - }) - } catch(error) { - return modifyPlexButton( - options.button, - 'error', - 'Request to Plex Media Server failed', - options - ), - terminal.error(`Request to Plex failed: ${ String(error) }`); - // new Notification('Failed to communicate with Plex'); + return true; + + case 'INITIALIZE': + init && init(); + return true; + + case 'NO_RENDER': + document.queryBy('.web-to-plex-button').map(e => e.remove()); + return true; + + default: + // UTILS_TERMINAL.warn(`Unknown event [${ request.type }]`); + return false; } -} + }); -function getPlexMediaRequest(options) { - if(!(config.plexURL && config.plexToken) || config.DO_NOT_USE) - return new Promise((resolve, reject) => resolve({ found: false, key: null })); + /* Listen for Window events - from iframes, etc. */ + top.addEventListener('message', async request => { + try { + request = request.data; - return new Promise((resolve, reject) => { - chrome.runtime.sendMessage({ - type: 'SEARCH_PLEX', - options, - serverConfig: config.server - }, - response => - (response && response.error)? - reject(response.error): - (!response)? - reject(new Error('Unknown error')): - resolve(response) - ); - }); -} + switch(request.type) { + case 'SEND_VIDEO_LINK': + let options = { ...FindMediaItem.OPTIONS, href: request.href, remote: request.from }; -function getPlexMediaURL(PlexUIID, key) { - return config.plexURL.replace(RegExp(`\/(${ config.server.id })?$`), `/web#!/server/` + PlexUIID) + `/details?key=${encodeURIComponent( key )}`; -} + UTILS_TERMINAL.log(`Download Event [${ options.remote }]:`, options); -/* Listen for Plugin events */ -chrome.runtime.onMessage.addListener(async(request, sender) => { - terminal.log(`Plugin event [${ request.plugin }]:`, request); + UpdateButton(MASTER_BUTTON, 'downloader', 'Download', options); + return true; - switch(request.type) { - case 'POPULATE': - let button = renderPlexButton(), - data = request.data, - PARSING_ERROR = `Can't parse missing information. ${ request.name } @ instance ${ request.instance }`, - BUTTON_ERROR = `The button failed to render. ${ request.name } @ instance ${ request.instance }`; + case 'NOTIFICATION': + let { state, text, timeout = 7000, callback = () => {}, requiresClick = true } = request.data; + new Notification(state, text, timeout, callback, requiresClick); + return true; - if(!button) - return terminal.warn(BUTTON_ERROR); + case 'PERMISSION': + let { data } = request; - if(data instanceof Array) { - for(let index = 0, length = data.length, item; index < length; index++) - if(!(item = data[index]) || !item.type) - data.splice(index, 1, null); + if(typeof data.allowed == 'boolean') { + ALLOWED = data.allowed; + PERMISS = data.allotted; - data = data.filter(value => value !== null && value !== undefined); + await ParsedOptions(); - for(let index = 0, length = data.length, item; index < length; index++) { - let { image, type, title, year, IMDbID, TMDbID, TVDbID } = (item = data[index]); + (init && !RUNNING? (init(), RUNNING = true): RUNNING = false); + } else { + UTILS_TERMINAL.warn('Permission Request:', data); + new Prompt('permission', data); + } + return true; - if(!item.title || !item.type) - continue; + default: + // UTILS_TERMINAL.warn(`Unknown event [${ request.type }]`); + return false; + } + } catch(error) { + new Notification('error', `Unable to use downloader: ${ String(error) }`); + throw error + } + }); - let Db = await getIDs(item); + // create the sleeping button + wait(() => document.readyState === 'complete', () => RenderButton(null, { sleeper: true })); - IMDbID = IMDbID || Db.imdb || 'tt'; - TMDbID = TMDbID || Db.tmdb || 0; - TVDbID = TVDbID || Db.tvdb || 0; +})(new Date); - title = title || Db.title; - year = +(year || Db.year || 0); +/* Helpers */ - data.splice(index, 1, { type, title, year, image, button, IMDbID, TMDbID, TVDbID }); - } +function wait(on, then) { + if(on && ((on instanceof Function && on()) || true)) + then && then(); + else + setTimeout(() => wait(on, then), 50); +} - if(!data.length) - return terminal.error(PARSING_ERROR); - else - squabblePlex(data, button); - } else { - if(!data.title || !data.type) - return terminal.error(PARSING_ERROR); +// the custom "on location change" event +function watchlocationchange(subject) { + let locationchangecallbacks = watchlocationchange.locationchangecallbacks; - let { image, type, title, year, IMDbID, TMDbID, TVDbID } = data; - let Db = await getIDs(data); + watchlocationchange[subject] = watchlocationchange[subject] || location[subject]; - IMDbID = IMDbID || Db.imdb || 'tt'; - TMDbID = TMDbID || Db.tmdb || 0; - TVDbID = TVDbID || Db.tvdb || 0; + if(watchlocationchange[subject] != location[subject]) { + let from = watchlocationchange[subject], + to = location[subject], + properties = { from, to }, + sign = code => (code + '').replace(/\s+/g, ''); - title = title || Db.title; - year = +(year || Db.year || 0); + watchlocationchange[subject] = location[subject]; - findPlexMedia({ type, title, year, image, button, IMDbID, TMDbID, TVDbID }); - } - return true; + for(let index = 0, length = locationchangecallbacks.length, callback, exists, signature; length > 0 && index < length; index++) { + callback = locationchangecallbacks[index]; + exists = locationchangecallbacks.exists[signature = sign(callback)]; - default: -// terminal.warn(`Unknown event [${ request.type }]`); - return false; - } -}); + let event = new Event('locationchange', { bubbles: true }); -/* Listen for Window events - from iframes, etc. */ -top.addEventListener('message', request => { - try { - request = request.data; + if(!exists && callback && typeof callback == 'function') { + /* The eventlistener does not exist */ - switch(request.type) { - case 'SEND_VIDEO_LINK': - let options = { ...findPlexMedia.OPTIONS, href: request.href, remote: request.from }; + locationchangecallbacks.exists[signature] = true; + window.addEventListener('beforeunload', event => { + event.preventDefault(false); + }); - modifyPlexButton(options.button, 'downloader', 'Download', options); - return true; + open(to, '_self'); + } else { + /* The eventlistener already exists */ - default: - // terminal.warn(`Unknown event [${ request.type }]`); - return false; + callback({ event, ...properties }); + + open(to, '_self'); + } } - } catch(error) { - new Notification('error', `Unable to use downloader: ${ String(error) }`); - throw error } -}); +} +watchlocationchange.locationchangecallbacks = watchlocationchange.locationchangecallbacks || []; +watchlocationchange.locationchangecallbacks.exists = watchlocationchange.locationchangecallbacks.exists || {}; + +if(!('onlocationchange' in window)) + Object.defineProperty(window, 'onlocationchange', { + set: callback => (typeof callback == 'function'? watchlocationchange.locationchangecallbacks.push(callback): null), + get: () => watchlocationchange.locationchangecallbacks + }); -String.prototype.toCaps = function toCaps(all) { +watchlocationchange.onlocationchangeinterval = watchlocationchange.onlocationchangeinterval || setInterval(() => watchlocationchange('href'), 1000); +// at least 1s is needed to properly fire the event ._. + +String.prototype.toCaps = String.prototype.toCaps || function toCaps(all) { /** Titling Caplitalization * Articles: a, an, & the * Conjunctions: and, but, for, nor, or, so, & yet * Prepositions: across, after, although, at, because, before, between, by, during, from, if, in, into, of, on, to, through, under, with, & without */ let array = this.toLowerCase(), - titles = /(?!^|(?:an?|the)\s+)\b(a([st]|nd?|cross|fter|lthough)?|b(e(cause|fore|tween)|ut|y)|during|from|in(to)?|[io][fn]|[fn]?or|the|[st]o|through|under|with(out)?|yet)(?!\s*$)\b/gi, + titles = /(?!^|(?:an?|the)\s+)\b(a([st]|nd?|cross|fter|lthough)?|b(e(cause|fore|tween)?|ut|y)|during|from|in(to)?|[io][fn]|[fn]?or|the|[st]o|through|under|with(out)?|yet)(?!\s*$)\b/gi, cap_exceptions = /([\|\"\(]\s*[a-z]|[\:\.\!\?]\s+[a-z]|(?:^\b|[^\'\-\+]\b)[^aeiouy\d\W]+\b)/gi, // Punctuation exceptions, e.g. "And not I" - all_exceptions = /\b((?:ww)?(?:m+[dclxvi]*|d+[clxvi]*|c+[lxvi]*|l+[xvi]*|x+[vi]*|v+i*|i+))\b/gi, // Roman Numberals - cam_exceptions = /\b((?:mr?s|[sdjm]r|mx)|(?:adm|cm?dr?|chf|c[op][lmr]|cpt|gen|lt|mjr|sgt)|doc|hon|prof)\./gi; // Titles (Most Common?) + all_exceptions = /\b((?:ww)?(?:m{1,4}(?:c?d(?:c{0,3}(?:x?l(?:x{0,3}(?:i?vi{0,3})?)?)?)?)?|c?d(?:c{0,3}(?:x?l(?:x{0,3}(?:i?vi{0,3})?)?)?)?|c{1,3}(?:x?l(?:x{0,3}(?:i?vi{0,3})?)?)?|x?l(?:x{0,3}(?:i?vi{0,3})?)?|x{1,3}(?:i?vi{0,3})?|i?vi{0,3}|i{1,3}))\b/gi, // Roman Numberals + cam_exceptions = /\b((?:mr?s|[sdjm]r|mx)|(?:adm|cm?dr?|chf|c[op][lmr]|cpt|gen|lt|mjr|sgt)|doc|hon|prof)(?:\.|\b)/gi, // Titles (Most Common?) + low_exceptions = /'([\w]+)/gi; // Apostrphe cases array = array.split(/\s+/); @@ -1704,10 +2550,11 @@ String.prototype.toCaps = function toCaps(all) { if(!all) string = string - .replace(titles, ($0, $1, $$, $_) => $1.toLowerCase()) - .replace(cap_exceptions, ($0, $1, $$, $_) => $1.toUpperCase()) - .replace(all_exceptions, ($0, $1, $$, $_) => $1.toUpperCase()) - .replace(cam_exceptions, ($0, $1, $$, $_) => $0[0].toUpperCase() + $0.slice(1, $0.length).toLowerCase()); + .replace(titles, ($0, $1, $$, $_) => $1.toLowerCase()) + .replace(all_exceptions, ($0, $1, $$, $_) => $1.toUpperCase()) + .replace(cap_exceptions, ($0, $1, $$, $_) => $1.toUpperCase()) + .replace(low_exceptions, ($0, $1, $$, $_) => $0.toLowerCase()) + .replace(cam_exceptions, ($0, $1, $$, $_) => $1[0].toUpperCase() + $1.slice(1, $1.length).toLowerCase() + '.'); return string; }; @@ -1732,9 +2579,9 @@ String.prototype.toCaps = function toCaps(all) {
2
3
*/ - parent.queryBy = function queryBy(selectors, container = parent) { + parent.queryBy = parent.queryBy || function queryBy(selectors, container = parent) { // Helpers - let copy = array => [].slice.call(array), + let copy = array => [...array], query = (SELECTORS, CONTAINER = container) => CONTAINER.querySelectorAll(SELECTORS); // Get rid of enclosing syntaxes: [...] and (...) @@ -1765,24 +2612,26 @@ String.prototype.toCaps = function toCaps(all) { selector = selector .replace(/\:nth-parent\((\d+)\)/g, ($0, $1, $$, $_) => (generations -= +$1, '')) .replace(/(\:{1,2}parent\b|<\s*(\*|\s*(,|$)))/g, ($0, $$, $_) => (--generations, '')) - .replace(/<([^<,]+)?/g, ($0, $1, $$, $_) => (ancestor = $1, --generations, '')); + .replace(/<([^<,]+)?/g, ($0, $1, $$, $_) => (ancestor = $1, --generations, '')) + .replace(/^\s+|\s+$/g, ''); let elements = query(selector), parents = [], parent; for(; generations < 0; generations++) elements.forEach( element => { - let P = element, - E = C => [].slice.call(query(ancestor, C)), - F; + let P = element, Q = P.parentElement, R = (Q? Q.parentElement: {}), + E = C => [...query(ancestor, C)], + F, G; - for(let I = 0, L = -generations; ancestor && !!P && I < L; I++) - P = !!~E(P.parentElement).indexOf(P)? P: P.parentElement; + for(let I = 0, L = -generations; ancestor && !!R && !!Q && !!P && I < L; I++) + parent = !!~E(R).indexOf(Q)? Q: G; - parent = ancestor? !~E(P.parentElement).indexOf(P)? null: P: P.parentElement; + for(let I = 0, L = -generations; !!Q && !!P && I < L; I++) + parent = Q = (P = Q).parentElement; - if(!~parents.indexOf(parent)) - parents.push(parent); + if(!~parents.indexOf(parent)) + parents.push(parent); }); media.push(parents.length? parents: elements); } @@ -1811,7 +2660,11 @@ String.prototype.toCaps = function toCaps(all) { child: { value: index => media[index - 1], ...properties - } + }, + empty: { + value: !media.length, + ...properties + }, }); return media; @@ -1820,8 +2673,8 @@ String.prototype.toCaps = function toCaps(all) { /** Adopted from * LICENSE: MIT (2018) */ - parent.furnish = function furnish(name, attributes = {}, ...children) { - let u = v => v && v.length, R = RegExp; + parent.furnish = parent.furnish || function furnish(TAGNAME, ATTRIBUTES = {}, ...CHILDREN) { + let u = v => v && v.length, R = RegExp, name = TAGNAME, attributes = ATTRIBUTES, children = CHILDREN; if( !u(name) ) throw TypeError(`TAGNAME cannot be ${ (name === '')? 'empty': name }`); @@ -1842,7 +2695,7 @@ String.prototype.toCaps = function toCaps(all) { else if(t == '.') attributes.classList = [].slice.call(attributes.classList || []).concat(v); else if(/\[(.+)\]/.test(n[i])) - R.$1.split('][').forEach(N => attributes[(N = N.split('=', 2))[0]] = N[1] || ''); + R.$1.split('][').forEach(N => attributes[(N = N.replace(/\s*=\s*(?:("?)([^]*)\1)?/, '=$2').split('=', 2))[0]] = N[1] || ''); name = name[0]; let element = document.createElement(name, options); @@ -1851,9 +2704,23 @@ String.prototype.toCaps = function toCaps(all) { attributes.classList = attributes.classList.join(' '); Object.entries(attributes).forEach( - ([name, value]) => (/^(on|(?:inner|outer)(?:HTML|Text)|textContent|class(?:List|Name)$|value)/.test(name))? + ([name, value]) => (/^(on|(?:(?:inner|outer)(?:HTML|Text)|textContent|class(?:List|Name)|value)$)/.test(name))? + (typeof value == 'string' && /^on/.test(name))? + (() => { + try { + /* Can't make a new function(eval) */ + element[name] = new Function('', value); + } catch (__error) { + try { + /* Not a Chrome (extension) state */ + chrome.tabs.getCurrent(tab => chrome.tabs.executeScript(tab.id, { code: `document.furnish.__cache__ = () => {${ value }}` }, __cache__ => element[name] = __cache__[0] || parent.furnish.__cache__ || value)); + } catch (_error) { + throw __error, _error; + } + } + })(): element[name] = value: - element.setAttribute(name, value) + element.setAttribute(name, value) ); children
- Login + Login

Login Settings

-
- +
+ Use your Plex token -
+

— OR —

-
- - - +
+ Login with Plex + +
Your Plex username and password are never stored, only your Plex token.
Your username and password are used in order to get a token from Plex itself.
-
+

— OR —

-
- - - +
+ Attach to Ombi* + +
- Fill in Manager Settings with Ombi? +

Fill in Manager Settings with Ombi?

@@ -634,22 +73,21 @@

— OR —

Your Ombi Plex token will be shared by this extension.
-
-
- + +

- -
- Advanced + Advance

Plex Server Options

@@ -669,7 +107,7 @@

Manager Settings

- Ombi (Movies/TV Shows) + Ombi (Movies/TV Shows)

Connection Settings

@@ -708,10 +146,16 @@

Login (saved)

+

+
+ try out ombi +
+
+
- Watcher (Movies) + Watcher (Movies)

Connection Settings

@@ -764,10 +208,14 @@

Login (saved)

+

+
+ try out watcher +
- Radarr (Movies) + Radarr (Movies)

Connection Settings

@@ -783,7 +231,7 @@

Connection Settings

1. Go to Radarr | Settings | General
- 2. Click on "Show advanced," then copy/paste the "API Key."
+ 2. Click on "Show advance," then copy/paste the "API Key."
Such as aa756d33242f6g8ffbca2b3963586f21
@@ -809,7 +257,7 @@

Login (saved)

-
@@ -822,26 +270,30 @@

Login (saved)

+

+
+ try out radarr +
-
- Sonarr (TV Shows) +
+ CouchPotato (Movies)

Connection Settings

- - + +
- Such as https://example.com/sonarr or http://192.168.1.100:8989 + Such as https://example.com/couchpotato or http://192.168.1.100:5050
- - + +
- 1. Go to Sonarr | Settings | General
- 2. Click on "Show advanced," then copy/paste the "API Key."
+ 1. Go to CouchPotato | Settings
+ 2. Copy/Paste the "API Key."
Such as aa756d33242f6g8ffbca2b3963586f21
@@ -849,57 +301,126 @@

Connection Settings

Login (saved)

- -
Only use this if you setup a Sonarr username.
+ +
Only use this if you setup a CouchPotato username.
- -
Only use this if you setup a Sonarr password.
+ +
Only use this if you setup a CouchPotato password.
Your password will be hidden once saved.
-
-
This information will be used for Basic Access Authentication only. This will allow the extension to ask Sonarr for your list of shows, or to add to your list of shows.
- +
This information will be used for Basic Access Authentication only. This will allow the extension to ask Couchpotato for your list of videos, or to add to your list of videos.
- + +
+ +
+

+
+ try out couchpotato +
-
- CouchPotato (Movies/TV Shows) +
+ +
+ Medusa (TV Shows) + +

Connection Settings

+
+ + +
+ Such as https://example.com/medusa or http://192.168.1.100:8081 +
+
+ +
+ + +
+ 1. Go to Medusa | Settings | General | Interface | Web Interface
+ 2. Copy/Paste the "API key."
+ Such as aa756d33242f6g8ffbca2b3963586f21 +
+
+ +

Login (saved)

+
+ + +
+
+ + +
Your password will be hidden once saved.
+
+
This information will be used for Basic Access Authentication only. This will allow the extension to ask Medusa for your list of TV shows, or to add to your list of TV shows.
+
+ +
+ +
+ +
+ + +
+ This should be the same path (verbatim) used in Medusa. +
+
+
+ + +
+ + +
+

+
+ try out medusa +
+
+ +
+ Sonarr (TV Shows)

Connection Settings

- - + +
- Such as https://example.com/couchpotato or http://192.168.1.100:5050 + Such as https://example.com/sonarr or http://192.168.1.100:8989
- - + +
- 1. Go to CouchPotato | Settings
- 2. Copy/Paste the "API Key."
+ 1. Go to Sonarr | Settings | General
+ 2. Click on "Show advance," then copy/paste the "API Key."
Such as aa756d33242f6g8ffbca2b3963586f21
@@ -907,32 +428,113 @@

Connection Settings

Login (saved)

- -
Only use this if you setup a CouchPotato username.
+ +
Only use this if you setup a Sonarr username.
- -
Only use this if you setup a CouchPotato password.
+ +
Only use this if you setup a Sonarr password.
Your password will be hidden once saved.
+
+
This information will be used for Basic Access Authentication only. This will allow the extension to ask Sonarr for your list of TV shows, or to add to your list of TV shows.
-
This information will be used for Basic Access Authentication only. This will allow the extension to ask Couchpotato for your list of videos, or to add to your list of videos.
+
- +

+
+ try out sonarr +
+ +
+ Sick Beard (TV Shows) + +

Connection Settings

+
+ + +
+ Such as https://example.com/sickBeard or http://192.168.1.100:8081 +
+
+ +
+ + +
+ 1. Go to Sick Beard | Config | General | API
+ — a. Ensure the checkbox "Enable API" is enabled
+ — b. Press the "Generate" button
+ 2. Copy/Paste the "API Key."
+ Such as aa756d33242f6g8ffbca2b3963586f21 +
+
+ +

Login (saved)

+
+ + +
+
+ + +
Your password will be hidden once saved.
+
+
This information will be used for Basic Access Authentication only. This will allow the extension to ask Sick Beard for your list of TV shows, or to add to your list of TV shows.
+
+ +
+ +
+ +
+ + +
+ This should be the same path (verbatim) used in Sick Beard. +
+
+
+ + +
+ + + +
+

+
+ try out Sick Beard +
+
@@ -940,13 +542,35 @@

Other Settings

- Plugins + Theme Settings + +

The Button

+
+ Where should the button be? +
+ + + + + +
+
+
+ +
+
+ Site Settings

Experimental Sites

-
+
+ +

Default Sites

+
+ +
@@ -956,18 +580,20 @@

Experimental Sites

Proxy Settings

- -
- - -
+

+ Force Secure Connections + + + + +

- If enabled, all insecure (HTTP) requests will be through an HTTPS proxy. + If enabled, all insecure (HTTP) requests will be through an HTTPS proxy.
- +

Proxy URL & Syntax

Please provide the URL of your proxy. @@ -975,7 +601,7 @@

Proxy Settings

If your proxy requires a special syntax, enter that information in as well.
    -
  • {url} OR {raw-url} — the raw, uneditied URL
  • +
  • {raw-url} OR {url} — the raw, uneditied URL
  • {enc-url} OR {encode-url} — an encoded URL
  • {b64-url} OR {base64-url} — a Base-64 encoded URL
@@ -983,26 +609,26 @@

Proxy Settings

- +

Proxy Headers

- If your proxy requires special headers, enter that information in here. + If your proxy requires special headers, enter that information in here.