PageSourceSearch

https://downsload.netlify.app/

html downsload.netlify.app collected 2026-10-03 10:39:46 UTC 15,119 bytes, 300 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5<!-- This site is hosted on Netlify. Anyone can build and deploy a site
6     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=133cf958-bd57-4f54-b7c2-49dc553e5356
7     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
8    <meta name="viewport" content="width=device-width, initial-scale=1.0">
9    
10    <!-- Basic SEO -->
11    <title id="site-title">Download Free Software, Games & Tools - Latest Updates 2025</title>
12    <meta name="description" id="meta-desc" content="Safe and fast download for the latest free software, PC games, and media tools. High-quality updates and secure links.">
13    <meta name="keywords" content="free software, pc games, tools download, media applications, latest software, safe download">
14    <meta name="robots" content="index, follow">
15    <link rel="icon" type="image/png" href="https://download.com.vn/favicon.228.png">
16
17    <!-- Open Graph (Facebook, Zalo, LinkedIn) -->
18    <meta property="og:site_name" content="Download Free Software">
19    <meta property="og:title" id="og-title" content="Download Free Software, Games & Tools">
20    <meta property="og:description" id="og-desc" content="Safe and fast download for the latest free software, PC games, and media tools.">
21    <meta property="og:image" id="og-image" content="https://i.ytimg.com/vi/BTB86HeZVwk/sddefault.jpg">
22    <meta property="og:type" content="website">
23    <meta property="og:url" content="https://downsload.netlify.app">
24
25    <!-- Twitter Card -->
26    <meta name="twitter:card" content="summary_large_image">
27    <meta name="twitter:title" id="tw-title" content="Download Free Software, Games & Tools">
28    <meta name="twitter:description" id="tw-desc" content="Safe and fast download for the latest free software, PC games, and media tools.">
29    <meta name="twitter:image" id="tw-image" content="https://i.ytimg.com/vi/BTB86HeZVwk/sddefault.jpg">
30
31    <!-- Font Awesome for Icons -->
32    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
33    <link rel="stylesheet" href="static/styles.css">
34    
35    <style>
36        .software-detail img { max-width: 100%; border-radius: 8px; margin-bottom: 15px; }
37        .description { line-height: 1.6; margin: 20px 0; }
38        .backup-download-link strong { color: #d9534f; font-size: 20px; }
39        .related-softwares { margin-top: 30px; padding: 15px; background: #f4f4f4; border-radius: 5px; }
40        .category-tags a { color: #007bff; text-decoration: none; margin-right: 5px; }
41
42        /* SHARE BUTTONS CSS */
43        .share-section { margin: 25px 0; padding: 15px 0; border-top: 1px solid #eee; border-bottom: 1px solid #eee; }
44        .share-label { font-weight: bold; margin-bottom: 10px; display: block; color: #444; font-size: 14px; }
45        .share-buttons { display: flex; flex-wrap: wrap; gap: 8px; }
46        .share-btn {
47            width: 38px; height: 38px; border-radius: 50%; display: flex;
48            align-items: center; justify-content: center; color: #fff !important;
49            text-decoration: none; transition: all 0.3s ease; font-size: 16px;
50        }
51        .share-btn:hover { transform: translateY(-3px); opacity: 0.9; }
52        .bg-fb { background: #3b5998; }
53        .bg-tw { background: #000000; } /* X (Twitter) */
54        .bg-li { background: #0077b5; }
55        .bg-zl { background: #0068ff; font-weight: bold; font-size: 11px; }
56        .bg-pn { background: #bd081c; }
57        .bg-tg { background: #0088cc; }
58        .bg-wa { background: #25d366; }
59        .bg-cp { background: #6c757d; cursor: pointer; }
60    </style>
61</head>
62<body>
63    <header>
64        <div class="header-content">
65            <div class="logo">Download Free Software</div>
66            <nav><a href="/">Home</a></nav>
67        </div>
68    </header>
69
70    <div class="main-container">
71        <!-- LEFT SIDEBAR -->
72        <aside class="sidebar sidebar-left">
73            <h2>Categories</h2>
74            <ul id="cat-list"></ul>
75        </aside>
76
77        <!-- MAIN CONTENT -->
78        <main class="content">
79            <form onsubmit="doSearch(event)">
80                <div class="search-box">
81                    <input type="text" id="q" placeholder="Search by title or tag…">
82                    <button type="submit">Search</button>
83                </div>
84            </form>
85
86            <div id="main-content">
87                <!-- Data will be loaded here via JavaScript -->
88            </div>
89
90            <div id="pagination" class="pagination"></div>
91        </main>
92
93        <!-- RIGHT SIDEBAR -->
94        <aside class="sidebar sidebar-right">
95            <h2><center>View Online</center></h2>
96            <center>
97                
97<script type="text/javascript" src="https://cdn.livetrafficfeed.com/static/flag-counter/live.v2.js?row=10&col=3&cod=1&flg=1&bg=ffffff&txt=000000&ro=0&tz=America%2FNew_York"></script>
97
98            </center>
99            <div class="top-finder">
100                <h3><center>🔍 Top Finder</center></h3>
101                <p class="tags" id="top-tags"></p>
102            </div>
103        </aside>
104    </div>
105
106    <footer class="site-footer">
107        <div class="footer-content">
108            <p>&copy; 2025 Download Free Software | All Rights Reserved.</p>
109            <p id="footer-tags"></p>
110        </div>
111    </footer>
112
113    
113<script>
114        let softwares = [];
115        const PER_PAGE = 25;
116
117        // INITIALIZE: Merge data.json and data1.json
118        async function init() {
119            const files = ['data.json', 'data1.json']; 
120            try {
121                const fetchPromises = files.map(file => 
122                    fetch(file).then(res => {
123                        if (!res.ok) throw new Error(`Could not load file: ${file}`);
124                        return res.json();
125                    })
126                );
127                const results = await Promise.all(fetchPromises);
128                softwares = results.flat();
129                console.log("Total softwares loaded:", softwares.length);
130                render(); 
131            } catch (error) {
132                console.error("JSON Error:", error);
133                document.getElementById('main-content').innerHTML = "<h2>Error loading data files!</h2>";
134            }
135        }
136
137        function render() {
138            const params = new URLSearchParams(window.location.search);
139            const id = params.get('id');
140            const search = params.get('search') || '';
141            const cat = params.get('category') || '';
142            const page = parseInt(params.get('page')) || 1;
143
144            renderSidebars();
145
146            if (id) {
147                showDetail(id);
148            } else {
149                showList(search, cat, page);
150            }
151        }
152
153        // LIST PAGE
154        function showList(q, cat, page) {
155            let filtered = softwares.filter(s => {
156                const mSearch = s.title.toLowerCase().includes(q.toLowerCase()) || (s.tags && s.tags.some(t => t.toLowerCase().includes(q.toLowerCase())));
157                const mCat = cat === '' || (s.categories && s.categories.includes(cat));
158                return mSearch && mCat;
159            });
160
161            const start = (page - 1) * PER_PAGE;
162            const items = filtered.slice(start, start + PER_PAGE);
163
164            let html = '<div class="software-list">';
165            items.forEach(s => {
166                const cleanId = s.id.replace(/\s+/g, '_').replace(/[\[\]|]/g, '');
167                const imgUrl = (s.image_urls && s.image_urls.length > 0) ? s.image_urls[0] : 'https://via.placeholder.com/150';
168                html += `
169                <div class="software-card">
170                    <a href="?id=${cleanId}">
171                        <img src="${imgUrl}" alt="${s.title}">
172                        <div class="software-title">${s.title.substring(0,25)}...</div>
173                    </a>
174                </div>`;
175            });
176            html += '</div>';
177            document.getElementById('main-content').innerHTML = html;
178
179            let pgHtml = '';
180            if (page > 1) pgHtml += `<a href="?page=${page-1}&search=${q}&category=${cat}" class="pagination-btn">Previous</a>`;
181            if (start + PER_PAGE < filtered.length) pgHtml += `<a href="?page=${page+1}&search=${q}&category=${cat}" class="pagination-btn">Next</a>`;
182            document.getElementById('pagination').innerHTML = pgHtml;
183        }
184
185        // DETAIL PAGE
186        function showDetail(id) {
187            const s = softwares.find(item => item.id.replace(/\s+/g, '_').replace(/[\[\]|]/g, '') === id);
188            if (!s) {
189                document.getElementById('main-content').innerHTML = "<h2>Software not found!</h2>";
190                return;
191            }
192
193            // Share Information
194            const currentUrl = window.location.href;
195            const encodedUrl = encodeURIComponent(currentUrl);
196            const encodedTitle = encodeURIComponent("Download " + s.title + " Free - Latest 2025");
197            const firstImg = Array.isArray(s.image_urls) ? s.image_urls[0] : s.image_urls;
198
199            document.title = "Download " + s.title + " Free - Latest Version";
200            if(document.getElementById('meta-desc')) document.getElementById('meta-desc').setAttribute("content", (s.description || "").substring(0, 160));
201
202            document.getElementById('pagination').innerHTML = '';
203            window.scrollTo(0, 0);
204
205            const images = Array.isArray(s.image_urls) ? s.image_urls : [s.image_urls];
206            let related = softwares.filter(item => item.id !== s.id).sort(() => 0.5 - Math.random()).slice(0, 5);
207
208            let html = `
209            <div class="software-detail">
210                <h1>${s.title}</h1>
211
212                <!-- SHARE FUNCTIONALITY -->
213                <div class="share-section">
214                    <span class="share-label"><i class="fa fa-share-alt"></i> SHARE THIS POST:</span>
215                    <div class="share-buttons">
216                        <a href="https://www.facebook.com/sharer/sharer.php?u=${encodedUrl}" target="_blank" class="share-btn bg-fb" title="Facebook"><i class="fab fa-facebook-f"></i></a>
217                        <a href="https://twitter.com/intent/tweet?url=${encodedUrl}&text=${encodedTitle}" target="_blank" class="share-btn bg-tw" title="X (Twitter)"><i class="fab fa-x-twitter"></i></a>
218                        <a href="https://sp.zalo.me/share/base?url=${encodedUrl}" target="_blank" class="share-btn bg-zl" title="Zalo">Zalo</a>
219                        <a href="https://www.linkedin.com/sharing/share-offsite/?url=${encodedUrl}" target="_blank" class="share-btn bg-li" title="LinkedIn"><i class="fab fa-linkedin-in"></i></a>
220                        <a href="https://pinterest.com/pin/create/button/?url=${encodedUrl}&media=${firstImg}&description=${encodedTitle}" target="_blank" class="share-btn bg-pn" title="Pinterest"><i class="fab fa-pinterest"></i></a>
221                        <a href="https://t.me/share/url?url=${encodedUrl}&text=${encodedTitle}" target="_blank" class="share-btn bg-tg" title="Telegram"><i class="fab fa-telegram-plane"></i></a>
222                        <a href="https://api.whatsapp.com/send?text=${encodedTitle}%20${encodedUrl}" target="_blank" class="share-btn bg-wa" title="WhatsApp"><i class="fab fa-whatsapp"></i></a>
223                        <div onclick="copyLink('${currentUrl}')" class="share-btn bg-cp" title="Copy Link"><i class="fa fa-link"></i></div>
224                    </div>
225                </div>
226
227                <div class="image-gallery">
228                    ${images.map(img => `<img src="${img}" class="software-image" onerror="this.src='https://via.placeholder.com/500x300?text=Image+Error'">`).join('')}
229                </div>
230                <div class="description">${(s.description || "").replace(/\n/g, '<br>')}</div>
231                
232                <div class="download-section">
233                    ${(s.episodes || []).map((ep, index) => `
234                        <div style="margin-bottom:20px;">
235                            <a href="${ep.download_url}" class="download-link" target="_blank">
236                                <img src="static/dl.png" width="300" onerror="this.src='https://img001.prntscr.com/file/img001/xNiHSPB_S3mikYlribHR2Q.png'">
237                            </a>
238                            <p style="color:red; font-weight:bold;">If the link above is broken, please use the backup link below:</p>
239                            <a href="#" onclick="openEdge(event, '${ep.download_url1 || ep.download_url}')" class="backup-download-link">
240                                <strong>➡ Backup Download Link ${index + 1} ⬅</strong>
241                            </a>
242                        </div>
243                    `).join('')}
244                </div>
245
246                <div class="category-tags">
247                    <h3>🏷 Tags:</h3>
248                    <p class="tags">${(s.tags || []).map(t => `<a href="?search=${t}">${t}</a>`).join(', ')}</p>
249                    
250                    <div class="related-softwares">
251                        <h4>📖 Related Software 📖</h4>
252                        ${related.map(r => `<a href="?id=${r.id.replace(/\s+/g, '_')}" style="display:block; margin:5px 0; color:#007bff;">${r.title}</a>`).join('')}
253                    </div>
254                </div>
255                <br><a href="/" class="back-button" onclick="window.location.href='/'; return false;">🏠 Home</a>
256            </div>`;
257            
258            document.getElementById('main-content').innerHTML = html;
259        }
260
261        function renderSidebars() {
262            const cats = {};
263            const tags = {};
264            softwares.forEach(s => {
265                if(s.categories) s.categories.forEach(c => cats[c] = (cats[c] || 0) + 1);
266                if(s.tags) s.tags.forEach(t => tags[t] = (tags[t] || 0) + 1);
267            });
268
269            document.getElementById('cat-list').innerHTML = Object.keys(cats).map(c => 
270                `<li><a href="?category=${c}">📂 ${c} (${cats[c]})</a></li>`
271            ).join('');
272
273            const topTagsHtml = Object.keys(tags).slice(0, 30).map(t => `<a href="?search=${t}">${t}</a>`).join(', ');
274            document.getElementById('top-tags').innerHTML = topTagsHtml;
275            document.getElementById('footer-tags').innerHTML = topTagsHtml;
276        }
277
278        function doSearch(e) {
279            e.preventDefault();
280            window.location.href = "?search=" + encodeURIComponent(document.getElementById('q').value);
281        }
282
283        function openEdge(e, url) {
284            e.preventDefault();
285            window.location.href = "microsoft-edge:" + url;
286        }
287
288        // Copy Link function
289        function copyLink(text) {
290            navigator.clipboard.writeText(text).then(() => {
291                alert("Link copied to clipboard!");
292            }).catch(err => {
293                console.error('Copy error: ', err);
294            });
295        }
296
297        window.onload = init;
298    </script>
298
299</body>
300</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.