18 | TV
19 | Movies
20 |
22 |
23 |
24 |
25 |
26 |
27 |
31 | `;
32 | const popMovies = (await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1')).data.results;
33 | const popMoviesTwo = (await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=2')).data.results;
34 | const popMoviesThree = (await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=3')).data.results;
35 | const popShows = (await axios.get('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1')).data.results;
36 | const popShowsTwo = (await axios.get('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=2')).data.results;
37 | const popShowsThree = (await axios.get('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=3')).data.results;
38 | // const popSports = (await fetch())
39 | const input = root.querySelector('input');
40 | const dropdown = root.querySelector('.dropdown');
41 | const resultsWrapper = root.querySelector('.results');
42 | for (let i = 0; i < 20; i++) {
43 | let currPM = popMovies[i];
44 | let currPS = popShows[i];
45 |
46 | const pmElem = document.createElement('a');
47 | pmElem.classList.add('scrollmenu-item');
48 | pmElem.innerHTML = `
`;
49 | pmElem.addEventListener('click', () => {
50 | input.value = inputValue(currPM);
51 | document.querySelector('html').style.height = 'auto';
52 | onOptionSelect(currPM);
53 |
54 | });
55 | document.getElementById("pmScroll").appendChild(pmElem);
56 |
57 | const psElem = document.createElement('a');
58 | psElem.classList.add('scrollmenu-item');
59 | psElem.innerHTML = `
`;
60 | psElem.addEventListener('click', () => {
61 | input.value = inputValue(currPS);
62 | document.querySelector('html').style.height = 'auto';
63 | onOptionSelect(currPS);
64 | });
65 | document.getElementById("psScroll").appendChild(psElem);
66 | }
67 | for (let i = 0; i < 20; i++) {
68 | let currPM = popMoviesTwo[i];
69 | let currPS = popShowsTwo[i];
70 |
71 | const pmElem = document.createElement('a');
72 | pmElem.classList.add('scrollmenu-item');
73 | pmElem.innerHTML = `
`;
74 | pmElem.addEventListener('click', () => {
75 | input.value = inputValue(currPM);
76 | document.querySelector('html').style.height = 'auto';
77 | onOptionSelect(currPM);
78 |
79 | });
80 | document.getElementById("pmScroll").appendChild(pmElem);
81 |
82 | const psElem = document.createElement('a');
83 | psElem.classList.add('scrollmenu-item');
84 | psElem.innerHTML = `
`;
85 | psElem.addEventListener('click', () => {
86 | input.value = inputValue(currPS);
87 | document.querySelector('html').style.height = 'auto';
88 | onOptionSelect(currPS);
89 | });
90 | document.getElementById("psScroll").appendChild(psElem);
91 | }
92 | for (let i = 0; i < 20; i++) {
93 | let currPM = popMoviesThree[i];
94 | let currPS = popShowsThree[i];
95 |
96 | const pmElem = document.createElement('a');
97 | pmElem.classList.add('scrollmenu-item');
98 | pmElem.innerHTML = `
`;
99 | pmElem.addEventListener('click', () => {
100 | input.value = inputValue(currPM);
101 | document.querySelector('html').style.height = 'auto';
102 | onOptionSelect(currPM);
103 |
104 | });
105 | document.getElementById("pmScroll").appendChild(pmElem);
106 |
107 | const psElem = document.createElement('a');
108 | psElem.classList.add('scrollmenu-item');
109 | psElem.innerHTML = `
`;
110 | psElem.addEventListener('click', () => {
111 | input.value = inputValue(currPS);
112 | document.querySelector('html').style.height = 'auto';
113 | onOptionSelect(currPS);
114 | });
115 | document.getElementById("psScroll").appendChild(psElem);
116 | }
117 |
118 | //SPORTS - NFL
119 | /*const spElem = document.createElement('a');
120 | spElem.classList.add('scrollmenu-item');
121 | spElem.innerHTML = `
`;
122 | spElem.addEventListener('click', () => {
123 | document.querySelector('#autocomplete').style.display = 'none';
124 | document.querySelector('#summary').style.display = 'block';
125 | document.querySelector('#summary').innerHTML = '';
126 | //setTemplate("nfl", 001, document.querySelector('#summary'), null);
127 | onSportSelect("NFL");
128 | });
129 | document.getElementById("spScroll").appendChild(spElem);*/
130 |
131 |
132 |
133 | document.getElementById("popMovies").style.display = 'block';
134 | let movieSugg = document.getElementById("movieSuggButt");
135 | let tvSugg = document.getElementById("tvSuggButt");
136 |
137 | tvSugg.style.backgroundColor = 'white';
138 | tvSugg.style.color = 'black';
139 | //let sportsSugg = document.getElementById("sportsSuggButt");
140 |
141 | movieSugg.addEventListener('click', () => {
142 | document.getElementById("pmScroll").style.display = 'block';
143 | document.getElementById("psScroll").style.display = 'none';
144 | document.getElementById("spScroll").style.display = 'none';
145 | movieSugg.style.backgroundColor = 'white';
146 | movieSugg.style.color = 'black';
147 | tvSugg.style.backgroundColor = 'black';
148 | tvSugg.style.color = 'white';
149 | sportsSugg.style.backgroundColor = 'black';
150 | sportsSugg.style.color = 'white';
151 | });
152 | tvSugg.addEventListener('click', () => {
153 | document.getElementById("pmScroll").style.display = 'none';
154 | document.getElementById("spScroll").style.display = 'none';
155 | document.getElementById("psScroll").style.display = 'block';
156 | tvSugg.style.backgroundColor = 'white';
157 | tvSugg.style.color = 'black';
158 | movieSugg.style.backgroundColor = 'black';
159 | movieSugg.style.color = 'white';
160 | sportsSugg.style.backgroundColor = 'black';
161 | sportsSugg.style.color = 'white';
162 | });
163 | /*
164 | sportsSugg.addEventListener('click', () => {
165 | document.getElementById("pmScroll").style.display = 'none';
166 | document.getElementById("psScroll").style.display = 'none';
167 | document.getElementById("spScroll").style.display = 'block';
168 | sportsSugg.style.backgroundColor = 'white';
169 | sportsSugg.style.color = 'black';
170 | movieSugg.style.backgroundColor = 'black';
171 | movieSugg.style.color = 'white';
172 | tvSugg.style.backgroundColor = 'black';
173 | tvSugg.style.color = 'white';
174 | });*/
175 | //document.getElementById("popShows").style.display = 'block';
176 |
177 | const onInput = async event => {
178 | const items = await fetchData(event.target.value);
179 | console.log(document.activeElement.className);
180 | if (!items.length) {
181 | document.querySelector('.dropdown-menu').style.display = 'none';
182 | document.querySelector('html').style.height = 'auto';
183 | document.querySelector('#summary').innerHTML = '';
184 | document.getElementById("popMovies").style.display = 'block';
185 | //document.getElementById("popShows").style.display = 'block';
186 | //document.getElementById("pmScroll").scrollLeft = 0;
187 | //document.getElementById("psScroll").scrollLeft = 0;
188 | return;
189 | } else {
190 | document.querySelector('.dropdown-menu').style.display = 'block';
191 | document.querySelector('html').style.height = '100%';
192 | document.getElementById("popMovies").style.display = 'none';
193 | //document.getElementById("popShows").style.display = 'none';
194 | //document.querySelector('.results').scrollTop = 0;
195 | }
196 | resultsWrapper.innerHTML = '';
197 | dropdown.classList.add('is-active');
198 | for (let item of items) {
199 | const option = document.createElement('a');
200 | option.classList.add('dropdown-item');
201 | option.innerHTML = renderOption(item);
202 | option.addEventListener('click', () => {
203 | //dropdown.classList.remove('is-active');
204 | input.value = inputValue(item);
205 | document.querySelector('html').style.height = 'auto';
206 | onOptionSelect(item);
207 | });
208 | option.addEventListener('keydown', event => {
209 |
210 | console.log(event.key);
211 |
212 | if (event.key === "ArrowDown") {
213 | event.preventDefault();
214 | var currActive = document.activeElement;
215 | if (currActive.nextElementSibling) {
216 | currActive.nextElementSibling.focus();
217 | } else {
218 | input.focus();
219 | }
220 | } else if (event.key === "ArrowUp") {
221 | event.preventDefault();
222 | var currActive = document.activeElement;
223 | if (currActive.previousElementSibling) {
224 | console.log("prev sibling");
225 | currActive.previousElementSibling.focus();
226 | } else {
227 | input.focus();
228 | }
229 | } else if (event.key === "Enter") {
230 | event.preventDefault();
231 | dropdown.classList.remove('is-active');
232 | input.value = inputValue(item);
233 | document.querySelector('html').style.height = 'auto';
234 | onOptionSelect(item);
235 | } else {
236 | event.preventDefault();
237 | if (isLetter(event.key) || isNumeric(event.key)) {
238 | input.value += event.key;
239 | }
240 | input.focus();
241 | }
242 | });
243 | option.setAttribute('tabindex', 0);
244 | resultsWrapper.appendChild(option);
245 | }
246 |
247 | function isLetter(str) {
248 | return str.length === 1 && str.match(/[a-z]/i);
249 | }
250 |
251 | function isNumeric(str) {
252 | if (typeof str != "string") return false // we only process strings!
253 | return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
254 | !isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail
255 | }
256 | input.addEventListener('keydown', event => {
257 | if (event.key === "ArrowDown") {
258 | event.preventDefault();
259 | console.log(event.key);
260 | resultsWrapper.firstElementChild.focus();
261 | } else if (event.key === "ArrowUp") {
262 | event.preventDefault();
263 | console.log(event.key);
264 | resultsWrapper.lastElementChild.focus();
265 | }
266 |
267 | });
268 | };
269 | input.addEventListener('input', debounce(onInput, 50));
270 |
271 | document.addEventListener('click', event => {
272 | if (!root.contains(event.target)) {
273 | dropdown.classList.remove('is-active');
274 | }
275 | });
276 |
277 | };
278 |
279 | function loadStored(cbMedia) {
280 | chrome.storage.local.get(['savedPopMovies', 'savedPopShows', 'pmArr', 'psArr'], cbMedia);
281 | }
--------------------------------------------------------------------------------
/Chrome/js/background.js:
--------------------------------------------------------------------------------
1 | chrome.runtime.onInstalled.addListener((details) => {
2 | const currentVersion = chrome.runtime.getManifest().version;
3 | const previousVersion = details.previousVersion;
4 | const reason = details.reason;
5 | /*
6 | chrome.storage.local.get("savedPopMovies", function(items) {
7 | getTrending();
8 | });
9 | chrome.alarms.get('getTrending', a => {
10 | if (!a){
11 | chrome.alarms.create('getTrending', { periodInMinutes: 1440.0 });
12 | }
13 | });
14 | console.log('Previous Version: ${previousVersion }')
15 | console.log('Current Version: ${currentVersion }')
16 | */
17 |
18 | switch (reason) {
19 | case 'install':
20 | console.log('New User installed the extension.')
21 | chrome.tabs.create({ url: "https://letmewatch.app/install.html" });
22 | break;
23 | case 'update':
24 | console.log('User has updated their extension.')
25 | break;
26 | case 'chrome_update':
27 | case 'shared_module_update':
28 | default:
29 | console.log('Other install events within the browser')
30 | break;
31 | }
32 |
33 | });
34 |
35 | /*chrome.alarms.onAlarm.addListener(() => {
36 | chrome.storage.local.set({ 'savedSummary': document.getElementById("summary").outerHTML });
37 |
38 | });
39 |
40 | /*chrome.runtime.onStartup.addListener(() => {
41 | //chrome.storage.local.get("savedPopMovies", function(items) {
42 | getTrending();
43 | //});
44 | });
45 | /*
46 | //const getTrending = async() => {
47 | function getTrending() {
48 | //const popMovies = (await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1')).data.results;
49 | // var popMovies;
50 | // var popShows;
51 | //var pmRes =
52 | //var psRes;
53 | console.log("getTrending");
54 | fetch('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1').then(r => r.json()).then(popMovies => {
55 | console.log(popMovies.results);
56 | var pmRes = popMovies.results;
57 |
58 |
59 | let popMovieStr = `
60 |
61 |
97 | `;
98 | //var savedPM = $("#popMv").detach();
99 | chrome.storage.local.set({ 'savedPopMovies': popMovieStr });
100 | chrome.storage.local.set({ 'pmArr': pmRes });
101 | //localStorage.setItem('savedPopMovies', popMovieStr);
102 |
103 | });
104 |
105 | fetch('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1').then(r => r.json()).then(popShows => {
106 | console.log(popShows.results);
107 | var psRes = popShows.results;
108 | let popShowStr = `
109 |
110 |
141 | `;
142 | /*const popSh = document.createElement('article');
143 | popSh.outerHTML = `
144 |
145 |
147 | `;
148 | popSh.appendChild(psScrMen);
149 | chrome.storage.local.set({ 'savedPopShows': popShowStr });
150 | chrome.storage.local.set({ 'psArr': psRes });
151 | //localStorage.setItem('savedPopShows', popShowStr);
152 | });
153 | //console.log("hi");
154 |
155 | //var popMovies = await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1');
156 | //var popShows = await axios.get('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1');
157 | /*console.log(popMovies.results);
158 | console.log(popShows.results);
159 | //};*/
--------------------------------------------------------------------------------
/Chrome/js/thankYou.js:
--------------------------------------------------------------------------------
1 | /*
2 | (function(i, s, o, g, r, a, m) {
3 | i['GoogleAnalyticsObject'] = r;
4 | i[r] = i[r] || function() {
5 | (i[r].q = i[r].q || []).push(arguments)
6 | }, i[r].l = 1 * new Date();
7 | a = s.createElement(o),
8 | m = s.getElementsByTagName(o)[0];
9 | a.async = 1;
10 | a.src = g;
11 | m.parentNode.insertBefore(a, m)
12 | })(window, document, 'script', './js/third-party/analytics.js', 'ga');
13 |
14 | ga('create', 'UA-208644341-1', 'auto');
15 |
16 | // Modifications:
17 | ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
18 | ga('send', 'pageview', '/thankYou'); // Set page, avoiding rejection due to chrome-extension protocol
19 | */
--------------------------------------------------------------------------------
/Chrome/js/third-party/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Chrome/js/third-party/.DS_Store
--------------------------------------------------------------------------------
/Chrome/js/third-party/axios.min.js:
--------------------------------------------------------------------------------
1 | /* axios v0.19.0 | (c) 2019 by Matt Zabriskie */ ! function(e, t) { "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.axios = t() : e.axios = t() }(this, function() {
2 | return function(e) {
3 | function t(r) { if (n[r]) return n[r].exports; var o = n[r] = { exports: {}, id: r, loaded: !1 }; return e[r].call(o.exports, o, o.exports, t), o.loaded = !0, o.exports } var n = {}; return t.m = e, t.c = n, t.p = "", t(0) }([function(e, t, n) { e.exports = n(1) }, function(e, t, n) { "use strict";
4 |
5 | function r(e) { var t = new i(e),
6 | n = s(i.prototype.request, t); return o.extend(n, i.prototype, t), o.extend(n, t), n } var o = n(2),
7 | s = n(3),
8 | i = n(5),
9 | a = n(22),
10 | u = n(11),
11 | c = r(u);
12 | c.Axios = i, c.create = function(e) { return r(a(c.defaults, e)) }, c.Cancel = n(23), c.CancelToken = n(24), c.isCancel = n(10), c.all = function(e) { return Promise.all(e) }, c.spread = n(25), e.exports = c, e.exports.default = c }, function(e, t, n) { "use strict";
13 |
14 | function r(e) { return "[object Array]" === j.call(e) }
15 |
16 | function o(e) { return "[object ArrayBuffer]" === j.call(e) }
17 |
18 | function s(e) { return "undefined" != typeof FormData && e instanceof FormData }
19 |
20 | function i(e) { var t; return t = "undefined" != typeof ArrayBuffer && ArrayBuffer.isView ? ArrayBuffer.isView(e) : e && e.buffer && e.buffer instanceof ArrayBuffer }
21 |
22 | function a(e) { return "string" == typeof e }
23 |
24 | function u(e) { return "number" == typeof e }
25 |
26 | function c(e) { return "undefined" == typeof e }
27 |
28 | function f(e) { return null !== e && "object" == typeof e }
29 |
30 | function p(e) { return "[object Date]" === j.call(e) }
31 |
32 | function d(e) { return "[object File]" === j.call(e) }
33 |
34 | function l(e) { return "[object Blob]" === j.call(e) }
35 |
36 | function h(e) { return "[object Function]" === j.call(e) }
37 |
38 | function m(e) { return f(e) && h(e.pipe) }
39 |
40 | function y(e) { return "undefined" != typeof URLSearchParams && e instanceof URLSearchParams }
41 |
42 | function g(e) { return e.replace(/^\s*/, "").replace(/\s*$/, "") }
43 |
44 | function x() { return ("undefined" == typeof navigator || "ReactNative" !== navigator.product && "NativeScript" !== navigator.product && "NS" !== navigator.product) && ("undefined" != typeof window && "undefined" != typeof document) }
45 |
46 | function v(e, t) { if (null !== e && "undefined" != typeof e)
47 | if ("object" != typeof e && (e = [e]), r(e))
48 | for (var n = 0, o = e.length; n < o; n++) t.call(null, e[n], n, e);
49 | else
50 | for (var s in e) Object.prototype.hasOwnProperty.call(e, s) && t.call(null, e[s], s, e) }
51 |
52 | function w() {
53 | function e(e, n) { "object" == typeof t[n] && "object" == typeof e ? t[n] = w(t[n], e) : t[n] = e } for (var t = {}, n = 0, r = arguments.length; n < r; n++) v(arguments[n], e); return t }
54 |
55 | function b() {
56 | function e(e, n) { "object" == typeof t[n] && "object" == typeof e ? t[n] = b(t[n], e) : "object" == typeof e ? t[n] = b({}, e) : t[n] = e } for (var t = {}, n = 0, r = arguments.length; n < r; n++) v(arguments[n], e); return t }
57 |
58 | function E(e, t, n) { return v(t, function(t, r) { n && "function" == typeof t ? e[r] = S(t, n) : e[r] = t }), e } var S = n(3),
59 | R = n(4),
60 | j = Object.prototype.toString;
61 | e.exports = { isArray: r, isArrayBuffer: o, isBuffer: R, isFormData: s, isArrayBufferView: i, isString: a, isNumber: u, isObject: f, isUndefined: c, isDate: p, isFile: d, isBlob: l, isFunction: h, isStream: m, isURLSearchParams: y, isStandardBrowserEnv: x, forEach: v, merge: w, deepMerge: b, extend: E, trim: g } }, function(e, t) { "use strict";
62 | e.exports = function(e, t) { return function() { for (var n = new Array(arguments.length), r = 0; r < n.length; r++) n[r] = arguments[r]; return e.apply(t, n) } } }, function(e, t) {
63 | /*!
64 | * Determine if an object is a Buffer
65 | *
66 | * @author Feross Aboukhadijeh
67 | * @license MIT
68 | */
69 | e.exports = function(e) { return null != e && null != e.constructor && "function" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e) }
70 | }, function(e, t, n) { "use strict";
71 |
72 | function r(e) { this.defaults = e, this.interceptors = { request: new i, response: new i } } var o = n(2),
73 | s = n(6),
74 | i = n(7),
75 | a = n(8),
76 | u = n(22);
77 | r.prototype.request = function(e) { "string" == typeof e ? (e = arguments[1] || {}, e.url = arguments[0]) : e = e || {}, e = u(this.defaults, e), e.method = e.method ? e.method.toLowerCase() : "get"; var t = [a, void 0],
78 | n = Promise.resolve(e); for (this.interceptors.request.forEach(function(e) { t.unshift(e.fulfilled, e.rejected) }), this.interceptors.response.forEach(function(e) { t.push(e.fulfilled, e.rejected) }); t.length;) n = n.then(t.shift(), t.shift()); return n }, r.prototype.getUri = function(e) { return e = u(this.defaults, e), s(e.url, e.params, e.paramsSerializer).replace(/^\?/, "") }, o.forEach(["delete", "get", "head", "options"], function(e) { r.prototype[e] = function(t, n) { return this.request(o.merge(n || {}, { method: e, url: t })) } }), o.forEach(["post", "put", "patch"], function(e) { r.prototype[e] = function(t, n, r) { return this.request(o.merge(r || {}, { method: e, url: t, data: n })) } }), e.exports = r }, function(e, t, n) { "use strict";
79 |
80 | function r(e) { return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]") } var o = n(2);
81 | e.exports = function(e, t, n) { if (!t) return e; var s; if (n) s = n(t);
82 | else if (o.isURLSearchParams(t)) s = t.toString();
83 | else { var i = [];
84 | o.forEach(t, function(e, t) { null !== e && "undefined" != typeof e && (o.isArray(e) ? t += "[]" : e = [e], o.forEach(e, function(e) { o.isDate(e) ? e = e.toISOString() : o.isObject(e) && (e = JSON.stringify(e)), i.push(r(t) + "=" + r(e)) })) }), s = i.join("&") } if (s) { var a = e.indexOf("#");
85 | a !== -1 && (e = e.slice(0, a)), e += (e.indexOf("?") === -1 ? "?" : "&") + s } return e } }, function(e, t, n) { "use strict";
86 |
87 | function r() { this.handlers = [] } var o = n(2);
88 | r.prototype.use = function(e, t) { return this.handlers.push({ fulfilled: e, rejected: t }), this.handlers.length - 1 }, r.prototype.eject = function(e) { this.handlers[e] && (this.handlers[e] = null) }, r.prototype.forEach = function(e) { o.forEach(this.handlers, function(t) { null !== t && e(t) }) }, e.exports = r }, function(e, t, n) { "use strict";
89 |
90 | function r(e) { e.cancelToken && e.cancelToken.throwIfRequested() } var o = n(2),
91 | s = n(9),
92 | i = n(10),
93 | a = n(11),
94 | u = n(20),
95 | c = n(21);
96 | e.exports = function(e) { r(e), e.baseURL && !u(e.url) && (e.url = c(e.baseURL, e.url)), e.headers = e.headers || {}, e.data = s(e.data, e.headers, e.transformRequest), e.headers = o.merge(e.headers.common || {}, e.headers[e.method] || {}, e.headers || {}), o.forEach(["delete", "get", "head", "post", "put", "patch", "common"], function(t) { delete e.headers[t] }); var t = e.adapter || a.adapter; return t(e).then(function(t) { return r(e), t.data = s(t.data, t.headers, e.transformResponse), t }, function(t) { return i(t) || (r(e), t && t.response && (t.response.data = s(t.response.data, t.response.headers, e.transformResponse))), Promise.reject(t) }) } }, function(e, t, n) { "use strict"; var r = n(2);
97 | e.exports = function(e, t, n) { return r.forEach(n, function(n) { e = n(e, t) }), e } }, function(e, t) { "use strict";
98 | e.exports = function(e) { return !(!e || !e.__CANCEL__) } }, function(e, t, n) { "use strict";
99 |
100 | function r(e, t) {!s.isUndefined(e) && s.isUndefined(e["Content-Type"]) && (e["Content-Type"] = t) }
101 |
102 | function o() { var e; return "undefined" != typeof process && "[object process]" === Object.prototype.toString.call(process) ? e = n(13) : "undefined" != typeof XMLHttpRequest && (e = n(13)), e } var s = n(2),
103 | i = n(12),
104 | a = { "Content-Type": "application/x-www-form-urlencoded" },
105 | u = { adapter: o(), transformRequest: [function(e, t) { return i(t, "Accept"), i(t, "Content-Type"), s.isFormData(e) || s.isArrayBuffer(e) || s.isBuffer(e) || s.isStream(e) || s.isFile(e) || s.isBlob(e) ? e : s.isArrayBufferView(e) ? e.buffer : s.isURLSearchParams(e) ? (r(t, "application/x-www-form-urlencoded;charset=utf-8"), e.toString()) : s.isObject(e) ? (r(t, "application/json;charset=utf-8"), JSON.stringify(e)) : e }], transformResponse: [function(e) { if ("string" == typeof e) try { e = JSON.parse(e) } catch (e) {}
106 | return e }], timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", maxContentLength: -1, validateStatus: function(e) { return e >= 200 && e < 300 } };
107 | u.headers = { common: { Accept: "application/json, text/plain, */*" } }, s.forEach(["delete", "get", "head"], function(e) { u.headers[e] = {} }), s.forEach(["post", "put", "patch"], function(e) { u.headers[e] = s.merge(a) }), e.exports = u }, function(e, t, n) { "use strict"; var r = n(2);
108 | e.exports = function(e, t) { r.forEach(e, function(n, r) { r !== t && r.toUpperCase() === t.toUpperCase() && (e[t] = n, delete e[r]) }) } }, function(e, t, n) { "use strict"; var r = n(2),
109 | o = n(14),
110 | s = n(6),
111 | i = n(17),
112 | a = n(18),
113 | u = n(15);
114 | e.exports = function(e) { return new Promise(function(t, c) { var f = e.data,
115 | p = e.headers;
116 | r.isFormData(f) && delete p["Content-Type"]; var d = new XMLHttpRequest; if (e.auth) { var l = e.auth.username || "",
117 | h = e.auth.password || "";
118 | p.Authorization = "Basic " + btoa(l + ":" + h) } if (d.open(e.method.toUpperCase(), s(e.url, e.params, e.paramsSerializer), !0), d.timeout = e.timeout, d.onreadystatechange = function() { if (d && 4 === d.readyState && (0 !== d.status || d.responseURL && 0 === d.responseURL.indexOf("file:"))) { var n = "getAllResponseHeaders" in d ? i(d.getAllResponseHeaders()) : null,
119 | r = e.responseType && "text" !== e.responseType ? d.response : d.responseText,
120 | s = { data: r, status: d.status, statusText: d.statusText, headers: n, config: e, request: d };
121 | o(t, c, s), d = null } }, d.onabort = function() { d && (c(u("Request aborted", e, "ECONNABORTED", d)), d = null) }, d.onerror = function() { c(u("Network Error", e, null, d)), d = null }, d.ontimeout = function() { c(u("timeout of " + e.timeout + "ms exceeded", e, "ECONNABORTED", d)), d = null }, r.isStandardBrowserEnv()) { var m = n(19),
122 | y = (e.withCredentials || a(e.url)) && e.xsrfCookieName ? m.read(e.xsrfCookieName) : void 0;
123 | y && (p[e.xsrfHeaderName] = y) } if ("setRequestHeader" in d && r.forEach(p, function(e, t) { "undefined" == typeof f && "content-type" === t.toLowerCase() ? delete p[t] : d.setRequestHeader(t, e) }), e.withCredentials && (d.withCredentials = !0), e.responseType) try { d.responseType = e.responseType } catch (t) { if ("json" !== e.responseType) throw t }
124 | "function" == typeof e.onDownloadProgress && d.addEventListener("progress", e.onDownloadProgress), "function" == typeof e.onUploadProgress && d.upload && d.upload.addEventListener("progress", e.onUploadProgress), e.cancelToken && e.cancelToken.promise.then(function(e) { d && (d.abort(), c(e), d = null) }), void 0 === f && (f = null), d.send(f) }) } }, function(e, t, n) { "use strict"; var r = n(15);
125 | e.exports = function(e, t, n) { var o = n.config.validateStatus;!o || o(n.status) ? e(n) : t(r("Request failed with status code " + n.status, n.config, null, n.request, n)) } }, function(e, t, n) { "use strict"; var r = n(16);
126 | e.exports = function(e, t, n, o, s) { var i = new Error(e); return r(i, t, n, o, s) } }, function(e, t) { "use strict";
127 | e.exports = function(e, t, n, r, o) { return e.config = t, n && (e.code = n), e.request = r, e.response = o, e.isAxiosError = !0, e.toJSON = function() { return { message: this.message, name: this.name, description: this.description, number: this.number, fileName: this.fileName, lineNumber: this.lineNumber, columnNumber: this.columnNumber, stack: this.stack, config: this.config, code: this.code } }, e } }, function(e, t, n) { "use strict"; var r = n(2),
128 | o = ["age", "authorization", "content-length", "content-type", "etag", "expires", "from", "host", "if-modified-since", "if-unmodified-since", "last-modified", "location", "max-forwards", "proxy-authorization", "referer", "retry-after", "user-agent"];
129 | e.exports = function(e) { var t, n, s, i = {}; return e ? (r.forEach(e.split("\n"), function(e) { if (s = e.indexOf(":"), t = r.trim(e.substr(0, s)).toLowerCase(), n = r.trim(e.substr(s + 1)), t) { if (i[t] && o.indexOf(t) >= 0) return; "set-cookie" === t ? i[t] = (i[t] ? i[t] : []).concat([n]) : i[t] = i[t] ? i[t] + ", " + n : n } }), i) : i } }, function(e, t, n) { "use strict"; var r = n(2);
130 | e.exports = r.isStandardBrowserEnv() ? function() {
131 | function e(e) { var t = e; return n && (o.setAttribute("href", t), t = o.href), o.setAttribute("href", t), { href: o.href, protocol: o.protocol ? o.protocol.replace(/:$/, "") : "", host: o.host, search: o.search ? o.search.replace(/^\?/, "") : "", hash: o.hash ? o.hash.replace(/^#/, "") : "", hostname: o.hostname, port: o.port, pathname: "/" === o.pathname.charAt(0) ? o.pathname : "/" + o.pathname } } var t, n = /(msie|trident)/i.test(navigator.userAgent),
132 | o = document.createElement("a"); return t = e(window.location.href),
133 | function(n) { var o = r.isString(n) ? e(n) : n; return o.protocol === t.protocol && o.host === t.host } }() : function() { return function() { return !0 } }() }, function(e, t, n) { "use strict"; var r = n(2);
134 | e.exports = r.isStandardBrowserEnv() ? function() { return { write: function(e, t, n, o, s, i) { var a = [];
135 | a.push(e + "=" + encodeURIComponent(t)), r.isNumber(n) && a.push("expires=" + new Date(n).toGMTString()), r.isString(o) && a.push("path=" + o), r.isString(s) && a.push("domain=" + s), i === !0 && a.push("secure"), document.cookie = a.join("; ") }, read: function(e) { var t = document.cookie.match(new RegExp("(^|;\\s*)(" + e + ")=([^;]*)")); return t ? decodeURIComponent(t[3]) : null }, remove: function(e) { this.write(e, "", Date.now() - 864e5) } } }() : function() { return { write: function() {}, read: function() { return null }, remove: function() {} } }() }, function(e, t) { "use strict";
136 | e.exports = function(e) { return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e) } }, function(e, t) { "use strict";
137 | e.exports = function(e, t) { return t ? e.replace(/\/+$/, "") + "/" + t.replace(/^\/+/, "") : e } }, function(e, t, n) { "use strict"; var r = n(2);
138 | e.exports = function(e, t) { t = t || {}; var n = {}; return r.forEach(["url", "method", "params", "data"], function(e) { "undefined" != typeof t[e] && (n[e] = t[e]) }), r.forEach(["headers", "auth", "proxy"], function(o) { r.isObject(t[o]) ? n[o] = r.deepMerge(e[o], t[o]) : "undefined" != typeof t[o] ? n[o] = t[o] : r.isObject(e[o]) ? n[o] = r.deepMerge(e[o]) : "undefined" != typeof e[o] && (n[o] = e[o]) }), r.forEach(["baseURL", "transformRequest", "transformResponse", "paramsSerializer", "timeout", "withCredentials", "adapter", "responseType", "xsrfCookieName", "xsrfHeaderName", "onUploadProgress", "onDownloadProgress", "maxContentLength", "validateStatus", "maxRedirects", "httpAgent", "httpsAgent", "cancelToken", "socketPath"], function(r) { "undefined" != typeof t[r] ? n[r] = t[r] : "undefined" != typeof e[r] && (n[r] = e[r]) }), n } }, function(e, t) { "use strict";
139 |
140 | function n(e) { this.message = e }
141 | n.prototype.toString = function() { return "Cancel" + (this.message ? ": " + this.message : "") }, n.prototype.__CANCEL__ = !0, e.exports = n }, function(e, t, n) { "use strict";
142 |
143 | function r(e) { if ("function" != typeof e) throw new TypeError("executor must be a function."); var t;
144 | this.promise = new Promise(function(e) { t = e }); var n = this;
145 | e(function(e) { n.reason || (n.reason = new o(e), t(n.reason)) }) } var o = n(23);
146 | r.prototype.throwIfRequested = function() { if (this.reason) throw this.reason }, r.source = function() { var e, t = new r(function(t) { e = t }); return { token: t, cancel: e } }, e.exports = r }, function(e, t) { "use strict";
147 | e.exports = function(e) { return function(t) { return e.apply(null, t) } } }])
148 | });
149 | //# sourceMappingURL=axios.min.map
--------------------------------------------------------------------------------
/Chrome/js/third-party/main.min.js:
--------------------------------------------------------------------------------
1 | ! function() {
2 | const t = window,
3 | e = document.documentElement;
4 | if (e.classList.remove("no-js"), e.classList.add("js"), document.body.classList.contains("has-animations")) {
5 | (window.sr = ScrollReveal()).reveal(".hero-title, .hero-paragraph, .hero-form", { duration: 1e3, distance: "40px", easing: "cubic-bezier(0.5, -0.01, 0, 1.005)", origin: "bottom", interval: 150 })
6 | }
7 | const s = document.querySelectorAll(".is-moving-object");
8 | let n = 0,
9 | i = 0,
10 | a = 0,
11 | o = 0,
12 | r = 0,
13 | l = e.clientWidth,
14 | c = e.clientHeight;
15 | s && t.addEventListener("mousemove", function(t, e) {
16 | let s = null,
17 | n = e;
18 | return (...e) => {
19 | let i = Date.now();
20 | (!s || i - s >= n) && (s = i, t.apply(this, e))
21 | }
22 | }(function(e) {
23 | ! function(e, s) {
24 | n = e.pageX, i = e.pageY, a = t.scrollY, o = l / 2 - n, r = c / 2 - (i - a);
25 | for (let t = 0; t < s.length; t++) {
26 | const e = s[t].getAttribute("data-translating-factor") || 20,
27 | n = s[t].getAttribute("data-rotating-factor") || 20,
28 | i = s[t].getAttribute("data-perspective") || 500;
29 | let a = [];
30 | s[t].classList.contains("is-translating") && a.push("translate(" + o / e + "px, " + r / e + "px)"), s[t].classList.contains("is-rotating") && a.push("perspective(" + i + "px) rotateY(" + -o / n + "deg) rotateX(" + r / n + "deg)"), (s[t].classList.contains("is-translating") || s[t].classList.contains("is-rotating")) && (a = a.join(" "), s[t].style.transform = a, s[t].style.transition = "transform 1s ease-out", s[t].style.transformStyle = "preserve-3d", s[t].style.backfaceVisibility = "hidden")
31 | }
32 | }(e, s)
33 | }, 150))
34 | }();
--------------------------------------------------------------------------------
/Chrome/js/utils.js:
--------------------------------------------------------------------------------
1 | const debounce = (func, delay = 1000) => {
2 | let timeoutId;
3 | return (...args) => {
4 | if (timeoutId) {
5 | clearTimeout(timeoutId);
6 | }
7 | timeoutId = setTimeout(() => {
8 | func.apply(null, args);
9 | }, delay);
10 | };
11 | };
--------------------------------------------------------------------------------
/Chrome/js/viewPage.js:
--------------------------------------------------------------------------------
1 | let twoEmbUrl = localStorage.getItem('twoEmbUrl');
2 | let vidSrcUrl = localStorage.getItem('vidSrcUrl');
3 | let dbgoUrl = localStorage.getItem('dbgoUrl');
4 | let firesonicUrl = localStorage.getItem('firesonicUrl');
5 | let trailersToUrl = localStorage.getItem('trailersToUrl');
6 |
7 | let vidTitle = localStorage.getItem('vidTitle');
8 | let titleVideo = document.getElementById("titleVideo");
9 | console.log(trailersToUrl);
10 |
11 | titleVideo.removeAttribute('sandbox');
12 | titleVideo.contentWindow.location.href = twoEmbUrl;
13 | document.title = vidTitle;
14 |
15 | let vidSrcButt = document.getElementById("vidSrcButton");
16 | let dbgoButt = document.getElementById("dbgoButton");
17 | let twoEmbButt = document.getElementById("twoEmbButton");
18 | let firesonicButton = document.getElementById("firesonicButton");
19 | let trailersToButton = document.getElementById("trailersToButton");
20 | let serverButt = document.getElementById("serversButton");
21 |
22 | /*let serverOptions = document.getElementById("serverOptions");
23 | serverButt.addEventListener('click', () => {
24 | if (serverOptions.style.display == "none") {
25 | serverOptions.style.display = "block";
26 | } else {
27 | serverOptions.style.display = "none";
28 | }
29 | });
30 | */
31 | vidSrcButt.addEventListener('click', () => {
32 | titleVideo.style.display = "none";
33 | titleVideo.removeAttribute('sandbox');
34 | titleVideo.src = vidSrcUrl;
35 | titleVideo.contentWindow.location.href = vidSrcUrl;
36 | serverButt.innerHTML = `
37 | VIDSRC
38 | `;
39 |
40 | titleVideo.style.left = "0px";
41 | titleVideo.style.top = "-50px";
42 | titleVideo.style.display = "unset";
43 |
44 |
45 | // serverOptions.style.display = "none";
46 | });
47 |
48 | dbgoButt.addEventListener('click', () => {
49 | //titleVideo.removeAttribute('sandbox');
50 | titleVideo.setAttribute('sandbox', "allow-pointer-lock allow-same-origin allow-scripts allow-top-navigation allow-presentation");
51 | titleVideo.style.top = "4px";
52 | titleVideo.style.left = "0px";
53 |
54 |
55 | titleVideo.src = dbgoUrl;
56 | titleVideo.contentWindow.location.href = dbgoUrl;
57 | serverButt.innerHTML = `
58 | DBOGO
59 | `;
60 |
61 | //serverOptions.style.display = "none";
62 | });
63 |
64 | trailersToButton.addEventListener('click', () => {
65 |
66 | //titleVideo.removeAttribute('sandbox');
67 | //titleVideo.setAttribute('sandbox', "allow-pointer-lock allow-same-origin allow-scripts allow-top-navigation");
68 | titleVideo.setAttribute('sandbox', "allow-same-origin allow-scripts");
69 |
70 | //titleVideo.src = trailersToUrl;
71 |
72 | /*if ('app' !== $('body').attr('id')) {
73 | window.setTimeout(function() {
74 | window.top.location.href = 'https://Trailers.to/video/test-user/imdb/tt7126948';
75 | }, 5000);
76 | }*/
77 | titleVideo.style.top = "33px";
78 | titleVideo.style.left = "0px";
79 | titleVideo.contentWindow.location.href = trailersToUrl; //"https://Trailers.to/video/test-user/imdb/tt7126948";
80 | //serverButt.innerHTML = ``;
81 | //serverButt.innerText = "TRAILERS.TO";
82 | serverButt.innerHTML = `
83 | TRAILERS.TO
84 | `;
85 | //serverButt.style.width = "175px";
86 | //serverOptions.style.display = "none";
87 | });
88 |
89 | twoEmbButt.addEventListener('click', () => {
90 | titleVideo.removeAttribute('sandbox');
91 | titleVideo.style.top = "0px";
92 | titleVideo.style.left = "0px";
93 | titleVideo.src = twoEmbUrl;
94 | titleVideo.contentWindow.location.href = twoEmbUrl;
95 |
96 | serverButt.innerHTML = `
97 | 2EMBED
98 | `;
99 | //serverOptions.style.display = "none";
100 | });
101 |
102 | firesonicButton.addEventListener('click', () => {
103 | titleVideo.src = firesonicUrl;
104 | titleVideo.contentWindow.location.href = firesonicUrl;
105 | serverButt.innerHTML = `
106 | FIRESONIC
107 | `;
108 | titleVideo.style.top = "0px";
109 |
110 | titleVideo.style.left = "0px";
111 | titleVideo.style.height = "-webkit-fill-available";
112 | // serverOptions.style.display = "none";
113 | });
--------------------------------------------------------------------------------
/Chrome/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "LetMeWatch",
3 | "version": "1.87",
4 | "description": "LetMeWatch: A seamless watching experience in a Chrome extension.",
5 | "manifest_version": 3,
6 | "permissions": [
7 | "storage",
8 | "scripting"
9 | ],
10 | "background": {
11 | "service_worker": "/js/background.js"
12 | },
13 | "action": {
14 | "default_popup": "popup.html",
15 | "default_icon": "/images/LMWlogo.png"
16 | },
17 |
18 | "icons": {
19 |
20 | "16": "/images/LMWlogo.png",
21 | "32": "/images/LMWlogo.png",
22 | "48": "/images/LMWlogo.png",
23 | "128": "/images/LMWlogo.png"
24 | },
25 | "incognito": "split",
26 | "commands": {
27 | "_execute_action": {
28 | "suggested_key": {
29 | "default": "Alt+M",
30 | "mac": "Alt+M"
31 | }
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/Chrome/onInstall.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
13 |
14 |
15 |
17 |
18 |
19 |
20 |
14 |
17 |

Trending ~ Movies
62 |
63 | `;
64 | /*const pmScrMen = document.createElement('div');
65 | pmScrMen.classList.add('scrollmenu');
66 | pmScrMen.id = 'pmScroll';
67 | for (let i = 0; i < 20; i++) {
68 | let currPM = pmRes[i];
69 | //let currTM = topMovies[i];
70 | //let currTS = topShows[i];
71 | popMovieStr += `
72 |
73 |
74 |
75 | `
76 | /* const pmElem = document.createElement('a');
77 | pmElem.classList.add('scrollmenu-item');
78 | pmElem.innerHTML = `
`;
79 | pmElem.addEventListener('click', () => {
80 | input.value = inputValue(currPM);
81 | document.querySelector('html').style.height = 'auto';
82 | onOptionSelect(currPM);
83 |
84 | });
85 | document.getElementById("pmScroll").appendChild(pmElem);
86 | }
87 | const popMv = document.createElement('article');
88 | popMv.outerHTML = `
89 |
90 |
92 | `;
93 | popMv.appendChild(pmScrMen);
94 | popMovieStr += `
95 |
96 | Trending ~ Movies
91 |Trending ~ Shows
111 |
112 | `;
113 |
114 | /*const psScrMen = document.createElement('div');
115 | psScrMen.classList.add('scrollmenu');
116 | psScrMen.id = 'psScroll';
117 | for (let i = 0; i < 20; i++) {
118 | //let currPM = popMovies[i];
119 | let currPS = psRes[i];
120 | //let currTM = topMovies[i];
121 | //let currTS = topShows[i];
122 |
123 | popShowStr += `
124 |
125 |
126 |
127 | `;
128 | /*const psElem = document.createElement('a');
129 | psElem.classList.add('scrollmenu-item');
130 | psElem.innerHTML = `
`;
131 | psElem.addEventListener('click', () => {
132 | input.value = inputValue(currPS);
133 | document.querySelector('html').style.height = 'auto';
134 | onOptionSelect(currPS);
135 | });
136 | psScrMen.appendChild(psElem);
137 | }
138 | popShowStr += `
139 |
140 | Trending ~ Shows
146 |
21 |
22 |
23 |
24 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/Chrome/popup.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Chrome/viewPage.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
41 |
42 |
25 |
28 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
60 |
90 |
91 | -
61 |
- Hall of Fame Weekend 62 |
- Preseason Week 1 63 |
- Preseason Week 2 64 |
- Preseason Week 3 65 |
- Week 1 66 |
- Week 2 67 |
- Week 3 68 |
- Week 4 69 |
- Week 5 70 |
- Week 6 71 |
- Week 7 72 |
- Week 8 73 |
- Week 9 74 |
- Week 10 75 |
- Week 11 76 |
- Week 12 77 |
- Week 13 78 |
- Week 14 79 |
- Week 15 80 |
- Week 16 81 |
- Week 17 82 |
- Week 18 83 |
- Wild Card 84 |
- Divisional Round 85 |
- Conference Championship 86 |
- Pro Bowl 87 |
- Super Bowl 88 |
43 |
44 |
53 |
54 |
67 |
68 |
69 | nn
70 |
71 |
72 |
--------------------------------------------------------------------------------
/Firefox/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/.DS_Store
--------------------------------------------------------------------------------
/Firefox/css/onInstall.css:
--------------------------------------------------------------------------------
1 | .tutorial {
2 | width: 300px;
3 | text-align: center;
4 | margin: auto;
5 | }
6 |
7 | figure.image {
8 | display: flex;
9 | justify-content: right;
10 | background-color: black;
11 | }
12 |
13 | figure .image img {
14 | justify-content: right;
15 | height: 190px;
16 | border-radius: 3px;
17 | /*max-width: 120px;*/
18 | }
19 |
20 | .notification {
21 | margin-top: 20px !important;
22 | }
23 |
24 | .results {
25 | max-height: 400px;
26 | overflow-y: scroll;
27 | }
28 |
29 | .title .icon {
30 | margin-left: 15px;
31 | }
32 |
33 | .hero {
34 | margin-bottom: 20px;
35 | }
36 |
37 | .forms {
38 | display: flex;
39 | justify-content: space-around;
40 | }
41 |
42 | .dropdown-item {
43 | display: flex;
44 | height: 110px;
45 | }
46 |
47 | .dropdown-item img {
48 | height: 100px;
49 | width: 75px;
50 | min-height: 100px;
51 | min-width: 75px;
52 | margin-right: 10px;
53 | border-radius: 2px;
54 | }
55 |
56 |
57 | /*
58 | CUSTOM - ADDED SCRIPT
59 | */
60 |
61 | html {
62 | background-color: black;
63 | /* background-image: linear-gradient(
64 | 141deg, #425cf0 0%, #47c4f5 71%, #1ea1a3 100%); */
65 | width: 100%;
66 | height: 100%;
67 | padding-bottom: 1%
68 | }
69 |
70 | #summary {
71 | width: auto;
72 | height: auto;
73 | }
74 |
75 | label {
76 | color: white
77 | }
78 |
79 | .dropdown-content {
80 | width: 400px;
81 | background-color: black;
82 | }
83 |
84 | .dropdown-menu {
85 | padding-bottom: 7px;
86 | }
87 |
88 | a.dropdown-item {
89 | white-space: unset;
90 | color: white;
91 | background-color: black;
92 | }
93 |
94 | .media-content {
95 | overflow-x: unset;
96 | }
97 |
98 | .content {
99 | display: block;
100 | justify-content: space-between;
101 | align-items: right;
102 | }
103 |
104 | h4 {
105 | color: white;
106 | white-space: nowrap;
107 | font-size: 12px;
108 | font: bold;
109 | margin-bottom: 0px;
110 | font-weight: 450;
111 | }
112 |
113 | .content h4 {
114 | color: white;
115 | white-space: nowrap;
116 | font-size: 12px;
117 | font-weight: 300;
118 | margin-bottom: 6px;
119 | }
120 |
121 | .content h1 {
122 | white-space: nowrap;
123 | font-size: 4vw;
124 | margin-bottom: 0px;
125 | padding-left: 0px;
126 | margin-left: 1px;
127 | line-height: 1.5;
128 | font-weight: 400;
129 | }
130 |
131 | .media-content p {
132 | font-size: 29px;
133 | padding-bottom: 0px;
134 | padding-top: 15px;
135 | font-weight: 200;
136 | line-height: 1.35;
137 | margin-left: 5%;
138 | }
139 |
140 | .content h1,
141 | .content h4,
142 | .media-content p {
143 | color: white;
144 | }
145 |
146 | article.media {
147 | display: block;
148 | width: 98%;
149 | /* height: 85%; */
150 | /* background-color: black; */
151 | border-radius: 4px;
152 | padding: 3 10px 7px 10px;
153 | margin-top: 0.7%;
154 | background-image: linear-gradient( 141deg, #425cf0 0%, #47c4f5 71%, #1ea1a3 100%);
155 | }
156 |
157 | .pill {
158 | /* background-color: #ddd;*/
159 | background-image: linear-gradient(141deg, #ff7070e3 0%, #fb3e3edc 71%, #ff9d9d 100%);
160 | border: none;
161 | color: black;
162 | padding: 10px 20px;
163 | text-align: center;
164 | text-decoration: none;
165 | display: inline-block;
166 | cursor: pointer;
167 | border-radius: 16px;
168 | width: auto;
169 | }
170 |
171 |
172 | /*
173 | .seasons {
174 | position: relative;
175 | bottom: 0px;
176 | }*/
177 |
178 | .pill-eps {
179 | background-image: linear-gradient(141deg, #42f0ca 0%, #47f5ec 71%, #359bee 100%);
180 | border: none;
181 | color: black;
182 | padding: 10px 20px;
183 | text-align: center;
184 | text-decoration: none;
185 | display: inline-block;
186 | cursor: pointer;
187 | border-radius: 16px;
188 | width: auto;
189 | margin-bottom: 5px;
190 | }
191 |
192 |
193 | /* .episodes {
194 | position: absolute;
195 | bottom: 32px;
196 | }*/
197 |
198 | .pill-nxtszn,
199 | .pill-prevszn {
200 | background-image: url('../images/fwdIconWhite.png');
201 | background-size: 22px 22px;
202 | height: 22px;
203 | width: 22px;
204 | background-color: black;
205 | border: none;
206 | padding: 0px 0px 0px 0px;
207 | color: white;
208 | text-align: center;
209 | text-decoration: none;
210 | display: inline-block;
211 | cursor: pointer;
212 | border-radius: 4px;
213 | font-weight: 700;
214 | margin: 0px 0px 0px 0px;
215 | padding-bottom: 8px;
216 | padding-right: 13px;
217 | margin-top: 7px;
218 | position: absolute;
219 | left: 310px;
220 | /*
221 |
222 | padding-bottom: 8px;
223 | padding-right: 13px;
224 | margin-top: 7px;
225 | position: absolute;
226 | right: 12px;
227 | background-image: linear-gradient(141deg, #ff7070e3 0%, #fb3e3edc 71%, #ff9d9d 100%);
228 | border: none;
229 | color: black;
230 | padding: 5px 10px;
231 | text-align: center;
232 | text-decoration: none;
233 | display: inline-block;
234 | cursor: pointer;
235 | border-radius: 16px;
236 | width: auto;
237 | margin-bottom: 10px;*/
238 | }
239 |
240 |
241 | /*font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;*/
242 |
243 | .dropdown {
244 | display: block;
245 | }
246 |
247 | *::placeholder {
248 | /* modern browser */
249 | color: white;
250 | }
251 |
252 | #autocomplete {
253 | width: 400px;
254 | }
255 |
256 | .input {
257 | color: white;
258 | background-color: black;
259 | width: 100%;
260 | font-size: 16px;
261 | font-weight: 500;
262 | }
263 |
264 | #logoHeader {
265 | height: 27px;
266 | display: inline-flex;
267 | color: white;
268 | padding: 0px 0px 0px 0px;
269 | margin: 0px 0px 0px 0px;
270 | margin-left: 28%;
271 | font-size: 25px;
272 | font-weight: 700;
273 | vertical-align: center;
274 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
275 | }
276 |
277 | a.dropdown-item:focus,
278 | button.dropdown-item:focus {
279 | background-color: whitesmoke;
280 | color: #0a0a0a;
281 | }
282 |
283 | .content {
284 | display: flex;
285 | }
286 |
287 | .media .content:not(:last-child) {
288 | margin-bottom: 0px;
289 | }
290 |
291 | #currSzn {
292 | margin-top: 10.5px;
293 | font-weight: 450;
294 | }
295 |
296 | .media-content p {
297 | overflow: hidden;
298 | text-overflow: hidden;
299 | display: block;
300 | padding-bottom: 4px;
301 | /* number of lines to show */
302 | -webkit-box-orient: vertical;
303 | }
304 |
305 | .pill-back {
306 | /*background-image: linear-gradient(141deg, #ff7070e3 0%, #fb3e3edc 71%, #ff9d9d 100%);*/
307 | background-image: url('../images/backIcon6.png');
308 | background-size: 26px 26px;
309 | height: 26px;
310 | width: 26px;
311 | background-color: white;
312 | border: none;
313 | color: white;
314 | padding: 0px 0px 0px 0px;
315 | text-align: center;
316 | text-decoration: none;
317 | display: inline-block;
318 | cursor: pointer;
319 | border-radius: 4px;
320 | font-weight: 700;
321 | margin: 0px 0px 0px 0px;
322 | padding-bottom: 0px;
323 | }
324 |
325 | .content h1:not(:first-child) {
326 | margin-top: 0em;
327 | }
328 |
329 | article.seasons {
330 | font-size: 100%;
331 | }
332 |
333 | body {
334 | font-size: 75%;
335 | padding-left: 26%;
336 | padding-right: 24%;
337 | padding-top: 1%;
338 | padding-bottom: 0.5%;
339 | height: 100%;
340 | }
341 |
342 | .dropdown-item .description {
343 | font-size: 4vw;
344 | margin-bottom: 6px;
345 | padding-left: 0px;
346 | line-height: 1.25;
347 | }
348 |
349 | #appName {
350 | font-size: 8vw;
351 | font-weight: 100;
352 | line-height: 1.125;
353 | padding-left: 20px;
354 | margin-top: -1%;
355 | vertical-align: bottom;
356 | color: white;
357 | /* background: rgb(63, 94, 251);
358 | background: radial-gradient(circle, rgba(63, 94, 251, 1) 0%, rgba(252, 70, 107, 1) 100%);
359 | */
360 | }
361 |
362 | #logoSummaryTV {
363 | height: 8vw;
364 | display: inline-flex;
365 | color: white;
366 | padding: 0px 0px 0px 0px;
367 | margin: 0px 0px 0px 0px;
368 | font-size: 25px;
369 | font-weight: bolder;
370 | margin-left: 0%;
371 | vertical-align: center;
372 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
373 | }
374 |
375 | #logoSummaryTVSzn {
376 | height: 27px;
377 | display: inline-flex;
378 | color: white;
379 | padding: 0px 0px 0px 0px;
380 | margin: 0px 0px 0px 0px;
381 | margin-left: 28%;
382 | font-size: 25px;
383 | font-weight: 700;
384 | vertical-align: center;
385 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
386 | }
387 |
388 | #logoSummaryMovie {
389 | height: 27px;
390 | display: inline-flex;
391 | color: white;
392 | padding: 0px 0px 0px 0px;
393 | margin: 0px 0px 0px 0px;
394 | margin-left: 28%;
395 | font-size: 25px;
396 | font-weight: 600;
397 | vertical-align: center;
398 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
399 | }
400 |
401 | .pill-nxtep,
402 | .pill-prevep {
403 | background-image: url('../images/fwdIconWhite.png');
404 | background-size: 22px 22px;
405 | height: 22px;
406 | width: 22px;
407 | background-color: black;
408 | border: none;
409 | padding: 0px 0px 0px 0px;
410 | color: white;
411 | text-align: center;
412 | text-decoration: none;
413 | display: inline-block;
414 | cursor: pointer;
415 | border-radius: 4px;
416 | font-weight: 700;
417 | margin: 0px 0px 0px 0px;
418 | padding-bottom: 8px;
419 | padding-right: 13px;
420 | margin-top: 7px;
421 | position: absolute;
422 | right: -10px;
423 | }
424 |
425 | #suggestDescription {
426 | display: block;
427 | }
428 |
429 | #suggestDescription h1 {
430 | white-space: normal;
431 | line-height: 1.125;
432 | font-weight: 300;
433 | font-size: 4.5vw;
434 | }
435 |
436 | a.dropdown-item:hover * {
437 | color: black;
438 | }
439 |
440 | a.dropdown-item:focus * {
441 | color: black;
442 | }
443 |
444 | #rating img {
445 | min-height: 40px;
446 | min-width: 40px;
447 | height: 40px;
448 | width: 40px;
449 | position: absolute;
450 | right: -6px;
451 | top: 0px;
452 | }
453 |
454 |
455 | /*
456 | #rating img {
457 | height: 20px;
458 | width: 20px;
459 | margin-top: -5px;
460 | padding-left: 3px;
461 | }
462 | */
463 |
464 | #rating h4 {
465 | padding-top: 14px;
466 | margin-left: -10px;
467 | position: absolute;
468 | right: 15px;
469 | top: 2px;
470 | font-size: 12px;
471 | font-weight: 300;
472 | color: black;
473 | }
474 |
475 | #rating {
476 | margin-top: -15px;
477 | display: flex;
478 | float: right;
479 | }
480 |
481 | #suggSubhead {
482 | margin-top: 2px;
483 | font-size: 3vw;
484 | }
485 |
486 | #inpSugg::placeholder {
487 | color: rgba(255, 255, 255, 0.589);
488 | font-weight: 300;
489 | }
490 |
491 | #tvTitle {
492 | margin-left: 0px;
493 | text-align: center;
494 | font-size: 61px;
495 | font-weight: 200;
496 | white-space: normal;
497 | line-height: 1.125;
498 | color: white;
499 | /* vertical-align: bottom; */
500 | position: absolute;
501 | bottom: 30px;
502 | left: 23.1%;
503 | }
504 |
505 | #getStarted {
506 | margin-left: 0px;
507 | font-size: 33px;
508 | font-weight: 200;
509 | white-space: normal;
510 | line-height: 1.125;
511 | padding-bottom: 3px;
512 | padding-left: 2px;
513 | color: white;
514 | }
515 |
516 | #gsArticle {
517 | display: flex;
518 | width: 99%;
519 | height: auto;
520 | margin-left: 0%;
521 | padding-bottom: 0;
522 | padding: 0.5% 1% 0% 1%;
523 | background-image: linear-gradient( 317deg, #ffa500 0%, #ff0000c2 100%);
524 | }
525 |
526 | #description {
527 | margin-top: -5px;
528 | }
529 |
530 | .checked {
531 | color: orange;
532 | }
533 |
534 | #watchNow {
535 | margin-top: 5px;
536 | margin-bottom: 5px;
537 | }
538 |
539 | #logoArticle {
540 | background-image: linear-gradient(141deg, #425cf0 0%, #47c4f5 71%, #1ea1a3 100%);
541 | width: 75%;
542 | height: 100%;
543 | padding: 25px 25px 25px 25px;
544 | }
545 |
546 | #contentArticle {
547 | width: 18.5%;
548 | height: auto;
549 | margin-left: 0%;
550 | padding-bottom: 0;
551 | padding: 0.5% 1% 0% 1%;
552 | display: flex;
553 | }
554 |
555 | #contentDiv {
556 | display: block;
557 | margin-left: 10px;
558 | }
559 |
560 | #descriptionFt {
561 | margin-top: -35px;
562 | margin-left: 6px;
563 | font-size: 20px;
564 | font-weight: 200;
565 | }
566 |
567 | #descriptionIns {
568 | margin-top: -18px;
569 | margin-left: 6px;
570 | font-size: 20px;
571 | font-weight: 200;
572 | }
573 |
574 | #thanosBan {
575 | max-height: 280px;
576 | }
577 |
578 |
579 | /*font-family: 'Montserrat', sans-serif;
580 | font-family: 'Noto Sans JP', sans-serif;
581 | font-family: 'Open Sans', sans-serif;
582 | font-family: 'Poppins', sans-serif;
583 | font-family: 'Roboto', sans-serif;
584 | font-weight: bold;
585 | font-family: system-ui, sans-serif;
586 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
587 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
588 | font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
589 | font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif ;
590 | */
--------------------------------------------------------------------------------
/Firefox/css/viewPage.css:
--------------------------------------------------------------------------------
1 | .pill {
2 | /* background-color: #ddd;*/
3 | background-image: linear-gradient(141deg, #ff7070e3 0%, #fb3e3edc 71%, #ff9d9d 100%);
4 | border: none;
5 | color: black;
6 | text-align: center;
7 | text-decoration: none;
8 | display: inline-block;
9 | cursor: pointer;
10 | border-radius: 16px;
11 | }
12 |
13 | .pill-servers {
14 | background: black;
15 | color: #ffffff;
16 | border: none;
17 | padding: 10px 20px;
18 | text-align: center;
19 | text-decoration: none;
20 | cursor: pointer;
21 | border-radius: 16px;
22 | font-size: 16px;
23 | margin-top: 2px;
24 | margin-left: -5px;
25 | width: 160px;
26 | font-family: Montserrat, Arial;
27 | font-weight: 300;
28 | -webkit-font-smoothing: antialiased;
29 | display: inline-block;
30 | font-style: normal;
31 | font-variant: normal;
32 | position: fixed;
33 | z-index: 1;
34 | padding-top: 7px;
35 | padding-bottom: 7px;
36 | }
--------------------------------------------------------------------------------
/Firefox/images/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/.DS_Store
--------------------------------------------------------------------------------
/Firefox/images/Docs-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/Docs-1.png
--------------------------------------------------------------------------------
/Firefox/images/Docs-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/Docs-2.png
--------------------------------------------------------------------------------
/Firefox/images/EngFlow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/EngFlow.png
--------------------------------------------------------------------------------
/Firefox/images/LMWBanner1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMWBanner1.jpg
--------------------------------------------------------------------------------
/Firefox/images/LMWBanner2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMWBanner2.jpg
--------------------------------------------------------------------------------
/Firefox/images/LMWBanner3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMWBanner3.jpg
--------------------------------------------------------------------------------
/Firefox/images/LMWLarge.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMWLarge.jpg
--------------------------------------------------------------------------------
/Firefox/images/LMWLogo48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMWLogo48.png
--------------------------------------------------------------------------------
/Firefox/images/LMWLogo96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMWLogo96.png
--------------------------------------------------------------------------------
/Firefox/images/LMWSmall.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMWSmall.jpg
--------------------------------------------------------------------------------
/Firefox/images/LMW_NEWSC1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMW_NEWSC1.jpg
--------------------------------------------------------------------------------
/Firefox/images/LMW_NEWSC2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMW_NEWSC2.jpg
--------------------------------------------------------------------------------
/Firefox/images/LMW_NEWSC3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMW_NEWSC3.jpg
--------------------------------------------------------------------------------
/Firefox/images/LMWlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/LMWlogo.png
--------------------------------------------------------------------------------
/Firefox/images/backIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/backIcon.png
--------------------------------------------------------------------------------
/Firefox/images/backIcon1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/backIcon1.png
--------------------------------------------------------------------------------
/Firefox/images/backIcon3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/backIcon3.png
--------------------------------------------------------------------------------
/Firefox/images/backIcon4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/backIcon4.png
--------------------------------------------------------------------------------
/Firefox/images/backIcon5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/backIcon5.png
--------------------------------------------------------------------------------
/Firefox/images/backIcon6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/backIcon6.png
--------------------------------------------------------------------------------
/Firefox/images/backIconWhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/backIconWhite.png
--------------------------------------------------------------------------------
/Firefox/images/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/button.png
--------------------------------------------------------------------------------
/Firefox/images/cinema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/cinema.png
--------------------------------------------------------------------------------
/Firefox/images/clapperboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/clapperboard.png
--------------------------------------------------------------------------------
/Firefox/images/emp16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/emp16.png
--------------------------------------------------------------------------------
/Firefox/images/emp4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/emp4.png
--------------------------------------------------------------------------------
/Firefox/images/emp5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/emp5.png
--------------------------------------------------------------------------------
/Firefox/images/en1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/en1.png
--------------------------------------------------------------------------------
/Firefox/images/en11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/en11.png
--------------------------------------------------------------------------------
/Firefox/images/en5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/en5.png
--------------------------------------------------------------------------------
/Firefox/images/en6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/en6.png
--------------------------------------------------------------------------------
/Firefox/images/en7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/en7.png
--------------------------------------------------------------------------------
/Firefox/images/en9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/en9.png
--------------------------------------------------------------------------------
/Firefox/images/expl1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/expl1.png
--------------------------------------------------------------------------------
/Firefox/images/expl2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/expl2.png
--------------------------------------------------------------------------------
/Firefox/images/expl3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/expl3.png
--------------------------------------------------------------------------------
/Firefox/images/fwdIconWhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/fwdIconWhite.png
--------------------------------------------------------------------------------
/Firefox/images/movie-camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/movie-camera.png
--------------------------------------------------------------------------------
/Firefox/images/nfl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/nfl.png
--------------------------------------------------------------------------------
/Firefox/images/nfl1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/nfl1.png
--------------------------------------------------------------------------------
/Firefox/images/nfl2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/nfl2.png
--------------------------------------------------------------------------------
/Firefox/images/nfl3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/nfl3.png
--------------------------------------------------------------------------------
/Firefox/images/nfl5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/nfl5.png
--------------------------------------------------------------------------------
/Firefox/images/nfl7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/nfl7.png
--------------------------------------------------------------------------------
/Firefox/images/no-poster1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/no-poster1.png
--------------------------------------------------------------------------------
/Firefox/images/noposter2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/noposter2.png
--------------------------------------------------------------------------------
/Firefox/images/noposter3.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/noposter3.jpeg
--------------------------------------------------------------------------------
/Firefox/images/onInstall1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/onInstall1.png
--------------------------------------------------------------------------------
/Firefox/images/onInstall2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/onInstall2.png
--------------------------------------------------------------------------------
/Firefox/images/onInstall3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/onInstall3.png
--------------------------------------------------------------------------------
/Firefox/images/popcorn (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/popcorn (1).png
--------------------------------------------------------------------------------
/Firefox/images/popcorn (2).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/popcorn (2).png
--------------------------------------------------------------------------------
/Firefox/images/popcorn-box.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/popcorn-box.png
--------------------------------------------------------------------------------
/Firefox/images/popcorn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/popcorn.png
--------------------------------------------------------------------------------
/Firefox/images/ratingStar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/ratingStar.png
--------------------------------------------------------------------------------
/Firefox/images/sports/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/.DS_Store
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/.DS_Store
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/1.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/10.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/11.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/12.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/13.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/14.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/15.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/16.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/17.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/18.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/19.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/2.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/20.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/21.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/22.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/23.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/24.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/25.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/26.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/27.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/28.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/29.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/3.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/30.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/33.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/34.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/4.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/5.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/6.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/7.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/8.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/9.png
--------------------------------------------------------------------------------
/Firefox/images/sports/NFL/NFL.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/sports/NFL/NFL.jpg
--------------------------------------------------------------------------------
/Firefox/images/winLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/images/winLogo.png
--------------------------------------------------------------------------------
/Firefox/js/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/js/.DS_Store
--------------------------------------------------------------------------------
/Firefox/js/adstop.js:
--------------------------------------------------------------------------------
1 | const clear = (() => {
2 | const defined = v => v !== null && v !== undefined;
3 | const timeout = setInterval(() => {
4 | const ad = [...document.querySelectorAll('.ad-showing')][0];
5 | if (defined(ad)) {
6 | const video = document.querySelector('video');
7 | if (defined(video)) {
8 | video.currentTime = video.duration;
9 | }
10 | }
11 | }, 500);
12 | return function() {
13 | clearTimeout(timeout);
14 | }
15 | })();
16 | clear();
17 | /*
18 | var myScript = `const clear = (() => {
19 | const defined = v => v !== null && v !== undefined;
20 | const timeout = setInterval(() => {
21 | const ad = [...document.querySelectorAll('.ad-showing')][0];
22 | if (defined(ad)) {
23 | const video = document.querySelector('video');
24 | if (defined(video)) {
25 | video.currentTime = video.duration;
26 | }
27 | }
28 | }, 500);
29 | return function() {
30 | clearTimeout(timeout);
31 | }
32 | })();
33 | //clear();
34 | `;
35 | var scriptTag = document.createElement("script");
36 | scriptTag.innerHTML = myScript;
37 | document.querySelector('head').appendChild(scriptTag);*/
--------------------------------------------------------------------------------
/Firefox/js/autocomplete.js:
--------------------------------------------------------------------------------
1 | const createAutoComplete = async({ root, renderOption, onOptionSelect, inputValue, fetchData }) => {
2 | root.innerHTML = `
3 | -
45 |
- 2EMBED 46 |
- FIRESONIC 47 |
- TRAILERS.TO 48 |
- VIDSRC 49 |
- DBOGO 50 | 51 |
4 |
5 |
7 |
8 | 
LetMeWatch
6 |
9 |
13 |
10 |
11 |
12 |
18 | TV
19 | Movies
20 |
22 |
23 |
24 |
25 |
26 |
27 |
31 | `;
32 | const popMovies = (await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1')).data.results;
33 | const popMoviesTwo = (await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=2')).data.results;
34 | const popMoviesThree = (await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=3')).data.results;
35 | const popShows = (await axios.get('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1')).data.results;
36 | const popShowsTwo = (await axios.get('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=2')).data.results;
37 | const popShowsThree = (await axios.get('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=3')).data.results;
38 | // const popSports = (await fetch())
39 | const input = root.querySelector('input');
40 | const dropdown = root.querySelector('.dropdown');
41 | const resultsWrapper = root.querySelector('.results');
42 | for (let i = 0; i < 20; i++) {
43 | let currPM = popMovies[i];
44 | let currPS = popShows[i];
45 |
46 | const pmElem = document.createElement('a');
47 | pmElem.classList.add('scrollmenu-item');
48 | pmElem.innerHTML = `
`;
49 | pmElem.addEventListener('click', () => {
50 | input.value = inputValue(currPM);
51 | document.querySelector('html').style.height = 'auto';
52 | onOptionSelect(currPM);
53 |
54 | });
55 | document.getElementById("pmScroll").appendChild(pmElem);
56 |
57 | const psElem = document.createElement('a');
58 | psElem.classList.add('scrollmenu-item');
59 | psElem.innerHTML = `
`;
60 | psElem.addEventListener('click', () => {
61 | input.value = inputValue(currPS);
62 | document.querySelector('html').style.height = 'auto';
63 | onOptionSelect(currPS);
64 | });
65 | document.getElementById("psScroll").appendChild(psElem);
66 | }
67 | for (let i = 0; i < 20; i++) {
68 | let currPM = popMoviesTwo[i];
69 | let currPS = popShowsTwo[i];
70 |
71 | const pmElem = document.createElement('a');
72 | pmElem.classList.add('scrollmenu-item');
73 | pmElem.innerHTML = `
`;
74 | pmElem.addEventListener('click', () => {
75 | input.value = inputValue(currPM);
76 | document.querySelector('html').style.height = 'auto';
77 | onOptionSelect(currPM);
78 |
79 | });
80 | document.getElementById("pmScroll").appendChild(pmElem);
81 |
82 | const psElem = document.createElement('a');
83 | psElem.classList.add('scrollmenu-item');
84 | psElem.innerHTML = `
`;
85 | psElem.addEventListener('click', () => {
86 | input.value = inputValue(currPS);
87 | document.querySelector('html').style.height = 'auto';
88 | onOptionSelect(currPS);
89 | });
90 | document.getElementById("psScroll").appendChild(psElem);
91 | }
92 | for (let i = 0; i < 20; i++) {
93 | let currPM = popMoviesThree[i];
94 | let currPS = popShowsThree[i];
95 |
96 | const pmElem = document.createElement('a');
97 | pmElem.classList.add('scrollmenu-item');
98 | pmElem.innerHTML = `
`;
99 | pmElem.addEventListener('click', () => {
100 | input.value = inputValue(currPM);
101 | document.querySelector('html').style.height = 'auto';
102 | onOptionSelect(currPM);
103 |
104 | });
105 | document.getElementById("pmScroll").appendChild(pmElem);
106 |
107 | const psElem = document.createElement('a');
108 | psElem.classList.add('scrollmenu-item');
109 | psElem.innerHTML = `
`;
110 | psElem.addEventListener('click', () => {
111 | input.value = inputValue(currPS);
112 | document.querySelector('html').style.height = 'auto';
113 | onOptionSelect(currPS);
114 | });
115 | document.getElementById("psScroll").appendChild(psElem);
116 | }
117 |
118 | //SPORTS - NFL
119 | /*const spElem = document.createElement('a');
120 | spElem.classList.add('scrollmenu-item');
121 | spElem.innerHTML = `
`;
122 | spElem.addEventListener('click', () => {
123 | document.querySelector('#autocomplete').style.display = 'none';
124 | document.querySelector('#summary').style.display = 'block';
125 | document.querySelector('#summary').innerHTML = '';
126 | //setTemplate("nfl", 001, document.querySelector('#summary'), null);
127 | onSportSelect("NFL");
128 | });
129 | document.getElementById("spScroll").appendChild(spElem);*/
130 |
131 |
132 |
133 | document.getElementById("popMovies").style.display = 'block';
134 | let movieSugg = document.getElementById("movieSuggButt");
135 | let tvSugg = document.getElementById("tvSuggButt");
136 |
137 | tvSugg.style.backgroundColor = 'white';
138 | tvSugg.style.color = 'black';
139 | //let sportsSugg = document.getElementById("sportsSuggButt");
140 |
141 | movieSugg.addEventListener('click', () => {
142 | document.getElementById("pmScroll").style.display = 'block';
143 | document.getElementById("psScroll").style.display = 'none';
144 | document.getElementById("spScroll").style.display = 'none';
145 | movieSugg.style.backgroundColor = 'white';
146 | movieSugg.style.color = 'black';
147 | tvSugg.style.backgroundColor = 'black';
148 | tvSugg.style.color = 'white';
149 | sportsSugg.style.backgroundColor = 'black';
150 | sportsSugg.style.color = 'white';
151 | });
152 | tvSugg.addEventListener('click', () => {
153 | document.getElementById("pmScroll").style.display = 'none';
154 | document.getElementById("spScroll").style.display = 'none';
155 | document.getElementById("psScroll").style.display = 'block';
156 | tvSugg.style.backgroundColor = 'white';
157 | tvSugg.style.color = 'black';
158 | movieSugg.style.backgroundColor = 'black';
159 | movieSugg.style.color = 'white';
160 | sportsSugg.style.backgroundColor = 'black';
161 | sportsSugg.style.color = 'white';
162 | });
163 | /*
164 | sportsSugg.addEventListener('click', () => {
165 | document.getElementById("pmScroll").style.display = 'none';
166 | document.getElementById("psScroll").style.display = 'none';
167 | document.getElementById("spScroll").style.display = 'block';
168 | sportsSugg.style.backgroundColor = 'white';
169 | sportsSugg.style.color = 'black';
170 | movieSugg.style.backgroundColor = 'black';
171 | movieSugg.style.color = 'white';
172 | tvSugg.style.backgroundColor = 'black';
173 | tvSugg.style.color = 'white';
174 | });*/
175 | //document.getElementById("popShows").style.display = 'block';
176 |
177 | const onInput = async event => {
178 | const items = await fetchData(event.target.value);
179 | console.log(document.activeElement.className);
180 | if (!items.length) {
181 | document.querySelector('.dropdown-menu').style.display = 'none';
182 | document.querySelector('html').style.height = 'auto';
183 | document.querySelector('#summary').innerHTML = '';
184 | document.getElementById("popMovies").style.display = 'block';
185 | document.getElementById("autocomplete").style.height = 'unset';
186 |
187 | //document.getElementById("popShows").style.display = 'block';
188 | //document.getElementById("pmScroll").scrollLeft = 0;
189 | //document.getElementById("psScroll").scrollLeft = 0;
190 | return;
191 | } else {
192 | document.querySelector('.dropdown-menu').style.display = 'block';
193 | document.querySelector('html').style.height = '100%';
194 | document.getElementById("popMovies").style.display = 'none';
195 | document.getElementById("autocomplete").style.height = '530px';
196 | //document.getElementById("popShows").style.display = 'none';
197 | //document.querySelector('.results').scrollTop = 0;
198 | }
199 | resultsWrapper.innerHTML = '';
200 | dropdown.classList.add('is-active');
201 | for (let item of items) {
202 | const option = document.createElement('a');
203 | option.classList.add('dropdown-item');
204 | option.innerHTML = renderOption(item);
205 | option.addEventListener('click', () => {
206 | //dropdown.classList.remove('is-active');
207 | input.value = inputValue(item);
208 | document.querySelector('html').style.height = 'auto';
209 | onOptionSelect(item);
210 | });
211 | option.addEventListener('keydown', event => {
212 |
213 | console.log(event.key);
214 |
215 | if (event.key === "ArrowDown") {
216 | event.preventDefault();
217 | var currActive = document.activeElement;
218 | if (currActive.nextElementSibling) {
219 | currActive.nextElementSibling.focus();
220 | } else {
221 | input.focus();
222 | }
223 | } else if (event.key === "ArrowUp") {
224 | event.preventDefault();
225 | var currActive = document.activeElement;
226 | if (currActive.previousElementSibling) {
227 | console.log("prev sibling");
228 | currActive.previousElementSibling.focus();
229 | } else {
230 | input.focus();
231 | }
232 | } else if (event.key === "Enter") {
233 | event.preventDefault();
234 | dropdown.classList.remove('is-active');
235 | input.value = inputValue(item);
236 | document.querySelector('html').style.height = 'auto';
237 | onOptionSelect(item);
238 | } else {
239 | event.preventDefault();
240 | if (isLetter(event.key) || isNumeric(event.key)) {
241 | input.value += event.key;
242 | }
243 | input.focus();
244 | }
245 | });
246 | option.setAttribute('tabindex', 0);
247 | resultsWrapper.appendChild(option);
248 | }
249 |
250 | function isLetter(str) {
251 | return str.length === 1 && str.match(/[a-z]/i);
252 | }
253 |
254 | function isNumeric(str) {
255 | if (typeof str != "string") return false // we only process strings!
256 | return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
257 | !isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail
258 | }
259 | input.addEventListener('keydown', event => {
260 | if (event.key === "ArrowDown") {
261 | event.preventDefault();
262 | console.log(event.key);
263 | resultsWrapper.firstElementChild.focus();
264 | } else if (event.key === "ArrowUp") {
265 | event.preventDefault();
266 | console.log(event.key);
267 | resultsWrapper.lastElementChild.focus();
268 | }
269 |
270 | });
271 | };
272 | input.addEventListener('input', debounce(onInput, 50));
273 |
274 | document.addEventListener('click', event => {
275 | if (!root.contains(event.target)) {
276 | dropdown.classList.remove('is-active');
277 | }
278 | });
279 |
280 | };
281 |
282 | function loadStored(cbMedia) {
283 | chrome.storage.local.get(['savedPopMovies', 'savedPopShows', 'pmArr', 'psArr'], cbMedia);
284 | }
--------------------------------------------------------------------------------
/Firefox/js/background.js:
--------------------------------------------------------------------------------
1 | chrome.runtime.onInstalled.addListener((details) => {
2 | const currentVersion = chrome.runtime.getManifest().version;
3 | const previousVersion = details.previousVersion;
4 | const reason = details.reason;
5 | /*
6 | chrome.storage.local.get("savedPopMovies", function(items) {
7 | getTrending();
8 | });
9 | chrome.alarms.get('getTrending', a => {
10 | if (!a){
11 | chrome.alarms.create('getTrending', { periodInMinutes: 1440.0 });
12 | }
13 | });
14 | console.log('Previous Version: ${previousVersion }')
15 | console.log('Current Version: ${currentVersion }')
16 | */
17 |
18 | switch (reason) {
19 | case 'install':
20 | console.log('New User installed the extension.')
21 | chrome.tabs.create({ url: chrome.runtime.getURL("https://letmewatch.app/install.html") });
22 | break;
23 | case 'update':
24 | console.log('User has updated their extension.')
25 | break;
26 | case 'chrome_update':
27 | case 'shared_module_update':
28 | default:
29 | console.log('Other install events within the browser')
30 | break;
31 | }
32 |
33 | });
34 |
35 | /*chrome.alarms.onAlarm.addListener(() => {
36 | chrome.storage.local.set({ 'savedSummary': document.getElementById("summary").outerHTML });
37 |
38 | });
39 |
40 | /*chrome.runtime.onStartup.addListener(() => {
41 | //chrome.storage.local.get("savedPopMovies", function(items) {
42 | getTrending();
43 | //});
44 | });
45 | /*
46 | //const getTrending = async() => {
47 | function getTrending() {
48 | //const popMovies = (await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1')).data.results;
49 | // var popMovies;
50 | // var popShows;
51 | //var pmRes =
52 | //var psRes;
53 | console.log("getTrending");
54 | fetch('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1').then(r => r.json()).then(popMovies => {
55 | console.log(popMovies.results);
56 | var pmRes = popMovies.results;
57 |
58 |
59 | let popMovieStr = `
60 |
61 |
97 | `;
98 | //var savedPM = $("#popMv").detach();
99 | chrome.storage.local.set({ 'savedPopMovies': popMovieStr });
100 | chrome.storage.local.set({ 'pmArr': pmRes });
101 | //localStorage.setItem('savedPopMovies', popMovieStr);
102 |
103 | });
104 |
105 | fetch('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1').then(r => r.json()).then(popShows => {
106 | console.log(popShows.results);
107 | var psRes = popShows.results;
108 | let popShowStr = `
109 |
110 |
141 | `;
142 | /*const popSh = document.createElement('article');
143 | popSh.outerHTML = `
144 |
145 |
147 | `;
148 | popSh.appendChild(psScrMen);
149 | chrome.storage.local.set({ 'savedPopShows': popShowStr });
150 | chrome.storage.local.set({ 'psArr': psRes });
151 | //localStorage.setItem('savedPopShows', popShowStr);
152 | });
153 | //console.log("hi");
154 |
155 | //var popMovies = await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1');
156 | //var popShows = await axios.get('https://api.themoviedb.org/3/tv/popular?api_key=04c908115dc6ff5e5aa3709b5a735393&language=en-US&page=1');
157 | /*console.log(popMovies.results);
158 | console.log(popShows.results);
159 | //};*/
--------------------------------------------------------------------------------
/Firefox/js/thankYou.js:
--------------------------------------------------------------------------------
1 | (function(i, s, o, g, r, a, m) {
2 | i['GoogleAnalyticsObject'] = r;
3 | i[r] = i[r] || function() {
4 | (i[r].q = i[r].q || []).push(arguments)
5 | }, i[r].l = 1 * new Date();
6 | a = s.createElement(o),
7 | m = s.getElementsByTagName(o)[0];
8 | a.async = 1;
9 | a.src = g;
10 | m.parentNode.insertBefore(a, m)
11 | })(window, document, 'script', './js/third-party/analytics.js', 'ga');
12 |
13 | ga('create', 'UA-208644341-1', 'auto');
14 |
15 | // Modifications:
16 | ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
17 | ga('send', 'pageview', '/thankYou'); // Set page, avoiding rejection due to chrome-extension protocol
--------------------------------------------------------------------------------
/Firefox/js/third-party/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdvithGopinath/LetMeWatch/dc149a1efcff069221fe809da99a5b8ea5686abd/Firefox/js/third-party/.DS_Store
--------------------------------------------------------------------------------
/Firefox/js/third-party/axios.min.js:
--------------------------------------------------------------------------------
1 | /* axios v0.19.0 | (c) 2019 by Matt Zabriskie */ ! function(e, t) { "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.axios = t() : e.axios = t() }(this, function() {
2 | return function(e) {
3 | function t(r) { if (n[r]) return n[r].exports; var o = n[r] = { exports: {}, id: r, loaded: !1 }; return e[r].call(o.exports, o, o.exports, t), o.loaded = !0, o.exports } var n = {}; return t.m = e, t.c = n, t.p = "", t(0) }([function(e, t, n) { e.exports = n(1) }, function(e, t, n) { "use strict";
4 |
5 | function r(e) { var t = new i(e),
6 | n = s(i.prototype.request, t); return o.extend(n, i.prototype, t), o.extend(n, t), n } var o = n(2),
7 | s = n(3),
8 | i = n(5),
9 | a = n(22),
10 | u = n(11),
11 | c = r(u);
12 | c.Axios = i, c.create = function(e) { return r(a(c.defaults, e)) }, c.Cancel = n(23), c.CancelToken = n(24), c.isCancel = n(10), c.all = function(e) { return Promise.all(e) }, c.spread = n(25), e.exports = c, e.exports.default = c }, function(e, t, n) { "use strict";
13 |
14 | function r(e) { return "[object Array]" === j.call(e) }
15 |
16 | function o(e) { return "[object ArrayBuffer]" === j.call(e) }
17 |
18 | function s(e) { return "undefined" != typeof FormData && e instanceof FormData }
19 |
20 | function i(e) { var t; return t = "undefined" != typeof ArrayBuffer && ArrayBuffer.isView ? ArrayBuffer.isView(e) : e && e.buffer && e.buffer instanceof ArrayBuffer }
21 |
22 | function a(e) { return "string" == typeof e }
23 |
24 | function u(e) { return "number" == typeof e }
25 |
26 | function c(e) { return "undefined" == typeof e }
27 |
28 | function f(e) { return null !== e && "object" == typeof e }
29 |
30 | function p(e) { return "[object Date]" === j.call(e) }
31 |
32 | function d(e) { return "[object File]" === j.call(e) }
33 |
34 | function l(e) { return "[object Blob]" === j.call(e) }
35 |
36 | function h(e) { return "[object Function]" === j.call(e) }
37 |
38 | function m(e) { return f(e) && h(e.pipe) }
39 |
40 | function y(e) { return "undefined" != typeof URLSearchParams && e instanceof URLSearchParams }
41 |
42 | function g(e) { return e.replace(/^\s*/, "").replace(/\s*$/, "") }
43 |
44 | function x() { return ("undefined" == typeof navigator || "ReactNative" !== navigator.product && "NativeScript" !== navigator.product && "NS" !== navigator.product) && ("undefined" != typeof window && "undefined" != typeof document) }
45 |
46 | function v(e, t) { if (null !== e && "undefined" != typeof e)
47 | if ("object" != typeof e && (e = [e]), r(e))
48 | for (var n = 0, o = e.length; n < o; n++) t.call(null, e[n], n, e);
49 | else
50 | for (var s in e) Object.prototype.hasOwnProperty.call(e, s) && t.call(null, e[s], s, e) }
51 |
52 | function w() {
53 | function e(e, n) { "object" == typeof t[n] && "object" == typeof e ? t[n] = w(t[n], e) : t[n] = e } for (var t = {}, n = 0, r = arguments.length; n < r; n++) v(arguments[n], e); return t }
54 |
55 | function b() {
56 | function e(e, n) { "object" == typeof t[n] && "object" == typeof e ? t[n] = b(t[n], e) : "object" == typeof e ? t[n] = b({}, e) : t[n] = e } for (var t = {}, n = 0, r = arguments.length; n < r; n++) v(arguments[n], e); return t }
57 |
58 | function E(e, t, n) { return v(t, function(t, r) { n && "function" == typeof t ? e[r] = S(t, n) : e[r] = t }), e } var S = n(3),
59 | R = n(4),
60 | j = Object.prototype.toString;
61 | e.exports = { isArray: r, isArrayBuffer: o, isBuffer: R, isFormData: s, isArrayBufferView: i, isString: a, isNumber: u, isObject: f, isUndefined: c, isDate: p, isFile: d, isBlob: l, isFunction: h, isStream: m, isURLSearchParams: y, isStandardBrowserEnv: x, forEach: v, merge: w, deepMerge: b, extend: E, trim: g } }, function(e, t) { "use strict";
62 | e.exports = function(e, t) { return function() { for (var n = new Array(arguments.length), r = 0; r < n.length; r++) n[r] = arguments[r]; return e.apply(t, n) } } }, function(e, t) {
63 | /*!
64 | * Determine if an object is a Buffer
65 | *
66 | * @author Feross Aboukhadijeh
67 | * @license MIT
68 | */
69 | e.exports = function(e) { return null != e && null != e.constructor && "function" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e) }
70 | }, function(e, t, n) { "use strict";
71 |
72 | function r(e) { this.defaults = e, this.interceptors = { request: new i, response: new i } } var o = n(2),
73 | s = n(6),
74 | i = n(7),
75 | a = n(8),
76 | u = n(22);
77 | r.prototype.request = function(e) { "string" == typeof e ? (e = arguments[1] || {}, e.url = arguments[0]) : e = e || {}, e = u(this.defaults, e), e.method = e.method ? e.method.toLowerCase() : "get"; var t = [a, void 0],
78 | n = Promise.resolve(e); for (this.interceptors.request.forEach(function(e) { t.unshift(e.fulfilled, e.rejected) }), this.interceptors.response.forEach(function(e) { t.push(e.fulfilled, e.rejected) }); t.length;) n = n.then(t.shift(), t.shift()); return n }, r.prototype.getUri = function(e) { return e = u(this.defaults, e), s(e.url, e.params, e.paramsSerializer).replace(/^\?/, "") }, o.forEach(["delete", "get", "head", "options"], function(e) { r.prototype[e] = function(t, n) { return this.request(o.merge(n || {}, { method: e, url: t })) } }), o.forEach(["post", "put", "patch"], function(e) { r.prototype[e] = function(t, n, r) { return this.request(o.merge(r || {}, { method: e, url: t, data: n })) } }), e.exports = r }, function(e, t, n) { "use strict";
79 |
80 | function r(e) { return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]") } var o = n(2);
81 | e.exports = function(e, t, n) { if (!t) return e; var s; if (n) s = n(t);
82 | else if (o.isURLSearchParams(t)) s = t.toString();
83 | else { var i = [];
84 | o.forEach(t, function(e, t) { null !== e && "undefined" != typeof e && (o.isArray(e) ? t += "[]" : e = [e], o.forEach(e, function(e) { o.isDate(e) ? e = e.toISOString() : o.isObject(e) && (e = JSON.stringify(e)), i.push(r(t) + "=" + r(e)) })) }), s = i.join("&") } if (s) { var a = e.indexOf("#");
85 | a !== -1 && (e = e.slice(0, a)), e += (e.indexOf("?") === -1 ? "?" : "&") + s } return e } }, function(e, t, n) { "use strict";
86 |
87 | function r() { this.handlers = [] } var o = n(2);
88 | r.prototype.use = function(e, t) { return this.handlers.push({ fulfilled: e, rejected: t }), this.handlers.length - 1 }, r.prototype.eject = function(e) { this.handlers[e] && (this.handlers[e] = null) }, r.prototype.forEach = function(e) { o.forEach(this.handlers, function(t) { null !== t && e(t) }) }, e.exports = r }, function(e, t, n) { "use strict";
89 |
90 | function r(e) { e.cancelToken && e.cancelToken.throwIfRequested() } var o = n(2),
91 | s = n(9),
92 | i = n(10),
93 | a = n(11),
94 | u = n(20),
95 | c = n(21);
96 | e.exports = function(e) { r(e), e.baseURL && !u(e.url) && (e.url = c(e.baseURL, e.url)), e.headers = e.headers || {}, e.data = s(e.data, e.headers, e.transformRequest), e.headers = o.merge(e.headers.common || {}, e.headers[e.method] || {}, e.headers || {}), o.forEach(["delete", "get", "head", "post", "put", "patch", "common"], function(t) { delete e.headers[t] }); var t = e.adapter || a.adapter; return t(e).then(function(t) { return r(e), t.data = s(t.data, t.headers, e.transformResponse), t }, function(t) { return i(t) || (r(e), t && t.response && (t.response.data = s(t.response.data, t.response.headers, e.transformResponse))), Promise.reject(t) }) } }, function(e, t, n) { "use strict"; var r = n(2);
97 | e.exports = function(e, t, n) { return r.forEach(n, function(n) { e = n(e, t) }), e } }, function(e, t) { "use strict";
98 | e.exports = function(e) { return !(!e || !e.__CANCEL__) } }, function(e, t, n) { "use strict";
99 |
100 | function r(e, t) {!s.isUndefined(e) && s.isUndefined(e["Content-Type"]) && (e["Content-Type"] = t) }
101 |
102 | function o() { var e; return "undefined" != typeof process && "[object process]" === Object.prototype.toString.call(process) ? e = n(13) : "undefined" != typeof XMLHttpRequest && (e = n(13)), e } var s = n(2),
103 | i = n(12),
104 | a = { "Content-Type": "application/x-www-form-urlencoded" },
105 | u = { adapter: o(), transformRequest: [function(e, t) { return i(t, "Accept"), i(t, "Content-Type"), s.isFormData(e) || s.isArrayBuffer(e) || s.isBuffer(e) || s.isStream(e) || s.isFile(e) || s.isBlob(e) ? e : s.isArrayBufferView(e) ? e.buffer : s.isURLSearchParams(e) ? (r(t, "application/x-www-form-urlencoded;charset=utf-8"), e.toString()) : s.isObject(e) ? (r(t, "application/json;charset=utf-8"), JSON.stringify(e)) : e }], transformResponse: [function(e) { if ("string" == typeof e) try { e = JSON.parse(e) } catch (e) {}
106 | return e }], timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", maxContentLength: -1, validateStatus: function(e) { return e >= 200 && e < 300 } };
107 | u.headers = { common: { Accept: "application/json, text/plain, */*" } }, s.forEach(["delete", "get", "head"], function(e) { u.headers[e] = {} }), s.forEach(["post", "put", "patch"], function(e) { u.headers[e] = s.merge(a) }), e.exports = u }, function(e, t, n) { "use strict"; var r = n(2);
108 | e.exports = function(e, t) { r.forEach(e, function(n, r) { r !== t && r.toUpperCase() === t.toUpperCase() && (e[t] = n, delete e[r]) }) } }, function(e, t, n) { "use strict"; var r = n(2),
109 | o = n(14),
110 | s = n(6),
111 | i = n(17),
112 | a = n(18),
113 | u = n(15);
114 | e.exports = function(e) { return new Promise(function(t, c) { var f = e.data,
115 | p = e.headers;
116 | r.isFormData(f) && delete p["Content-Type"]; var d = new XMLHttpRequest; if (e.auth) { var l = e.auth.username || "",
117 | h = e.auth.password || "";
118 | p.Authorization = "Basic " + btoa(l + ":" + h) } if (d.open(e.method.toUpperCase(), s(e.url, e.params, e.paramsSerializer), !0), d.timeout = e.timeout, d.onreadystatechange = function() { if (d && 4 === d.readyState && (0 !== d.status || d.responseURL && 0 === d.responseURL.indexOf("file:"))) { var n = "getAllResponseHeaders" in d ? i(d.getAllResponseHeaders()) : null,
119 | r = e.responseType && "text" !== e.responseType ? d.response : d.responseText,
120 | s = { data: r, status: d.status, statusText: d.statusText, headers: n, config: e, request: d };
121 | o(t, c, s), d = null } }, d.onabort = function() { d && (c(u("Request aborted", e, "ECONNABORTED", d)), d = null) }, d.onerror = function() { c(u("Network Error", e, null, d)), d = null }, d.ontimeout = function() { c(u("timeout of " + e.timeout + "ms exceeded", e, "ECONNABORTED", d)), d = null }, r.isStandardBrowserEnv()) { var m = n(19),
122 | y = (e.withCredentials || a(e.url)) && e.xsrfCookieName ? m.read(e.xsrfCookieName) : void 0;
123 | y && (p[e.xsrfHeaderName] = y) } if ("setRequestHeader" in d && r.forEach(p, function(e, t) { "undefined" == typeof f && "content-type" === t.toLowerCase() ? delete p[t] : d.setRequestHeader(t, e) }), e.withCredentials && (d.withCredentials = !0), e.responseType) try { d.responseType = e.responseType } catch (t) { if ("json" !== e.responseType) throw t }
124 | "function" == typeof e.onDownloadProgress && d.addEventListener("progress", e.onDownloadProgress), "function" == typeof e.onUploadProgress && d.upload && d.upload.addEventListener("progress", e.onUploadProgress), e.cancelToken && e.cancelToken.promise.then(function(e) { d && (d.abort(), c(e), d = null) }), void 0 === f && (f = null), d.send(f) }) } }, function(e, t, n) { "use strict"; var r = n(15);
125 | e.exports = function(e, t, n) { var o = n.config.validateStatus;!o || o(n.status) ? e(n) : t(r("Request failed with status code " + n.status, n.config, null, n.request, n)) } }, function(e, t, n) { "use strict"; var r = n(16);
126 | e.exports = function(e, t, n, o, s) { var i = new Error(e); return r(i, t, n, o, s) } }, function(e, t) { "use strict";
127 | e.exports = function(e, t, n, r, o) { return e.config = t, n && (e.code = n), e.request = r, e.response = o, e.isAxiosError = !0, e.toJSON = function() { return { message: this.message, name: this.name, description: this.description, number: this.number, fileName: this.fileName, lineNumber: this.lineNumber, columnNumber: this.columnNumber, stack: this.stack, config: this.config, code: this.code } }, e } }, function(e, t, n) { "use strict"; var r = n(2),
128 | o = ["age", "authorization", "content-length", "content-type", "etag", "expires", "from", "host", "if-modified-since", "if-unmodified-since", "last-modified", "location", "max-forwards", "proxy-authorization", "referer", "retry-after", "user-agent"];
129 | e.exports = function(e) { var t, n, s, i = {}; return e ? (r.forEach(e.split("\n"), function(e) { if (s = e.indexOf(":"), t = r.trim(e.substr(0, s)).toLowerCase(), n = r.trim(e.substr(s + 1)), t) { if (i[t] && o.indexOf(t) >= 0) return; "set-cookie" === t ? i[t] = (i[t] ? i[t] : []).concat([n]) : i[t] = i[t] ? i[t] + ", " + n : n } }), i) : i } }, function(e, t, n) { "use strict"; var r = n(2);
130 | e.exports = r.isStandardBrowserEnv() ? function() {
131 | function e(e) { var t = e; return n && (o.setAttribute("href", t), t = o.href), o.setAttribute("href", t), { href: o.href, protocol: o.protocol ? o.protocol.replace(/:$/, "") : "", host: o.host, search: o.search ? o.search.replace(/^\?/, "") : "", hash: o.hash ? o.hash.replace(/^#/, "") : "", hostname: o.hostname, port: o.port, pathname: "/" === o.pathname.charAt(0) ? o.pathname : "/" + o.pathname } } var t, n = /(msie|trident)/i.test(navigator.userAgent),
132 | o = document.createElement("a"); return t = e(window.location.href),
133 | function(n) { var o = r.isString(n) ? e(n) : n; return o.protocol === t.protocol && o.host === t.host } }() : function() { return function() { return !0 } }() }, function(e, t, n) { "use strict"; var r = n(2);
134 | e.exports = r.isStandardBrowserEnv() ? function() { return { write: function(e, t, n, o, s, i) { var a = [];
135 | a.push(e + "=" + encodeURIComponent(t)), r.isNumber(n) && a.push("expires=" + new Date(n).toGMTString()), r.isString(o) && a.push("path=" + o), r.isString(s) && a.push("domain=" + s), i === !0 && a.push("secure"), document.cookie = a.join("; ") }, read: function(e) { var t = document.cookie.match(new RegExp("(^|;\\s*)(" + e + ")=([^;]*)")); return t ? decodeURIComponent(t[3]) : null }, remove: function(e) { this.write(e, "", Date.now() - 864e5) } } }() : function() { return { write: function() {}, read: function() { return null }, remove: function() {} } }() }, function(e, t) { "use strict";
136 | e.exports = function(e) { return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e) } }, function(e, t) { "use strict";
137 | e.exports = function(e, t) { return t ? e.replace(/\/+$/, "") + "/" + t.replace(/^\/+/, "") : e } }, function(e, t, n) { "use strict"; var r = n(2);
138 | e.exports = function(e, t) { t = t || {}; var n = {}; return r.forEach(["url", "method", "params", "data"], function(e) { "undefined" != typeof t[e] && (n[e] = t[e]) }), r.forEach(["headers", "auth", "proxy"], function(o) { r.isObject(t[o]) ? n[o] = r.deepMerge(e[o], t[o]) : "undefined" != typeof t[o] ? n[o] = t[o] : r.isObject(e[o]) ? n[o] = r.deepMerge(e[o]) : "undefined" != typeof e[o] && (n[o] = e[o]) }), r.forEach(["baseURL", "transformRequest", "transformResponse", "paramsSerializer", "timeout", "withCredentials", "adapter", "responseType", "xsrfCookieName", "xsrfHeaderName", "onUploadProgress", "onDownloadProgress", "maxContentLength", "validateStatus", "maxRedirects", "httpAgent", "httpsAgent", "cancelToken", "socketPath"], function(r) { "undefined" != typeof t[r] ? n[r] = t[r] : "undefined" != typeof e[r] && (n[r] = e[r]) }), n } }, function(e, t) { "use strict";
139 |
140 | function n(e) { this.message = e }
141 | n.prototype.toString = function() { return "Cancel" + (this.message ? ": " + this.message : "") }, n.prototype.__CANCEL__ = !0, e.exports = n }, function(e, t, n) { "use strict";
142 |
143 | function r(e) { if ("function" != typeof e) throw new TypeError("executor must be a function."); var t;
144 | this.promise = new Promise(function(e) { t = e }); var n = this;
145 | e(function(e) { n.reason || (n.reason = new o(e), t(n.reason)) }) } var o = n(23);
146 | r.prototype.throwIfRequested = function() { if (this.reason) throw this.reason }, r.source = function() { var e, t = new r(function(t) { e = t }); return { token: t, cancel: e } }, e.exports = r }, function(e, t) { "use strict";
147 | e.exports = function(e) { return function(t) { return e.apply(null, t) } } }])
148 | });
149 | //# sourceMappingURL=axios.min.map
--------------------------------------------------------------------------------
/Firefox/js/third-party/main.min.js:
--------------------------------------------------------------------------------
1 | ! function() {
2 | const t = window,
3 | e = document.documentElement;
4 | if (e.classList.remove("no-js"), e.classList.add("js"), document.body.classList.contains("has-animations")) {
5 | (window.sr = ScrollReveal()).reveal(".hero-title, .hero-paragraph, .hero-form", { duration: 1e3, distance: "40px", easing: "cubic-bezier(0.5, -0.01, 0, 1.005)", origin: "bottom", interval: 150 })
6 | }
7 | const s = document.querySelectorAll(".is-moving-object");
8 | let n = 0,
9 | i = 0,
10 | a = 0,
11 | o = 0,
12 | r = 0,
13 | l = e.clientWidth,
14 | c = e.clientHeight;
15 | s && t.addEventListener("mousemove", function(t, e) {
16 | let s = null,
17 | n = e;
18 | return (...e) => {
19 | let i = Date.now();
20 | (!s || i - s >= n) && (s = i, t.apply(this, e))
21 | }
22 | }(function(e) {
23 | ! function(e, s) {
24 | n = e.pageX, i = e.pageY, a = t.scrollY, o = l / 2 - n, r = c / 2 - (i - a);
25 | for (let t = 0; t < s.length; t++) {
26 | const e = s[t].getAttribute("data-translating-factor") || 20,
27 | n = s[t].getAttribute("data-rotating-factor") || 20,
28 | i = s[t].getAttribute("data-perspective") || 500;
29 | let a = [];
30 | s[t].classList.contains("is-translating") && a.push("translate(" + o / e + "px, " + r / e + "px)"), s[t].classList.contains("is-rotating") && a.push("perspective(" + i + "px) rotateY(" + -o / n + "deg) rotateX(" + r / n + "deg)"), (s[t].classList.contains("is-translating") || s[t].classList.contains("is-rotating")) && (a = a.join(" "), s[t].style.transform = a, s[t].style.transition = "transform 1s ease-out", s[t].style.transformStyle = "preserve-3d", s[t].style.backfaceVisibility = "hidden")
31 | }
32 | }(e, s)
33 | }, 150))
34 | }();
--------------------------------------------------------------------------------
/Firefox/js/utils.js:
--------------------------------------------------------------------------------
1 | const debounce = (func, delay = 1000) => {
2 | let timeoutId;
3 | return (...args) => {
4 | if (timeoutId) {
5 | clearTimeout(timeoutId);
6 | }
7 | timeoutId = setTimeout(() => {
8 | func.apply(null, args);
9 | }, delay);
10 | };
11 | };
--------------------------------------------------------------------------------
/Firefox/js/viewPage.js:
--------------------------------------------------------------------------------
1 | let twoEmbUrl = localStorage.getItem('twoEmbUrl');
2 | let vidSrcUrl = localStorage.getItem('vidSrcUrl');
3 | let dbgoUrl = localStorage.getItem('dbgoUrl');
4 | let firesonicUrl = localStorage.getItem('firesonicUrl');
5 | let trailersToUrl = localStorage.getItem('trailersToUrl');
6 |
7 | let vidTitle = localStorage.getItem('vidTitle');
8 | let titleVideo = document.getElementById("titleVideo");
9 | console.log(trailersToUrl);
10 |
11 | titleVideo.removeAttribute('sandbox');
12 | titleVideo.contentWindow.location.href = twoEmbUrl;
13 | document.title = vidTitle;
14 |
15 | let vidSrcButt = document.getElementById("vidSrcButton");
16 | let dbgoButt = document.getElementById("dbgoButton");
17 | let twoEmbButt = document.getElementById("twoEmbButton");
18 | let firesonicButton = document.getElementById("firesonicButton");
19 | let trailersToButton = document.getElementById("trailersToButton");
20 | let serverButt = document.getElementById("serversButton");
21 |
22 | /*let serverOptions = document.getElementById("serverOptions");
23 | serverButt.addEventListener('click', () => {
24 | if (serverOptions.style.display == "none") {
25 | serverOptions.style.display = "block";
26 | } else {
27 | serverOptions.style.display = "none";
28 | }
29 | });
30 | */
31 | vidSrcButt.addEventListener('click', () => {
32 | titleVideo.style.display = "none";
33 |
34 | titleVideo.removeAttribute('sandbox');
35 | titleVideo.src = vidSrcUrl;
36 | titleVideo.contentWindow.location.href = vidSrcUrl;
37 | serverButt.innerText = "VIDSRC ";
38 | titleVideo.style.left = "0px";
39 | titleVideo.style.top = "-50px";
40 | titleVideo.style.height = "105%";
41 |
42 | titleVideo.style.display = "unset";
43 |
44 |
45 | // serverOptions.style.display = "none";
46 | });
47 |
48 | dbgoButt.addEventListener('click', () => {
49 | //titleVideo.removeAttribute('sandbox');
50 | titleVideo.style.display = "none";
51 |
52 | titleVideo.setAttribute('sandbox', "allow-pointer-lock allow-same-origin allow-scripts allow-top-navigation allow-presentation");
53 |
54 |
55 |
56 | titleVideo.src = dbgoUrl;
57 | titleVideo.contentWindow.location.href = dbgoUrl;
58 | serverButt.innerText = "DBOGO ";
59 | titleVideo.style.top = "4px";
60 | titleVideo.style.left = "0px";
61 | titleVideo.style.height = "100%";
62 | titleVideo.style.display = "unset";
63 |
64 |
65 | //serverOptions.style.display = "none";
66 | });
67 |
68 | trailersToButton.addEventListener('click', () => {
69 | titleVideo.style.display = "none";
70 | //titleVideo.removeAttribute('sandbox');
71 | //titleVideo.setAttribute('sandbox', "allow-pointer-lock allow-same-origin allow-scripts allow-top-navigation");
72 | titleVideo.setAttribute('sandbox', "allow-same-origin allow-scripts");
73 |
74 | //titleVideo.src = trailersToUrl;
75 |
76 | /*if ('app' !== $('body').attr('id')) {
77 | window.setTimeout(function() {
78 | window.top.location.href = 'https://Trailers.to/video/test-user/imdb/tt7126948';
79 | }, 5000);
80 | }*/
81 |
82 | titleVideo.contentWindow.location.href = trailersToUrl; //"https://Trailers.to/video/test-user/imdb/tt7126948";
83 | //serverButt.innerHTML = ``;
84 | //serverButt.innerText = "TRAILERS.TO";
85 | serverButt.innerHTML = `
86 | TRAILERS.TO
87 | `;
88 | titleVideo.style.top = "33px";
89 | titleVideo.style.left = "0px";
90 | titleVideo.style.height = "100%";
91 |
92 | titleVideo.style.display = "unset";
93 |
94 | //serverButt.style.width = "175px";
95 | //serverOptions.style.display = "none";
96 | });
97 |
98 | twoEmbButt.addEventListener('click', () => {
99 | titleVideo.style.display = "none";
100 |
101 | titleVideo.removeAttribute('sandbox');
102 |
103 | titleVideo.src = twoEmbUrl;
104 | titleVideo.contentWindow.location.href = twoEmbUrl;
105 |
106 | serverButt.innerHTML = `
107 | 2EMBED
108 | `;
109 | titleVideo.style.top = "-2px";
110 | titleVideo.style.left = "0px";
111 | titleVideo.style.height = "100%";
112 |
113 | titleVideo.style.display = "unset";
114 |
115 | //serverOptions.style.display = "none";
116 | });
117 |
118 | firesonicButton.addEventListener('click', () => {
119 | titleVideo.style.display = "none";
120 |
121 | titleVideo.src = firesonicUrl;
122 | titleVideo.contentWindow.location.href = firesonicUrl;
123 | serverButt.innerText = "FIRESONIC ";
124 | titleVideo.style.top = "0px";
125 |
126 | titleVideo.style.left = "0px";
127 | titleVideo.style.height = "100%";
128 | titleVideo.style.display = "unset";
129 |
130 | // serverOptions.style.display = "none";
131 | });
--------------------------------------------------------------------------------
/Firefox/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "manifest_version": 2,
3 | "name": "LetMeWatch",
4 | "version": "1.86",
5 | "description": "LetMeWatch: A seamless watching experience in a Chrome extension.",
6 | "permissions": [
7 | "storage",
8 | "tabs",
9 | "activeTab",
10 | "webNavigation"
11 | ],
12 | "background": {
13 | "scripts": ["/js/background.js"]
14 | },
15 | "browser_action": {
16 | "default_popup": "popup.html",
17 | "default_icon": "/images/LMWlogo.png"
18 | },
19 |
20 | "icons": {
21 | "48": "/images/LMWLogo48.png",
22 | "96": "/images/LMWLogo96.png"
23 | },
24 | "commands": {
25 | "_execute_browser_action": {
26 | "suggested_key": {
27 | "default": "Alt+M"
28 | }
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/Firefox/onInstall.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
13 |
14 |
15 |
17 |
18 |
19 |
20 |

Trending ~ Movies
62 |
63 | `;
64 | /*const pmScrMen = document.createElement('div');
65 | pmScrMen.classList.add('scrollmenu');
66 | pmScrMen.id = 'pmScroll';
67 | for (let i = 0; i < 20; i++) {
68 | let currPM = pmRes[i];
69 | //let currTM = topMovies[i];
70 | //let currTS = topShows[i];
71 | popMovieStr += `
72 |
73 |
74 |
75 | `
76 | /* const pmElem = document.createElement('a');
77 | pmElem.classList.add('scrollmenu-item');
78 | pmElem.innerHTML = `
`;
79 | pmElem.addEventListener('click', () => {
80 | input.value = inputValue(currPM);
81 | document.querySelector('html').style.height = 'auto';
82 | onOptionSelect(currPM);
83 |
84 | });
85 | document.getElementById("pmScroll").appendChild(pmElem);
86 | }
87 | const popMv = document.createElement('article');
88 | popMv.outerHTML = `
89 |
90 |
92 | `;
93 | popMv.appendChild(pmScrMen);
94 | popMovieStr += `
95 |
96 | Trending ~ Movies
91 |Trending ~ Shows
111 |
112 | `;
113 |
114 | /*const psScrMen = document.createElement('div');
115 | psScrMen.classList.add('scrollmenu');
116 | psScrMen.id = 'psScroll';
117 | for (let i = 0; i < 20; i++) {
118 | //let currPM = popMovies[i];
119 | let currPS = psRes[i];
120 | //let currTM = topMovies[i];
121 | //let currTS = topShows[i];
122 |
123 | popShowStr += `
124 |
125 |
126 |
127 | `;
128 | /*const psElem = document.createElement('a');
129 | psElem.classList.add('scrollmenu-item');
130 | psElem.innerHTML = `
`;
131 | psElem.addEventListener('click', () => {
132 | input.value = inputValue(currPS);
133 | document.querySelector('html').style.height = 'auto';
134 | onOptionSelect(currPS);
135 | });
136 | psScrMen.appendChild(psElem);
137 | }
138 | popShowStr += `
139 |
140 | Trending ~ Shows
146 |
21 |
22 |
23 |
24 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/Firefox/popup.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/Firefox/viewPage.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
41 |
42 |
25 |
28 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
60 |
90 |
91 | -
61 |
- Hall of Fame Weekend 62 |
- Preseason Week 1 63 |
- Preseason Week 2 64 |
- Preseason Week 3 65 |
- Week 1 66 |
- Week 2 67 |
- Week 3 68 |
- Week 4 69 |
- Week 5 70 |
- Week 6 71 |
- Week 7 72 |
- Week 8 73 |
- Week 9 74 |
- Week 10 75 |
- Week 11 76 |
- Week 12 77 |
- Week 13 78 |
- Week 14 79 |
- Week 15 80 |
- Week 16 81 |
- Week 17 82 |
- Week 18 83 |
- Wild Card 84 |
- Divisional Round 85 |
- Conference Championship 86 |
- Pro Bowl 87 |
- Super Bowl 88 |
43 |
44 |
53 |
54 |
67 |
68 |
69 | nn
70 |
71 |
72 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LetMeWatch
2 | **Update: LetMeWatch was removed from the Chrome Web Store a while ago (for obvious reasons). As such, I've updated the [installation section](#installation) with instructions on how to manually add LetMeWatch to your Chrome browser.**
3 |
4 | ### A seamless watching experience contained in a browser extension
5 |
6 | LetMeWatch is a browser extension that offers end-to-end movie/TV show streaming, maximizing ease of use and convenience by sifting through a multitude of free streaming services and locating the highest-caliber video that is available. You can learn more at our website: [letmewatch.app](https://letmewatch.app).
7 |
8 | ## Features
9 |
10 | * All your favorite movies and TV Shows, only a few clicks away
11 | * More titles than Netflix, Hulu, Disney+, or HBOMax
12 | * Unlimited HD-quality content at your fingertips
13 | * Absolutely free, forever
14 |
15 | ## Installation
16 |
17 | ~~LetMeWatch is currently available for all Chromium browsers (Chrome, Edge, Opera, etc.) at the official [Chrome webstore](https://chrome.google.com/webstore/detail/letmewatch/lalbidfnmdmafompodhbmppbpakipaah), as well as for Mozilla Firefox at the [Firefox Add-ons Store](https://addons.mozilla.org/en-US/firefox/).~~
18 |
19 | To manually install LetMeWatch, do the following:
20 | 1. Download [LetMeWatch_Build.zip](https://drive.google.com/file/d/1TXNoLgcCsr_TCYbHtFjLXJ6cnpKnXmRX/view?usp=drive_link)
21 | 2. Unzip the file.
22 | 3. Go to [chrome://extensions](chrome://extensions) and enable Developer mode in the top right.
23 | 4. Select Load unpacked in the top left, and select the LetMeWatch_Build folder that was unzipped.
24 |
25 | After installing LetMeWatch, press Alt+M (Windows) or Opt+M (Mac) to discover a supreme viewing experience!
26 |
27 | ## Usage
28 |
29 | 
30 | 
31 |
32 | ## Feedback
33 |
34 | If you come across any bugs/issues, or have any feedback whatsoever, it would be greatly appreciated if you logged it as a ticket in Issues.
35 |
36 | ## Donations
37 |
38 | LetMeWatch will be free forever, but donations are always appreciated :) If you liked LetMeWatch, you can help support it and future projects here:
39 |
40 | [BuyMeACoffee](https://www.buymeacoffee.com/AddyCo) [CashApp](https://cash.app/$AddyCo1) [Venmo](https://venmo.com/AddyCo?txn=pay¬e=LetMeWatch%20donation)
41 |
42 | Thank you for checking out LetMeWatch!
43 |
--------------------------------------------------------------------------------
-
45 |
- 2EMBED 46 |
- FIRESONIC 47 |
- TRAILERS.TO 48 |
- VIDSRC 49 |
- DBOGO 50 | 51 |