בקשה | בניית תוסף לדפדפן כרום ליצירת קישור ישיר להורדה מקבצי דרייב
-
אשמח אם מישהו ממשתמשי הפורום המוכשרים יוכל לבנות תוסף לדפדפן כרום ליצירת קישור ישיר להורדה מקבצי דרייב, אולי בעזרת AI
גם, שהקישור הישיר יהיה כזה שיעבוד תמיד, (מה שהבנתי שלעיתים לאחר תקופה הקישור הישיר להורדה מפסיק לעבוד)
וכן, פונקציה נוספת בתוסף שיתן אופציה להטמעה קישור בהודעת מייל שיוריד את כל הקישורים המצורפים להודעה כקבצים נפרדים ולא כקובץ דחוס (כולל את הקישורים הישירים להורדה מהדרייב)תודה רבה
נ.ב. אולי כבר קיימים תוספים כאלו - אני בכ"א לא מצאתי... -
סליחה על ההקפצה...
אולי אם יש למישהו זמן מיותר - שיקח את זה כפרוייקט מעניין.
תודה -
אשמח אם מישהו ממשתמשי הפורום המוכשרים יוכל לבנות תוסף לדפדפן כרום ליצירת קישור ישיר להורדה מקבצי דרייב, אולי בעזרת AI
גם, שהקישור הישיר יהיה כזה שיעבוד תמיד, (מה שהבנתי שלעיתים לאחר תקופה הקישור הישיר להורדה מפסיק לעבוד)
וכן, פונקציה נוספת בתוסף שיתן אופציה להטמעה קישור בהודעת מייל שיוריד את כל הקישורים המצורפים להודעה כקבצים נפרדים ולא כקובץ דחוס (כולל את הקישורים הישירים להורדה מהדרייב)תודה רבה
נ.ב. אולי כבר קיימים תוספים כאלו - אני בכ"א לא מצאתי...@ישראל-אמיתי לא הבנתי. אתה רוצה קישור להורדה ישיר לקובץ בדרייב? אפשר לעשות את זה בקלות ולא צריך לזה תוסף כרום..
-
@ישראל-אמיתי לא הבנתי. אתה רוצה קישור להורדה ישיר לקובץ בדרייב? אפשר לעשות את זה בקלות ולא צריך לזה תוסף כרום..
@היפ-הופ
לא! אני רוצה תוסף שיעשה את הקישור בצורה אוטומטית מיד בהעתקת הקישור, ללא צורך להמיר את הקישור. -
@היפ-הופ
לא! אני רוצה תוסף שיעשה את הקישור בצורה אוטומטית מיד בהעתקת הקישור, ללא צורך להמיר את הקישור.@ישראל-אמיתי אם תרצה אני יכול לעבוד לך על זה בתשלום...
-
הנה סקריפט לViolentmonkey
לקח לי כמה דקות בודדות...
תהנה!@היפ-הופ סליחה על הגזילה
// ==UserScript== // @name Google Drive - Copy Direct Download Link // @namespace yaakov-drive-direct-link // @version 1.0 // @description מחליף את הקישור המועתק ב-Google Drive לקישור הורדה ישירה // @match https://drive.google.com/* // @grant unsafeWindow // @run-at document-start // ==/UserScript== (function () { 'use strict'; const w = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window; function extractFileId(rawUrl) { if (!rawUrl || typeof rawUrl !== 'string') return null; let text = rawUrl.trim().replace(/&/g, '&'); let url; try { url = new URL(text); } catch { return null; } const host = url.hostname.replace(/^www\./, ''); // רק קישורי Drive/Docs של גוגל if (!/^(drive|docs)\.google\.com$/.test(host)) return null; // קבצים "אמיתיים" של Drive: // https://drive.google.com/file/d/FILE_ID/view?usp=sharing let m = url.pathname.match(/\/file\/d\/([^/]+)/i); if (m) return m[1]; // פורמטים חלופיים: // https://drive.google.com/open?id=FILE_ID // https://drive.google.com/uc?export=download&id=FILE_ID const idFromQuery = url.searchParams.get('id'); if (idFromQuery) return idFromQuery; // לא להמיר Google Docs / Sheets / Slides if (/\/document\/d\/[^/]+/i.test(url.pathname)) return null; if (/\/spreadsheets\/d\/[^/]+/i.test(url.pathname)) return null; if (/\/presentation\/d\/[^/]+/i.test(url.pathname)) return null; if (/\/forms\/d\/[^/]+/i.test(url.pathname)) return null; return null; } function toDirectDownloadUrl(rawUrl) { const fileId = extractFileId(rawUrl); if (!fileId) return rawUrl; return `https://drive.google.com/uc?export=download&id=${encodeURIComponent(fileId)}`; } function patchClipboardWriteText() { const ClipboardCtor = w.Clipboard; if (!ClipboardCtor || !ClipboardCtor.prototype) return false; const proto = ClipboardCtor.prototype; if (proto.__directLinkPatched__) return true; const originalWriteText = proto.writeText; if (typeof originalWriteText !== 'function') return false; Object.defineProperty(proto, '__directLinkPatched__', { value: true, configurable: false, enumerable: false, writable: false }); proto.writeText = function (text) { const replaced = toDirectDownloadUrl(text); return originalWriteText.call(this, replaced); }; return true; } // ניסיון מיידי if (patchClipboardWriteText()) return; // ואם עדיין לא זמין - מנסים עוד קצת const retryTimer = w.setInterval(() => { if (patchClipboardWriteText()) { w.clearInterval(retryTimer); } }, 250); // לא להשאיר טיימר לנצח w.setTimeout(() => { w.clearInterval(retryTimer); }, 15000); })(); -
הנה סקריפט לViolentmonkey
לקח לי כמה דקות בודדות...
תהנה!@היפ-הופ סליחה על הגזילה
// ==UserScript== // @name Google Drive - Copy Direct Download Link // @namespace yaakov-drive-direct-link // @version 1.0 // @description מחליף את הקישור המועתק ב-Google Drive לקישור הורדה ישירה // @match https://drive.google.com/* // @grant unsafeWindow // @run-at document-start // ==/UserScript== (function () { 'use strict'; const w = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window; function extractFileId(rawUrl) { if (!rawUrl || typeof rawUrl !== 'string') return null; let text = rawUrl.trim().replace(/&/g, '&'); let url; try { url = new URL(text); } catch { return null; } const host = url.hostname.replace(/^www\./, ''); // רק קישורי Drive/Docs של גוגל if (!/^(drive|docs)\.google\.com$/.test(host)) return null; // קבצים "אמיתיים" של Drive: // https://drive.google.com/file/d/FILE_ID/view?usp=sharing let m = url.pathname.match(/\/file\/d\/([^/]+)/i); if (m) return m[1]; // פורמטים חלופיים: // https://drive.google.com/open?id=FILE_ID // https://drive.google.com/uc?export=download&id=FILE_ID const idFromQuery = url.searchParams.get('id'); if (idFromQuery) return idFromQuery; // לא להמיר Google Docs / Sheets / Slides if (/\/document\/d\/[^/]+/i.test(url.pathname)) return null; if (/\/spreadsheets\/d\/[^/]+/i.test(url.pathname)) return null; if (/\/presentation\/d\/[^/]+/i.test(url.pathname)) return null; if (/\/forms\/d\/[^/]+/i.test(url.pathname)) return null; return null; } function toDirectDownloadUrl(rawUrl) { const fileId = extractFileId(rawUrl); if (!fileId) return rawUrl; return `https://drive.google.com/uc?export=download&id=${encodeURIComponent(fileId)}`; } function patchClipboardWriteText() { const ClipboardCtor = w.Clipboard; if (!ClipboardCtor || !ClipboardCtor.prototype) return false; const proto = ClipboardCtor.prototype; if (proto.__directLinkPatched__) return true; const originalWriteText = proto.writeText; if (typeof originalWriteText !== 'function') return false; Object.defineProperty(proto, '__directLinkPatched__', { value: true, configurable: false, enumerable: false, writable: false }); proto.writeText = function (text) { const replaced = toDirectDownloadUrl(text); return originalWriteText.call(this, replaced); }; return true; } // ניסיון מיידי if (patchClipboardWriteText()) return; // ואם עדיין לא זמין - מנסים עוד קצת const retryTimer = w.setInterval(() => { if (patchClipboardWriteText()) { w.clearInterval(retryTimer); } }, 250); // לא להשאיר טיימר לנצח w.setTimeout(() => { w.clearInterval(retryTimer); }, 15000); })();
