Youtube embeds missing

Ciao @Iceman,

Non hai torto. Stai solo cercando di risolvere un problema, forse frustrato dal fatto che i tuoi embed di YouTube non funzionano…

Quando esegui questo comando:

# time rake posts:rebake_match['youtube',string,100]
           116 / 76598 (0.2%)- 

Poiché il ritardo è impostato su 100, verrà rigenerato solo un post ogni 100 secondi. Hai quasi 77.000 post da rigenerare (usando questo modello), quindi ci vorrebbero circa 90 giorni per completare l’operazione. Quando ho usato 100, era solo un esempio, non una raccomandazione; scusa se ti ho confuso :slight_smile:

Anche se cambi il ritardo a 10 secondi, la rigenerazione richiederà circa 9 giorni.

A quale velocità desideri effettivamente rigenerare i tuoi “cake YT”?

Puoi facilmente eseguire “Ricostruisci HTML” come amministratore cliccando sul pulsante sotto ogni post.

Grazie @neounix

Ho provato su un singolo post con un link YT:

root@cont-web-only:/var/www/discourse# rake posts:rebake_match['icemanworkingonthisheadache',string,5]
        1 / 1 (100.0%)
1 post completato!

Poi ho controllato quel post e mostra ancora solo il link, senza onebox. (Controllato senza cache, senza cookie, anche da un altro PC :stuck_out_tongue: )

Grazie @Overgrow.

Ho anche provato sia prima che dopo il comando di rebake (quello sopra) sullo stesso post e su un altro, senza successo.

Ciao @iceman,

Quindi, questa è una grande indizio; e ora sappiamo che persino rigenerare un singolo post con il task rake non risolve il tuo problema (abbiamo anche confermato che la ricostruzione HTML dall’interfaccia non funziona, come suggerito da @Overgrow), che è esattamente ciò che stavi cercando di dirci prima.

Grazie per la risoluzione dei problemi passo dopo passo.

Lasciami pensare a questo per un po’; nel frattempo, altri potrebbero avere alcune idee ora che il problema sta diventando più chiaro.


Modifica:


@Iceman

Pubblica uno dei tuoi link YT (quelli che non si risolvono, magari dove hai aggiunto il testo ‘icemanworkingonthisheadache’) qui e verifichiamo che l’onebox funzioni qui (e io proverò anche su uno dei miei siti di staging).

Certo, @neounix

Accade con qualsiasi video di YouTube, ma per coerenza, ecco due che ho provato specificamente per questo:


Modifica: Sì, funzionano qui.

Per completezza, non riesco a farli apparire nel pannello di anteprima sulla mia installazione.

Ma tutte le altre “non YT” one box vengono visualizzate correttamente sul tuo sito @Iceman?

Ciao @neounix

Sì, tutte le altre onebox funzionano come previsto: Discourse, Wordpress, SoundCloud, Facebook, Twitter, Vimeo, ecc. Solo YT viene visualizzato come URL.

Una cosa da provare è accedere a Google e visitare il sito di YouTube mentre sei proxyato attraverso il tuo server, per vedere se ti restituisce eventuali messaggi di errore “interessanti”.

Bene, se non riesci a far funzionare Onebox nell’editor per i nuovi post, non ha senso rifare il rebake dei vecchi post.

Devi prima far funzionare Onebox per i nuovi post (almeno assicurati che venga visualizzato correttamente nel pannello di anteprima).

E a proposito… la ricostruzione HTML dall’interfaccia utente equivale a un rebake.

Quindi, dopo una settimana di penitenza, ho fatto qualche progresso ma alla fine mi sono scontrato con un muro.

  • Tutti i dettagli menzionati sopra sono ancora validi.

  • Dopo aver fatto un lavoro straordinario di debug, è risultato che il problema era il seguente: quando ho creato il nuovo Droplet, ho colto l’occasione per aggiornare alcune cose che non ero riuscito a fare con quello originale. Una di queste era IPv6. Risulta che gli intervalli IPv6 di Digital Ocean sono per lo più bloccati da Google per qualche motivo cosmico. Quindi, un consiglio per il futuro: se stai configurando un’installazione Discourse su DO, non abilitare IPv6, perché non potrai rimuoverlo in seguito; dovrai cambiare Droplet.

  • Dopo aver corretto questo, tutto ha funzionato come previsto. Tuttavia, a causa della crescita normale (e di alcune recenti mosse di Alphabet), sono tornato a zero perché ora ricevo questo errore e non conosco alcun modo per “fermare” Discourse dall’elaborare gli onebox (ho persino provato ad aggiungere il dominio YT alla Blacklist, senza successo). Questo perché, secondo quel post che ho collegato, “dovrebbe sparire dopo un’ora”, ma non posso bloccare i miei rebake… o forse sì? Dovrei farlo? Le altre opzioni richiedono modifiche lato server, ma significherebbe… aggiungere più indirizzi IP? Forzare “X-Forwarded-For” nelle chiamate Onebox?

  • Inoltre, una domanda bonus: perché Discourse “si assume il carico” delle chiamate a YT? Voglio dire, questo errore suggerisce che è l’indirizzo IP del server a essere segnalato per tutte le chiamate (sì, è a causa dello srotolamento degli onebox), ma… perché non ricade sull’utente che carica la pagina? Per motivi di prestazioni?

Ciao @Iceman

Come soluzione temporanea, ho testato questo CSS (non elegante) per te e sembra funzionare per bloccare il onebox (dall’elaborazione); è un po’ come “colpire una mosca con un martello”, che puoi attivare e disattivare (aggiungere e rimuovere) finché non trovi qualcosa di meglio. Provaci e vedi:

.onebox-body{
    display:none;
}

Spero che questo ti aiuti.

Nota:

Ho testato questo su alcuni link onebox e il onebox (i onebox) sono scomparsi e il link è rimasto; ma non ho testato nel dettaglio, scusa.

Ferma semplicemente l’elaborazione corrente. Sai cosa ha innescato la ricottura (rebake) in esecuzione? È un’attività in background? Se sì, imposta semplicemente la configurazione rebake old posts count a zero.

Puoi quindi utilizzare la ricottura dei post YouTube selezionati (corrispondenti a un’espressione regolare) con ritardi..

Prima di tutto, grazie a entrambi @neounix @Overgrow

Riguardo a questo:

Lo testerò appena possibile. Finché mi blocca per poter fare i test, sono più che felice :smiley:

Riguardo alla domanda di @Overgrow:

Recentemente ho imparato (grazie a voi) come eseguire ricotture personalizzate ed eseguire alcune query e magie oscure. Tuttavia, posso chiedere come posso sapere/interrogare questo:

Cioè… è sulla console Ruby o uccidendo qualcosa su Sidekiq…?

rebake old posts count controlla quanti post contrassegnati con i vari task rake vengono elaborati ogni 15 minuti.

Ciao @riking,

Grazie per il tuo contributo. Solo una rapida domanda… come posso modificare quella impostazione? Rails Console?

Ciao @Iceman

È un’impostazione nell’interfaccia di amministrazione

Dio, mi sento proprio stupido :sweat_smile: Grazie @neounix!

Non riesco però a impostarlo a zero. L’interfaccia dice che il valore deve essere compreso tra 1 e 2.000.000.000. Quindi suppongo che lo imposti a 1 e lo combini con il tuo trucco… questo dovrebbe permettermi di vedere se il ban viene rimosso.

(Perché le altre opzioni sono molto più pesanti: nuovi IP, load balancer o forzare direttamente X-Forwarded-For su tutto, e non voglio rompere il funzionamento di Discourse :sweat:)

Aggiornerò presto!

FYI … Se hai bisogno di impostarlo a zero, molto probabilmente puoi farlo con una query di aggiornamento diretto al database (o tramite Rails, su cui non posso esprimere un parere competente)

Be’, niente da fare. L’ho lasciato con il valore 1 e con l’hack per non mostrare nulla, ma il Ban è ancora attivo dopo 5 ore. La parte peggiore? Ovviamente non c’è modo di contattarli, quindi sto solo cercando di indovinare come risolvere. :sweat:

Devi avere pazienza. Nella mia esperienza, potrebbero volerci fino a 2-3 giorni prima che il blocco venga rimosso. Assicurati solo che non ci siano ulteriori richieste a quell’indirizzo IP.

Puoi verificare se ci sono ancora lavori di rigenerazione da eseguire. L’indizio si trova nel codice (questa riga seleziona i post che devono essere rigenerati in background, limitati dall’impostazione rebake old posts count):

Stai cercando i seguenti post:

WHERE (((baked_version IS NULL) OR (baked_version < 2)) AND (deleted_at IS NULL))