diff --git a/yturlgen.js b/yturlgen.js
new file mode 100644
index 0000000..d02463c
--- /dev/null
+++ b/yturlgen.js
@@ -0,0 +1,83 @@
+// import required modules (npm install axios)
+const fs = require('fs');
+const axios = require('axios');
+const path = require('path');
+
+// set variables such as API and where the html file is stored
+const API_KEY = 'YOUR_YOUTUBE_DATA_API_KEY'; // Replace with your actual YouTube Data API key
+const htmlFilePath = path.join('/var/www/html', 'index.html'); // Set the file path to /var/www/html/index.html (or any other path you want, directory path and file name must be seperate in brackets)
+
+
+// inital math by "SpiritAxolotl" on GitHub (https://github.com/SpiritAxolotl)
+const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ0123456789-_".split("");
+const randomChar = () => {
+ return chars[Math.floor(Math.random() * chars.length)];
+};
+const xRandomChars = (n) => {
+ let out = "";
+ for (let i = 0; i < n; i++)
+ out += randomChar();
+ return out;
+};
+
+// Create URL from above math, post it to YouTube API using a GET request and check if the video is public and embeddable.
+const checkUrl = async (videoId) => {
+ const url = `https://www.googleapis.com/youtube/v3/videos?id=${videoId}&key=${API_KEY}&part=status`;
+ try {
+ const response = await axios.get(url);
+ if (response.data.items && response.data.items.length > 0) {
+ const videoStatus = response.data.items[0].status;
+ // Check if the video is public and embeddable
+ if (videoStatus.embeddable && videoStatus.privacyStatus === 'public') {
+ return true;
+ }
+ }
+ // If the bot is rate limited, produce an error message and wait for a while, otherwise continue
+ } catch (error) {
+ console.error('Error checking video ID:', error.message);
+ }
+ return false;
+};
+// print message in console listing each URL generated and if it is valid or not for debugging purposes.
+const generateAndCheckUrl = async () => {
+ while (true) {
+ const videoId = xRandomChars(11);
+ const url = `https://youtu.be/${videoId}`;
+ const isValid = await checkUrl(videoId);
+ if (isValid) {
+ console.log(`Valid URL: ${url}`);
+ appendToHtmlFile(url);
+ } else {
+ console.log(`Invalid URL: ${url}`);
+ }
+ }
+};
+// print message in console if the URL is appended to the HTML file or if an error occurs for debugging purposes.
+const appendToHtmlFile = (url) => {
+ const linkHtml = `${url}
\n`;
+ fs.appendFile(htmlFilePath, linkHtml, (err) => {
+ if (err) {
+ console.error('Error writing to HTML file:', err);
+ } else {
+ console.log('URL appended to HTML file:', url);
+ }
+ });
+};
+
+// Initialize HTML file with basic structure and a header
+fs.writeFile(htmlFilePath, '
for any concerns, contact rei@reiyua.lol\n
Valid URLs will be listed below:
\n', (err) => { + if (err) { + console.error('Error initializing HTML file:', err); + } else { + generateAndCheckUrl(); + } +}); + +// Ensure HTML file is properly closed with a and on process exit +process.on('exit', () => { + fs.appendFileSync(htmlFilePath, '