Azt szeretném elérni, hogy a Google Drive-ba feltöltött audio-t megjelenítsem a weboldalon.
Leginkább ezt a megoldást találtam:
<audio controls>
<source src="https://docs.google.com/uc?export=open&id={id}" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
Sajnos nekem nem működik, valószínűleg azért, mert a link birtokában nem tekintheti meg akárki.
A másik megoldás, ami már a hozzáférési problémát megoldotta, az az iframe-es beágyazás:
Ezzel viszont az a gond, hogy nagyon sok felesleges dolgot is megjelenít, leginkább a szürke hátteret és az "új ablakba" gombot.
Arra gondoltam, hogy miután betöltötte az elemet, akkor utólag szerkesztem az elemben lévő body tagot, mivel a betöltött elem, ami a hátteret szürkére állítja, annak id-ja és class-ja véletlenszerűen van elnevezve:
var iframe = document.getElementById('test');
var style = document.createElement('style');
style.textContent =
'body {' +
'background-color: transparent;' +
'}'
;
iframe.contentDocument.head.appendChild(style);
Sajnos ezzel sem lettem előrébb, hiszen az child elementet a body háttérszíne nem változtatja meg. A szürke hátteret szerintem az is okozza, hogy azon a részen "kitöltetlen" a tartalom, viszont a lejátszó szélességét és magasságát nem igazán sikerült meghatározni.
Kérdésem, hogy valakinek volna-e ötlete, hogy hogyan lehetne igényesen beágyazni az audio-t anélkül, hogy a linken lévő jogosultságot átállítsam?
<audio controls>
<source src="https://docs.google.com/uc?export=open&id=XYZ" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
Szia!
Köszönöm szépen a választ!
Sajnos nem tudom teljesen (mindenki számára) publikusra állítani, mert pont az lenne a cél, hogy csak X-Y felhasználó érhesse el a fájlt a link birtokában. iFrame esetében eléri/működik, ha be van jelentkezve és nem teljesen/mindenkinek (csak neki(k)) publikus a fájl, viszont kapott hozzáférést a fájlhoz Drive-on.
A legszebb megoldás valószínűleg a Google API lenne szerveroldalon (kliens oldalon C#-al egyébként is Rest API-s megoldás van).
De ha lehet, azt kerülném egyelőre.
<audio controls>
<source src="https://doc-10-4k-docs.googleusercontent.com/docs/securesc/jk60g48md8dsj11f5lmcapntibgl6t1a/h74n7cffenihg7fdq2prp59p6tq4k1kf/1643554300000/17118305146475862535/17118305136475862535/--XYZ--?e=download&authuser=0" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
Azt vedd figyelembe a sok trükközés közepette, hogy a Drive nem erre való, illetve konkrétan meg is említik, hogy ellenlépéseket tehetnek:
Google Drive allows you to store, share, and stream video content, but should not be used as a replacement for a content distribution network. For large-scale public streaming, YouTube is a better fit. Google Drive will restrict usage when it appears that it's being used for large-scale public streaming. Repeated violations may result in additional action, including terminating your account or ability to use Google Drive.
Ha kicsiben csinálod, akkor valószínűleg nem riaszt be nekik semmi, és nem fogják észrevenni, de tisztább lenne saját tárhelyet venned, esetleg hozzá CDN-nel szerződni. (Igaz, az a Drive-val ellentétben valami minimális pénzbe is kerülne.)
Egyébként ezek a linkek szerintem csak egy ideig élnek, szóval tényleg vagy az API-t kellene használnod vagy keresni valami Drive alternatívát, ami esetleg támogathatja is az ilyesmit.