creare script per aprire tab per ogni discussione con messag

Mac OS X e le sue Applicazioni

Moderatore: ModiMaccanici

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

Egregi,

Da tempo penso di mettermi all'opera ma pigrizia, ignoranza e mancanza di tempo sono una brutta combinazione.

Mi trovo ad accedere il forum sempre dalla pagina dei "Messaggi non letti"
https://www.imaccanici.org/forum/search. ... nreadposts" onclick="window.open(this.href);return false;
così mi tocca tenere Cmd e cliccare su tutti i quadratini per aprire un tab per ogni discussione dove ci sono messaggi che ancora non ho letto (sì, come Condor, leggo tutto). Visto che umanamente non mi si può chiedere un simile sacrificio di tempo, mira e polpastrelli, vorrei creare uno script in AppleScript o altro.

I passaggi dovrebbero essere i seguenti:
1. rastrellare la pagina sopra con un curl/grep come

Codice: Seleziona tutto

curl https://www.imaccanici.org/forum/search.php?search_id=unreadposts | grep “[0-9][0-9][0-9][0-9][0-9]\&amp\;v”
dove le prime cinque cifre sono l'ID della discussione e "&v" è un modo di trovare un unica loro ricorrenza nella pagina
2. estrarre gli ID sopra in una lista
3. aprire un nuovo tab per ogni ID con la sintassi
https://www.imaccanici.org/forum/viewtop ... ead#unread" onclick="window.open(this.href);return false;

I passaggi 2 e 3 dovrebbero essere banali ma le mie scarse conoscenze di web mi impediscono, per dirla con parole mie, di accedere alla pagina dinamica che viene creata quando si clicca su "Messaggi non letti". Immagino di doverci infilare il mio ID utente o qualche token di autenticazione (mi è scappata questa parola così) ma ho poco idea di come fare. Ed in effetti una procedura simile dovrebbe servire per andare al primo messaggio non letto del mio utente in una certa discussione.

Aiutino? Ah, ovviamente poi, nel caso di AppleScript, bisognerà anche tenere conto dei diversi text delimiters ma quella dovrebbe essere più semplice.

Grazie,

Giulio

Avatar utente
fragrua
Stato: Non connesso
Admin of my life
Admin of my life
Avatar utente
Iscritto il: sab, 08 ott 2005 07:00
Messaggi: 62862
Località: [k]ragnano

Top

Contatta:
Interessa DA MATTI anche a me! :)
La prima cosa su cui devi investire è il benessere del tuo corpo, l'unica cosa che ti porterai nella tomba.
Franz Grua (sarebbe fragrua)

In un mondo perfetto io sarei un essere inutile.
©2015 albertocchio

—> Uso corretto del Forum: https://goo.gl/9xOO0a

Immagine

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

fragrua ha scritto:DA MATTI
Una voce mi dice che questa sia la parte più rilevante della risposta. E io che pensavo di ricevere ovazioni. Nemo propheta in patria...

Avatar utente
mattleega
Stato: Non connesso
Pestifero
Pestifero
Avatar utente
Iscritto il: mar, 30 ott 2007 19:20
Messaggi: 19733

Top

kato ha scritto:... Nemo propheta in patria...
Allora tu prova così:


Уважаемый,

Время от заставить работать, но я думаю, лень, невежество и недостаток времени являются плохая комбинация.

Я считаю себя всегда доступ к форуму со страницы на "непрочитанные"
search.php? search_id = unreadposts
так что я должен держать Cmd и нажмите на всех площадях, чтобы открыть вкладку для каждой теме, где есть сообщения, что я не читал (да, как Кондор, я прочитал все). Так как я по-человечески можно задать такую жертву времени, целям и пальцев, я хотел бы создать сценарий в AppleScript или друга.

Шаги должны быть следующие:
1. грабли страницу выше ротора / Grep как
Код:
локон https://www.imaccanici.org/forum/search. ... nreadposts" onclick="window.open(this.href);return false; | GREP "в [0-9] [0-9] [0-9] [0-9] [0-9] \ & AMP \; v "
где первые пять цифр ID обсуждения и "& Amp; v" является способ найти свой уникальный появление на странице
2. извлечь идентификатор выше в списке
3. Откройте новую вкладку для каждого идентификатора с синтаксисом
viewtopic.php? F = 9 & T = XXXXX и зрения = непрочитанному # непрочитанному

Шаги 2 и 3 должны быть тривиальными, но мое ограниченное знание веб помешать мне, говоря своими словами, чтобы получить доступ к динамической страницы, которая создается при нажатии на "непрочитанные". Я думаю, с уложить свой идентификатор пользователя или какой-либо маркер аутентификации (я убежал так это слово), но у меня есть смутное представление, как сделать. И в самом деле подобная процедура должна быть использована для перехода к первому непрочитанному мой пользователь в какой-то дискуссии.

Помогите? Ах, конечно, то, в случае AppleScript, мы должны также принимать во внимание различные текстовые разделители, но что это должно быть легче.

OT: Bello il cappellino :!:
...

L’inerzia soddisfatta dei cittadini è all’origine di quella incredibile malattia che è la servitù volontaria

E se vivremo, sarà per calpestare i re.

Una delle più importanti differenze tra uomini e animali è che questi ultimi non permettono, al più idiota tra loro, di diventare capo branco.

Avatar utente
a-mac
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: ven, 21 dic 2012 10:32
Messaggi: 4534
Località: fsf.org

Top

Contatta:
kato ha scritto:vorrei creare uno script in AppleScript o altro
bella idea!
poi ne facciamo uno anche per la multi-utenza...
(ma chist' è proprio pàzz!!!)
“...è complicato, ma semplice”

_ UNIX: Live Free or Die
_ With great power comes great responsibility
_ You may say, I'm a dreamer, but I'm not the only one, I hope some day you'll join us, And the world will live as one!

Avatar utente
Why
Stato: Non connesso
Maccanico assiduo
Maccanico assiduo
Avatar utente
Iscritto il: sab, 29 nov 2014 19:45
Messaggi: 193

Top

Ecco un piccolo script in Ruby che sfrutta mechanize. Dovresti riuscire ad adattarlo senza grossi problemi ad un AppleScript.

Notare alcune cose:
  • mechanize è una libreria che richiede almeno ruby 1.9
  • La prima versione di OS X ad includere di default Ruby 1.9 è Mavericks. Su sistemi precedenti va aggiornato dall'utente.
  • Se si ha Ruby 1.9, si può installare mechanize con il comando: gem install mechanize
  • Si deve scrivere la password nello script in chiaro e ciò significa che chiunque abbia accesso al file può vederla
Lo script si lancia da terminale anteponendo il comando ruby.

Testato con Yosemite, senza nessuna garanzia implicita o esplicita.

Codice: Seleziona tutto

#!/usr/bin/env ruby

UTENTE    = %q[ scrivi qui l'utente ]
PASSWORD  = %q[ scrivi qui la password ]

require 'mechanize'

agent = Mechanize.new

# blocco i redirect
agent.redirect_ok = false

# carico la pagina degli unread, ma comparirà la pagina di login
page = agent.get 'https://www.imaccanici.org/forum/search.php?search_id=unreadposts'

# seleziono il form di login
form = page.forms.first

# inserisco i dati e faccio il login
form.username = UTENTE
form.password = PASSWORD
page = form.submit form.button_with(name: 'login')

# ora che ho fatto il login torno alla pagina corretta
page = page.link_with(text: 'Torna alla pagina precedente').click

# creo la lista degli url
urls = page.links_with(class: 'topictitle').reduce([]) do |a, e|
  a << 'https://www.imaccanici.org/forum/' + e.href
end

# !!! decommenta per mostrare la lista degli url che verranno aperti
# puts urls

# !!! commenta queste righe per disabilitare l'apertura automatica dei link con Safari
urls.each do |url|
  system %Q{ osascript -e 'tell application "Safari" to open location "#{url}"' }
end
Lo script dovrebbe funzionare anche su Linux e Windows, modificando la parte relativa a Safari, ma non ho provato.
Ultima modifica di Why il mar, 13 gen 2015 15:37, modificato 1 volta in totale.

Avatar utente
iStefano
Stato: Non connesso
Genio guastatore
Genio guastatore
Avatar utente
Iscritto il: mer, 30 dic 2009 10:30
Messaggi: 8279
Località: Pomigliano D'Arco (NA)

Top

Contatta:
:shock:

Scrivo su iMaccanici con TapaTalk per MacBook Air

Avatar utente
a-mac
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: ven, 21 dic 2012 10:32
Messaggi: 4534
Località: fsf.org

Top

Contatta:
Why ha scritto:Dovresti riuscire ad adattarlo senza grossi problemi ad un AppleScript
ottimo! adesso per kato sarà una passeggiata...
“...è complicato, ma semplice”

_ UNIX: Live Free or Die
_ With great power comes great responsibility
_ You may say, I'm a dreamer, but I'm not the only one, I hope some day you'll join us, And the world will live as one!

Avatar utente
Why
Stato: Non connesso
Maccanico assiduo
Maccanico assiduo
Avatar utente
Iscritto il: sab, 29 nov 2014 19:45
Messaggi: 193

Top

a-mac ha scritto:
Why ha scritto:Dovresti riuscire ad adattarlo senza grossi problemi ad un AppleScript
ottimo! adesso per kato sarà una passeggiata...
:lol:
No sul serio: sebbene non conosca AppleScript so che si può lanciare un comando/script; a quel punto è fatta.
Il problema è installare mechanize (e quindi Ruby aggiornato) su OS X vecchi.

Una soluzione più efficace e più comoda sarebbe una piccola estensione per Safari (quindi scrivendo il codice in Javascript). Per me però non è per nulla semplice.

Avatar utente
a-mac
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: ven, 21 dic 2012 10:32
Messaggi: 4534
Località: fsf.org

Top

Contatta:
Why ha scritto: No sul serio: sebbene non conosca AppleScript so che si può lanciare un comando/script; a quel punto è fatta.
Il problema è installare mechanize...
tu ci sottovaluti
“...è complicato, ma semplice”

_ UNIX: Live Free or Die
_ With great power comes great responsibility
_ You may say, I'm a dreamer, but I'm not the only one, I hope some day you'll join us, And the world will live as one!

Avatar utente
faxus
Stato: Non connesso
Pro-Expert 
Pro-Expert 
Avatar utente
Iscritto il: lun, 02 giu 2014 15:12
Messaggi: 30459
Località: Circondato dalle bufale

Top

Contatta:
a-mac ha scritto:
Why ha scritto: No sul serio: sebbene non conosca AppleScript so che si può lanciare un comando/script; a quel punto è fatta.
Il problema è installare mechanize...
tu ci sottovaluti
Infatti.
Siamo solo dei pigri, non degli incapaci.



















Hahaha... Haha... Ehm...

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

Eccomi, giornata gonfia.
a-mac ha scritto:poi ne facciamo uno anche per la multi-utenza...
Spiritoso...
a-mac ha scritto:(ma chist' è proprio pàzz!!!)
Ti ho sentito!
Why ha scritto:...
Why, grazie. Non badare a loro.
a-mac ha scritto:ottimo! adesso per kato sarà una passeggiata...
Per quanto già in overbooking, stai scalando la mia black list in maniera sorprendente.

Ora, scherzi a parte, vedo di mettermi a studiare appena possibile. In generale mi chiedo come e se sia possibile farlo in maniera ancora più semplice con AppleScript o anche iMacros di Firefox ma già questa sarebbe un'ottima partenza.

Grazie a qualcuno ed altro carbone a qualcun altro! :D

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

Ho trovato il problema: sono rinko! Mi ero sbagliato nel leggere la pagina sorgente in Safari e non avevo realizzato che il link giusto dove trovare gli ID delle discussioni con nuovi interventi è solo
https://www.imaccanici.org/forum/search. ... nreadposts" onclick="window.open(this.href);return false;
e non c'è altro di dinamico, come confermato anche dallo script di Why. Se mi sono fatto spiegato da me.

Ovvero in AppleScript basta dire

Codice: Seleziona tutto

tell application "Safari"
	set pagina to document of front window
	set sorgente to source of myDoc
	set ID_nuovi to (do shell script "grep_sorgente")
end tell
Ora devo solo pastrocchiare un modo per sostituire a grep_sorgente qualcosa di più sensato e poi attaccarci un loop per aprire un tab per ogni ID.

Per informazione, gem install mechanize produce quanto segue, sia da un utente standard che da uno amministratore:

Codice: Seleziona tutto

katomac:Desktop kato$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
katomac:Desktop kato$ gem install mechanize
Fetching: net-http-digest_auth-1.4.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Avatar utente
faxus
Stato: Non connesso
Pro-Expert 
Pro-Expert 
Avatar utente
Iscritto il: lun, 02 giu 2014 15:12
Messaggi: 30459
Località: Circondato dalle bufale

Top

Contatta:
kato ha scritto:... Per informazione, gem install mechanize produce quanto segue, sia da un utente standard che da uno amministratore:

Codice: Seleziona tutto

katomac:Desktop kato$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
katomac:Desktop kato$ gem install mechanize
Fetching: net-http-digest_auth-1.4.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Probabilmente perché Why ha i Command Line Tools installati e tu no.
Command Line Tool si scaricava con Xcode, nelle vecchie versioni fino a Lion.
Da Mountain Lion si scarica separatamente, in questi due modi, egualmente validi:
- Da https://developer.apple.com/" onclick="window.open(this.href);return false; cercando in fondo alla pagina Additional Tools
- Con Terminale

Codice: Seleziona tutto

sudo xcode-select --install
Nella finestra di avviso conferma che vengano installati i Command Line Tools.
(Sono indipendenti da Xcode, che puoi non installare o scaricare più comodamente da App Store, che ti proporrà eventuali aggiornamenti)

Probabilmente puoi usare anche pip install mechanize o easy_install mechanize, dopo aver scaricato la distribuzione

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

faxus ha scritto:Probabilmente perché Why ha i Command Line Tools installati e tu no.
Facciamo "sicuramente".

Ora però mi scappa più di accoppiare grep o sed o simile con AppleScript e dovrei esserci, anche se non so se riesco a finire entro stasera. L'avevo già fatto in un'altra occasione, non ricordo e sto vangando in giro.

Grazie.

Rispondi

Torna a “Software”

Chi c’è in linea

Visitano il forum: Nessuno e 46 ospiti