summaryrefslogtreecommitdiff
path: root/src/scraper/scrape.js
diff options
context:
space:
mode:
authorFivePixels <37427166+FivePixels@users.noreply.github.com>2021-04-10 22:40:50 -0500
committerGitHub <noreply@github.com>2021-04-10 22:40:50 -0500
commit0007b7e4fb5b48334b35e1fd77c2bcf814089f7a (patch)
treeb3337895a40e0c7b047089fbdcbf32023732683b /src/scraper/scrape.js
parentd3d9f7e6b69a84ea4da04609642f309134f0a346 (diff)
parent74598733bcc7b39b8a9b6521195545c543e38850 (diff)
downloadStreamFinder-0007b7e4fb5b48334b35e1fd77c2bcf814089f7a.tar.xz
StreamFinder-0007b7e4fb5b48334b35e1fd77c2bcf814089f7a.zip
Merge pull request #3 from FivePixels/dylan
Complete implementation for check.js, complete scrape.js
Diffstat (limited to 'src/scraper/scrape.js')
-rw-r--r--src/scraper/scrape.js72
1 files changed, 47 insertions, 25 deletions
diff --git a/src/scraper/scrape.js b/src/scraper/scrape.js
index a24d1e8..605c234 100644
--- a/src/scraper/scrape.js
+++ b/src/scraper/scrape.js
@@ -1,32 +1,54 @@
const puppeteer = require('puppeteer');
-const mongodb = require('mongodb')
-
+const MongoClient = require('mongodb').MongoClient;
// Specifically for scraping
// Stores in database once finished scraping
-// query is the search string (title of movie or show) and the type (music, show, movie)
-// will be used
+// query is the movie or show name
+// type is the media type ("tv" for tv show or "movie")
-exports.performSearch = async function(query, type) {
- const browser = await puppeteer.launch({
- headless: true
- });
- const pages = await browser.pages();
- const page = pages[0];
- await page.goto('https://google.com');
- const searchBox = await page.$x("/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input");
- await searchBox[0].type(`${query} streaming`);
- await page.keyboard.press('Enter');
- await page.waitForNavigation();
- const resultsContainer = await page.$$('.r0VsPb')
- var streamingPlatforms;
- var streamingPrices;
- for (let i = 0; i < resultsContainer.length; i++) {
- streamingPlatforms = await resultsContainer[i].$$eval('.i3LlFf', nodes => nodes.map(n => n.innerText));
- streamingPrices = await resultsContainer[i].$$eval('.V8xno', nodes => nodes.map(n => n.innerText))
+exports.performSearch = async function (id, query, type) {
+ try {
+ const uri = "mongodb+srv://user0:8HL0NBINt6B8mIYF@cluster0.kfyrm.mongodb.net/StreamFinder?retryWrites=true&w=majority";
+ const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
+ await client.connect();
+ const database = client.db("db");
+ const tv = database.collection("tv");
+ const movie = database.collection('movie')
+ const browser = await puppeteer.launch({
+ headless: true
+ });
+ const pages = await browser.pages();
+ const page = pages[0];
+ await page.goto('https://google.com');
+ const searchBox = await page.$x("/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input");
+ await searchBox[0].type(`${query} ${type} streaming`);
+ await page.keyboard.press('Enter');
+ await page.waitForNavigation();
+ const resultsContainer = await page.$$('.r0VsPb')
+ var streamingPlatforms;
+ var streamingPrices;
+ for (let i = 0; i < resultsContainer.length; i++) {
+ streamingPlatforms = await resultsContainer[i].$$eval('.i3LlFf', nodes => nodes.map(n => n.innerText));
+ streamingPrices = await resultsContainer[i].$$eval('.V8xno', nodes => nodes.map(n => n.innerText))
+ }
+ if (type == "movie") {
+ await movie.insertOne({
+ title: query,
+ id: id,
+ service: streamingPlatforms,
+ price: streamingPrices
+ })
+ } else if (type == "tv") {
+ await tv.insertOne({
+ title: query,
+ id: id,
+ service: streamingPlatforms,
+ price: streamingPrices
+ })
+ }
+ await client.close()
+ await browser.close();
+ } catch (error) {
+ console.log(error)
}
- console.log(streamingPlatforms);
- console.log(streamingPrices);
- // do the database storage
- await browser.close();
}