Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- judul : gatau
- fungsi : buat skrep JUDUL film ama sedikit metadata yg lagi trending di netflix
- base : https://www.netflix.com/id
- last update : 8 juli 2025, 13:00
- note : gw saranin result nya di cache ajah, soalnya
- sekali fetch itu ukurannya bisa 3 mb
- mungkin kasih cache 30 menitan, makek fs ajah.
- atau suka suka kamuu.. bikin logic sendiri :v
- oh ya bisa ubah religion id ama english, ubah"
- ajah tuh path url nya. yg sementara gw makek id
- btw sorry kode gw style nya single function terus T^T
- by : wolep
- */
- const netflixTrending = async () => {
- const religion = [
- "/id",
- "/id-en"
- ]
- const netflixUrl = "https://www.netflix.com" + religion[0] // ganti ke 1 kalau mau yang english :v
- const headers = {
- "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
- "accept-encoding": "gzip, deflate, br, zstd",
- "accept-language": "en-GB,en;q=0.9,en-US;q=0.8",
- "cache-control": "no-cache",
- "pragma": "no-cache",
- "priority": "u=0, i",
- "sec-ch-ua": "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Microsoft Edge\";v=\"138\"",
- "sec-ch-ua-mobile": "?0",
- "sec-ch-ua-model": "\"\"",
- "sec-ch-ua-platform": "\"Windows\"",
- "sec-ch-ua-platform-version": "\"15.0.0\"",
- "sec-fetch-dest": "document",
- "sec-fetch-mode": "navigate",
- "sec-fetch-site": "none",
- "sec-fetch-user": "?1",
- "upgrade-insecure-requests": "1",
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0"
- }
- const response = await fetch(netflixUrl, { headers })
- if (!response.ok) throw Error(`waduh, request nya enggak ok bro! ${response.status} ${response.statusText}\nnih isinya\n${await response.text()}`)
- const html = await response.text()
- // boleh di hapus commented code nya yg dibawah ini
- // const FILE_PATH = "./netflix.html"
- // fs.writeFileSync(FILE_PATH, html)
- // const html = fs.readFileSync(FILE_PATH, { encoding: "utf-8" })
- const jsonString = html.match(/reactContext = (.*?);/)?.[1]
- if (!jsonString) throw Error(`tidak menemukan data pada netflix`)
- const cleaned = jsonString.replace(/\\x([0-9A-Fa-f]{2})/g, (_, hex) =>
- String.fromCharCode(parseInt(hex, 16)))
- const json = JSON.parse(cleaned) // lu bisa langsung return nih json value, liat dah tuh bejibunnya json :v
- // atau lu pakek kode di bawah yang sudah gw bikin buat lu pakek UwU
- const movieAndShow = Object.entries(json.models.graphql.data).filter(v =>
- !v?.[1]?.__typename.match(/Genre|Query/))
- const result = movieAndShow.map(([_, v]) => {
- const genreList = v.coreGenres.edges.map(v => v.node.__ref)
- const mapped = {
- title: v.title,
- latestYear: v.latestYear,
- videoId: v.videoId,
- shortSynopsis: v.shortSynopsis,
- contentAdvisory: v.contentAdvisory.certificationValue,
- genre: genreList.map(v => json.models.graphql.data[v].name).join(", "),
- type: v.__typename,
- url: netflixUrl + "/title/" + v.videoId,
- poster: v["artwork({\"params\":{\"artworkType\":\"BOXSHOT\",\"dimension\":{\"width\":200},\"features\":{\"performNewContentCheck\":false,\"suppressTop10Badge\":true},\"format\":\"JPG\"}})"]?.url
- }
- return mapped
- })
- return result // tada :v
- }
- // cara pakai
- netflixTrending()
- .then(console.log)
- .catch(err => console.log(err))
- /* result
- [
- {
- title: 'Pengantin Setan',
- latestYear: 2025,
- videoId: 82023282,
- shortSynopsis: 'Terjebak dalam pernikahan yang sulit, Echa terhibur oleh kehadiran sesosok pria di mimpinya. Namun, ketenangan berubah jadi teror saat pria itu datang sebagai roh jahat.',
- contentAdvisory: '18+',
- genre: 'Horor',
- type: 'Movie',
- url: 'https://www.netflix.com/id/title/82023282',
- poster: 'https://occ-0-6710-64.1.nflxso.net/dnm/api/v6/mAcAr9TxZIVbINe88xb3Teg5_OA/AAAABdIIaadoJcHZEubq1c80hrLbS1nZATmZZ2veItUREEy6Nw5w9MifA-EdIDgJybj2lHlrklULC0QDY1dwbcod-70kmAXq797O8Tw.jpg?r=5f6'
- },
- .... (lagi 9 items objek)
- ]
- */
Add Comment
Please, Sign In to add comment