Greasy Fork镜像 还支持 简体中文。

Twitter Labs

Enable hidden Twitter PWA feature flags (Chromium only!)

  1. // ==UserScript==
  2. // @name Twitter Labs
  3. // @description Enable hidden Twitter PWA feature flags (Chromium only!)
  4. // @author Darek
  5. // @namespace
  6. // @version 1.0
  7. // @date 2021-05-2
  8.  
  9. // @icon https://script.sominemo.com/twitter_labs/icon.png
  10. // @icon64 https://script.sominemo.com/twitter_labs/icon64.png
  11.  
  12. // @run-at document-start
  13. // @match https://twitter.com/*
  14. // @match https://mobile.twitter.com/*
  15.  
  16. // @grant GM_registerMenuCommand
  17. // @grant GM_unregisterMenuCommand
  18. // @grant unsafeWindow
  19. // ==/UserScript==
  20.  
  21. (function() {
  22. 'use strict';
  23. Object.defineProperty(
  24. unsafeWindow,
  25. "__INITIAL_STATE__",
  26. {
  27. set(s) {
  28. const curMode = unsafeWindow.localStorage.getItem("twitter-labs-replace-mode") || "0"
  29.  
  30. const rewrites = {
  31. conversation_controls_limited_replies_creation_enabled: true,
  32. responsive_web_composer_card_previews_enabled: true,
  33. responsive_web_conversation_tree_enabled: true,
  34. responsive_web_conversation_tree_toggle: true,
  35. responsive_web_dm_quick_access_enabled: true,
  36. responsive_web_hide_media_previews_enabled: true,
  37. responsive_web_dm_quick_access_with_close_enabled: true,
  38. responsive_web_dm_quick_access_no_empty_drawer_enabled: true,
  39. responsive_web_elevated_qt_combined_retweets_dynamic_label: true,
  40. dm_reactions_config_active_reactions: [
  41. "😂:funny",
  42. "😲:surprised",
  43. "😢:sad",
  44. "❤:like",
  45. "🔥:excited",
  46. "👍:agree",
  47. "👎:disagree",
  48. "😠:angry",
  49. ],
  50. dm_reactions_config_inactive_reactions: [],
  51. responsive_web_feature_switch_dash_enabled: true,
  52. responsive_web_hw_cards_in_dms_enabled: true,
  53. responsive_web_inline_reply_enabled: true,
  54. responsive_web_inline_reply_with_fab_enabled: true,
  55. responsive_web_instream_video_enabled: true,
  56. responsive_web_live_video_parity_periscope_auth_enabled: true,
  57. responsive_web_moment_maker_enabled: true,
  58. responsive_web_ntab_verified_mentions_vit_internal_dogfood: true,
  59. responsive_web_second_degree_replies_nudge_get_enabled: true,
  60. responsive_web_second_degree_replies_nudge_force_enabled: true,
  61. responsive_web_second_degree_replies_nudge_show_enabled: true,
  62. responsive_web_tweet_detail_to_tweet_enabled: true,
  63. responsive_web_zipkin_api_requests_enabled: true,
  64. search_channels_discovery_page_enabled: true,
  65. search_channels_description_enabled: true,
  66. topic_landing_page_enabled: true,
  67. topics_descriptions_enabled: true,
  68. topics_dismiss_control_enabled: true,
  69. topics_new_mgmt_enabled: true,
  70. unified_cards_cta_color_blue_cta: true,
  71. }
  72.  
  73. if (curMode === "1") {
  74. Object.entries(s.featureSwitch.config).forEach(([key, {value}]) => {
  75. if (value === false) s.featureSwitch.config[key] = {value: true}
  76. })
  77. } else {
  78. Object.entries(rewrites).forEach(([key, value]) => {s.featureSwitch.config[key] = {value}})
  79. }
  80.  
  81. unsafeWindow.fakeInit = s
  82. },
  83. get() {return unsafeWindow.fakeInit},
  84. configurable: true
  85. })
  86.  
  87.  
  88. let curCommand = null
  89. let sw
  90. function updatePalette() {
  91. const curMode = unsafeWindow.localStorage.getItem("twitter-labs-replace-mode") || "0"
  92. if (curCommand !== null) GM_unregisterMenuCommand(curCommand)
  93. if (curMode === "0") curCommand = GM_registerMenuCommand("Use false-to-true mode", sw)
  94. if (curMode === "1") curCommand = GM_registerMenuCommand("Use manual rewrites mode", sw)
  95. }
  96. sw = () => {
  97. const curMode = unsafeWindow.localStorage.getItem("twitter-labs-replace-mode") || "0"
  98. if (curMode === "0") {
  99. unsafeWindow.localStorage.setItem("twitter-labs-replace-mode", "1")
  100. updatePalette()
  101. unsafeWindow.location.reload()
  102. }
  103. else if (curMode === "1") {
  104. unsafeWindow.localStorage.setItem("twitter-labs-replace-mode", "0")
  105. updatePalette()
  106. unsafeWindow.location.reload()
  107. }
  108. }
  109. updatePalette()
  110. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址