top significado retweet para menciones como activar html search twitter embed

html - significado - twitter timeline



¿Cómo incrustar una línea de tiempo de Twitter sin retweets? (5)

Estoy incorporando una línea de tiempo de Twitter en mi sitio web. Sin embargo, mis retweets se muestran allí y no quiero que lo hagan.

¿Hay alguna manera fácil de desactivarlos? No puedo encontrar ninguna

Mi consulta de búsqueda es from:myaccount . También probé from:myaccount -RT , sin suerte. Puedo ocultar retweets con un widget de búsqueda, pero no se muestran los tweets anteriores a una semana, lo cual es inaceptable en mi caso.

Ocultar los tweets mediante magia CSS también estaría bien. Me las arreglé para descubrir que insertando manualmente

div.timeline-Tweet--isRetweet { display: none !important; }

en el CSS para el HTML incrustado funciona, pero no puedo hacerlo programáticamente.


Adaptación de mis comentarios

Para ir con la inyección de estilo hacky, simplemente ponga el siguiente código en la etiqueta de secuencia de comandos. Esto coloca la etiqueta de script https://platform.twitter.com/widgets.js en su página, por lo que ya no la necesita como una etiqueta de script separada.

// widgets script loading taken from Twitter window.twttr = (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); t._e = []; t.ready = function (f) { t._e.push(f); }; return t; }(document, "script", "twitter-wjs")); twttr.ready(function (twttr) { twttr.events.bind("rendered", function (event) { var widgetFrame = event.target; var retweets = widgetFrame.contentDocument.querySelectorAll(''div.timeline-Tweet--isRetweet''); retweets.forEach(function (node) { if (node.parentNode) { // (in)sanity check node.parentNode.style = ''display: none;'' // hide entire parent li tag } }) }); });

Observación al respecto

Tomamos el nodo padre como cada div.timeline-Tweet--isRetweet sienta en una etiqueta li que te da borde, por lo que terminas con un extraño borde doble después de los retweets ocultos. Creo que no hay forma de llegar a los padres a través de selectores de CSS, así que tenemos que hacer esto con un código.

Otra observación

El siguiente truco depende en gran medida de cómo se estructuran los contenidos de las líneas de tiempo y pueden cambiar sin la notificación de Twitter, por lo que corre el riesgo de que algún día se despierte con los pantalones caídos y los retweets en su línea de tiempo;)

Actualizar

ok aquí está v2 que escucha actualizaciones sobre ol ... pero después de escribirlo empiezo a entender los sentimientos del Dr. Frankenstein;)

window.twttr = (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); t._e = []; t.ready = function (f) { t._e.push(f); }; return t; }(document, "script", "twitter-wjs")); twttr.ready(function (twttr) { twttr.events.bind("rendered", function (event) { var frameDoc = event.target.contentDocument; // initially hide retweets var hideRetweets = function () { var retweets = frameDoc.querySelectorAll(''div.timeline-Tweet--isRetweet''); retweets.forEach(function (node) { if (node.parentNode && node.parentNode.style !== ''display: none;'') { // (in)sanity check node.parentNode.style = ''display: none;'' // hide entire parent li tag } }); }; hideRetweets(); // Twitter widget emitts no events on updates so we hook up ourselves to ol element to listen on it for additions of children var watcher = new MutationObserver(function (mutations) { // check whether new tweets arrived var hasNewTweets = mutations.some(function (mutation) { return mutation.addedNodes.length > 0; }); if (hasNewTweets) { hideRetweets(); // rescan all tweets as it is easier } }); watcher.observe(frameDoc.querySelector(''ol.timeline-TweetList''), { childList: true }); }); });


Aquí hay una manera de hacerlo usando su CSS.

El widget de línea de tiempo de Twitter crea un IFrame en el que estoy insertando una etiqueta de estilo que contiene su CSS. Eso tiene que suceder después de que el widget se haya cargado.

Por supuesto, esta es una forma frágil de hacerlo y podría no funcionar si Twitter cambia la forma en que muestra los cronogramas.

// initialisation copied from Twitter API documentation window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); t._e = []; t.ready = function(f) { t._e.push(f); }; return t; }(document, "script", "twitter-wjs")); twttr.ready(function(twttr) { twttr.events.bind("rendered", function(event) { var widgetIframe = event.target; var style = widgetIframe.contentDocument.createElement("style"); style.innerHTML = "div.timeline-Tweet--isRetweet { display: none}"; widgetIframe.contentDocument.head.appendChild(style); }); });

Aquí hay un violín con una comparación lado a lado de un feed utilizando esta técnica: https://jsfiddle.net/cLc84Lrs/2/


Creo que "de: myaccount -RT" debería funcionar, como ya mencionó Medet Tleukabiluly. Aunque hay algunas cosas que quiero agregar:

  1. -La consulta de RT seguirá incluyendo retweets entre comillas, ya que se parece más a tu propio tweet que a RT.
  2. Si desea un control total sobre los tweets, puede probar TwitterFetcher , que devuelve tweets como datos JSON en lugar de embeber iframe.

Es bastante fácil. Utilizaremos, por ejemplo, la cuenta de caitp88 para la demostración, y luego puede seguirla si quiere)

Como puede ver en su perfil, el último tweet es un Retweet

Pero no queremos retweets, ¿verdad?

Así que vamos a buscar formulario y escribir from:caitp88 -RT

Luego creamos un embed desde esta búsqueda Se abre la ventana de configuración de widgets, solo tiene que hacer clic en crear widget

El widget no contendrá ningún retweet
En acción:

No te olvides de cambiar caitp88 a tu propio mango de twitter

Y OBSERVAR: ESTA ES LA SOLUCIÓN OFICIAL Y LEGAL


Tiene algunas respuestas más arriba sobre cómo eliminar retweets, pero el problema con los datos históricos es que Twitter no proporciona datos de más de una semana en datos históricos. (pregunta relacionada con : : obtención de datos históricos de Twitter )

La respuesta a esto son los servicios pagos que brindan datos históricos (con algunas opciones gratuitas raras). Ejemplo de estos servicios son Gnip (con api histórico de Twitter) o Followthehashtag (allí puedes hacer 1 búsqueda gratis por día que da hasta 500 tweets desde 2006, pero no estoy seguro del soporte de api).