我正在将Twitter时间线嵌入我的网站。然而我的转推正在那里展示,我不希望他们这样做。
有没有简单的方法可以关闭它们?我好像找不到任何
我的搜索查询是MQSERVER
。我也试过from:myaccount
,没有运气。我可以使用搜索小部件隐藏转推,但未显示超过一周的推文,这在我的情况下是不可接受的。
通过一些CSS魔术隐藏推文也行。我设法找出手动插入
from:myaccount -RT
嵌入式HTML的CSS中的可以解决问题,但我无法以编程方式进行操作。
答案 0 :(得分:7)
这很容易。我们将使用例如caitp88
帐户演示 如果你想要,你可以跟随她。
但我们不想转推,对吧?
然后我们从这个搜索创建一个嵌入 窗口小部件配置窗口打开,您只需单击创建窗口小部件
不要忘记将from:caitp88 -RT
更改为您自己的Twitter句柄
注意,这是正式的,法律解决方案
答案 1 :(得分:4)
我认为"来自:myaccount -RT"应该工作,正如Medet Tleukabiluly已经提到过的那样。我想添加一些东西:
答案 2 :(得分:4)
从我的评论中改编
要使用hacky样式注入,只需将以下代码放在脚本标记中即可。这会将https://platform.twitter.com/widgets.js
脚本标记添加到您的页面,因此您不再需要将其作为单独的脚本标记。
// widgets script loading taken from Twitter
window.twttr = (function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0],
t = window.twttr || {};
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
t._e = [];
t.ready = function (f) {
t._e.push(f);
};
return t;
}(document, "script", "twitter-wjs"));
twttr.ready(function (twttr) {
twttr.events.bind("rendered", function (event) {
var widgetFrame = event.target;
var retweets = widgetFrame.contentDocument.querySelectorAll('div.timeline-Tweet--isRetweet');
retweets.forEach(function (node) {
if (node.parentNode) { // (in)sanity check
node.parentNode.style = 'display: none;' // hide entire parent li tag
}
})
});
});
备注
我们将div.timeline-Tweet--isRetweet
标记中的每个li
置于父节点,这会为您提供边框,因此您会在隐藏转推后留下一些奇怪的双边框。我认为没有办法通过CSS选择器到达父级,因此我们必须使用代码执行此操作。
另一个评论
黑客强烈依赖于时间线内容的结构方式,如果没有来自Twitter的通知,这些内容可能会发生变化,所以你冒这样的风险,有一天你会在你醒来的时候醒来并转发回你的时间线;)
<强>更新强>
好的,这是v2,它在ol
上听取更新...但在写完之后我开始理解弗兰肯斯坦博士的感受;)
window.twttr = (function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0],
t = window.twttr || {};
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
t._e = [];
t.ready = function (f) {
t._e.push(f);
};
return t;
}(document, "script", "twitter-wjs"));
twttr.ready(function (twttr) {
twttr.events.bind("rendered", function (event) {
var frameDoc = event.target.contentDocument;
// initially hide retweets
var hideRetweets = function () {
var retweets = frameDoc.querySelectorAll('div.timeline-Tweet--isRetweet');
retweets.forEach(function (node) {
if (node.parentNode && node.parentNode.style !== 'display: none;') { // (in)sanity check
node.parentNode.style = 'display: none;' // hide entire parent li tag
}
});
};
hideRetweets();
// Twitter widget emitts no events on updates so we hook up ourselves to ol element to listen on it for additions of children
var watcher = new MutationObserver(function (mutations) {
// check whether new tweets arrived
var hasNewTweets = mutations.some(function (mutation) {
return mutation.addedNodes.length > 0;
});
if (hasNewTweets) {
hideRetweets(); // rescan all tweets as it is easier
}
});
watcher.observe(frameDoc.querySelector('ol.timeline-TweetList'), { childList: true });
});
});
答案 3 :(得分:1)
以下是使用CSS进行此操作的方法。
Twitter时间轴小部件创建了一个IFrame,我在其中插入包含CSS的样式标记。这必须在加载小部件后发生。
当然,这是一种脆弱的方式,如果Twitter改变了显示时间表的方式,这可能无法发挥作用。
// initialisation copied from Twitter API documentation
window.twttr = (function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0],
t = window.twttr || {};
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
t._e = [];
t.ready = function(f) {
t._e.push(f);
};
return t;
}(document, "script", "twitter-wjs"));
twttr.ready(function(twttr) {
twttr.events.bind("rendered", function(event) {
var widgetIframe = event.target;
var style = widgetIframe.contentDocument.createElement("style");
style.innerHTML = "div.timeline-Tweet--isRetweet { display: none}";
widgetIframe.contentDocument.head.appendChild(style);
});
});
以下是使用此技术对Feed进行并排比较的小提琴:https://jsfiddle.net/cLc84Lrs/2/
答案 4 :(得分:1)
上面有一些关于如何删除转推的答案,但历史数据的问题是,Twitter不会在历史数据中提供超过一周左右的数据。 (相关的stackoverflow问题:Stackoverflow: Getting historical data from twitter)
答案是提供历史数据的付费服务(有一些罕见的免费选项)。这些服务的示例是Gnip(使用历史Twitter api)或Followthehashtag(在那里,您可以每天免费搜索一次,自2006年以来最多可提供500条推文但不确定api支持。)