precedentemente avevo scritto una guida su come configurare windows per poter cliccare sui link ed2k da browser e inserirli automaticamente in coda ad aMule su NAS. La guida la potete trovare qui:
http://www.qnapclub.it/viewtopic.php?f=27&t=6171
Ora però avevo necessità di effettuare la stessa operazione usando smartphone e tablet. Quindi cliccare sul link e far partire il download automaticamente. Per Android ci sono un paio di app anche ben fatte( GeteD2k oppure aMule Remote) ma per iOS non ho trovato nulla di supportato o funzionante. Ho quindi sviluppato due bookmarklet che effettuano un injection di codice javascript all'interno della pagina web contenente i link emule.
Innanzitutto per chi non fosse pratico, ecco una definizione di bookmarklet:
Non volete leggervi tutto il pippone di spiegazione sul funzionamento di questa soluzione? Bene, copiate i seguenti codici e create due bookmark(favoriti) nel vostro browser, uno per ogni codice. Il codice va inserito dove si inserisce l'url del sito. Una volta che avete salvato i bookmark nel browser del vostro dispositivo, visitate una pagina con dei link emule, cliccate sul bookmark che volete usare e i link diventeranno arancioni (ciò significa che lo script ha funzionato e ha creato i link correttamente per il vostro NAS). Cliccando sul singolo link, l'url diventerà verde e ciò significa che è stato aggiunto al NAS.Un bookmarklet è un piccolo programma JavaScript che può essere memorizzato come un normale URL all'interno dei segnalibri (bookmark in inglese) nei browser. (http://it.wikipedia.org/wiki/Bookmarklet)
NOTA: Per funzionare dovete abilitare amuleweb (generalmente col comando amuleweb -w), dal remote.cfg trovate porta e pass di configurazione. Cambiate dallo script IP e PASS con i vostri dati corretti (attenzione allo slash dopo la porta).
Esempio di configurazione corretta:
IP="http://10.0.0.2:4711/";PASS="amulePass";
Singolo download manuale:
Descrizione: Questo script permette di selezionare manualmente i link da inviare al NAS. Una volta lanciato, i link diventeranno arancioni e si potrà scegliere individualmente i file da scaricare:
Codice: Seleziona tutto
javascript:IP="http://VOSTRO_IP:VOSTRA_PORTA/";PASS="VOSTRA_PASSWORD";d=document.createElement("script");d.src=IP+"?pass="+PASS;document.body.appendChild(d);IP_FOOTER=IP+"footer.php";a=document.querySelectorAll("a[href^='ed2k'][href*='file']");for(var
i=0;i<a.length;i++){a[i].style.color="orange";a[i].onclick=function(e){e.preventDefault();b=document.createElement("script");b.src=IP_FOOTER+"?ed2klink="+escape(this.href)+"&Submit=Download
link&selectcat=all";document.body.appendChild(b);this.style.color="green"}}
Download multiplo automatico
Descrizione: Questo script trova tutti i link ed2k presenti nella pagina e li aggiunge automaticamente al NAS.
Codice: Seleziona tutto
javascript:IP="http://VOSTRO_IP:VOSTRA_PORTA/";PASS="VOSTRA_PASSWORD";TIMEOUT=200;d=document.createElement("script");d.src=IP+"?pass="+PASS;document.body.appendChild(d);IP_FOOTER=IP+"footer.php";c=Array.prototype.slice.call(document.querySelectorAll("a[href^='ed2k'][href*='file']"));a=setInterval(function(){try{if(c.length===0){clearInterval(a);return}var
e=c[0];var t=document.createElement("script");t.async="true";t.src=IP_FOOTER+"?ed2klink="+escape(e.href)+"&Submit=Download
link&selectcat=all";document.body.appendChild(t);e.style.color="green";c.shift()}catch(n){alert("error");clearInterval(a)}},TIMEOUT)
Come detto in precedenza avevo necessità di cliccare sui link emule e inviarli al NAS da iphone o ipad ma questo non era possibile perché su iOS non sono configurabili comportamenti specifici per determinati protocolli (tipo appunto ed2k) quindi quando clicco con safari su un link emule non succede nulla. Un opzione era sviluppare un app iOS con un browser interno che intercettasse i click sui link ed2k e li inviasse al NAS ma anche qui altro problema; su windows c'è la console amuleCMD che ci permette di creare un ponte tra il nostro dispositivo (PC) e il NAS, ma su iOS amuleCMD non esiste e quindi la via per l'app è stata abbandonata.
Ho provato quindi a vedere come le app di android funzionano e gestiscono i link ed2k e ho notato come utilizzassero la parte web di amule (amuleweb) nello specifico facendo una chiamata al footer.php e cioè a quella parte che contiene il form di invio verso aMule.
Se aprite amuleweb da browser (generalmente ip_nas:4711) e vi loggate potrete vedere tutti i download in corso. In basso troverete un campo dove inserire manualmente un link ed2k e aggiungerlo così al nas.
Bene, quel campo è all'interno del footer.php, digitando quindi ip_nas:4711/footer.php verrà visualizzata solo quella parte che ci interessa. Facendo ora una chiamata http con i parametri giusti avremmo aggiunto i link al nas.
All'inizio avevo intenzione di creare una pagina web utilizzando il web server del NAS e sviluppare una pagina web di raccolta link, ma poi grazie ad un amico e alla sua brillante illuminazione (grande Massimo!!!!) ho utilizzato i bookmark.
Nello specifico ecco cosa fa il codice del singolo download (quello multiplo è un semplice loop):
1. fai una chiamata ad amuleweb con la password per autenticarci e permetterci di inviare i link (http://10.0.0.2:4711/?pass=amulepass)
2. cerca nella pagina tutti i link che abbiano come protocollo ed2k e siano di tipo file
3. colorali di arancione così da farmi capire che sono stati "curati"
4. quando clicco sul link mi prendo l'url e costruisco una chiamata che piaccia al footer.php
5. inserisco un tag script con l'url creato così da evitare la Same Origin Policy dei browser (JSONP)
6. cambio il colore del link su cui ho cliccato
Fatemi sapere come vi trovate con questa soluzione o se avete problemi di funzionamento!
A presto