#twitter #extract #character #tweet #text-parser #hashtag #url

egg-mode-text

Twitter 文本解析:字符计数,提取标签/提及

4 个版本 (稳定版)

使用旧的 Rust 2015

1.15.1 2023年1月31日
1.15.0 2022年7月2日
1.14.7 2017年11月28日
0.1.0 2017年11月27日

#764 in 文本处理


用于 sharexin

MPL-2.0 许可证

86KB
1K SLoC

egg-mode-text

类似于 twitter-text,但使用 rust 实现

此库试图将 twitter-text 移植到 Rust。它最初是 egg-mode 的一部分,但它与 egg-mode 在类型上完全不同,因此我将其拉出来成为一个独立的库。(此外,它充满了宏,所以也是降低 egg-mode 编译时间的尝试。 >_>

此库可用于计算推文的字符数,并从任意文本中提取 URL 和“实体”,例如 @-提及和标签。

例如,查看给定推文占用多少字符

use egg_mode_text::character_count;

let count = character_count("This is a test.", 23, 23);
assert_eq!(count, 15);

// URLs get replaced by a t.co URL of the given length
//
// This length is available from the Twitter API in `help/configuration`
let count = character_count("test.com", 23, 23);
assert_eq!(count, 23);

// Multiple URLs get shortened individually
let count =
    character_count("Test https://test.com test https://test.com test.com test", 23, 23);
assert_eq!(count, 86);

提取 Twitter 使用的各种“实体”的子串

use egg_mode_text::{EntityKind, entities};

let text = "sample #text with a link to twitter.com";
let mut results = entities(text).into_iter();

let entity = results.next().unwrap();
assert_eq!(entity.kind, EntityKind::Url);
assert_eq!(entity.substr(text), "twitter.com");

let entity = results.next().unwrap();
assert_eq!(entity.kind, EntityKind::Hashtag);
assert_eq!(entity.substr(text), "#text");

assert_eq!(results.next(), None);

有关更多信息,请参阅 文档

要在自己的项目中使用此 crate,请将以下内容添加到您的 Cargo.toml 中

[dependencies]
egg-mode-text = "1.15.1"

...并在 crate 根目录中添加以下内容

extern crate egg_mode_text;

许可证

egg-mode-text 在 Mozilla 公共许可证下授权,版本 2.0。有关详细信息,请参阅 LICENSE 文件。

依赖项

~2.7–4MB
~93K SLoC