doc/default/x.md
Generates approximate X (previously Twitter) user and tweet objects, based on X's API v2 responses.
The generators are not a comprehensive match of the API. However, they are enough to create a demo app using X’s user or tweet data, for example.
Produces a random X user based on X's v2 API:
Faker::X.user =>
{
data: [
{
author_id: "5688134805624042468",
id: "2007502004337242257",
text: "Qui sint magni vel."
}
],
includes: {
users: [
{
public_metrics: {
followers_count: 1000,
following_count: 77,
tweet_count: 4642,
listed_count: 704
},
username: "lilian",
pinned_tweet_id: "1702549793917523469",
entities: {
url: {
urls: [ { url: "https://t.co/0iz5wx1ysh", expanded_url: "http://example.com/stuart", display_url: "example.com/stuart" }]
},
description: { hashtags: [{tag: "Adipisci"}] }
},
description: "Est est laborum dolores.",
name: "Kimberli Ullrich Jr.",
verified: false,
location: "104.82.135.3",
id: "5688134805624042468",
protected: false,
url: "https://t.co/lqsqf67cx5",
profile_image_url: "https://robohash.org/990174365255127568.png?size=48x48&set=set1",
created_at: "2018-07-11T00:00:00+00:00"
}
]
}
}
Produces a random X tweet with default attributes. Available extensions can be returned with include_media and include_user:
# Keyword arguments: include_user, include_media
Faker::X.tweet #=> { data: [{:id=>"8821452687517076614", :text=>"Ea et laboriosam vel non.",...
Faker::X.tweet(include_user: true) # Includes user attributes
Faker::X.tweet(include_media: true) # Includes media (photo) attributes
Example outputs:
Faker::X.tweet =>
{
data: [{
id: "5530076569335337477",
text: "Omnis facere ullam velit.",
lang: "ja",
conversation_id: "5530076569335337477",
created_at: "2009-02-21T07:00:00.000Z",
author_id: "2788144046134446176",
public_metrics: {
retweet_count: 95,
reply_count: 3,
like_count: 10,
quote_count: 3
},
possibly_sensitive: false,
entities: {
urls: [{
start: 0,
end: 5,
url: "https://t.co/t6o3lav9z1",
expanded_url: "http://example.com/errol.upton",
display_url: "example.com/errol.upton"
}],
hashtags: [{
start: 0,
end: 5,
tag: "Odit"
}]
}
}]
}
With additional fields:
Faker::X.tweet(include_media: true, include_user: true) =>
{
data: [{
id: "5340086698567112794",
text: "Esse nulla minus qui.",
lang: "en",
conversation_id: "5340086698567112794",
created_at: "2009-07-04T06:00:00.000Z",
author_id: "5156189524741091965",
public_metrics: {
retweet_count: 56,
reply_count: 2,
like_count: 23,
quote_count: 1
},
possibly_sensitive: false,
entities: {
urls: [{
start: 0,
end: 5,
url: "https://t.co/mqplf9rhpn",
expanded_url: "http://example.com/mohamed_koelpin",
display_url: "example.com/mohamed_koelpin"
}],
hashtags: [{
start: 0,
end: 5,
tag: "Atque"
}]
},
attachments: {
media_keys: ["6992225089295851582"]
}
}],
includes: {
media: [{
height: 526,
media_key: "6992225089295851582",
type: "photo",
preview_image_url: "https://loremflickr.com/1064/600",
width: 1571,
alt_text: "Qui ratione magnam et."
}],
users: [{
public_metrics: {
followers_count: 467,
following_count: 3,
tweet_count: 9006,
listed_count: 984
},
username: "gayle",
pinned_tweet_id: "2282479924658708548",
entities: {
url: {
urls: [{
start: 0,
end: 5,
url: "https://t.co/69eytnuwwu",
expanded_url: "http://example.com/werner",
display_url: "example.com/werner"
}]
},
description: {
hashtags: [{
start: 0,
end: 5,
tag: "Soluta"
}]
}
},
description: "Esse harum voluptatem voluptate.",
name: "Elva Spinka",
verified: false,
location: "34.230.131.77",
id: "2365736908578621112",
protected: false,
url: "https://t.co/pyuqky3gdl",
profile_image_url: "https://robohash.org/2204799175591912732.png?size=48x48&set=set1",
created_at: "2025-01-30T07:00:00.000Z"
}]
}
}
Produces a random screen_name:
Faker::X.screen_name #=> "audreanne_hackett"