Update index.js
Browse files
index.js
CHANGED
|
@@ -5,24 +5,11 @@ const bytes = require('bytes')
|
|
| 5 |
const morgan = require('morgan')
|
| 6 |
const express = require('express')
|
| 7 |
const puppeteer = require('puppeteer')
|
| 8 |
-
|
| 9 |
-
const cache = new Map()
|
| 10 |
|
| 11 |
const app = express()
|
| 12 |
app.set('json spaces', 4)
|
| 13 |
app.use(morgan('dev'))
|
| 14 |
-
/*
|
| 15 |
-
app.use(async (_, __, next) => {
|
| 16 |
-
for (let [url, data] of cache) {
|
| 17 |
-
const timeReset = 10 * 60 * 1000 // 10 min
|
| 18 |
-
if (Date.now() - data.lastFetch > timeReset) {
|
| 19 |
-
console.log(`Deleting url "${url}" from cache`)
|
| 20 |
-
cache.delete(url)
|
| 21 |
-
}
|
| 22 |
-
}
|
| 23 |
-
next()
|
| 24 |
-
})
|
| 25 |
-
*/
|
| 26 |
|
| 27 |
app.all('/', (req, res) => {
|
| 28 |
const obj = {}
|
|
@@ -48,7 +35,7 @@ app.get('/api', async (req, res) => {
|
|
| 48 |
if (!url) return res.json({ success: false, message: 'Input parameter url' })
|
| 49 |
if (!/https?:\/\//.test(url)) return res.json({ success: false, message: 'Invalid url' })
|
| 50 |
|
| 51 |
-
const data =
|
| 52 |
|
| 53 |
data.message ?
|
| 54 |
res.json({ success: false, message: data.message, result: data }) :
|
|
@@ -71,16 +58,16 @@ function formatSize(num) {
|
|
| 71 |
}
|
| 72 |
|
| 73 |
async function ssyoutube(url) {
|
| 74 |
-
const browser = await
|
| 75 |
-
headless:
|
| 76 |
executablePath: '/usr/bin/chromium',
|
| 77 |
args: ['--no-sandbox']
|
| 78 |
})
|
| 79 |
|
| 80 |
-
const
|
| 81 |
-
|
|
|
|
| 82 |
await page.goto('https://ssyoutube.com/')
|
| 83 |
-
await page.waitForSelector('#id_url')
|
| 84 |
await page.type('#id_url', url)
|
| 85 |
await page.click('#search')
|
| 86 |
|
|
@@ -88,7 +75,6 @@ async function ssyoutube(url) {
|
|
| 88 |
res.url().includes('ssyoutube.com/api') && res.request().resourceType() === 'xhr')
|
| 89 |
|
| 90 |
const json = await response.json()
|
| 91 |
-
// cache.set(url, Object.assign(json, { lastFetch: Date.now() }))
|
| 92 |
await browser.close()
|
| 93 |
|
| 94 |
return json
|
|
|
|
| 5 |
const morgan = require('morgan')
|
| 6 |
const express = require('express')
|
| 7 |
const puppeteer = require('puppeteer')
|
| 8 |
+
const { chromium } = require('playwright')
|
|
|
|
| 9 |
|
| 10 |
const app = express()
|
| 11 |
app.set('json spaces', 4)
|
| 12 |
app.use(morgan('dev'))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
app.all('/', (req, res) => {
|
| 15 |
const obj = {}
|
|
|
|
| 35 |
if (!url) return res.json({ success: false, message: 'Input parameter url' })
|
| 36 |
if (!/https?:\/\//.test(url)) return res.json({ success: false, message: 'Invalid url' })
|
| 37 |
|
| 38 |
+
const data = await ssyoutube(url)
|
| 39 |
|
| 40 |
data.message ?
|
| 41 |
res.json({ success: false, message: data.message, result: data }) :
|
|
|
|
| 58 |
}
|
| 59 |
|
| 60 |
async function ssyoutube(url) {
|
| 61 |
+
const browser = await chromium.launch({
|
| 62 |
+
headless: true,
|
| 63 |
executablePath: '/usr/bin/chromium',
|
| 64 |
args: ['--no-sandbox']
|
| 65 |
})
|
| 66 |
|
| 67 |
+
const context = await browser.newContext()
|
| 68 |
+
const page = await context.newPage()
|
| 69 |
+
|
| 70 |
await page.goto('https://ssyoutube.com/')
|
|
|
|
| 71 |
await page.type('#id_url', url)
|
| 72 |
await page.click('#search')
|
| 73 |
|
|
|
|
| 75 |
res.url().includes('ssyoutube.com/api') && res.request().resourceType() === 'xhr')
|
| 76 |
|
| 77 |
const json = await response.json()
|
|
|
|
| 78 |
await browser.close()
|
| 79 |
|
| 80 |
return json
|