Reaperxxxx commited on
Commit
e4e188f
Β·
verified Β·
1 Parent(s): 1725ad3

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +24 -27
server.js CHANGED
@@ -25,7 +25,7 @@ app.get("/search", async (req, res) => {
25
  console.log(`Chromium Path: ${chromiumPath || "Using Playwright's default"}`);
26
 
27
  const browser = await chromium.launch({
28
- headless: false, // Keep it visible for debugging
29
  executablePath: chromiumPath || undefined,
30
  args: ["--no-sandbox", "--disable-blink-features=AutomationControlled", "--disable-dev-shm-usage"]
31
  });
@@ -37,7 +37,7 @@ app.get("/search", async (req, res) => {
37
  const page = await context.newPage();
38
 
39
  try {
40
- console.log(`Searching for: ${movieName}`);
41
  await page.goto("https://www.fzmovies.net/csearch.php", { waitUntil: "domcontentloaded", timeout: 60000 });
42
 
43
  await page.fill("#searchname", movieName);
@@ -46,61 +46,54 @@ app.get("/search", async (req, res) => {
46
  page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 60000 })
47
  ]);
48
 
49
- // Step 1: Get first movie result (title & page link)
50
  const movieData = await page.evaluate(() => {
51
  const firstResult = document.querySelector(".mainbox a");
52
  return firstResult ? { title: firstResult.innerText.trim(), link: firstResult.href } : null;
53
  });
54
 
55
  if (!movieData) {
56
- console.log("No movie found!");
57
  await browser.close();
58
  return res.status(404).json({ error: "Movie not found" });
59
  }
60
 
61
- console.log(`Movie Found: ${movieData.title}`);
62
  await page.goto(movieData.link, { waitUntil: "domcontentloaded", timeout: 60000 });
63
 
64
- // Step 2: Extract the LAST download1.php link
65
- const downloadPageLink = await page.evaluate(() => {
66
- const baseURL = "https://www.fzmovies.net/";
67
- const links = document.querySelectorAll('a[href*="download1.php?downloadoptionskey="]');
68
- return links.length ? baseURL + links[links.length - 1].getAttribute("href") : null;
69
- });
70
-
71
- if (!downloadPageLink) {
72
- await browser.close();
73
- return res.status(404).json({ error: "Download link not found" });
74
- }
75
 
76
- await page.goto(downloadPageLink, { waitUntil: "domcontentloaded", timeout: 60000 });
77
-
78
- // Step 3: Extract "download.php" page link (LAST one)
79
  const finalDownloadPage = await page.evaluate(() => {
80
- const baseURL = "https://www.fzmovies.net/";
81
  const links = document.querySelectorAll('a[href*="download.php?downloadkey="]');
82
- return links.length ? baseURL + links[links.length - 1].getAttribute("href") : null;
83
  });
84
 
85
  if (!finalDownloadPage) {
 
86
  await browser.close();
87
  return res.status(404).json({ error: "Final download page not found" });
88
  }
89
 
90
  await page.goto(finalDownloadPage, { waitUntil: "domcontentloaded", timeout: 60000 });
91
 
92
- // Step 4: Extract LAST redirection link (dlink.php)
93
  let redirectedDownloadLink = await page.evaluate(() => {
94
  const links = document.querySelectorAll('a[href*="dlink.php?id="]');
95
  return links.length ? links[links.length - 1].href : null;
96
  });
97
 
98
  if (!redirectedDownloadLink) {
 
99
  await browser.close();
100
  return res.status(404).json({ error: "Redirected download link not found" });
101
  }
102
 
103
- // **Step 5: Handle Expired Session - Refresh & Retry**
 
 
104
  let finalDownloadURL = null;
105
  let retryAttempts = 3;
106
 
@@ -109,18 +102,21 @@ app.get("/search", async (req, res) => {
109
  const downloadPage = await context.newPage();
110
  await downloadPage.goto(redirectedDownloadLink, { waitUntil: "networkidle", timeout: 60000 });
111
 
112
- // If session expired, refresh & retry
113
  if (await downloadPage.evaluate(() => document.body.innerText.includes("Your previous session has expired"))) {
114
- console.warn("Session expired! Restarting process...");
115
  await page.goto(movieData.link, { waitUntil: "domcontentloaded", timeout: 60000 });
116
 
 
 
 
117
  redirectedDownloadLink = await page.evaluate(() => {
118
  const links = document.querySelectorAll('a[href*="dlink.php?id="]');
119
  return links.length ? links[links.length - 1].href : null;
120
  });
121
 
122
  if (!redirectedDownloadLink) {
123
- throw new Error("Failed to regenerate download link.");
124
  }
125
  }
126
 
@@ -133,6 +129,7 @@ app.get("/search", async (req, res) => {
133
  }
134
 
135
  if (!finalDownloadURL) {
 
136
  await browser.close();
137
  return res.status(500).json({ error: "Failed to retrieve final download link" });
138
  }
@@ -154,7 +151,7 @@ app.get("/search", async (req, res) => {
154
  const cleanedDownloadURL = finalDownloadURL.match(/(.*\.(mp4|mkv|avi|mov))/i);
155
  const finalLink = cleanedDownloadURL ? cleanedDownloadURL[1] : finalDownloadURL;
156
 
157
- console.log(`βœ… Cleaned Movie Title: ${movieTitle}`);
158
  console.log(`βœ… Fresh Download Link: ${finalLink}`);
159
 
160
  await browser.close();
 
25
  console.log(`Chromium Path: ${chromiumPath || "Using Playwright's default"}`);
26
 
27
  const browser = await chromium.launch({
28
+ headless: true,
29
  executablePath: chromiumPath || undefined,
30
  args: ["--no-sandbox", "--disable-blink-features=AutomationControlled", "--disable-dev-shm-usage"]
31
  });
 
37
  const page = await context.newPage();
38
 
39
  try {
40
+ console.log(`πŸ” Searching for: ${movieName}`);
41
  await page.goto("https://www.fzmovies.net/csearch.php", { waitUntil: "domcontentloaded", timeout: 60000 });
42
 
43
  await page.fill("#searchname", movieName);
 
46
  page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 60000 })
47
  ]);
48
 
49
+ // **Step 1: Get first movie result link**
50
  const movieData = await page.evaluate(() => {
51
  const firstResult = document.querySelector(".mainbox a");
52
  return firstResult ? { title: firstResult.innerText.trim(), link: firstResult.href } : null;
53
  });
54
 
55
  if (!movieData) {
56
+ console.log("❌ No movie found!");
57
  await browser.close();
58
  return res.status(404).json({ error: "Movie not found" });
59
  }
60
 
61
+ console.log(`βœ… Movie Found: ${movieData.title}`);
62
  await page.goto(movieData.link, { waitUntil: "domcontentloaded", timeout: 60000 });
63
 
64
+ // **Step 2: Click "Download" to regenerate session**
65
+ await page.click('a[href*="download1.php?downloadoptionskey="]');
66
+ await page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 60000 });
 
 
 
 
 
 
 
 
67
 
68
+ // **Step 3: Extract the last download.php link**
 
 
69
  const finalDownloadPage = await page.evaluate(() => {
 
70
  const links = document.querySelectorAll('a[href*="download.php?downloadkey="]');
71
+ return links.length ? links[links.length - 1].href : null;
72
  });
73
 
74
  if (!finalDownloadPage) {
75
+ console.log("❌ No final download page found!");
76
  await browser.close();
77
  return res.status(404).json({ error: "Final download page not found" });
78
  }
79
 
80
  await page.goto(finalDownloadPage, { waitUntil: "domcontentloaded", timeout: 60000 });
81
 
82
+ // **Step 4: Extract redirection link (dlink.php)**
83
  let redirectedDownloadLink = await page.evaluate(() => {
84
  const links = document.querySelectorAll('a[href*="dlink.php?id="]');
85
  return links.length ? links[links.length - 1].href : null;
86
  });
87
 
88
  if (!redirectedDownloadLink) {
89
+ console.log("❌ No redirected download link found!");
90
  await browser.close();
91
  return res.status(404).json({ error: "Redirected download link not found" });
92
  }
93
 
94
+ console.log(`πŸ”„ Redirecting to fresh session: ${redirectedDownloadLink}`);
95
+
96
+ // **Step 5: Refresh session & retrieve working link**
97
  let finalDownloadURL = null;
98
  let retryAttempts = 3;
99
 
 
102
  const downloadPage = await context.newPage();
103
  await downloadPage.goto(redirectedDownloadLink, { waitUntil: "networkidle", timeout: 60000 });
104
 
105
+ // **Check for session expiration message**
106
  if (await downloadPage.evaluate(() => document.body.innerText.includes("Your previous session has expired"))) {
107
+ console.warn("⚠️ Session expired! Restarting...");
108
  await page.goto(movieData.link, { waitUntil: "domcontentloaded", timeout: 60000 });
109
 
110
+ await page.click('a[href*="download1.php?downloadoptionskey="]');
111
+ await page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 60000 });
112
+
113
  redirectedDownloadLink = await page.evaluate(() => {
114
  const links = document.querySelectorAll('a[href*="dlink.php?id="]');
115
  return links.length ? links[links.length - 1].href : null;
116
  });
117
 
118
  if (!redirectedDownloadLink) {
119
+ throw new Error("❌ Failed to regenerate session-based download link.");
120
  }
121
  }
122
 
 
129
  }
130
 
131
  if (!finalDownloadURL) {
132
+ console.log("❌ Final download link retrieval failed!");
133
  await browser.close();
134
  return res.status(500).json({ error: "Failed to retrieve final download link" });
135
  }
 
151
  const cleanedDownloadURL = finalDownloadURL.match(/(.*\.(mp4|mkv|avi|mov))/i);
152
  const finalLink = cleanedDownloadURL ? cleanedDownloadURL[1] : finalDownloadURL;
153
 
154
+ console.log(`βœ… Fresh Movie Title: ${movieTitle}`);
155
  console.log(`βœ… Fresh Download Link: ${finalLink}`);
156
 
157
  await browser.close();