Twitterのタイムラインを自分のWebサイトに埋め込んでいます。しかし、私のリツイートはそこに表示されているので、表示したくありません。
それらをオフにする簡単な方法はありますか?何も見つからないようです
私の検索クエリはfrom:myaccount
。私も試しましたfrom:myaccount -RT
、運がない。検索ウィジェットでリツイートを非表示にすることはできますが、1週間以上前のツイートは表示されませんこれは私の場合は受け入れられません。
CSSの魔法でツイートを非表示にすることもできます。手動で挿入することをなんとか見つけました
div.timeline-Tweet--isRetweet {
display: none !important;
}
埋め込まれたHTMLのCSSでうまくいきますが、プログラムでそれを行うことはできません。
私のコメントからの適応
ハッキースタイルのインジェクションを使用するには、次のコードをスクリプトタグに挿入するだけです。これにより、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からの通知なしに変更される可能性があるため、いつか目を覚ましてタイムラインに戻ってリツイートするリスクがあります;)
更新
わかりました。これはol
...の更新をリッスンするv2ですが、それを書いた後、フランケンシュタイン博士の気持ちを理解し始めます;)
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 });
});
});
Medet Tleukabilulyがすでに述べたように、「from:myaccount-RT」は機能するはずだと思います。ただし、追加したいことがいくつかあります。
CSSを使用してこれを行う方法は次のとおりです。
Twitterタイムラインウィジェットは、CSSを含むスタイルタグを挿入するIFrameを作成します。これは、ウィジェットがロードされた後に発生する必要があります。
もちろん、これは脆弱な方法であり、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);
});
});
この手法を使用したフィードを並べて比較したフィドルは次のとおりです。 https://jsfiddle.net/cLc84Lrs/2/
リツイートを削除する方法については上記のいくつかの回答がありますが、履歴データの問題は、Twitterが履歴データで1週間以上データを提供しないことです。 (関連するstackoverflowの質問: Stackoverflow:Twitterから履歴データを取得する )
これに対する答えは、履歴データを提供する有料サービスです(いくつかのまれな無料オプション付き)。これらのサービスの例は、 Gnip (過去のTwitter apiを使用)または Followthehashtag (2006年以降最大500件のツイートを提供する1日1回の無料検索を実行できますが、 APIサポート。)