mirror of https://github.com/mastodon/flodgatt
Add RedisMsg and Event parsing tests (#146)
* Add RedisMsg tests * Testing for Event parsing
This commit is contained in:
parent
c9b58bc11b
commit
2f07cf7d16
|
@ -0,0 +1 @@
|
|||
*.resp text eol=crlf
|
|
@ -35,3 +35,6 @@ pub enum CheckedEvent {
|
|||
AnnouncementDelete { payload: String },
|
||||
Conversation { payload: Conversation, queued_at: Option<i64> },
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test;
|
||||
|
|
|
@ -6,45 +6,45 @@ use serde::{Deserialize, Serialize};
|
|||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
pub(super) struct Account {
|
||||
pub id: Id,
|
||||
username: String,
|
||||
pub(super) username: String,
|
||||
pub acct: String,
|
||||
url: String,
|
||||
display_name: String,
|
||||
note: String,
|
||||
avatar: String,
|
||||
avatar_static: String,
|
||||
header: String,
|
||||
header_static: String,
|
||||
locked: bool,
|
||||
emojis: Vec<Emoji>,
|
||||
discoverable: Option<bool>, // Shouldn't be option?
|
||||
created_at: String,
|
||||
statuses_count: i64,
|
||||
followers_count: i64,
|
||||
following_count: i64,
|
||||
moved: Option<String>,
|
||||
fields: Option<Vec<Field>>,
|
||||
bot: Option<bool>,
|
||||
source: Option<Source>,
|
||||
group: Option<bool>, // undocumented
|
||||
last_status_at: Option<String>, // undocumented
|
||||
pub(super) url: String,
|
||||
pub(super) display_name: String,
|
||||
pub(super) note: String,
|
||||
pub(super) avatar: String,
|
||||
pub(super) avatar_static: String,
|
||||
pub(super) header: String,
|
||||
pub(super) header_static: String,
|
||||
pub(super) locked: bool,
|
||||
pub(super) emojis: Vec<Emoji>,
|
||||
pub(super) discoverable: Option<bool>, // Shouldn't be option?
|
||||
pub(super) created_at: String,
|
||||
pub(super) statuses_count: i64,
|
||||
pub(super) followers_count: i64,
|
||||
pub(super) following_count: i64,
|
||||
pub(super) moved: Option<String>,
|
||||
pub(super) fields: Option<Vec<Field>>,
|
||||
pub(super) bot: Option<bool>,
|
||||
pub(super) source: Option<Source>,
|
||||
pub(super) group: Option<bool>, // undocumented
|
||||
pub(super) last_status_at: Option<String>, // undocumented
|
||||
}
|
||||
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
struct Field {
|
||||
name: String,
|
||||
value: String,
|
||||
verified_at: Option<String>,
|
||||
pub(super) struct Field {
|
||||
pub(super) name: String,
|
||||
pub(super) value: String,
|
||||
pub(super) verified_at: Option<String>,
|
||||
}
|
||||
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
struct Source {
|
||||
note: String,
|
||||
fields: Vec<Field>,
|
||||
privacy: Option<Visibility>,
|
||||
sensitive: bool,
|
||||
language: String,
|
||||
follow_requests_count: i64,
|
||||
pub(super) struct Source {
|
||||
pub(super) note: String,
|
||||
pub(super) fields: Vec<Field>,
|
||||
pub(super) privacy: Option<Visibility>,
|
||||
pub(super) sensitive: bool,
|
||||
pub(super) language: String,
|
||||
pub(super) follow_requests_count: i64,
|
||||
}
|
||||
|
|
|
@ -22,37 +22,37 @@ use std::string::String;
|
|||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
pub struct Status {
|
||||
id: Id,
|
||||
uri: String,
|
||||
created_at: String,
|
||||
account: Account,
|
||||
content: String,
|
||||
visibility: Visibility,
|
||||
sensitive: bool,
|
||||
spoiler_text: String,
|
||||
media_attachments: Vec<Attachment>,
|
||||
application: Option<Application>, // Should be non-optional?
|
||||
mentions: Vec<Mention>,
|
||||
tags: Vec<Tag>,
|
||||
emojis: Vec<Emoji>,
|
||||
reblogs_count: i64,
|
||||
favourites_count: i64,
|
||||
replies_count: i64,
|
||||
url: Option<String>,
|
||||
in_reply_to_id: Option<Id>,
|
||||
in_reply_to_account_id: Option<Id>,
|
||||
reblog: Option<Box<Status>>,
|
||||
poll: Option<Poll>,
|
||||
card: Option<Card>,
|
||||
pub(super) id: Id,
|
||||
pub(super) uri: String,
|
||||
pub(super) created_at: String,
|
||||
pub(super) account: Account,
|
||||
pub(super) content: String,
|
||||
pub(super) visibility: Visibility,
|
||||
pub(super) sensitive: bool,
|
||||
pub(super) spoiler_text: String,
|
||||
pub(super) media_attachments: Vec<Attachment>,
|
||||
pub(super) application: Option<Application>, // Should be non-optional?
|
||||
pub(super) mentions: Vec<Mention>,
|
||||
pub(super) tags: Vec<Tag>,
|
||||
pub(super) emojis: Vec<Emoji>,
|
||||
pub(super) reblogs_count: i64,
|
||||
pub(super) favourites_count: i64,
|
||||
pub(super) replies_count: i64,
|
||||
pub(super) url: Option<String>,
|
||||
pub(super) in_reply_to_id: Option<Id>,
|
||||
pub(super) in_reply_to_account_id: Option<Id>,
|
||||
pub(super) reblog: Option<Box<Status>>,
|
||||
pub(super) poll: Option<Poll>,
|
||||
pub(super) card: Option<Card>,
|
||||
pub(crate) language: Option<String>,
|
||||
|
||||
text: Option<String>,
|
||||
pub(super) text: Option<String>,
|
||||
// ↓↓↓ Only for authorized users
|
||||
favourited: Option<bool>,
|
||||
reblogged: Option<bool>,
|
||||
muted: Option<bool>,
|
||||
bookmarked: Option<bool>,
|
||||
pinned: Option<bool>,
|
||||
pub(super) favourited: Option<bool>,
|
||||
pub(super) reblogged: Option<bool>,
|
||||
pub(super) muted: Option<bool>,
|
||||
pub(super) bookmarked: Option<bool>,
|
||||
pub(super) pinned: Option<bool>,
|
||||
}
|
||||
|
||||
impl Payload for Status {
|
||||
|
|
|
@ -2,10 +2,10 @@ use serde::{Deserialize, Serialize};
|
|||
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
pub(super) struct Application {
|
||||
name: String,
|
||||
website: Option<String>,
|
||||
vapid_key: Option<String>,
|
||||
client_id: Option<String>,
|
||||
client_secret: Option<String>,
|
||||
pub(in super::super) struct Application {
|
||||
pub(super) name: String,
|
||||
pub(super) website: Option<String>,
|
||||
pub(super) vapid_key: Option<String>,
|
||||
pub(super) client_id: Option<String>,
|
||||
pub(super) client_secret: Option<String>,
|
||||
}
|
||||
|
|
|
@ -2,21 +2,21 @@ use serde::{Deserialize, Serialize};
|
|||
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
pub(super) struct Attachment {
|
||||
id: String,
|
||||
r#type: AttachmentType,
|
||||
url: String,
|
||||
preview_url: String,
|
||||
remote_url: Option<String>,
|
||||
text_url: Option<String>,
|
||||
meta: Option<serde_json::Value>,
|
||||
description: Option<String>,
|
||||
blurhash: Option<String>,
|
||||
pub(in super::super) struct Attachment {
|
||||
pub(super) id: String,
|
||||
pub(super) r#type: AttachmentType,
|
||||
pub(super) url: String,
|
||||
pub(super) preview_url: String,
|
||||
pub(super) remote_url: Option<String>,
|
||||
pub(super) text_url: Option<String>,
|
||||
pub(super) meta: Option<serde_json::Value>,
|
||||
pub(super) description: Option<String>,
|
||||
pub(super) blurhash: Option<String>,
|
||||
}
|
||||
|
||||
#[serde(rename_all = "lowercase", deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
enum AttachmentType {
|
||||
pub(super) enum AttachmentType {
|
||||
Unknown,
|
||||
Image,
|
||||
Gifv,
|
||||
|
|
|
@ -2,25 +2,25 @@ use serde::{Deserialize, Serialize};
|
|||
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
pub(super) struct Card {
|
||||
url: String,
|
||||
title: String,
|
||||
description: String,
|
||||
r#type: CardType,
|
||||
author_name: Option<String>,
|
||||
author_url: Option<String>,
|
||||
provider_name: Option<String>,
|
||||
provider_url: Option<String>,
|
||||
html: Option<String>,
|
||||
width: Option<i64>,
|
||||
height: Option<i64>,
|
||||
image: Option<String>,
|
||||
embed_url: Option<String>,
|
||||
pub(in super::super) struct Card {
|
||||
pub(super) url: String,
|
||||
pub(super) title: String,
|
||||
pub(super) description: String,
|
||||
pub(super) r#type: CardType,
|
||||
pub(super) author_name: Option<String>,
|
||||
pub(super) author_url: Option<String>,
|
||||
pub(super) provider_name: Option<String>,
|
||||
pub(super) provider_url: Option<String>,
|
||||
pub(super) html: Option<String>,
|
||||
pub(super) width: Option<i64>,
|
||||
pub(super) height: Option<i64>,
|
||||
pub(super) image: Option<String>,
|
||||
pub(super) embed_url: Option<String>,
|
||||
}
|
||||
|
||||
#[serde(rename_all = "lowercase", deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
enum CardType {
|
||||
pub(super) enum CardType {
|
||||
Link,
|
||||
Photo,
|
||||
Video,
|
||||
|
|
|
@ -3,22 +3,22 @@ use serde::{Deserialize, Serialize};
|
|||
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
pub(super) struct Poll {
|
||||
id: String,
|
||||
expires_at: String,
|
||||
expired: bool,
|
||||
multiple: bool,
|
||||
votes_count: i64,
|
||||
voters_count: Option<i64>,
|
||||
voted: Option<bool>,
|
||||
own_votes: Option<Vec<i64>>,
|
||||
options: Vec<PollOptions>,
|
||||
emojis: Vec<Emoji>,
|
||||
pub(in super::super) struct Poll {
|
||||
pub(super) id: String,
|
||||
pub(super) expires_at: String,
|
||||
pub(super) expired: bool,
|
||||
pub(super) multiple: bool,
|
||||
pub(super) votes_count: i64,
|
||||
pub(super) voters_count: Option<i64>,
|
||||
pub(super) voted: Option<bool>,
|
||||
pub(super) own_votes: Option<Vec<i64>>,
|
||||
pub(super) options: Vec<PollOptions>,
|
||||
pub(super) emojis: Vec<Emoji>,
|
||||
}
|
||||
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
struct PollOptions {
|
||||
title: String,
|
||||
votes_count: Option<i32>,
|
||||
pub(super) struct PollOptions {
|
||||
pub(super) title: String,
|
||||
pub(super) votes_count: Option<i32>,
|
||||
}
|
||||
|
|
|
@ -3,15 +3,15 @@ use serde::{Deserialize, Serialize};
|
|||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
pub(super) struct Tag {
|
||||
name: String,
|
||||
url: String,
|
||||
history: Option<Vec<History>>,
|
||||
pub(super) name: String,
|
||||
pub(super) url: String,
|
||||
pub(super) history: Option<Vec<History>>,
|
||||
}
|
||||
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||
struct History {
|
||||
day: String,
|
||||
uses: String,
|
||||
accounts: String,
|
||||
pub(super) struct History {
|
||||
pub(super) day: String,
|
||||
pub(super) uses: String,
|
||||
pub(super) accounts: String,
|
||||
}
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
use super::{super::*, *};
|
||||
use checked_event::{
|
||||
account::{Account, Field},
|
||||
tag::Tag,
|
||||
visibility::Visibility::*,
|
||||
CheckedEvent::*,
|
||||
*,
|
||||
};
|
||||
use std::fs;
|
||||
|
||||
#[test]
|
||||
fn parse_redis_msg_to_event() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let mut test_num = 1;
|
||||
|
||||
let output = vec![
|
||||
include!(concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/test_data/event_001.rs"
|
||||
)),
|
||||
include!(concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/test_data/event_002.rs"
|
||||
)),
|
||||
];
|
||||
|
||||
while let (Ok(input), Some(output)) = (
|
||||
fs::read_to_string(format!("test_data/msg.event_txt_{:03}.txt", test_num)),
|
||||
output.get(test_num - 1),
|
||||
) {
|
||||
println!("parsing `{:03}.resp`", test_num);
|
||||
test_num += 1;
|
||||
|
||||
let event = Event::try_from(input)?;
|
||||
println!("{:#?}", event);
|
||||
|
||||
assert_eq!(&event, output);
|
||||
}
|
||||
assert!(test_num > 1);
|
||||
|
||||
Ok(())
|
||||
}
|
|
@ -91,21 +91,17 @@ fn utf8_to_redis_data<'a>(s: &'a str) -> Result<(RedisData, &'a str), RedisParse
|
|||
e => Err(InvalidLineStart(e.to_string())),
|
||||
}
|
||||
}
|
||||
|
||||
fn after_newline_at(s: &str, start: usize) -> RedisParser<&str> {
|
||||
let s = s.get(start..).ok_or(Incomplete)?;
|
||||
if s.len() < 2 {
|
||||
Err(Incomplete)?;
|
||||
fn skip_line(s: &str, len: usize) -> RedisParser<&str> {
|
||||
let line = s.get(..len + 2).ok_or(Incomplete)?;
|
||||
if !line.ends_with("\r\n") {
|
||||
Err(InvalidLineEnd(len, s.to_string()))?;
|
||||
}
|
||||
if !s.starts_with("\r\n") {
|
||||
Err(InvalidLineEnd)?;
|
||||
}
|
||||
Ok(s.get("\r\n".len()..).ok_or(Incomplete)?)
|
||||
Ok(s.get(len + "\r\n".len()..).ok_or(Incomplete)?)
|
||||
}
|
||||
|
||||
fn parse_number_at<'a>(s: &'a str) -> RedisParser<(usize, &'a str)> {
|
||||
let len = s.chars().position(|c| !c.is_numeric()).ok_or(Incomplete)?;
|
||||
Ok((s[..len].parse()?, after_newline_at(s, len)?))
|
||||
Ok((s[..len].parse()?, skip_line(s, len)?))
|
||||
}
|
||||
|
||||
/// Parse a Redis bulk string and return the content of that string and the unparsed remainder.
|
||||
|
@ -114,7 +110,7 @@ fn parse_number_at<'a>(s: &'a str) -> RedisParser<(usize, &'a str)> {
|
|||
fn parse_redis_bulk_string<'a>(s: &'a str) -> RedisParser<(RedisData, &'a str)> {
|
||||
let (len, rest) = parse_number_at(s)?;
|
||||
let content = rest.get(..len).ok_or(Incomplete)?;
|
||||
Ok((BulkString(content), after_newline_at(&rest, len)?))
|
||||
Ok((BulkString(content), skip_line(rest, len)?))
|
||||
}
|
||||
|
||||
fn parse_redis_int<'a>(s: &'a str) -> RedisParser<(RedisData, &'a str)> {
|
||||
|
|
|
@ -5,7 +5,7 @@ pub enum RedisParseErr {
|
|||
Incomplete,
|
||||
InvalidNumber(std::num::ParseIntError),
|
||||
InvalidLineStart(String),
|
||||
InvalidLineEnd,
|
||||
InvalidLineEnd(usize, String),
|
||||
IncorrectRedisType,
|
||||
MissingField,
|
||||
}
|
||||
|
@ -28,7 +28,11 @@ impl fmt::Display for RedisParseErr {
|
|||
the type of the Redis line.",
|
||||
line_start_char
|
||||
),
|
||||
InvalidLineEnd => "A Redis line ended before expected line length".to_string(),
|
||||
InvalidLineEnd(len, line) => format!( // TODO - FIXME
|
||||
"A Redis line did not have the promised length of {}. \
|
||||
The line is: {}",
|
||||
len, line
|
||||
),
|
||||
IncorrectRedisType => "Received a Redis type that is not supported in this context. \
|
||||
Flodgatt expects each message from Redis to be a Redis array \
|
||||
consisting of bulk strings or integers."
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
use super::*;
|
||||
use std::fs;
|
||||
use std::path;
|
||||
|
||||
#[test]
|
||||
fn parse_redis_subscribe() -> Result<(), RedisParseErr> {
|
||||
|
@ -7,7 +9,7 @@ fn parse_redis_subscribe() -> Result<(), RedisParseErr> {
|
|||
let r_subscribe = match RedisParseOutput::try_from(input) {
|
||||
Ok(NonMsg(leftover)) => leftover,
|
||||
Ok(Msg(msg)) => panic!("unexpectedly got a msg: {:?}", msg),
|
||||
Err(e) => panic!("Error in parsing subscribe command: {:?}", e),
|
||||
Err(e) => panic!("Error in parsing subscribe command: {}", e),
|
||||
};
|
||||
assert!(r_subscribe.is_empty());
|
||||
|
||||
|
@ -21,11 +23,11 @@ fn parse_redis_detects_non_newline() -> Result<(), RedisParseErr> {
|
|||
|
||||
match RedisParseOutput::try_from(input) {
|
||||
Ok(NonMsg(leftover)) => panic!(
|
||||
"Parsed an invalid msg as a non-msg.\nInput `{}` parsed to NonMsg({:?})",
|
||||
"Parsed an invalid msg as a non-msg.\nInput `{}` parsed to NonMsg({})",
|
||||
&input, leftover
|
||||
),
|
||||
Ok(Msg(msg)) => panic!(
|
||||
"Parsed an invalid msg as a msg.\nInput `{:?}` parsed to {:?}",
|
||||
"Parsed an invalid msg as a msg.\nInput `{}` parsed to {:?}",
|
||||
&input, msg
|
||||
),
|
||||
Err(_) => (), // should err
|
||||
|
@ -45,7 +47,7 @@ fn parse_redis_msg() -> Result<(), RedisParseErr> {
|
|||
&input, leftover
|
||||
),
|
||||
Ok(Msg(msg)) => msg,
|
||||
Err(e) => panic!("Error in parsing subscribe command: {:?}", e),
|
||||
Err(e) => panic!("Error in parsing subscribe command: {}", e),
|
||||
};
|
||||
|
||||
assert!(r_msg.leftover_input.is_empty());
|
||||
|
@ -55,21 +57,29 @@ fn parse_redis_msg() -> Result<(), RedisParseErr> {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn parse_long_redis_msg() -> Result<(), RedisParseErr> {
|
||||
let input = ONE_MESSAGE_FOR_THE_USER_TIMLINE_FROM_REDIS;
|
||||
fn parse_long_redis_msg() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let mut test_num = 1;
|
||||
while let (Ok(input), Ok(output)) = (
|
||||
fs::read_to_string(format!("test_data/redis_input_{:03}.resp", test_num)),
|
||||
fs::read_to_string(format!("test_data/msg.event_txt_{:03}.txt", test_num)),
|
||||
) {
|
||||
println!("parsing `{:03}.resp`", test_num);
|
||||
test_num += 1;
|
||||
|
||||
let r_msg = match RedisParseOutput::try_from(input) {
|
||||
Ok(NonMsg(leftover)) => panic!(
|
||||
"Parsed a msg as a non-msg.\nInput `{}` parsed to NonMsg({:?})",
|
||||
&input, leftover
|
||||
),
|
||||
Ok(Msg(msg)) => msg,
|
||||
Err(e) => panic!("Error in parsing subscribe command: {:?}", e),
|
||||
};
|
||||
let r_msg = match RedisParseOutput::try_from(input.as_str()) {
|
||||
Ok(NonMsg(leftover)) => panic!(
|
||||
"Parsed a msg as a non-msg.\nInput `{}` parsed to NonMsg({:?})",
|
||||
&input, leftover
|
||||
),
|
||||
Ok(Msg(msg)) => msg,
|
||||
Err(e) => panic!("Error in parsing Redis input: {}", e),
|
||||
};
|
||||
assert!(r_msg.leftover_input.is_empty());
|
||||
assert_eq!(r_msg.event_txt, output);
|
||||
|
||||
assert_eq!(r_msg.timeline_txt, "timeline:public");
|
||||
}
|
||||
assert!(test_num > 1);
|
||||
|
||||
assert!(r_msg.leftover_input.is_empty());
|
||||
assert_eq!(r_msg.timeline_txt, "timeline:1");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
const ONE_MESSAGE_FOR_THE_USER_TIMLINE_FROM_REDIS: &str = "*3\r\n$7\r\nmessage\r\n$10\r\ntimeline:1\r\n$3790\r\n{\"event\":\"update\",\"payload\":{\"id\":\"102775370117886890\",\"created_at\":\"2019-09-11T18:42:19.000Z\",\"in_reply_to_id\":null,\"in_reply_to_account_id\":null,\"sensitive\":false,\"spoiler_text\":\"\",\"visibility\":\"unlisted\",\"language\":\"en\",\"uri\":\"https://mastodon.host/users/federationbot/statuses/102775346916917099\",\"url\":\"https://mastodon.host/@federationbot/102775346916917099\",\"replies_count\":0,\"reblogs_count\":0,\"favourites_count\":0,\"favourited\":false,\"reblogged\":false,\"muted\":false,\"content\":\"<p>Trending tags:<br><a href=\\\"https://mastodon.host/tags/neverforget\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\">#<span>neverforget</span></a><br><a href=\\\"https://mastodon.host/tags/4styles\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\">#<span>4styles</span></a><br><a href=\\\"https://mastodon.host/tags/newpipe\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\">#<span>newpipe</span></a><br><a href=\\\"https://mastodon.host/tags/uber\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\">#<span>uber</span></a><br><a href=\\\"https://mastodon.host/tags/mercredifiction\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\">#<span>mercredifiction</span></a></p>\",\"reblog\":null,\"account\":{\"id\":\"78\",\"username\":\"federationbot\",\"acct\":\"federationbot@mastodon.host\",\"display_name\":\"Federation Bot\",\"locked\":false,\"bot\":false,\"created_at\":\"2019-09-10T15:04:25.559Z\",\"note\":\"<p>Hello, I am mastodon.host official semi bot.</p><p>Follow me if you want to have some updates on the view of the fediverse from here ( I only post unlisted ). </p><p>I also randomly boost one of my followers toot every hour !</p><p>If you don\'t feel confortable with me following you, tell me: unfollow and I\'ll do it :)</p><p>If you want me to follow you, just tell me follow ! </p><p>If you want automatic follow for new users on your instance and you are an instance admin, contact me !</p><p>Other commands are private :)</p>\",\"url\":\"https://mastodon.host/@federationbot\",\"avatar\":\"https://instance.codesections.com/system/accounts/avatars/000/000/078/original/d9e2be5398629cf8.jpeg?1568127863\",\"avatar_static\":\"https://instance.codesections.com/system/accounts/avatars/000/000/078/original/d9e2be5398629cf8.jpeg?1568127863\",\"header\":\"https://instance.codesections.com/headers/original/missing.png\",\"header_static\":\"https://instance.codesections.com/headers/original/missing.png\",\"followers_count\":16636,\"following_count\":179532,\"statuses_count\":50554,\"emojis\":[],\"fields\":[{\"name\":\"More stats\",\"value\":\"<a href=\\\"https://mastodon.host/stats.html\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\"><span class=\\\"invisible\\\">https://</span><span class=\\\"\\\">mastodon.host/stats.html</span><span class=\\\"invisible\\\"></span></a>\",\"verified_at\":null},{\"name\":\"More infos\",\"value\":\"<a href=\\\"https://mastodon.host/about/more\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\"><span class=\\\"invisible\\\">https://</span><span class=\\\"\\\">mastodon.host/about/more</span><span class=\\\"invisible\\\"></span></a>\",\"verified_at\":null},{\"name\":\"Owner/Friend\",\"value\":\"<span class=\\\"h-card\\\"><a href=\\\"https://mastodon.host/@gled\\\" class=\\\"u-url mention\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\">@<span>gled</span></a></span>\",\"verified_at\":null}]},\"media_attachments\":[],\"mentions\":[],\"tags\":[{\"name\":\"4styles\",\"url\":\"https://instance.codesections.com/tags/4styles\"},{\"name\":\"neverforget\",\"url\":\"https://instance.codesections.com/tags/neverforget\"},{\"name\":\"mercredifiction\",\"url\":\"https://instance.codesections.com/tags/mercredifiction\"},{\"name\":\"uber\",\"url\":\"https://instance.codesections.com/tags/uber\"},{\"name\":\"newpipe\",\"url\":\"https://instance.codesections.com/tags/newpipe\"}],\"emojis\":[],\"card\":null,\"poll\":null},\"queued_at\":1568227693541}\r\n";
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
Event::TypeSafe(
|
||||
Update {
|
||||
payload: Status {
|
||||
id: Id(102775370117886890),
|
||||
uri: "https://mastodon.host/users/federationbot/statuses/102775346916917099".to_string(),
|
||||
created_at: "2019-09-11T18:42:19.000Z".to_string(),
|
||||
account: Account {
|
||||
id: Id(78),
|
||||
username: "federationbot".to_string(),
|
||||
acct: "federationbot@mastodon.host".to_string(),
|
||||
url: "https://mastodon.host/@federationbot".to_string(),
|
||||
display_name: "Federation Bot".to_string(),
|
||||
note: "<p>Hello, I am mastodon.host official semi bot.</p><p>Follow me if you want to have some updates on the view \
|
||||
of the fediverse from here ( I only post unlisted ). </p><p>I also randomly boost one of my followers toot \
|
||||
every hour !</p><p>If you don\'t feel confortable with me following you, tell me: unfollow and I\'ll do it \
|
||||
:)</p><p>If you want me to follow you, just tell me follow ! </p><p>If you want automatic follow for new \
|
||||
users on your instance and you are an instance admin, contact me !</p>\
|
||||
<p>Other commands are private :)</p>".to_string(),
|
||||
avatar: "https://instance.codesections.com/system/accounts/avatars/000/000/078/original/d9e2be5398629cf8.jpeg\
|
||||
?1568127863".to_string(),
|
||||
avatar_static: "https://instance.codesections.com/system/accounts/avatars/000/000/078/original/d9e2be5398629cf8\
|
||||
.jpeg?1568127863".to_string(),
|
||||
header: "https://instance.codesections.com/headers/original/missing.png".to_string(),
|
||||
header_static: "https://instance.codesections.com/headers/original/missing.png".to_string(),
|
||||
locked:
|
||||
false,
|
||||
emojis: [].to_vec(),
|
||||
discoverable: None,
|
||||
created_at: "2019-09-10T15:04:25.559Z".to_string(),
|
||||
statuses_count: 50554,
|
||||
followers_count: 16636,
|
||||
following_count: 179532,
|
||||
moved: None,
|
||||
fields: Some(
|
||||
[ Field {
|
||||
name: "More stats".to_string(),
|
||||
value: "<a href=\"https://mastodon.host/stats.html\" rel=\"nofollow noopener\" target=\"_blank\">\
|
||||
<span class=\"invisible\">https://</span><span class=\"\">mastodon.host/stats.html</span>\
|
||||
<span class=\"invisible\"></span></a>".to_string(),
|
||||
verified_at: None
|
||||
},
|
||||
Field {
|
||||
name: "More infos".to_string(),
|
||||
value: "<a href=\"https://mastodon.host/about/more\" rel=\"nofollow noopener\" target=\"_blank\">\
|
||||
<span class=\"invisible\">https://</span><span class=\"\">mastodon.host/about/more</span>\
|
||||
<span class=\"invisible\"></span></a>".to_string(),
|
||||
verified_at: None
|
||||
},
|
||||
Field {
|
||||
name: "Owner/Friend".to_string(),
|
||||
value: "<span class=\"h-card\"><a href=\"https://mastodon.host/@gled\" class=\"u-url mention\" \
|
||||
rel=\"nofollow noopener\" target=\"_blank\">@<span>gled</span></a></span>".to_string(),
|
||||
verified_at: None
|
||||
}
|
||||
].to_vec()
|
||||
),
|
||||
bot: Some(false),
|
||||
source: None,
|
||||
group: None,
|
||||
last_status_at: None
|
||||
},
|
||||
content: "<p>Trending tags:<br><a href=\"https://mastodon.host/tags/neverforget\" class=\"mention hashtag\" \
|
||||
rel=\"nofollow noopener\" target=\"_blank\">#<span>neverforget</span></a><br>\
|
||||
<a href=\"https://mastodon.host/tags/4styles\" class=\"mention hashtag\" rel=\"nofollow noopener\" \
|
||||
target=\"_blank\">#<span>4styles</span></a><br><a href=\"https://mastodon.host/tags/newpipe\" \
|
||||
class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>newpipe</span></a>\
|
||||
<br><a href=\"https://mastodon.host/tags/uber\" class=\"mention hashtag\" rel=\"nofollow noopener\" \
|
||||
target=\"_blank\">#<span>uber</span></a><br><a href=\"https://mastodon.host/tags/mercredifiction\" \
|
||||
class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>mercredifiction</span>\
|
||||
</a></p>".to_string(),
|
||||
visibility: Unlisted,
|
||||
sensitive: false,
|
||||
spoiler_text: "".to_string(),
|
||||
media_attachments: [].to_vec(),
|
||||
application: None,
|
||||
mentions: [].to_vec(),
|
||||
tags: [
|
||||
Tag {
|
||||
name: "4styles".to_string(),
|
||||
url: "https://instance.codesections.com/tags/4styles".to_string(),
|
||||
history: None
|
||||
},
|
||||
Tag { name: "neverforget".to_string(),
|
||||
url: "https://instance.codesections.com/tags/neverforget".to_string(),
|
||||
history: None
|
||||
},
|
||||
Tag { name: "mercredifiction".to_string(),
|
||||
url: "https://instance.codesections.com/tags/mercredifiction".to_string(),
|
||||
history: None
|
||||
},
|
||||
Tag { name: "uber".to_string(),
|
||||
url: "https://instance.codesections.com/tags/uber".to_string(),
|
||||
history: None
|
||||
},
|
||||
Tag { name: "newpipe".to_string(),
|
||||
url: "https://instance.codesections.com/tags/newpipe".to_string(),
|
||||
history: None
|
||||
}
|
||||
].to_vec(),
|
||||
emojis: [].to_vec(),
|
||||
reblogs_count: 0,
|
||||
favourites_count: 0,
|
||||
replies_count: 0,
|
||||
url: Some("https://mastodon.host/@federationbot/102775346916917099".to_string()),
|
||||
in_reply_to_id: None,
|
||||
in_reply_to_account_id: None,
|
||||
reblog: None,
|
||||
poll: None,
|
||||
card: None,
|
||||
language: Some("en".to_string()),
|
||||
text: None,
|
||||
favourited: Some(false),
|
||||
reblogged: Some(false),
|
||||
muted: Some(false),
|
||||
bookmarked: None,
|
||||
pinned: None
|
||||
},
|
||||
queued_at: Some(1568227693541) })
|
|
@ -0,0 +1,100 @@
|
|||
Event::TypeSafe(
|
||||
Update {
|
||||
payload: Status {
|
||||
id: Id(
|
||||
104072549781970698,
|
||||
),
|
||||
uri: "https://newsbots.eu/users/aljazeera_english/statuses/104072549673971025".to_string(),
|
||||
created_at: "2020-04-27T20:58:02.000Z".to_string(),
|
||||
account: Account {
|
||||
id: Id(
|
||||
1852,
|
||||
),
|
||||
username: "aljazeera_english".to_string(),
|
||||
acct: "aljazeera_english@newsbots.eu".to_string(),
|
||||
url: "https://newsbots.eu/@aljazeera_english".to_string(),
|
||||
display_name: "Al Jazeera English".to_string(),
|
||||
note: "<p>Breaking news and ongoing coverage from around the world.</p><p>• unofficial •</p>".to_string(),
|
||||
avatar: "https://instance.codesections.com/system/accounts/avatars/000/001/852/original/6377f39416193690.jpeg?1584742113".to_string(),
|
||||
avatar_static: "https://instance.codesections.com/system/accounts/avatars/000/001/852/original/6377f39416193690.jpeg?1584742113".to_string(),
|
||||
header: "https://instance.codesections.com/system/accounts/headers/000/001/852/original/f582c7deb0ec14ac.jpeg?1584742114".to_string(),
|
||||
header_static: "https://instance.codesections.com/system/accounts/headers/000/001/852/original/f582c7deb0ec14ac.jpeg?1584742114".to_string(),
|
||||
locked: false,
|
||||
emojis: [].to_vec(),
|
||||
discoverable: Some(
|
||||
true,
|
||||
),
|
||||
created_at: "2020-03-20T22:08:35.417Z".to_string(),
|
||||
statuses_count: 26018,
|
||||
followers_count: 915,
|
||||
following_count: 1,
|
||||
moved: None,
|
||||
fields: Some(
|
||||
[
|
||||
Field {
|
||||
name: "📍".to_string(),
|
||||
value: "Doha, Qatar".to_string(),
|
||||
verified_at: None,
|
||||
},
|
||||
Field {
|
||||
name: "🔗".to_string(),
|
||||
value: "<a href=\"https://www.aljazeera.com\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">aljazeera.com</span><span class=\"invisible\"></span></a>".to_string(),
|
||||
verified_at: None,
|
||||
},
|
||||
].to_vec(),
|
||||
),
|
||||
bot: Some(
|
||||
true,
|
||||
),
|
||||
source: None,
|
||||
group: Some(
|
||||
false,
|
||||
),
|
||||
last_status_at: Some(
|
||||
"2020-04-27".to_string(),
|
||||
),
|
||||
},
|
||||
content: "<p>**Far-right governor defies Rome, lifts Venice lockdown early**</p><p>\"Veneto\'s governor, Luca Zaia, of the far-rght League party, says keeping restrictions in place risks \'social conflict\'.\"</p><p><a href=\"https://www.aljazeera.com/news/2020/04/governor-defies-rome-lifts-venice-lockdown-early-200427171844336.html\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"ellipsis\">aljazeera.com/news/2020/04/gov</span><span class=\"invisible\">ernor-defies-rome-lifts-venice-lockdown-early-200427171844336.html</span></a></p><p><a href=\"https://newsbots.eu/tags/news\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>news</span></a> <a href=\"https://newsbots.eu/tags/bot\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>bot</span></a></p>".to_string(),
|
||||
visibility: Public,
|
||||
sensitive: false,
|
||||
spoiler_text: "".to_string(),
|
||||
media_attachments: [].to_vec(),
|
||||
application: None,
|
||||
mentions: [].to_vec(),
|
||||
tags: [
|
||||
Tag {
|
||||
name: "news".to_string(),
|
||||
url: "https://instance.codesections.com/tags/news".to_string(),
|
||||
history: None,
|
||||
},
|
||||
Tag {
|
||||
name: "bot".to_string(),
|
||||
url: "https://instance.codesections.com/tags/bot".to_string(),
|
||||
history: None,
|
||||
},
|
||||
].to_vec(),
|
||||
emojis: [].to_vec(),
|
||||
reblogs_count: 0,
|
||||
favourites_count: 0,
|
||||
replies_count: 0,
|
||||
url: Some(
|
||||
"https://newsbots.eu/@aljazeera_english/104072549673971025".to_string(),
|
||||
),
|
||||
in_reply_to_id: None,
|
||||
in_reply_to_account_id: None,
|
||||
reblog: None,
|
||||
poll: None,
|
||||
card: None,
|
||||
language: Some(
|
||||
"en".to_string(),
|
||||
),
|
||||
text: None,
|
||||
favourited: None,
|
||||
reblogged: None,
|
||||
muted: None,
|
||||
bookmarked: None,
|
||||
pinned: None,
|
||||
},
|
||||
queued_at: None,
|
||||
},
|
||||
)
|
|
@ -0,0 +1 @@
|
|||
{"event":"update","payload":{"id":"102775370117886890","created_at":"2019-09-11T18:42:19.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"unlisted","language":"en","uri":"https://mastodon.host/users/federationbot/statuses/102775346916917099","url":"https://mastodon.host/@federationbot/102775346916917099","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"content":"<p>Trending tags:<br><a href=\"https://mastodon.host/tags/neverforget\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>neverforget</span></a><br><a href=\"https://mastodon.host/tags/4styles\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>4styles</span></a><br><a href=\"https://mastodon.host/tags/newpipe\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>newpipe</span></a><br><a href=\"https://mastodon.host/tags/uber\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>uber</span></a><br><a href=\"https://mastodon.host/tags/mercredifiction\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>mercredifiction</span></a></p>","reblog":null,"account":{"id":"78","username":"federationbot","acct":"federationbot@mastodon.host","display_name":"Federation Bot","locked":false,"bot":false,"created_at":"2019-09-10T15:04:25.559Z","note":"<p>Hello, I am mastodon.host official semi bot.</p><p>Follow me if you want to have some updates on the view of the fediverse from here ( I only post unlisted ). </p><p>I also randomly boost one of my followers toot every hour !</p><p>If you don't feel confortable with me following you, tell me: unfollow and I'll do it :)</p><p>If you want me to follow you, just tell me follow ! </p><p>If you want automatic follow for new users on your instance and you are an instance admin, contact me !</p><p>Other commands are private :)</p>","url":"https://mastodon.host/@federationbot","avatar":"https://instance.codesections.com/system/accounts/avatars/000/000/078/original/d9e2be5398629cf8.jpeg?1568127863","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/000/078/original/d9e2be5398629cf8.jpeg?1568127863","header":"https://instance.codesections.com/headers/original/missing.png","header_static":"https://instance.codesections.com/headers/original/missing.png","followers_count":16636,"following_count":179532,"statuses_count":50554,"emojis":[],"fields":[{"name":"More stats","value":"<a href=\"https://mastodon.host/stats.html\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">mastodon.host/stats.html</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"More infos","value":"<a href=\"https://mastodon.host/about/more\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">mastodon.host/about/more</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"Owner/Friend","value":"<span class=\"h-card\"><a href=\"https://mastodon.host/@gled\" class=\"u-url mention\" rel=\"nofollow noopener\" target=\"_blank\">@<span>gled</span></a></span>","verified_at":null}]},"media_attachments":[],"mentions":[],"tags":[{"name":"4styles","url":"https://instance.codesections.com/tags/4styles"},{"name":"neverforget","url":"https://instance.codesections.com/tags/neverforget"},{"name":"mercredifiction","url":"https://instance.codesections.com/tags/mercredifiction"},{"name":"uber","url":"https://instance.codesections.com/tags/uber"},{"name":"newpipe","url":"https://instance.codesections.com/tags/newpipe"}],"emojis":[],"card":null,"poll":null},"queued_at":1568227693541}
|
|
@ -0,0 +1 @@
|
|||
{"event":"update","payload":{"id":"104072549781970698","created_at":"2020-04-27T20:58:02.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"https://newsbots.eu/users/aljazeera_english/statuses/104072549673971025","url":"https://newsbots.eu/@aljazeera_english/104072549673971025","replies_count":0,"reblogs_count":0,"favourites_count":0,"content":"<p>**Far-right governor defies Rome, lifts Venice lockdown early**</p><p>\"Veneto's governor, Luca Zaia, of the far-rght League party, says keeping restrictions in place risks 'social conflict'.\"</p><p><a href=\"https://www.aljazeera.com/news/2020/04/governor-defies-rome-lifts-venice-lockdown-early-200427171844336.html\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"ellipsis\">aljazeera.com/news/2020/04/gov</span><span class=\"invisible\">ernor-defies-rome-lifts-venice-lockdown-early-200427171844336.html</span></a></p><p><a href=\"https://newsbots.eu/tags/news\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>news</span></a> <a href=\"https://newsbots.eu/tags/bot\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>bot</span></a></p>","reblog":null,"account":{"id":"1852","username":"aljazeera_english","acct":"aljazeera_english@newsbots.eu","display_name":"Al Jazeera English","locked":false,"bot":true,"discoverable":true,"group":false,"created_at":"2020-03-20T22:08:35.417Z","note":"<p>Breaking news and ongoing coverage from around the world.</p><p>• unofficial •</p>","url":"https://newsbots.eu/@aljazeera_english","avatar":"https://instance.codesections.com/system/accounts/avatars/000/001/852/original/6377f39416193690.jpeg?1584742113","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/001/852/original/6377f39416193690.jpeg?1584742113","header":"https://instance.codesections.com/system/accounts/headers/000/001/852/original/f582c7deb0ec14ac.jpeg?1584742114","header_static":"https://instance.codesections.com/system/accounts/headers/000/001/852/original/f582c7deb0ec14ac.jpeg?1584742114","followers_count":915,"following_count":1,"statuses_count":26018,"last_status_at":"2020-04-27","emojis":[],"fields":[{"name":"📍","value":"Doha, Qatar","verified_at":null},{"name":"🔗","value":"<a href=\"https://www.aljazeera.com\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">aljazeera.com</span><span class=\"invisible\"></span></a>","verified_at":null}]},"media_attachments":[],"mentions":[],"tags":[{"name":"news","url":"https://instance.codesections.com/tags/news"},{"name":"bot","url":"https://instance.codesections.com/tags/bot"}],"emojis":[],"card":null,"poll":null}}
|
|
@ -0,0 +1 @@
|
|||
{"event":"update","payload":{"id":"104072557586605107","created_at":"2020-04-27T21:00:00.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"https://botsin.space/users/it_was_inevitable/statuses/104072557374505694","url":"https://botsin.space/@it_was_inevitable/104072557374505694","replies_count":0,"reblogs_count":0,"favourites_count":0,"content":"<p>I just wish to help somebody. I'm uneasy.</p><p>— Mörul Zedotmedtob, Cook</p>","reblog":null,"account":{"id":"2160","username":"it_was_inevitable","acct":"it_was_inevitable@botsin.space","display_name":"Sentient Dwarf Fortress","locked":false,"bot":true,"discoverable":true,"group":false,"created_at":"2020-03-24T02:44:05.588Z","note":"<p>It was inevitable.</p><p>Real quotes from Dwarf Fortress dwarves every 5 minutes.</p><p>Too fast? Try <span class=\"h-card\"><a href=\"https://botsin.space/@it_was_inevitable_slow\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>it_was_inevitable_slow</span></a></span>.</p><p><a href=\"https://botsin.space/tags/dwarffortress\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>dwarffortress</span></a></p>","url":"https://botsin.space/@it_was_inevitable","avatar":"https://instance.codesections.com/system/accounts/avatars/000/002/160/original/9d4fb963ee23aaef.gif?1585017843","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/002/160/static/9d4fb963ee23aaef.png?1585017843","header":"https://instance.codesections.com/system/accounts/headers/000/002/160/original/d52a62c64b18cac0.png?1585017845","header_static":"https://instance.codesections.com/system/accounts/headers/000/002/160/original/d52a62c64b18cac0.png?1585017845","followers_count":384,"following_count":4,"statuses_count":171387,"last_status_at":"2020-04-27","emojis":[],"fields":[{"name":"Overseer","value":"<span class=\"h-card\"><a href=\"https://mastodon.lubar.me/@ben\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>ben</span></a></span>","verified_at":null},{"name":"Game","value":"<a href=\"http://bay12games.com/dwarves/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">http://</span><span class=\"\">bay12games.com/dwarves/</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"DFHack","value":"<a href=\"https://dfhack.org/bay12\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">dfhack.org/bay12</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"Code","value":"<a href=\"https://git.io/fNjyH\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">git.io/fNjyH</span><span class=\"invisible\"></span></a>","verified_at":null}]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}}
|
|
@ -0,0 +1 @@
|
|||
{"event":"delete","payload":"104061222412800865"}
|
|
@ -0,0 +1 @@
|
|||
{"event":"update","payload":{"id":"104072561966487967","created_at":"2020-04-27T21:01:05.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":true,"spoiler_text":"","visibility":"public","language":"es","uri":"https://newsbots.eu/users/telesur_es/statuses/104072561638766292","url":"https://newsbots.eu/@telesur_es/104072561638766292","replies_count":0,"reblogs_count":0,"favourites_count":0,"content":"<p>Autoridades internacionales de la <a href=\"https://newsbots.eu/tags/F%C3%B3rmulaUno\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>FórmulaUno</span></a> decidieron suspender el Gran Premio de <a href=\"https://newsbots.eu/tags/Francia\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>Francia</span></a>, que se celebraría el próximo 28 de junio</p><p>Ante esta decisión, la primera parada del Campeonato del Mundo será el Gran Premio de Austria <a href=\"https://www.telesurtv.net/news/suspendido-gran-premio-francia-formula-uno-covid-20200427-0011.html\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"ellipsis\">telesurtv.net/news/suspendido-</span><span class=\"invisible\">gran-premio-francia-formula-uno-covid-20200427-0011.html</span></a> </p>","reblog":null,"account":{"id":"720","username":"telesur_es","acct":"telesur_es@newsbots.eu","display_name":"teleSUR TV (Extraoficial)","locked":false,"bot":true,"discoverable":false,"group":false,"created_at":"2020-03-13T11:08:17.249Z","note":"<p>Con más 40 corresponsales en el mundo, alzamos nuestra voz donde otros medios callan. teleSUR es la señal informativa de América Latina</p>","url":"https://newsbots.eu/@telesur_es","avatar":"https://instance.codesections.com/system/accounts/avatars/000/000/720/original/57b77baa5d424d0c.jpeg?1584097695","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/000/720/original/57b77baa5d424d0c.jpeg?1584097695","header":"https://instance.codesections.com/headers/original/missing.png","header_static":"https://instance.codesections.com/headers/original/missing.png","followers_count":898,"following_count":0,"statuses_count":40648,"last_status_at":"2020-04-27","emojis":[],"fields":[{"name":"Fuente","value":"<a href=\"https://twitter.com/telesurtv\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">twitter.com/telesurtv</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"En inglés","value":"<span class=\"h-card\"><a href=\"https://newsbots.eu/@telesur_en\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>telesur_en</span></a></span>","verified_at":null},{"name":"Operador","value":"<span class=\"h-card\"><a href=\"https://radical.town/@felix\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>felix</span></a></span>","verified_at":null},{"name":"Codigo","value":"<a href=\"https://yerbamate.dev/nutomic/tootbot\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">yerbamate.dev/nutomic/tootbot</span><span class=\"invisible\"></span></a>","verified_at":null}]},"media_attachments":[{"id":"13283","type":"image","url":"https://instance.codesections.com/system/media_attachments/files/000/013/283/original/0d148b189319d632.jpeg?1588021269","preview_url":"https://instance.codesections.com/system/media_attachments/files/000/013/283/small/0d148b189319d632.jpeg?1588021269","remote_url":"https://newsbots.eu/system/media_attachments/files/000/199/561/original/8f1042130e797306.jpeg","text_url":null,"meta":{"original":{"width":600,"height":338,"size":"600x338","aspect":1.7751479289940828},"small":{"width":533,"height":300,"size":"533x300","aspect":1.7766666666666666}},"description":null,"blurhash":"U9Dcs{QU4mTGu2VFWAkpDinl%2%LxZ%Lxuxu"}],"mentions":[],"tags":[{"name":"FórmulaUno","url":"https://instance.codesections.com/tags/F%C3%B3rmulaUno"},{"name":"francia","url":"https://instance.codesections.com/tags/francia"}],"emojis":[],"card":null,"poll":null}}
|
|
@ -0,0 +1 @@
|
|||
{"event":"update","payload":{"id":"104072567176319159","created_at":"2020-04-27T21:00:34.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"https://botsin.space/users/UnitooWebRadio/statuses/104072559646747168","url":"https://botsin.space/@UnitooWebRadio/104072559646747168","replies_count":0,"reblogs_count":0,"favourites_count":0,"content":"<p>🎶 <a href=\"https://botsin.space/tags/NowPlaying\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>NowPlaying</span></a><br>War<br>by GoSoundtrack<br>Listeners: 0<br><a href=\"https://radio.unitoo.it/public/liveradio\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">radio.unitoo.it/public/liverad</span><span class=\"invisible\">io</span></a></p>","reblog":null,"account":{"id":"2161","username":"UnitooWebRadio","acct":"UnitooWebRadio@botsin.space","display_name":"(BoT) Radio Unitoo","locked":false,"bot":true,"discoverable":true,"group":false,"created_at":"2020-03-24T02:48:10.344Z","note":"<p><a href=\"https://www.unitoo.it/progetti/radio/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">unitoo.it/progetti/radio/</span><span class=\"invisible\"></span></a><br>Follow <a href=\"https://botsin.space/tags/UnitooLiveRadio\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>UnitooLiveRadio</span></a><br>Una WebRadio Italiana che trasmette musica RoyaltyFree e che tratta tematiche inerenti al mondo del Software Libero e Open Source, Adatta ad ascoltatori di qualsiasi genere / credo / età.</p>","url":"https://botsin.space/@UnitooWebRadio","avatar":"https://instance.codesections.com/system/accounts/avatars/000/002/161/original/c1949ebb71a0bf25.png?1585156010","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/002/161/original/c1949ebb71a0bf25.png?1585156010","header":"https://instance.codesections.com/headers/original/missing.png","header_static":"https://instance.codesections.com/headers/original/missing.png","followers_count":13,"following_count":3,"statuses_count":9460,"last_status_at":"2020-04-27","emojis":[],"fields":[{"name":"Liberapay","value":"<a href=\"https://liberapay.com/UnitooWebRadio\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">liberapay.com/UnitooWebRadio</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"Web Player","value":"<a href=\"https://radio.unitoo.it/public/liveradio\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">radio.unitoo.it/public/liverad</span><span class=\"invisible\">io</span></a>","verified_at":null},{"name":"MP3 Link","value":"<a href=\"https://radio.unitoo.it/radio/8000/radio.mp3\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">radio.unitoo.it/radio/8000/rad</span><span class=\"invisible\">io.mp3</span></a>","verified_at":null},{"name":"Site","value":"<a href=\"https://www.unitoo.it/progetti/radio/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">unitoo.it/progetti/radio/</span><span class=\"invisible\"></span></a>","verified_at":null}]},"media_attachments":[],"mentions":[],"tags":[{"name":"nowplaying","url":"https://instance.codesections.com/tags/nowplaying"}],"emojis":[],"card":null,"poll":null}}
|
|
@ -0,0 +1,7 @@
|
|||
*3
|
||||
$7
|
||||
message
|
||||
$15
|
||||
timeline:public
|
||||
$3790
|
||||
{"event":"update","payload":{"id":"102775370117886890","created_at":"2019-09-11T18:42:19.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"unlisted","language":"en","uri":"https://mastodon.host/users/federationbot/statuses/102775346916917099","url":"https://mastodon.host/@federationbot/102775346916917099","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"content":"<p>Trending tags:<br><a href=\"https://mastodon.host/tags/neverforget\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>neverforget</span></a><br><a href=\"https://mastodon.host/tags/4styles\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>4styles</span></a><br><a href=\"https://mastodon.host/tags/newpipe\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>newpipe</span></a><br><a href=\"https://mastodon.host/tags/uber\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>uber</span></a><br><a href=\"https://mastodon.host/tags/mercredifiction\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>mercredifiction</span></a></p>","reblog":null,"account":{"id":"78","username":"federationbot","acct":"federationbot@mastodon.host","display_name":"Federation Bot","locked":false,"bot":false,"created_at":"2019-09-10T15:04:25.559Z","note":"<p>Hello, I am mastodon.host official semi bot.</p><p>Follow me if you want to have some updates on the view of the fediverse from here ( I only post unlisted ). </p><p>I also randomly boost one of my followers toot every hour !</p><p>If you don't feel confortable with me following you, tell me: unfollow and I'll do it :)</p><p>If you want me to follow you, just tell me follow ! </p><p>If you want automatic follow for new users on your instance and you are an instance admin, contact me !</p><p>Other commands are private :)</p>","url":"https://mastodon.host/@federationbot","avatar":"https://instance.codesections.com/system/accounts/avatars/000/000/078/original/d9e2be5398629cf8.jpeg?1568127863","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/000/078/original/d9e2be5398629cf8.jpeg?1568127863","header":"https://instance.codesections.com/headers/original/missing.png","header_static":"https://instance.codesections.com/headers/original/missing.png","followers_count":16636,"following_count":179532,"statuses_count":50554,"emojis":[],"fields":[{"name":"More stats","value":"<a href=\"https://mastodon.host/stats.html\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">mastodon.host/stats.html</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"More infos","value":"<a href=\"https://mastodon.host/about/more\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">mastodon.host/about/more</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"Owner/Friend","value":"<span class=\"h-card\"><a href=\"https://mastodon.host/@gled\" class=\"u-url mention\" rel=\"nofollow noopener\" target=\"_blank\">@<span>gled</span></a></span>","verified_at":null}]},"media_attachments":[],"mentions":[],"tags":[{"name":"4styles","url":"https://instance.codesections.com/tags/4styles"},{"name":"neverforget","url":"https://instance.codesections.com/tags/neverforget"},{"name":"mercredifiction","url":"https://instance.codesections.com/tags/mercredifiction"},{"name":"uber","url":"https://instance.codesections.com/tags/uber"},{"name":"newpipe","url":"https://instance.codesections.com/tags/newpipe"}],"emojis":[],"card":null,"poll":null},"queued_at":1568227693541}
|
|
@ -0,0 +1,7 @@
|
|||
*3
|
||||
$7
|
||||
message
|
||||
$15
|
||||
timeline:public
|
||||
$2872
|
||||
{"event":"update","payload":{"id":"104072549781970698","created_at":"2020-04-27T20:58:02.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"https://newsbots.eu/users/aljazeera_english/statuses/104072549673971025","url":"https://newsbots.eu/@aljazeera_english/104072549673971025","replies_count":0,"reblogs_count":0,"favourites_count":0,"content":"<p>**Far-right governor defies Rome, lifts Venice lockdown early**</p><p>\"Veneto's governor, Luca Zaia, of the far-rght League party, says keeping restrictions in place risks 'social conflict'.\"</p><p><a href=\"https://www.aljazeera.com/news/2020/04/governor-defies-rome-lifts-venice-lockdown-early-200427171844336.html\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"ellipsis\">aljazeera.com/news/2020/04/gov</span><span class=\"invisible\">ernor-defies-rome-lifts-venice-lockdown-early-200427171844336.html</span></a></p><p><a href=\"https://newsbots.eu/tags/news\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>news</span></a> <a href=\"https://newsbots.eu/tags/bot\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>bot</span></a></p>","reblog":null,"account":{"id":"1852","username":"aljazeera_english","acct":"aljazeera_english@newsbots.eu","display_name":"Al Jazeera English","locked":false,"bot":true,"discoverable":true,"group":false,"created_at":"2020-03-20T22:08:35.417Z","note":"<p>Breaking news and ongoing coverage from around the world.</p><p>• unofficial •</p>","url":"https://newsbots.eu/@aljazeera_english","avatar":"https://instance.codesections.com/system/accounts/avatars/000/001/852/original/6377f39416193690.jpeg?1584742113","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/001/852/original/6377f39416193690.jpeg?1584742113","header":"https://instance.codesections.com/system/accounts/headers/000/001/852/original/f582c7deb0ec14ac.jpeg?1584742114","header_static":"https://instance.codesections.com/system/accounts/headers/000/001/852/original/f582c7deb0ec14ac.jpeg?1584742114","followers_count":915,"following_count":1,"statuses_count":26018,"last_status_at":"2020-04-27","emojis":[],"fields":[{"name":"📍","value":"Doha, Qatar","verified_at":null},{"name":"🔗","value":"<a href=\"https://www.aljazeera.com\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">aljazeera.com</span><span class=\"invisible\"></span></a>","verified_at":null}]},"media_attachments":[],"mentions":[],"tags":[{"name":"news","url":"https://instance.codesections.com/tags/news"},{"name":"bot","url":"https://instance.codesections.com/tags/bot"}],"emojis":[],"card":null,"poll":null}}
|
|
@ -0,0 +1,7 @@
|
|||
*3
|
||||
$7
|
||||
message
|
||||
$15
|
||||
timeline:public
|
||||
$3018
|
||||
{"event":"update","payload":{"id":"104072557586605107","created_at":"2020-04-27T21:00:00.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"https://botsin.space/users/it_was_inevitable/statuses/104072557374505694","url":"https://botsin.space/@it_was_inevitable/104072557374505694","replies_count":0,"reblogs_count":0,"favourites_count":0,"content":"<p>I just wish to help somebody. I'm uneasy.</p><p>— Mörul Zedotmedtob, Cook</p>","reblog":null,"account":{"id":"2160","username":"it_was_inevitable","acct":"it_was_inevitable@botsin.space","display_name":"Sentient Dwarf Fortress","locked":false,"bot":true,"discoverable":true,"group":false,"created_at":"2020-03-24T02:44:05.588Z","note":"<p>It was inevitable.</p><p>Real quotes from Dwarf Fortress dwarves every 5 minutes.</p><p>Too fast? Try <span class=\"h-card\"><a href=\"https://botsin.space/@it_was_inevitable_slow\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>it_was_inevitable_slow</span></a></span>.</p><p><a href=\"https://botsin.space/tags/dwarffortress\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>dwarffortress</span></a></p>","url":"https://botsin.space/@it_was_inevitable","avatar":"https://instance.codesections.com/system/accounts/avatars/000/002/160/original/9d4fb963ee23aaef.gif?1585017843","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/002/160/static/9d4fb963ee23aaef.png?1585017843","header":"https://instance.codesections.com/system/accounts/headers/000/002/160/original/d52a62c64b18cac0.png?1585017845","header_static":"https://instance.codesections.com/system/accounts/headers/000/002/160/original/d52a62c64b18cac0.png?1585017845","followers_count":384,"following_count":4,"statuses_count":171387,"last_status_at":"2020-04-27","emojis":[],"fields":[{"name":"Overseer","value":"<span class=\"h-card\"><a href=\"https://mastodon.lubar.me/@ben\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>ben</span></a></span>","verified_at":null},{"name":"Game","value":"<a href=\"http://bay12games.com/dwarves/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">http://</span><span class=\"\">bay12games.com/dwarves/</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"DFHack","value":"<a href=\"https://dfhack.org/bay12\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">dfhack.org/bay12</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"Code","value":"<a href=\"https://git.io/fNjyH\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">git.io/fNjyH</span><span class=\"invisible\"></span></a>","verified_at":null}]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}}
|
|
@ -0,0 +1,7 @@
|
|||
*3
|
||||
$7
|
||||
message
|
||||
$15
|
||||
timeline:public
|
||||
$49
|
||||
{"event":"delete","payload":"104061222412800865"}
|
|
@ -0,0 +1,7 @@
|
|||
*3
|
||||
$7
|
||||
message
|
||||
$15
|
||||
timeline:public
|
||||
$4199
|
||||
{"event":"update","payload":{"id":"104072561966487967","created_at":"2020-04-27T21:01:05.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":true,"spoiler_text":"","visibility":"public","language":"es","uri":"https://newsbots.eu/users/telesur_es/statuses/104072561638766292","url":"https://newsbots.eu/@telesur_es/104072561638766292","replies_count":0,"reblogs_count":0,"favourites_count":0,"content":"<p>Autoridades internacionales de la <a href=\"https://newsbots.eu/tags/F%C3%B3rmulaUno\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>FórmulaUno</span></a> decidieron suspender el Gran Premio de <a href=\"https://newsbots.eu/tags/Francia\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>Francia</span></a>, que se celebraría el próximo 28 de junio</p><p>Ante esta decisión, la primera parada del Campeonato del Mundo será el Gran Premio de Austria <a href=\"https://www.telesurtv.net/news/suspendido-gran-premio-francia-formula-uno-covid-20200427-0011.html\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"ellipsis\">telesurtv.net/news/suspendido-</span><span class=\"invisible\">gran-premio-francia-formula-uno-covid-20200427-0011.html</span></a> </p>","reblog":null,"account":{"id":"720","username":"telesur_es","acct":"telesur_es@newsbots.eu","display_name":"teleSUR TV (Extraoficial)","locked":false,"bot":true,"discoverable":false,"group":false,"created_at":"2020-03-13T11:08:17.249Z","note":"<p>Con más 40 corresponsales en el mundo, alzamos nuestra voz donde otros medios callan. teleSUR es la señal informativa de América Latina</p>","url":"https://newsbots.eu/@telesur_es","avatar":"https://instance.codesections.com/system/accounts/avatars/000/000/720/original/57b77baa5d424d0c.jpeg?1584097695","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/000/720/original/57b77baa5d424d0c.jpeg?1584097695","header":"https://instance.codesections.com/headers/original/missing.png","header_static":"https://instance.codesections.com/headers/original/missing.png","followers_count":898,"following_count":0,"statuses_count":40648,"last_status_at":"2020-04-27","emojis":[],"fields":[{"name":"Fuente","value":"<a href=\"https://twitter.com/telesurtv\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">twitter.com/telesurtv</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"En inglés","value":"<span class=\"h-card\"><a href=\"https://newsbots.eu/@telesur_en\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>telesur_en</span></a></span>","verified_at":null},{"name":"Operador","value":"<span class=\"h-card\"><a href=\"https://radical.town/@felix\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>felix</span></a></span>","verified_at":null},{"name":"Codigo","value":"<a href=\"https://yerbamate.dev/nutomic/tootbot\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">yerbamate.dev/nutomic/tootbot</span><span class=\"invisible\"></span></a>","verified_at":null}]},"media_attachments":[{"id":"13283","type":"image","url":"https://instance.codesections.com/system/media_attachments/files/000/013/283/original/0d148b189319d632.jpeg?1588021269","preview_url":"https://instance.codesections.com/system/media_attachments/files/000/013/283/small/0d148b189319d632.jpeg?1588021269","remote_url":"https://newsbots.eu/system/media_attachments/files/000/199/561/original/8f1042130e797306.jpeg","text_url":null,"meta":{"original":{"width":600,"height":338,"size":"600x338","aspect":1.7751479289940828},"small":{"width":533,"height":300,"size":"533x300","aspect":1.7766666666666666}},"description":null,"blurhash":"U9Dcs{QU4mTGu2VFWAkpDinl%2%LxZ%Lxuxu"}],"mentions":[],"tags":[{"name":"FórmulaUno","url":"https://instance.codesections.com/tags/F%C3%B3rmulaUno"},{"name":"francia","url":"https://instance.codesections.com/tags/francia"}],"emojis":[],"card":null,"poll":null}}
|
|
@ -0,0 +1,7 @@
|
|||
*3
|
||||
$7
|
||||
message
|
||||
$15
|
||||
timeline:public
|
||||
$3669
|
||||
{"event":"update","payload":{"id":"104072567176319159","created_at":"2020-04-27T21:00:34.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"https://botsin.space/users/UnitooWebRadio/statuses/104072559646747168","url":"https://botsin.space/@UnitooWebRadio/104072559646747168","replies_count":0,"reblogs_count":0,"favourites_count":0,"content":"<p>🎶 <a href=\"https://botsin.space/tags/NowPlaying\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>NowPlaying</span></a><br>War<br>by GoSoundtrack<br>Listeners: 0<br><a href=\"https://radio.unitoo.it/public/liveradio\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">radio.unitoo.it/public/liverad</span><span class=\"invisible\">io</span></a></p>","reblog":null,"account":{"id":"2161","username":"UnitooWebRadio","acct":"UnitooWebRadio@botsin.space","display_name":"(BoT) Radio Unitoo","locked":false,"bot":true,"discoverable":true,"group":false,"created_at":"2020-03-24T02:48:10.344Z","note":"<p><a href=\"https://www.unitoo.it/progetti/radio/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">unitoo.it/progetti/radio/</span><span class=\"invisible\"></span></a><br>Follow <a href=\"https://botsin.space/tags/UnitooLiveRadio\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>UnitooLiveRadio</span></a><br>Una WebRadio Italiana che trasmette musica RoyaltyFree e che tratta tematiche inerenti al mondo del Software Libero e Open Source, Adatta ad ascoltatori di qualsiasi genere / credo / età.</p>","url":"https://botsin.space/@UnitooWebRadio","avatar":"https://instance.codesections.com/system/accounts/avatars/000/002/161/original/c1949ebb71a0bf25.png?1585156010","avatar_static":"https://instance.codesections.com/system/accounts/avatars/000/002/161/original/c1949ebb71a0bf25.png?1585156010","header":"https://instance.codesections.com/headers/original/missing.png","header_static":"https://instance.codesections.com/headers/original/missing.png","followers_count":13,"following_count":3,"statuses_count":9460,"last_status_at":"2020-04-27","emojis":[],"fields":[{"name":"Liberapay","value":"<a href=\"https://liberapay.com/UnitooWebRadio\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">liberapay.com/UnitooWebRadio</span><span class=\"invisible\"></span></a>","verified_at":null},{"name":"Web Player","value":"<a href=\"https://radio.unitoo.it/public/liveradio\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">radio.unitoo.it/public/liverad</span><span class=\"invisible\">io</span></a>","verified_at":null},{"name":"MP3 Link","value":"<a href=\"https://radio.unitoo.it/radio/8000/radio.mp3\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">radio.unitoo.it/radio/8000/rad</span><span class=\"invisible\">io.mp3</span></a>","verified_at":null},{"name":"Site","value":"<a href=\"https://www.unitoo.it/progetti/radio/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">unitoo.it/progetti/radio/</span><span class=\"invisible\"></span></a>","verified_at":null}]},"media_attachments":[],"mentions":[],"tags":[{"name":"nowplaying","url":"https://instance.codesections.com/tags/nowplaying"}],"emojis":[],"card":null,"poll":null}}
|
Loading…
Reference in New Issue