feat(docs): add mkdocs

This commit is contained in:
Jef LeCompte
2020-12-07 00:18:43 -05:00
parent bc2272e59a
commit 243109a4ff
53 changed files with 1112 additions and 644 deletions
+111
View File
@@ -0,0 +1,111 @@
# General
## Adding a store
???+ note
This is subject to change in the future
In the following examples, I will be using "NewStore" as the store I'm wanting to add.
### Creating a store file
First, create a TypeScript file in `src/store/model`. In this example, I'll create a file named `new-store.ts`. At this point, you can copy and paste any of the other stores and change accordingly.
#### How to grab a container (aka selector)
For the containers, what you'll wanna do is use <kbd>F12</kbd> on the site you want to Inspect and click this button
![image](https://user-images.githubusercontent.com/12074633/100685326-2669da80-334a-11eb-93a9-8ac2c659f5f3.png)
Hover over the item you want and it should give you the context:
![image](https://user-images.githubusercontent.com/12074633/100685310-1e119f80-334a-11eb-91aa-b77b0ff6c2b1.png)
You can also right-click on any website element and select 'Inspect'. That should also give you the same results.
Some people will decide to choose a parent element as it can be unique. Like this case!
I'd rather use `.button.spin-button.prod-ProductCTA--primary.button--primary` instead of `.spin-button-children` as there are probably other elements on the page that are also `.spin-button-children`.
The reason why we use these selectors anyway is to wait for the webpage to load these specific elements, to help eliminate false positives.
For easily getting the selector, you can also copy it by right clicking on the tag, Copy > Copy selector.
![image](https://user-images.githubusercontent.com/12074633/100933096-d2323800-34ba-11eb-8f06-d106f43b7ad3.png)
### Updating the models
You'll now want to add the new store to `src/store/model/index.ts`.
This is what it will look like:
```diff
--- a/src/store/model/index.ts
+++ b/src/store/model/index.ts
@@ -48,6 +48,7 @@ import {MicroCenter} from './microcenter';
import {Mindfactory} from './mindfactory';
import {Newegg} from './newegg';
import {NeweggCa} from './newegg-ca';
+import {NewStore} from './new-store';
import {Notebooksbilliger} from './notebooksbilliger';
import {Novatech} from './novatech';
import {Nvidia} from './nvidia';
@@ -123,6 +124,7 @@ export const storeList = new Map([
[Mindfactory.name, Mindfactory],
[Newegg.name, Newegg],
[NeweggCa.name, NeweggCa],
+ [NewStore.name, NewStore],
[Notebooksbilliger.name, Notebooksbilliger],
[Novatech.name, Novatech],
[Nvidia.name, Nvidia],
```
After that, you're pretty much set. If you plan on adding new models or series, you will have to add them to `src/store/model/store.ts`.
Here's an example:
```diff
--- a/src/store/model/store.ts
+++ b/src/store/model/store.ts
@@ -23,6 +23,7 @@ export type Brand =
| 'kfa2'
| 'microsoft'
| 'msi'
+ | 'new brand'
| 'nvidia'
| 'palit'
| 'pny'
@@ -37,6 +38,7 @@ export type Series =
| '3070'
| '3080'
| '3090'
+ | 'new series'
| 'rx6800'
| 'rx6800xt'
| 'rx6900xt'
@@ -83,6 +85,7 @@ export type Model =
| 'ichill x2'
| 'ichill x3'
| 'ichill x4'
+ | 'new model'
| 'nitro+'
| 'nitro oc se'
| 'nitro oc'
```
And voila! You're done! If you'd like to contribute to the project, feel free to create a [Pull Request](https://github.com/jef/streetmerchant/compare)! Don't forget to add the store (and brand, model, and series if you added) to the `README.md`.
???+ tip
Here's an [example](https://github.com/jef/streetmerchant/commit/af96c5f2e808af7496f3c3299e4cf173105de48b).
## Creating a Discord webhook
Take a look at Discord's [Intro to Webhooks](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks), that should get you going.
This is the main portion:
![image](https://user-images.githubusercontent.com/12074633/101225522-a4d2bf00-365f-11eb-8c35-d0f013e561d6.png)
![image](https://user-images.githubusercontent.com/12074633/101225550-b87e2580-365f-11eb-8be6-48b324b37916.png)
Use the full URL that you just copied and set that value to `DISOCRD_WEB_HOOK`.
+50
View File
@@ -0,0 +1,50 @@
# Troubleshoot
## Captcha issues
### Option 1
If you're running into _a lot_ of captcha problems, be sure to update your user agent by searching ["what's my user agent" on Google](https://www.google.com/search?q=whats+my+user+agent).
![image](https://user-images.githubusercontent.com/12074633/101272427-07a88100-375a-11eb-9cb3-4e8783db6ae5.png)
You can update your user agent by using `USER_AGENT="your-result"`.
### Option 2
If you're _still_ running into problems, try running in headful mode: `HEADLESS="false"`.
This will open a browser and run streetmerchant. Note that this isn't a great solution for those running in a headless environment, i.e.: VPS, cloud, docker. Instead, it would be a good solution for those running on separate computer that won't be blocked by running in the background.
### Option 3
As a last case scenario, use `PUPPETEER_EXECUTABLE_PATH`. This will use your computer's Chrome browser. You can run this is headless or headful mode.
> From the puppeteer doc:
>
> `PUPPETEER_EXECUTABLE_PATH` - specify an executable path to be used in `puppeteer.launch`. See [puppeteer.launch([options])](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#puppeteerlaunchoptions) on how the executable path is inferred. **BEWARE**: Puppeteer is only [guaranteed to work](https://github.com/puppeteer/puppeteer/#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy) with the bundled Chromium, use at your own risk.
For example:
`.env`:
```
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable
```
This will vary depending on your operating system and install path. Please use full paths.
## macOS code signing
If you're getting a popup like this:
![image](https://user-images.githubusercontent.com/12074633/93616357-a36bf180-f9a2-11ea-82fa-da2a44807802.png)
Then run this command:
```sh
sudo codesign --force --deep --sign - ./node_modules/puppeteer/.local-chromium/mac-800071/chrome-mac/Chromium.app
```
???+ tip
The `mac-800071` may be different on your machine, so I would start from `./node_modules/puppeteer/.local-chromium` and auto complete from there.