Consulta nuestras guías de comparación:
X API: Diccionario de datos de nivel empresarial
Introducción
Enterprise
Las Publicaciones son la unidad atómica fundamental de todo en X. Todas las X API que devuelven Publicaciones proporcionan esos datos codificados en formato JavaScript Object Notation (JSON). JSON se basa en pares clave-valor, con atributos con nombre y valores asociados. Los objetos de Publicación recuperados a través de la API incluyen la “actualización de estado” de un Usuario de X, pero los Retweets, las respuestas y los Tweets citados también son objetos de Publicación. Si una Publicación está relacionada con otra Publicación, como un Retweet, una respuesta o un Tweet citado, cada una se identificará o se incluirá en el objeto de Publicación. Incluso la Publicación más sencilla en el formato de datos nativo de X tendrá objetos JSON anidados para representar otros atributos de una Publicación, como el autor, los usuarios mencionados, la ubicación del lugar etiquetado, los hashtags, los símbolos de cashtag, los contenidos multimedia o los enlaces URL. Al trabajar con datos de X, este es un concepto importante que debes entender. El formato de los datos de la Publicación que recibirás desde la X API depende del tipo de Publicación recibida, de la X API que estés utilizando y de la configuración de formato.
Los endpoints de Enterprise que devuelven objetos de Publicación se han actualizado para proporcionar los metadatos necesarios para comprender el historial de edición de la Publicación. Obtén más información sobre estos metadatos en la página de fundamentos de “Editar Publicaciones”.
En el formato nativo de X, el payload JSON incluirá atributos de «nivel raíz» y objetos JSON anidados (representados aquí con la notación
{}):
Formatos de datos disponibles
Tenga en cuenta: se recomienda encarecidamente utilizar el formato Enriched Native para las APIs de datos empresariales.Las APIs de datos empresariales entregan datos en dos formatos diferentes. El formato empresarial más cercano al formato estándar v1.1 nativo es Native Enriched. El formato empresarial de datos heredado es Activity Streams, implementado originalmente y utilizado por Gnip como un formato normalizado en X y otros proveedores de datos de redes sociales en ese momento. Aunque este formato sigue estando disponible, X solo ha invertido en nuevas funciones y desarrollos en el formato Native Enriched desde 2017. El formato Native Enriched es exactamente lo que su nombre indica: incluye objetos nativos de X, así como enriquecimientos adicionales disponibles para los productos de datos empresariales, como metadatos de expansión de URL, geolocalización de perfil, metadatos de encuestas y métricas de interacción adicionales.
- El formato Enriched Native incluye todos los metadatos nuevos desde 2017, como los metadatos de encuestas, y métricas adicionales como
reply_countyquote_count.- El formato Activity Streams no se ha actualizado con nuevos metadatos ni enriquecimientos desde la actualización de caracteres en 2017.
- Enriquecimiento de URL expandidas y mejoradas
- Enriquecimiento de reglas de coincidencia
- Enriquecimiento de metadatos de encuestas
- Enriquecimiento de geolocalización de perfil
Comparación de objetos por formato de datos
| Native Enriched | Activity Streams |
|---|---|
| Link Objeto de Publicación | Link Objeto de actividad |
| Link Objeto de usuario | Link Objeto de actor |
| Link Objeto de entidades | Link Objeto de entidades de X |
| Link Objeto de entidades extendidas | [Link]/x-api/enterprise-gnip-2.0/fundamentals/data-dictionary#x-extended-entities Objeto de entidades extendidas de X |
| Link Objeto geográfico | Link Objeto de ubicación |
| n/a | Link Objeto de Gnip |
Mejores prácticas de análisis
- El JSON de X se codifica en UTF-8.
- Los analizadores deben tolerar sin problemas la variación en el orden de los campos. Debe suponerse que el JSON de la Publicación se sirve como un hash de datos no ordenado.
- Los analizadores deben tolerar la incorporación de campos “nuevos”.
- Los analizadores de JSON deben tolerar la ausencia de campos, ya que no todos los campos aparecen en todos los contextos.
- En general, es seguro considerar un campo con valor nulo, un conjunto vacío y la ausencia de un campo como equivalentes.
Objetos de datos de Enterprise Native Enriched
Objeto Tweet de Native Enriched
¿Te interesa aprender más sobre cómo el formato de datos Native Enriched se corresponde con el formato de X API v2? Consulta nuestra guía comparativa: Native Enriched comparado con X API v2
Objeto Post
id, created_at y text. Los objetos Post también tendrán objetos anidados que incluyen user, entities y extended_entities. Los objetos Post también tendrán otros objetos Post anidados, como retweeted_status, quoted_status y extended_tweet. El formato nativo enriquecido también tendrá un objeto matching_rules.
Diccionario de datos de X
| Atributo | Tipo | Descripción |
|---|---|---|
| created_at | String | Hora en UTC en la que se creó esta Publicación. Ejemplo: “created_at”: “Wed Oct 10 20:19:24 +0000 2018” |
| id | Int64 | La representación en entero del identificador único de esta Publicación. Este número es mayor que 53 bits y algunos lenguajes de programación pueden tener dificultades o producir defectos silenciosos al interpretarlo. Es seguro usar un entero con signo de 64 bits para almacenar este identificador. Usa id_str para obtener el identificador de forma segura. Consulta X IDs para obtener más información. Ejemplo:“id”:1050118621198921728 |
| id_str | String | La representación en forma de cadena del identificador único de esta Publicación. Las implementaciones deben usar esto en lugar del entero de gran tamaño en id. Ejemplo:“id_str”:“1050118621198921728” |
| text | String | El texto real en UTF-8 de la actualización de estado. Consulta X-text para obtener detalles sobre qué caracteres se consideran actualmente válidos. Ejemplo: “text”:“Para dejar espacio para más expresión, a partir de ahora contaremos todos los emojis por igual, incluidos los que tienen género y tono de piel t… https://t.co/MkGjXf9aXm” |
| source | String | Herramienta que se utiliza para publicar la Publicación, como una cadena con formato HTML. Las Publicaciones desde el sitio web de X tienen un valor de origen web.Ejemplo: “source”:“X Web Client” |
| truncated | Boolean | Indica si el valor del parámetro text fue truncado, por ejemplo, como resultado de un retweet que supera el límite de longitud de texto de 140 caracteres de la Publicación original. El texto truncado terminará en puntos suspensivos, como .... Dado que X ahora rechaza las Publicaciones largas en lugar de truncarlas, la gran mayoría de las Publicaciones tendrá este valor establecido en false. Ten en cuenta que, aunque los retweets nativos pueden tener su propiedad text de nivel superior acortada, el texto original estará disponible en el objeto retweeted_status y el parámetro truncated se establecerá con el valor del estado original (en la mayoría de los casos, false). Ejemplo:“truncated”:true |
| in_reply_to_status_id | Int64 | Nullable. Si la Publicación representada es una respuesta, este campo contendrá la representación en entero del identificador de la Publicación original. Ejemplo: “in_reply_to_status_id”:1051222721923756032 |
| in_reply_to_status_id_str | String | Nullable. Si la Publicación representada es una respuesta, este campo contendrá la representación en forma de cadena del id de la Publicación original. Ejemplo: “in_reply_to_status_id_str”:“1051222721923756032” |
| in_reply_to_user_id | Int64 | Nullable. Si la Publicación representada es una respuesta, este campo contendrá la representación entera del ID del autor de la Publicación original. Esto no necesariamente será siempre el usuario mencionado directamente en la Publicación. Ejemplo: “in_reply_to_user_id”:6253282 |
| in_reply_to_user_id_str | String | Nullable. Si la Publicación representada es una respuesta, este campo contendrá la representación en formato de cadena del id del autor de la Publicación original. No tiene por qué ser siempre el usuario mencionado directamente en la Publicación. Ejemplo: “in_reply_to_user_id_str”:“6253282” |
| in_reply_to_screen_name | String | Nullable. Si la Publicación representada es una respuesta, este campo contendrá el nombre de usuario del autor de la Publicación original. Ejemplo: “in_reply_to_screen_name”:“xapi” |
| user | Objeto de usuario | El usuario que publicó esta Publicación. Consulta el diccionario de datos de usuario para obtener la lista completa de atributos. Ejemplo que destaca algunos atributos seleccionados: { “user”: <br/> “id”: 6253282, “id_str”: “6253282”, “name”: “X API”, “screen_name”: “API”, “location”: “San Francisco, CA”, “url”: “https://developer.x.com”, “description”: “The Real X API. Tweets about API changes, service issues and our Developer Platform. Don’t get an answer? It’s on my website.”, “verified”: true, “followers_count”: 6129794, “friends_count”: 12, “listed_count”: 12899, “favourites_count”: 31, “statuses_count”: 3658, “created_at”: “Wed May 23 06:01:13 +0000 2007”, “utc_offset”: null, “time_zone”: null, “geo_enabled”: false, “lang”: “en”, “contributors_enabled”: false, “is_translator”: false, “profile_background_color”: “null”, “profile_background_image_url”: “null”, “profile_background_image_url_https”: “null”, “profile_background_tile”: null, “profile_link_color”: “null”, “profile_sidebar_border_color”: “null”, “profile_sidebar_fill_color”: “null”, “profile_text_color”: “null”, “profile_use_background_image”: null, “profile_image_url”: “null”, “profile_image_url_https”: “https://pbs.twimg.com/profile_images/942858479592554497/BbazLO9L_normal.jpg”, “profile_banner_url”: “https://pbs.twimg.com/profile_banners/6253282/1497491515”, “default_profile”: false, “default_profile_image”: false, “following”: null, “follow_request_sent”: null, “notifications”: null } } |
| coordinates | Objeto de coordenadas | Nullable. Representa la ubicación geográfica de esta Publicación según lo indicado por el usuario o la aplicación cliente. El arreglo interno de coordenadas se encuentra en formato geoJSON (longitud primero y luego latitud). Ejemplo: “coordinates”: <br/> “coordinates”: [ -75.14310264, 40.05701649 ], “type”:“Point” } |
| place | Objeto de lugar | Nullable Cuando está presente, indica que la Publicación está asociada (pero no necesariamente procedente de) un Place Ejemplo: “place”: <br/> “attributes”:, “bounding_box”: <br/> “coordinates”: [[ [-77.119759,38.791645], [-76.909393,38.791645], [-76.909393,38.995548], [-77.119759,38.995548] ]], “type”:“Polygon” }, “country”:“United States”, “country_code”:“US”, “full_name”:“Washington, DC”, “id”:“01fbe706f872cb32”, “name”:“Washington”, “place_type”:“city”, “url”:“http://api.x.com/1/geo/id/0172cb32.json” } |
| quoted_status_id | Int64 | Este campo solo aparece cuando la Publicación es un Tweet citado. Este campo contiene el valor entero del ID de la Publicación del Tweet citado. Ejemplo: “quoted_status_id”:1050119905717055488 |
| quoted_status_id_str | String | Este campo solo aparece cuando la Publicación es un Tweet citado. Esta es la representación en forma de cadena del ID de la Publicación del Tweet citado. Ejemplo: “quoted_status_id_str”:“1050119905717055488” |
| is_quote_status | Boolean | Indica si se trata de un Tweet citado. Ejemplo: “is_quote_status”:false |
| quoted_status | Post | Este campo solo aparece cuando la publicación es un Tweet citado. Este atributo contiene el objeto Post de la publicación original que fue citada. |
| retweeted_status | Publicación | Los usuarios pueden amplificar la difusión de Publicaciones creadas por otros usuarios mediante retuits. Los retuits se pueden distinguir de las Publicaciones típicas por la existencia del atributo retweeted_status. Este atributo contiene una representación de la Publicación original que fue retuiteada. Ten en cuenta que los retuits de retuits no muestran representaciones del retuit intermedio, sino solo de la Publicación original. (Los usuarios también pueden anular un retuit que hayan creado eliminando su propio retuit.) |
| quote_count | Entero | Nullable. Indica el número aproximado de veces que esta Publicación ha sido citada por usuarios de X. Ejemplo: “quote_count”:33 Nota: Este objeto solo está disponible con los productos de nivel Premium y Enterprise. |
| reply_count | Int | Número de veces que se ha respondido a esta Publicación. Ejemplo: “reply_count”:30 Nota: Este objeto solo está disponible con los productos de nivel Premium y Enterprise. |
| retweet_count | Int | Número de veces que esta Publicación ha sido retuiteada. Ejemplo: “retweet_count”:160 |
| favorite_count | Entero | Nullable. Indica aproximadamente cuántas veces esta Publicación ha recibido “Me gusta” de usuarios de X. Ejemplo: “favorite_count”:295 |
| entities | Entidades | Entidades que se han extraído del texto de la Publicación. Consulta también Entities in X Objects. Ejemplo: “entities”: <br/> “hashtags”:[], “urls”:[], “user_mentions”:[], “media”:[], “symbols”:[] “polls”:[] } |
| extended_entities | Entidades extendidas | Cuando hay entre una y cuatro fotos nativas, o un video o un GIF animado en la Publicación, este campo contiene un array de metadatos ‘media’. Esto también está disponible en Tweets citados. Consulte también Entidades en objetos de X . Ejemplo: “entities”: <br/> “media”:[] } |
| favorited | Booleano | Nullable. Indica si esta Publicación ha sido marcada con “Me gusta” por el usuario autenticado. Ejemplo: “favorited”:true |
| retweeted | Booleano | Indica si esta publicación ha sido retuiteada por el usuario autenticado. Ejemplo: “retweeted”:false |
| possibly_sensitive | Booleano | Nullable. Este campo indica que el contenido puede considerarse como sensible. El autor de la Publicación puede ir a las preferencias de su cuenta y elegir “Marcar el contenido multimedia que publiques como material potencialmente sensible” para que cada Publicación creada a partir de ese momento tenga este indicador establecido. Esto también puede ser evaluado y etiquetado por un agente interno de soporte de X. ”possibly_sensitive”:false |
| filter_level | Cadena | Indica el valor máximo del parámetro filter_level que se puede utilizar y aun así seguir transmitiendo esta Publicación. Por lo tanto, un valor de medium se transmitirá en los streams none, low y medium.Ejemplo: “filter_level”: “low” |
| lang | Cadena | Permite valores nulos. Cuando está presente, indica un identificador de idioma BCP 47 correspondiente al idioma detectado automáticamente en el texto de la Publicación, o und si no se pudo detectar ningún idioma. Ejemplo: “lang”: “en” |
| edit_history | Objeto | Identificadores únicos que indican todas las versiones de una Publicación. Para las Publicaciones sin ediciones, habrá un ID. Para las Publicaciones con un historial de ediciones, habrá varios ID, ordenados en forma ascendente que refleja el orden de las ediciones, con la versión más reciente en la última posición del array. Los ID de la Publicación se pueden usar para hidratar y consultar versiones anteriores de una Publicación. Ejemplo: edit_history”: <br/> “initial_tweet_id”: “1283764123” “edit_tweet_ids”: [“1283764123”, “1394263866”] } |
| edit_controls | Objeto | Cuando está presente, indica durante cuánto tiempo más una Publicación sigue siendo editable y cuántas ediciones restantes tiene. Las Publicaciones solo son editables durante los primeros 30 minutos después de su creación y se pueden editar hasta cinco veces. Los id de la Publicación se pueden usar para hidratar y ver versiones anteriores de una Publicación. Ejemplo: “edit_controls”: <br/> “editable_until_ms”: 123 “edits_remaining”: 3 } |
| editable | Booleano | When present, indicates if a Publicación era apta para edición cuando se publicó. This field is not dynamic and won’t toggle from True to False when a Publicación reaches its editable time limit, or maximum number of edits. The following Publicación features will cause this field to be false: * La Publicación está promocionada * La Publicación tiene una encuesta * La Publicación es una respuesta en un hilo de otro usuario * La Publicación es un retweet (ten en cuenta que los Quote Tweets son aptos para edición) * La Publicación es nullcast * Publicación de Comunidad * Publicación de Superfollow * Publicación colaborativa |
| matching_rules | Matriz de objetos de reglas | Presente en productos filtered como X Search y PowerTrack. Proporciona el id y la tag asociados a la regla que coincidió con la Publicación. Más información sobre las reglas de coincidencia aquí. Con PowerTrack, más de una regla puede coincidir con una misma Publicación. Ejemplo: “matching_rules”: ” [<br/> “tag”: “xapi emojis”, “id”: 1050118621198921728, “id_str”: “1050118621198921728” }]“ |
Atributos adicionales de la Publicación
| Attribute | Type | Description |
|---|---|---|
| current_user_retweet | Object | Perspectival. Solo se muestra en métodos que admiten el parámetro include_my_retweet, cuando se establece en true. Indica el ID de la Publicación correspondiente al propio retweet del usuario (si existe) de esta Publicación. Ejemplo: “current_user_retweet”: <br/> “id”: 6253282, “id_str”: “6253282” } |
| scopes | Object | Un conjunto de pares clave-valor que indican la entrega contextual prevista de la Publicación que lo contiene. Actualmente se utiliza en los Promoted Products de X. Ejemplo: “scopes”:{“followers”:false} |
| withheld_copyright | Boolean | Cuando está presente y establecido en “true”, indica que este contenido se ha retenido debido a una denuncia en virtud de la DMCA. Ejemplo: “withheld_copyright”: true |
| withheld_in_countries | Array of String | Cuando está presente, indica una lista de códigos de país de dos letras en mayúsculas de los que se retiene este contenido. X admite los siguientes valores que no son países para este campo: “XX” - El contenido se retiene en todos los países “XY” - El contenido se retiene debido a una solicitud DMCA. Ejemplo: “withheld_in_countries”: [“GR”, “HK”, “MY”] |
| withheld_scope | String | Cuando está presente, indica si el contenido que se retiene es el “status” o un “user”. Ejemplo: “withheld_scope”: “status” |
Atributos obsoletos
| Campo | type | Descripción |
| geo | Object | Obsoleto. Nullable. Utiliza el campo coordinates en su lugar. Este atributo obsoleto formatea sus coordenadas como [lat, long], mientras que el resto de la información geográfica de la Publicación se formatea como [long, lat]. |
Objetos de Publicación anidados
retweeted_status. El objeto de nivel raíz encapsula el propio Retweet, incluido un objeto de User para la cuenta que realiza la acción de Retweet y la hora del Retweet. Hacer Retweet es una acción para compartir una Publicación con tus seguidores, y no se puede añadir ningún contenido nuevo. Además, no se puede proporcionar una ubicación (nueva) con un Retweet. Aunque la Publicación «original» pueda estar geolocalizada, los objetos geo y place del Retweet siempre serán null.
Incluso antes de la introducción de las Publicaciones extendidas, el objeto entities de nivel raíz estaba en algunos casos truncado e incompleto debido a que se agregaba la cadena RT @username al mensaje de la Publicación a la que se hacía Retweet. Ten en cuenta que, si a un Retweet se le vuelve a hacer Retweet, el retweet_status seguirá apuntando a la Publicación original, lo que significa que el Retweet intermedio no se incluye. Se observa un comportamiento similar al usar x.com para «mostrar» un Retweet. Si copias el id de Publicación único asignado a la «acción» de Retweet, se muestra la Publicación original.
A continuación se muestra una estructura de ejemplo para un Retweet. De nuevo, al analizar Retweets, es clave analizar el objeto retweeted_status para obtener el mensaje completo de la Publicación original y los metadatos de entidades.
Tweets citados
Publicaciones extendidas
Objeto de usuario enriquecido nativo
Diccionario de datos de usuario
| Atributo | type | Descripción |
|---|---|---|
| id | Int64 | La representación entera del identificador único de este usuario. Este número es superior a 53 bits y algunos lenguajes de programación pueden tener dificultades o errores silenciosos al interpretarlo. Es seguro utilizar un entero con signo de 64 bits para almacenar este identificador. Usa id_str para obtener el identificador de forma segura. Consulta X IDs para obtener más información. Ejemplo:“id”: 6253282 |
| id_str | String | La representación en forma de cadena del identificador único de este usuario. Las implementaciones deberían usar esto en lugar del entero grande, posiblemente no manejable, en id. Ejemplo:“id_str”: “6253282” |
| name | String | El nombre del usuario, tal como lo ha definido. No necesariamente el nombre de una persona. Por lo general, tiene un máximo de 50 caracteres, pero está sujeto a cambios. Ejemplo: “name”: “API” |
| screen_name | String | El nombre de pantalla, identificador o alias con el que este usuario se identifica. Los screen_names son únicos, pero pueden cambiar. Usa id_str como identificador de usuario siempre que sea posible. Suele tener un máximo de 15 caracteres, aunque algunas cuentas históricas pueden tener nombres más largos. Ejemplo:“screen_name”: “api” |
| location | String | Nullable . La ubicación definida por el usuario para el perfil de esta cuenta. No es necesariamente una ubicación ni es legible por máquinas. Ocasionalmente, este campo será interpretado de forma aproximada por el servicio de búsqueda. Ejemplo: “location”: “San Francisco, CA” |
| derived | Array de objetos de enriquecimiento | Solo para APIs Enterprise. Colección de metadatos de enriquecimiento derivados para el usuario. Proporciona los metadatos de enriquecimiento de Profile Geo. Consulta la documentación de referencia para obtener más información, incluidos los diccionarios de datos JSON. Ejemplo: “derived”:“locations”: [“country”:“United States”,“country_code”:“US”,“locality”:“Denver”] |
| url | String | Nullable. Una URL proporcionada por el usuario relacionada con su perfil. Ejemplo: “url”: “https://developer.x.com” |
| description | String | Nullable . Cadena UTF-8 definida por el usuario que describe su cuenta. Ejemplo: “description”: “The Real X API.” |
| protected | Boolean | Cuando es true, indica que este usuario ha optado por proteger sus Publicaciones. Consulta Acerca de las Publicaciones públicas y protegidas . Ejemplo: “protected”: true |
| verified | Boolean | Cuando es true, indica que el usuario tiene una cuenta verificada. Consulta Cuentas verificadas. Ejemplo: “verified”: false |
| followers_count | Int | El número de seguidores que esta cuenta tiene actualmente. En determinadas condiciones adversas, este campo indicará temporalmente “0”. Ejemplo: “followers_count”: 21 |
| friends_count | Int | El número de usuarios a los que esta cuenta sigue (también conocidos como sus «followings»). En determinadas condiciones de carga, este campo indicará temporalmente “0”. Ejemplo: “friends_count”: 32 |
| listed_count | Int | El número de listas públicas de las que este usuario es miembro. Ejemplo: “listed_count”: 9274 |
| favourites_count | Int | Número de Publicaciones que este usuario ha indicado como que le gustan durante toda la vida de la cuenta. Se utiliza la ortografía británica en el nombre del campo por razones históricas. Ejemplo: “favourites_count”: 13 |
| statuses_count | Int | El número de Publicaciones (incluidos los retweets) realizadas por el usuario. Ejemplo: “statuses_count”: 42 |
| created_at | String | La fecha y hora en UTC en la que se creó la cuenta de usuario en X. Ejemplo: “created_at”: “Mon Nov 29 21:18:15 +0000 2010” |
| profile_banner_url | String | La URL basada en HTTPS que apunta a la representación web estándar del banner de perfil cargado por el usuario. Al añadir un elemento adicional al final de la ruta de la URL, es posible obtener diferentes tamaños de imagen optimizados para pantallas específicas. Para las variantes de tamaños, consulta User Profile Images and Banners. Ejemplo: “profile_banner_url”: “https://si0.twimg.com/profile_banners/819797/1348102824” |
| profile_image_url_https | String | Una URL basada en HTTPS que apunta a la imagen de perfil del usuario. Ejemplo: “profile_image_url_https”: “https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png” |
| default_profile | booleano | Cuando es true, indica que el usuario no ha modificado el tema ni el fondo de su perfil. Ejemplo: “default_profile”: false |
| default_profile_image | booleano | Cuando es true, indica que el usuario no ha subido una imagen de perfil propia y se utiliza una imagen predeterminada en su lugar. Ejemplo: “default_profile_image”: false |
Atributos en desuso (ya no admitidos)
| Field | Type | Description |
|---|---|---|
| utc_offset | null | El valor se establecerá en null. Sigue disponible mediante GET account/settings |
| time_zone | null | El valor se establecerá en null. Sigue disponible mediante GET account/settings como tzinfo_name |
| lang | null | El valor se establecerá en null. Sigue disponible mediante GET account/settings como language |
| geo_enabled | null | El valor se establecerá en null. Sigue disponible mediante GET account/settings. Este campo debe ser true para que el usuario actual pueda adjuntar datos geográficos cuando use POST statuses / update |
| following | null | El valor se establecerá en null. Sigue disponible mediante GET friendships/lookup |
| follow_request_sent | null | El valor se establecerá en null. Sigue disponible mediante GET friendships/lookup |
| has_extended_profile | null | Obsoleto. El valor se establecerá en null. |
| notifications | null | Obsoleto. El valor se establecerá en null. |
| profile_location | null | Obsoleto. El valor se establecerá en null. |
| contributors_enabled | null | Obsoleto. El valor se establecerá en null. |
| profile_image_url | null | Obsoleto. El valor se establecerá en null. NOTA: Las imágenes de perfil solo están disponibles mediante el campo profile_image_url_https. |
| profile_background_color | null | Obsoleto. El valor se establecerá en null. |
| profile_background_image_url | null | Obsoleto. El valor se establecerá en null. |
| profile_background_image_url_https | null | Obsoleto. El valor se establecerá en null. |
| profile_background_tile | null | Obsoleto. El valor se establecerá en null. |
| profile_link_color | null | Obsoleto. El valor se establecerá en null. |
| profile_sidebar_border_color | null | Obsoleto. El valor se establecerá en null. |
| profile_sidebar_fill_color | null | Obsoleto. El valor se establecerá en null. |
| profile_text_color | null | Obsoleto. El valor se establecerá en null. |
| profile_use_background_image | null | Obsoleto. El valor se establecerá en null. |
| is_translator | null | Obsoleto. El valor se establecerá en null. |
| is_translation_enabled | null | Obsoleto. El valor se establecerá en null. |
| translator_type | null | Obsoleto. El valor se establecerá en null. |
Ejemplo de objeto de usuario:
Objetos Geo Nativos Enriquecidos
place siempre está presente cuando una Publicación está etiquetada con ubicación mediante un Place. Los Places son ubicaciones específicas y con nombre, con coordenadas geográficas correspondientes. Cuando los usuarios deciden asignar una ubicación a su Publicación, se les presenta una lista de X Places candidatos. Cuando se usa la API para publicar, se puede adjuntar un X Place especificando un place_id al publicar. Las Publicaciones asociadas con Places no necesariamente se emiten desde esa ubicación, sino que también podrían potencialmente tratarse sobre esa ubicación.
Los objetos geo y coordinates solo están presentes (no nulos) cuando a la Publicación se le asigna una ubicación exacta. Si se proporciona una ubicación exacta, el objeto coordinates proporcionará un arreglo [long, lat] con las coordenadas geográficas, y se asignará un X Place que corresponda a esa ubicación.
Diccionario de datos de Place
| Field | Type | Description |
|---|---|---|
| id | String | ID que representa este lugar. Ten en cuenta que se representa como una cadena, no como un entero. Ejemplo: “id”:“01a9a39529b27f36” |
| url | String | URL que representa la ubicación de metadatos adicionales de este lugar. Ejemplo: “url”:“https://api.x.com/1.1/geo/id/01a9a39529b27f36.json” |
| place_type | String | El tipo de ubicación representada por este lugar. Ejemplo: “place_type”:“city” |
| name | String | Representación breve y legible por humanos del nombre del lugar. Ejemplo: “name”:“Manhattan” |
| full_name | String | Representación completa y legible por humanos del nombre del lugar. Ejemplo: “full_name”:“Manhattan, NY” |
| country_code | String | Código de país abreviado que representa el país que contiene este lugar. Ejemplo: “country_code”:“US” |
| country | String | Nombre del país que contiene este lugar. Ejemplo: “country”:“United States” |
| bounding_box | Objeto | Un cuadro delimitador de coordenadas que encierra este lugar. Ejemplo: “bounding_box”: “coordinates”: [ [ [ -74.026675, 40.683935 ], [ -74.026675, 40.877483 ], [ -73.910408, 40.877483 ], [ -73.910408, 40.3935 ] ] ], “type”: “Polygon” |
| attributes | Object | Cuando se utilizan PowerTrack, las API 30-Day y Full-Archive Search y Volume Streams, este hash es null. Ejemplo: “attributes”: |
| Field | Type | Description |
| coordinates | Array of Array of Array of Float | Una serie de puntos de longitud y latitud que definen un cuadro delimitador (bounding box) que contendrá la entidad Place con la que está asociado este bounding box. Cada punto es un array con la forma [longitude, latitude]. Los puntos se agrupan en un array por cada bounding box. Los arrays de bounding box se envuelven en un array adicional para ser compatibles con la notación de polígono. Ejemplo: “coordinates”: [ [ [ -74.026675, 40.683935 ], [ -74.026675, 40.877483 ], [ -73.910408, 40.877483 ], [ -73.910408, 40.3935 ] ] ] |
| type | String | El tipo de datos codificados en la propiedad coordinates. Será “Polygon” para bounding boxes y “Point” para Publicaciones con coordenadas exactas. Ejemplo: “type”:“Polygon” |
Diccionario de datos del objeto Geo
| Campo | Type | Descripción |
| coordinates | Collection of Float | La longitud y la latitud de la ubicación de la Publicación, como una colección con la forma [latitude, longitude]. Ejemplo: ** “geo”: “type”:** “Point”, ** “coordinates”: [ 54.27784, -0.41068 ] ** |
| type | String | El tipo de datos que se codifica en la propiedad coordinates. Será “Point” para los campos de coordenadas de la Publicación. Ejemplo: “type”: “Point” |
| Campo | Type | Descripción |
| coordinates | Collection of Float | La longitud y la latitud de la ubicación de la Publicación, como una colección con la forma [longitude, latitude]. Ejemplo: ** “coordinates”: “type”:** “Point”, ** “coordinates”: [ -0.41068, 54.27784 ] ** |
| type | String | El tipo de datos que se codifica en la propiedad coordinates. Será “Point” para los campos de coordenadas de la Publicación. Ejemplo: “type”: “Point” |
Ubicaciones derivadas
| Field | type | Descripción |
| derived | objeto locations | Ubicación derivada a partir del enriquecimiento geográfico del perfil “derived”: “locations”: [ ** “country”:** “United Kingdom”, “country_code”: “GB”, “locality”: “Yorkshire”, “region”: “England”, “full_name”: “Yorkshire, England, United Kingdom”, ** “geo”: “coordinates”: [ -1.5, 54 ], “type”:** “point” ** ] ** |
Ejemplos:
Entidades de X
Introducción
Las entidades proporcionan metadatos e información contextual adicional sobre el contenido publicado en X. La secciónentities proporciona arrays de elementos comunes incluidos en las Publicaciones: hashtags, menciones de usuarios, enlaces, símbolos bursátiles (tickers), encuestas de X y medios adjuntos. Estos arrays son prácticos para los desarrolladores al procesar Publicaciones, ya que X ha preprocesado, o preanalizado, esencialmente el cuerpo de texto. En lugar de tener que buscar y encontrar explícitamente estas entidades en el cuerpo de la Publicación, tu analizador puede ir directamente a esta sección JSON y allí estarán.
Además de proporcionar estas facilidades de análisis, la sección entities también ofrece metadatos útiles que “añaden valor”. Por ejemplo, si estás usando el Enhanced URLs enrichment, los metadatos de URL incluyen las URL totalmente expandidas, así como los títulos y descripciones de los sitios web asociados. Otro ejemplo es cuando hay menciones de usuarios; los metadatos de entidades incluyen el id numérico de usuario, que es útil al realizar solicitudes a muchas X API.
Cada carga útil JSON de una Publicación incluye una sección entities, con el conjunto mínimo de atributos hashtags, urls, user_mentions y symbols, incluso si ninguna de esas entidades forma parte del mensaje de la Publicación. Por ejemplo, si examinas el JSON de una Publicación con un cuerpo de “Hello World!” y sin medios adjuntos, el JSON de la Publicación incluirá el siguiente contenido con arrays de entidades que contienen cero elementos:
- las entidades media y polls solo aparecerán cuando ese tipo de contenido forme parte de la Publicación.
- si trabajas con contenido multimedia nativo (fotos, videos o GIFs), el Extended Entities object es la opción recomendada.
Objeto Entities
entities y extended_entities están compuestas por arrays de objetos de entidad. A continuación se incluyen descripciones de cada uno de estos objetos de entidad, incluidos diccionarios de datos que describen los nombres de los atributos del objeto, sus tipos y una breve descripción. También indicaremos qué operadores de PowerTrack coinciden con estos atributos e incluiremos algunos ejemplos de payloads JSON.
Una colección de entidades comunes que se encuentran en las Publicaciones, incluidas las etiquetas (hashtags), los enlaces y las menciones de usuarios. Este objeto entities sí incluye un atributo media, pero su implementación en la sección entiites solo es completamente precisa para Publicaciones con una sola foto. Para todas las Publicaciones con más de una foto, un video o un GIF animado, se remite al lector a la sección extended_entities.
Diccionario de datos de Entities
entities es un contenedor de arrays de otros subobjetos de entidades. Después de ilustrar la estructura de entities, se proporcionarán diccionarios de datos para estos subobjetos y los Operadores que coinciden con ellos.
| Campo | type | Descripción |
|---|---|---|
| hashtags | Array de objetos Hashtag | Representa los hashtags extraídos del texto de la Publicación. Ejemplo: “hashtags”: [ “indices”: [ 32, 38 ], “text”: “nodejs” ] |
| media | Array de objetos Media | Representa elementos multimedia adjuntos a la Publicación. Ejemplo: “media”: [ “display_url”: “pic.x.com/5J1WJSRCy9”, “expanded_url”: “https://x.com/nolan_test/status/930077847535812610/photo/1”, “id”: 9.300778475358126e17, “id_str”: “930077847535812610”, “indices”: [ 13, 36 ], “media_url”: “http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg” “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 , “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 , “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 , “small”: “h”: 454, “resize”: “fit”, “w”: 680 , “type”: “photo”, “url”: “https://t.co/5J1WJSRCy9”, ] |
| urls | Array de Objetos URL | Representa las URL que se incluyen en el texto de una Publicación. Ejemplo (sin el enriquecimiento Enhanced URLs habilitado): “urls”: [ “indices”: [ 32, 52 ], “url”: “http://t.co/IOwBrTZR”, “display_url”: “youtube.com/watch?v=oHg5SJ…”, “expanded_url”: “http://www.youtube.com/watch?v=oHg5SJYRHA0” ] Ejemplo (con el enriquecimiento Enhanced URLs habilitado): “urls”: [ “url”: “https://t.co/D0n7a53c2l”, “expanded_url”: “http://bit.ly/18gECvy”, “display_url”: “bit.ly/18gECvy”, “unwound”: “url”: “https://www.youtube.com/watch?v=oHg5SJYRHA0”, “status”: 200, “title”: “RickRoll’D”, “description”: “http://www.facebook.com/rickroll548 As long as trolls are still trolling, the Rick will never stop rolling.” , “indices”: [ 62, 85 ] ] |
| user_mentions | Array de objetos de mención de usuario | Representa a otros usuarios de X mencionados en el texto de la Publicación. Ejemplo: “user_mentions”: [ “name”: “X API”, “indices”: [ 4, 15 ], “screen_name”: “xapi”, “id”: 6253282, “id_str”: “6253282” ] |
| symbols | Array de objetos Symbol | Representa símbolos, es decir, $cashtags, incluidos en el texto de la Publicación. Ejemplo: “symbols”: [ “indices”: [ 12, 17 ], “text”: “twtr” ] |
| polls | Array de objetos Poll | Representa las encuestas de X incluidas en la Publicación. Ejemplo: “polls”: [ “options”: [ “position”: 1, “text”: “Leo la documentación una vez.” , “position”: 2, “text”: “Leo la documentación dos veces.” }, “position”: 3, “text”: “Leo la documentación una y otra vez.” } ], “end_datetime”: “Thu May 25 22:20:27 +0000 2017”, “duration_minutes”: 60 ] |
Objeto de hashtag
entities contendrá un array hashtags con un objeto por cada hashtag incluido en el cuerpo de la Publicación, e incluirá un array vacío si no hay hashtags presentes.
El operador PowerTrack # se utiliza para hacer coincidir el atributo text. El operador has:hashtags coincidirá si hay al menos un elemento en el array.
| Field | type | Description |
| indices | Array de Int | Un array de enteros que indica los desplazamientos dentro del texto de la Publicación donde el hashtag comienza y termina. El primer entero representa la ubicación del carácter # en la cadena de texto de la Publicación. El segundo entero representa la ubicación del primer carácter después del hashtag. Por lo tanto, la diferencia entre los dos números será la longitud del nombre del hashtag más uno (por el carácter #). Ejemplo:“indices”:[32,38] |
| text | String | Nombre del hashtag, sin el carácter inicial #. Ejemplo:“text”:“nodejs” |
Objeto multimedia
entities contendrá un array media que incluirá un único objeto multimedia si se ha “adjuntado” algún objeto multimedia a la Publicación. Si no se ha adjuntado contenido multimedia nativo, no habrá ningún array media en entities. Por las siguientes razones, se debe usar la sección extended_entities para procesar el contenido multimedia nativo de la Publicación:
- El
typedel contenido multimedia siempre indicaráphotoincluso en los casos en que se adjunte un video o un GIF a la Publicación. - Aunque se pueden adjuntar hasta cuatro fotos, solo la primera se incluirá en la sección
entities.
has:media coincidirá si este array contiene elementos.
| Campo | Tipo | Descripción |
| display_url | Cadena | URL del contenido multimedia que se muestra a los clientes. Ejemplo: “display_url”:“pic.x.com/rJC5Pxsu” |
| expanded_url | Cadena | Una versión ampliada de display_url. Enlaza a la página de visualización del contenido multimedia. Ejemplo: “expanded_url”: “http://x.com/yunorno/status/114080493036773378/photo/1” |
| id | Int64 | ID del contenido multimedia, expresado como entero de 64 bits. Ejemplo: “id”:114080493040967680 |
| id_str | Cadena | ID del contenido multimedia expresado como una cadena de texto. Ejemplo: “id_str”:“114080493040967680” |
| indices | Array de enteros | Una matriz de enteros que indica los desplazamientos dentro del texto de la Publicación donde la URL comienza y termina. El primer entero representa la ubicación del primer carácter de la URL en el texto de la Publicación. El segundo entero representa la ubicación del primer carácter que no forma parte de la URL y que aparece después de la URL (o el final de la cadena si la URL es la última parte del texto de la Publicación). Ejemplo: “indices”:[15,35] |
| media_url | Cadena | Una URL http:// que apunta directamente al archivo multimedia cargado. Ejemplo: “media_url”:“http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg” Para contenido multimedia en mensajes directos, media_url es la misma URL https que media_url_https y solo se puede acceder firmando una solicitud con el token de acceso del usuario usando OAuth 1.0a.No es posible acceder a las imágenes mediante una sesión autenticada en x.com. Visita esta página para aprender cómo tener en cuenta estos cambios recientes. No puedes incrustar estas imágenes directamente en una página web. Consulta Photo Media URL formatting para saber cómo formatear la URL de una foto, como media_url_https, según los tamaños (sizes) disponibles. |
| media_url_https | Cadena | Una URL https:// que apunta directamente al archivo multimedia cargado, para su incrustación en páginas HTTPS. Ejemplo: “media_url_https”:“https://p.twimg.com/AZVLmp-CIAAbkyy.jpg” Para el contenido multimedia en mensajes directos, se debe acceder a media_url_https firmando una solicitud con el token de acceso del usuario mediante OAuth 1.0a.No es posible acceder a las imágenes mediante una sesión autenticada de x.com. Visita esta página para obtener información sobre cómo tener en cuenta estos cambios recientes. No es posible incrustar estas imágenes directamente en una página web. Consulta Photo Media URL formatting para saber cómo dar formato a la URL de una foto, como media_url_https, en función de los sizes disponibles. |
| sizes | Objeto Size | Un objeto que muestra los tamaños disponibles del archivo multimedia. Ejemplo: “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 }, “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 }, “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 }, “small”: “h”: 454, “resize”: “fit”, “w”: 680 } } } Consulta formato de la URL de contenido multimedia de foto para ver cómo formatear la URL de una foto, como media_url_https, en función de los sizes disponibles. |
| source_status_id | Int64 | Anulable. Para las Publicaciones que contienen medios que originalmente estaban asociados con otra Publicación, este ID apunta a la Publicación original. Ejemplo: “source_status_id”: 205282515685081088 |
| source_status_id_str | Cadena | Nullable. Para Publicaciones que contienen contenido multimedia que originalmente estaba asociado con otra publicación, este id en forma de cadena apunta a la Publicación original. Ejemplo: “source_status_id_str”: “205282515685081088” |
| type | Cadena | Tipo de contenido multimedia cargado. Los tipos posibles incluyen photo, video y animated_gif. Ejemplo: “type”:“photo” |
| url | Cadena | URL envuelta para el enlace multimedia. Esto corresponde a la URL incrustada directamente en el texto sin procesar de la Publicación y a los valores del parámetro indices. Ejemplo:“url”:“http://t.co/rJC5Pxsu” |
Objetos de tamaño de contenido multimedia
Objeto Sizes
| Field | type | Description |
| thumb | Size Object | Información sobre una versión en miniatura del contenido multimedia. Ejemplo: “thumb”:“h”:150, “resize”:“crop”, “w”:150} El contenido multimedia de tipo foto en tamaño miniatura se limitará a fill un área de 150x150 y se recortará. |
| large | Size Object | Información sobre una versión grande del contenido multimedia. Ejemplo: “large”:“h”:454, “resize”:“fit”, “w”:680} El contenido multimedia de tipo foto en tamaño pequeño se limitará a fit dentro de un área de 680x680. |
| medium | Size Object | Información sobre una versión mediana del contenido multimedia. Ejemplo: “medium”:“h”:800, “resize”:“fit”, “w”:1200} El contenido multimedia de tipo foto en tamaño mediano se limitará a fit dentro de un área de 1200x1200. |
| small | Size Object | Información sobre una versión pequeña del contenido multimedia. Ejemplo: “small”:“h”:1366, “resize”:“fit”, “w”:2048} El contenido multimedia de tipo foto en tamaño grande se limitará a fit dentro de un área de 2048x2048. |
Objeto de tamaño
| Campo | Tipo | Descripción |
| w | Int | Ancho en píxeles de este tamaño. Ejemplo: “w”:150 |
| h | Int | Alto en píxeles de este tamaño. Ejemplo: “h”:150 |
| resize | String | Método de redimensionamiento utilizado para obtener este tamaño. Un valor de fit significa que el recurso multimedia se redimensionó para ajustarse a una dimensión, manteniendo su relación de aspecto nativa. Un valor de crop significa que el recurso multimedia se recortó para ajustarse a una resolución específica. Ejemplo: “resize”:“crop” |
Formato de URL de medios de fotos
media_url o media_url_https se pueden cargar por sí solos, lo que dará como resultado que se cargue la variante de tamaño medio de forma predeterminada. Sin embargo, es preferible proporcionar una URL de medios de fotos completamente formateada cuando sea posible.
Hay tres partes en una URL de medios de fotos:
| URL base | La URL base es la URL de medios sin la extensión del archivo. Por ejemplo: “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, La URL base es entonces: https://pbs.twimg.com/media/DOhM30VVwAEpIHq |
| Formato | El formato es el tipo de foto en el que está formateada la imagen. Los formatos posibles son jpg o png, que se proporcionan como la extensión de la URL de medios. Por ejemplo: “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, El formato es entonces: jpg |
| Nombre | El nombre es el nombre de campo del tamaño que se va a cargar. Por ejemplo: “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 , “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 }, “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 }, “small”: “h”: 454, “resize”: “fit”, “w”: 680 } } } El nombre al cargar la foto de tamaño grande sería: large |
| Legacy format | El formato heredado está obsoleto. Todas las cargas de fotos deben migrar al formato moderno. <base_url>.<format>:<name> Por ejemplo: https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg:large |
| Modern format | El formato moderno para cargar fotos se estableció en X en 2015 y ha sido el formato de facto desde 2017. Todas las cargas de fotos deben migrar a este formato. <base_url>?format=<format>&name=<name> Por ejemplo: https://pbs.twimg.com/media/DOhM30VVwAEpIHq?format=jpg&name=large Nota: los elementos de la cadena de consulta de la URL de contenido multimedia de foto están en orden alfabético. Si en el futuro la carga de contenido multimedia añadiera algún elemento de consulta adicional, sería necesario seguir manteniendo el orden alfabético. Por ejemplo, si hubiera un nuevo elemento de consulta hipotético llamado preferred_format, iría después de format y name en la cadena de consulta. |
Objeto URL
entities contendrá un array urls que incluye un objeto por cada enlace incluido en el cuerpo de la Publicación, y un array vacío si no hay enlaces presentes.
El operador has:links coincidirá si hay al menos un elemento en el array. El operador url: se utiliza para hacer coincidir el atributo expanded_url. Si estás utilizando el Expanded URL enrichment, el operador url: se utiliza para hacer coincidir el atributo unwound.url (URL completamente expandida). Si estás utilizando el Exhanced URL enrichment, los operadores url_title: y url_decription: se utilizan para hacer coincidir los atributos unwound.title y unwound.description.
| Field | Type | Description |
| display_url | String | URL pegada o escrita en la Publicación. Ejemplo: “display_url”:“bit.ly/2so49n2” |
| expanded_url | String | Versión expandida de display_url . Ejemplo:“expanded_url”:“http://bit.ly/2so49n2” |
| indices | Array of Int | Array de enteros que representan los desplazamientos dentro del texto de la Publicación donde la URL comienza y termina. El primer entero representa la ubicación del primer carácter de la URL en el texto de la Publicación. El segundo entero representa la ubicación del primer carácter que no es parte de la URL después del final de la misma. Ejemplo: “indices”:[30,53] |
| url | String | URL envuelta, que corresponde al valor incrustado directamente en el texto sin procesar de la Publicación y a los valores para el parámetro indices. Ejemplo:“url”:“https://t.co/yzocNFvJuL” |
unwound:
| Field | Type | Description |
| url | String | La versión completamente expandida del enlace incluido en la Publicación. Ejemplo: “url”:“https://blog.x.com/en_us/topics/insights/2016/using-twitter-as-a-go-to-communication-channel-during-severe-weather-events.html” |
| status | Int | Estado HTTP final del proceso de expansión, donde ‘200’ indica éxito. Ejemplo: 200 |
| title | String | Título HTML para el enlace. Ejemplo: “title”:“Using X as a ‘go-to’ communication channel during severe weather” |
| description | String | Descripción HTML para el enlace. Ejemplo: “description”:“Using X as a ‘go-to’ communication channel during severe weather” |
Objeto de mención de usuario
entities contendrá un arreglo user_mentions que incluye un objeto por cada mención de usuario incluida en el cuerpo de la Publicación, y un arreglo vacío si no hay ninguna mención de usuario.
El operador PowerTrack @ se utiliza para hacer coincidir el atributo screen_name. El operador has:mentions coincidirá si hay al menos un elemento en el arreglo.
| Field | Type | Description |
| id | Int64 | ID del usuario mencionado, como un entero. Ejemplo: “id”:6253282 |
| id_str | String | id del usuario mencionado, como una cadena. Ejemplo: “id_str”:“6253282” |
| indices | Array of Int | Un arreglo de enteros que representan los desplazamientos dentro del texto de la Publicación donde comienza y termina la referencia al usuario. El primer entero representa la ubicación del carácter ‘@’ de la mención de usuario. El segundo entero representa la ubicación del primer carácter que no forma parte del screen_name después de la mención de usuario. Ejemplo:“indices”:[4,15] |
| name | String | Nombre para mostrar del usuario mencionado. Ejemplo: “name”:“API” |
| screen_name | String | screen_name del usuario mencionado. Ejemplo:“screen_name”:“api” |
Objeto Symbol
entities contendrá un array symbols que incluye un objeto por cada $cashtag incluido en el cuerpo de la Publicación, y un array vacío si no hay ningún símbolo presente.
El operador $ de PowerTrack se utiliza para hacer coincidencias con el atributo text. El operador has:symbols coincidirá si hay al menos un elemento en el array.
| Field | Type | Description |
| indices | Array of Int | Un array de enteros que indica los desplazamientos dentro del texto de la Publicación donde el símbolo/cashtag comienza y termina. El primer entero representa la ubicación del carácter ’). Ejemplo: “indices”:[12,17] |
| text | String | Nombre del cashtag, sin el carácter inicial ‘$’. Ejemplo: “text”:“twtr” |
Objeto poll
entities contendrá un arreglo polls que incluirá un único objeto poll si la Publicación contiene una encuesta. Si no se incluye ninguna encuesta, no habrá un arreglo polls en la sección entities.
Ten en cuenta que estos metadatos de encuestas solo están disponibles con las siguientes APIs Enterprise:
- Flujos de volumen (Decahose )
- Real-time PowerTrack
- APIs de búsqueda de X (Full-Archive Search y 30-Day Search)
| Field | Type | Description |
| options | Array of Option Object | Un arreglo de opciones, cada una con una posición en la encuesta y el texto para esa posición. Ejemplo: “options”: [ “position”: 1, “text”: “I read documentation once.” } ] } |
| end_datetime | String | Marca temporal (UTC) de cuándo finaliza la encuesta. Ejemplo: “end_datetime”: “Thu May 25 22:20:27 +0000 2017” |
| duration_minutes | String | Duración de la encuesta en minutos. Ejemplo: “duration_minutes”: 60 |
Detalles de Retweets y Tweets citados
Retweets












http://wapo.st/2w8iwPQ #Testing
En el ejemplo anterior, tanto la URL como el hashtag se vieron afectados. Dado que el hashtag se truncó por completo y la URL se truncó parcialmente, estos faltan en las entities de nivel superior. También verás la user_mentions adicional de nivel superior que proviene del prefijo «RT @floodsocial: » en el campo text.
Sin embargo, el texto de la Publicación y las entities en retweeted_status reflejan perfectamente la Publicación original sin truncamiento ni entities incorrectas; por lo tanto, recomendamos confiar en el objeto anidado retweeted_status para los Retweets.
Tweets citados
Los Tweets citados se introdujeron en 2016 y se diferencian de los Retweets en que, cuando “citas” una Publicación, agregas contenido nuevo “sobre” una Publicación compartida. Este contenido nuevo puede incluir casi cualquier elemento que pueda tener una Publicación original, como texto adicional, hashtags, menciones y URL. Los Tweets citados pueden contener contenido multimedia nativo (fotos, videos y GIF) y aparecerán en el objeto entities. Dado que se pueden agregar entidades de X, es probable que las entidades del Tweet citado sean diferentes de las entidades originales. En este ejemplo, se colocaron una nueva URL y un nuevo hashtag al final del Tweet citado. Esta Publicación, https://x.com/FloodSocial/status/907983973225160704, tiene el siguiente texto de la Publicación: strange and equally tragic when islands flood… trans-atlantic testing of quote tweets | @thisuser @thatuserhttp://bit.ly/2vMMDuu #testing En este caso, las entidades de nivel superior no reflejan los detalles del Tweet citado. Sin embargo, el texto de la Publicación y las entities enextended_tweet reflejan perfectamente el Tweet citado, sin truncaciones ni entidades incorrectas; de ahí nuestra recomendación de confiar en el objeto anidado _extended_tweet _objeto para los Tweets citados.
Entidades para el objeto user
Ejemplo de JSON
Entidades extendidas de X
Introducción
extended_entities. El objeto extended_entities contiene un único arreglo media de objetos media (consulta la sección entities para ver su diccionario de datos). Ningún otro tipo de entidad, como hashtags y enlaces, se incluye en la sección extended_entities. El objeto media en la sección extended_entities es idéntico en estructura al que se incluye en la sección entities.
Las Publicaciones solo pueden tener un tipo de contenido multimedia adjunto. Para fotos, se pueden adjuntar hasta cuatro fotos. Para videos y GIF, se puede adjuntar uno. Dado que los metadatos type del medio en la sección extended_entities indican correctamente el tipo de medio (“photo”, “video” o “animated_gif”) y admiten hasta 4 fotos, es la fuente de metadatos preferida para contenido multimedia nativo.
Ejemplos de Publicaciones y cargas útiles en JSON
Esta es la sección
entities de esta Publicación:
extented_entities para esta Publicación:
Publicación con video nativo
video_info se reemplazará por un objeto additional_media_info.
El objeto additional_media_info contendrá información de medios adicional proporcionada por el editor, como title, description y embeddable flag. El contenido de video solo está disponible para los clientes oficiales de X cuando embeddable=false. En este caso, todas las URL de video proporcionadas en el payload estarán basadas en X, de modo que el usuario pueda abrir el video en una propiedad de X haciendo clic en el enlace.
Aquí tienes un ejemplo de cómo se verá el objeto extended entities en esta situación:
entities que tiene incorrectamente el type asignado a ‘photo’. Nuevamente, se prefiere la sección extended_entities para todos los tipos de medios nativos, incluidos ‘video’ y ‘animated_gif’.
Publicación con un GIF animado
A continuación se muestran los metadatos de extended entities para esta Publicación con un GIF animado:
Ejemplos de payloads con enriquecimiento nativo
Publicación
Respuesta a una Publicación
Publicación extendida
Publicación con extended_entitites
Retweet
Tweet citado
Retuit de Tweet citado
Objetos de datos de Enterprise Activity Streams
¿Quieres obtener más información sobre cómo el formato de datos de Activity Streams se corresponde con el formato de X API v2?
Ten en cuenta: se recomienda encarecidamente usar el formato Enriched Native para las API de datos empresariales.
- El formato Enriched Native incluye todos los metadatos nuevos desde 2017, como los metadatos de encuestas, y métricas adicionales como reply_count y quote_count.
- El formato Activity Streams no se ha actualizado con nuevos metadatos ni enriquecimientos desde la actualización de caracteres en 2017.
Objeto de actividad
note, person, place y service. Las Publicaciones pueden tener otros objetos de actividad de Publicación anidados para Retweets u otros, incluyendo twitter_quoted_status, long_object.
El tipo de objeto de nivel básico activity es similar al objeto de nivel básico de Post del formato nativo enriquecido. Se pueden encontrar ejemplos de cargas útiles en formato Activity Streams aquí.
Diccionario de datos
| Atributo | Tipo | Descripción |
| id | cadena de texto | Un IRI único para la publicación. En más detalle, “tag” es el esquema, “search.x.com” representa el dominio de este esquema, y 2005 es el año en que se definió el esquema. Al almacenar Publicaciones, este valor debe utilizarse como identificador único o clave primaria. “id”: “tag:search.x.com,2005:1050118621198921728” |
| objectType | cadena de texto | Tipo de objeto, siempre con el valor “activity” “objectType”: “activity” |
| object | objeto | Un objeto que representa la Publicación que se está creando o compartiendo. Para Retweets, esto contendrá una “activity” completa, con los campos pertinentes descritos en este esquema. Para Publicaciones originales, esto contendrá un objeto “note”, con los campos descritos aquí. “object”: “object”: “objectType”: “note”, “id”: “object:search.x.com,2005:1050118621198921728”, “summary”: “To make room for more expression, we will now count all emojis as equal—including those with gender and skin t… https://t.co/MkGjXf9aXm”, “link”: “http://x.com/API/statuses/1050118621198921728”, “postedTime”: “2018-10-10T20:19:24.000Z” |
| long_object | objeto | Un objeto que representa el cuerpo de texto completo si el texto de la publicación supera los 140 caracteres. “long_object”: “body”: “Para dejar más espacio para expresarse, a partir de ahora contaremos todos los emojis por igual, incluidos aquellos con modificadores de género y tono de piel 👍🏻👍🏽👍🏿. Esto ya se ve reflejado en Twitter-Text, nuestra biblioteca de código abierto. \n\n¿Usas Twitter-Text? Consulta la publicación del foro para obtener más detalles: https://t.co/Nx1XZmRCXA”, “display_text_range”: [ 0, 277 ], “twitter_entities”: “hashtags”: [], “urls”: [ “url”: “https://t.co/Nx1XZmRCXA”, “expanded_url”: “https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607”, “display_url”: “devcommunity.com/t/new-update-t…”, “indices”: [ 254, 277 ] ], “user_mentions”: [], “symbols”: [] |
| display_text_range | array | si el texto de la publicación supera los 140 caracteres. “display_text_range”: [ 0, 142 ] |
| verb | cadena de texto | El tipo de acción realizada por el usuario. Publicaciones, “post” Retweets, “share” Publicaciones eliminadas, “delete” El verbo es la forma adecuada de distinguir entre un Tweet y un Retweet auténtico. Sin embargo, esto solo se aplica a Retweets auténticos y no a Tweets modificados o citados, que no usan la funcionalidad de Retweet de X. Para una descripción de los verbos de AS haz clic aquí. Para las eliminaciones, ten en cuenta que solo se incluirá un número limitado de campos, como se muestra en el payload de ejemplo a continuación. “verb”: “post” |
| postedTime | fecha (ISO 8601) | La hora en que ocurrió la acción, por ejemplo, el momento en que se publicó la Publicación. “postedTime”: “2018-10-10T20:19:24.000Z” |
| generator | objeto | Un objeto que representa la herramienta utilizada para publicar la Publicación. Este incluirá el nombre (“displayName”) y un enlace (“link”) de la aplicación de origen que genera la Publicación. “generator”: “displayName”: “X Web Client”, “link”: “http://x.com” |
| provider | objeto | Un objeto JSON que representa el proveedor de la actividad. Este incluirá un objectType (“service”), el nombre del proveedor (“displayName”) y un enlace al sitio web del proveedor (“link”). “provider”: “objectType”: “service”, “displayName”: “X”, “link”: “http://www.x.com” |
| link | cadena de texto | Un enlace permanente a la Publicación. “link”: “http://x.com/API/statuses/1050118621198921728” |
| body | cadena de texto | El texto de la publicación. En Retweets, ten en cuenta que X modifica el valor del campo body en el nivel raíz añadiendo “RT @username” al principio y truncando el texto original y añadiendo puntos suspensivos al final. Por lo tanto, para los Retweets, tu aplicación debe revisar object.body para asegurarse de que está extrayendo el texto no modificado de la Publicación original (que se está retuiteando). “body”: “Con Cardiff, Crystal Palace y Hull City uniéndose a la EPL desde la Championship, será una gran batalla por no descender al final.” |
| display_text_range | array | Describe el intervalo de caracteres dentro del texto del body que indica la Publicación mostrada. Las Publicaciones con @menciones iniciales empezarán en un valor mayor que 0 y las Publicaciones con contenido multimedia adjunto o que se extiendan más allá de 140 caracteres indicarán el display_text_range en el long_object. “display_text_range”: [ 14, 42 ] o “long_object”: “display_text_range”: [ 0, 277 ]… |
| actor | objeto | Un objeto que representa al usuario de X que publicó. El objeto Actor hace referencia a un usuario de X y contiene todos los metadatos relevantes sobre ese usuario. Consulta los detalles del objeto Actor |
| inReplyTo | objeto | Un objeto JSON que hace referencia a la Publicación a la que se responde, si aplica. Contiene un enlace a esa Publicación. “inReplyTo”: “link”: “http://x.com/GOP/statuses/349573991561838593” |
| location | objeto | Un objeto JSON que representa el “Place” de X donde se creó la Publicación. Este es un objeto transmitido desde la plataforma de X. Consulte el objeto de ubicación |
| twitter_entities | objeto | El objeto entities del formato de datos de X que contiene listas de URL, menciones y hashtags. Consulta aquí la documentación de X sobre Entities. Ten en cuenta que, en los Retweets, X puede truncar los valores de las entidades que extrae en el nivel raíz. Por lo tanto, para los Retweets, tu aplicación debe consultar object.twitter_entities para asegurarse de que estás usando valores no truncados. Consulta los detalles del objeto twitter_entities |
| twitter_extended_entities | objeto | Un objeto del formato de datos nativo de X que contiene “media”. Estará presente en cualquier Publicación en la que el objeto twitter_entities tenga datos presentes en el campo “media”, e incluirá varias fotos cuando haya varias fotos en la Publicación. Ten en cuenta que esta es la ubicación correcta para recuperar la información de medios en Publicaciones con varias fotos. Varias fotos se representan mediante objetos JSON separados por comas dentro de la matriz “media”. Consulta los detalles del objeto twitter_extended_entities. |
| gnip | objeto | Un objeto agregado a la carga útil de la actividad para indicar las reglas de coincidencia y los datos enriquecidos agregados según los enriquecimientos activos en el stream o en el producto. Consulta los detalles del objeto gnip |
| edit_history | Objeto | Identificadores únicos que indican todas las versiones de una Publicación. Para las Publicaciones sin ediciones, habrá un ID. Para las Publicaciones con historial de ediciones, habrá múltiples ID, organizados en orden ascendente que refleja el orden de las ediciones, con la versión más reciente en la última posición del array. Los ID de la Publicación se pueden usar para hidratar y ver versiones anteriores de una Publicación. Ejemplo: edit_history”: “initial_tweet_id”: “1283764123” “edit_tweet_ids”: [“1283764123”, “1394263866”] |
| edit_controls | Objeto | Cuando está presente, indica cuánto tiempo más una Publicación seguirá siendo editable y cuántas ediciones restantes tiene. Las Publicaciones solo son editables durante los primeros 30 minutos después de su creación y se pueden editar hasta cinco veces. Los id de la Publicación se pueden usar para hidratar y ver versiones anteriores de una Publicación. Ejemplo: “edit_controls”: “editable_until_ms”: 123 “edits_remaining”: 3 |
| editable | Booleano | When present, indicates if a Publicación era editable en el momento de su publicación. This field is not dynamic and no cambiará de True a False cuando una Publicación alcance su límite de tiempo de edición o el número máximo de ediciones. Las siguientes características de la Publicación harán que este campo sea false: * La Publicación está promocionada * La Publicación incluye una encuesta * La Publicación es una respuesta en un hilo que no es propio * La Publicación es un retweet (ten en cuenta que los Tweets citados sí se pueden editar) * La Publicación es nullcast * Publicación de Comunidad * Publicación de Superfollow * Publicación colaborativa |
Atributos adicionales de la Publicación
| Atributo | type | Descripción |
|---|---|---|
| twitter_lang | string | |
| favoritesCount | int | Nullable. Indica aproximadamente cuántas veces esta Publicación ha recibido Me gusta por parte de usuarios de X. “favoritesCount”:298 |
| retweetCount | int | Número de veces que esta Publicación ha sido retuiteada. Ejemplo: “retweetCount”:153 |
Atributos obsoletos
| Campo | type | Descripción |
| geo | object | Ubicación de tipo Point donde se creó la Publicación. |
| twitter_filter_level | string | Campo obsoleto conservado para evitar un cambio incompatible |
Objetos de actividad de Publicaciones anidadas
{ "id": "tag:search.x.com,2005:222222222222", "objectType": "activity", "verb": "post", "body": "Quoting a Tweet: https://t.co/mxiFJ59FlB", "actor": { "displayName": "TheQuoter2" }, "object": { "objectType": "note", "id": "object:search.x.com,2005:111111111", "summary": "https://t.co/mxiFJ59FlB" }, "twitter_entities": {}, "twitter_extended_entities": {}, "gnip": {}, "twitter_quoted_status": { "id": "tag:search.x.com,2005:111111111", "objectType": "activity", "verb": "post", "body": "console.log('Happy birthday, JavaScript!');", "actor": { "displayName": "TheOriginalTweeter" }, "object": { "objectType": "note", "id": "object:search.x.com,2005:111111111" }, "twitter_entities": {} } }
Tweet citado retuiteado:
Objeto long
Objeto Actor
Diccionario de datos
| Attribute | Type | Description |
|---|---|---|
| objectType | string | ”objectType”: “person” |
| id | string | La representación en cadena del identificador único de este autor. Ejemplo: “id:x.com:2244994945” |
| link | ”http://www.x.com/XDeveloeprs | |
| displayName | String | El nombre del usuario, tal como lo ha definido. No es necesariamente el nombre de una persona. Normalmente está limitado a 50 caracteres, pero esto puede cambiar. Ejemplo: “displayName”: “XDevelopers” |
| preferredUsername | string | El nombre visible, identificador o alias con el que este usuario se identifica. Es único, pero puede cambiar. Usa id como identificador de usuario siempre que sea posible. Normalmente tiene una longitud máxima de 15 caracteres, pero pueden existir algunas cuentas históricas con nombres más largos. Ejemplo:“preferredUsername”: “XDevelopers” |
| location | object | ** “location”: “objectType”:** “place”, “displayName”: “127.0.0.1” ** }** |
| links | array | Puede ser nulo. Una URL proporcionada por el usuario asociada a su perfil. Ejemplo: ** “links”: [ { “href”:** “https://developer.x.com/en/community”, “rel”: “me” ** } ]** |
| summary | string | Puede ser nulo. La cadena UTF-8 definida por el usuario que describe su cuenta. Ejemplo: “summary”: “La voz del equipo de #XDevelopers…“ |
| protected | Boolean | Cuando es true, indica que este usuario ha decidido proteger sus Publicaciones. Consulta Publicaciones públicas y protegidas. Ejemplo: “protected”: true |
| verified | Boolean | Cuando es true, indica que el usuario tiene una cuenta verificada. Consulta Cuentas verificadas. Ejemplo: “verified”: false |
| followersCount | Int | El número de seguidores que esta cuenta tiene actualmente. En ciertas condiciones excepcionales, este campo indicará temporalmente “0”. Ejemplo: “followers_count”: 21 |
| friendsCount | Int | El número de usuarios a los que esta cuenta sigue (también conocidos como sus “seguidos”). En ciertas condiciones excepcionales, este campo indicará temporalmente “0”. Ejemplo: “friends_count”: 32 |
| listedCount | Int | El número de Listas públicas de las que este usuario es miembro. Ejemplo: “listed_count”: 9274 |
| favoritesCount | Int | El número de Publicaciones a las que este usuario ha dado “me gusta” durante la vida de la cuenta. Se usa la ortografía británica en el nombre del campo por razones históricas. Ejemplo: “favourites_count”: 13 |
| statusesCount | Int | El número de Publicaciones (incluidos los retweets) emitidas por el usuario. Ejemplo: “statuses_count”: 42 |
| postedTime | date | La fecha y hora UTC en que se creó la cuenta de usuario en X. Ejemplo: “postedTime”: “2013-12-14T04:35:55.036Z” |
| image | string | Una URL basada en HTTPS que apunta a la imagen de perfil del usuario. Ejemplo: “image”: “https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg” |
Atributos que ya no se admiten (obsoletos)
| Field | Type | Description |
|---|---|---|
| utcOffset | null | El valor se establecerá en null. Sigue disponible mediante GET account/settings |
| twitterTimeZone | null | El valor se establecerá en null. Sigue disponible mediante GET account/settings como tzinfo_name |
| languages | null | El valor se establecerá en null. Sigue disponible mediante GET account/settings como language |
Ejemplos:
Objeto Location
Diccionario de datos de Location
| Field | Type | Description |
|---|---|---|
| objectType | string | Consulte aquí para obtener información más detallada. Ejemplo: “objectType”: “place” |
| displayName | string | El nombre completo de la ubicación. ****“displayName”: “United States” |
| name | string | Nombre de la ubicación del formato JSON de place de X. |
| link | string | Un enlace a la representación JSON completa del place en X. “link”: “https://api.x.com/1.1/geo/id/27c45d804c777999.json” |
| geo | object | El objeto geo de coordenadas de X. Puede ser un polígono o un punto. Consulte geo |
| countryCode | String | Código de país abreviado que representa el país que contiene este place. Ejemplo: “countryCode”: “US |
| country | String | Nombre del país que contiene este place. Ejemplo: **“country”: **“United States” |
objetos derivados de profileLocations
| Campo | Tipo | Descripción |
| address | object | Dentro del objeto location de profileLocation dentro del objeto gnip. Dirección de la ubicación derivada por el enriquecimiento geográfico de perfil. El nivel de granularidad variará. ”address”: { ** “country”: “United States”, “countryCode”: “US”, “locality”: “Providence”, “region”: “Rhode Island”, “subRegion”: “Providence County” }** |
| geo | object | Dentro del objeto location de profileLocation dentro del objeto gnipt. Coordenadas del centroide de la ubicación derivadas por el enriquecimiento geográfico de perfil. ”geo”: { ** “coordinates”: [ -98.5, 39.76 ], “type”: “point” }** |
Objeto de entidades de X
twitter_entities tiene el mismo formato y diccionario de datos que en el formato enriquecido nativo objeto entities aquí.
Ejemplo:
Objeto de entidades extendidas de X
twitter_extended_entities utiliza el mismo formato y diccionario de datos que se muestra en el formato nativo enriquecido en el objeto extended_entities aquí.
Ejemplo:
Objeto Gnip
Diccionario de datos
| Field | Type | Description |
| matching_rules | array | Contiene un array de objetos de reglas de coincidencia que indican la regla con la que coincide la actividad. “matching_rules”: [ ** { “tag”: null, “id”:** 1026514022567358500**, “id_str”:** “1026514022567358464” ** } ]** |
| urls | array | Contiene un array de los enlaces dentro de la actividad y los metadatos de la URL expandida para el enriquecimiento de URL unwinding “urls”: [ { “url”:* “https://t.co/tGQqNxxyhU”, “expanded_url”: “https://www.youtube.com/channel/UCwUxW2CV2p5mzjMBqvqLzJA”, “expanded_status”: 200**, “expanded_url_title”:** “Birdys Daughter”, “expanded_url_description”: “Premium, single-origin, handpicked Jamaica Blue Mountain Coffee” ** } ]** |
| profileLocations | array of location objects | Contiene el objeto de ubicación derivado del enriquecimiento Profile Geo ** “profileLocations”: [ { “address”: { “country”:** “Canada”, “countryCode”: “CA”, “locality”: “Toronto”, “region”: “Ontario” ** }, “displayName”:** “Toronto, Ontario, Canada”, ** “geo”: { “coordinates”: [ -79.4163, 43.70011 ], “type”:** “point” ** }, “objectType”:** “place” ** } ] }** |
Ejemplo:
Ejemplos de cargas útiles de Activity Streams
twitter_extended_entities
Cronología de metadatos de Tweet
Introduction**
En esencia, X es una red de comunicación pública, en tiempo real y global. Desde 2006, la evolución de X ha estado impulsada tanto por los patrones de uso y las convenciones de los usuarios como por nuevas funciones y mejoras de producto. Si usas datos de X para investigación histórica, entender la cronología de esta evolución es importante para poder encontrar Publicaciones de interés en el archivo de datos. X se lanzó como una sencilla App móvil basada en SMS y ha crecido hasta convertirse en una plataforma de comunicación completa. Una plataforma con un conjunto completo de APIs. Las APIs siempre han sido un pilar de la red de X. La primera API se puso en marcha poco después del lanzamiento de X. Cuando el etiquetado geográfico de Publicaciones se introdujo por primera vez en 2009, se ofreció mediante una Geo API (y más tarde la capacidad de “etiquetar geográficamente” una Publicación se integró en la interfaz de usuario de X.com). Hoy en día, las APIs de X impulsan la red de comunicación bidireccional que se ha convertido en la fuente de noticias de última hora y de intercambio de información. Las oportunidades para crear soluciones sobre este canal de comunicación global y en tiempo real son infinitas. X pone a disposición dos APIs históricas que proporcionan acceso a cada Publicación disponible públicamente: Historical PowerTrack y la Full-Archive Search API. Ambas APIs ofrecen un conjunto de operadores que se utilizan para consultar y recopilar Publicaciones de interés. Estos operadores buscan coincidencias en una variedad de atributos asociados con cada Publicación, cientos de atributos como el contenido de texto de la Publicación, el nombre de cuenta del autor y los enlaces compartidos en la Publicación. Las Publicaciones y sus atributos se codifican en JSON, un formato de intercambio de datos de texto muy común. Por lo tanto, a medida que se introducían nuevas funciones, aparecían nuevos atributos JSON y, normalmente, se introducían nuevos operadores de API para hacer coincidir esos atributos. Si tu caso de uso incluye la necesidad de escuchar lo que el mundo ha dicho en X, cuanto mejor entiendas cuándo los operadores empezaron a disponer de metadatos JSON con los que buscar coincidencias, más eficaces podrán ser tus filtros históricos de PowerTrack. A continuación, presentaremos algunos conceptos clave que sientan las bases para entender cómo las actualizaciones en los metadatos de las Publicaciones afectan a la búsqueda de tu señal de datos de interés.Conceptos clave**
De convenciones de usuario a objetos de primera clase en X
Metadatos de la Publicación, mutabilidad, actualizaciones y vigencia
Contenido multimedia “nativo”
has:videos, has:images y has:media. Estos solo coincidirán con contenido multimedia que se haya compartido a través de funciones de X. Para hacer coincidir otro contenido multimedia alojado fuera de la plataforma de X, deberás usar Operadores que coincidan con metadatos de la URL.
Entonces, antes de profundizar en los detalles del producto Historical PowerTrack y Full-Archive Search, hagamos un recorrido por cómo X, como producto y plataforma, ha evolucionado con el tiempo.
Cronología de X
A continuación encontrarás una cronología seleccionada de X. La mayoría de estas actualizaciones de X afectaron de alguna manera, de forma fundamental, el comportamiento de los usuarios, el contenido JSON de las Publicaciones, los Operadores de consulta o los tres. Si consideramos X como una plataforma de API, los siguientes eventos afectaron de alguna manera las cargas (payloads) JSON que se utilizan para codificar Publicaciones. A su vez, esos detalles JSON afectan cómo las API históricas de X coinciden con ellas.
Ten en cuenta que esta lista cronológica es en general precisa, pero no exhaustiva.
2006
- Octubre
- @replies pasa a ser una convención.
- Cashtags pasaron a ser un enlace sobre el que se podía hacer clic y que se podía buscar en junio de 2012.
- Noviembre - Se introducen los Favoritos.
2007
- Enero - las @replies se convierten en un objeto de primera clase con un botón de respuesta en la interfaz de usuario y metadatos
in_reply_to. - Abril - los Retweets se convierten en una convención.
- Agosto - los #hashtags surgen como una herramienta principal para buscar y organizar Publicaciones.
2009
- Febrero - los $cashtags se convierten en una convención común para hablar de símbolos bursátiles.
- Mayo - se introduce la versión ‘beta’ del Retweet con “Via @” añadido al cuerpo de la Publicación.
- Junio - se introducen las cuentas verificadas.
- Agosto - los Retweets se convierten en un objeto de primera clase con el patrón “RT @” y nuevos metadatos
retweet_status. - Octubre - se lanza la función de Listas.
- Noviembre - se lanza la API de geotagging de Publicaciones, que proporciona el primer método para que los usuarios compartan su ubicación a través de apps de terceros.
2010
- Junio: se introduce X Places para geoetiquetar Publicaciones.
- Agosto: se lanza el botón de Publicación para sitios web, lo que facilitó compartir enlaces.
2011
- Mayo: se introduce el botón Seguir (Follow), que facilita seguir cuentas asociadas a sitios web.
- Agosto: se introducen las fotos nativas.
2012
- junio: los $Cashtags se convierten en un enlace en el que se puede hacer clic y que se puede buscar.
2014
- Marzo - se admite el etiquetado de fotos y hasta cuatro fotos. Se introdujeron los metadatos de X Entities extendidos.
- Abril - los emoji se admiten de forma nativa en la interfaz de usuario de X. Los emoji se utilizaban habitualmente en Publicaciones al menos desde 2008.
2015
- abril: un cambio en el diseño de la interfaz de usuario de las Publicaciones de X provoca que se etiqueten geográficamente menos Publicaciones.
- octubre: se introdujeron las encuestas de X. Inicialmente, las encuestas admitían dos opciones con un período de votación de 24 horas. En noviembre, las encuestas empezaron a admitir cuatro opciones con períodos de votación de 5 minutos a siete días. Los metadatos de las encuestas se pusieron a disposición (solo en formato nativo enriquecido) en febrero de 2017.
2016
- Febrero: Searchable GIFs natively hosted in Post compose.
- Mayo: “Doing More with 140” (dmw140) se anunció, indicando planes para nuevas formas de gestionar las respuestas y los medios adjuntos con respecto al límite de 140 caracteres de una Publicación.
- Junio: Native video support.
- Junio: los Retweets citados están disponibles de forma general.
- Junio: Stickers introduced for adding to photos.
- Septiembre: ‘Native attachments’ introduced, donde la URL final no se cuenta en los 140 caracteres (“dmw140, parte 1”).
2017
- Febrero: los metadatos de encuestas de X se incluyen en los metadatos de la Publicación (solo formato nativo enriquecido).
- Abril: se introducen las “Simplified Replies”, con las cuentas a las que se responde sin contarse dentro de los 140 caracteres (“dmw140, part 2”).
- Mayo: con las actualizaciones por el RGPD,
user.time_zonese establece en null,user.utc_offsetse establece en null yuser.profile_background_image_urlse establece en el valor predeterminado. - Junio: actualización de los cambios en el formato de quoteTweet
- 29 de septiembre: se habilita la capacidad de editar Publicaciones para un pequeño grupo de prueba. Los metadatos de Publicaciones editadas se añaden al objeto de la Publicación cuando corresponde. Esto incluye los objetos
edit_historyyedit_controls. Estos metadatos no se devolverán para Publicaciones que se crearon antes de que se añadiera la funcionalidad de edición. No hay Operators asociados para estos metadatos. Para obtener más información sobre cómo funcionan las ediciones de Publicaciones, consulta los Fundamentos de edición de Publicaciones
lang:, que se usa para hacer coincidir Publicaciones en un idioma específico. X proporciona un servicio de clasificación de idioma (que admite más de 50 idiomas), y las APIs de X proporcionan estos metadatos en el JSON que se genera para cada Publicación. Así, si una Publicación está escrita en español, el atributo JSON lang se establece en es. Por lo tanto, si creas un filtro con la cláusula lang:es, solo coincidirá con Publicaciones clasificadas como español.
La información de la cronología también puede ayudar a interpretar mejor los datos de las Publicaciones recibidas. Supongamos que investigas el intercambio de contenido sobre los Juegos Olímpicos de Verano de 2008 y 2012. Si aplicas únicamente el operador is:retweet para hacer coincidir Retweets, no habría datos que coincidan en 2008. Sin embargo, para 2012 probablemente habría millones de Retweets. A partir de esto, podrías concluir erróneamente que en 2008 los Retweets no eran una convención de uso, o que simplemente nadie hizo Retweet sobre esos Juegos Olímpicos. Dado que los Retweets se convirtieron en un objeto de primera clase en 2009, debes añadir una cláusula de regla "RT @" para ayudarte a identificarlos en 2008.
Tanto los Retweets como la clasificación por idioma de las Publicaciones son ejemplos de atributos de Publicación con una larga historia y muchos detalles de producto. A continuación, hablaremos con más detalle sobre estas y otras clases de atributos importantes para hacer coincidencias y para comprender los datos de X.
Reconocer falsos negativos
has:videos, que hace coincidir Publicaciones con videos nativos, esa cláusula no coincidirá con ninguna Publicación anterior a 2015.
Sin embargo, compartir videos ha sido común en X mucho antes de 2015. Antes de esa fecha, los usuarios compartían enlaces a videos alojados en otros sitios, pero en 2015 X incorporó nuevas funciones de “compartir video” directamente en la plataforma. Para encontrar estas Publicaciones anteriores de interés, deberías incluir una cláusula de regla como url:"youtube.com".
Ten en cuenta que, con las APIs de Search, hay algunos ejemplos de metadatos que se han “rellenado retrospectivamente” a medida que se reconstruía su índice. Un buen ejemplo son los cashtag en 2015, se reconstruyó el índice de Search y, en ese proceso, la entidad del símbolo se extrajo de todos los cuerpos de las Publicaciones, incluidos los de principios de 2006, cuando $ se usaba principalmente como jerga: “I hope it $oon!”.
Identificar y filtrar atributos de Publicaciones importantes para tu caso de uso
Perfiles de X
Publicación original y Retweets
is:retweet permite a los usuarios incluir o excluir Retweets. Si se extraen datos de antes de agosto de 2009, los usuarios necesitan dos estrategias para hacer coincidir (o no) los Retweets. Antes de agosto de 2009, es necesario comprobar el propio texto de la Publicación, utilizando coincidencia de frase exacta, para buscar coincidencias con el patrón “@RT ”. Para periodos posteriores a agosto de 2009, el operador is:retweet está disponible.
Clasificaciones de idioma de las Publicaciones
lang: está disponible para todo el archivo de Publicaciones. Con Historical PowerTrack, los metadatos de clasificación de idioma de X están disponibles en el archivo a partir del 26 de marzo de 2013.
Georreferenciar Publicaciones
- Referencias geográficas en el mensaje de una Publicación
- Publicaciones etiquetadas con ubicación por el usuario
- Ubicación «principal» del perfil de la cuenta configurada por un usuario