Google डिस्क लिंक से मेरे ऐप में संगीत कैसे स्ट्रीम करें और लिंक को सुलभ बनाएं?
एक वेबसाइट पर उपयोगकर्ता संगीत अपलोड करने में सक्षम हैं। यह संगीत मेरे Google ड्राइव खाते में अपलोड हो रहा है। उसके बाद निम्न लिंक प्रारूप को डेटाबेस में लिखा गया है:
https://drive.google.com/uc?id=ID_GOES_HERE
अब जब आप लिंक तक पहुँचते हैं तो यह कुछ इस तरह से बदलता है:
https://doc-14-8s-docs.googleusercontent.com/docs/securesc/m4p0h6h3bpkoufgbajruvng9n4f51clu/fnjf7ftnl18svtcblses77hapi91jpe5/1597565925000/10139445714759083419/10139445714759083419/1mLu_myEgts9eaoWv6S9nxu8n4qfZM0Rr?authuser=0
लंबे लिंक डेटाबेस में लिंक है जो ऐप को संगीत बजाने के लिए उपयोग किया जाता है, लेकिन मुझे अब इसे खोलने की अनुमति नहीं है। मैं अंतिम और लंबी लिंक को कैसे सुलभ बना सकता हूं? क्या इस लंबे लिंक को सार्वजनिक करने का कोई तरीका है?
धन्यवाद!
<form id="form">
<input name="file" id="uploadfile" type="file">
<input name="filename" id="filename" type="text">
<input id="submit" type="submit">
</form>
<script>
const form = document.getElementById('form');
form.addEventListener('submit', e => {
e.preventDefault();
const file = form.file.files[0];
const fr = new FileReader();
fr.readAsArrayBuffer(file);
fr.onload = f => {
const url = "https://script.google.com/macros/s/###/exec"; // <--- Please set the URL of Web Apps.
const qs = new URLSearchParams({filename: form.filename.value || file.name, mimeType: file.type});
fetch(`${url}?${qs}`, {method: "POST", body: JSON.stringify([...new Int8Array(f.target.result)])})
.then(res => res.json())
.then(e => console.log("https://drive.google.com/uc? export=download&id=" + e.fileId))
.catch(err => console.log(err));
}
});
</script>
यह google app script है
function doPost(e) {
const folderId = "root"; // Folder ID which is used for putting the file, if you need.
const blob = Utilities.newBlob(JSON.parse(e.postData.contents), e.parameter.mimeType, e.parameter.filename);
const file = DriveApp.getFolderById(folderId || "root").createFile(blob);
const responseObj = {filename: file.getName(), fileId: file.getId(), fileUrl: file.getUrl()};
return ContentService.createTextOutput(JSON.stringify(responseObj )).setMimeType(ContentService.MimeType.JSON);
}
------- EDIT -------
मैंने दिए गए समाधान की कोशिश की:
दुख की बात है कि यह उम्मीद के मुताबिक काम नहीं कर रहा है .. Im निम्नलिखित लिंक प्राप्त कर रहा है:
https://drive.google.com/uc?export=download&id=1Tnh8UgAzFKrp6e-8QCl21v16L3yVCqso
अब जब मैं इसमें से आईडी लेता हूं और यहां डालता हूं:
http://docs.google.com/uc?export=open&id=your_file_id
इसका परिणाम वास्तव में एक लंबी कड़ी है, जो मेरे लिए आवश्यक कड़ी है। यह अभी भी सुलभ नहीं है अगर उदाहरण के लिए निजी ब्राउज़र मोड में im, यह मुझे लॉगिन करने के लिए मजबूर करता है जो मुझे नहीं चाहिए। यह आपके समाधान की तरह लिंक के साथ सुलभ होना चाहिए। यहीं वह लिंक है:
https://doc-08-8s-docs.googleusercontent.com/docs/securesc/m4p0h6h3bpkoufgbajruvng9n4f51clu/cgag5dus6c18p9hc1hv0362urudm2g6t/1597730475000/10139445714759083419/10139445714759083419/1Tnh8UgAzFKrp6e-8QCl21v16L3yVCqso?e=open&authuser=0
इस लिंक को कैसे सुलभ बनाया जाए?
ऐसा लगता है कि इस लिंक में आपके द्वारा निर्धारित अनुमतियाँ हैं http://docs.google.com/uc?export=open&id=your_file_id लेकिन यदि आप लंबे लिंक को कॉपी करते हैं, तो यह एक अनुमति सेटिंग्स प्रदान नहीं करता है, यह अभी भी ब्लॉक करता है।
जवाब
अपनी फ़ाइल बनाने के बाद आपको इसे एक उचित एक्सेस स्तर देने की आवश्यकता होती है जो निर्धारित करता है कि कौन इसे एक्सेस कर सकता है और एक अनुमति स्तर भी जो यह निर्धारित करता है कि वे उस फ़ाइल के साथ क्या कर सकते हैं (पढ़ें / लिखें / हटाएं)
यदि आप मामले का उपयोग करते हैं तो इसे सार्वजनिक रूप से एक लिंक और आसानी से पढ़ा जाना चाहिए। तो यह है कि आप ऐप स्क्रिप्ट में कैसे कर सकते हैं
const file = DriveApp.getFolderById(folderId || "root").createFile(blob);
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); // <-- add this