displayMillisecOnTwitter

Twitter上の日時表示の場所をSnowFrakeを元にミリ秒単位の表示に修正します

Versión del día 6/7/2018. Echa un vistazo a la versión más reciente.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name        displayMillisecOnTwitter
// @namespace   https://twitter.com/kymn_
// @version     0.1.0
// @description Twitter上の日時表示の場所をSnowFrakeを元にミリ秒単位の表示に修正します
// @author      keymoon
// @license     MIT
// @supportURL  https://twitter.com/kymn_
// @match       https://twitter.com/*
// ==/UserScript==

(function(){
    //タイムライン更新の監視
    (() => {
        const target = document.getElementById('stream-items-id');
        const observer = new MutationObserver(records => {OverrideToolTip()})
        const options = {childList: true};
        var flag = false;
        observer.observe(target, options);
        //各ツイートのツールチップの書き換え
        function OverrideToolTip(){
            if(flag) return;
            $('.tweet-timestamp').each(function(index, element){
                var id =element.getAttribute('data-conversation-id');
                $(`a[data-conversation-id=${id}]`).attr('title',formatDate(getDateFromSnowFrake(id)));
            })
            flag = false;
        }
    })();

    //ツイート詳細ウィンドウの開閉の監視
    (() => {
        const target = document.getElementsByClassName('PermalinkOverlay-modal')[0];
        const observer = new MutationObserver(records => {OverrideMetaData()})
        const options = {attributes: true,subtree:true};
        observer.observe(target, options);
        //ツイートのメタデータ部の書き換え
        function OverrideMetaData(){
            var tweetContainer = target.getElementsByClassName('permalink-tweet')[0];
            if(tweetContainer) target.getElementsByClassName('metadata')[0].textContent = formatDate(getDateFromSnowFrake(tweetContainer.getAttribute("data-tweet-id")));
        }
    })();

    //アカウント画面のアカウント登録日時
    (() => {
        var joinDate = document.getElementsByClassName("ProfileHeaderCard-joinDateText")[0];
        if(joinDate) joinDate.setAttribute("title",formatDate(getDateFromSnowFrake(document.getElementsByClassName("Avatar")[0].getAttribute("data-user-id"))))
    })();


    function getDateFromSnowFrake(ID){
        var unixTime = Math.floor(parseInt(ID) / 4194304) + 1288834974657;
        return new Date(unixTime);
    }
    function formatDate(date){
        return `${date.getHours()}:${date.getMinutes().toString().padStart(2,'0')}:${date.getSeconds().toString().padStart(2,'0')}.${date.getMilliseconds().toString().padStart(3,'0')} - ${1900 + date.getYear()}年${date.getMonth()}月${date.getDate()}日`
    }
})();