gpt4 book ai didi

javascript - Twitter API - 过滤掉@、#等链接

转载 作者:行者123 更新时间:2023-11-28 18:43:46 25 4
gpt4 key购买 nike

我正在使用 Twitter API 获取我的应用程序的前 5 条推文。我需要突出显示或以不同方式链接部分推文。例如,#是橙色的,@的将是红色的并且可点击,等等...

通过他们的 API,他们提供 user_timeline端点:

https://dev.twitter.com/rest/reference/get/statuses/user_timeline

但是tweets返回对象的文本并嵌入其中的特殊字符。我没有看到删除这些的选项 @, # and href从对象:

推文对象:

{ 
...
text: "This is some text @tagName that I'd like to #parse here https://t.co/m9Addr4IlS",
...
}

虽然我可以编写自己的字符串解析器来查找这些内容,但 Twitter API 是否提供了一些东西来处理这个问题?

<小时/>

编辑:<tweets>是一个 Angular 指令 ng-repeats关于我的推文 ModulesServicereplace似乎没有附加 DOM 标签

            scope.getTweets = function() {
ModulesService.getTweets().success(function(res) {
if (res && Array.isArray(res)) {
scope.tweets = parseTweets(res);
}
});
};

scope.getTweets();

var parseTweets = function (tweets) {

tweets.forEach(function (tweet) {

tweet.text.replace(/(@[^ ]+)/g, '<a class="user">$1</a>').
replace(/(#[^ ]+)/g, '<span class="hash">$1</span>').
replace(/(https?:\/\/[^ ]+)/g, '<a href="$1">$1</a>');

console.log('tweet!', tweet.text); //does not contain altered HTML
});

return tweets;
};

HTML:

<div ng-repeat="tweet in tweets" class="post-body clearfix">
{{tweet.text}}
</div>

最佳答案

推荐的解决方案

图书馆twitter-text为您完成工作。

按照他们的例子:

自动链接

var twitter = require('twitter-text')
twitter.autoLink(twitter.htmlEscape('#hello < @world >'))

提取实体

var usernames = twttr.txt.extractMentions("Mentioning @twitter and @jack")
// usernames == ["twitter", "jack"]

使用该解决方案将使您免于重新发明轮子,并为您提供稳定的工作代码:)

替代方案

在您从 user_timeline API 端点收到的 tweet 对象内,entities 属性存储 urlhashtags 列表推文中包含提及。它们包含文本内容以及每个实体的位置(开始/结束字符索引)。

主题标签实体示例:

"entities": {
"hashtags": [
"text": "pleaseRT"
"indices": [
6,
13
]
]

比照Entities documentation了解更多信息。

关于javascript - Twitter API - 过滤掉@、#等链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35703477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com