diff options
| author | FivePixels <37427166+FivePixels@users.noreply.github.com> | 2021-04-10 22:40:50 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-10 22:40:50 -0500 |
| commit | 0007b7e4fb5b48334b35e1fd77c2bcf814089f7a (patch) | |
| tree | b3337895a40e0c7b047089fbdcbf32023732683b /src/scraper | |
| parent | d3d9f7e6b69a84ea4da04609642f309134f0a346 (diff) | |
| parent | 74598733bcc7b39b8a9b6521195545c543e38850 (diff) | |
| download | StreamFinder-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')
| -rw-r--r-- | src/scraper/scrape.js | 72 |
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(); } |
