move scripts for non-extension pages
This commit is contained in:
		
							parent
							
								
									4d20cdec8d
								
							
						
					
					
						commit
						9dfdb3f44b
					
				
					 5 changed files with 5 additions and 6 deletions
				
			
		
							
								
								
									
										0
									
								
								scripts/external/inject.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								scripts/external/inject.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										21
									
								
								scripts/external/processor.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								scripts/external/processor.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| /* processor.js  | ||||
| Process the information on the website and display it on screen.  | ||||
| */ | ||||
| 
 | ||||
| // const inject = ((await import(chrome.runtime.getURL("scripts/external/inject.js"))).default);
 | ||||
| const scraper = (await import(chrome.runtime.getURL("scripts/external/scraper.js"))).default; | ||||
| 
 | ||||
| export default class processor { | ||||
|      #filter;  | ||||
| 
 | ||||
|      async scrape (fields) { | ||||
|           this.data = new scraper ((fields) ? fields : this.targets);  | ||||
|      } | ||||
|       | ||||
|      constructor (filter) { | ||||
|           this.#filter = filter; | ||||
| 
 | ||||
|           this.targets = this.#filter[`data`]; | ||||
|           this.scrape(); | ||||
|      } | ||||
| } | ||||
							
								
								
									
										57
									
								
								scripts/external/scraper.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								scripts/external/scraper.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | |||
| /* reader.js | ||||
| Read the contents of the page.   | ||||
| */ | ||||
| 
 | ||||
| export default class scraper { | ||||
| 	constructor(scraper_fields) { | ||||
| 		let field_content; | ||||
| 
 | ||||
| 		if ((typeof scraper_fields).includes("object") && scraper_fields != null && scraper_fields) { | ||||
| 
 | ||||
| 			/* Read for the particular fields. */ | ||||
| 			function read(fields) { | ||||
| 				let field_data = {}; | ||||
| 				 | ||||
| 				console.log(Object.keys(fields)); | ||||
| 
 | ||||
| 				(Object.keys(fields)).forEach((FIELD_NAME) => { | ||||
| 					let FIELD = {"name": FIELD_NAME, "value": fields[FIELD_NAME]}; | ||||
| 
 | ||||
| 					if (FIELD[`value`]) { | ||||
| 						// Check if array.
 | ||||
| 						if (Array.isArray(FIELD[`value`])) { | ||||
| 							// Temporarily create an empty list. 
 | ||||
| 							field_data[FIELD[`name`]] = []; | ||||
| 							 | ||||
| 							if (typeof FIELD[`value`][0] == "object" && FIELD[`value`][0] != null && !Array.isArray(FIELD[`value`][0])) { | ||||
| 								field_data[FIELD[`name`]].push(read(FIELD[`value`][0])); | ||||
| 							} else { | ||||
| 								let ELEMENTS = (document.querySelectorAll(FIELD[`value`][0])); | ||||
| 								 | ||||
| 								if (ELEMENTS.length > 0) { | ||||
| 									(ELEMENTS).forEach((ELEMENT) => { | ||||
| 										field_data[FIELD[`name`]].push(ELEMENT.innerText); | ||||
| 									}) | ||||
| 								}; | ||||
| 							}; | ||||
| 						} else if ((typeof FIELD[`value`]).includes(`obj`) && FIELD[`value`] != null) { | ||||
| 							field_data[FIELD[`name`]] = read(FIELD[`value`]); | ||||
| 						} else if (document.querySelector(FIELD[`value`])) { | ||||
| 							field_data[FIELD[`name`]] = document.querySelector(FIELD[`value`]).innerText; | ||||
| 						}; | ||||
| 					}; | ||||
| 				}); | ||||
| 
 | ||||
| 				return field_data; | ||||
| 			}; | ||||
| 			field_content = read(scraper_fields); | ||||
| 		} | ||||
| 
 | ||||
| 		if (Object.keys(field_content).length > 0) { | ||||
| 			for (let field_name in Object.keys(field_content)) { | ||||
| 				console.log(field_name); | ||||
| 				this[field_name] = field_content[field_name]; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										65
									
								
								scripts/external/watchman.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								scripts/external/watchman.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,65 @@ | |||
| /* Watchman.js | ||||
| Be sensitive to changes and update the state. | ||||
| */ | ||||
| 
 | ||||
| let main = (async () => { | ||||
| 	// Import modules.
 | ||||
| 	let filters = new ((await import(chrome.runtime.getURL("scripts/filters.js"))).default); | ||||
| 	const processor = (await import(chrome.runtime.getURL("scripts/external/processor.js"))).default; | ||||
| 
 | ||||
| 	class watchman { | ||||
| 		/* Check the current URL. | ||||
| 
 | ||||
| 			@param {string} URL the page URL; default value is the current webpage | ||||
| 			@return {dictionary} the filter to follow | ||||
| 			*/ | ||||
| 		static async observe(URL = window.location.href) { | ||||
| 			// Create the variable to determine the corresponding key.
 | ||||
| 			let activity = await filters.select(URL); | ||||
| 
 | ||||
| 			return activity; | ||||
| 		} | ||||
| 
 | ||||
| 		/* Act on the page. | ||||
| 
 | ||||
| 		@param {dictionary} filters the filter to work with | ||||
| 		@return {boolean} the state | ||||
| 		*/ | ||||
| 		static act(matches) { | ||||
| 			console.log("ShopAI works here! Click on the button in the toolbar or website to start."); | ||||
| 			// Show loading screen while the load is incomplete. 
 | ||||
| 			 | ||||
| 			// Set the icon to indicate that it's active.
 | ||||
| 
 | ||||
| 			// Begin. 
 | ||||
| 			let PROC = new processor(matches); | ||||
| 
 | ||||
| 			window.addEventListener(`load`, (event) => { | ||||
| 				// Remove the loading screen. 
 | ||||
| 			}); | ||||
| 		} | ||||
| 
 | ||||
| 		/* Set the program to standby utnil next load. | ||||
| 		 */ | ||||
| 		static standby() { | ||||
| 			// Set the icon to indicate that it's not active. 
 | ||||
| 		} | ||||
| 
 | ||||
| 		static async job() { | ||||
| 			/* The main action. */ | ||||
| 			 | ||||
| 			(watchman.observe()).then((RULES) => { | ||||
| 				if (RULES && Object.keys(RULES).length !== 0) { | ||||
| 					watchman.act(RULES); | ||||
| 				} else { | ||||
| 					watchman.standby(); | ||||
| 				} | ||||
| 			}); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	watchman.job(); | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
| main(); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue