-
GreasemonkeyScritto daNon Autenticatoil 2012-06-14 21:29:27.0 alle 2012-06-14 21:29:27.0Come faccio a fare uno script che converta i link del vecchio dominio .it nei link del nuovo dominio? I link non sono nello stesso formato, quindi non basta cambiare il dominio. Ho provato con questo (prendendo spunto da un altro script che modifica i domini geocities in reocities)...
// ==UserScript== // @name FdT-LinkFixer // @namespace http://forumdeitroll.it/ // @description Fix forumdeitroll.com links // @include * // ==/UserScript== (function(d){ function main() { var counter = 0; var anchors = d.getElementsByTagName('a'); var anchors_length = anchors.length; for (var i=0; i<anchors_length; i++) { if (anchors[i].hostname == "forumdeitroll.it" || anchors[i].hostname == "www.forumdeitroll.it" ) { anchors[i].href = "http://www.forumdeitroll.com" + anchors[i].pathname; counter++; } } // this fixes hotlinked images, but we're not too happy about those anyway... var images = d.getElementsByTagName('img'); var images_length = images.length; for (var i=0; i<images_length; i++) { if (images[i].src.substring(0,24) == "http://www.forumdeitroll.it") { images[i].src = "http://www.forumdeitroll.com" + images[i].src.substring(24); counter++; } if (images[i].src.substring(0,20) == "http://forumdeitroll.it" ) { images[i].src = "http://www.forumdeitroll.com" + images[i].src.substring(20); counter++; } } if (counter === 0) { setTimeout(main, 60000); working = {}; } else { // setTimeout(main, 10000 / counter); } } main(); }(document));
... tuttavia non risolvo il problema del diverso formato:
esempio per i messaggi singoli
*.forumdeitroll.it/m.aspx?m_id=#######
deve diventare
*.forumdeitroll.com/Messages?action=getById&msgId=#######
lo stesso discorso vale per i link ai thread completi, che ora non ricordo quale era il vecchio formato...
-
Re: GreasemonkeyScritto daavvelentaniCubicolarioil 2012-06-14 21:32:06.0 alle 2012-06-14 21:32:06.0Trollate totali: 18184Parsa l'url con una regexp, estrai il m_id e lo infili nell'url nuovo.I think happiness is love
- Vladimir Putin
-
Re: GreasemonkeyCredo basti questo:
document.querySelectorAll("a").forEach(function(belink) { belink.href = "https://forumdeitroll.com/Messages?action=getById&msgId=" + belink.href.match(/^http://www\.forumdeitroll\.it/m\.aspx\?.*m_id=([0-9]{6-8}).*$/)[1] })Young professional woman and busy mom.-
Re: GreasemonkeyScritto daNon Autenticatoil 2012-06-14 22:00:32.0 alle 2012-06-14 22:00:32.0http://www.forumdeitroll.it/m.aspx?m_id=2147921&m_...
non sono sicuro che funzioni
-
Re: GreasemonkeyScritto da:
> http://www.forumdeitroll.it/m.aspx?m_id=2147921&m_...
non sono sicuro che funzioni
Hai ragione, il ritorno di querySelectorAll non è un Array.
Sono andato a occhi chiusi, te l'ho fixata in modo più comprensibile spero.Array.prototype.filter.call(document.querySelectorAll("a"), function(belink) { return belink.href.match(/www\.forumdeitroll\.it\/m\.aspx/) }).forEach(function(belink) { belink.href = "http://forumdeitroll.com/Messages?action=getById&msgId=" + belink.href.match(/m_id=(\d+)/)[1] })
Edit: gli errori di greasemonkey li trovi sulla console degli errori di firefox, ctrl+shift+j (scrolla verso il basso)
**Modificato dall'autore il 14.06.2012 22:18**Young professional woman and busy mom.-
Re: GreasemonkeyScritto daaltgutente che non utieneil 2012-06-15 02:06:51.0 alle 2012-06-15 02:06:51.0Trollate totali: 11540>
> Array.prototype.filter.call(document.querySelectorAll("a"), function(belink) { > return belink.href.match(/www\.forumdeitroll\.it\/m\.aspx/) > }).forEach(function(belink) { > belink.href = "http://forumdeitroll.com/Messages?action=getById&msgId=" + > belink.href.match(/m_id=(\d+)/)[1] > }) >
Sara` la mia mentalita` a basso livello, ma a voi non sembra che tutto questo uso di funzioni anonime e dot notation spaghettizzi un po' la roba?
-
Re: GreasemonkeyScritto da: altg
> Sara` la mia mentalita` a basso livello, ma a voi non sembra che tutto questo uso di funzioni anonime e dot notation spaghettizzi un po' la roba?
Quoto.
Ma dopo un po ti ci abitui e, anzi, diventa quasi una gara di ablita', come uno scioglilingua
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
-
-
Re: GreasemonkeyScritto daNon Autenticatoil 2012-06-15 02:21:46.0 alle 2012-06-15 02:21:46.0Scritto da: ::1
> Scritto da:
> > http://www.forumdeitroll.it/m.aspx?m_id=2147921&m_...
non sono sicuro che funzioni
>
> Hai ragione, il ritorno di querySelectorAll non è un Array.
> Sono andato a occhi chiusi, te l'ho fixata in modo più comprensibile spero.
>
>> Array.prototype.filter.call(document.querySelectorAll("a"), function(belink) { > return belink.href.match(/www\.forumdeitroll\.it\/m\.aspx/) > }).forEach(function(belink) { > belink.href = "http://forumdeitroll.com/Messages?action=getById&msgId=" + > belink.href.match(/m_id=(\d+)/)[1] > }) >
>
> Edit: gli errori di greasemonkey li trovi sulla console degli errori di firefox, ctrl+shift+j (scrolla verso il basso)
>
> **Modificato dall'autore il 14.06.2012 22:18**
Ora funziona, nel senso che sostituisce l'url col .com, ma non fa quello che serve, ma cliccando su un url con .it non inserisce il codice del messaggio nel link col .com e riporta a una pagina di errore. Puoi darci un'occhiata meglio, per favore? Questo è il codice:
https://userscripts.org/scripts/show/136105
-
Re: GreasemonkeyL'avevo provato in uno script isolato e funzionava, ho visto che nel tuo script c'è un pezzo di codice prima che fa quella modifica.
Se lo togli e inizi il main col mio codice vedi che va.
Young professional woman and busy mom.-
Re: GreasemonkeyScritto daNon Autenticatoil 2012-06-15 17:08:47.0 alle 2012-06-15 17:08:47.0Scritto da: ::1
> L'avevo provato in uno script isolato e funzionava, ho visto che nel tuo script c'è un pezzo di codice prima che fa quella modifica.
> Se lo togli e inizi il main col mio codice vedi che va.
Ok ora funziona.
Per i link ai thread invece?-
Re: GreasemonkeyScritto da:
> Scritto da: ::1
> > L'avevo provato in uno script isolato e funzionava, ho visto che nel tuo script c'è un pezzo di codice prima che fa quella modifica.
> > Se lo togli e inizi il main col mio codice vedi che va.
>
> Ok ora funziona.
> Per i link ai thread invece?
Non abbiamo niente per risalire al thread dal m_id, devi cliccare sul titolo della pagina col post visualizzato per arrivarci.Young professional woman and busy mom.
-
-
-
-
-
-
-