]> 472bisson.ca Git - c8518bb15a157e6f5dd27d62c2c6c343.git/commitdiff
(no commit message)
authorAndrea Draghetti <drego85@draghetti.it>
Mon, 2 Dec 2024 14:05:28 +0000 (15:05 +0100)
committerGitHub <noreply@github.com>
Mon, 2 Dec 2024 14:05:28 +0000 (15:05 +0100)
index.html [new file with mode: 0644]

diff --git a/index.html b/index.html
new file mode 100644 (file)
index 0000000..cc6baf3
--- /dev/null
@@ -0,0 +1,204 @@
+<!-- This tool generates a BitTorrent Magnet Link based on a given hash value and optionally a custom resource name. You can also provide the "hash" and "name" parameters as URL GET parameters, and they will be automatically filled into the form.
+
+Customize the trackers by editing the list below. These will be included in the generated magnet link to ensure better availability and downloading speed.
+
+Made with ♥ by Andrea Draghetti
+
+This file may be licensed under the terms of of the GNU General Public License Version 3 (the ``GPL''). -->
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Magnet Link Generator - Generate Custom Magnet Links for BitTorrent</title>
+
+<!-- Meta tags for SEO -->
+<meta name="description" content="Generate custom torrent magnet links quickly and easily. Enter an info hash and torrent name to create a personalized magnet link with the latest trackers for optimal download speed.">
+<meta name="keywords" content="Torrent Magnet Link Generator, BitTorrent Magnet Link, Custom Magnet Link, Torrent Hash Generator, Online Magnet Link Creator, BitTorrent Tracker, Torrent Generator">
+<meta name="author" content="Andrea Draghetti">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<!-- Open Graph / Facebook -->
+<meta property="og:type" content="website">
+<meta property="og:url" content="https://magnet.draghetti.it">
+<meta property="og:title" content="Torrent Magnet Link Generator - Generate Custom Magnet Links for BitTorrent">
+<meta property="og:description" content="Easily create a custom BitTorrent magnet link by providing an info hash and torrent name. Automatically includes top trackers for better download performance.">
+<meta property="og:image" content="https://magnet.draghetti.it/images/magnet-link-generator-thumbnail.png">
+
+<!-- Twitter -->
+<meta property="twitter:card" content="summary_large_image">
+<meta property="twitter:url" content="https://magnet.draghetti.it">
+<meta property="twitter:title" content="Torrent Magnet Link Generator - Generate Custom Magnet Links for BitTorrent">
+<meta property="twitter:description" content="Easily create a custom BitTorrent magnet link by providing an info hash and torrent name. Includes top trackers for faster downloads.">
+<meta property="twitter:image" content="https://magnet.draghetti.it/images/magnet-link-generator-thumbnail.png">
+
+<!-- Favicon -->
+<link rel="apple-touch-icon" sizes="180x180" href="https://magnet.draghetti.it/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="32x32" href="https://magnet.draghetti.it/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="https://magnet.draghetti.it/favicon-16x16.png">
+<link rel="manifest" href="https://magnet.draghetti.it/site.webmanifest">
+
+<!-- Bootstrap CSS (version 5.3.3) with integrity check -->
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css" integrity="sha512-jnSuA4Ss2PkkikSOLtYs8BlYIeeIK1h99ty4YfvRPAlzr377vr3CXDb7sb7eEEBYjDtcYj+AjBH3FLv5uSJuXg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
+
+</head>
+<body class="d-flex flex-column align-items-center bg-light min-vh-100">
+
+<div class="container bg-white shadow rounded p-4 mt-5">
+    <!-- Page title -->
+    <div class="text-center mb-4">
+        <h1 class="h4 fw-bold">BitTorrent Magnet Link Generator</h1>
+    </div>
+
+    <!-- Information section -->
+    <div class="text-secondary mb-4">
+        <p>This tool generates a BitTorrent Magnet Link based on a given hash value and optionally a custom resource name. You can also provide the "hash" and "name" parameters as URL GET parameters, and they will be automatically filled into the form.</p>
+        <p>Customize the trackers by editing the list below. These will be included in the generated magnet link to ensure better availability and downloading speed.</p>
+    </div>
+
+    <form name="form" onsubmit="update(); return false;">
+        <!-- Info hash input field -->
+        <div class="mb-3">
+            <label for="hash" class="form-label">Info Hash <small>(Mandatory)</small></label>
+            <input id="hash" type="text" class="form-control" placeholder="Enter the info hash" required>
+        </div>
+        
+        <!-- Torrent name input field -->
+        <div class="mb-3">
+            <label for="name" class="form-label">Resource Name <small>(Optional)</small></label>
+            <input id="name" type="text" class="form-control" placeholder="Enter the resource name">
+        </div>
+        
+        <!-- Generate button -->
+        <button type="submit" class="btn btn-primary w-100">Generate</button>
+        
+        <!-- Generated Magnet Link display section -->
+        <div class="mt-3">
+            <a href="magnet:" id="link" class="text-primary fw-bold">Magnet Link</a>:
+            <input id="link_text" type="text" class="form-control mt-2" readonly>
+        </div>
+
+        <!-- Trackers list for customization -->
+        <div class="mb-3 mt-3">
+            <label for="trackers" class="form-label">Trackers to include in the magnet link:</label>
+            <textarea id="trackers" class="form-control" rows="6">http://tracker.opentrackr.org:1337/announce
+udp://tracker.torrent.eu.org:451/announce</textarea>
+            <small class="form-text text-muted">These trackers are sourced from the <a href="https://github.com/ngosang/trackerslist" target="_blank">TrackersList project</a>.</small>
+        </div>
+    </form>
+</div>
+
+<!-- Footer with credit -->
+<footer class="text-center mt-auto py-3 text-muted">
+    BitTorrent Magnet Link Generator made with ♥ by <a href="https://www.andreadraghetti.it/" target="_blank">Andrea Draghetti</a>.
+</footer>
+
+<!-- Bootstrap JS and dependencies (version 5.3.3) with integrity check -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js" integrity="sha512-7Pi/otdlbbCR+LnW+F7PwFcSDJOuUJB3OxtEHbg4vSMvzvJjde4Po1v4BR9Gdc9aXNUNFVUY+SK51wWT8WF0Gg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
+
+
+<script type="text/javascript">
+    /* Function to retrieve URL GET parameters */
+    function getUrlParameter(name) {
+        name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
+        var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
+        var results = regex.exec(location.search);
+        return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')).trim();
+    }
+
+    /* Function to auto-fill form fields if GET parameters are provided */
+    async function autoFillForm() {
+        var hashValue = getUrlParameter('hash');
+        var nameValue = getUrlParameter('name');
+        
+        if (hashValue) {
+            document.getElementById("hash").value = hashValue.trim();
+        }
+        if (nameValue) {
+            document.getElementById("name").value = nameValue.trim();
+        }
+
+        // Wait for trackers to load before generating the link
+        await loadTrackers();
+
+        // Execute update only if hash is provided
+        if (hashValue) {
+            update();
+        }
+    }
+
+    /* Function to generate the magnet link */
+       function update() {
+           try {
+               var hashInput = document.getElementById("hash").value.trim().toUpperCase(); // Convert to uppercase
+               var nameInput = document.getElementById("name").value.trim();
+       
+               // Set `name` to `hash` if it is empty
+               if (hashInput && !nameInput) {
+                   document.getElementById("name").value = hashInput;
+                   nameInput = hashInput; // Update variable
+               }
+       
+               // Generate the magnet link
+               if (hashInput) {
+                   var trackers = document.getElementById("trackers").value.match(/[^\s\|]+:\/\/[^\s\|]+/g);
+                   var data = "magnet:" + "?xt=urn:btih:" + hashInput;
+       
+                   data += "&dn=" + encodeURIComponent(nameInput);
+       
+                   for (var t in trackers) {
+                       data += "&tr=" + encodeURIComponent(trackers[t]);
+                   }
+       
+                   document.getElementById("link").href = data;
+                   document.getElementById("link_text").value = data;
+               } else {
+                   // Clear the link_text field if hash is not present
+                   document.getElementById("link_text").value = '';
+               }
+           } catch (e) {
+               alert("exception: " + e);
+           }
+       }
+
+    /* Automatically fill the form on page load if GET parameters are present */
+    window.onload = autoFillForm;
+</script>
+
+<script type="text/javascript">
+    // Function to load trackers from the external URL
+    async function loadTrackers() {
+        const url = "https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt";
+        
+        try {
+            const response = await fetch(url);
+            
+            if (response.ok) {
+                // Get the trackers list as text
+                let trackersList = await response.text();
+                
+                // Remove empty lines
+                trackersList = trackersList
+                    .split('\n')              // Split into an array of lines
+                    .filter(line => line.trim() !== '') // Remove empty lines
+                    .join('\n');              // Rejoin into a single string
+                
+                document.getElementById("trackers").value = trackersList;
+            } else {
+                console.error("Failed to load trackers: " + response.status);
+            }
+        } catch (error) {
+            console.error("Error fetching trackers: ", error);
+        }
+    }
+
+    // Load trackers on page load
+    window.onload = function() {
+        autoFillForm(); // Existing function to autofill form fields if URL parameters are provided
+        loadTrackers(); // Load trackers from the external source
+    };
+</script>
+
+</body>
+</html>
\ No newline at end of file