您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
看起来是这样的。70/12/31(Th) 23:59:59.
- // ==UserScript==
- // @name Show date normally on Twitter
- // @name:aa Tiwiteril qaadik tan ayro kee wakti yaybulle
- // @name:ab Твиттер иаанарԥшуеит иаабац арыцхәи аамҭеи
- // @name:af Twitter vertoon normale datum en tyd
- // @name:ak Twitter kyerɛ da ne bere a ɛfata .
- // @name:am ትዊተር የተለመደው ቀን እና ሰዓት ያሳያል
- // @name:ar يعرض Twitter التاريخ والوقت العاديين
- // @name:as টুইটাৰে সাধাৰণ তাৰিখ আৰু সময় প্ৰদৰ্শন কৰে
- // @name:av Твиттералда бихьулеб букӀуна гӀадатияб тарих ва заман
- // @name:ay Twitter ukax normal uru ukat pacha uñacht’ayi .
- // @name:az Twitter normal tarix və vaxt göstərir
- // @name:ba Twitter ғәҙәти дата һәм ваҡыт күрһәтә
- // @name:be Twitter адлюстроўвае звычайную дату і час
- // @name:bg Twitter показва нормална дата и час
- // @name:bh ट्विटर सामान्य तारीख आ समय के देखावेला
- // @name:bm Twitter bɛ don ni waati nɔrɔlen jira .
- // @name:bn টুইটার স্বাভাবিক তারিখ এবং সময় প্রদর্শন করে
- // @name:bo ཊུ་ཊར་གྱིས་ཚེས་གྲངས་དང་དུས་ཚོད་སྟོན་གྱི་ཡོད།
- // @name:br Diskouez a ra Twitter deiziad ha eur normal
- // @name:bs Twitter prikazuje normalan datum i vrijeme
- // @name:ca Twitter mostra la data i l’hora normals
- // @name:ce Твиттерехь гойту нийса хан а, хан а .
- // @name:ceb Ang Twitter nagpakita sa normal nga petsa ug oras
- // @name:ch I Twitter ha dispåtta i fechan-ña yan .
- // @name:ckb تویتەر بەروار و کاتی ئاسایی پیشان دەدات
- // @name:co Twitter mostra a data è u tempu nurmale
- // @name:cs Twitter zobrazuje normální datum a čas
- // @name:cv Твиттер йĕркеллĕ кунпа вăхăта кăтартать
- // @name:cy Mae Twitter yn arddangos dyddiad ac amser arferol
- // @name:da Twitter viser normal dato og tid
- // @name:de Twitter zeigt das normale Datum und die normale Uhrzeit an
- // @name:dv ޓްވިޓަރ އިން އާދައިގެ ތާރީޚާއި ގަޑި ދައްކާ
- // @name:dz ཊུ་ཊར་གྱིས་ སྤྱིར་བཏང་ཚེས་གྲངས་དང་དུས་ཚོད་བཀྲམ་སྟོན་འབདཝ་ཨིན།
- // @name:ee Twitter ɖea ŋkeke kple gaƒoƒo si sɔ fiana .
- // @name:el Το Twitter εμφανίζει κανονική ημερομηνία και ώρα
- // @name:en Twitter displays normal date and time
- // @name:en-GB Twitter displays normal date and time
- // @name:eo Twitter montras normalan daton kaj horon
- // @name:es Twitter muestra fecha y hora normales
- // @name:et Twitter kuvab tavalise kuupäeva ja kellaaja
- // @name:eu Twitterrek data eta ordu normala erakusten du
- // @name:fa توییتر تاریخ و زمان عادی را نشان می دهد
- // @name:ff Twitter ina hollira ñalngu e waktu no woorunoo
- // @name:fi Twitter näyttää normaalin päivämäärän ja ajan
- // @name:fil Ipinapakita ng Twitter ang normal na petsa at oras
- // @name:fj Tuvanaka na tiki ni siga kei na gauna .
- // @name:fo Twitter vísir vanliga dagfesting og tíð
- // @name:fr Twitter affiche la date et l’heure normales
- // @name:fr-CA Twitter affiche la date et l’heure normales
- // @name:fy Twitter Toant normale datum en tiid
- // @name:ga Taispeánann Twitter gnáth -dháta agus am
- // @name:gd Bidh Twitter a ’taisbeanadh ceann-latha agus àm àbhaisteach
- // @name:gl Twitter mostra a data e hora normais
- // @name:gn Twitter ohechauka ára ha aravo normal .
- // @name:gsw-berne Twitter displays normal date and time
- // @name:gu ટ્વિટર સામાન્ય તારીખ અને સમય દર્શાવે છે
- // @name:gv Twitter t’eh soilshaghey date as traa arryltagh
- // @name:ha Twitter nuni na al’ada da lokaci
- // @name:he טוויטר מציג תאריך ושעה רגילים
- // @name:hi ट्विटर सामान्य तारीख और समय प्रदर्शित करता है
- // @name:hmn TWITTER qhia txog hnub qub thiab sijhawm
- // @name:hr Twitter prikazuje normalan datum i vrijeme
- // @name:ht Twitter montre dat ak lè nòmal
- // @name:hu A Twitter megjeleníti a normál dátumot és időt
- // @name:hy Twitter- ը ցուցադրում է նորմալ ամսաթիվը եւ ժամանակը
- // @name:id Twitter menampilkan tanggal dan waktu normal
- // @name:ig Twitter na-egosiputa ụbọchị na oge
- // @name:is Twitter sýnir venjulegan dag og tíma
- // @name:it Twitter visualizza la data e l’ora normali
- // @name:iu Twitter ᑕᑯᒃᓴᐅᑎᑦᑎᕗᖅ ᐅᓪᓗᕆᔭᐅᔪᒥᒃ ᐊᒻᒪ ᐱᕕᒃᓴᒥᒃ
- // @name:ja Twitterには通常の日付と時刻が表示されます
- // @name:jv Twitter nampilake tanggal lan wektu normal
- // @name:ka Twitter აჩვენებს ნორმალურ თარიღს და დროს
- // @name:kg Twitter ke monisa kilumbu mpi ntangu ya mbote
- // @name:kk Twitter қалыпты күн мен уақытты көрсетеді
- // @name:kl Twitterip ulloq piffissarlu nalinginnaasoq takutinneqartarpoq
- // @name:km Twitter បង្ហាញកាលបរិច្ឆេទនិងពេលវេលាធម្មតា
- // @name:kn ಟ್ವಿಟರ್ ಸಾಮಾನ್ಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ
- // @name:ko 트위터에는 일반 날짜와 시간이 표시됩니다
- // @name:kr Twitter lan loktu-a yim-a kalkal fəlejin
- // @name:ku Twitter tarîx û wextê normal nîşan dide
- // @name:kv Твиттерын петкӧдлӧма нормальнӧй кад да кад .
- // @name:ky Twitter кадимки күндү жана убакытты көрсөтөт
- // @name:la Twitter Displays Normal Date et Tempus
- // @name:lb Twitter weist normal Datum an Zäit
- // @name:lg Twitter eraga olunaku n’essaawa ebya bulijjo .
- // @name:ln Twitter elakisaka mokolo mpe ngonga ya momesano .
- // @name:lo Twitter ສະແດງວັນທີແລະເວລາທໍາມະດາ
- // @name:lt „Twitter“ rodo įprastą datą ir laiką
- // @name:lv Twitter parāda normālu datumu un laiku
- // @name:mg Ny Twitter dia mampiseho daty sy fotoana mahazatra
- // @name:mh Twitter ej kwaļo̧k raan im iien .
- // @name:mi Ka whakaatu a Twitter i te waa me te waa
- // @name:mk Твитер прикажува нормален датум и време
- // @name:ml ട്വിറ്റർ സാധാരണ തീയതിയും സമയവും പ്രദർശിപ്പിക്കുന്നു
- // @name:mn Твиттер нь хэвийн огноо, цагийг харуулдаг
- // @name:mo Twitter afișează data și ora normale
- // @name:mr ट्विटर सामान्य तारीख आणि वेळ प्रदर्शित करते
- // @name:ms Twitter memaparkan tarikh dan masa biasa
- // @name:mt Twitter juri data u ħin normali
- // @name:my Twitter သည်ပုံမှန်နေ့စွဲနှင့်အချိန်ကိုပြသသည်
- // @name:nb Twitter viser normal dato og tid
- // @name:ne ट्विटरले सामान्य मिति र समय प्रदर्शन गर्दछ
- // @name:nl Twitter toont normale datum en tijd
- // @name:nr Fala i-orasssssss.
- // @name:ny Twitter ikuwonetsa tsiku labwinobwino komanso nthawi
- // @name:oc Twitter aficha la data e l’ora normalas
- // @name:om Twitter guyyaa fi sa’aatii idilee agarsiisa .
- // @name:or ଟ୍ୱିଟର ସାଧାରଣ ତାରିଖ ଏବଂ ସମୟ ପ୍ରଦର୍ଶନ କରେ |
- // @name:os Твиттер æвдисы нормалон датæ æмæ рæстæг
- // @name:pa ਟਵਿੱਟਰ ਆਮ ਮਿਤੀ ਅਤੇ ਸਮਾਂ ਦਰਸਾਉਂਦਾ ਹੈ
- // @name:pl Twitter wyświetla normalną datę i godzinę
- // @name:ps ټویټر نورمال نیټه او وخت ښیې
- // @name:pt Twitter exibe data e hora normais
- // @name:pt-BR Twitter exibe data e hora normais
- // @name:pt-PT Twitter exibe data e hora normais
- // @name:qu Twitter normal p’unchawta, pachata rikuchin .
- // @name:rn Twitter yerekana itariki n’isaha isanzwe
- // @name:ro Twitter afișează data și ora normale
- // @name:ru Твиттер отображает обычную дату и время
- // @name:rw Twitter yerekana itariki nigihe gisanzwe
- // @name:sa ट्विटर सामान्य तिथि एवं समय प्रदर्शित करता है।
- // @name:sd Twitter عام تاريخ ۽ وقت ڏيکاري ٿو
- // @name:se Twitter čájeha dábálaš beaivvi ja áiggi
- // @name:sg Twitter afa lango na l’heure .
- // @name:sh Твиттер приказује нормалан датум и време
- // @name:si ට්විටර් සාමාන්ය දිනය සහ වේලාව පෙන්වයි
- // @name:sk Twitter zobrazuje normálny dátum a čas
- // @name:sl Twitter prikazuje normalen datum in čas
- // @name:sm Twitter faʻaalia le taimi masani aso ma le taimi
- // @name:sn Twitter inoratidza yakajairika zuva uye nguva
- // @name:so Twitter wuxuu soo bandhigayaa taariikhda iyo waqtiga caadiga ah
- // @name:sq Twitter shfaq datën dhe kohën normale
- // @name:sr Твиттер приказује нормалан датум и време
- // @name:ss I-Twitter ikhombisa lusuku nesikhatsi lesivamile
- // @name:st Twitter e bontša letsatsi le tloaelehileng le nako
- // @name:su Twitter ningalikeun tanggal sareng waktos anu normal
- // @name:sv Twitter visar normalt datum och tid
- // @name:sw Twitter inaonyesha tarehe ya kawaida na wakati
- // @name:ta ட்விட்டர் சாதாரண தேதி மற்றும் நேரத்தைக் காட்டுகிறது
- // @name:te ట్విట్టర్ సాధారణ తేదీ మరియు సమయాన్ని ప్రదర్శిస్తుంది
- // @name:tg Twitter санаи муқаррарӣ ва вақтро нишон медиҳад
- // @name:th Twitter แสดงวันที่และเวลาปกติ
- // @name:ti ትዊተር ንቡር ዕለትን ሰዓትን
- // @name:tk Twitter adaty senesini we wagty görkezýär
- // @name:tl Ipinapakita ng Twitter ang normal na petsa at oras
- // @name:tn Twitter e bontsha letlha le nako e e tlwaelegileng
- // @name:to ’Oku fakahaa’i ’e he Twitter ’a e ’aho mo e taimi angamaheni .
- // @name:tr Twitter normal tarih ve saati görüntüler
- // @name:ts Twitter yi kombisa siku na nkarhi lowu tolovelekeke .
- // @name:tt Твиттер гадәти датаны һәм вакытны күрсәтә
- // @name:tw Twitter kyerɛ da ne bere a ɛfata .
- // @name:ty E faaite te Twitter i te mahana e te taime matauhia
- // @name:ug Twitter نورمال ۋاقىت ۋە ۋاقىتنى كۆرسىتىدۇ
- // @name:uk Twitter відображає звичайну дату та час
- // @name:ur ٹویٹر عام تاریخ اور وقت دکھاتا ہے
- // @name:uz Twitter normal sana va vaqtni namoyish etadi
- // @name:ve Twitter i sumbedza ḓuvha na tshifhinga tsho ḓoweleaho
- // @name:vi Twitter hiển thị ngày và giờ bình thường
- // @name:wo Twitter dafay wane bis ak waxtu
- // @name:xh I-Twitter ibonisa umhla oqhelekileyo kunye nexesha
- // @name:yi טוויטטער דיספּלייז נאָרמאַל דאַטע און צייט
- // @name:yo Twitter ṣafihan ọjọ deede ati akoko
- // @name:zh Twitter 显示正常的日期和时间
- // @name:zh-CN Twitter 显示正常的日期和时间
- // @name:zh-HK Twitter 顯示正常的日期和時間
- // @name:zh-MO Twitter 顯示正常的日期和時間
- // @name:zh-MY Twitter 显示正常的日期和时间
- // @name:zh-SG Twitter 显示正常的日期和时间
- // @name:zh-TW Twitter 顯示正常的日期和時間
- // @name:zu I-Twitter ibonisa usuku olujwayelekile nesikhathi
- // @name:es-419 Twitter muestra fecha y hora normales
- // @description Like this, 70/12/31(Th) 23:59:59.
- // @description:aa Tah celta. 70/12/31(Th) 23:59:59.
- // @description:ab Абри еиԥш ауп ишыҟоу. 70/12/31(Th) 23:59:59.
- // @description:af Dit lyk so. 70/12/31 (Th) 23:59:59.
- // @description:ak Ɛte sɛ eyi. 70/12/31(th) 23:59:59.
- // @description:am ይህ ይመስላል. 70/12/31 (te) 23:59:59.
- // @description:ar يبدو هكذا. 70/12/31 (TH) 23:59:59.
- // @description:as দেখাত এনেকুৱাই। ৭০/১২/৩১(তম) ২৩:৫৯:৫৯।
- // @description:av Гьеб гьадинаб буго. 70/12/31(Тх) 23:59:59.
- // @description:ay Ukhamaw ukham uñtasi. 70/12/31(th) 23:59:59.
- // @description:az Bu kimi görünür. 70/12/31 (TH) 23:59:59.
- // @description:ba Ул былай күренә. 70/12/31(Th) 23:59:59.
- // @description:be Падобна так. 70/12/31 (TH) 23:59:59.
- // @description:bg Изглежда така. 70/12/31 (TH) 23:59:59.
- // @description:bh अईसन लागता। 70/12/31(वें) 23:59:59 के बा।
- // @description:bm A bɛ iko nin. 70/12/31(nan) 23:59:59.
- // @description:bn দেখে মনে হচ্ছে এটি। 70/12/31 (TH) 23:59:59।
- // @description:bo འདི་འདྲ་འདུག ༧༠/༡༢/༣༡(Th) ༢༣:༥༩:༥༩།
- // @description:br Seblantout a ra evel-se. 70/12/31(Th) 23:59:59.
- // @description:bs Izgleda ovako. 70/12/31 (th) 23:59:59.
- // @description:ca Sembla així. 70/12/31 (Th) 23:59:59.
- // @description:ce Иштта хетало. 70/12/31(Th) 23:59:59.
- // @description:ceb Ingon kini. 70/12/31 (Th) 23:59:59.
- // @description:ch Parehu este yan este. 70/12/1211 (Th) 23:59:59.
- // @description:ckb بەم شێوەیە دەردەکەوێت. 70/12/31(th) 23:59:59.
- // @description:co Sembra cusì. 70/12/31 (u) 23:59:59.
- // @description:cs Vypadá to takto. 70/12/31 (th) 23:59:59.
- // @description:cv Кун пек курăнать. 70/12/31 (Тх) 23:59:59.
- // @description:cy Mae’n edrych fel hyn. 70/12/31 (TH) 23:59:59.
- // @description:da Det ser ud som dette. 70/12/31 (th) 23:59:59.
- // @description:de Es sieht so aus. 70/12/31 (Th) 23:59:59.
- // @description:dv މިހެން ހީވަނީ. 70/12/31(th) 23:59:59.
- // @description:dz འདི་བཟུམ་མཐོངམ་ཨིན། ༧༠/༡༢/༣༡(ཐ) ༢༣:༥༩:༥༩.
- // @description:ee Edze abe esia ene. 70/12/31 (th) 23:59:59.
- // @description:el Μοιάζει με αυτό. 70/12/31 (Th) 23:59:59.
- // @description:en It looks like this. 70/12/31(Th) 23:59:59.
- // @description:en-GB It looks like this. 70/12/31(Th) 23:59:59.
- // @description:eo Ĝi aspektas tiel. 70/12/31 (TH) 23:59:59.
- // @description:es Se parece a esto. 70/12/31 (Th) 23:59:59.
- // @description:es-419 Se parece a esto. 70/12/31 (Th) 23:59:59.
- // @description:et See näeb välja selline. 70/12/31 (Th) 23:59:59.
- // @description:eu Horren antza du. 70/12/31 (th) 23:59:59.
- // @description:fa به نظر می رسد مانند این 70/12/31 (TH) 23:59:59.
- // @description:ff Ina wayi no nii. 70/12/31(Th) 23:59:59.
- // @description:fi Se näyttää tältä. 70/12/31 (Th) 23:59:59.
- // @description:fil Mukhang ganito. 70/12/31 (TH) 23:59:59.
- // @description:fj E vaka oqo na ka oqo. 70/12/31(The The) 23:59:59.
- // @description:fo Tað sær soleiðis út. 70/12/31(H) 23:59:59.
- // @description:fr Cela ressemble à ça. 70/12/31 (TH) 23:59:59.
- // @description:fr-CA Cela ressemble à ça. 70/12/31 (TH) 23:59:59.
- // @description:fy It liket derop. 70/12/31 (TH) 23:59:59.
- // @description:ga Tá an chuma air seo. 70/12/31 (TH) 23:59:59.
- // @description:gd Tha e coltach ri seo. 70/12/31 (th) 23:59:59.
- // @description:gl Parece así. 70/12/31 (TH) 23:59:59.
- // @description:gn Péicha ojehecha. 70/12/31(TH) 23:59:59.
- // @description:gsw-berne It looks like this. 70/12/31(Th) 23:59:59.
- // @description:gu તે આના જેવું લાગે છે. 70/12/31 (મી) 23:59:59.
- // @description:gv Ta’n red shoh myr shoh. 70/12/31(Th) 23:59:59.
- // @description:ha Yayi kama da wannan. 70/12/31 (th) 23:59:59.
- // @description:he זה נראה כך. 70/12/31 (TH) 23:59:59.
- // @description:hi यह इस तरह दिख रहा है। 70/12/31 (Th) 23:59:59।
- // @description:hmn Nws zoo li no. 70/12/31 (th) 23:59:59.
- // @description:hr Izgleda ovako. 70/12/31 (TH) 23:59:59.
- // @description:ht Li sanble tankou sa a. 70/12/31 (th) 23:59:59.
- // @description:hu Így néz ki. 70/12/31 (TH) 23:59:59.
- // @description:hy Կարծես սա է: 70/12/31 (րդ) 23:59:59:
- // @description:id Sepertinya ini. 70/12/31 (TH) 23:59:59.
- // @description:ig Ọ dị ka nke a. 70/12/31 (TH) 23:59:59.
- // @description:is Það lítur svona út. 70/12/31 (TH) 23:59:59.
- // @description:it Sembra questo. 70/12/31 (Th) 23:59:59.
- // @description:iu ᐃᒪᐃᑦᑐᔭᕐᒪᑦ. 70/12/31(Th) 23:59:59.
- // @description:ja このように見えます。 70/12/31(th)23:59:59。
- // @description:jv Katon kaya ngono. 70/12/31 (th) 23:59:59.
- // @description:ka ასე გამოიყურება. 70/12/31 (TH) 23:59:59.
- // @description:kg Yo ke monana mutindu yai. 70/12/31(Th) 23:59:59.
- // @description:kk Бұл сияқты. 70/12/31 (мың) 23:59:59.
- // @description:kl Taamatut isikkoqarpoq. 70/12/31(Th) 23:59:59.
- // @description:km វាមើលទៅដូចនេះ។ 70/12/31 (ទី) 23:59:59 ។
- // @description:kn ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ. 70/12/31 (ನೇ) 23:59:59.
- // @description:ko 이렇게 보인다. 70/12/31 (th) 23:59:59.
- // @description:kr Alama adəgai. 70/12/31(Th) 23:59:59.
- // @description:ku Wusa dixuye. 70/12/31 (th) 23:59:59.
- // @description:kv Сійӧ татшӧм. 70/12/31(Тх) 23:59:59.
- // @description:ky Бул окшойт. 70/12/31 (th) 23:59:59.
- // @description:la Is vultus amo is. 70/12/31 (Th) 23:59:59.
- // @description:lb IT gesäit esou aus. 70/12/31 (Th) 23:59:59.
- // @description:lg Kirabika bwe kiti. 70/12/31(th) 23:59:59.
- // @description:ln Ezali komonana lokola oyo. 70/12/31(th) 23:59:59.
- // @description:lo ມັນເບິ່ງຄືວ່ານີ້. 70/12/31 (ທ) ເວລາ 23:59:59.
- // @description:lt Panašu, kad taip. 70/12/31 (Th) 23:59:59.
- // @description:lv Tas izskatās šādi. 70/12/31 (Th) 23:59:59.
- // @description:mg Toa izany. 70/12/31 (th) 23:59:59.
- // @description:mh Ej āinwōt in. 70/12/31( Tht) 23:59:59.
- // @description:mi Te ahua nei. 70/12/31 (TH) 23:59:59.
- // @description:mk Изгледа вака. 70/12/31 (TH) 23:59:59.
- // @description:ml ഇത് ഇതുപോലെ തോന്നുന്നു. 70/12/31 (TH) 23:59:59.
- // @description:mn Энэ нь иймэрхүү харагдаж байна. 70/12/31 (th) 23:59:59.
- // @description:mo Pare așa. 70/12/31 (TH) 23:59:59.
- // @description:mr हे असे दिसते. 70/12/31 (व्या) 23:59:59.
- // @description:ms Nampaknya ini. 70/12/31 (Th) 23:59:59.
- // @description:mt Jidher bħal dan. 70/12/31 (Th) 23:59:59.
- // @description:my ဒါနဲ့တူတယ် 70/12/31 (ကြိမ်မြောက်) 23:59:59 ။
- // @description:nb Det ser slik ut. 70/12/31 (TH) 23:59:59.
- // @description:ne यो यस्तो देखिन्छ। 70/12/31 (th) 23 :: 59:59।
- // @description:nl Het ziet er zo uit. 70/12/31 (TH) 23:59:59.
- // @description:nr Bazama ukududuza. ( 1 10:10 ) U-Israyeli u-10:1.
- // @description:ny Zikuwoneka ngati izi. 70/12/31 (th) 23:59:59.
- // @description:oc Sembla aquò. 70/12/31(La) 23:59:59.
- // @description:om Akkas fakkaata. 70/12/31(th) 23:59:59.
- // @description:or ଏହା ଏହିପରି ଦେଖାଯାଏ | 70/12/31 (ଥ) 23:59।
- // @description:os Афтæ зыны ахæм. 70/12/31(Th) 23:59:59.
- // @description:pa ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗਦਾ ਹੈ. 70/12/31 (ਧੂਹ) 23:59:59.
- // @description:pl Wygląda na to. 70/12/31 (th) 23:59:59.
- // @description:ps دا ورته ښکاري. 70/12/31 (TH) 23:59:59.
- // @description:pt Parece isso. 70/12/31 (TH) 23:59:59.
- // @description:pt-BR Parece isso. 70/12/31 (TH) 23:59:59.
- // @description:pt-PT Parece isso. 70/12/31 (TH) 23:59:59.
- // @description:qu Kaymanmi rikchakun. 70/12/31(H) 23:59:59.
- // @description:rn Bimeze gutya. 70/12/31(Th) 23:59:59.
- // @description:ro Pare așa. 70/12/31 (TH) 23:59:59.
- // @description:ru Похоже, это. 70/12/31 (TH) 23:59:59.
- // @description:rw Birasa nkibi. 70/12/31 (TH) 23:59:59.
- // @description:sa एवं दृश्यते। 70/12/31(थ) 23:59:59।
- // @description:sd اهو ڏسجي ٿو. 70/12/31 (ٿ) 23:59:59.
- // @description:se Dat lea ná. 70/12/31(Th) 23:59:59.
- // @description:sg A yeke mo bâ mo tene a yeke tongaso. 70/12/12 (Th) 23:59:59.
- // @description:sh Изгледа овако. 70/12/31 (ТХ) 23:59:59.
- // @description:si ඒක මේ වගේ. 70/12/31 (TH) 23:59:59.
- // @description:sk Vyzerá to takto. 70/12/31 (Th) 23:59:59.
- // @description:sl Videti je tako. 70/12/31 (TH) 23:59:59.
- // @description:sm E pei o lenei. 70/12/31 (th) 23:59:59.
- // @description:sn Zvinotaridzika seizvi. 70/12/31 (th) 23:59:59.
- // @description:so Waxay u egtahay sidan oo kale. 70/12/31 (th) 23:59:59.
- // @description:sq Duket kështu. 70/12/31 (TH) 23:59:59.
- // @description:sr Изгледа овако. 70/12/31 (ТХ) 23:59:59.
- // @description:ss Kubukeka kanje. 70/12/31(Th) 23:59:59.
- // @description:st E shebahala tjena. 70/12/31 (th) 23:59:59.
- // @description:su Sigana mah ieu. 70/12/31 (th) 23:59:59.
- // @description:sv Det ser ut så här. 70/12/31 (Th) 23:59:59.
- // @description:sw Inaonekana kama hii. 70/12/31 (TH) 23:59:59.
- // @description:ta இது போல் தெரிகிறது. 70/12/31 (வது) 23:59:59.
- // @description:te ఇది ఇలా ఉంది. 70/12/31 (వ) 23:59:59.
- // @description:tg Чунин ба назар мерасад. 70/12/31 (TH) 23:59:59.
- // @description:th ดูเหมือนว่า 70/12/31 (Th) 23:59:59
- // @description:ti ከምዚ ይመስል። 70/12/31(th) 23:59:59።
- // @description:tk Şuňa meňzeýär. 70/12/3/31 (tra) 23:59:59.
- // @description:tl Mukhang ganito. 70/12/31 (TH) 23:59:59.
- // @description:tn Go lebega jaana. 70/12/31(Th) 23:59:59.
- // @description:to ʻOku hangē ʻení. 70/12/31(T) 23:59:59.
- // @description:tr Öyle görünüyor. 70/12/31 (TH) 23:59:59.
- // @description:ts Swi languteka hi ndlela leyi. 70/12/31(TH) 23:59:59.
- // @description:tt Бу шундый. 70/12/31 (th) 23:59:59.
- // @description:tw Ɛte sɛ eyi. 70/12/31(th) 23:59:59.
- // @description:ty E au te reira i te reira. 70/12/31(Th) 23:59:59.
- // @description:ug ئۇ ئوخشايدۇ. 70/12/31 (th) 23:59:59.
- // @description:uk Це виглядає так. 70/12/31 (Th) 23:59:59.
- // @description:ur ایسا لگتا ہے۔ 70/12/31 (ویں) 23:59:59۔
- // @description:uz Bu shunday ko’rinadi. 70/12/31 (Th) 23:59:59.
- // @description:ve Zwi vhonala zwo ralo. 70/12/31(Th) 23:59:59.
- // @description:vi Nó trông như thế này. 70/12/31 (th) 23:59:59.
- // @description:wo Dafa mel nii. 70/12/31(Th) 23:59:59.
- // @description:xh Ijongeka ngoluhlobo. 70/12/31 (th) 23:59:59.
- // @description:yi עס קוקט ווי דאָס. 70/12/31 (טה) 23:59:59.
- // @description:yo O dabi eyi. 70/12/31 (TH) 23:59:59.
- // @description:zh 看起来是这样的。70/12/31(Th) 23:59:59.
- // @description:zh-CN 看起来是这样的。70/12/31(Th) 23:59:59.
- // @description:zh-HK 看起來是這樣的。 70/12/31(Th) 23:59:59.
- // @description:zh-MO 看起來是這樣的。 70/12/31(Th) 23:59:59.
- // @description:zh-MY 看起来是这样的。70/12/31(Th) 23:59:59.
- // @description:zh-SG 看起来是这样的。70/12/31(Th) 23:59:59.
- // @description:zh-TW 看起來是這樣的。 70/12/31(Th) 23:59:59.
- // @description:zu Kubukeka kanjena. 70/12/31 (th) 23:59:59.
- // @author AeamaN
- // @namespace https://github.com/ChinaGodMan/UserScripts
- // @supportURL https://github.com/ChinaGodMan/UserScripts/issues
- // @homepageURL https://github.com/ChinaGodMan/UserScripts
- // @homepage https://github.com/ChinaGodMan/UserScripts
- // @license MIT
- // @match https://twitter.com/*
- // @match https://mobile.twitter.com/*
- // @match https://mobile.twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion/*
- // @match https://x.com/*
- // @match https://mobile.x.com/*
- // @require https://update.greasyfork.org/scripts/538254/1601105/PNG.js
- // @grant GM_getValue
- // @grant GM_registerMenuCommand
- // @grant GM_setValue
- // @run-at document-body
- // @icon https://raw.githubusercontent.com/ChinaGodMan/UserScriptsHistory/main/scriptsIcon/x.svg
- // @compatible chrome
- // @compatible firefox
- // @compatible edge
- // @compatible opera
- // @compatible safari
- // @compatible kiwi
- // @compatible qq
- // @compatible via
- // @compatible brave
- // @version 2025.6.4.1
- // ==/UserScript==
- // And more. See Default valuse below.
- // It's based on "https://qiita.com/libraplanet/items/0bdd7ef1a13e7af8f48f".
- //
- // 他にも機能があります。以下の Default valuse を確認して下さい。
- // "https://qiita.com/libraplanet/items/0bdd7ef1a13e7af8f48f" を参考にしています。
- (function () { /* START */
- 'use strict'
- // //////////// Settings //////////// //
- // No GUI Settings
- // Default values are used
- const NOGUI = false
- // ////////////////////////////////// //
- // ///////// Default valuse ///////// //
- // Blue bird returns
- const BBR = false
- // Replace with orig images(wasted traffic occurs)
- const ORIGI = false
- // Slightly wider TL
- const WTL = false
- // Eye Care Mode at default background
- const ECMODE = true
- // Hide promotions
- const HPP = true
- // Hide Who to follow
- const HWTF = true
- // Hide DM drawer
- const HDMD = true
- // Hide Get Verified
- const HGV = true
- // Fine engagement
- // 1. Live
- // 2. Normal
- // 0. Do nothing
- const FEGM = 0
- // Fix videos quality
- // 1. Maximum
- // 2. Minimum
- // 0. Do nothing
- const FVQ = 1
- // Date formats
- // 1. 31.12.70 23:59
- // 2. 31.12.70 23:59:59
- // 3. 31.12.70(Th) 23:59
- // 4. 31.12.70(Th) 23:59:59
- //
- // 5. 70/12/31 23:59
- // 6. 70/12/31 23:59:59
- // 7. 70/12/31(Th) 23:59
- // 8. 70/12/31(Th) 23:59:59 [ye/mo/da(we) ho:mi:se]
- //
- // 9. 70-12/31 23:59
- // 10. 70-12/31 23:59'59
- // 11. 70-12/31(Th) 23:59
- // 12. 70-12/31(Th) 23:59'59
- //
- // 13. M59-12-31 23:59
- // 14. M59-12-31 23:59:59
- // 15. M59-12-31(Th) 23:59
- // 16. M59-12-31(Th) 23:59:59
- //
- // 0. Do nothing
- const FMT = 7
- // Loop interval(ms)
- const INTL = 800
- // ////////////////////////////////// //
- const MYNAME = 'sdnt1200'
- const LANG = document.documentElement.getAttribute('lang')
- let time_r = Date.now()
- let s_mutations = true
- let observer = new MutationObserver(function (mutations) {
- s_mutations = mutations
- })
- let originalXHROPEN
- let bbr, origi, wtl, ecmode, hpp, hwtf, hdmd, hgv, fegm, fvq, fmt, intl
- function makeDialog() {
- let dalg = document.createElement('div')
- dalg.className = 'us-' + MYNAME
- dalg.style.all = 'initial'
- dalg.style.backgroundColor = 'rgb(235, 235, 235)'
- dalg.style.border = '3px outset'
- dalg.style.borderRadius = '1%'
- dalg.style.display = 'none'
- dalg.style.fontFamily = 'monospace'
- dalg.style.fontSize = '12px'
- dalg.style.height = '440px'
- dalg.style.width = '480px'
- dalg.style.paddingLeft = '2px'
- dalg.style.paddingRight = '2px'
- dalg.style.position = 'fixed'
- dalg.style.right = '8px'
- dalg.style.top = '8px'
- dalg.style.zIndex = '2147483647'
- dalg.style.overflow = 'auto'
- let html =
- '<span style="all: initial; font-size: 120%; line-height: 210%">' +
- GM_info.script.name + ' ' + GM_info.script.version + ' ' + 'Settings' +
- '</span><br />\n' +
- '<input type="radio" name="fmt" value="1" class="top_r" />31.12.70 23:59' +
- ' ' +
- ' ' +
- '<input type="radio" name="fmt" value="2" class="top_r" />31.12.70 23:59:59<br />\n' +
- '<input type="radio" name="fmt" value="3" class="mid_r" />31.12.70(Th) 23:59' +
- ' ' +
- '<input type="radio" name="fmt" value="4" class="mid_r" />31.12.70(Th) 23:59:59<br />\n' +
- '<input type="radio" name="fmt" value="5" class="mid_r" />70/12/31 23:59' +
- ' ' +
- '<input type="radio" name="fmt" value="6" class="mid_r" />70/12/31 23:59:59<br />\n' +
- '<input type="radio" name="fmt" value="7" class="mid_r" />70/12/31(Th) 23:59' +
- ' ' +
- '<input type="radio" name="fmt" value="8" class="mid_r" />70/12/31(Th) 23:59:59<br />\n' +
- '<input type="radio" name="fmt" value="9" class="mid_r" />70-12/31 23:59' +
- ' ' +
- '<input type="radio" name="fmt" value="10" class="mid_r" />70-12/31 23:59\'59<br />\n' +
- '<input type="radio" name="fmt" value="11" class="mid_r" />70-12/31(Th) 23:59' +
- ' ' +
- '<input type="radio" name="fmt" value="12" class="mid_r" />70-12/31(Th) 23:59\'59<br />\n' +
- '<input type="radio" name="fmt" value="13" class="mid_r" />M59-12-31 23:59' +
- ' ' +
- '<input type="radio" name="fmt" value="14" class="mid_r" />M59-12-31 23:59:59<br />\n' +
- '<input type="radio" name="fmt" value="15" class="mid_r" />M59-12-31(Th) 23:59' +
- ' ' +
- '<input type="radio" name="fmt" value="16" class="mid_r" />M59-12-31(Th) 23:59:59<br />\n' +
- '<input type="radio" name="fmt" value="0" class="btm_r" />Do nothing<br />\n' +
- '<input type="checkbox" name="bbr" class="top_c" />BB returns' +
- ' ' +
- '<input type="checkbox" name="origi" class="mid_c" />Replace with orig images*<br />\n' +
- '<input type="checkbox" name="wtl" class="mid_c" />Widen slightly TL' +
- ' ' +
- '<input type="checkbox" name="ecmode" class="btm_c" />Eye Care Mode at default BG<br />\n' +
- '<input type="checkbox" name="hpp" class="top_c" />Hide promotions' +
- ' ' +
- '<input type="checkbox" name="hwtf" class="mid_c" />Hide Who to follow<br />\n' +
- '<input type="checkbox" name="hdmd" class="mid_c" />Hide DM drawer' +
- ' ' +
- '<input type="checkbox" name="hgv" class="btm_c" />Hide Get Verified<br />\n' +
- '<input type="radio" name="fegm" value="1" class="top_r" />Fine engagement(live)' +
- ' ' +
- '<input type="radio" name="fegm" value="2" class="top_r" />Fine engagement(normal)<br />\n' +
- '<input type="radio" name="fegm" value="0" class="btm_r" />Do nothing<br />\n' +
- '<input type="radio" name="fvq" value="1" class="top_r" />at maximum video quality**' +
- ' ' +
- '<input type="radio" name="fvq" value="2" class="top_r" />at minimum video quality<br />\n' +
- '<input type="radio" name="fvq" value="0" class="btm_r" />Do nothing<br />\n' +
- '<span style="all: initial; font-size: 100%">' +
- 'Loop interval(ms)** ' +
- '</span><input type="text" name="intl" size="10" class="top_t" /><br />\n' +
- '<span style="all: initial; font-size: 100%; line-height: 200%">' +
- '*wasted traffic occurs **Restart required' +
- '</span><br />\n' +
- '<input type="button" class="top_b" value="Cancel" />\n' +
- '<input type="button" class="top_b" value="Set default" />\n' +
- '<input type="button" class="top_b" value="Save & Close" /><br /><br />\n'
- dalg.innerHTML = html
- for (let e of dalg.querySelectorAll('input.top_r, input.mid_r, input.btm_r')) {
- e.style.all = 'initial'
- e.style.appearance = 'auto'
- e.style.marginRight = '1px'
- e.style.marginTop = '1px'
- }
- for (let e of dalg.querySelectorAll('input.top_c, input.mid_c, input.btm_c')) {
- e.style.all = 'initial'
- e.style.appearance = 'auto'
- e.style.marginRight = '1px'
- e.style.marginTop = '1px'
- }
- for (let e of dalg.querySelectorAll('input.top_t')) {
- e.style.all = 'initial'
- e.style.backgroundColor = 'rgb(255, 255, 255)'
- e.style.fontFamily = 'monospace'
- e.style.fontSize = '100%'
- e.style.marginLeft = '1px'
- e.style.marginRight = '1px'
- e.style.marginTop = '8px'
- e.style.marginBottom = '0px'
- e.style.paddingLeft = '1px'
- e.style.paddingRight = '1px'
- e.style.paddingTop = '1px'
- e.style.paddingBottom = '1px'
- }
- for (let e of dalg.querySelectorAll('input.top_b')) {
- e.style.all = 'initial'
- e.style.backgroundColor = 'rgb(190, 190, 190)'
- e.style.borderRadius = '10%'
- e.style.cursor = 'default'
- e.style.fontSize = '110%'
- e.style.marginTop = '10px'
- e.style.marginBottom = '0px'
- e.style.paddingTop = '6px'
- e.style.paddingBottom = '6px'
- e.style.textAlign = 'center'
- e.style.width = '90px'
- }
- return dalg
- }
- function makeFunc(dalg) {
- dalg.addEventListener(
- 'click',
- function (event) { event.stopPropagation() },
- false
- )
- dalg.querySelector('input[value="Cancel"]').addEventListener(
- 'click',
- function () { dalg.style.display = 'none' },
- false
- )
- dalg.querySelector('input[value="Cancel"]').addEventListener(
- 'mouseenter',
- function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
- false
- )
- dalg.querySelector('input[value="Cancel"]').addEventListener(
- 'mouseleave',
- function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
- false
- )
- dalg.querySelector('input[value="Set default"]').addEventListener(
- 'click',
- function () {
- dalg.querySelector('input[name="bbr"]').checked = BBR
- dalg.querySelector('input[name="origi"]').checked = ORIGI
- dalg.querySelector('input[name="fmt"][value="' + FMT + '"]').checked = true
- dalg.querySelector('input[name="wtl"]').checked = WTL
- dalg.querySelector('input[name="ecmode"]').checked = ECMODE
- dalg.querySelector('input[name="hpp"]').checked = HPP
- dalg.querySelector('input[name="hwtf"]').checked = HWTF
- dalg.querySelector('input[name="hdmd"]').checked = HDMD
- dalg.querySelector('input[name="hgv"]').checked = HGV
- dalg.querySelector('input[name="fegm"][value="' + FEGM + '"]').checked = true
- dalg.querySelector('input[name="fvq"][value="' + FVQ + '"]').checked = true
- dalg.querySelector('input[name="intl"]').value = INTL
- },
- false
- )
- dalg.querySelector('input[value="Set default"]').addEventListener(
- 'mouseenter',
- function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
- false
- )
- dalg.querySelector('input[value="Set default"]').addEventListener(
- 'mouseleave',
- function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
- false
- )
- dalg.querySelector('input[value="Save & Close"]').addEventListener(
- 'click',
- function () {
- bbr = dalg.querySelector('input[name="bbr"]').checked
- origi = dalg.querySelector('input[name="origi"]').checked
- for (let e of dalg.querySelectorAll('input[name="fmt"]')) {
- if (e.checked) {
- fmt = +e.value
- break
- }
- }
- wtl = dalg.querySelector('input[name="wtl"]').checked
- ecmode = dalg.querySelector('input[name="ecmode"]').checked
- hpp = dalg.querySelector('input[name="hpp"]').checked
- hwtf = dalg.querySelector('input[name="hwtf"]').checked
- hdmd = dalg.querySelector('input[name="hdmd"]').checked
- hgv = dalg.querySelector('input[name="hgv"]').checked
- for (let e of dalg.querySelectorAll('input[name="fegm"]')) {
- if (e.checked) {
- fegm = +e.value
- break
- }
- }
- for (let e of dalg.querySelectorAll('input[name="fvq"]')) {
- if (e.checked) {
- fvq = +e.value
- break
- }
- }
- intl = +dalg.querySelector('input[name="intl"]').value
- GM_setValue('bbr', bbr)
- GM_setValue('origi', origi)
- GM_setValue('fmt', fmt)
- GM_setValue('wtl', wtl)
- GM_setValue('ecmode', ecmode)
- GM_setValue('hpp', hpp)
- GM_setValue('hwtf', hwtf)
- GM_setValue('hdmd', hdmd)
- GM_setValue('hgv', hgv)
- GM_setValue('fegm', fegm)
- GM_setValue('fvq', fvq)
- GM_setValue('intl', intl)
- dalg.style.display = 'none'
- },
- false
- )
- dalg.querySelector('input[value="Save & Close"]').addEventListener(
- 'mouseenter',
- function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
- false
- )
- dalg.querySelector('input[value="Save & Close"]').addEventListener(
- 'mouseleave',
- function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
- false
- )
- }
- function initgui() {
- if (GM_getValue('bbr') === undefined) {
- GM_setValue('bbr', BBR)
- } else {
- bbr = GM_getValue('bbr')
- }
- if (GM_getValue('origi') === undefined) {
- GM_setValue('origi', ORIGI)
- } else {
- origi = GM_getValue('origi')
- }
- if (GM_getValue('fmt') === undefined) {
- GM_setValue('fmt', FMT)
- } else {
- fmt = GM_getValue('fmt')
- }
- if (GM_getValue('wtl') === undefined) {
- GM_setValue('wtl', WTL)
- } else {
- wtl = GM_getValue('wtl')
- }
- if (GM_getValue('ecmode') === undefined) {
- GM_setValue('ecmode', ECMODE)
- } else {
- ecmode = GM_getValue('ecmode')
- }
- if (GM_getValue('hpp') === undefined) {
- GM_setValue('hpp', HPP)
- } else {
- hpp = GM_getValue('hpp')
- }
- if (GM_getValue('hwtf') === undefined) {
- GM_setValue('hwtf', HWTF)
- } else {
- hwtf = GM_getValue('hwtf')
- }
- if (GM_getValue('hdmd') === undefined) {
- GM_setValue('hdmd', HDMD)
- } else {
- hdmd = GM_getValue('hdmd')
- }
- if (GM_getValue('hgv') === undefined) {
- GM_setValue('hgv', HGV)
- } else {
- hgv = GM_getValue('hgv')
- }
- if (GM_getValue('fegm') === undefined) {
- GM_setValue('fegm', FEGM)
- } else {
- fegm = GM_getValue('fegm')
- }
- if (GM_getValue('fvq') === undefined) {
- GM_setValue('fvq', FVQ)
- } else {
- fvq = GM_getValue('fvq')
- }
- if (GM_getValue('intl') === undefined) {
- GM_setValue('intl', INTL)
- } else {
- intl = GM_getValue('intl')
- }
- let dalg = makeDialog()
- makeFunc(dalg)
- document.body.appendChild(dalg)
- GM_registerMenuCommand('Settings', function () {
- if (dalg.style.display == 'none') {
- dalg.querySelector('input[name="bbr"]').checked = bbr
- dalg.querySelector('input[name="origi"]').checked = origi
- dalg.querySelector('input[name="fmt"][value="' + fmt + '"]').checked = true
- dalg.querySelector('input[name="wtl"]').checked = wtl
- dalg.querySelector('input[name="ecmode"]').checked = ecmode
- dalg.querySelector('input[name="hpp"]').checked = hpp
- dalg.querySelector('input[name="hwtf"]').checked = hwtf
- dalg.querySelector('input[name="hdmd"]').checked = hdmd
- dalg.querySelector('input[name="hgv"]').checked = hgv
- dalg.querySelector('input[name="fegm"][value="' + fegm + '"]').checked = true
- dalg.querySelector('input[name="fvq"][value="' + fvq + '"]').checked = true
- dalg.querySelector('input[name="intl"]').value = intl
- dalg.style.display = 'block'
- }
- })
- }
- function datef(date, f) {
- const WEEK = {
- 'ja': ['日', '月', '火', '水', '木', '金', '土'],
- 'ko': ['일', '월', '화', '수', '목', '금', '토'],
- 'zh-Hant': ['日', '一', '二', '三', '四', '五', '六'],
- 'zh': ['日', '一', '二', '三', '四', '五', '六'],
- 'ru': ['ВС', 'ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ'],
- 'de': ['Son', 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam'],
- 'it': ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
- 'fr': ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
- 'pt': ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
- 'en': ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] // Add your language
- }
- const WEEK_L = WEEK[LANG] ?? WEEK['en']
- const YE = date.getFullYear().toString().slice(-2)
- const YM = date.getFullYear() - 1911
- const MO = ('0' + (date.getMonth() + 1)).slice(-2)
- const DA = ('0' + date.getDate()).slice(-2)
- const WE = WEEK_L[date.getDay()]
- const HO = ('0' + date.getHours()).slice(-2)
- const MI = ('0' + date.getMinutes()).slice(-2)
- const SE = ('0' + date.getSeconds()).slice(-2)
- const F = [
- DA + '.' + MO + '.' + YE + ' ' + HO + ':' + MI, // 0=1
- DA + '.' + MO + '.' + YE + ' ' + HO + ':' + MI + ':' + SE,
- DA + '.' + MO + '.' + YE + '(' + WE + ') ' + HO + ':' + MI,
- DA + '.' + MO + '.' + YE + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
- YE + '/' + MO + '/' + DA + ' ' + HO + ':' + MI,
- YE + '/' + MO + '/' + DA + ' ' + HO + ':' + MI + ':' + SE,
- YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI,
- YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
- YE + '-' + MO + '/' + DA + ' ' + HO + ':' + MI,
- YE + '-' + MO + '/' + DA + ' ' + HO + ':' + MI + '\'' + SE,
- YE + '-' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI,
- YE + '-' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + '\'' + SE,
- 'M' + YM + '-' + MO + '-' + DA + ' ' + HO + ':' + MI,
- 'M' + YM + '-' + MO + '-' + DA + ' ' + HO + ':' + MI + ':' + SE,
- 'M' + YM + '-' + MO + '-' + DA + '(' + WE + ') ' + HO + ':' + MI,
- 'M' + YM + '-' + MO + '-' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
- YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE
- ]
- return F[f - 1] ?? F[16]
- }
- function bbreturn() {
- const SEL_ID =
- 'div#placeholder[aria-label="Loading…"] g path, ' +
- 'svg#loading-x-anim-0 g path, svg#loading-x-anim-1 g path, ' +
- 'svg#loading-x-anim-2 g path, svg#loading-x-anim-3 g path'
- const SEL_H = 'header[role="banner"] h1[role="heading"] g path' // ホーム
- const SEL_M = 'div[data-testid="Dropdown"] a[href="/i/premium_sign_up"] g path' // もっと見る
- const SEL_V = 'header[role="banner"] nav g path' // 認証済み
- const SEL_L = 'div[role="dialog"] div[aria-labelledby="modal-header"] svg.r-lrvibr path' // ログイン
- const SEL_T = 'div#react-root main svg.r-lrvibr path' // トップ
- let elms = document.querySelectorAll(
- SEL_ID + ', ' + SEL_H + ', ' + SEL_M + ', ' + SEL_V + ', ' + SEL_L + ', ' + SEL_T
- )
- let ss // Temp.
- for (let e of elms) {
- const D_X = 'M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99'
- const D_BB =
- 'M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1' +
- '.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0' +
- ' .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342' +
- ' 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 ' +
- '4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2' +
- '.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112' +
- '-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.' +
- '005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z'
- const D_FILL_N = 'none'
- const D_FILL_LB = '#1da1f2ff'
- const D_FILL_DB = '#1d9bf0ff'
- const D_S = 'currentColor'
- const D_SW = '2'
- if (e.getAttribute('d').startsWith(D_X)) {
- if (e.closest('header[role="banner"] nav, div[data-testid="Dropdown"] a[href="/i/premium_sign_up"]')) {
- ss = s_mutations
- e.setAttribute('d', D_BB)
- e.setAttribute('fill', D_FILL_N)
- e.setAttribute('stroke', D_S)
- e.setAttribute('stroke-width', D_SW)
- s_mutations = ss
- } else if (e.closest('div#placeholder[aria-label="Loading…"]') ||
- e.closest('svg[id^="loading-x-anim-"]')) {
- ss = s_mutations
- e.setAttribute('d', D_BB)
- e.setAttribute('fill', D_FILL_LB)
- s_mutations = ss
- } else {
- ss = s_mutations
- e.setAttribute('d', D_BB)
- e.setAttribute('fill', D_FILL_DB)
- s_mutations = ss
- }
- }
- }
- const TITLE = document.title
- let elm = document.querySelector('head link[rel="shortcut icon"]')
- let elm_2 = document.querySelector('head link[rel="apple-touch-icon"]')
- ss = s_mutations
- if (
- elm &&
- !/favicons\/twitter\.2\.ico$/.test(elm.getAttribute('href')) &&
- !/^\(\d+\) /.test(document.title)
- ) {
- elm.setAttribute('href', '//abs.twimg.com/favicons/twitter.2.ico')
- } else if (
- elm &&
- !/favicons\/twitter-pip\.2\.ico$/.test(elm.getAttribute('href')) &&
- /^\(\d+\) /.test(document.title)
- ) {
- elm.setAttribute('href', '//abs.twimg.com/favicons/twitter-pip.2.ico')
- }
- if (
- elm_2 &&
- /responsive-web\/client-web[-a-z]*\/icon-ios\.77d25eba\.png$/.test(elm_2.getAttribute('href'))
- ) {
- elm_2.setAttribute('href', 'data:image/png;base64,' + PNG_BB)
- alert('afaf')
- }
- let rt = TITLE.replace(/ \/ X$/, ' / Twitter')
- if (TITLE != rt) document.title = rt
- s_mutations = ss
- }
- function origimg() {
- const SEL_D = 'div[style*="background-image:"]'
- const SEL_I = 'img'
- let elms = document.querySelectorAll(SEL_D + ', ' + SEL_I)
- for (let e of elms) {
- let regex = /^(.+pbs\.twimg\.com\/[^?]+\?format=\w+)(&|&)(name=)(\w+)([")]*)$/
- let ss // Temp.
- if (/div/i.test(e.tagName)) {
- let r = regex.exec(e.style.backgroundImage)
- if (r && r[4] != 'orig') {
- ss = s_mutations
- e.style.backgroundImage = r[1] + r[2] + r[3] + 'orig' + r[5]
- s_mutations = ss
- continue
- }
- continue
- }
- let r = regex.exec(e.getAttribute('src'))
- if (r && r[4] != 'orig') {
- ss = s_mutations
- e.setAttribute('src', r[1] + r[2] + r[3] + 'orig' + r[5])
- s_mutations = ss
- continue
- }
- }
- }
- function widetl() {
- let elms = document.querySelectorAll('div.css-175oi2r.r-aqfbo4[data-testid="sidebarColumn"]')
- let ss // Temp.
- if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 'c')) {
- let style_a = document.createElement('style')
- style_a.className = 'us-' + MYNAME + '-' + 'a'
- style_a.textContent =
- 'div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
- '{max-width: 660px;}'
- let style_b = document.createElement('style')
- style_b.className = 'us-' + MYNAME + '-' + 'b'
- style_b.textContent =
- 'div[role="dialog"] div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
- '{max-width: 600px;}'
- let style_c = document.createElement('style')
- style_c.className = 'us-' + MYNAME + '-' + 'c'
- style_c.textContent =
- 'section div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
- '{max-width: 600px;}'
- ss = s_mutations
- document.head.appendChild(style_a)
- document.head.appendChild(style_b)
- document.head.appendChild(style_c)
- s_mutations = ss
- }
- for (let e of elms) {
- let d, dd, dg, dgi, spdgi, da, ds
- d = e.querySelector(':scope>div>div.r-1hycxz', ':scope>div>div.r-1jocfgc')
- if (d != null) {
- dd = d.querySelector('div.r-aqfbo4.r-6gpygo.r-15ysp7h') // null対策
- dg = d.querySelector('div[data-testid="google_sign_in_container"]')
- dgi = d.querySelector('div[data-testid="google_sign_in_container"] iframe[id^="gsi"]')
- da = d.querySelector('button[data-testid="apple_sign_in_button"]')
- ds = d.querySelector('a[href="/i/flow/signup"]')
- }
- if (dgi) spdgi = dgi.parentNode.parentNode
- ss = s_mutations
- if (dd) dd.style.width = '290px'
- if (dg) dg.style.width = '260px'
- if (dgi) dgi.style.left = '-20px'
- if (spdgi) spdgi.style.setProperty('clip-path', 'inset(0 round 20px)')
- if (da) da.style.width = '260px'
- if (ds) ds.style.width = '260px'
- if (d != null) d.style.width = '290px'
- e.style.width = '290px' // 350px
- s_mutations = ss
- }
- }
- function chgbgc() {
- let body = document.getElementsByTagName('body')[0]
- if (/\(2\d{2},\s*2\d{2},\s*2\d{2}/i.test(body.style.backgroundColor)) {
- let tl, fb, sb
- tl = document.querySelector('main div.r-f8sm7e.r-1ye8kvj')
- fb = document.querySelector('main div.r-1e5uvyk.r-6026j')
- sb = document.querySelector('main div.r-aqfbo4.r-15ysp7h.r-1xcajam')
- let ss = s_mutations
- body.style.backgroundColor = 'rgb(253, 253, 245)'
- if (tl != null) tl.style.backgroundColor = 'rgb(253, 253, 245)'
- if (fb != null) fb.style.backgroundColor = 'rgba(253, 253, 245, 0.85)'
- if (sb != null) sb.style.backgroundColor = 'rgb(253, 253, 245)'
- s_mutations = ss
- }
- }
- function hidepromo() {
- const SEL = 'path[d^="M19.498 3h-15c-1.381 0-2.5 1.12-2.5 2.5v13c0 1.38 1.119 2.5"]'
- const SEL_2 = 'main div[data-testid="sidebarColumn"] section div[data-testid="trend"] div.r-14gqq1x ' +
- 'span.css-1qaijid.r-bcqeeo.r-qvutc0' // def-ja, def-en, ble-ja, ble-en
- const SEL_3 = 'main div[data-testid="primaryColumn"] section article ' +
- 'span.css-1jxf684.r-bcqeeo.r-qvutc0.r-poiln3'
- const SEL_4 =
- 'main div[data-testid="primaryColumn"] section ' +
- 'span.css-901oao.css-16my406.r-bcqeeo.r-qvutc0'
- // Lone label def-ja, def-en, ble-ja, ble-en
- let elms = document.querySelectorAll(SEL)
- let elms_2 = document.querySelectorAll(SEL_2)
- let elms_3 = document.querySelectorAll(SEL_3)
- let elms_4 = document.querySelectorAll(SEL_4)
- const PROMO = {
- 'ja': 'によるプロモーション$',
- 'ko': ' 님이 프로모션함$',
- 'zh-Hant': '^由 .+ 推廣$',
- 'zh': '^由 .+ 推广$',
- 'ru': '^Реклама от ',
- 'de': '^Gesponsert von ',
- 'it': '^Sponsorizzato da ',
- 'fr': '^Sponsorisé par ',
- 'pt': '^Promovido por ',
- 'en': '^Promoted by ' // Add your language
- }
- const PROMO_L = PROMO[LANG] ?? PROMO['en']
- const PROMO_2 = {
- 'ja': 'プロモポスト',
- 'ko': 'Promoted Post',
- 'zh-Hant': '推廣貼文',
- 'zh': 'Promoted Post',
- 'ru': 'Promoted Post',
- 'de': 'Gesponserter Post',
- 'it': 'Promoted Post',
- 'fr': 'Promoted Post',
- 'pt': 'Post promovido',
- 'en': 'Promoted Post' // Add your language
- }
- const PROMO_L_2 = PROMO_2[LANG] ?? PROMO_2['en']
- let ss // Temp.
- for (let e of elms) {
- let xpe = e.closest('div[data-testid="cellInnerDiv"]')
- if (!xpe) xpe = e.closest('div.css-175oi2r.r-1adg3ll.r-1ny4l3l') // def-ja, def-en, ble-ja, ble-en
- if (!xpe) xpe = e.closest('div.css-175oi2r.r-1ny4l3l[data-testid="UserCell"]') // def-ja, def-en, ?, ble-en
- ss = s_mutations
- if (xpe) xpe.style.setProperty('display', 'none') // Right column のおすすめユーザー'
- s_mutations = ss
- }
- for (let e of elms_2) {
- const REGEX = new RegExp(PROMO_L, 'i')
- if (!REGEX.test(e.textContent)) continue
- let xpe = e.closest('div.css-175oi2r.r-1adg3ll.r-1ny4l3l')
- ss = s_mutations
- xpe.style.setProperty('display', 'none')
- s_mutations = ss
- }
- for (let e of elms_3) {
- if (e.textContent != 'Ad') continue
- let xpe = e.closest('div[data-testid="cellInnerDiv"]')
- ss = s_mutations
- xpe.style.setProperty('display', 'none')
- s_mutations = ss
- }
- for (let e of elms_4) {
- if (e.textContent != PROMO_2['en'] && e.textContent != PROMO_L_2) continue
- let xpe = e.closest('div[data-testid="cellInnerDiv"]')
- ss = s_mutations
- xpe.style.setProperty('display', 'none')
- s_mutations = ss
- }
- }
- function hidewtf() {
- let ss // Temp.
- let r =
- '^[^:]+://[^/]+/$|' +
- '^[^:]+://[^/]+/(' +
- 'compose|' + // pop up
- 'search-advanced|' + // pop up
- 'home|' + // 除外?
- 'search|' +
- 'i/display|' + // pop up
- 'i/flow|' + // pop up
- 'i/keyboard_shortcuts|' + // pop up
- 'i/verified-orgs-signup|' + // pop up、追加
- 'i/verified-choose|' + // pop up、追加
- 'i/premium_sign_up|' + // pop up、追加
- 'i/connect_people|' +
- 'i/topics|' +
- 'i/spaces/start|' + // pop up、追加
- 'i/verified-application|' + // pop up、追加
- 'i/verified-get-verified|' + // pop up、追加
- '[^/]+/followers|' +
- '[^/]+/following|' +
- '[^/]+/lists|' +
- '[^/]+/status/|' + // 両方、WTFのみ除外
- '[^/]+/topics|' +
- '[^/]+/creator-subscriptions|' + // 追加
- '[^/]+/superfollows|' + // 追加
- '[^/]+/verified_followers' + // 追加
- ')'
- if (new RegExp(r, 'i').test(document.URL)) {
- for (let i = 1; i < 4; i++) {
- let e = document.querySelector('head style.' + 'us-' + MYNAME + '-' + i)
- if (e) document.head.removeChild(e)
- }
- return
- }
- if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 1)) {
- ss = s_mutations
- let style = document.createElement('style')
- style.className = 'us-' + MYNAME + '-' + 1
- style.textContent =
- 'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
- ':has(button.css-175oi2r.r-1mmae3n.r-3pj75a.r-1ny4l3l.r-o7ynqc.r-6416eg[data-testid="UserCell"]) ' +
- '{display: none;}'
- // フォロー, def-ja, def-en, ble-ja, ble-en
- document.head.appendChild(style)
- s_mutations = ss
- }
- if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 2)) {
- ss = s_mutations
- let style = document.createElement('style')
- style.className = 'us-' + MYNAME + '-' + 2
- style.textContent =
- 'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
- ':has(h2[aria-level="2"][role="heading"]>div>span.css-1jxf684.r-bcqeeo.r-qvutc0) {display: none;}'
- // Who to follow, def-ja, def-en, ble-ja, ble-en
- document.head.appendChild(style)
- s_mutations = ss
- }
- if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 3)) {
- ss = s_mutations
- let style = document.createElement('style')
- style.className = 'us-' + MYNAME + '-' + 3
- style.textContent =
- 'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
- ':has(a[href*="/connect_people?user_id="]) {display: none;}' // さらに表示
- document.head.appendChild(style)
- s_mutations = ss
- }
- }
- function hidedmd() {
- const SEL = 'div[data-testid="DMDrawer"]'
- let elm = document.querySelector(SEL)
- let ss = s_mutations
- if (elm != null) elm.style.setProperty('display', 'none')
- s_mutations = ss
- }
- function hidegv() {
- const SEL = 'aside.css-175oi2r.r-1habvwh.r-eqz5dr.r-uaa2di.r-1mmae3n.r-3pj75a'
- const SEL_2 = 'main section div[data-testid="cellInnerDiv"] h1[role="heading"] span.css-1jxf684.r-bcqeeo.r-qvutc0'
- // def-ja, def-en, ble-ja, ble-en
- let elms = document.querySelectorAll(SEL)
- let elms_2 = document.querySelectorAll(SEL_2)
- const TC = {
- 'gv': {
- 'ja': '認証を受ける',
- 'ko': '인증 받기',
- 'zh-Hant': '獲得認證',
- 'zh': '获得认证',
- 'ru': 'Подтвердить подлинность',
- 'de': 'Lass dich verifizieren',
- 'it': 'Ottieni la verifica',
- 'fr': 'Obtenez la certification',
- 'pt': 'Obter verificação',
- 'en': 'Get Verified' // Add your language
- },
- 'sp': {
- 'ja': 'プレミアムにサブスクライブ',
- 'ko': 'Subscribe to Premium',
- 'zh-Hant': '訂閱 Premium',
- 'zh': 'Subscribe to Premium',
- 'ru': 'Subscribe to Premium',
- 'de': 'Premium abonnieren',
- 'it': 'Subscribe to Premium',
- 'fr': 'Subscribe to Premium',
- 'pt': 'Assine o Premium',
- 'en': 'Subscribe to Premium' // Add your language
- },
- 'spylp': {
- 'ja': '長いポストを作成するには、プレミアムにサブスクライブしてください',
- 'ko': 'Premium을 구독하고 나만의 긴 게시물을 작성해 보세요',
- 'zh-Hant': '訂閱 Premium 以撰寫你自己的更長貼文',
- 'zh': '订阅 Premium,撰写自己的长帖',
- 'ru': 'Подпишитесь на Premium, чтобы писать собственные длинные посты',
- 'de': 'Abonniere Premium, wenn du deine eigenen längeren Posts schreiben möchtest',
- 'it': 'Per scrivere post più lunghi, abbonati a Premium',
- 'fr': 'Abonnez-vous à Premium pour écrire vos propres posts plus longs.',
- 'pt': 'Assine o Premium para escrever posts mais longos',
- 'en': 'Subscribe to Premium to write your own longer posts' // Add your language
- },
- 'gafp': {
- 'ja': 'プレミアムプラスで広告をなくす',
- 'ko': 'Go ad-free with Premium+',
- 'zh-Hant': 'Go ad-free with Premium+',
- 'zh': 'Go ad-free with Premium+',
- 'ru': 'Go ad-free with Premium+',
- 'de': 'Go ad-free with Premium+',
- 'it': 'Go ad-free with Premium+',
- 'fr': 'Go ad-free with Premium+',
- 'pt': 'Go ad-free with Premium+',
- 'en': 'Go ad-free with Premium+' // Add your language
- },
- 'gaf': {
- 'ja': '広告をなくす',
- 'ko': 'Go ad free',
- 'zh-Hant': 'Go ad free',
- 'zh': 'Go ad free',
- 'ru': 'Go ad free',
- 'de': 'Go ad free',
- 'it': 'Go ad free',
- 'fr': 'Go ad free',
- 'pt': 'Go ad free',
- 'en': 'Go ad free' // Add your language
- },
- 'txp': {
- 'ja': 'TweetDeckはX Proになりました',
- 'ko': 'TweetDeck is now X Pro',
- 'zh-Hant': 'TweetDeck is now X Pro',
- 'zh': 'TweetDeck is now X Pro',
- 'ru': 'TweetDeck is now X Pro',
- 'de': 'TweetDeck is now X Pro',
- 'it': 'TweetDeck is now X Pro',
- 'fr': 'TweetDeck is now X Pro',
- 'pt': 'TweetDeck is now X Pro',
- 'en': 'TweetDeck is now X Pro' // Add your language
- }
- }
- const GV_L = TC.gv[LANG] ?? TC.gv['en']
- const SP_L = TC.sp[LANG] ?? TC.sp['en']
- const SPYLP_L = TC.spylp[LANG] ?? TC.spylp['en']
- const GAFP_L = TC.gafp[LANG] ?? TC.gafp['en']
- const GAF_L = TC.gaf[LANG] ?? TC.gaf['en']
- const TXP_L = TC.txp[LANG] ?? TC.txp['en']
- for (let e of elms) {
- if (
- e.getAttribute('aria-label') == GV_L ||
- e.getAttribute('aria-label') == SP_L ||
- e.getAttribute('aria-label') == SPYLP_L ||
- e.getAttribute('aria-label') == GAFP_L
- ) {
- let ss = s_mutations
- e.parentNode.parentNode.style.setProperty('display', 'none')
- s_mutations = ss
- }
- }
- for (let e of elms_2) {
- if (e.textContent == GAF_L || e.textContent == TXP_L) {
- let xpe = e.closest('div[data-testid="cellInnerDiv"]')
- let ss = s_mutations
- xpe.style.setProperty('display', 'none')
- s_mutations = ss
- }
- }
- }
- function fineegm() {
- const SEL_R =
- 'main div[data-testid="primaryColumn"] section article ' +
- 'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="reply"] ' +
- 'div>span[data-testid="app-text-transition-container"]>span' // 一つ上
- const SEL_T =
- 'main div[data-testid="primaryColumn"] section article ' +
- 'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="retweet"] ' +
- 'div>span[data-testid="app-text-transition-container"]>span'
- const SEL_L =
- 'main div[data-testid="primaryColumn"] section article ' +
- 'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="like"] ' +
- 'div>span[data-testid="app-text-transition-container"]>span'
- const SEL_B =
- 'main div[data-testid="primaryColumn"] section article ' +
- 'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="bookmark"] ' +
- 'div>span[data-testid="app-text-transition-container"]>span'
- document.
- querySelectorAll(SEL_R + ', ' + SEL_T + ', ' + SEL_L + ', ' + SEL_B).
- forEach(function (e) {
- const SEL_ADD = 'span.us-' + MYNAME
- let ce = e.querySelector('span:not(.us-' + MYNAME + ')')
- let xpe = e.closest('button')
- let n = +xpe.getAttribute('aria-label').split(' ')[0]
- let ls = ''
- if (n) ls = n.toLocaleString('en-US')
- let old = e.querySelector(SEL_ADD)
- let ss // Temp.
- ss = s_mutations
- if (ce && ce.style.display != 'none') { // 0の時も無い
- ce.style.setProperty('display', 'none')
- }
- if (!old) {
- let span = document.createElement('span')
- span.className = 'us-' + MYNAME
- span.textContent = ls
- if (ce) span.style = ce.style
- e.appendChild(span)
- } else if (old.textContent != ls) {
- old.textContent = ls
- if (ce) old.style = ce.style
- }
- s_mutations = ss
- })
- }
- function fineegm_v_d() {
- const SEL =
- 'main div[data-testid="primaryColumn"] section article ' +
- 'div.css-175oi2r.r-1d09ksm.r-1471scf.r-18u37iz.r-1wbh5a2>' +
- 'div>span>div>span[data-testid="app-text-transition-container"]>span>span:not(.us-' + MYNAME + ')'
- // 表示回数は減らない、0の時は無い
- const SEL_2 =
- 'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="retweet"] ' +
- 'div>span[data-testid="app-text-transition-container"]>span' // 一つ上
- const SEL_ADD = 'span.us-' + MYNAME
- let elm = document.querySelector(SEL)
- if (!elm) return
- let elm_2 = document.querySelector(SEL_2)
- if (!elm_2) return
- let pelm = elm.parentNode
- let xpelm_2 = elm_2.closest('div.r-1kbdv8c[aria-label][role="group"]') // fineegm()のさらに上
- let n = +/(\d+)\D+$/.exec(xpelm_2.getAttribute('aria-label'))[1]
- let ls = n.toLocaleString('en-US')
- let old = pelm.querySelector(SEL_ADD)
- let ss // Temp.
- ss = s_mutations
- if (!old) {
- let span = document.createElement('span')
- span.className = 'us-' + MYNAME
- span.textContent = ls
- span.style = elm.style
- elm.style.setProperty('display', 'none')
- pelm.appendChild(span)
- } else if (old.textContent != ls) {
- old.textContent = ls
- old.style = elm.style
- }
- s_mutations = ss
- }
- function fineegm_v_t() {
- const SEL =
- 'main div[data-testid="primaryColumn"] section article ' +
- 'a[href$="/analytics"][aria-label][role="link"]>div>div>span[data-testid="app-text-transition-container"]>' +
- 'span>span:not(.us-' + MYNAME + ')' // 二つ下から消える
- document.querySelectorAll(SEL).forEach(function (e) {
- const SEL_ADD = 'span.us-' + MYNAME
- let pe = e.parentNode
- let xpe = e.closest('a')
- let n = +xpe.getAttribute('aria-label').split(' ')[0]
- let ls = n.toLocaleString('en-US')
- let old = pe.querySelector(SEL_ADD)
- let ss // Temp.
- ss = s_mutations
- if (!old) {
- let span = document.createElement('span')
- span.className = 'us-' + MYNAME
- span.textContent = ls
- span.style = e.style
- e.style.setProperty('display', 'none')
- pe.appendChild(span)
- } else if (old.textContent != ls) {
- old.textContent = ls
- old.style = e.style
- }
- s_mutations = ss
- })
- }
- function fineegm_t() {
- const SEL =
- 'main div[data-testid="primaryColumn"] div[aria-label] ' +
- 'h2[role="heading"]~div.css-146c3p1.r-n6v787.r-1cwl3u0'
- const SEL_2 =
- 'script[data-testid="UserProfileSchema-test"]'
- const SEL_ADD = 'div.us-' + MYNAME
- let elm = document.querySelector(SEL)
- if (!elm) return
- let elm_2 = document.querySelector(SEL_2)
- if (!elm_2) return
- let pelm = elm.parentNode
- let n = JSON.parse(elm_2.textContent).author.interactionStatistic[2].userInteractionCount
- let ls = n.toLocaleString('en-US')
- let old = pelm.querySelector(SEL_ADD)
- let ss = s_mutations // Temp.
- if (!old) {
- let div = document.createElement('div')
- div.className = 'us-' + MYNAME
- div.textContent = ls + ' ' + elm.textContent.split(' ')[1]
- div.style = elm.style
- elm.style.setProperty('display', 'none')
- pelm.appendChild(div)
- } else if (old.textContent.split(' ')[0] != ls) {
- old.textContent = ls + ' ' + elm.textContent.split(' ')[1]
- old.style = elm.style
- }
- s_mutations = ss
- }
- function isHLSURL(url) {
- return (
- /^https?:\/\/video\.twimg\.com\/[^?]+\.m3u8?/i.test(url) ||
- /^https?:\/\/[^.]+\.video\.pscp\.tv\/[^?]+\.m3u8?/i.test(url)
- )
- }
- function isHLSMaster(text) {
- return (
- text &&
- text.includes('#EXT-X-STREAM-INF') &&
- !text.includes('#EXT-X-TARGETDURATION')
- )
- }
- function pickone(reg, text) {
- let matches = []
- const HEAD = text.replace(reg, function (m, p1) {
- matches.push([m, p1])
- return ''
- })
- const L = matches.length
- if (L < 2) return text
- let select = matches[0]
- for (let i = 1; i < L; i++) { // 2番目から
- select =
- (fvq != 2 && +select[1] < +matches[i][1]) ||
- (fvq == 2 && +select[1] > +matches[i][1]) ? matches[i] :
- select
- }
- return (HEAD + '\n' + select[0]).trim().replace(/(\r?\n)+/g, '\n') + '\n'
- }
- function twXHRStateHandler({ target: xhr }) {
- if (xhr.readyState === 4) {
- const rawTEXT = xhr.responseText
- if (isHLSMaster(rawTEXT)) {
- // eslint-disable-next-line regexp/optimal-quantifier-concatenation
- const REG = /#EXT-X-STREAM-INF.*[^-]BANDWIDTH=(\d+).*\r?\n\/.+$/gm
- const modTEXT = pickone(REG, rawTEXT)
- Object.defineProperties(xhr, {
- response: { writable: true },
- responseText: { writable: true }
- })
- xhr.response = xhr.responseText = modTEXT
- }
- }
- }
- function overrideXHROpen() {
- originalXHROPEN = XMLHttpRequest.prototype.open
- XMLHttpRequest.prototype.open = function () {
- if (isHLSURL(arguments[1])) {
- this.addEventListener('readystatechange', twXHRStateHandler)
- }
- return originalXHROPEN.apply(this, arguments)
- }
- console.log(MYNAME + ': XMLHttpRequest.open overriden.')
- }
- function repldatetime() {
- const SEL =
- 'main div[data-testid="primaryColumn"] section article time[datetime*=":"]'
- const SEL_2 =
- 'div[aria-labelledby="modal-header"] div[data-testid^="User-Name"] time[datetime]'
- const SEL_3 =
- 'div[aria-labelledby="modal-header"] div[aria-label] time[datetime]'
- const SEL_4 =
- 'main section[aria-labelledby="detail-header"] article div[data-testid^="User-Name"] time[datetime]'
- const SEL_5 =
- 'main section div[data-testid="conversation"] div[aria-label] time[datetime]' // DM list
- document.
- querySelectorAll(SEL + ', ' + SEL_2 + ', ' + SEL_3 + ', ' + SEL_4 + ', ' + SEL_5).
- forEach(function (e) {
- const SEL_ADD = 'span.us-' + MYNAME
- let d = e.getAttribute('datetime')
- let df = datef(new Date(d), fmt)
- let pe = e.parentNode
- let old = pe.querySelectorAll(SEL_ADD)
- let ss // Temp.
- ss = s_mutations
- if (!old.length) {
- let span = document.createElement('span')
- span.className = 'us-' + MYNAME
- span.setAttribute('datetime', d)
- span.setAttribute('local-datetime', df)
- span.textContent = df
- span.style = e.style
- e.style.setProperty('display', 'none')
- pe.appendChild(span)
- } else if (old[0].getAttribute('local-datetime') != df) { // TZ change
- old[0].setAttribute('local-datetime', df)
- old[0].textContent = df
- old[0].style = e.style
- }
- s_mutations = ss
- })
- }
- function loop() {
- setTimeout(() => {
- if (s_mutations) {
- s_mutations = null // 初期値がtrue、変更もしない
- if (bbr) bbreturn()
- if (origi) origimg()
- if (wtl) widetl()
- if (ecmode) chgbgc()
- if (hpp) hidepromo()
- if (hwtf) hidewtf()
- if (hdmd) hidedmd()
- if (hgv) hidegv()
- if (fmt) repldatetime()
- if (fegm) {
- fineegm()
- fineegm_v_d()
- fineegm_v_t()
- fineegm_t()
- time_r = Date.now()
- }
- } else if (fegm == 1 && Date.now() - time_r > 4000) {
- fineegm()
- fineegm_v_d()
- fineegm_v_t()
- fineegm_t()
- time_r = Date.now()
- }
- loop()
- }, intl)
- }
- bbr = BBR
- origi = ORIGI
- wtl = WTL
- ecmode = ECMODE
- hpp = HPP
- hwtf = HWTF
- hdmd = HDMD
- hgv = HGV
- fegm = FEGM
- fvq = FVQ
- fmt = FMT
- intl = INTL
- if (!NOGUI) initgui()
- if (fvq) overrideXHROpen()
- observer.observe(document, { childList: true, subtree: true })
- loop()
- })() /* END */