17/04/2018 12:52
certo! dentro la cartella instabot
creare template html per instbot phyton
|
17/04/2018 12:52
certo! dentro la cartella instabot
18/04/2018 12:28
La cartella "web" deve essere all'interno di "/var/www/vincisinstabot/".
Mattia!
18/04/2018 19:25
fatto, ma mi viene fuori lo stesso identico errore.
A questo punto però ti devo specificare che la cartella "instabot" e la cartella "vincisinstabot" sono in due percorsi differenti
19/04/2018 12:43
(Questo messaggio è stato modificato l'ultima volta il: 19/04/2018 12:43 da Mattia.)
La cartella "web" deve essere dove c'è lo script. Se necessiti che sia da un'altra parte, devi correggere il percorso nella riga in cui utilizzi fopen.
L'errore "No such file or directory" significa che non riesce a trovare la cartella, però per sicurezza prova a dare alla cartella "web" i permessi 777 (se utilizzi FileZilla, qui trovi una guida). Se ancora ci sono problemi e la cartella "web" si trova nella stessa in cui c'è lo script, prova a modificare in questo modo: Codice PHP: $fp = fopen(__DIR__.'/web/'.$username.'.py', 'w');
Mattia!
19/04/2018 19:06
dunque, ho cambiato i permessi della cartella e adesso effettivamnte mi viene creato il file fakechatapp.py :
Citazione:Creazione OKsolo che guardando il file, al suo intenro non sono stati sovrascritti i parametri che ho messo nel form.... al momento il file è la copia esatta di example.py
20/04/2018 12:44
Sì, in questo momento copia semplicemente il contenuto di "example.py" nel nuovo file.
Adesso dovresti modificare il file "example.py" inserendo dei segnaposti al posto dei valori che vuoi sostituire. Per esempio, potresti modificare così le prime righe: Codice: login={USERNAME}, Subito prima di scrivere il file, devi sostituire i vari segnaposti con i valori passati dal form e ripuliti da eventuali caratteri maligni, però dovresti prima correggere il form assegnando ai vari tag "input" degli attributi "name" che abbiano senso. Per esempio, "username" e "password" hanno senso, ma arriva anche un campo di nome "1000" con valore "100".
Mattia!
20/04/2018 22:38
non sono sicuro di aver capito tutto... partiamo dall'example originale:
Codice: bot = InstaBot( Ad ogni modo seguendo le tue indicazioni ho modificato example.py in questo modo: Codice: bot = InstaBot( Per quanto riguarda il form, la mia intenzione era mettere come attributo "name" degli "esempi" di parametri che poi l'utente può inserire a suo piacimento (per questo su like per day ho messo "1000" come esempio). Come si fa un controllo che ripulisce eventuali caratteri maligni? E infine come si passano i valori dal form al file.py? Attendo tue Grazie Chand
21/04/2018 16:14
(Questo messaggio è stato modificato l'ultima volta il: 21/04/2018 16:16 da Mattia.)
Le virgolette e gli apici comprendono entrambi dei testi, quindi in questo caso solo la stessa cosa.
Dove ci sono le parentesi quadre significa che è un array (un elenco) di dati (per esempio, l'elenco di tag). Il parametro "name" dei campi di input è il nome del campo che viene passato allo script tramite il form. Se vuoi mettere dei valori di esempio, puoi fare in due modi:
Per sostituire i valori nel file di esempio si può utilizzare str_replace. Per esempio, il valore dell'username che abbiamo già perché lo utilizziamo per il nome del file ed è già pulito, può essere sostituito in questo modo (queste operazioni vanno fatte subito prima dell'apertura del file con fopen): Codice PHP: $example = str_replace('{USERNAME}', '"'.$username.'"', $example); Nel caso della password, che è sempre un testo ma può contenere praticalmente qualsiasi carattere, si può utilizzare addslashes: Codice PHP: $example = str_replace('{PASSWORD}', '"'.addslashes(isset($_POST['password']) && is_string($_POST['password']) ? $_POST['password'] : '').'"', $example); Nel caso dei numeri interi si possono forzare con intval (inoltre potresti utilizzare, se non lo fai già, il parametro "type" con valore "number" per questi campi di input): Codice PHP: $example = str_replace('{LIKE_PER_DAY}', isset($_POST['like_per_day']) && is_numeric($_POST['like_per_day']) ? intval($_POST['like_per_day']) : 0, $example); Per i campi con degli elenchi, come i tag, si può utilizzare json_encode (prima separo i singoli valori con explode): Codice PHP: // Se sono stati passati dei tag, li separo in base alla virgola
Mattia!
21/04/2018 17:35
quindi dovrei sisemare instabot.html così:
Codice: <!DOCTYPE html> e instascript.php così: Codice: <?php Corretto?
23/04/2018 12:35
In linea di massima il codice sembrerebbe corretto.
Tutto il blocco dove fai le sostituzioni dovrebbe andare subito prima di "fopen" (dentro l'if). Dove recuperi i commenti dovresti correggere il nome della variabile: Codice PHP: // Se sono stati passati dei commenti, li separo in base alla virgola
Mattia!
23/04/2018 20:01
(Questo messaggio è stato modificato l'ultima volta il: 23/04/2018 20:02 da Chandler.)
ho sicuramente sbagliato qualcosa perchè mi da errore:
Citazione:Notice: Undefined variable: username in /var/www/vincisinstabot/instascript.php on line 9 questo il codice per come l'ho corretto: Codice: <?php
24/04/2018 12:40
Questa parte va dov'era prima, perché prima verifico che ci sia l'username e poi faccio tutte le altre operazioni.
Codice PHP: // Leggo il valore dell'username ed elimino tutti i caratteri diversi da lettere, numeri, - e _
Mattia!
24/04/2018 16:46
ok, adesso funzia tutto! Il file viene creato correttamente e anche i dati vengono inseriti correttamente, però due precisazioni:
-in tag_list ci vanno gli apici ' e non le virgolette " (non so se fa realmente differenza) -in comment_list le parole vengono virgolettate e separate correttamente, ma nella sintassi del file in Example.py è: Codice: comment_list=[["commento1", "commento2", "commento3"]], -infine, esiste un modo per vedere se lo script è in esecuzione, e se si, se viene eseguito correttamente senza errori? una sorta di log che però posso visualizzare da una pagina web (ad esempio accedo una pagina che mi dice che allo state attuale ci sono username1.py, username2.py e username3.py e che solo username 1 è in esecuzione) Non so se mi sono spiegato...
24/04/2018 18:47
Per "tag_list" vanno bene sia le virgolette doppie che gli apici singoli.
"comment_list" deve diventare un array di array. Codice PHP: // Se sono stati passati dei commenti, li separo in base alla virgola Per leggere i file presenti nella cartella si può utilizzare la funzione "glob". Per vedere se i cron job sono in funzione dovresti vedere se è una funzione prevista dalla classe (adesso sono sul cellulare e non riesco a verificare).
Mattia!
25/04/2018 19:16
(Questo messaggio è stato modificato l'ultima volta il: 26/04/2018 12:25 da Chandler.)
c'è qualcosa che nn va
Citazione:Warning: trim() expects parameter 1 to be string, array given in /var/www/vincisinstabot/instascript.php on line 51 per quanto riguarda la funzione glob è giusta una cosa del genere: Codice: $py = glob('web/*.py'); oppure una cosa più completa così: Codice: <?php
26/04/2018 12:21
Cosa c'è a riga 51?
Il primo esempio di codice dell'utilizzo della funzione glob è quello corretto.
Mattia!
26/04/2018 12:26
questo è quello che c'è a riga 51:
Codice: $comment_list[$i] = trim($comment_list[$i]);
26/04/2018 13:03
Si deve modificare il controllo, visto che è diventato un array di array.
Codice PHP: // Controllo che tutti i commenti siano compilati
Mattia!
27/04/2018 01:12
ok, adesso anche i commenti vengono inseriti correttamente! Grazie!
ho creato un file monitor.php col codice prima citato ed effettivamente mi visualizza i file presenti nella cartella web. A questo punto resterebbe da capire se è possibile vedere se i cron job sono in funzione (bisognerebbe verificare s è una funzione prevista dalla classe).
27/04/2018 12:43
La parte che crea il cron job adesso non dovrebbe funzionare perché il percorso è sbagliato.
Dovrebbe essere così: Codice PHP: $crontab->append_cronjob('01 06 * * * /var/www/vincisinstabot/web/'.$username.'.py'); Ho riguardato velocemente la classe e non ho trovato un metodo per verificare che un cron job sia in funzione. Dovresti provare ad aggiungere un altro metodo alla classe (è praticamente identico a "exec" solo che restituisce il risultato): Codice PHP: public function exec_output() { Nel file "monitor.php" inserisci le righe di codice per includere la classe (copia i parametri corretti dallo script di creazione): Codice PHP: // Richiamo il file con la classe Poi dovresti provare a vedere se il metodo che ho creato io stampa qualcosa di sensato (dovrebbe stampare l'elenco dei cron job attivi): Codice PHP: var_dump($crontab->exec_output('crontab -l'));
Mattia!
27/04/2018 19:47
eccomi, allora ho seguito le tue istruzioni, però mi dava errore nella classe, ho risolto sostituentdo
Codice: } Codice: } Citazione:Array ( [0] => web/fakechatapp.py ) string(487) "01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /home/chand/instabot/fakechatapp.py 01 06 * * * /var/www/vincisinstabot/web/fakechatapp.py "mi visualizza le impostazioni del cron, ma non mi dice quale sia attivo (o meglio in esecuzione)
28/04/2018 17:52
Restituisce tutti i cron job che dovrebbero essere attivi (cioè vanno in esecuzione in base al periodo che è stato assegnato).
Per "in esecuzione" intendi i cron job che funzionano correttamente?
Mattia!
28/04/2018 18:39
esattamente!
30/04/2018 10:38
A dir la verità, non saprei come fare un elenco dei cron job che funzionano correttamente.
La lista restituita dal comando "crontab -l" dovrebbe restituire tutti i cron job impostati che potrebbero funzionare o meno.
Mattia!
01/05/2018 13:54
beh, considerando arresti anomali o problemi di rete, mi piacerebbe capire se e quando gli script.py sono in esecuzione e se eseguiti correttamente. In realtà non mi è ancora chiaro esattamente come funzion il cron job, ad esempio io l'ho settato che ogni giorno alle 6.00 del mattino si avvii lo script.py, ma per quanto resta in esecuzione? Quando si chiude, se alla fine ripartirà la mattina seguente sempre alle 6.00 am?
02/05/2018 12:18
Se hai impostato uno script ogni giorno alle 6:00, ogni giorno alle 6:00 lo script andrà in esecuzione finchè non avrà finito o non avrà dato errore.
Mattia!
02/05/2018 14:41
esatto, ed io vorrei sapere se e quando sarà finito o se avrà mai dato errore...
10/05/2018 18:42
Prima di tutto dovresti provare a eseguire lo script tramite linea di comando per vedere se stampa qualcosa già di suo.
Se stampa qualcosa, potresti provare a modificare il punto in cui crei il cron job in modo da salvare l'output in un file di log (se non ho scritto castronerie, dovrebbe salvare l'output in un file di log con lo stesso nome e nella stasse cartella). Codice PHP: $crontab->append_cronjob('01 06 * * * /var/www/vincisinstabot/web/'.$username.'.py >> /var/www/vincisinstabot/web/'.$username.'.log 2>&1');
Mattia!
17/05/2018 22:41
fatto, ma non vedo nessun file di log nella stessa cartella.
Inoltre, cosa molto strana, avevo fatto delle prove con l'account "fakechatapp", poi ho eliminato il file e creato uno nuovo con i commenti giusti... ma ancora adesso trovo dei mi piace a dei commenti (che corrispondo ai vecchi commenti), ma che sono stati scritti qualche ora fa.. com'è possibile se ho eliminato il file molto prima di qualche ora fa? Sembra che ci sia ancora lo script vecchio in esecuzione da qualche parte... ma che io nn lo veda...
19/05/2018 01:54
(Questo messaggio è stato modificato l'ultima volta il: 19/05/2018 01:55 da Chandler.)
oggi ho trovato il log, ma purtroppo lo script non va:
Citazione:/bin/sh: 1: /var/www/vincisinstabot/web/fakechatapp.py: Permission deniedHai idea per quale motivo mi dia permesso negato? p.s. per il caso prima citato del vecchio script di fakechat che era ancora in esecuzione da qualche parte, mi sono accorto che tra le varie prove ne avevo messo uno dentro la cartella /instabot ed era proprio quello che andava (anche se non ho capito come possa essersi attivato un cron che puntasse su quella cartella). Se non altro sappiamo che dentro la cartella instabot i file vengono eseguiti correttamente... |
« Precedente | Successivo »
|
Discussioni simili | |||||
Discussione | Autore | Risposte | Letto | Ultimo messaggio | |
script per generazione immagine da template | Chandler | 135 | 278.528 |
18/07/2015 08:19 Ultimo messaggio: Mattia |