Showing preview only (581K chars total). Download the full file or copy to clipboard to get everything.
Repository: jiang111/chrome-plugin-recommand
Branch: master
Commit: b65b1914f3fb
Files: 4
Total size: 509.5 KB
Directory structure:
gitextract_ia0rapfg/
├── README.md
└── js/
├── GitHub-Material-Design.js
├── Yet-Another-Weibo-Filter.js
└── Youtube Auto-Subtitle-Downloader.js
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
# 程序员必备的那些Chrome插件
### 1.CL1024
由于种种原因....「取消viidii跳转」「种子链接转化磁链接」「去帖子广告」「阅读帖子按楼数快速跳转楼层」「帖子内去掉1024的回复」「今日帖子高亮」「超大图片根据屏幕缩放」 <br />
 <br />
https://chrome.google.com/webstore/detail/cl1024/efdllnloheadnjjahfmdohomdphlgcjm
### 2.Click&Clean
监控浏览器的一些状态,很方便的清理缓存,历史记录等等. <br />
 <br />
https://chrome.google.com/webstore/detail/clickclean-app/pdabfienifkbhoihedcgeogidfmibmhp
### 3.DHC REST Client
可模拟网络请求的一个chrome应用,反正我觉得比postman漂亮多了。 <br />
 <br />
https://chrome.google.com/webstore/detail/dhc-rest-client/aejoelaoggembcahagimdiliamlcdmfm
### 4.GitHub Hovercard
当鼠标放到github的某个链接是弹出改项目或者作者的信息. <br />
 <br />
https://chrome.google.com/webstore/detail/github-hovercard/mmoahbbnojgkclgceahhakhnccimnplk
### 5.Google学术搜索按钮
这个不多说 <br />
 <br />
https://chrome.google.com/webstore/detail/google-scholar-button/ldipcbpaocekfooobnbcddclnhejkcpn
### 6.Imagus
当鼠标放到图片或者视频上时,自动展示大图. <br />
 <br />
https://chrome.google.com/webstore/detail/imagus/immpkjjlgappgfkkfieppnmlhakdmaab
### 7.JSON-handle
很方便的解析json <br />
 <br />
https://chrome.google.com/webstore/detail/json-handle/iahnhfdhidomcpggpaimmmahffihkfnj
### 8.Octotree
这个每个程序员必备.在github项目页左侧展示该项目的树结构 <br />
 <br />
https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc
### 9.smartUp手势
一个更好的手势类扩展。功能包括:鼠标手势,简易拖曳,超级拖曳,摇杆手势和滚轮手势。 <br />
https://chrome.google.com/webstore/detail/smartup-gestures/bgjfekefhjemchdeigphccilhncnjldn
### 10.Tampermonkey
类似firefox上的油猴子 <br />
推荐几个常用的.
>* 让你的github更 material design https://github.com/jiang111/chrome-plugin-recommand/blob/master/js/GitHub-Material-Design.js
>* 重新整合微博页面,屏蔽那些天天秀恩爱又不好意思取关的那些人 https://github.com/jiang111/chrome-plugin-recommand/blob/master/js/Yet-Another-Weibo-Filter.js
>* 方便下载youtube的字幕,有下载字幕肯定得有下载视频的 http://www.clipconverter.cc/, https://github.com/jiang111/chrome-plugin-recommand/blob/master/js/Youtube%20Auto-Subtitle-Downloader.js
https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
### 11. Vysor (Beta) 新版本免费版分辨率明显差很多,不推荐使用
android程序员必备,连接并显示安卓屏幕的内容 <br />
 <br />
https://chrome.google.com/webstore/detail/vysor-beta/gidgenkbbabolejbgbpnhbimgjbffefm
### 12.划词翻译
支持谷歌、百度、有道、必应四大翻译和朗读引擎,可以方便的查看、复制和朗读不同引擎的翻译结果。 <br />
https://chrome.google.com/webstore/detail/%E5%88%92%E8%AF%8D%E7%BF%BB%E8%AF%91/ikhdkkncnoglghljlkmcimlnlhkeamad
### 13.Holmes
更方便的书签管理器 <br />
https://chrome.google.com/webstore/detail/holmes/gokficnebmomagijbakglkcmhdbchbhn
### 14.Vimium
The Hacker's Browser. Vimium provides keyboard shortcuts for navigation and control in the spirit of Vim. <br />
https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb
### 15. FireBug
IT前端民工必备 <br />
https://chrome.google.com/webstore/detail/firebug-lite-for-google-c/bmagokdooijbeehmkpknfglimnifench
### 16.Window Resizer
可以快速调整浏览器窗口的尺寸,用于观察网站页面宽度 <br />
https://chrome.google.com/webstore/detail/window-resizer/kkelicaakdanhinjdeammmilcgefonfh
### 17.PageMonitor
页面监控,如果内容有更新就通知你,你抢电子产品的时候肯定需要 <br />
https://chrome.google.com/webstore/detail/visualping/pemhgklkefakciniebenbfclihhmmfcd
### 18.EyeDroper
浏览器窗口内取色 <br />
https://chrome.google.com/webstore/detail/eye-dropper/hmdcmlfkchdmnmnmheododdhjedfccka
### 19.sourcegraph-chrome-extens
更好的查看github的代码,直接从源代码的引用跳至定义,更好的搜索效果。源代码搬运工福利来了!
https://chrome.google.com/webstore/detail/sourcegraph-chrome-extens/dgjhfomjieaadpoljlnidmbgkdffpack
### 20.Hacker Vision
快速实现网页的黑白切换
https://chrome.google.com/webstore/detail/hacker-vision/fommidcneendjonelhhhkmoekeicedej
### 21.download-any-for-github
可以下载GitHub指定文件夹和文件

https://github.com/onlylemi/download-any-for-github
### 22.WEB前端助手(FeHelper)
FeHelper,Chrome浏览器插件,包含一些前端实用的工具,推荐安装!


https://www.baidufe.com/fehelper
### 23.掘金
https://chrome.google.com/webstore/detail/%E6%8E%98%E9%87%91/lecdifefmmfjnjjinhaennhdlmcaeeeb
### 24.Wappalyzer
展示你访问的网页由什么技术栈所构建. <br />

https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg
### 25.Codota
Codota是另一款源代码搜索利器,索引了数百万公开项目的Java源代码,并能秒搜自己打的源代码,最重要的是它还提供了Chrome插件,操作更加简便!搞Java的,特别是Android的请先码住 <br />

http://www.codota.com/
### 26.GitHub Plus
GitHub Plus 这个 Chrome 扩展就可以帮你轻松地下载项目中的任意单个文件了。可对比###8Octotree,个人比较喜欢Octotree
 <br />
https://chrome.google.com/webstore/detail/github-plus/anlikcnbgdeidpacdbdljnabclhahhmd
### 27.vue-devtools
Chrome扩展调试Vue.js应用

https://github.com/vuejs/vue-devtools
### 28.falcon
Chrome extension for full text history search!

https://github.com/lengstrom/falcon
### 29.Chrome 新插件|帮助中国开发者更便捷地浏览Google 开发者资源网站

https://github.com/chenzhuo914/google-cn-devsites-extension
### 30.xpath 插件

https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?utm_source=chrome-ntp-icon
### 31.User-Agent Switcher for Chrome

https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg
### 32.BaiduExporter
可以方便的把百度网盘的下载地址导出到 aria2/aria2-rpc,支持 YAAW。
https://github.com/acgotaku/BaiduExporter
================================================
FILE: js/GitHub-Material-Design.js
================================================
// ==UserScript==
// @name GitHub Material Design
// @namespace http://userstyles.org
// @description GitHub with Material Design styling
// @author dvdandroid
// @homepage https://userstyles.org/styles/123952
// @include http://github.com/*
// @include https://github.com/*
// @include http://*.github.com/*
// @include https://*.github.com/*
// @run-at document-start
// @version 0.20160331135937
// ==/UserScript==
(function() {var css = [
"/*",
" (c) 2012-2016 GitHub",
"",
" When using the GitHub logos, be sure to follow the GitHub logo guidelines (https://github.com/logos)",
"",
" Code License: MIT (http://choosealicense.com/licenses/mit/)",
" Applies to all other files",
"*/",
"/*",
" github-notification-bouncing",
" https://github.com/muchweb/github-notification-bouncing",
"*/",
"",
"@keyframes bounce {",
" to {",
" transform: scale(1.4);",
" opacity: 1;",
" }",
"}",
"@keyframes shrink {",
" 0%, 50% {",
" width: 14px;",
" height: 14px;",
" box-shadow: 0 0 8px transparent;",
" }",
"}",
".mail-status.unread {",
" animation: bounce .5s ease-out infinite alternate, shrink 60s linear;",
" width: 24px;",
" height: 24px;",
" opacity: 0.9;",
" transform: scale(1);",
" box-shadow: 0 0 8px #4183C4;",
"}",
"/*",
" GitHub issue link inline titles",
" https://userstyles.org/styles/106817/github-issue-link-inline-titles",
"*/",
"",
".issue-link[title]:after {",
" content: attr(title);",
" font-size: 0.8em;",
" margin-left: 0.4em;",
" margin-right: 0.6em;",
" padding: 0.2em 0.4em;",
" border: 1px solid #ccc;",
" background: #eee;",
" color: #777;",
" position: relative;",
" top: -1px;",
"}",
".header {",
" padding-top: 15px;",
" padding-bottom: 15px;",
"}",
".header,",
".blankslate,",
".header-logged-in,",
".org-header,",
".simple-box,",
".menu,",
".capped-card,",
".file-header,",
".file,",
".network-graph-container,",
".js-code-editor,",
".container-preview,",
".show-code,",
".auth-form-body,",
".repohead.experiment-repo-nav,",
".file-wrap,",
".branch-infobar,",
".commit-tease,",
".stats-switcher-viewport,",
".table-list,",
".table-list-header,",
".new-user-avatar-cta,",
".comment,",
".previewable-edit,",
".timeline-comment,",
".js-comment,",
".js-task-list-container,",
".owner-comment,",
".current-user,",
".activity-listing.contribution-activity.js-contribution-activity,",
".boxed-group {",
" box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2) !important;",
"}",
".header-nav-link {",
" margin-top: 5px;",
"}",
".header-logo-invertocat {",
" margin-top: 3px;",
"}",
".site-search,",
"#your-repos-filter,",
".input-block,",
".filter_input,",
".short,",
".js-repository-name,",
".js-filterable-field,",
".select,",
".subnav-search-input,",
".input-contrast,",
".auto-search-input,",
".js-autosearch-field,",
".js-member-filter-field,",
".filename,",
".js-gist-filename,",
".js-blob-filename,",
"#user_profile_name,",
"#user_profile_blog,",
"#user_profile_company,",
"#user_profile_location,",
"#user_old_password,",
"#user_new_password,",
"#user_confirm_new_password,",
"#q {",
" font-size: 14px;",
" border-color: transparent !important;",
" box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 1px 1px rgba(0, 0, 0, .12) !important;",
" -webkit-transition: box-shadow .2s !important;",
" transition: box-shadow .2s !important;",
" border-radius: 2px !important;",
" box-sizing: border-box !important;",
" background: white;",
"}",
"#rename_field {",
" line-height: 8px !important;",
"}",
".form-control {",
" padding: 5px 8px;",
" margin: 1px;",
"}",
".form-control > input {",
" border-color: transparent!important;",
" line-height: 40px!important;",
" height: 40px!important;",
" box-shadow: 0 1px 1.5px rgba(0, 0, 0, .06), 0 1px 1px rgba(0, 0, 0, .12)!important;",
" -webkit-transition: box-shadow .2s!important;",
" transition: box-shadow .2s!important;",
" border-radius: 2px!important;",
" box-sizing: border-box!important;",
" background: #fff!important;",
" padding: 5px;",
"}",
".form-control,",
".form-select {",
" border: 0;",
" height: 40px!important;",
"}",
".header-search-wrapper {",
" display: inline;",
"}",
".form-control.focus,",
".form-control:focus,",
".form-select.focus,",
".form-select:focus {",
" border: 0;",
" outline: none;",
" box-shadow: none;",
"}",
".form-control {",
" padding: 0;",
" margin: 0;",
"}",
".site-search .chromeless-input {",
" width: 260px;",
" height: 30px !important;",
" min-height: 0;",
"}",
".site-search .scope-badge {",
" margin-left: 1px;",
" padding: 0 5px;",
" line-height: 26px;",
" vertical-align: initial;",
"}",
".subnav-search-input,",
".input-contrast,",
".auto-search-input,",
".js-repo-filter-field,",
".js-autosearch-field,",
".site-search form {",
" width: 360px;",
" padding-right: 2px;",
" margin-right: 0;",
"}",
".form-control.focus,",
".form-control:focus,",
"input[type=\"text\"].focus,",
"input[type=\"text\"]:focus,",
".focused .drag-and-drop,",
"input[type=\"password\"].focus,",
"input[type=\"password\"]:focus,",
"input[type=\"email\"].focus,",
"input[type=\"email\"]:focus,",
"input[type=\"number\"].focus,",
"input[type=\"number\"]:focus,",
"input[type=\"tel\"].focus,",
"input[type=\"tel\"]:focus,",
"input[type=\"url\"].focus,",
"input[type=\"url\"]:focus,",
"select.focus,",
"select:focus,",
"textarea.focus,",
"textarea:focus {",
" border-color: #fff;",
" box-shadow: none;",
"}",
".btn,",
".subnav-item,",
".state,",
".btn-sm {",
" box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 1px 1px rgba(0, 0, 0, .12) !important;",
" text-decoration: none;",
" text-align: center;",
" letter-spacing: 0;",
" transition: .2s ease-in;",
" cursor: pointer;",
" display: inline-block;",
"}",
"input.btn {",
" padding: 6px 8px;",
"}",
".btn-primary,",
".btn-primary:hover {",
" background-image: linear-gradient(#66BB6A, #4CAF50);",
"}",
".profilecols .filter-bar {",
" padding: 15px 8px 15px;",
"}",
".tabnav {",
" padding-bottom: 0;",
" margin-bottom: 0;",
"}",
"body.page-profile .tab-content {",
" padding-bottom: 15px;",
"}",
".repo-list-item {",
" padding: 30px 20px 30px 20px;",
"}",
".activity-tab {",
" padding-top: 15px;",
"}",
".pagehead {",
" padding-bottom: 0;",
"}",
".tabnav-tab,",
".pagehead-tabs-item,",
".reponav-item,",
".pagehead-nav-item {",
" padding: 15px 12px;",
" height: 54px;",
" text-transform: uppercase;",
"}",
".tabnav-tabs,",
".pagehead-tabs {",
" margin-bottom: 0;",
"}",
".tabnav-tab.selected,",
".pagehead-tabs-item.selected,",
"a.repo-filter.text-small.text-muted.js-repo-filter-tab.filter-selected,",
".reponav-item.selected,",
".pagehead-nav-item.selected {",
" background-color: #f0f0f0 !important;",
" border-top: 0;",
" border-left: 0;",
" border-right: 0;",
" border-bottom: 3px solid #4285f4;",
" color: #4285f4;",
" margin: 2px 4px 0;",
"}",
".activity-listing.contribution-activity.js-contribution-activity {",
" padding: 15px;",
" border-radius: 4px;",
"}",
"div.select-menu.right.js-menu-container.js-select-menu.js-period-container {",
" padding-top: 25px;",
"}",
".state {",
" text-transform: uppercase;",
" padding: 3px;",
"}",
".state-closed,",
".bar-section-negative {",
" background-color: #E53935 !important;",
"}",
".state-merged,",
".bar-section-alt {",
" background-color: #7B1FA2 !important;",
"}",
".state-open,",
".bar-section-positive {",
" background-color: #43A047 !important;",
"}"
].join("\n");
if (typeof GM_addStyle != "undefined") {
GM_addStyle(css);
} else if (typeof PRO_addStyle != "undefined") {
PRO_addStyle(css);
} else if (typeof addStyle != "undefined") {
addStyle(css);
} else {
var node = document.createElement("style");
node.type = "text/css";
node.appendChild(document.createTextNode(css));
var heads = document.getElementsByTagName("head");
if (heads.length > 0) {
heads[0].appendChild(node);
} else {
// no head yet, stick it whereever
document.documentElement.appendChild(node);
}
}
})();
================================================
FILE: js/Yet-Another-Weibo-Filter.js
================================================
// ==UserScript==
// @name Yet Another Weibo Filter
// @name:zh-CN Yet Another Weibo Filter 看真正想看的微博
// @name:zh-HK Yet Another Weibo Filter 看真正想看的微博
// @name:zh-TW Yet Another Weibo Filter 看真正想看的微博
// @name:en Yet Another Weibo Filter
// @namespace https://github.com/tiansh
// @description 新浪微博根据关键词、作者、话题、来源等过滤微博;修改版面。 新浪微博根據關鍵字、作者、話題、來源等篩選微博;修改版面。 filter Sina Weibo by keywords, authors, topics, sources, etc.; modify layout
// @description:zh-CN 新浪微博根据关键词、作者、话题、来源等过滤微博;修改版面。
// @description:zh-HK 新浪微博根據關鍵字、作者、話題、來源等篩選微博;修改版面。
// @description:zh-TW 新浪微博根據關鍵字、作者、話題、來源等篩選微博;修改版面。
// @description:en filter Sina Weibo by keywords, authors, topics, sources, etc.; modify layout
// @include http://www.weibo.com/*
// @include http://weibo.com/*
// @include http://d.weibo.com/*
// @include http://s.weibo.com/*
// @exclude http://weibo.com/a/bind/*
// @exclude http://weibo.com/nguide/*
// @exclude http://weibo.com/
// @version 3.7.380
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAABdUExURUxpcemNSemNSemNSemNSemNSemNSemNSemNSemNSdktOumNSemNSemNSemNSemNSemNSdktOtktOtktOtktOtktOtktOtktOtktOtktOtktOtktOtktOumNSdktOsZoAhUAAAAddFJOUwAgkIAQ4MBAYPBA0KAwcLBQ0BBgIHDggDCw8JDAT2c6pQAAAiFJREFUWMPNl9lywyAMRcMOMQa7SdMV//9nNk4nqRcJhOvOVI9+OJbE5UocDn8VrBNRp3so7YWRGzBWJSAa3lZyfMLCVbF4ykVjye1JhVB2j4S+UR0FpBMhNCuDEilcKIIcjZSi3KO0W6cKUghUUHL5nktHJqW8EGz6fyTmr7dW82DGK8+MEb7ZSALYNiIkU20uMoDu4tq9jKrZYnlSACS/zYSBvnfb/HztM05uI611FjfOmNb9XgMIqSk01phgDTTR2gqBm/j4rfJdqU+K2lHHWf7ssJTM+ozFvMSG1iVV9FbmKAfXEjxDUC6KQTyDZ7KWNaAZyRLabUiOqAj3BB8lLZoSWJvA56LEUuoqty2BqZLDShJodQzZpdCba8ytH53HrXUu77K9RqyrvNaV5ptFQGRy/X78CQKpQday6zEM0+jfXl5XpAjXNmuSXoDGuHycM9tOB/Mh0DVecCcTiHBh0NA/Yfu3Rk4BAS1ICgIZEmjokS3V1YKGZ+QeV4MuTzuBpin5X4F6sEdNPWh41CbB4+/IoCP0b14nSBwUYB9R1aAWfgJpEoiBq4dbWCcBNPm5QEa7IJ3az9YwWazD0mpRzvt64Zsu6HE5XlDQ2/wREbW36EAeW0e5IsWXdMyBzhWgkAH1NU9ydqD5UWlDuKlrY2UzudsMqC+OYL5wBAT0eSql9ChOyxxoTOpUqm4Upb6ra8jE5bXiuTNk47QXiE76AnacIlJf1W5ZAAAAAElFTkSuQmCC
// @updateURL https://tiansh.github.io/yawf/Yet_Another_Weibo_Filter.meta.js
// @downloadURL https://tiansh.github.io/yawf/Yet_Another_Weibo_Filter.user.js
// @homepageURL https://tiansh.github.io/yawf/
// @supportURL https://github.com/tiansh/yawf/issues
// @author 田生 http://weibo.com/tsh90
// @copyright 田生; The MIT License
// @license The MIT License (MIT); http://opensource.org/licenses/MIT
// @compatible firefox 推荐
// @compatible opera 支持
// @compatible chrome 支持
// @compatible safari 基本支持
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @grant GM_addStyle
// @grant GM_registerMenuCommand
// @grant GM_info
// @grant unsafeWindow
// @connect weibo.com
// @connect www.weibo.com
// @connect s.weibo.com
// @connect video.weibo.com
// @connect t.cn
// @connect www.miaopai.com
// @connect ent.v.sina.cn
// @run-at document-start
// ==/UserScript==
// 字体
var fonts = {
'iconfont': '@font-face { font-family: "yawf-iconfont"; font-style: normal; font-weight: normal; src: url("data:image/woff;base64,d09GRk9UVE8AAAPIAAoAAAAABbQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAANUAAADot8EQFkZGVE0AAAHMAAAAGgAAABxtAw0mT1MvMgAAAegAAABJAAAAYFmdYldjbWFwAAACNAAAADgAAAFCAA0DAGhlYWQAAAJsAAAAMAAAADYD5a1oaGhlYQAAApwAAAAdAAAAJAaAA4BobXR4AAACvAAAAAgAAAAICAAAd21heHAAAALEAAAABgAAAAYAAlAAbmFtZQAAAswAAADkAAAB1Hh5OPRwb3N0AAADsAAAABYAAAAg/4YAM3icVY2xagJBFADfO+9O1GNNJBcLFwWxPLUXAumvDekPQUmjTYjYCNbP0sLO+Ak2NsLWfkN+ZN/ebiTaBG6qqWYQfB8QUSyzxaT/MZ7PJvPZJ6AHCC/c8liWuOlvImxXofL1PiT6l6isa7aZt00SSFjVJcCDhPWjBCHhpwHePSGgVQgXLzdG4CF230hxqlApc1El9ZwP+HgdhMqtYk7NxaVlkVdMEn+T3bkeuY7dE3HH7rgX8PD3NT7oc6gzfXJT0pk9kT0HIt8+UbzYm4RCiqp/hZJWXgAAAHicY2BgYGQAgjO2i86D6AtJW7VhNABKVQagAAB4nGNgZmFg/MLAysDBNJPpDAMDQz+EZnzNYMzIycDAxMAGJKGAkQEJBKS5pjA4MEQyRDLr/NdhiGGawdCMUAPkKQAhIwBYTwumAAAAeJxjYGBgZoBgGQZGBhCwAfIYwXwWBgUgzQKEIH7k//8Q8v8KqEoGRjYGGJP6gGYGUxcAAJgrBwx4nGNgZGBgAOK+F//94vltvjJwszCAwIWkrdpwuvx/LXMX0wwgl4OBCSQKAFMCC7x4nGNgZGBgmvG/liGGhQEEmLsYGBlQARMAU6MDCAAAAAQAAAAEAAB3AABQAAACAAB4nJWPwWoCMRCGv+gqihV6KB7EQ85ClmTxJL12n0C8i+zKXjawCuKLeOn79EH6BH2ETnSglFJoA0m+mf+fzAR44IohLcOUhXKPEc/KfZa8KmfieVceMDEj5SFT48VpsrFk5reqxD0epfrOfTa8KGfieVMeMONDecjcPHFhx5kaR8OeSCuczhNcdufaNfvY1rGV8If+JZWaSnfHgQpLQY6Xey379yZ3PbASLYjfSZ2/xZTydBm7Q2WL3Nu1/TaOxGHlgneFD+L9+y+2MlzHUXxJT63TmGyr7tjE1obc/+O1T5RwTOJ4nGNgZgCD/80MRkCKkQENAAAoVQG5AAA=") format("woff"); }',
};
// 文本常量
// 请以简体中文为原文,参考这些资料翻译
// http://zh.wikipedia.org/wiki/Template:CGroup/IT
// http://www.microsoft.com/Language/zh-cn/Search.aspx
// 翻译时优先考虑微博网页中的翻译,网页中未翻译或表意不明时用括号加注。如果该内容不对应微博网页中的元素,可以自由发挥
// 符号“|”分割多个输入框的响应区域,“||”会同时换行,“{{<name>}}”可以嵌入一个输入框;翻译应保证输入框一一对应
var text = {
// 基本按钮
'okButtonTitle': { 'zh-cn': '确定', 'zh-hk': '確定', 'zh-tw': '確定', 'en': 'Confirm' },
'cancelButtonTitle': { 'zh-cn': '取消', 'zh-hk': '取消', 'zh-tw': '取消', 'en': 'Cancel' },
'closeButtonTitle': { 'zh-cn': '关闭', 'zh-hk': '關閉', 'zh-tw': '關閉', 'en': 'Close' },
'configStringsAdd': { 'zh-cn': '添加', 'zh-hk': '新增', 'zh-tw': '新增', 'en': 'Add' },
'configUsersAdd': { 'zh-cn': '添加', 'zh-hk': '新增', 'zh-tw': '新增', 'en': 'Add' },
'disabledKey': { 'zh-cn': '(已禁用)', 'zh-hk': '(已停用)', 'zh-tw': '(已停用)', 'en': '(Disabled)' },
'indent': { 'zh-cn': ' ', 'zh-hk': ' ', 'zh-tw': ' ', 'en': ' ' },
// 时间日期
'timeToday': { 'zh-cn': '今天', 'zh-hk': '今天', 'zh-tw': '今天', 'en': 'Today' /* as is */ },
'timeSecondBefore': { 'zh-cn': '秒前', 'zh-hk': '秒前', 'zh-tw': '秒前', 'en': ' secs ago' /* as is */ },
'timeMinuteBefore': { 'zh-cn': '分钟前', 'zh-hk': '分鐘前', 'zh-tw': '分鐘前', 'en': ' mins ago' /* as is */ },
'timeMonthDay': { 'zh-cn': '%s月%s日 %s:%s', 'zh-hk': '%s月%s日 %s:%s', 'zh-tw': '%s月%s日 %s:%s', 'en': '%s-%s %s:%s' /* as is */ },
'timeReadHere': { 'zh-cn': '你看到这里', 'zh-hk': '你看到這裡', 'zh-tw': '你看到這裡', 'en': ' you see here' /* as is */ },
// 设置框
'filter': { 'zh-cn': '过滤器', 'zh-hk': '篩選器', 'zh-tw': '篩選器', 'en': 'Filter' },
'filterMenuItem': { 'zh-cn': '过滤器设置', 'zh-hk': '篩選器設定', 'zh-tw': '篩選器設定', 'en': 'Filter Settings' },
'configDialogTitle': { 'zh-cn': '过滤器设置 - Yet Another Weibo Filter', 'zh-hk': '篩選器設定 - Yet Another Weibo Filter', 'zh-tw': '篩選器設定 - Yet Another Weibo Filter', 'en': 'Filter Settings - Yet Another Weibo Filter' },
'whitelistFilterDesc': { 'zh-cn': '总是显示{{{typed}}}', 'zh-hk': '總是顯示{{{typed}}}', 'zh-tw': '總是顯示{{{typed}}}', 'en': 'Always show {{{typed}}}' },
'blacklistFilterDesc': { 'zh-cn': '隐藏{{{typed}}}', 'zh-hk': '隱藏{{{typed}}}', 'zh-tw': '隱藏{{{typed}}}', 'en': 'Hide {{{typed}}}' },
'foldlistFilterDesc': { 'zh-cn': '折叠{{{typed}}}', 'zh-hk': '折疊{{{typed}}}', 'zh-tw': '折疊{{{typed}}}', 'en': 'Fold {{{typed}}}' },
'whitelistActionDesc': { 'zh-cn': '显示', 'zh-hk': '顯示', 'zh-tw': '顯示', 'en': 'Show' },
'blacklistActionDesc': { 'zh-cn': '隐藏', 'zh-hk': '隱藏', 'zh-tw': '隱藏', 'en': 'Hide' },
'foldlistActionDesc': { 'zh-cn': '折叠', 'zh-hk': '折疊', 'zh-tw': '折疊', 'en': 'Fold' },
// 右键菜单
'contextMenuCreateLabel': { 'zh-cn': '创建过滤器', 'zh-hk': '創建篩選器', 'zh-tw': '創建篩選器', 'en': 'Create Filter' },
// 微博过滤
'baseFilterGroupTitle': { 'zh-cn': '微博过滤', 'zh-hk': '微博篩選', 'zh-tw': '微博篩選', 'en': 'Weibo Filter' },
// 脚本
'scriptToolsTitle': { 'zh-cn': '脚本', 'zh-hk': '腳本', 'zh-tw': '腳本', 'en': 'Script' },
'useFastCreator': { 'zh-cn': '使用拖放快速创建过滤器{{<i>}}', 'zh-hk': '使用拖放快速創建篩選器{{<i>}}', 'zh-tw': '使用拖放快速創建篩選器{{<i>}}', 'en': 'Use drag and drop to create filters{{<i>}}' },
'useFastCreatorDesc': {
'zh-cn': '您可以使用鼠标拖拽微博中的文字、帐号、话题、来源等,网页右上角会显示一个黄色的区域,拖拽到其上释放可创建过滤器。',
},
'useContextMenuCreator': { 'zh-cn': '使用右键菜单快速创建过滤器{{<i>}}', 'zh-hk': '使用右鍵功能表快速創建篩選器{{<i>}}', 'zh-tw': '使用右鍵功能表快速創建篩選器{{<i>}}', 'en': 'Use right-click menu to create filters{{<i>}}' },
'useContextMenuCreatorDesc': {
'zh-cn': '在微博上点右键,您可以在浏览器原有的菜单中找到“创建过滤器”的菜单,点选即可快速创建过滤器。',
},
'refilterAfterRuleEdited': { 'zh-cn': '修改规则后自动重新过滤微博{{<i>}}', 'zh-hk': '修改規則後自動重新過濾微博{{<i>}}', 'zh-tw': '修改規則後自動重新過濾微博{{<i>}}', 'en': 'Refilter Weibo after rule changed {{<i>}}' },
'refilterAfterRuleEditedDesc': {
'zh-cn': '开启该选项后,当您修改过滤规则时,脚本会重新对现有的微博过滤。但已被隐藏的微博,因为已经被移除,在刷新前不会再被显示出来。'
},
'fastHideButton': { 'zh-cn': '在每条微博右上角添加隐藏微博按钮{{<i>}}', 'zh-hk': '在每條微博右上角添加隱藏微博按鈕{{<i>}}', 'zh-tw': '在每條微博右上角添加隱藏微博按鈕{{<i>}}', 'en': 'Add "Hide" buttons on right top of Weibo {{<i>}}' },
'fastHideButtonDesc': {
'zh-cn': '在每条微博右上角添加一个隐藏微博按钮,点击即可隐藏这条微博。'
},
'hideThisWeibo': { 'zh-cn': '隐藏', 'zh-hk': '隱藏', 'zh-tw': '隱藏', 'en': 'Hide'/* as is */ },
'disableLazyLoad': { 'zh-cn': '禁用首页微博延迟加载{{<i>}}', 'zh-hk': '禁用首頁微博延遲載入{{<i>}}', 'zh-tw': '禁用首頁微博延遲載入{{<i>}}', 'en': 'Disable Weibo lazy load on home page {{<i>}}' },
'disableLazyLoadDesc': {
'zh-cn': '如果您因为隐藏了过多的微博,首页打开后看到的微博太少,您可以打开该功能一次性显示更多微博。'
},
// 自动载入
'autoLoadNewWeiboTitle': { 'zh-cn': '自动载入新微博', 'zh-hk': '自動載入新微博', 'zh-tw': '自動載入新微博', 'en': 'New Weibo Auto Load' },
'autoLoadNewWeibo': { 'zh-cn': '自动载入新微博', 'zh-hk': '自動載入新微博', 'zh-tw': '自動載入新微博', 'en': 'New Weibo Auto Load' },
'autoLoadNewWeiboDesc': {
'zh-cn': '启用该选项可以在显示“有×条新微博”的提示横幅出现前过滤微博,避免提示不希望看到的新微博;但勾选此项会导致在其他移动设备上收不到有新微博的提示。',
},
'newWeiboNotify': { 'zh-cn': '有 {{count}} 条新微博,点击查看', 'zh-hk': '有{{count}}條新微博,點擊查看', 'zh-tw': '有{{count}}條新微博,點擊查看', 'en': '{{count}} new Weibo' },
// 分组浏览
'otherGroupTitle': { 'zh-cn': '分组浏览', 'zh-hk': '分組流覽', 'zh-tw': '分組流覽', 'en': 'Browse by Group' },
'accountByGroup': { 'zh-cn': '分组浏览时禁用按帐号隐藏', 'zh-hk': '分組流覽時禁用按帳號隱藏', 'zh-tw': '分組流覽時禁用按帳號隱藏', 'en': 'Disable hide by account filter when browsing by group' },
'sameAccountByGroup': { 'zh-cn': '浏览分组时禁用相同作者数量限制', 'zh-hk': '流覽分組時禁用相同作者數量限制', 'zh-tw': '流覽分組時禁用相同作者數量限制', 'en': 'Disable hide too many Weibo from same account filter when browsing by group' },
// 自动展开
'autoExpand': {
'zh-cn': '自动载入后直接展开显示{{<i>}}||{{<etypes>}}仅对白名单的微博自动展开显示||{{<background>}}页面处于活动状态时暂停',
'zh-hk': '自動載入後直接展開顯示{{<i>}}||{{<etypes>}}僅對白名單的微博自動展開顯示||{{<background>}}頁面處於活動狀態時暫停',
'zh-tw': '自動載入後直接展開顯示{{<i>}}||{{<etypes>}}僅對白名單的微博自動展開顯示||{{<background>}}頁面處於活動狀態時暫停',
'en': 'Expand Weibo after auto load {{<i>}}|| {{<etypes>}} Only auto expand whitelist Weibo || {{<background>}} Pause when page actived',
},
'autoExpandDesc': {
'zh-cn': '需要启用“[[base.autoload.auto_load_new_weibo]]”功能才会生效。在载入后可以直接将微博显示出来而不是在微博列表顶部显示有新微博的提示横幅。',
},
'autoExpandAll': { 'zh-cn': '所有新微博', 'zh-hk': '所有新微博', 'zh-tw': '所有新微博', 'en': 'all new Weibo' },
'autoExpandWhite': { 'zh-cn': '白名单微博', 'zh-hk': '白名單微博', 'zh-tw': '白名單微博', 'en': 'whitelist Weibo' },
// 桌面提示
'desktopNotification': {
'zh-cn': '载入新微博后显示桌面提示{{<i>}}||{{<types>}}仅对白名单的微博显示桌面提示||{{<shorten>}}桌面提示仅显示|前{{<shortlen>}}字符摘要信息||{{<autohide>}}桌面提醒延时自动关闭|显示{{<duration>}}毫秒|+字数×{{<durationc>}}毫秒||{{<ntypes>}}使用 webkitNotifications 而非 Notification',
'zh-hk': '载入新微博后顯示桌面提示{{<i>}}||{{<types>}}僅對白名單的微博顯示桌面提示||{{<shorten>}}桌面提示僅顯示|前{{<shortlen>}}字元摘要資訊||{{<autohide>}}桌面提醒延時自動關閉|顯示{{<duration>}}毫秒|+字數×{{<durationc>}}毫秒||{{<ntypes>}}使用 webkitNotifications 而非 Notification',
'zh-tw': '载入新微博后顯示桌面提示{{<i>}}||{{<types>}}僅對白名單的微博顯示桌面提示||{{<shorten>}}桌面提示僅顯示|前{{<shortlen>}}字元摘要資訊||{{<autohide>}}桌面提醒延時自動關閉|顯示{{<duration>}}毫秒|+字數×{{<durationc>}}毫秒||{{<ntypes>}}使用 webkitNotifications 而非 Notification',
'en': 'Show desktop notification after auto load {{<i>}}|| {{<types>}} Only show desktop notification for whitelist Weibo || {{<shorten>}} Desktop notification only show | first {{<shortlen>}} characters Weibo content || {{<autohide>}} auto hide desktop notification after | {{<duration>}}ms | + {{<durationc>}}ms/char || {{<ntypes>}} Use webkitNotifications instead of Notification',
},
'desktopNotificationDesc': {
'zh-cn': '需要启用“[[base.autoload.auto_load_new_weibo]]”功能才会生效。在载入后,无论浏览器是否被最小化都可以在屏幕右下角弹出包含新微博内容的提示,方便您第一时间了解新收到的微博。',
},
'desktopNotificationDisallowedTitle': { 'zh-cn': '桌面提示被阻止', 'zh-hk': '桌面提示被阻止', 'zh-tw': '桌面提示被阻止', 'en': 'Desktop Notification Disallowed' },
'desktopNotificationDisallowed': {
'zh-cn': '您的浏览器阻止了桌面提示。请按照如下步骤解除阻止:<br />右击网页—查看页面信息—权限—显示通知—允许<br />此外,如果您安装了 Tab notifier 等扩展,请到扩展的设置中允许显示桌面提示。',
'zh-hk': '您的流覽器阻止了桌面提示。請按照如下步驟解除阻止:<br />右擊網頁—檢視頁面資訊—權限—顯示通知—允許<br />此外,如果您安裝了 Tab notifier 等擴充套件,請到擴充套件的設置中允許顯示桌面提示。',
'zh-tw': '您的流覽器阻止了桌面提示。請按照如下步驟解除阻止:<br />右擊網頁—檢視頁面資訊—權限—顯示通知—允許<br />此外,如果您安裝了 Tab notifier 等擴充套件,請到擴充套件的設置中允許顯示桌面提示。',
'en': 'Your browser blocked desktop notifications. Please follow the instruction to unblock: <br />Right click webpage - View Page Info - Permission - Notifications - Allow. You should also check settings of extensions, if you installed extensions like Tab notifier.',
},
'autoCloseWarning': {
'zh-cn': '43版以前的火狐浏览器提供的 Notification 会强制显示 4 秒后关闭,如果您希望显示较长时间,请考虑使用 Tab notifier 等扩展提供的 webkitNotifications。',
'zh-hk': '43版以前的火狐流覽器提供的 Notification 會強制顯示 4 秒後關閉,如果您希望顯示較長時間,請考慮使用 Tab notifier 等擴充套件提供的 webkitNotifications。',
'zh-tw': '43版以前的火狐流覽器提供的 Notification 會強制顯示 4 秒後關閉,如果您希望顯示較長時間,請考慮使用 Tab notifier 等擴充套件提供的 webkitNotifications。',
'en': 'Notification provided by Firefox (version <= 43) will be mandatorily closed with 4 seconds delay after shown. You may need to use webkitNotifications provided by add-ons like Tab notifier for longer notification display.',
},
// 搜索
'searchNotFound': { 'zh-cn': '未找到与您输入匹配的设置项', 'zh-hk': '未找到與您輸入匹配的設置項', 'zh-tw': '未找到與您輸入匹配的設置項', 'en': 'No Matched Settings' },
// 内容
'contentFilterGroupTitle': { 'zh-cn': '内容', 'zh-hk': '內容', 'zh-tw': '內容', 'en': 'Content' },
// 关键词
'keywordFilterDesc': { 'zh-cn': '关键词', 'zh-hk': '關鍵字', 'zh-tw': '關鍵字', 'en': 'Keyword' },
'keywordFilterDetails': { 'zh-cn': '包含以下关键词的微博', 'zh-hk': '包含以下關鍵字的微博', 'zh-tw': '包含以下關鍵字的微博', 'en': 'Weibo with these keywords' },
'keywordFilterDetailsDesc': {
'zh-cn': '关键词仅匹配微博正文,包括原微博和转发的描述。如果您希望某条微博同时出现某几个关键字时才过滤,请使用正则表达式的过滤方式。',
},
'keywordFilterFast': { 'zh-cn': '微博包含关键词', 'zh-hk': '微博包含關鍵字', 'zh-tw': '微博包含關鍵字', 'en': 'Weibo contains keyword ' },
'keywordFilterFastInput': { 'zh-cn': '“{{text}}”', 'zh-hk': '「{{text}}」', 'zh-tw': '「{{text}}」', 'en': '"{{text}}"' },
'keywordFilterReason': { 'zh-cn': '因包含关键词“{{detail}}”', 'zh-hk': '因包含關鍵詞「{{detail}}」', 'zh-tw': '因包含關鍵詞「{{detail}}」', 'en': 'because it contains keyword "{{detail}}"' },
// 正则表达式
'regexpFilterGroupTitle': { 'zh-cn': '正则', 'zh-hk': '正則', 'zh-tw': '正規', 'en': 'Regexp' },
'regexpFilterDesc': { 'zh-cn': '正则式', 'zh-hk': '正則式', 'zh-tw': '正規式', 'en': 'Regexp' },
'regexpFilterDetails': { 'zh-cn': '匹配以下正则表达式的微博', 'zh-hk': '匹配以下正則表達式的微博', 'zh-tw': '匹配以下正規表示式的微博', 'en': 'Weibo matches these regular expressions' },
'regexpFilterDetailsDesc': {
'zh-cn': '正则表达式书写时不需要对“/”字符转义。正则表达式不同于“通配符”,您需要使用“<code>.*</code>”表示任意字符,如“<code>转发并.*好友</code>”。如果您希望匹配同时出现某些关键词的微博,您可以用<code>^(?=[\s\S]*星座)(?=[\s\S]*第一)</code>”匹配所有同时出现“星座”和“第一”的微博。您可以参考<a href="https://tiansh.github.io/yawf/regexp.html" target="_blank">用于过滤微博的正则表达式快速入门</a>查看更多示例写法。',
},
'regexpFilterFast': { 'zh-cn': '微博匹配正则式', 'zh-hk': '微博匹配正則式', 'zh-tw': '微博匹配正規式', 'en': 'Weibo matches regexp ' },
'regexpFilterFastInput': { 'zh-cn': '/{{text}}/', 'zh-hk': '/{{text}}/', 'zh-tw': '/{{text}}/', 'en': '/{{text}}/' },
'regexpFilterReason': { 'zh-cn': '因匹配正则式 {{detail}} ', 'zh-hk': '因匹配正則式 {{detail}} ', 'zh-tw': '因匹配正規式 {{detail}} ', 'en': 'because it matches regexp {{detail}} ' },
'regexpBadFormedTitle': { 'zh-cn': '非法的正则表达式', 'zh-hk': '不合法的正則表達式', 'zh-tw': '不合法的正規表示式', 'en': 'Illegal Regexp' },
'regexpBadFormed': {
'zh-cn': '您输入的/{{regexp}}/不能被正确地解析为正则表达式,请检查您的输入。如需关键词屏蔽请到内容标签页设置。',
'zh-hk': '您輸入的/{{regexp}}/不能被正確地解析為正則表達式,請檢查您的輸入。如需關鍵詞屏蔽請到內容標籤頁面設置。',
'zh-tw': '您輸入的/{{regexp}}/不能被正確地解析為正規表示式,請檢查您的輸入。如需關鍵詞屏蔽請到內容標籤頁面設置。',
'en': 'Cannot parse /{{regexp}}/ as regexp. Please check your input. You may hide Weibo by keywords in Content tab page.'
},
// 其他元素
'contentTypesTitle': { 'zh-cn': '将以下元素同样作为内容处理', 'zh-hk': '將以下元素同樣作為內容處理', 'zh-tw': '將以下元素同樣作為內容處理', 'en': 'Handle these elements as content' },
'contentTypesMention': { 'zh-cn': '提到某人', 'zh-hk': '提到某人', 'zh-tw': '提到某人', 'en': 'Mention' },
'contentTypesStock': { 'zh-cn': '股票链接', 'zh-hk': '股票連結', 'zh-tw': '股票連結', 'en': 'Stock link' },
'contentTypesTopic': { 'zh-cn': '话题标题', 'zh-hk': '話題標題', 'zh-tw': '話題標題', 'en': 'Topic' },
'contentTypesLinkt': { 'zh-cn': '链接标题', 'zh-hk': '連結標題', 'zh-tw': '連結標題', 'en': 'Link Title' },
'contentTypesLinku': { 'zh-cn': '链接地址', 'zh-hk': '連結位址', 'zh-tw': '連結位址', 'en': 'Link target URL' },
'contentTypesEmotion': { 'zh-cn': '表情备注', 'zh-hk': '表情備註', 'zh-tw': '表情備註', 'en': 'Remark of emotion' },
// 帐号
'accountFilterGroupTitle': { 'zh-cn': '帐号', 'zh-hk': '帳號', 'zh-tw': '帳號', 'en': 'Account' },
'accountFilterDesc': { 'zh-cn': '帐号', 'zh-hk': '帳號', 'zh-tw': '帳號', 'en': 'Account' },
'accountFilterDetails': { 'zh-cn': '来自以下帐号的所有微博', 'zh-hk': '來自以下帳號的所有微博', 'zh-tw': '來自以下帳號的所有微博', 'en': 'All Weibo from these accounts' },
'accountFilterDetailsDesc': {
'zh-cn': '你关注的某个人撰写或转发的微博。对于转发的微博,仅匹配最后转发的那个人。',
},
'accountFilterFast': { 'zh-cn': '作者是“@{{name}}”的所有微博', 'zh-hk': '作者是「@{{name}}」的所有微博', 'zh-tw': '作者是「@{{name}}」的所有微博', 'en': 'All Weibo by "@{{name}}"' },
'accountFilterContextMenu': { 'zh-cn': '作者是 @{{name}}', 'zh-hk': '作者是 @{{name}}', 'zh-tw': '作者是 @{{name}}', 'en': 'by @{{name}}' },
'accountFilterReason': { 'zh-cn': '因来自 @{{detail}} ', 'zh-hk': '因來自 @{{detail}} ', 'zh-tw': '因來自 @{{detail}} ', 'en': 'because it is posted by @{{detail}} ' },
'accountNotExistErrorTitle': { 'zh-cn': '帐号不存在', 'zh-hk': '帳號不存在', 'zh-tw': '帳號不存在', 'en': 'Account does not exist' },
'accountNotExistError': { 'zh-cn': '不存在名为“{{name}}”的帐号', 'zh-hk': '不存在名為「{{name}}」的帳號', 'zh-tw': '不存在名為「{{name}}」的帳號', 'en': 'Account named "{{name}}" does not exist' },
// 某人的转发
'accountfFilterDesc': { 'zh-cn': '帐号', 'zh-hk': '帳號', 'zh-tw': '帳號', 'en': 'Account' },
'accountfFilterDetails': { 'zh-cn': '来自以下帐号的转发微博', 'zh-hk': '來自以下帳號的转发微博', 'zh-tw': '來自以下帳號的转发微博', 'en': 'Forwarded Weibo from these accounts' },
'accountfFilterDetailsDesc': {
'zh-cn': '与“来自以下帐号的所有微博”功能类似,但不对此人的原创微博生效。',
'zh-hk': '與“來自以下帳號的所有微博”功能類似,但不對此人的原創微博生效。',
'zh-tw': '與“來自以下帳號的所有微博”功能類似,但不對此人的原創微博生效。',
'en': 'Similar to "All Weibo from these accounts", but only works on forwarded Weibo.'
},
'accountfFilterFast': { 'zh-cn': '作者是“@{{name}}”的转发微博', 'zh-hk': '作者是「@{{name}}」的转发微博', 'zh-tw': '作者是「@{{name}}」的转发微博', 'en': 'Weibo by "@{{name}}"' },
'accountfFilterContextMenu': { 'zh-cn': '由 @{{name}} 转发', 'zh-hk': '由 @{{name}} 轉發', 'zh-tw': '由 @{{name}} 轉發', 'en': 'forwarded by @{{name}}' },
'accountfFilterReason': { 'zh-cn': '因来自 @{{detail}} ', 'zh-hk': '因來自 @{{detail}} ', 'zh-tw': '因來自 @{{detail}} ', 'en': 'because it is posted by @{{detail}} ' },
// 原创
'originalFilterGroupTitle': { 'zh-cn': '原创', 'zh-hk': '原創', 'zh-tw': '原創', 'en': 'Original' },
'originalFilterDesc': { 'zh-cn': '帐号', 'zh-hk': '帳號', 'zh-tw': '帳號', 'en': 'Account' },
'originalFilterDetails': { 'zh-cn': '原创是以下帐号的微博', 'zh-hk': '原創是以下帳號的微博', 'zh-tw': '原創是以下帳號的微博', 'en': 'Weibo Originally from these accounts' },
'originalFilterDetailsDesc': {
'zh-cn': '如果一条微博是原创的(不是转发的)那么他的作者就是原创的作者,否则原创指这条微博最原始的作者。'
},
'originalFilterFast': { 'zh-cn': '原创是“@{{name}}”的微博', 'zh-hk': '原創是「@{{name}}」的微博', 'zh-tw': '原創是「@{{name}}」的微博', 'en': 'Original Weibo from "@{{name}}"' },
'originalFilterContextMenu': { 'zh-cn': '原创是 @{{name}}', 'zh-hk': '原創是 @{{name}}', 'zh-tw': '原創是 @{{name}}', 'en': 'from @{{name}}' },
'originalFilterReason': { 'zh-cn': '因转发自 @{{detail}} ', 'zh-hk': '因轉發自 @{{detail}} ', 'zh-tw': '因轉發自 @{{detail}} ', 'en': 'because it is forwarded from @{{detail}} ' },
'actOnDiscoveryPage': { 'zh-cn': ' 按原创作者过滤的规则对发现页面的作者生效', 'zh-hk': '按原創作者過濾的規則對發現頁面的作者生效', 'zh-tw': '按原創作者過濾的規則對發現頁面的作者生效', 'en': 'Rules filter by original apply to authors in discovery page' },
// 提到
'mentionFilterGroupTitle': { 'zh-cn': '提到', 'zh-hk': '提到', 'zh-tw': '提到', 'en': 'Mention' },
'mentionFilterDesc': { 'zh-cn': '帐号', 'zh-hk': '帳號', 'zh-tw': '帳號', 'en': 'Account' },
'mentionFilterDetails': { 'zh-cn': '提到以下帐号的微博', 'zh-hk': '提到以下帳號的微博', 'zh-tw': '提到以下帳號的微博', 'en': 'Weibo mentioned these accounts' },
'mentionFilterDetailsDesc': {
'zh-cn': '提到包括在微博中使用“@”提到的帐号,也包括转发路径中的那些帐号。微博中提到的人的链接不会随修改昵称而变化,这里也无法处理修改昵称的情况,所以如果一个人修改了昵称,您需要重新添加。'
},
'mentionFilterFast': { 'zh-cn': '提到了“@{{name}}”的微博', 'zh-hk': '提到了「@{{name}}」的微博', 'zh-tw': '提到了「@{{name}}」的微博', 'en': 'Weibo mentioned "@{{name}}"' },
'mentionFilterContextMenuGroup': { 'zh-cn': '提到了', 'zh-hk': '提到了', 'zh-tw': '提到了', 'en': 'mentioned' },
'mentionFilterContextMenu': { 'zh-cn': '@{{name}}', 'zh-hk': '@{{name}}', 'zh-tw': '@{{name}}', 'en': '@{{name}}' },
'mentionFilterReason': { 'zh-cn': '因提到 @{{detail}} ', 'zh-hk': '因提到 @{{detail}} ', 'zh-tw': '因提到 @{{detail}} ', 'en': 'because it mentioned @{{detail}} ' },
// 话题
'topicFilterGroupTitle': { 'zh-cn': '话题', 'zh-hk': '話題', 'zh-tw': '話題', 'en': 'Topic' },
'topicFilterDesc': { 'zh-cn': '话题', 'zh-hk': '話題', 'zh-tw': '話題', 'en': 'Topic' },
'topicFilterDetails': { 'zh-cn': '包含以下话题的微博', 'zh-hk': '包含以下話題的微博', 'zh-tw': '包含以下話題的微博', 'en': 'Weibo with these topics' },
'topicFilterDetailsDesc': {
'zh-cn': '匹配提到了某个话题的微博,包括原文和转发的评论。话题使用全字匹配。'
},
'topicFilterFast': { 'zh-cn': '微博包含话题', 'zh-hk': '微博包含話題', 'zh-tw': '微博包含話題', 'en': 'Weibo contains topic ' },
'topicFilterContextMenuGroup': { 'zh-cn': '包含话题', 'zh-hk': '包含話題', 'zh-tw': '包含話題', 'en': 'contains topic' },
'topicFilterContextMenu': { 'zh-cn': '#{{topic}}#', 'zh-hk': '#{{topic}}#', 'zh-tw': '#{{topic}}#', 'en': '#{{topic}}#' },
'topicFilterFastInput': { 'zh-cn': '“#{{topic}}#”', 'zh-hk': '「#{{topic}}#」', 'zh-tw': '「#{{topic}}#」', 'en': '"#{{topic}}#"' },
'topicFilterReason': { 'zh-cn': '因包含话题 #{{detail}}# ', 'zh-hk': '因包含話題 #{{detail}}# ', 'zh-tw': '因包含話題 #{{detail}}# ', 'en': 'because it contained topic #{{detail}}# ' },
'rtopicFilterDesc': { 'zh-cn': '正则式', 'zh-hk': '正則式', 'zh-tw': '正規式', 'en': 'Regexp' },
'rtopicFilterDetails': { 'zh-cn': '包含匹配以下正则表达式的话题的微博', 'zh-hk': '包含匹配以下正則表達式的話題的微博', 'zh-tw': '包含匹配以下正規表示式的话题的微博', 'en': 'Weibo with topic matches these regular expressions' },
'rtopicFilterDetailsDesc': {
'zh-cn': '使用正则式匹配微博中的话题,正则匹配时不需要匹配两侧的“#”。{{regexpFilterDetailsDesc}}'
},
'rtopicFilterFast': { 'zh-cn': '微博包含话题匹配', 'zh-hk': '微博包含話題匹配', 'zh-tw': '微博包含話題匹配', 'en': 'Weibo contains topic matches ' },
'rtopicFilterFastInput': { 'zh-cn': '“#{{topic}}#”', 'zh-hk': '「#{{topic}}#」', 'zh-tw': '「#{{topic}}#」', 'en': '"#{{topic}}#"' },
'rtopicFilterReason': { 'zh-cn': '因包含话题匹配 {{detail}} ', 'zh-hk': '因包含話題匹配 {{detail}} ', 'zh-tw': '因包含話題匹配 {{detail}} ', 'en': 'because it contained topic match {{detail}} ' },
// 来源
'sourceFilterGroupTitle': { 'zh-cn': '来源', 'zh-hk': '來源', 'zh-tw': '來源', 'en': 'Source' },
'sourceFilterDesc': { 'zh-cn': '来自', 'zh-hk': '來自', 'zh-tw': '來自', 'en': 'Come from' },
'sourceFilterDetails': { 'zh-cn': '以下来源的微博', 'zh-hk': '以下來源的微博', 'zh-tw': '以下來源的微博', 'en': 'Weibo comes from these sources' },
'sourceFilterDetailsDesc': {
'zh-cn': '匹配微博下方“来自×××”的来源,不包括“自定义微博来源”中的文本。来源使用全字匹配。'
},
'sourceFilterFast': { 'zh-cn': '来自“{{source}}”的微博', 'zh-hk': '來自「{{source}}」的微博', 'zh-tw': '來自「{{source}}」的微博', 'en': 'Weibo comes from "{{source}}"' },
'sourceFilterContextMenuGroup': { 'zh-cn': '来自', 'zh-hk': '來自', 'zh-tw': '來自', 'en': 'Come from' },
'sourceFilterContextMenu': { 'zh-cn': '{{source}}', 'zh-hk': '{{source}}', 'zh-tw': '{{source}}', 'en': '{{source}}' },
'sourceFilterWarningTitle': { 'zh-cn': '默认来源', 'zh-hk': '預設來源', 'zh-tw': '預設來源', 'en': 'Default Source' },
'sourceFilterWarning': { 'zh-cn': '不能添加默认来源', 'zh-hk': '不能新增預設來源', 'zh-tw': '不能新增預設來源', 'en': 'You cannot add default source' },
'sourceFilterReason': { 'zh-cn': '因来自“{{detail}}”', 'zh-hk': '因來自「{{detail}}」', 'zh-tw': '因來自「{{detail}}」', 'en': 'because it comes from "{{detail}}" ' },
'sourceUnkown': { 'zh-cn': '未通过审核应用', 'zh-hk': '未通过审核应用', 'zh-tw': '未通过审核应用', 'en': '未通过审核应用' },
'defaultSource': { 'zh-cn': '微博 weibo.com', 'zh-hk': '微博 weibo.com', 'zh-tw': '微博 weibo.com', 'en': '微博 weibo.com' },
// 超链接
'hyperlinkFilterGroupTitle': { 'zh-cn': '链接', 'zh-hk': '連結', 'zh-tw': '連結', 'en': 'Link' },
'hyperlinkFilterDesc': { 'zh-cn': '超链接', 'zh-hk': '超連結', 'zh-tw': '超連結', 'en': 'Hyperlink' },
'hyperlinkFilterDetails': { 'zh-cn': '包含以下超链接的微博', 'zh-hk': '包含以下超連結的微博', 'zh-tw': '包含以下超連結的微博', 'en': 'Weibo with these hyperlinks' },
'hyperlinkFilterDetailsDesc': {
'zh-cn': '匹配微博的短链接,子串匹配。'
},
'hyperlinkFilterFast': { 'zh-cn': '包含链接到“{{url}}”地址链接的微博', 'zh-hk': '包含鏈接到「{{url}}」位址連結的微博', 'zh-tw': '包含鏈接到「{{url}}」位址連結的微博', 'en': 'Weibo contains hyperlink to "{{url}}"' },
'hyperlinkFilterContextMenuGroup': { 'zh-cn': '链接到', 'zh-hk': '鏈接到', 'zh-tw': '鏈接到', 'en': 'hyperlink to' },
'hyperlinkFilterContextMenu': { 'zh-cn': '{{url}}', 'zh-hk': '{{url}}', 'zh-tw': '{{url}}', 'en': '{{url}}' },
'hyperlinkFilterReason': { 'zh-cn': '因链接到“{{detail}}”', 'zh-hk': '因連結到「{{detail}}」', 'zh-tw': '因連結到「{{detail}}」', 'en': 'because it contains hyperlink to "{{detail}}" ' },
// 链接标题
'linktitleFilterDesc': { 'zh-cn': '标题', 'zh-hk': '標題', 'zh-tw': '標題', 'en': 'Title' },
'linktitleFilterDetails': { 'zh-cn': '链接标题匹配以下关键词的微博', 'zh-hk': '連結標題匹配以下關鍵字的微博', 'zh-tw': '連結標題匹配以下關鍵字的微博', 'en': 'Weibo with title of hyperlink contains keyword' },
'linktitleFilterDetailsDesc': {
'zh-cn': '匹配微博中出现的各种链接,包括网页链接,也包括视频、文章等等。匹配链接的标题。'
},
'linktitleFilterFast': { 'zh-cn': '微博链接标题', 'zh-hk': '微博連結標題', 'zh-tw': '微博連結標題', 'en': 'Weibo hyperlink with title' },
'linktitleFilterFastInput': { 'zh-cn': '“{{title}}”', 'zh-hk': '「{{title}}」', 'zh-tw': '「{{title}}」', 'en': '"{{title}}"' },
'linktitleFilterContextMenuGroup': { 'zh-cn': '链接标题', 'zh-hk': '連結標題', 'zh-tw': '連結標題', 'en': 'link title' },
'linktitleFilterContextMenu': { 'zh-cn': '{{title}}', 'zh-hk': '{{title}}', 'zh-tw': '{{title}}', 'en': '{{title}}' },
'linktitleFilterReason': { 'zh-cn': '因含有“{{detail}}”链接', 'zh-hk': '因含有「{{detail}}」連結', 'zh-tw': '因含有「{{detail}}」連結', 'en': 'because its hyperlink with title "{{detail}}" ' },
// 更多
'otherFilterGroupTitle': { 'zh-cn': '更多', 'zh-hk': '其他', 'zh-tw': '其他', 'en': 'More' },
// 显示
'otherWhitelistTitle': { 'zh-cn': '显示以下内容(不计入白名单)', 'zh-hk': '顯示以下內容(不計入白名單)', 'zh-tw': '顯示以下內容(不計入白名單)', 'en': 'Show following content (not regard as whitelist)' },
'showMyWeiboDesc': { 'zh-cn': '自己的微博', 'zh-hk': '自己的微博', 'zh-tw': '自己的微博', 'en': 'Weibo by myself' },
'showMyOriginalDesc': { 'zh-cn': '自己微博的转发', 'zh-hk': '自己微博的轉發', 'zh-tw': '自己微博的轉發', 'en': 'Forward of my Weibo' },
'showMentionMeDesc': { 'zh-cn': '提到自己的微博', 'zh-hk': '提到自己的微博', 'zh-tw': '提到自己的微博', 'en': 'Weibo mentioned myself' },
// 隐藏
'otherBlacklistTitleAd': { 'zh-cn': '隐藏以下微博 - 广告/商品', 'zh-hk': '隱藏以下內容 - 廣告/商品', 'zh-tw': '隱藏以下內容 - 廣告/商品', 'en': 'Hide following content - Ad / Promotion' },
'adfeedFilter': { 'zh-cn': '推广微博/粉丝通微博/品牌速递/好友赞过的微博{{<i>}}', 'zh-hk': '推廣微博/粉絲通微博/品牌速遞/好友贊過的微博{{<i>}}', 'zh-tw': '推廣微博/粉絲通微博/品牌速遞/好友贊過的微博{{<i>}}', 'en': 'Ad Weibo / Instered not followed Weibo {{<i>}}' },
'adfeedFilterDesc': {
'zh-cn': '推广微博一般出现在首页微博列表靠前的位置,并标记“推荐”字样。通过付费和新浪的审核,可以推广某条微博。微博会根据您的喜好随机将一些被推广的微博推荐给您。好友赞过的微博混在首页中间,并标记“某某赞过”。虽然这些微博出现在您的微博列表中,但它们往往不是您关注的人发的微博。',
},
'fansTopFilter': { 'zh-cn': '粉丝头条{{<i>}}', 'zh-hk': '粉丝头条{{<i>}}', 'zh-tw': '粉丝头条{{<i>}}'/* as is */, 'en': 'Fans top / Headline Weibo{{<i>}}' },
'fansTopFilterDesc': {
'zh-cn': '粉丝头条会显示在首页微博列表的顶端,一般标记“热门”等字样。粉丝头条是新浪微博官方的一项推广产品,使用粉丝头条的微博可在 24 小时内出现在所有微博粉丝首页的第一位。粉丝头条微博总是来自于您关注的人。',
},
'productCardWeibo': { 'zh-cn': '带有商品卡片的微博{{<i>}}', 'zh-hk': '帶有商品卡片的微博{{<i>}}', 'zh-tw': '帶有商品卡片的微博{{<i>}}', 'en': 'Weibo with product weibo card{{<i>}}' },
'productCardWeiboDesc': {
'zh-cn': '带有商品卡片的微博,卡片中一般有一个“去购买”按钮链接到商品页面,可在微博内购买对应商品。此类微博一般是对应商品的宣传,勾选以隐藏此类微博。',
},
'taobaoTianmaoWeibo': { 'zh-cn': '带有淘宝、天猫或聚划算商品的微博{{<i>}}', 'zh-hk': '帶有淘寶、天貓或聚划算商品的微博{{<i>}}', 'zh-tw': '帶有淘寶、天貓或聚划算商品的微博{{<i>}}', 'en': 'Weibo with Taobao / Tmall / Juhuasuan commodity{{<i>}}' },
'taobaoTianmaoWeiboDesc': {
'zh-cn': '带有<span class="W_btn_b W_btn_cardlink btn_22px"><span class="ico_spe"><i class="W_icon icon_cd_tb"></i></span><span class="W_autocut">淘宝商品</span></span>、<span class="W_btn_b W_btn_cardlink btn_22px"><span class="ico_spe"><i class="W_icon icon_cd_tmall"></i></span><span class="W_autocut">天猫商品</span></span>或<span class="W_btn_b W_btn_cardlink btn_22px"><span class="ico_spe"><i class="W_icon icon_cd_ju"></i></span><span class="W_autocut">聚划算商品</span></span>的微博',
},
'weiboPayGift': { 'zh-cn': '带有微博支付积分礼品兑换卡片的微博{{<i>}}', 'zh-hk': '帶有微博支付積分禮品兌換卡片的微博{{<i>}}', 'zh-tw': '帶有微博支付積分禮品兌換卡片的微博{{<i>}}', 'en': 'Weibo with Weibo pay with points gift exchange card{{<i>}}' },
'weiboPayGiftDesc': {
'zh-cn': '微博支付积分指通过在微博中消费(如购买会员)产生的积分,并非微博等级经验值,可以用于兑换礼品(礼品一般是优惠券或抽奖)。勾选本选项以隐藏带有此类兑换信息的卡片的微博。',
},
'fakeWeiboFilter': { 'zh-cn': '混入微博列表的推荐内容(好友推荐、热门话题){{<i>}}', 'zh-hk': '混入微博列表的推薦內容(好友推薦、熱門話題){{<i>}}', 'zh-tw': '混入微博列表的推薦內容(好友推薦、熱門話題){{<i>}}', 'en': 'Other contents in Weibo list{{<i>}}' },
'fakeWeiboFilterDesc': {
'zh-cn': '所有在微博与微博之间混入的其他内容,这些内容往往不是微博消息,比如“好友推荐”“热门话题”等。',
},
'otherBlacklistTitleContent': { 'zh-cn': '隐藏以下微博 - 特定内容', 'zh-hk': '隱藏以下內容 - 特定內容', 'zh-tw': '隱藏以下內容 - 特定內容', 'en': 'Hide following content - Content ' },
'deletedForwardFilter': { 'zh-cn': '已删除微博的转发{{<i>}}', 'zh-hk': '已刪除微博的轉發{{<i>}}', 'zh-tw': '已刪除微博的轉發{{<i>}}', 'en': 'Forward of deleted Weibo{{<i>}}' },
'deletedForwardFilterDesc': {
'zh-cn': '包括因为删除或对微博设置了隐私权限而使您无法看到原文的微博。这些微博您只能看见转发者的评论,但是无法看到原微博的内容。',
},
'commentAndForwardFilter': { 'zh-cn': '回复并转发的微博{{<i>}}', 'zh-hk': '回覆並轉發的微博{{<i>}}', 'zh-tw': '回覆並轉發的微博{{<i>}}', 'en': 'Weibo forwarded as reply{{<i>}}' },
'commentAndForwardFilterDesc': {
'zh-cn': '在回复他人微博时选择“同时转发到我的微博”会将回复和被回复的内容转发为一条微博,勾选后会隐藏回复时转发的微博。',
},
'voteWeiboFilter': { 'zh-cn': '投票微博{{<i>}}', 'zh-hk': '投票微博{{<i>}}', 'zh-tw': '投票微博{{<i>}}', 'en': 'Voting weibo{{<i>}}' },
'voteWeiboFilterDesc': {
'zh-cn': '包括在发布微博时选择投票的微博,也包括在投票时自动发出的微博。',
},
'redPackWeibo': { 'zh-cn': '抢红包微博{{<i>}}', 'zh-hk': '搶紅包微博', 'zh-tw': '搶紅包微博', 'en': 'Weibo with Red Envelopes Rush' },
'redPackWeiboDesc': {
'zh-cn': '抢红包活动自动发布的微博'
},
'appItemWeibo': { 'zh-cn': '介绍微博应用的微博{{<i>}}', 'zh-hk': '介紹微博應用的微博{{<i>}}', 'zh-tw': '介紹微博應用的微博{{<i>}}', 'en': 'Weibo with app item {{<i>}}' },
'appItemWeiboDesc': {
'zh-cn': '介绍微博应用的微博,包括含有微博应用的链接或含有微博应用的卡片的情况。微博应用的链接会以应用图标标记。勾选此项以隐藏此类微博。',
},
'wenwoDrWeibo': { 'zh-cn': '含有爱问医生健康科普文章的微博{{<i>}}', 'zh-hk': '含有愛問醫生健康科普文章的微博{{<i>}}', 'zh-tw': '含有愛問醫生健康科普文章的微博{{<i>}}', 'en': 'Weibo with 爱问医生 (iask medical) artical {{<i>}}' },
'wenwoDrWeiboDesc': {
'zh-cn': '爱问医生健康科普文章是一些来自 wenwo.com 的健康、医疗相关文章。打开爱问医生健康科普文章的网站时,您可能会自动关注文章作者或相应帐号。开启以隐藏包含此类文章的微博。',
},
'stockWeibo': { 'zh-cn': '含有股票链接的微博{{<i>}}', 'zh-hk': '含有股票連結的微博{{<i>}}', 'zh-tw': '含有股票連結的微博{{<i>}}', 'en': 'Weibo with stock link {{<i>}}' },
'stockWeiboDesc': {
'zh-cn': '股票链接和话题相似,在发布框输入“$”即可添加股票链接。勾选以隐藏所有包含此类链接的微博。',
},
'otherBlacklistTitleSource': { 'zh-cn': '隐藏以下微博 - 特定来源', 'zh-hk': '隱藏以下內容 - 特定來源', 'zh-tw': '隱藏以下內容 - 特定來源', 'en': 'Hide following content - Source ' },
'huatiSourceWeibo': { 'zh-cn': '来自微话题的微博{{<i>}}', 'zh-hk': '來自微話題的微博{{<i>}}', 'zh-tw': '來自微話題的微博{{<i>}}', 'en': 'Weibo comes from 微话题 (micro Topic){{<i>}}' },
'huatiSourceWeiboDesc': {
'zh-cn': '一些热门话题页面发布微博时会显示以“微话题”开头的来源',
},
'weiqunSourceWeibo': { 'zh-cn': '来自新浪微群的微博{{<i>}}', 'zh-hk': '來自新浪微群的微博{{<i>}}', 'zh-tw': '來自新浪微群的微博{{<i>}}', 'en': 'Weibo comes from 新浪微群 (micro Group) {{<i>}}' },
'weiqunSourceWeiboDesc': {
'zh-cn': '从新浪微群页面发布的微博,来源以“新浪微群 -”开头',
},
'fangtanSourceWeibo': { 'zh-cn': '来自微访谈的微博{{<i>}}', 'zh-hk': '來自微訪談的微博{{<i>}}', 'zh-tw': '來自微訪談的微博{{<i>}}', 'en': 'Weibo comes from 微访谈 (micro Talk){{<i>}}' },
'fangtanSourceWeiboDesc': {
'zh-cn': '使用微访谈发布的微博,来源以“微访谈 -”开头',
},
'gongyiSourceWeibo': { 'zh-cn': '来自微公益的微博{{<i>}}', 'zh-hk': '來自微公益的微博{{<i>}}', 'zh-tw': '來自微公益的微博{{<i>}}', 'en': 'Weibo comes from 微公益 (micro Welfare){{<i>}}' },
'gongyiSourceWeiboDesc': {
'zh-cn': '使用微公益发布的微博,来源以“微公益”开头',
},
'unauthappWeibo': { 'zh-cn': '来自未通过审核应用的微博{{<i>}}', 'zh-hk': '來自未通过审核应用的微博{{<i>}}', 'zh-tw': '來自未通过审核应用的微博{{<i>}}', 'en': 'Weibo comes from 未通过审核应用 (unauthorized application){{<i>}}' },
'unauthappWeiboDesc': {
'zh-cn': '未通过审核的应用有发布频率和可最多可授权15名用户的限制,除非您的好友中有人做相关的开发工作,否则您应当很难看到此来源的微博。来自未审核应用的微博往往是但开发微博应用过程中的测试微博。您可以通过微博开放平台文档中的<a target="_blank" href="http://open.weibo.com/wiki/%E5%BA%94%E7%94%A8%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98">应用相关问题</a>页面了解更多关于应用的信息。',
},
'multiTopic': { 'zh-cn': '提到的话题|不少于{{<num>}}个的微博{{<i>}}', 'zh-hk': '提到的話題|不少於{{<num>}}個的微博{{<i>}}', 'zh-tw': '提到的話題|不少於{{<num>}}個的微博{{<i>}}', 'en': 'Weibo mentioned | not less than {{<num>}} topics{{<i>}}' },
'multiTopicDesc': {
'zh-cn': '由于新浪热门话题和话题主持人的相关政策,存在一些帐号通过罗列若干热门话题以使自己的广告可以显示在热门话题页面。您可以隐藏一次性提到了太多话题的微博以避免看到他们。',
},
'tooLongNeedUnfold': { 'zh-cn': '篇幅过长需要展开全文的微博{{<i>}}', 'zh-hk': '篇幅過長需要展開全文的微博{{<i>}}', 'zh-tw': '篇幅過長需要展開全文的微博{{<i>}}', 'en': 'Lengthy Weibo needs unfold to view{{<i>}}' },
'tooLongNeedUnfoldDesc': {
'zh-cn': '如果您打开了[[tool.weibotool.auto_unfold_weibo]],脚本会先试图展开不是很长的微博。',
},
// 刷屏与版聊
'otherSpammingTitle': { 'zh-cn': '刷屏与版聊', 'zh-hk': '洗版與版聊', 'zh-tw': '洗版與版聊', 'en': 'Spamming & Chatting' },
'sameAccountFilterDesc': { 'zh-cn': '相同作者的微博:|超过{{<number>}}条|时{{<action>}}', 'zh-hk': '相同作者的微博:|超過{{<number>}}條|時{{<action>}}', 'zh-tw': '相同作者的微博:|超過{{<number>}}條|時{{<action>}}', 'en': 'Weibo from same account: |{{<action>}} the part | which exceeds {{<number>}} Weibo' },
'sameAccountFilterReason': { 'zh-cn': '因刷屏', 'zh-hk': '因洗版', 'zh-tw': '因洗版', 'en': 'because of spamming ' },
'sameForwardFilterDesc': { 'zh-cn': '相同微博的转发:|超过{{<number>}}条|时{{<action>}}', 'zh-hk': '相同微博的轉發:|超過{{<number>}}條|時{{<action>}}', 'zh-tw': '相同微博的轉發:|超過{{<number>}}條|時{{<action>}}', 'en': 'Forward from same Weibo: |{{<action>}} the part | which exceeds {{<number>}} Weibo' },
'sameForwardFilterReason': { 'zh-cn': '因版聊', 'zh-hk': '因版聊', 'zh-tw': '因版聊', 'en': 'because of chatting ' },
// 评论过滤
'commentFilterGroupTitle': { 'zh-cn': '评论过滤', 'zh-hk': '評論篩選', 'zh-tw': '評論篩選', 'en': 'Comment Filter' },
// 评论关键词
'ckeywordFilterDetails': { 'zh-cn': '包含以下关键词的评论', 'zh-hk': '包含以下關鍵字的評論', 'zh-tw': '包含以下關鍵字的評論', 'en': 'Comment with these comments' },
'ckeywordFilterDetailsDesc': {
'zh-cn': '关键词匹配包括话题,但不包括提到的用户。',
},
'ckeywordFilterDesc': { 'zh-cn': '关键词', 'zh-hk': '關鍵字', 'zh-tw': '關鍵字', 'en': 'Keyword ' },
'ckeywordFilterFast': { 'zh-cn': '评论包含关键词', 'zh-hk': '評論包含關鍵字', 'zh-tw': '評論包含關鍵字', 'en': 'Comments contains keyword ' },
'ckeywordFilterFastInput': { 'zh-cn': '“{{text}}”', 'zh-hk': '「{{text}}」', 'zh-tw': '「{{text}}」', 'en': '"{{text}}"' },
// 评论正则表达式
'cregexpFilterDetails': { 'zh-cn': '匹配以下正则表达式的评论', 'zh-hk': '匹配以下正則表達式的評論', 'zh-tw': '匹配以下正規表示式的評論', 'en': 'Comment matches these regular expressions' },
'cregexpFilterDetailsDesc': {
'zh-cn': '正则表达式匹配评论内容,方便匹配一些故意绕过关键词识别的评论。{{regexpFilterDetailsDesc}}',
},
'cregexpFilterDesc': { 'zh-cn': '正则式', 'zh-hk': '正則式', 'zh-tw': '正規式', 'en': 'Regexp' },
'cregexpFilterFast': { 'zh-cn': '评论匹配正则式', 'zh-hk': '評論匹配正則式', 'zh-tw': '評論匹配正規式', 'en': 'Comment matches regexp ' },
'cregexpFilterFastInput': { 'zh-cn': '/{{text}}/', 'zh-hk': '/{{text}}/', 'zh-tw': '/{{text}}/', 'en': '/{{text}}/' },
// 评论用户
'cuserFilterDetails': { 'zh-cn': '以下帐号相关的评论', 'zh-hk': '以下帳號相關的評論', 'zh-tw': '以下帳號相關的評論', 'en': 'Comments mentioned these accounts' },
'cuserFilterDetailsDesc': {
'zh-cn': '匹配包括评论的作者,评论回复的帐号,以及评论提到的帐号。评论中提到的人的链接不会随修改昵称而变化,这里也无法处理修改昵称的情况,所以如果一个人修改了昵称,您需要重新添加。'
},
'cuserFilterDesc': { 'zh-cn': '帐号', 'zh-hk': '帳號', 'zh-tw': '帳號', 'en': 'Account' },
'cuserFilterFast': { 'zh-cn': '涉及到“@{{name}}”的评论', 'zh-hk': '涉及到「@{{name}}」的評論', 'zh-tw': '涉及到「@{{name}}」的評論', 'en': 'Comments about "@{{name}}"' },
// 评论话题
'ctopicFilterDetails': { 'zh-cn': '包含以下话题的评论', 'zh-hk': '包含以下話題的評論', 'zh-tw': '包含以下話題的評論', 'en': 'Comments with these topics' },
'ctopicFilterDetailsDesc': {
'zh-cn': '匹配提到了某个话题的评论。话题使用全字匹配。'
},
'ctopicFilterDesc': { 'zh-cn': '话题', 'zh-hk': '話題', 'zh-tw': '話題', 'en': 'Topic' },
'ctopicFilterFast': { 'zh-cn': '评论包含话题', 'zh-hk': '評論包含話題', 'zh-tw': '評論包含話題', 'en': 'Comments contains topic ' },
'ctopicFilterFastInput': { 'zh-cn': '“#{{topic}}#”', 'zh-hk': '「#{{topic}}#」', 'zh-tw': '「#{{topic}}#」', 'en': '"#{{topic}}#"' },
// 高级
'commentOtherFilters': { 'zh-cn': '更多', 'zh-hk': '其他', 'zh-tw': '其他', 'en': 'More' },
'commentMyDisplay': { 'zh-cn': '总是显示我自己发表的评论', 'zh-hk': '總是顯示我自己發表的評論', 'zh-tw': '總是顯示我自己發表的評論', 'en': 'Always show my comments' },
'commentEmojiCountDesc': { 'zh-cn': '隐藏表情|数量超过{{<number>}}个的评论', 'zh-hk': '隱藏表情|數量超過{{<number>}}個的評論', 'zh-tw': '隱藏表情|數量超過{{<number>}}個的評論', 'en': 'Hide comments | with more than {{<number>}} emoji' },
'commentEmojiTypesDesc': { 'zh-cn': '隐藏表情|种类超过{{<number>}}种的评论', 'zh-hk': '隱藏表情|種類超過{{<number>}}種的評論', 'zh-tw': '隱藏表情|種類超過{{<number>}}種的評論', 'en': 'Hide comments | with more than {{<number>}} kinds of emoji' },
'commentWithOutContentDesc': { 'zh-cn': '隐藏没有内容的评论(只有表情、提到等)', 'zh-hk': '隱藏沒有內容的評論(只有表情、提到等)', 'zh-tw': '隱藏沒有內容的評論(只有表情、提到等)', 'en': 'Comments without any text content (only mentions and emoji)' },
'commentWithForwardDesc': { 'zh-cn': '隐藏含有转发消息的微博', 'zh-hk': '隱藏含有轉發消息的微博', 'zh-tw': '隱藏含有轉發消息的微博', 'en': 'Comments contains forwarded messages' },
'commentWithPicture': { 'zh-cn': '带有图片的评论|{{<act>}}', 'zh-hk': '帶有圖片的評論|{{<act>}}', 'zh-tw': '帶有圖片的評論|{{<act>}}', 'en': 'Comments with picture | {{<act>}}' },
'commentWithPictureHide': { 'zh-cn': '隐藏评论', 'zh-hk': '隱藏評論', 'zh-tw': '隱藏評論', 'en': 'Hide comment' },
'commentWithPictureFold': { 'zh-cn': '使用查看图片按钮替换缩略图', 'zh-hk': '使用查看圖片按鈕替換縮圖', 'zh-tw': '使用查看圖片按鈕替換縮圖', 'en': 'Replace thumbnail with "View Pictrue" button' },
'deleteCommentHidden': { 'zh-cn': '如果权限允许自动删除被隐藏的评论{{<i>}}', 'zh-hk': '如果權限允許自動刪除被隱藏的評論{{<i>}}', 'zh-tw': '如果權限允許自動刪除被隱藏的評論{{<i>}}', 'en': 'Automatically delete hidden comments if permission allowed {{<i>}}' },
'deleteCommentHiddenDesc': {
'zh-cn': '请注意,打开该选项后,被您隐藏的且您有权限删除的评论都将被删除。这意味着其他人,包括发表这条评论的作者在内都不能再看到这条评论。而且如果您没有开启[[comment.otherc.my_comment]],那么可能会自动删除您发出的评论。'
},
// 模块
'layoutFilterGroupTitle': { 'zh-cn': '版面清理', 'zh-hk': '版面清理', 'zh-tw': '版面清理', 'en': 'Layout Cleanup' },
// 标识图标
'layoutHideIcon': { 'zh-cn': '隐藏模块 - 标识/图标', 'zh-hk': '隱藏模組 - 標誌/圖示', 'zh-tw': '隱藏模組 - 標誌/圖示', 'en': 'Hide modules - Logo / Icon' },
'layoutHideIconLevel': { 'zh-cn': '等级', 'zh-hk': 'Level', 'zh-tw': '等級', 'en': 'Level' },
'layoutHideIconMember': { 'zh-cn': '微博会员', 'zh-hk': '微博會員', 'zh-tw': '微博會員', 'en': 'Weibo VIP / Member' },
'layoutHideIconApprove': { 'zh-cn': '个人认证', 'zh-hk': '個人認證', 'zh-tw': '個人認證', 'en': 'Personal Authentication / 個人認證' },
'layoutHideIconApproveCo': { 'zh-cn': '机构认证', 'zh-hk': '企業認證', 'zh-tw': '企業認證', 'en': 'Weibo Verification / 企業認證' },
'layoutHideIconApproveDead': { 'zh-cn': '失效认证', 'zh-hk': '失效認證', 'zh-tw': '失效認證', 'en': 'Failed verification' },
'layoutHideIconClub': { 'zh-cn': '微博达人', 'zh-hk': '微博達人', 'zh-tw': '微博達人', 'en': 'Pioneer' },
'layoutHideIconVGirl': { 'zh-cn': '微博女郎', 'zh-hk': '微博女郎', 'zh-tw': '微博女郎', 'en': 'Weibo girl' },
'layoutHideIconTaobao': { 'zh-cn': '淘宝/天猫商户', 'zh-hk': '淘寶/天貓商戶', 'zh-tw': '淘寶/天貓商戶', 'en': 'Taobao / Tmall Merchant' },
'layoutHideIconCheng': { 'zh-cn': '阿里诚信通', 'zh-hk': '阿里誠信通', 'zh-tw': '阿里誠信通', 'en': 'Alibaba 诚信通' },
'layoutHideIconGongyi': { 'zh-cn': '公益', 'zh-hk': '公益', 'zh-tw': '公益', 'en': 'public Interest' },
'layoutHideIconZongyika': { 'zh-cn': '综艺', 'zh-hk': '综艺', 'zh-tw': '综艺', 'en': 'Variety' },
'layoutHideIconSuishoupai': { 'zh-cn': '随手拍', 'zh-hk': '随手拍', 'zh-tw': '随手拍', 'en': 'Photograph' },
'layoutHideIconYouji': { 'zh-cn': '旅行', 'zh-hk': '旅行', 'zh-tw': '旅行', 'en': 'Travel' },
'layoutHideIconDouble11': { 'zh-cn': '双11', 'zh-hk': '双11', 'zh-tw': '双11', 'en': 'Nov. 11<sup>th</sup>' },
'layoutHideIconNight': { 'zh-cn': '微博之夜', 'zh-hk': '微博之夜', 'zh-tw': '微博之夜', 'en': 'Weibo Night' },
'layoutHideIconRedPack': { 'zh-cn': '红包', 'zh-hk': '红包', 'zh-tw': '红包', 'en': 'Red Pack' },
'layoutHideIconRun': { 'zh-cn': '跑步', 'zh-hk': '跑步', 'zh-tw': '跑步', 'en': 'Run' },
'layoutHideIconFoolsDay': { 'zh-cn': '愚人节', 'zh-hk': '愚人节', 'zh-tw': '愚人节', 'en': "Fools' Day" },
// 导航栏
'layoutHideNav': { 'zh-cn': '隐藏模块 - 导航栏', 'zh-hk': '隱藏模組 - 導覽列', 'zh-tw': '隱藏模組 - 導覽列', 'en': 'Hide modules - Navigation Bar' },
'layoutHideNavLogoImg': { 'zh-cn': '节日徽标', 'zh-hk': '節日徽標', 'zh-tw': '節日徽標', 'en': 'Holiday logo' },
'layoutHideNavMain': { 'zh-cn': '首页', 'zh-hk': '首頁', 'zh-tw': '首頁', 'en': 'Home' },
'layoutHideNavHot': { 'zh-cn': '发现', 'zh-hk': '发现', 'zh-tw': '发现', 'en': 'Discover' },
'layoutHideNavGame': { 'zh-cn': '游戏', 'zh-hk': '遊戲', 'zh-tw': '遊戲', 'en': 'Game' },
'layoutHideNavHotSearch': { 'zh-cn': '大家正在搜', 'zh-hk': '大家正在搜', 'zh-tw': '大家正在熱搜', 'en': 'Hot search' },
'layoutHideNavHotSearchDesc': {
'zh-cn': '建议使用ABP等扩展,添加规则“ <code>http://s.weibo.com/ajax/jsonp/gettopsug*</code> ”,以达到更好的效果。',
},
'searchBarPlaceholder': {'zh-cn': '搜索微博、找人', 'zh-hk': '搜索微博、找人', 'zh-tw': '搜索微博、找人', 'en': 'Search for Weibo, People' },
'layoutHideNavNoticeNew': { 'zh-cn': '新消息计数', 'zh-hk': '新消息計數', 'zh-tw': '新消息計數', 'en': 'Count for new notice' },
'layoutHideNavSettingNew': { 'zh-cn': '新设置红点', 'zh-hk': '新設定紅點', 'zh-tw': '新設定紅點', 'en': 'Red dot for new settings' },
// 左栏
'layoutHideLeft': { 'zh-cn': '隐藏模块 - 左栏', 'zh-hk': '隱藏模組 - 左欄', 'zh-tw': '隱藏模組 - 左欄', 'en': 'Hide modules - Left Column' },
'layoutHideLeftFriends': { 'zh-cn': '好友圈', 'zh-hk': '好友圈', 'zh-tw': '好友圈', 'en': 'Friends' },
'layoutHideLeftGroupToMe': { 'zh-cn': '群微博', 'zh-hk': '群微博', 'zh-tw': '群微博', 'en': '群微博 (Group)' },
'layoutHideLeftSpecial': { 'zh-cn': '特别关注', 'zh-hk': '特别關注', 'zh-tw': '特别關注', 'en': 'Special Focus' },
'layoutHideLeftWhisper': { 'zh-cn': '悄悄关注', 'zh-hk': '悄悄關注', 'zh-tw': '悄悄關注', 'en': 'Secret Following' },
'layoutHideLeftNew': { 'zh-cn': '新微博提示红点', 'zh-hk': '新微博提示紅點', 'zh-tw': '新微博提示紅點', 'en': 'Red dot for new Weibo' },
'layoutHideLeftNews': { 'zh-cn': '新消息计数', 'zh-hk': '新消息計數', 'zh-tw': '新消息計數', 'en': 'Counts for News' },
'layoutHideLeftCount': { 'zh-cn': '新分组微博计数', 'zh-hk': '新分組微博計數', 'zh-tw': '新分組微博計數', 'en': 'Counts for Weibo by Group' },
// 中栏
'layoutHideMiddle': { 'zh-cn': '隐藏模块 - 中栏', 'zh-hk': '隱藏模組 - 中欄', 'zh-tw': '隱藏模組 - 中欄', 'en': 'Hide modules - Middle Column' },
'layoutHideMiddleRecommendedTopic': { 'zh-cn': '热门微博(发布框上方)', 'zh-hk': '热门微博(發布框上方)', 'zh-tw': '热门微博(發布框上方)'/* as is */, 'en': '热门微博 (Hot Weibo), on top of publisher' },
'layoutHideMiddleFeedRecommand': { 'zh-cn': '微博兴趣推荐(顶部)', 'zh-hk': '微博興趣推薦(頂部)', 'zh-tw': '微博興趣推薦(頂部)', 'en': 'Feed Recommendation, top' },
'layoutHideMiddleMemberTip': { 'zh-cn': '开通会员提示(底部)', 'zh-hk': '開通會員提示(底部)', 'zh-tw': '開通會員提示(底部)', 'en': 'Tip of Joining Weibo VIP, bottom' },
// 右栏
'layoutHideRight': { 'zh-cn': '隐藏模块 - 右栏', 'zh-hk': '隱藏模組 - 右欄', 'zh-tw': '隱藏模組 - 右欄', 'en': 'Hide modules - Right Column' },
'layoutHideRightInfo': { 'zh-cn': '个人信息', 'zh-hk': '个人信息', 'zh-tw': '个人信息', 'en': 'Personal Info' },
'layoutHideRightRecomMusicRank': { 'zh-cn': '亚洲新歌榜', 'zh-hk': '亚洲新歌榜', 'zh-tw': '亚洲新歌榜', 'en': '亚洲新歌榜 (Asian New Song List)' },
'layoutHideRightBookRank': { 'zh-cn': '亚洲好书榜', 'zh-hk': '亚洲好书榜', 'zh-tw': '亚洲好书榜', 'en': '亚洲好书榜 (Asian Top Book List)' },
'layoutHideRightHotTopic': { 'zh-cn': '热门话题', 'zh-hk': '熱門話題', 'zh-tw': '熱門話題', 'en': 'Hot Topic' },
'layoutHideRightHotTopicExpand': { 'zh-cn': '热门话题中的话题描述', 'zh-hk': '熱門話題中的話題描述', 'zh-tw': '熱門話題中的話題描述', 'en': 'Topic description in Hot Topic' },
'layoutHideRightGroups': { 'zh-cn': '分组成员列表', 'zh-hk': '分組成員列表', 'zh-tw': '分組成員列表', 'en': 'Members of group' },
'layoutHideRightRecomGroupUser': { 'zh-cn': '建议加入该分组', 'zh-hk': '建議加入該分組', 'zh-tw': '建議加入該分組', 'en': 'Suggest to add to this group' },
'layoutHideRightHongbaoRank': { 'zh-cn': '红包排行榜', 'zh-hk': '紅包排行榜', 'zh-tw': '紅包排行榜', 'en': 'Red Envelope Rank' },
'layoutHideRightInterest': { 'zh-cn': '可能感兴趣的人', 'zh-hk': '可能感興趣的人', 'zh-tw': '可能感興趣的人', 'en': 'You may know' },
'layoutHideRightMovie': { 'zh-cn': '电影热评榜', 'zh-hk': '电影热评榜', 'zh-tw': '电影热评榜', 'en': '电影热评榜 (Hot Movie)' },
'layoutHideRightAttFeed': { 'zh-cn': '好友关注动态', 'zh-hk': '好友关注动态', 'zh-tw': '好友关注动态', 'en': '好友关注动态 (Friends\' Attention)' },
'layoutHideRightAttFeedDesc': {
'zh-cn': '开启该隐藏选项只能让您自己不再看到“好友关注动态”模块,并不能阻止您出现在别人的“好友关注动态”中。'
},
'layoutHideRightMember': { 'zh-cn': '会员专区', 'zh-hk': '會員專區', 'zh-tw': '會員專區', 'en': 'Weibo VIP' },
'layoutHideRightTaobaoMovie': { 'zh-cn': '淘宝&微博 电影预售榜', 'zh-hk': '淘宝&微博 电影预售榜', 'zh-tw': '淘宝&微博 电影预售榜'/* as is */, 'en': '淘宝&微博 电影预售榜 (Taobao Movie)' },
'layoutHideRightNotice': { 'zh-cn': '公告栏', 'zh-hk': '公告欄', 'zh-tw': '公告欄', 'en': 'Bulletin Board' },
// 微博内
'layoutHideWeibo': { 'zh-cn': '隐藏模块 - 微博内', 'zh-hk': '隱藏模組 - 微博內', 'zh-tw': '隱藏模組 - 微博內', 'en': 'Hide modules - Weibo' },
'layoutHideWeiboRecomFeed': { 'zh-cn': '精彩微博推荐', 'zh-hk': '精彩微博推薦', 'zh-tw': '精彩微博推薦', 'en': 'Weibo you may interested in' },
'layoutHideWeiboFeedTip': { 'zh-cn': '评论框提示横幅', 'zh-hk': '評論框提示橫幅', 'zh-tw': '評論框提示橫幅', 'en': 'Tips for comment' },
'layoutHideWeiboFeedTipDesc': {
'zh-cn': '经常出现在评论框上方的横幅,通常包含如“微博社区管理中心举报处理大厅,欢迎查阅!”等内容。'
// 英语界面横幅内容无翻译
},
'layoutHideWeiboGroupTip': { 'zh-cn': '顶部分组或好友圈提醒', 'zh-hk': '頂部分組或好友圈提醒', 'zh-tw': '頂部分組或好友圈提醒', 'en': 'Tips for Weibo for groups or friends' },
'layoutHideWeiboVIPBackground': { 'zh-cn': '自定义卡片背景', 'zh-hk': '自訂卡片背景', 'zh-tw': '自訂卡片背景', 'en': 'Customized Card Background' },
'layoutHideWeiboLastPic': { 'zh-cn': '图片列表封底', 'zh-hk': '圖片清單封底', 'zh-tw': '圖片清單封底', 'en': 'Back cover of picture list' },
'layoutHideWeiboPicTag': { 'zh-cn': '图片标签', 'zh-hk': '圖片標籤', 'zh-tw': '圖片標籤', 'en': 'Tags for picture' },
'layoutHideWeiboTopComment': { 'zh-cn': '热门评论', 'zh-hk': '热门评论', 'zh-tw': '热门评论'/* as is */, 'en': 'Top comments' },
'layoutHideWeiboSonTitle': { 'zh-cn': '同源转发合并提示', 'zh-hk': '同源转发合并提示', 'zh-tw': '同源转发合并提示', 'en': '同源转发合并 (Merged forwards)' },
'layoutHideWeiboCard': { 'zh-cn': '微博卡片', 'zh-hk': '微博卡片', 'zh-tw': '微博卡片', 'en': 'Weibo Cards' },
'layoutHideWeiboCardDesc': {
'zh-cn': '微博内对分享内容的摘要描述,如话题卡片、长微博卡片、分享内容卡片等。隐藏后您可以开启工具选项卡中的“[[tool.weibotool.card_button]]”功能,点击链接在当前页面直接显示长微博或被分享的视频等。',
},
'layoutHideWeiboArticalPay': { 'zh-cn': '微博打赏', 'zh-hk': '微博打赏', 'zh-tw': '微博打赏', 'en': '微博打赏 (Weibo Actical Pay)' },
'layoutHideWeiboTag': { 'zh-cn': '微博标签', 'zh-hk': '微博標籤', 'zh-tw': '微博標籤', 'en': 'Tags for Weibo' },
'layoutHideWeiboMovieTag': { 'zh-cn': '微博电影/话题', 'zh-hk': '微博電影/話題', 'zh-tw': '微博電影/話題', 'en': 'Weibo Movie / Topic' },
'layoutHideWeiboMovieTagDesc': { 'zh-cn': '位于微博底部的根据微博正文内容的关键字自动生成的话题、电影等的链接。' },
'layoutHideWeiboSource': { 'zh-cn': '来源', 'zh-hk': '來源', 'zh-tw': '來源', 'en': 'Source' },
'layoutHideWeiboPop': { 'zh-cn': '推广', 'zh-hk': '推廣', 'zh-tw': '推廣', 'en': ' Promote' },
'layoutHideWeiboLike': { 'zh-cn': '赞 - 微博', 'zh-hk': '讚 - 微博', 'zh-tw': '讚 - 微博', 'en': 'Like - Weibo' },
'layoutHideWeiboLikeComment': { 'zh-cn': '赞 - 评论', 'zh-hk': '讚 - 評論', 'zh-tw': '讚 - 評論', 'en': 'Like - Comment' },
'layoutHideWeiboForward': { 'zh-cn': '转发', 'zh-hk': '轉發', 'zh-tw': '轉發', 'en': 'Forward' },
'layoutHideWeiboFavourite': { 'zh-cn': '收藏', 'zh-hk': '收藏', 'zh-tw': '收藏', 'en': 'Favourite' },
'layoutHideWeiboPromoteOther': { 'zh-cn': '帮上头条', 'zh-hk': '帮上头条', 'zh-tw': '帮上头条', 'en': '帮上头条' },
'layoutHideWeiboReport': { 'zh-cn': '举报', 'zh-hk': '舉報', 'zh-tw': '舉報/檢舉', 'en': 'Report' },
'layoutHideWeiboShield': { 'zh-cn': '屏蔽', 'zh-hk': '屏蔽', 'zh-tw': '屏蔽', 'en': '屏蔽' },
'layoutHideWeiboUseCardBackground': { 'zh-cn': '使用此卡片背景', 'zh-hk': '使用此卡片背景', 'zh-tw': '使用此卡片背景', 'en': '使用此卡片背景' },
// 个人主页
'layoutHidePerson': { 'zh-cn': '隐藏模块 - 个人主页', 'zh-hk': '隱藏模組 - 個人主頁', 'zh-tw': '隱藏模組 - 個人主頁', 'en': 'Hide modules - Personal home page' },
'layoutHidePersonMoveThings': { 'zh-cn': '移动部件(会员模板)', 'zh-hk': '移動部件(會員模板)', 'zh-tw': '移動部件(會員模板)', 'en': 'Moving Things (VIP Template)' },
'layoutHidePersonCover': { 'zh-cn': '封面图', 'zh-hk': '封面圖', 'zh-tw': '封面圖', 'en': 'Cover Picture' },
'layoutHidePersonBGImg': { 'zh-cn': '背景图', 'zh-hk': '背景圖', 'zh-tw': '背景圖', 'en': 'Background Picture' },
'layoutHidePersonBadgeIcon': { 'zh-cn': '勋章', 'zh-hk': '勳章', 'zh-tw': '勳章', 'en': 'Badges' },
'layoutHidePersonVerify': { 'zh-cn': '个人资料认证', 'zh-hk': '個人資料認證', 'zh-tw': '個人資料認證', 'en': 'Person Info Verification' },
'layoutHidePersonEditPersonInfo': { 'zh-cn': '编辑个人资料', 'zh-hk': '编辑个人资料', 'zh-tw': '编辑个人资料', 'en': '编辑个人资料 (Edit person info)' },
'layoutHidePersonStats': { 'zh-cn': '关注/粉丝/微博数', 'zh-hk': '關注/粉絲/微博數', 'zh-tw': '關注/粉絲/微博數', 'en': 'Numbers of Following/Followers/Weibo' },
'layoutHidePersonMyData': { 'zh-cn': '我的微博人气', 'zh-hk': '我的微博人气', 'zh-tw': '我的微博人气', 'en': 'Weibo Popularity' },
'layoutHidePersonSuggestUser': { 'zh-cn': '可能感兴趣的人', 'zh-hk': '可能感兴趣的人', 'zh-tw': '可能感兴趣的人'/* as is */, 'en': 'Suggested' },
'layoutHidePersonGroup': { 'zh-cn': '公开分组', 'zh-hk': '公开分组', 'zh-tw': '公开分组'/* as is */, 'en': '公开分组 (Public Group)' },
'layoutHidePersonRelation': { 'zh-cn': '微关系', 'zh-hk': '微关系', 'zh-tw': '微关系'/* as is */, 'en': 'Weibo relations' },
'layoutHidePersonAlbum': { 'zh-cn': '图片', 'zh-hk': '相冊', 'zh-tw': '相冊', 'en': 'Album' },
'layoutHidePersonHotTopic': { 'zh-cn': '话题', 'zh-hk': '話題', 'zh-tw': '話題', 'en': 'Topic' },
'layoutHidePersonHotWeibo': { 'zh-cn': '热门微博', 'zh-hk': '熱門微博', 'zh-tw': '熱門微博', 'en': 'Hot Weibo' },
'layoutHidePersonUserList': { 'zh-cn': '与他/她相似的人', 'zh-hk': '與他/她相似的人', 'zh-tw': '與他/她相似的人', 'en': 'with He/SheSimilar Person' /* as is */ },
'layoutHidePersonHongbao': { 'zh-cn': '微博红包', 'zh-hk': '微博红包', 'zh-tw': '微博红包', 'en': '微博红包 (Red pack)' },
'layoutHidePersonWenwoDr': { 'zh-cn': '爱问医生', 'zh-hk': '爱问医生', 'zh-tw': '爱问医生', 'en': '爱问医生 (Iask medical)' },
'layoutHidePersonTimeline': { 'zh-cn': '时间轴', 'zh-hk': '時間軸', 'zh-tw': '時間軸', 'en': 'Timeline' },
// 个人主页边栏模块
'layoutHidePLeft': { 'zh-cn': '隐藏模块 - 边栏其他', 'zh-hk': '隱藏其他 - 邊欄其他', 'zh-tw': '隱藏模組 - 邊欄其他', 'en': 'Hide modules - Others in side column' },
'layoutHidePLeftDesc': {
'zh-cn': '边栏除上述的一些统一的模块外,有一些可以自定义的模块(主要是企业认证用户)。这些模块无法一一列举,你可以将要屏蔽的模块的标题添加到这里来屏蔽这些模块。'
},
'layoutHidePLeftDetails': { 'zh-cn': '隐藏个人主页边栏中以下标题的模块<br />模块', 'zh-hk': '隱藏個人主頁邊欄中以下標題的模組<br />模組', 'zh-tw': '隱藏個人主頁邊欄中以下標題的模組<br />模組', 'en': 'Hide modules on personal homepage with these titles<br />Modules' },
// 消息页面
'layoutHideMessages': { 'zh-cn': '隐藏模块 - 消息页面', 'zh-hk': '隱藏模組 - 消息網頁', 'zh-tw': '隱藏模組 - 消息網頁', 'en': 'Hide modules - News page' },
'layoutHideMessagesHelp': { 'zh-cn': '使用小帮助', 'zh-hk': '使用小幫助', 'zh-tw': '使用小幫助', 'en': 'Tips' },
'layoutHideMessagesFeedback': { 'zh-cn': '微博意见反馈', 'zh-hk': '微博意见反馈', 'zh-tw': '微博意见反馈'/* as is */, 'en': 'Feed Back'/* as is */ },
'layoutHideMessagesYoudao': { 'zh-cn': '导出收藏夹', 'zh-hk': '导出收藏夹', 'zh-tw': '导出收藏夹', 'en': 'Export favorites' },
// 杂项
'layoutHideOther': { 'zh-cn': '隐藏模块 - 杂项', 'zh-hk': '隱藏模組 - 雜項', 'zh-tw': '隱藏模組 - 雜項', 'en': 'Hide modules - Others' },
'layoutHideOtherAds': { 'zh-cn': '广告', 'zh-hk': '廣告', 'zh-tw': '廣告', 'en': 'Advertisement' },
'layoutHideOtherMusic': { 'zh-cn': '微音乐', 'zh-hk': '微音乐', 'zh-tw': '微音乐'/* as is */, 'en': '微音乐 (Weibo Music)' },
'layoutHideOtherTemplate': { 'zh-cn': '设置模板', 'zh-hk': '背景設定', 'zh-tw': '背景設定', 'en': 'Template Settings' },
'layoutHideOtherHomeTip': { 'zh-cn': '顶部提示横幅', 'zh-hk': '頂部提示橫幅', 'zh-tw': '頂部提示橫幅', 'en': 'Top tips banner' },
'layoutHideOtherHomeTipDesc': {
'zh-cn': '出现在导航栏下方其他所有内容的上方的横幅。一般用来推荐微博重要的新功能。',
},
'layoutHideOtherFooter': { 'zh-cn': '页面底部', 'zh-hk': '頁面底部', 'zh-tw': '頁面底部', 'en': 'Footer' },
'layoutHideOtherFooterDesc': {
'zh-cn': '页面底部的导航链接。',
},
'layoutHideOtherWbIm': { 'zh-cn': '微博桌面推荐(右下)', 'zh-hk': '微博桌面推薦(右下)', 'zh-tw': '微博桌面推薦(右下)', 'en': '微博桌面2014 (Desktop Weibo), bottom right' },
'layoutHideOtherWbImDesc': {
'zh-cn': '偶尔出现在右下角的推荐安装微博桌面的提示框。',
},
'layoutHideOtherIM': { 'zh-cn': '私信聊天(右下)', 'zh-hk': '私信聊天(右下)', 'zh-tw': '私信聊天(右下)'/* as is */, 'en': 'Chat (bottom right)' },
'layoutHideOtherIMDesc': {
'zh-cn': '隐藏后您还可以在私信页面收发私信:鼠标指向右上角消息图标在下拉菜单中选择“私信”即可打开私信页面。',
},
'layoutHideOtherTip': { 'zh-cn': '功能提示框', 'zh-hk': '功能提示框', 'zh-tw': '功能提示框', 'en': 'Function Tips' },
'layoutHideOtherTipDesc': {
'zh-cn': '偶尔会出现的新功能推荐的弹框,如果隐藏了对应功能的界面可能弹框会显示到奇怪的地方。',
},
'layoutHideOtherRelatedWB': { 'zh-cn': '相关微博推荐', 'zh-hk': '相关微博推荐', 'zh-tw': '相关微博推荐', 'en': '相关微博推荐 (Related Weibo)' },
'layoutHideOtherRelatedWBDesc': {
'zh-cn': '在单条微博页面可以看到的相关微博推荐',
},
'layoutHideOtherSendWeibo': { 'zh-cn': '首页外的微博发布框', 'zh-hk': '首頁外的微博發佈框', 'zh-tw': '首頁外的微博發佈框', 'en': 'All other Weibo publishers' },
'layoutHideOtherSendWeiboDesc': {
'zh-cn': '除了首页的微博发布框,右上角按钮弹出的快速发布框外;其他的各种发布框。如微博文章下方转发用的发布框等。',
},
// 工具
'toolFilterGroupTitle': { 'zh-cn': '功能改造', 'zh-hk': '功能改造', 'zh-tw': '功能改造', 'en': 'Functions' },
// 边栏
'sideColumnToolsTitle': { 'zh-cn': '边栏', 'zh-hk': '邊欄', 'zh-tw': '邊欄', 'en': 'Side Column' },
'showAllGroupDesc': { 'zh-cn': '展开左栏分组', 'zh-hk': '展開左欄分組', 'zh-tw': '展開左欄分組', 'en': 'Unfold groups in left column' },
'showAllMsgNav': {
'zh-cn': '在首页左栏展开消息,显示以下快捷链接{{<i>}}||{{<atme>}}{{leftNavAtMe}}|{{<cmt>}}{{leftNavCmt}}|{{<like>}}{{leftNavLike}}|{{<dm>}}{{leftNavDM}}|{{<msgbox>}}{{leftNavMsgBox}}|{{<group>}}{{leftNavGroup}}|{{<dmsub>}}{{leftNavDMSub}}',
'zh-hk': '在首頁左欄展開消息,顯示以下快捷連結{{<i>}}||{{<atme>}}{{leftNavAtMe}}|{{<cmt>}}{{leftNavCmt}}|{{<like>}}{{leftNavLike}}|{{<dm>}}{{leftNavDM}}|{{<msgbox>}}{{leftNavMsgBox}}|{{<group>}}{{leftNavGroup}}|{{<dmsub>}}{{leftNavDMSub}}',
'zh-tw': '在首頁左欄展開消息,顯示以下快捷連結{{<i>}}||{{<atme>}}{{leftNavAtMe}}|{{<cmt>}}{{leftNavCmt}}|{{<like>}}{{leftNavLike}}|{{<dm>}}{{leftNavDM}}|{{<msgbox>}}{{leftNavMsgBox}}|{{<group>}}{{leftNavGroup}}|{{<dmsub>}}{{leftNavDMSub}}',
'en': 'Expand news in left column of home page with following items{{<i>}}||{{<atme>}}{{leftNavAtMe}}|{{<cmt>}}{{leftNavCmt}}|{{<like>}}{{leftNavLike}}||{{<dm>}}{{leftNavDM}}|{{<msgbox>}}{{leftNavMsgBox}}|{{<group>}}{{leftNavGroup}}|{{<dmsub>}}{{leftNavDMSub}}'
},
'showAllMsgNavDesc': {
'zh-cn': '屏幕分辨率过小时请勿选择该项,否则可能会显示不完全。'
},
'leftNavMsg': { 'zh-cn': '消息', 'zh-hk': '消息', 'zh-tw': '消息', 'en': 'News' },
'leftNavAtMe': { 'zh-cn': '@我的', 'zh-hk': '@我的', 'zh-tw': '@我的', 'en': '@My'/* as is */ },
'leftNavCmt': { 'zh-cn': '评论', 'zh-hk': '評論', 'zh-tw': '評論', 'en': 'Comment' },
'leftNavLike': { 'zh-cn': '赞', 'zh-hk': '讚', 'zh-tw': '讚', 'en': 'Like' },
'leftNavDM': { 'zh-cn': '私信', 'zh-hk': '私信', 'zh-tw': '私信', 'en': 'Message' },
'leftNavMsgBox': { 'zh-cn': '未关注人私信', 'zh-hk': '未關注人私信', 'zh-tw': '未關注人私信', 'en': 'Messages from those you don\'t follow' },
'leftNavGroup': { 'zh-cn': '群通知', 'zh-hk': '群通知', 'zh-tw': '群通知', 'en': '群通知'/* as is */ },
'leftNavDMSub': { 'zh-cn': '订阅消息', 'zh-hk': '订阅消息', 'zh-tw': '订阅消息', 'en': '订阅消息'/* as is */ },
'mergeLeftRight': { 'zh-cn': '合并左右边栏|到{{<side>}}{{<i>}}', 'zh-hk': '合併左右邊欄|到{{<side>}}{{<i>}}', 'zh-tw': '合併左右邊欄|到{{<side>}}{{<i>}}', 'en': 'Merge left & right column | to {{<side>}}{{<i>}}' },
'mergeLeftRightLeft': { 'zh-cn': '左侧', 'zh-hk': '左側', 'zh-tw': '左側', 'en': 'left side' },
'mergeLeftRightRight': { 'zh-cn': '右侧', 'zh-hk': '右側', 'zh-tw': '右側', 'en': 'right side' },
'mergeLeftRightDesc': {
'zh-cn': '开启此选项后,左栏切换页面可能会导致微音乐播放中断。'
},
'choseSide': { 'zh-cn': '统一个人主页、话题、单条微博等页面侧栏|到{{<side>}}', 'zh-hk': '統一個人主頁、話題、單條微博等頁面側欄|到{{<side>}}', 'zh-tw': '統一個人主頁、話題、單條微博等頁面側欄|到{{<side>}}', 'en': 'Relocate side bar for pages of user, topic, and, single Weibo | to {{<side>}}' },
'choseSideLeft': { 'zh-cn': '左侧', 'zh-hk': '左側', 'zh-tw': '左側', 'en': 'left side' },
'choseSideRight': { 'zh-cn': '右侧', 'zh-hk': '右側', 'zh-tw': '右側', 'en': 'right side' },
'filteRightTopic': { 'zh-cn': '应用微博过滤黑名单到右栏热门话题', 'zh-hk': '應用微博篩選黑名單到右欄熱門話題', 'zh-tw': '應用微博篩選黑名單到右欄熱門話題', 'en': 'Apply blacklist filters to Hot Topic in right column' },
'filteRightTopicCount': { 'zh-cn': '热门话题列表隐藏|阅读数少于{{<number>}}万的话题', 'zh-hk': '熱門話題清單隱藏|閱讀數少於{{<number>}}萬的話題', 'zh-tw': '熱門話題清單隱藏|閱讀數少於{{<number>}}萬的話題', 'en': 'Hide hot topics with | less than {{<number>}}万 readings' },
'addRightUserList': { 'zh-cn': '在首页右边栏显示收藏帐号列表{{<i>}}', 'zh-hk': '在首頁右邊欄顯示收藏帳號清單{{<i>}}', 'zh-tw': '在首頁右邊欄顯示收藏帳號清單{{<i>}}', 'en': 'Add links of accounts to right column{{<i>}}' },
'addRightUserListDesc': {
'zh-cn': '在首页右边栏添加一个“收藏帐号”的列表,里面列出指向这些用户的个人主页的链接,方便您快速打开对应用户的个人主页,查看他最近的微博。'
},
'addRightUserListTooManyTitle': { 'zh-cn': '收藏帐号过多', 'zh-hk': '收藏帳號過多', 'zh-tw': '收藏帳號過多', 'en': 'Too Many Fave People' },
'addRightUserListTooMany': {
'zh-cn': '您添加了过多的收藏帐号,为了避免给服务器造成过大的压力,自动检查首页是否有遗漏的微博的功能将仅对该列表中的前 50 位帐号生效。',
'zh-hk': '您添加了過多的收藏帳號,為了避免給伺服器造成過大的壓力,自動檢查首頁是否有遺漏的微博的功能將僅對該列表中的前 50 位帳號生效。',
'zh-tw': '您添加了過多的收藏帳號,為了避免給伺服器造成過大的壓力,自動檢查首頁是否有遺漏的微博的功能將僅對該列表中的前 50 位帳號生效。',
'en': 'Too many fave people: The function for checking if there are any Weibo not shown on home page will only apply to first 50 accounts to avoid too many network access.'
},
'addRightUserListNotice': { 'zh-cn': '自动检查您是否遗漏了收藏用户的微博{{<i>}}', 'zh-hk': '自動檢查您是否遺漏了收藏用戶的微博{{<i>}}', 'zh-tw': '自動檢查您是否遺漏了收藏用戶的微博{{<i>}}', 'en': 'Check if all Weibo from fave people you have read {{<i>}}' },
'addRightUserListNoticeDesc': {
'zh-cn': '如果您不想错过某个人的微博,那么就将他加到收藏帐号的列表中。脚本会在您打开首页时自动打开这些人的个人主页,检查他们的微博是否您都看到过。一旦发现了漏掉的微博,脚本会在帐号旁边用小红点标记。'
},
'addRightUserListConfigTitle': { 'zh-cn': '收藏帐号设置 - Yet Another Weibo Filter', 'zh-hk': '收藏帳號設定 - Yet Another Weibo Filter', 'zh-tw': '收藏帳號設定 - Yet Another Weibo Filter', 'en': 'Fave People Setting - Yet Another Weibo Filter' },
'rightUserListTitle': { 'zh-cn': '收藏帐号', 'zh-hk': '收藏帳號', 'zh-tw': '收藏帳號', 'en': 'Fave People' },
// 浮动元素
'fixedItemsTitle': { 'zh-cn': '浮动元素', 'zh-hk': '浮動元素', 'zh-tw': '浮動元素', 'en': 'Floating Items' },
'floatNav': { 'zh-cn': '自动隐藏导航栏', 'zh-hk': '自動隱藏導覽列', 'zh-tw': '自動隱藏導覽列', 'en': 'Auto hide nav bar' },
'fixedLeft': { 'zh-cn': '允许首页左边栏随页面滚动始终显示', 'zh-hk': '允許首頁左邊欄隨頁面滾動始終顯示', 'zh-tw': '允許首頁左邊欄隨頁面滾動始終顯示', 'en': 'Floating left column' },
'fixedRight': { 'zh-cn': '允许首页右边栏随页面滚动始终显示{{<i>}}', 'zh-hk': '允許首頁右邊欄隨頁面滾動始終顯示{{<i>}}', 'zh-tw': '允許首頁右邊欄隨頁面滾動始終顯示{{<i>}}', 'en': 'Floating right column{{<i>}}' },
'fixedRightDesc': {
'zh-cn': '如果同时启用了“[[tool.sidebar.merge_left_right]]”和“[[tool.fixed.fixed_left]]”,则该选项将不生效。',
},
'fixedNewFeedTip': { 'zh-cn': '允许新微博提示随页面滚动始终显示', 'zh-hk': '允許新微博提示隨頁面滾動始終顯示', 'zh-tw': '允許新微博提示隨頁面滾動始終顯示', 'en': 'Floating new feeds tip' },
'fixedOthers': { 'zh-cn': '允许其他元素随页面滚动始终显示', 'zh-hk': '允許其他元素隨頁面滾動始終顯示', 'zh-tw': '允許其他元素隨頁面滾動始終顯示', 'en': 'Other floating items' },
// 微博
'weiboToolsTitle': { 'zh-cn': '微博', 'zh-hk': '微博', 'zh-tw': '微博', 'en': 'Weibo' },
'unfoldLongWeibo': { 'zh-cn': '自动展开|不超过{{<count>}}字的微博|(每个换行符计{{<br>}}字)', 'zh-hk': '自動展開|不超過{{<count>}}個字的微博|(每個換行符計{{<br>}}字)', 'zh-tw': '自動展開|不超過{{<count>}}個字的微博|(每個換行符計{{<br>}}字)', 'en': 'Automatically unfold weibo | within {{<count>}} characters || (count each line break as {{<br>}} characters)' },
'unfoldWeiboLength': { 'zh-cn': '(约{{length}}字)', 'zh-hk': '(約{{length}}字)', 'zh-tw': '(約{{length}}字)', 'en': '(about {{length}} charactors)' },
'clearDefTopicDesc': { 'zh-cn': '清除发布框中的默认话题', 'zh-hk': '清除發布框中的預設話題', 'zh-tw': '清除發布框中的預設話題', 'en': 'Remove default topic in Publisher' },
'fastEmojiInputTop': { 'zh-cn': '置顶', 'zh-hk': '置頂', 'zh-tw': '置頂', 'en': 'Top' },
'fastEmojiInputTopNotice': { 'zh-cn': '将下方表情拖放至此置顶', 'zh-hk': '將下方表情拖放至此置頂', 'zh-tw': '將下方表情拖放至此置頂', 'en': 'Drag emoji and drop here to sticky' },
'fastEmojiInputRecent': { 'zh-cn': '最近', 'zh-hk': '最近', 'zh-tw': '最近', 'en': 'Recent' },
'fastEmojiClear': { 'zh-cn': '清空列表', 'zh-hk': '清除清單', 'zh-tw': '清除清單', 'en': 'Clear List' },
'personalRedirectWeibo': { 'zh-cn': '用户主页默认显示全部微博而非热门微博', 'zh-hk': '用戶主頁默認顯示全部微博而非热门微博', 'zh-tw': '用戶主頁默認顯示全部微博而非热门微博', 'en': 'Personal page show all Weibo instead of hot by default' },
'uncheckFollowPresenter': { 'zh-cn': '话题页面发布框取消默认勾选关注主持人', 'zh-hk': '話題頁面發佈框取消預設勾選關注主持人', 'zh-tw': '話題頁面發佈框取消預設勾選關注主持人', 'en': 'Uncheck follow presenter in topic page' },
'publishToPublicDefault': { 'zh-cn': '分组浏览时默认发布公开微博', 'zh-hk': '分組流覽時默認發佈公開微博', 'zh-tw': '分組流覽時默認發佈公開微博', 'en': 'Publish to public by default when browsing by group' },
'publishToPublicText': { 'zh-cn': '公开', 'zh-hk': '公開', 'zh-tw': '公開', 'en': 'Public' },
'cardButton': { 'zh-cn': '使用微博卡片的按钮替换对应链接{{<i>}}', 'zh-hk': '使用微博卡片的按鈕替換對應連結{{<i>}}', 'zh-tw': '使用微博卡片的按鈕替換對應連結{{<i>}}', 'en': 'Replace the corresponding links by buttons in Weibo cards' },
'cardButtonDesc': {
'zh-cn': '默认情况下只有点击卡片中的按钮才会在当前页显示长微博或分享的视频,点击链接则会直接在新页打开。启用该功能可以使点击链接时的反应与点击按钮时相同。启用后您还可以在模块选项卡中选择隐藏微博内的“[[layout.weibo.card]]”隐藏掉整个卡片。',
},
'viewOriginal': { 'zh-cn': '添加“查看原图”链接|打开{{<open>}}||{{<direct>}}点击缩略图时直接查看原图', 'zh-hk': '添加「查看原圖」連結|打開{{<open>}}||{{<direct>}}點擊縮略圖時直接查看原圖', 'zh-tw': '添加「查看原圖」連結|打開{{<open>}}||{{<direct>}}點擊縮略圖時直接查看原圖', 'en': 'add "Original Picture" link | which target to {{<open>}} || {{<direct>}} View orignal picture by clicking on thumbnail' },
'viewOriginalPage': { 'zh-cn': '包含原图的网页', 'zh-hk': '包含原圖的網頁', 'zh-tw': '包含原圖的網頁', 'en': 'page with original picture' },
'viewOriginalImage': { 'zh-cn': '原图', 'zh-hk': '原圖', 'zh-tw': '原圖', 'en': 'original picture' },
'viewOriginalTitle': { 'zh-cn': '查看原图 - YAWF', 'zh-hk': '查看原圖 - YAWF', 'zh-tw': '查看原圖 - YAWF', 'en': 'View Original Picture - YAWF' },
'noTagDialog': { 'zh-cn': '收藏微博时将添加标签的对话框替换为气泡(试验性)', 'zh-hk': '收藏微博時將添加標籤的對話方塊替換為泡泡圖(試驗性)', 'zh-tw': '收藏微博時將添加標籤的對話方塊替換為泡泡圖(試驗性)', 'en': 'Show bubble instead of dialog after marking weibo favorite (Experimental)' },
'html5Vdieo': { 'zh-cn': '播放秒拍视频时使用 HTML5 播放器{{<i>}}', 'zh-hk': '播放秒拍視頻時使用 HTML5 播放器{{<i>}}', 'zh-tw': '播放秒拍視頻時使用 HTML5 播放器{{<i>}}', 'en': 'Play weibo video via HTML5 player{{<i>}}' },
'html5VdieoDesc': {
'zh-cn': '仅支持部分视频,可能有一些视频无法正常替换。此外还请确认您的浏览器支持播放 MP4 格式视频:部分操作系统上的旧版 Firefox 、Chromium 和一些基于 Chromium 的浏览器可能并不支持 MP4 格式视频。',
},
'foldDetails': { 'zh-cn': '收起', 'zh-hk': '收起', 'zh-tw': '收起', 'en': '收起'/* as is */ },
'viewOriginalText': { 'zh-cn': '查看原图', 'zh-hk': '查看原圖', 'zh-tw': '查看原圖', 'en': 'Original Picture' },
'viewOriginalFCText': { 'zh-cn': '查看图片', 'zh-hk': '查看圖片', 'zh-tw': '查看圖片', 'en': 'View Picture' },
'replaceLinkByUrl': { 'zh-cn': '将微博中的网页链接替换为短网址', 'zh-hk': '將微博中的网页链接替換為短網址', 'zh-tw': '將微博中的网页链接替換為短網址', 'en': 'Replace 网页链接 in Weibo by shortened URL' },
'replaceImageEmoji': { 'zh-cn': '将微博中图片表示的 Unicode 表情符号替换为文本{{<i>}}', 'zh-hk': '將微博中圖片表示的 Unicode Emoji 替換為文本{{<i>}}', 'zh-tw': '將微博中圖片表示的 Unicode Emoji 替換為文本{{<i>}}', 'en': 'Use text for unicode emoji instead of image {{<i>}}' },
'replaceImageEmojiDesc': {
'zh-cn': '使用文本替换对应图片。表情会随您使用的操作系统、浏览器、安装的字体的不同而显示成不的样子。Firefox 和 Safari 可以得到较好的效果。<hr />替换前 <span style="font-size: 20px"><img width="20px" height="20px" src="http://img.t.sinajs.cn//t4/appstyle/expression/emimage/ee8192.png"><img width="20px" height="20px" src="http://img.t.sinajs.cn//t4/appstyle/expression/emimage/ee8098.png"><img width="20px" height="20px" src="http://img.t.sinajs.cn//t4/appstyle/expression/emimage/ee84b2.png"><img width="20px" height="20px" src="http://img.t.sinajs.cn//t4/appstyle/expression/emimage/ee8cac.png"><img width="20px" height="20px" src="http://img.t.sinajs.cn//t4/appstyle/expression/emimage/ee8992.png"><img width="20px" height="20px" src="http://img.t.sinajs.cn//t4/appstyle/expression/emimage/ee888b.png"><img width="20px" height="20px" src="http://img.t.sinajs.cn//t4/appstyle/expression/emimage/ee84ad.png"><img width="20px" height="20px" src="http://img.t.sinajs.cn//t4/appstyle/expression/emimage/ee9493.png"></span><br />替换后 <span style="font-size: 20px">🐶⚽️🏁💛⚠️📶🀄️🇨🇳</span>'
},
'customizeSourceWeibo': { 'zh-cn': '自定义来源微博仅显示“来自微博 weibo.com”', 'zh-hk': '自訂來源微博僅顯示「來自微博 weibo.com」', 'zh-tw': '自訂來源微博僅顯示「來自微博 weibo.com」', 'en': 'Weibo with customize source show "come from 微博 weibo.com" only' },
'weiboViaText': { 'zh-cn': '来自', 'zh-hk': '来自', 'zh-tw': '来自', 'en': '来自'/* as is */ },
'customizeSourceWeiboDesc': {
'zh-cn': '微博会员在发布微博时可以使用自定义文本来显示个性化来源,您可以隐藏这些微博或将这些微博的来源显示为默认来源',
},
// 其他
'otherToolsTitle': { 'zh-cn': '其他', 'zh-hk': '其他', 'zh-tw': '其他', 'en': 'Others' },
'fastEmojiInput': { 'zh-cn': '表情选择框优先列出常用及置顶表情', 'zh-hk': '表情選擇框優先列出常用及置頂表情', 'zh-tw': '表情選擇框優先列出常用及置頂表情', 'en': 'List top and recent emoji on the top of emoji selector' },
'showLocalTime': { 'zh-cn': '显示时间时使用本机时区', 'zh-hk': '顯示時間時使用本機時區', 'zh-tw': '顯示時間時使用本機時區', 'en': 'Show timestamp with local time zone' },
// 样式
'styleFilterGroupTitle': { 'zh-cn': '外观样式', 'zh-hk': '外觀樣式', 'zh-tw': '外觀樣式', 'en': 'Appearance' },
// 文字
'textStyleTitle': { 'zh-cn': '文字', 'zh-hk': '文字', 'zh-tw': '文字', 'en': 'Text' },
'customFontFamily': { 'zh-cn': '替换默认字体为|西文{{<wf>}}|中文{{<cf>}}', 'zh-hk': '替換預設字形為|西文{{<wf>}}|中文{{<cf>}}', 'zh-tw': '替換預設字形為|西文{{<wf>}}|中文{{<cf>}}', 'en': 'Replace the default font as | Western {{<wf>}} | Chinese {{<cf>}}' },
'weiboLargeFont': { 'zh-cn': '增大微博正文字号为|原大小的{{<ratio>}}', 'zh-hk': '增大微博正文字型大小為|原大小的{{<ratio>}}', 'zh-tw': '增大微博正文字型大小為|原大小的{{<ratio>}}', 'en': 'Increase font size of Weibo content to | {{<ratio>}}' },
'weiboLargeFont120': { 'zh-cn': '120%', 'zh-hk': '120%', 'zh-tw': '120%', 'en': '120%' },
'weiboLargeFont150': { 'zh-cn': '150%', 'zh-hk': '150%', 'zh-tw': '150%', 'en': '150%' },
'weiboLargeFont200': { 'zh-cn': '200%', 'zh-hk': '200%', 'zh-tw': '200%', 'en': '200%' },
'weiboLargeFont300': { 'zh-cn': '300%', 'zh-hk': '300%', 'zh-tw': '300%', 'en': '300%' },
// 版面
'layoutStyleTitle': { 'zh-cn': '版面', 'zh-hk': '版面', 'zh-tw': '版面', 'en': 'Layout' },
'avatarShape': { 'zh-cn': '统一头像形状为|{{<shape>}}', 'zh-hk': '統一頭像形狀為|{{<shape>}}', 'zh-tw': '統一頭像形狀為|{{<shape>}}', 'en': 'Show all avatars as | {{<shape>}}' },
'avatarShapeCircle': { 'zh-cn': '圆形', 'zh-hk': '圓形', 'zh-tw': '圓形', 'en': 'Circle' },
'avatarShapeSquare': { 'zh-cn': '方形', 'zh-hk': '方形', 'zh-tw': '方形', 'en': 'Square' },
'darkNavBar': { 'zh-cn': '使用深色的导航栏', 'zh-hk': '使用深色的導覽列', 'zh-tw': '使用深色的導覽列', 'en': 'Dark nav bar' },
'reorderNavBar': { 'zh-cn': '恢复经典导航栏样式{{<i>}}', 'zh-hk': '恢復經典導覽列樣式{{<i>}}', 'zh-tw': '恢復經典導覽列樣式{{<i>}}', 'en': 'Restore classical style navigator {{<i>}}' },
'reorderNavBarDesc': {
'zh-cn': '微博字样紧贴在标识右侧显示,“首页”“热门”“游戏”的链接出现在搜索框的左侧。'
},
'widthWeibo': { 'zh-cn': '设置微博宽度为|{{<width>}}像素 {{<i>}}', 'zh-hk': '設置微博寬度為|{{<width>}}圖元 {{<i>}}', 'zh-tw': '設置微博寬度為|{{<width>}}圖元 {{<i>}}', 'en': 'Set width of Weibo to | {{<width>}}px {{<i>}}' },
'widthWeiboDesc': {
'zh-cn': '如果您开启了[[tool.sidebar.merge_left_right]],调整该宽度为 750px 可以恢复原有的页面宽度。'
},
'weiboOnly': {
'zh-cn': '阅读视图|宽度{{<width>}}像素||快捷键{{<key>}}||{{<switch>}}在微博列表顶部显示快捷开关按钮',
'zh-hk': '閱讀視圖|寬度{{<width>}}圖元||快速鍵{{<key>}}||{{<switch>}}在微博清單頂部顯示快速開關按鈕',
'zh-tw': '閱讀視圖|寬度{{<width>}}圖元||快速鍵{{<key>}}||{{<switch>}}在微博清單頂部顯示快速開關按鈕',
'en': 'Reading View | width {{<width>}}px || shortcut {{<key>}} || {{<switch>}} show switch button at top of Weibo list'
},
'weiboOnlyButtonDesc': { 'zh-cn': '切换视图', 'zh-hk': '切換視圖', 'zh-tw': '切換視圖', 'en': 'Switch View' },
'keyInputTip': { 'zh-cn': '按下键盘修改快捷键设置', 'zh-hk': '按下鍵盤修改快速鍵設置', 'zh-tw': '按下鍵盤修改快速鍵設置', 'en': 'Press key to modify shortcut key setting' },
'setSkin': {
'zh-cn': '统一所有页面使用|模板{{<skin>}} {{<i>}}',
'zh-hk': '統一所有頁面使用|模板{{<skin>}} {{<i>}}',
'zh-tw': '統一所有頁面使用|模板{{<skin>}} {{<i>}}',
'en': 'Show all pages with | template {{<skin>}} {{<i>}}',
},
'setSkinDesc': {
'zh-cn': '开启后所有页面将显示您选择的模板,包括其他用户的个人主页。模板不会覆盖您在主页自定义的背景图或配色,但是会覆盖个人主页的背景图或配色。模板效果仅在您的浏览器中生效,他人访问您的个人主页时,仍会看到您在微博中设置的模板。<br />模板的选择请参考<a href="http://skin.vip.weibo.com/list?topnav=1&wvr=6" target="_blank">模板商店</a>,在模板商店中点击图片预览与应用模板。',
},
'setSkinByPreview': {
'zh-cn': 'Yet Another Weibo Filter 模板设置',
},
'setSkinByPreviewDesc': {
'zh-cn': '您要在 Yet Another Weibo Filter 脚本中使用“{{name}}”模板吗?<br />启用后您访问各种页面时都将使用当前的模板。<br />在脚本中使用皮肤不会影响其他用户查看您个人主页时的模板样式。',
'zh-hk': '您要在 Yet Another Weibo Filter 腳本中使用「{{name}}」模板嗎?<br />啟用後您訪問各種頁面時都將使用當前的模板。<br />在腳本中使用皮膚不會影響其他用戶查看您個人主頁時的模板樣式。',
'zh-tw': '您要在 Yet Another Weibo Filter 腳本中使用「{{name}}」模板嗎?<br />啟用後您訪問各種頁面時都將使用當前的模板。<br />在腳本中使用皮膚不會影響其他用戶查看您個人主頁時的模板樣式。',
'en': 'Do you want to enable the template "{{name}}" in Yet Another Weibo Filter script?<br />All pages will show current template if you choose enable it.',
},
'feedListNavFix': { 'zh-cn': '处理消息流导航栏排版错位的问题(临时性){{<i>}}', 'zh-hk': '處理消息流導航欄排版錯位的問題(臨時性){{<i>}}', 'zh-tw': '臨時處理消息流導航欄排版錯位的問題(臨時性){{<i>}}', 'en': 'Fix the wrong layout of feed list nav bar (Temporary) {{<i>}}' },
'feedListNavFixDesc': {
'zh-cn': '如果您消息流导航栏的排版出现错位,导致第一条微博的作者头像被显示到右侧,您可以尝试临时打开本功能。如果您没有发现任何异常,请不要开启本功能。注意:微博修复对应功能后您可能需要关闭本功能以保证正常的浏览。',
},
// 微博
'weiboStyleTitle': { 'zh-cn': '微博', 'zh-hk': '微博', 'zh-tw': '微博', 'en': 'Weibo' },
'unwrapTextDesc': { 'zh-cn': '微博作者和正文同行', 'zh-hk': '微博作者和正文同行', 'zh-tw': '微博作者和正文同行', 'en': 'No line break after author' },
'unwrapContent': { 'zh-cn': '将微博中的换行显示为|{{<text>}}{{<i>}}', 'zh-hk': '將微博中的換行顯示為|{{<text>}}{{<i>}}', 'zh-tw': '將微博中的換行顯示為|{{<text>}}{{<i>}}', 'en': 'Show line breaks as character |{{<text>}}{{<i>}}' },
'unwrapContentDesc': {
'zh-cn': '您还可以在自定义样式中使用“ .yawf-linebreak::before { content: "⏎" } ”自定义。需要设置内容过滤器时您仍需要使用正则表达式<code>\\n</code>表示换行符。'
},
'imageSize': { 'zh-cn': '恢复图片大小为正常尺寸 (feed v3){{<i>}}||{{<repost>}}同时缩小被转发的原微博的宽度', 'zh-hk': '恢復圖片大小為正常尺寸 (feed v3){{<i>}}||{{<repost>}}同時縮小被轉發的原微博的寬度', 'zh-tw': '恢復圖片大小為正常尺寸 (feed v3){{<i>}}||{{<repost>}}同時縮小被轉發的原微博的寬度', 'en': 'Restore pictures to normal size (feed v3) {{<i>}}||{{<repost>}} and restore the size of original weibo' },
'imageSizeDesc': {
'zh-cn': '缩小图片尺寸仅影响图片在您的网页上的显示效果,不能降低网络数据流量用量。'
},
'noWeiboSpace': { 'zh-cn': '移除微博与微博间的空隙', 'zh-hk': '移除微博與微博間的空隙', 'zh-tw': '移除微博與微博間的空隙', 'en': 'Remove space between Weibo' },
'fromInBottom': { 'zh-cn': '将微博的发布时间和来源移动到微博末尾 (feed v3){{<i>}}', 'zh-hk': '將微博的發布時間和來源移動到微博末尾 (feed v3){{<i>}}', 'zh-tw': '將微博的發布時間和來源移動到微博末尾 (feed v3){{<i>}}', 'en': 'Move timestamp and source of Weibo to bottom (feed v3){{<i>}}' },
'userPageNoAuthor': { 'zh-cn': '不在个人主页显示作者头像与用户名|{{<who>}} (feed v3)', 'zh-hk': '不在個人主頁顯示作者頭像與用戶名|{{<who>}} (feed v3)', 'zh-tw': '不在個人主頁顯示作者頭像與用戶名|{{<who>}} (feed v3)', 'en': 'Hide avatar and username of author | on {{<who>}} (feed v3)' },
'userPageNoAuthorMine': { 'zh-cn': '仅自己的个人主页', 'zh-hk': '僅自己的個人主頁', 'zh-tw': '僅自己的個人主頁', 'en': 'my user page' },
'userPageNoAuthorAll': { 'zh-cn': '所有人的个人主页', 'zh-hk': '所有人的個人主頁', 'zh-tw': '所有人的個人主頁', 'en': 'all user pages' },
'fromInBottomDesc': {
'zh-cn': '如果您开启了[[style.sweibo.no_weibo_space]],但未开启本功能,则微博的发布时间和来源将会被隐藏。'
},
'hoverShowFold': { 'zh-cn': '鼠标指向被折叠微博时显示内容', 'zh-hk': '滑鼠指向被折疊微博時顯示內容', 'zh-tw': '滑鼠指向被折疊微博時顯示內容', 'en': 'Show folded Weibo when mouse over' },
'layoutReorder': {
'zh-cn': '重新排列微博控制按钮{{<i>}}||{{<1>}}|{{<2>}}|{{<3>}}|{{<4>}}|{{<5>}}',
'zh-hk': '重新排列微博控制按鈕{{<i>}}||{{<1>}}|{{<2>}}|{{<3>}}|{{<4>}}|{{<5>}}',
'zh-tw': '重新排列微博控制按鈕{{<i>}}||{{<1>}}|{{<2>}}|{{<3>}}|{{<4>}}|{{<5>}}',
'en': 'Reorder Weibo control buttons{{<i>}}||{{<1>}}|{{<2>}}|{{<3>}}|{{<4>}}|{{<5>}}'
},
'foldedWeiboTextDesc': { 'zh-cn': '被折叠微博的提示信息包含|{{<text>}}', 'zh-hk': '被折疊微博的提示訊息包含|{{<text>}}', 'zh-tw': '被折疊微博的提示訊息包含|{{<text>}}', 'en': 'Show folded weibo with information about | {{<text>}}' },
'foldedWeiboTextAuthorDesc': { 'zh-cn': '作者', 'zh-hk': '作者', 'zh-tw': '作者', 'en': 'Author' },
'foldedWeiboTextReasonDesc': { 'zh-cn': '折叠原因', 'zh-hk': '折疊原因', 'zh-tw': '折疊原因', 'en': 'Reason' },
'foldedWeiboTextAuthorReasonDesc': { 'zh-cn': '作者和折叠原因', 'zh-hk': '作者和折疊原因', 'zh-tw': '作者和折疊原因', 'en': 'Author and reason' },
'foldedWeiboText': {
'zh-cn': '"一条微博被折叠,请点击查看"',
'zh-hk': '"一條微博被折疊,請點擊查看"',
'zh-tw': '"一條微博被折疊,請點擊查看"',
'en': '"A Weibo was folded, click to view."'
},
'foldedWeiboTextAuthor': {
'zh-cn': '"来自 @" attr(yawf-author) " 的一条微博被折叠,请点击查看"',
'zh-hk': '"來自 @" attr(yawf-author) " 的一條微博被折疊,請點擊查看"',
'zh-tw': '"來自 @" attr(yawf-author) " 的一條微博被折疊,請點擊查看"',
'en': '"A Weibo from @" attr(yawf-author) " was folded, click to view."'
},
'foldedWeiboTextReason': {
'zh-cn': '"一条微博" attr(yawf-reason) "而被折叠,请点击查看"',
'zh-hk': '"一條微博" attr(yawf-reason) "而被折疊,請點擊查看"',
'zh-tw': '"一條微博" attr(yawf-reason) "而被折疊,請點擊查看"',
'en': '"A Weibo was folded " attr(yawf-reason) ", click to view."'
},
'foldedWeiboTextAuthorReason': {
'zh-cn': '"来自 @" attr(yawf-author) " 的一条微博" attr(yawf-reason) "而被折叠,请点击查看"',
'zh-hk': '"來自 @" attr(yawf-author) " 的一條微博" attr(yawf-reason) "而被折疊,請點擊查看"',
'zh-tw': '"來自 @" attr(yawf-author) " 的一條微博" attr(yawf-reason) "而被折疊,請點擊查看"',
'en': '"A Weibo from @" attr(yawf-author) " was folded " attr(yawf-reason) ", click to view."'
},
'layoutReorderDesc': {
'zh-cn': '您还可以在版面清理选项卡中隐藏您不想看到的按钮,或在此勾选以隐藏:[[layout.weibo.pop]] [[layout.weibo.favourite]] [[layout.weibo.forward]] [[layout.weibo.like]]',
},
'layoutReorderPop': { 'zh-cn': '推广', 'zh-hk': '推廣', 'zh-tw': '推廣', 'en': ' Promote' },
'layoutReorderFavorite': { 'zh-cn': '收藏', 'zh-hk': '收藏', 'zh-tw': '收藏', 'en': 'Favourite' },
'layoutReorderForward': { 'zh-cn': '转发', 'zh-hk': '轉發', 'zh-tw': '轉發', 'en': 'Forward' },
'layoutReorderComment': { 'zh-cn': '评论', 'zh-hk': '評論', 'zh-tw': '評論', 'en': 'Comment' },
'layoutReorderLike': { 'zh-cn': '赞', 'zh-hk': '讚', 'zh-tw': '讚', 'en': 'Like' },
'layoutCommentReorder': {
'zh-cn': '重新排列评论控制按钮{{<i>}}||{{<1>}}|{{<2>}}|{{<3>}}|{{<4>}}|{{<5>}}',
'zh-hk': '重新排列評論控制按鈕{{<i>}}||{{<1>}}|{{<2>}}|{{<3>}}|{{<4>}}|{{<5>}}',
'zh-tw': '重新排列評論控制按鈕{{<i>}}||{{<1>}}|{{<2>}}|{{<3>}}|{{<4>}}|{{<5>}}',
'en': 'Reorder comment control buttons{{<i>}}||{{<1>}}|{{<2>}}|{{<3>}}|{{<4>}}|{{<5>}}'
},
'layoutCommentReorderDesc': {
'zh-cn': '您还可以在版面清理选项卡中隐藏您不想看到的按钮,或在此勾选以隐藏:[[layout.weibo.report]] [[layout.weibo.likecomment]]',
},
'layoutCommentReorderReport': { 'zh-cn': '举报', 'zh-hk': '舉報', 'zh-tw': '檢舉', 'en': 'Report' },
'layoutCommentReorderDelete': { 'zh-cn': '删除', 'zh-hk': '刪除', 'zh-tw': '刪除', 'en': 'Delete' },
'layoutCommentReorderConversition': { 'zh-cn': '查看对话', 'zh-hk': '查看對話', 'zh-tw': '查看對話', 'en': 'View Conversation' },
'layoutCommentReorderReply': { 'zh-cn': '回复', 'zh-hk': '回覆', 'zh-tw': '回覆', 'en': 'Reply' },
'layoutCommentReorderLike': { 'zh-cn': '赞', 'zh-hk': '讚', 'zh-tw': '讚', 'en': 'Like' },
// 颜色
'colorStyleTitle': { 'zh-cn': '颜色', 'zh-hk': '顏色', 'zh-tw': '顏色', 'en': 'Color' },
'whitelistHighlightDesc': { 'zh-cn': '高亮显示白名单的微博|背景色{{<color>}}|透明度{{<transparency>}}%', 'zh-hk': '高亮顯示白名單的微博|背景色{{<color>}}|透明度{{<transparency>}}%', 'zh-tw': '高亮顯示白名單的微博|背景色{{<color>}}|透明度{{<transparency>}}%', 'en': 'Highlight Weibo in whitelist with | background color {{<color>}} | transparency {{<transparency>}}%' },
'colorOverride': {
'zh-cn': '修改网页配色(半透明背景){{<i>}}||主背景色{{<color2>}}|透明度{{<transparency2>}}%||副背景色{{<color1>}}|透明度{{<transparency1>}}%||输入框背景色{{<color3>}}|透明度{{<transparency3>}}%',
'zh-hk': '修改網頁配色(半透明背景){{<i>}}||主背景色{{<color2>}}|透明度{{<transparency2>}}%||副背景色{{<color1>}}|透明度{{<transparency1>}}%||輸入方塊背景色{{<color3>}}|透明度{{<transparency3>}}%',
'zh-tw': '修改網頁配色(半透明背景){{<i>}}||主背景色{{<color2>}}|透明度{{<transparency2>}}%||副背景色{{<color1>}}|透明度{{<transparency1>}}%||輸入方塊背景色{{<color3>}}|透明度{{<transparency3>}}%',
'en': 'Change colors on page (Semi-transparent background) {{<i>}} || Primary Color {{<color2>}} | transparency {{<transparency2>}}% || Secondary Color {{<color1>}} | transparency {{<transparency1>}}% || Input box {{<color3>}} | transparency {{<transparency3>}}%'
},
'colorOverrideDesc': {
'zh-cn': '推荐配合[[style.layout.set_skin]]使用,在各种页面达到一致的效果。'
},
// 层叠样式表
'CSSTitle': { 'zh-cn': '样式', 'zh-hk': '樣式', 'zh-tw': '樣式', 'en': 'CSS' },
'userstyleTitle': {
'zh-cn': '<span>自定义CSS<a class="yawf-userstyles-tip" href="https://userstyles.org/styles/browse/weibo" target="_blank">在 userstyles.org 上搜索样式</a><a class="yawf-userstyles-tip" target="_blank" href="https://tiansh.github.io/yawf/stylish.html">常用自定义CSS</a></span>{{}}',
'zh-hk': '<span>自訂CSS<a class="yawf-userstyles-tip" href="https://userstyles.org/styles/browse/weibo" target="_blank">在 userstyles.org 上搜尋樣式</a><a class="yawf-userstyles-tip" target="_blank" href="https://tiansh.github.io/yawf/stylish.html">常用自訂CSS</a></span>{{}}',
'zh-tw': '<span>自訂CSS<a class="yawf-userstyles-tip" href="https://userstyles.org/styles/browse/weibo" target="_blank">在 userstyles.org 上搜尋樣式</a><a class="yawf-userstyles-tip" target="_blank" href="https://tiansh.github.io/yawf/stylish.html">常用自訂CSS</a></span>{{}}',
'en': '<span>Customize CSS<a class="yawf-userstyles-tip" href="https://userstyles.org/styles/browse/weibo" target="_blank">Search styles on userstyles.org</a><a class="yawf-userstyles-tip" target="_blank" href="https://tiansh.github.io/yawf/stylish.html">Common Customize CSS</a></span>{{}}'
},
'userstyleEditDesc': { 'zh-cn': '编辑 YAWF 自定义 CSS', 'zh-hk': '編輯 YAWF 自訂 CSS', 'zh-tw': '編輯 YAWF 自訂 CSS', 'en': 'Edit YAWF Customize CSS' },
'userstyleEditDetails': { 'zh-cn': 'YAWF 自定义 CSS:', 'zh-hk': 'YAWF 自訂 CSS:', 'zh-tw': 'YAWF 自訂 CSS:', 'en': 'YAWF Customize CSS:' },
// 脚本
'scriptFilterGroupTitle': { 'zh-cn': '关于脚本', 'zh-hk': '關於腳本', 'zh-tw': '關於腳本', 'en': 'About Script' },
// 全选该分组
'configSelectAllDesc': { 'zh-cn': '全选本组', 'zh-hk': '全選本組', 'zh-tw': '全選本組', 'en': 'Select Group' },
// 导入导出
'configImportAndExport': { 'zh-cn': '设置', 'zh-hk': '設定', 'zh-tw': '設定', 'en': 'Setting' },
'configImportButton': { 'zh-cn': '导入', 'zh-hk': '匯入', 'zh-tw': '匯入', 'en': 'Import' },
'configImportWarningTitle': { 'zh-cn': '设置导入', 'zh-hk': '設定匯入', 'zh-tw': '設定匯入', 'en': 'Setting Import' },
'configImportWarning': {
'zh-cn': '导入的设置会覆盖您当前已有的设置,确实要导入设置吗?',
'zh-hk': '匯入的設定會覆蓋您當前已有的設定,您確定要匯入設定嗎?',
'zh-tw': '匯入的設定會覆蓋您當前已有的設定,您確定要匯入設定嗎?',
'en': 'The imported settings may replace your current settings. Are you sure you want to import this file?'
},
'configImportSuccessTitle': { 'zh-cn': '设置导入完成', 'zh-hk': '設定匯入完成', 'zh-tw': '設定匯入完成', 'en': 'Import settings completed' },
'configImportSuccess': { 'zh-cn': '已经成功地导入了设置', 'zh-hk': '已经成功地匯入了設定', 'zh-tw': '已经成功地匯入了設定', 'en': 'Successfully imported settings' },
'configImportFailTitle': { 'zh-cn': '设置导入失败', 'zh-hk': '設定匯入失败', 'zh-tw': '設定匯入失败', 'en': 'Import settings failed' },
'configImportFail': {
'zh-cn': '导入设置文件时出现错误,可能是使用了错误的文件,文件已损坏或文件的版本不支持',
'zh-hk': '匯入設定檔案時出現錯誤,可能是使用了錯誤的檔案,檔案已損壞或為不支援的版本',
'zh-tw': '匯入設定檔案時出現錯誤,可能是使用了錯誤的檔案,檔案已損壞或為不支援的版本',
'en': 'Error occurred during importing process. Wrong file may be used, the file may be broken, or the version of setting file is not supported.'
},
'configExportButton': { 'zh-cn': '导出', 'zh-hk': '匯出', 'zh-tw': '匯出', 'en': 'Export' },
'configResetButton': { 'zh-cn': '重置', 'zh-hk': '重設', 'zh-tw': '重設', 'en': 'Reset' },
'configResetWarningTitle': { 'zh-cn': '设置重置', 'zh-hk': '設定重設', 'zh-tw': '設定重設', 'en': 'Setting Reset' },
'configResetWarning': { 'zh-cn': '这将会清空您当前的所有配置,确实要重置设置吗?', 'zh-hk': '這將會清空您當前的所有設定,您確定要重置設定嗎?', 'zh-tw': '這將會清空您當前的所有設定,您確定要重置設定嗎?', 'en': 'You are deleting all your settings. Are you sure you want to reset your settings?' },
'configImportWbpButton': { 'zh-cn': '从“眼不见心不烦”导入设置', 'zh-hk': '從“眼不見心不煩”匯入設定', 'zh-tw': '從“眼不見心不煩”匯入設定', 'en': 'Import from Weibo Cleaner (眼不见心不烦)' },
'configImportWbpWarning': {
'zh-cn': '注意:从其他脚本导入设置时,因为脚本的具体功能与实现方式等不同,导入工具的能力限制等原因,转换前后并非完全相同。',
'zh-hk': '注意:從其他腳本匯入設定時,因為腳本的具體功能與實現方式等不同,導入工具的能力限制等原因,轉換前後並非完全相同。',
'zh-tw': '注意:從其他腳本匯入設定時,因為腳本的具體功能與實現方式等不同,導入工具的能力限制等原因,轉換前後並非完全相同。',
'en': 'Note: Settings imported from other scripts may be modified due to the difference of functions and implementations, and the limitation of this settings importing tool.',
},
// 更新
'updateInfoTitle': { 'zh-cn': '更新', 'zh-hk': '更新', 'zh-tw': '更新', 'en': 'Update' },
'updateInfoDescription': { 'zh-cn': '更新后显示新功能提示', 'zh-hk': '更新後顯示新功能提示', 'zh-tw': '更新後顯示新功能提示', 'en': 'Show new features after update' },
'installSuccessTitle': { 'zh-cn': 'YAWF 安装成功', 'zh-hk': '安裝成功', 'zh-tw': '安裝成功', 'en': 'Installation successed' },
'installSuccessText': {
'zh-cn': '感谢您安装 YAWF 脚本。您可以点击右上角的漏斗图标打开过滤器设置。此外您还可以选中并拖拽关键字、帐号、话题、来源等内容到网页右上角,快速创建过滤器。',
'zh-hk': '感謝您安裝 YAWF 腳本。您可以點擊右上角的漏斗圖示打開過濾器設置。此外您還可以選中並拖拽關鍵字、帳號、話題、來源等內容到網頁右上角,快速創建過濾器。',
'zh-tw': '感謝您安裝 YAWF 腳本。您可以點擊右上角的漏斗圖示打開過濾器設置。此外您還可以選中並拖拽關鍵字、帳號、話題、來源等內容到網頁右上角,快速創建過濾器。',
'en': 'Thank you for installing YAWF. You can click on the funnel icon at the top-right corner to open up filter setting menu. You may also quickly create filters by dragging and dropping keywords, accounts, topics and sources to the top-right corner.'
},
'updateSuccessTitle': { 'zh-cn': 'Yet Another Weibo Filter 新功能提示', 'zh-hk': 'Yet Another Weibo Filter 新功能提示', 'zh-tw': 'Yet Another Weibo Filter 新功能提示', 'en': 'Yet Another Weibo Filter new features notification' },
'updateSuccessHeader': { 'zh-cn': '您的 YAWF 脚本已更新', 'zh-hk': '您的 YAWF 腳本已更新', 'zh-tw': '您的 YAWF 腳本已更新', 'en': 'Your YAWF script has been updated' },
'updateSuccessDesc': { 'zh-cn': '当前版本添加或更新了以下{{count}}项功能', 'zh-hk': '當前版本添加或更新了以下{{count}}項功能', 'zh-tw': '當前版本添加或更新了以下{{count}}項功能', 'en': 'The current version has added or updated the following {{count}} feature(s)' },
// 从眼不见心不烦导入设置
'wbpImportSuccessTitle': { 'zh-cn': 'Yet Another Weibo Filter 设置导入完成', 'zh-hk': 'Yet Another Weibo Filter 設定匯入完成', 'zh-tw': 'Yet Another Weibo Filter 設定匯入完成', 'en': 'Yet Another Weibo Filter setting imported Successfully' },
'wbpImportSuccessHeader': { 'zh-cn': '已经从 眼不见心不烦 导入了设置', 'zh-hk': '已經從 眼不見心不煩 匯入了設定', 'zh-tw': '已經從 眼不見心不煩 匯入了設定', 'en': 'Imported Settings from 眼不见心不烦' },
'wbpImportSuccessDesc': { 'zh-cn': '以下{{count}}项功能因脚本的差异或导入工具的限制需要您设置', 'zh-hk': '以下{{count}}項功能因腳本的差異或匯入工具的限制需要您設定', 'zh-tw': '以下{{count}}項功能因腳本的差異或匯入工具的限制需要您設定', 'en': 'Check out following {{count}} features. These features are different from the script or setting cannot be converted.' },
// 杂项
'scriptOtherTitle': { 'zh-cn': '更多', 'zh-hk': '其他', 'zh-tw': '其他', 'en': 'More' },
'autoCompleteConfig': { 'zh-cn': '设置窗口中使用自动补全{{<i>}}', 'zh-hk': '設定方塊內使用自動完成{{<i>}}', 'zh-tw': '設定方塊內使用自動完成{{<i>}}', 'en': 'Use auto complete in setting dialog {{<i>}}' },
'autoCompleteConfigDesc': {
'zh-cn': '启用该功能后,脚本会在您输入用户名或话题的时候提供候选项方便您输入。您输入的内容将会实时发送到微博的服务器上以便获取推荐列表。',
},
'searchEnable': { 'zh-cn': '在搜索页面启用脚本(试验性)', 'zh-hk': '在搜尋網頁啟用腳本(試驗性)', 'zh-tw': '在搜尋網頁啟用腳本(試驗性)', 'en': 'Enable on search page (Experimental)' },
// 调试
'scriptDebugTitle': { 'zh-cn': '调试', 'zh-hk': '偵錯', 'zh-tw': '偵錯', 'en': 'Debug' },
'scriptDebug': { 'zh-cn': '在控制台打印调试信息{{<i>}}', 'zh-hk': '將偵錯訊息列印到主控台{{<i>}}', 'zh-tw': '將偵錯訊息列印到主控台{{<i>}}', 'en': 'Print debug info to console {{<i>}}' },
'scriptDebugDesc': {
'zh-cn': '如果您的脚本出现问题,您可以打开调试功能后向作者提供控制台的输出以方便解决问题。但请注意,<strong>打开调试功能可能会增加内存占用、降低网页的反应速度甚至导致浏览卡顿</strong>。调试功能供脚本开发和维护使用,<strong>不建议一般用户打开调试功能</strong>。'
},
// 关于
'scriptAboutTitle': { 'zh-cn': '关于', 'zh-hk': '關於', 'zh-tw': '關於', 'en': 'About' },
'scriptAbout': {
'zh-cn': '<p>Yet Another Weibo Filter (YAWF) {{version}}</p><p>您可以关注 <a href="http://weibo.com/yawfscript" usercard="id=5601033111" target="_blank" rel="noreferrer">@YAWF脚本</a> 了解脚本最新的更新。<br />如果您觉得脚本给您很大的帮助,帮助宣传脚本是对我们最大的支持。</p><p>如果您在使用过程中遇到任何脚本的错误,或对脚本有任何建议,您可以到<a target="_blank" href="https://tiansh.github.io/yawf/issues.html" rel="noreferrer">反馈页面</a>提供报告,或<a action-data="uid=5601033111&nick=YAWF脚本" action-type="webim.conversation" href="javascript:;">私信 @YAWF脚本</a> ;反馈前建议先阅读<a target="_blank" href="https://tiansh.github.io/yawf/fqa.html" rel="noreferrer">常见问题</a>。</p><p>脚本使用 MIT 协议开放源代码,作者 <a href="http://weibo.com/tsh90" usercard="id=3921589057" target="_blank" rel="noreferrer">@tsh90</a> ,您可以<a href="https://github.com/tiansh/yawf" target="_blank" rel="noreferrer">在 GitHub 上查阅</a>,欢迎任何人贡献代码。<br />脚本中参考并使用了 <a href="https://bitbucket.org/salviati/weibo-cleaner" target="_blank" rel="noreferrer">眼不见心不烦</a> 的部分代码。</p>',
'zh-hk': '<p>Yet Another Weibo Filter (YAWF) {{version}}</p><p>您可以關注 <a href="http://weibo.com/yawfscript" usercard="id=5601033111" target="_blank" rel="noreferrer">@YAWF腳本</a> 瞭解腳本最新的更新。<br />如果您覺得腳本給您很大的幫助,幫助宣傳腳本是對我們最大的支持。</p><p>如果您在使用過程中遇到任何腳本的錯誤,或對腳本有任何建議,您可以到<a target="_blank" href="https://tiansh.github.io/yawf/issues.html" rel="noreferrer">回饋頁面</a>提供報告,或<a action-data="uid=5601033111&nick=YAWF脚本" action-type="webim.conversation" href="javascript:;">私信 @YAWF脚本</a> ;回饋前建議先閱讀<a target="_blank" href="https://tiansh.github.io/yawf/fqa.html" rel="noreferrer">常見問題(簡體)</a>。</p><p>腳本使用 MIT 協定開放原始程式碼,作者 <a href="http://weibo.com/tsh90" usercard="id=3921589057" target="_blank" rel="noreferrer">@tsh90</a> ,您可以<a href="https://github.com/tiansh/yawf" target="_blank" rel="noreferrer">在 GitHub 上查閱</a>,歡迎任何人貢獻程式碼。<br />腳本中參考並使用了 <a href="https://bitbucket.org/salviati/weibo-cleaner" target="_blank" rel="noreferrer">眼不見心不煩</a> 的部分程式碼。</p>',
'zh-tw': '<p>Yet Another Weibo Filter (YAWF) {{version}}</p><p>您可以關注 <a href="http://weibo.com/yawfscript" usercard="id=5601033111" target="_blank" rel="noreferrer">@YAWF腳本</a> 瞭解腳本最新的更新。<br />如果您覺得腳本給您很大的幫助,幫助宣傳腳本是對我們最大的支持。</p><p>如果您在使用過程中遇到任何腳本的錯誤,或對腳本有任何建議,您可以到<a target="_blank" href="https://tiansh.github.io/yawf/issues.html" rel="noreferrer">回饋頁面</a>提供報告,或<a action-data="uid=5601033111&nick=YAWF脚本" action-type="webim.conversation" href="javascript:;">私信 @YAWF脚本</a> ;回饋前建議先閱讀<a target="_blank" href="https://tiansh.github.io/yawf/fqa.html" rel="noreferrer">常見問題(簡體)</a>。</p><p>腳本使用 MIT 協定開放原始程式碼,作者 <a href="http://weibo.com/tsh90" usercard="id=3921589057" target="_blank" rel="noreferrer">@tsh90</a> ,您可以<a href="https://github.com/tiansh/yawf" target="_blank" rel="noreferrer">在 GitHub 上查閱</a>,歡迎任何人貢獻程式碼。<br />腳本中參考並使用了 <a href="https://bitbucket.org/salviati/weibo-cleaner" target="_blank" rel="noreferrer">眼不見心不煩</a> 的部分程式碼。</p>',
'en': '<p>Yet Another Weibo Filter (YAWF) {{version}}</p><p>Follow <a href="http://weibo.com/yawfscript" namecard="id=5601033111" target="_blank" rel="noreferrer">@YAWF脚本</a> for last update info.<br />Please help us spread the word if the script helps you.</p><p>If you find any bugs or have feature requests, please report them in the <a target="_blank" href="https://tiansh.github.io/yawf/issues.html" rel="noreferrer">issues page</a>, or <a action-data="uid=5601033111&nick=YAWF脚本" action-type="webim.conversation" href="javascript:;">send message to @YAWF脚本</a> . Please read <a target="_blank" href="https://tiansh.github.io/yawf/fqa.html" rel="noreferrer">FQA (Chinese)</a> page for common questions.</p><p>The script is liscensed under the MIT License. Author is <a href="http://weibo.com/tsh90" usercard="id=3921589057" target="_blank" rel="noreferrer">@tsh90</a>. You may <a href="https://github.com/tiansh/yawf" target="_blank" rel="noreferrer">view the project on GitHub</a>. Pull request is welcomed.<br />Some codes of this script come from <a target="_blank" href="https://bitbucket.org/salviati/weibo-cleaner" rel="noreferrer"><span lang="zh-cn">眼不见心不烦</span> (Weibo Cleaner)</a> script.</p>',
},
// 拖拽
'dropAreaTitle': { 'zh-cn': '拖放至此<br />快速创建过滤器', 'zh-hk': '拖放至此<br />快速創建篩選器', 'zh-tw': '拖放至此<br />快速創建篩選器', 'en': 'Drop Here to Create Filter' },
'dropAreaText': {
'zh-cn': '将要设置过滤器的内容拖拽至此,即可快速创建过滤器。现已可识别:<br /><ul><li>微博正文的文字或链接</li><li>用户头像或链接</li><li>话题</li><li>来源链接</li></ul>',
'zh-hk': '將要設置篩選器的內容拖拽至此,即可快速創建篩選器。現已可識別:<br /><ul><li>微博正文的文字或連結</li><li>使用者頭像或連結</li><li>話題</li><li>來源連結</li></ul>',
'zh-tw': '將要設置篩選器的內容拖拽至此,即可快速創建篩選器。現已可識別:<br /><ul><li>微博正文的文字或連結</li><li>使用者頭像或連結</li><li>話題</li><li>來源連結</li></ul>',
'en': 'Drop items here to create filter. These items may be recognized:<br /><ul><li>Text or link in Weibo content</li><li>Avatar or user link</li><li>topic</li><li>source</li></ul>'
},
'fastCreateChoseTitle': { 'zh-cn': '创建过滤器', 'zh-hk': '創建篩選器', 'zh-tw': '創建篩選器', 'en': 'Create Filter' },
'fastFilterChoseText': { 'zh-cn': '请选择要创建的过滤器:', 'zh-hk': '請選擇要創建的篩選器:', 'zh-tw': '請選擇要創建的篩選器:', 'en': 'Chose the filter(s) you want:' },
// 扩展
'scriptExtensionTitle': { 'zh-cn': '扩展', 'zh-hk': '擴充', 'zh-tw': '擴充', 'en': 'Extension' },
'scriptExtensionEnable': { 'zh-cn': '启用对 YAWF 的扩展', 'zh-hk': '啟用對 YAWF 的擴充', 'zh-tw': '啟用對 YAWF 的擴充', 'en': 'Enable Extension for YAWF' },
'scriptExtensionWarning': {
'zh-cn': '注意,扩展以用户脚本的形式安装,您只应当从您信任的来源安装用户脚本,恶意的脚本可能会侵犯您的隐私并在您不知情的情况下以您的名义进行操作。如果您希望编写 YAWF 的扩展,请参考常见问题。',
'zh-hk': '注意,擴充以用戶腳本的形式安裝,您只應當從您信任的來源安裝用戶腳本,惡意的腳本可能會危害您的隱私,並在您不知情的情況下以您的名義執行。如果您希望撰寫 YAWF 的擴展,請參考常見問題(簡體)。',
'zh-tw': '注意,擴充以用戶腳本的形式安裝,您只應當從您信任的來源安裝用戶腳本,惡意的腳本可能會危害您的隱私,並在您不知情的情況下以您的名義執行。如果您希望撰寫 YAWF 的擴展,請參考常見問題(簡體)。',
'en': 'Notice: Extension was installed as userscript. You should only install scripts trusted. Malicious scripts can violate your privacy and act on your behalf without your knowledge. Please refer to the FQA Page, if you want to write your extension for YAWF.',
},
'subscribeFilterGroupTitle': { 'zh-cn': '规则订阅', 'zh-hk': '規則訂閱', 'zh-tw': '規則訂閱', 'en': 'Subscribe' },
'subscribeListTitle': { 'zh-cn': '订阅的规则', 'zh-hk': '訂閱的規則', 'zh-tw': '訂閱的規則', 'en': 'Rules Subscribed' },
'subscribeDisableButton': { 'zh-cn': '禁用' },
'subscribeEnableButton': { 'zh-cn': '启用' },
'subscribeDetailButton': { 'zh-cn': '详细' },
'extensionFilterGroupTitle': { 'zh-cn': '扩展功能', 'zh-hk': '擴充功能', 'zh-tw': '擴充功能', 'en': 'Extension' },
};
// 页面常量
var html = {
'|': '</label><label>', // 先关闭前面的label,再从后面开一个,所以这里没写反
'||': '</label><br /><label>',
'select': '<select>{{options}}</select>',
'option': '<option value="{{value}}">{{{text}}}</option>',
// 对话框
'cover': '<div node-type="outer" style="position: fixed; top: 0px; left: 0px; width: 100%; height: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); opacity: 0.3; z-index: 9999;"></div>',
'dialog': '<div id="{{id}}" class="W_layer yawf-Layer" style="top: 193px; left: 376px;"><div tabindex="0"></div><div class="content" node-type="autoHeight"><div class="W_layer_title" node-type="title" style="">{{title}}</div><div class="W_layer_close"><a class="W_ficon ficon_close S_ficon" href="javascript:void(0);" node-type="close">X</a></div><div node-type="inner"></div></div></div>',
'alert': '<div class="W_layer yawf-Layer" id="{{id}}"><div tabindex="0"></div><div class="content"><div class="W_layer_title" node-type="title">{{title}}</div><div class="W_layer_close"><a class="W_ficon ficon_close S_ficon" node-type="close" href="javascript:void(0);">X</a></div><div node-type="inner"><div class="layer_point"><dl class="point clearfix"><dt node-type="icon"><span class="W_icon icon_{{icon}}B"></span></dt><dd node-type="text"><p class="S_txt1">{{text}}</p></dd></dl></div></div><div class="W_layer_btn S_bg1"><a action-type="ok" node-type="ok" class="W_btn_a btn_34px" href="javascript:void(0);"><span>{{okButtonTitle}}</span></a></div></div></div>',
'confirm': '<div class="W_layer yawf-Layer" id="{{id}}"><div tabindex="0"></div><div class="content"><div class="W_layer_title" node-type="title">{{title}}</div><div class="W_layer_close"><a class="W_ficon ficon_close S_ficon" node-type="close" href="javascript:void(0);">X</a></div><div node-type="inner"><div class="layer_point"><dl class="point clearfix"><dt node-type="icon"><span class="W_icon icon_{{icon}}B"></span></dt><dd node-type="text"><p class="S_txt1">{{text}}</p></dd></dl></div></div><div class="W_layer_btn S_bg1"><a action-type="ok" node-type="ok" class="W_btn_a btn_34px" href="javascript:void(0);"><span>{{okButtonTitle}}</span></a><a action-type="cancel" node-type="cancel" class="W_btn_b btn_34px" href="javascript:void(0);"><span>{{cancelButtonTitle}}</span></a></div></div></div>',
'bubble': '<div class="W_layer yawf-Layer W_layer_pop yawf-bubble"><div class="content layer_mini_info"><div class="main_txt">{{{text}}}</div><div class="W_layer_arrow"><span class="W_arrow_bor" node-type="arrow"><i class="S_line3"></i><em class="S_bg2_br"></em></span><div></div></div></div></div>',
// 漏斗图标
'icon': '<div class="gn_set_list yawf-gn_set_list"><a node-type="filter" href="javascript:void(0);" class="gn_filter"><em class="W_ficon ficon_mail S_ficon">Y</em></a></div>',
'menuitem': '<ul><li class="line S_line1 yawf-config-menuline"></li><li><a href="javascript:void(0);" class="yawf-config-menuitem">{{filterMenuItem}}</a></li></ul>',
// 设置窗口
'configHeaderTop': '<div class="WB_minitab yawf-config-header" node-type="yawf-config-header"><ul class="minitb_ul S_line1 S_bg1 clearfix">',
'configHeaderItem': '<li class="minitb_item S_line1 {{liclass}}"><a class="minitb_lk S_txt1 {{aclass}}" action-type="tab_item" onclick="return false;" href="javascript:void(0);">{{name}}</a><span class="yawf-cur_block"></span></li>',
'configHeaderSearch': '<li class="minitb_item S_line1"><label class="minitb_lk S_txt1"><input id="yawf-config-search" class="yawf-config-search" type="search" /><span class="yawf-config-search-logo W_ficon S_txt2">f</span><span class="yawf-cur_block"></span></label></li>',
'configHeaderBottom': '</ul></div>',
'configLayerTop': '<div node-type="yawf-config-body" class="yawf-config-body yawf-window-body">',
'configLayerItem': '<div class="{{name}} yawf-config-layer" node-type="{{name}}" style="display: none;"></div>',
'configLayerBottom': '</div>',
'configFooter': '',
'searchNotFound': '<div class="WB_empty"><div class="WB_innerwrap"><div class="empty_con clearfix"><p class="icon_bed"><i class="W_icon icon_warnB"></i></p><p class="text">{{searchNotFound}}</p></div></div></div>',
'sicon': '<i class="W_icon icon_{{icon}}S yawf-configSIcon"></i>',
// 设置窗口内文字
'configDefault': '<div class="yawf-text">{{{text}}}</div>',
'configSubtitle': '<div class="yawf-groupSubtitle">{{{text}}}</div>',
'configText': '<div class="yawf-groupText">{{{text}}}</div>',
'configRemark': '<div class="yawf-groupRemark">{{{text}}}</div>',
'configLabel': '<div class="yawf-groupLabel"><label>{{{text}}}</label></div>',
// 设置项
'configBoolean': '<div class="yawf-configBoolean yawf-configItem"><label>{{text}}</label></div>',
'configBooleanInput': '<div class="yawf-configInput yawf-configBooleanInput"><input yawf-ci="{{key}}" class="W_checkbox yawf-configBooleanInput" type="checkbox" name="yawf-{{key}}"></div>',
'configSelect': '<div class="yawf-configSelect yawf-configItem"><label>{{text}}</label></div>',
'configSelectInput': '<div class="yawf-configInput yawf-configSelectInput"><select yawf-ci="{{key}}" class="yawf-configSelectSelect" name="yawf-{{key}}"></select></div>',
'configString': '<div class="yawf-configString yawf-configItem"><label>{{text}}</label></div>',
'configStringInput': '<div class="yawf-configInput yawf-configStringInput"><textarea yawf-ci="{{key}}" class="W_input yawf-configStringInput" name="yawf-{{key}}"></textarea></div>',
'configColor': '<div class="yawf-configColor yawf-configItem"><label>{{text}}</label></div>',
'configColorInput': '<div class="yawf-configInput yawf-configColorInput"><input yawf-ci="{{key}}" class="W_f14 yawf-configColorInput" name="yawf-{{key}}" type="color" style="width: 40px;" /></div>',
'configNumber': '<div class="yawf-configNumber yawf-configItem"><label>{{text}}</label></div>',
'configNumberInput': '<div class="yawf-configInput yawf-configNumberInput"><input yawf-ci="{{key}}" type="number" class="W_f14 yawf-configNumberInput" name="yawf-{{key}}" style="width: 60px;" /></div>',
'configRange': '<div class="yawf-configRange yawf-configItem"><label>{{text}}</label></div>',
'configRangeInput': '<div class="yawf-configInput yawf-configRangeInput"><input type="number" min="0" max="100" maxlength="3" yawf-ci="{{key}}" class="W_f14 yawf-configRangeInput" style="text-align: right;" name="yawf-{{id}}" /><div class="yawf-range-container"><input type="range" style="height: 1em; width: 66px; margin-left: 7px; margin-right: 7px; " tabindex="-1" /></div></div>',
'configKey': '<div class="yawf-configKey yawf-configItem"><label>{{text}}</label></div>',
'configKeyInput': '<div class="yawf-configInput yawf-configKeyInput"><button class="W_f14 yawf-configKeyName"></button><input type="hidden" yawf-ci="{{key}}" name="yawf-{{key}}" /><span class="yawf-configKeyTip">{{keyInputTip}}</span></div>',
'configSubscribe': '<div class="yawf-configSubscribe yawf-configItem "><div class="yawf-configSubscribeIcon"><img width="64" height="64" src="{{icon}}"></div><div class="yawf-configSubscribeTitle"><div class="yawf-configSubscribeName">{{name}}</div><div class="yawf-configSubscribeDate">{{date}}</div></div><div class="yawf-configSubscribeInfo">{{description}}</div><div class="yawf-configSubscribeButton"><a href="javascript:;" class="W_btn_b yawf-subscribeDisable"><span class="W_f14">{{subscribeDisableButton}}</span></a><a href="javascript:;" class="W_btn_b yawf-subscribeEnable"><span class="W_f14">{{subscribeEnableButton}}</span></a><a href="" target="_blank" rel="noreferrer" class="W_btn_b yawf-subscribeDetail"><span class="W_f14">{{subscribeDetailButton}}</span></a></div></div>',
'configStrings': '<div class="yawf-configStrings yawf-configItem"><form action="#"><label><span class="yawf-configDesc yawf-configStringsDesc">{{{text}}}</span><input id="yawf-{{key}}" class="W_input yawf-configStringsInput" type="text" name="yawf-{{key}}"></label><button id="yawf-add-{{key}}" class="W_btn_a yawf-configAdd" type="submit"><span>{{configStringsAdd}}</span></button></form><ul class="yawf-configStringsItems yawf-configItems"></ul></div>',
'configStringsItem': '<li class="W_btn_b W_btn_tag yawf-configStringsItem" node-type="tag_item" title="{{[item]}}"><a class="W_ficon ficon_close S_ficon" href="javascript:void(0);">X</a>{{[item]}}</li>',
'configUsers': '<div class="yawf-configUsers yawf-configItem"><form action="#"><label><span class="yawf-configDesc yawf-configUsersDesc">{{{text}}}</span><input id="yawf-{{key}}" class="W_input yawf-configUsersInput" type="text" name="yawf-{{key}}"></label><button id="yawf-add-{{key}}" class="W_btn_a yawf-configAdd" type="submit"><span>{{configUsersAdd}}</span></button></form><ul class="yawf-configUsersItems yawf-configItems"></ul></div>',
'configUsersItem': '<li class="yawf-configUsersItem"><div class="shield_object_card"><div class="card_bg clearfix"><div class="card_pic"><span class="pic"><img class="W_face_radius" width="50" height="50" alt="" src="{{avatar}}"></span></div><div class="card_content"><div class="object_info clearfix"><p class="W_fl"><span class="object_name" uid="{{id}}" title="{{name}}">{{name}}</span></p><p class="W_fr"><a class="W_ficon ficon_close S_ficon" action-data="uid={{id}}" href="javascript:void(0);">X</a></p></div><div class="other_info"></div></div></div></div></li>',
'configPrefill': '<span class="yawf-configPrefill" id="{{id}}"></span>',
'scriptIcon': '<div id="yawf-script-icon" style="background: url({{icon}}); width: 72px; height: 72px; float: right; margin: 0 2em"></div>',
'refConfigItem': '<span yawf-ref="{{ref}}"></span>',
// 自动补全功能
'suggestionContainer': '<div class="layer_menu_list yawf-autoCompleteList" yawf-complete-items="0"><ul></ul></div>',
'suggestionItem': '<li yawf-suggestion="{{text}}"><a>{{text}}</a></li>',
// 选中当前分组所有
'configSelectAll': '<div class="yawf-configSelectAll yawf-configItem"><a class="W_btn_b" href="javascript:;"><span class="W_f12">{{configSelectAllDesc}}</span></a></div>',
// 导入导出
'configImportExport': '<div class="yawf-configImportExport yawf-configItem"><label><input type="file" style=" width: 1px; height: 1px; margin: 0 -1px 0 0; opacity: 0;" /><span class="W_btn_b yawf-import"><span class="W_f14">{{configImportButton}}</span></span></label><a class="W_btn_b yawf-export" href="javascript:;"><span class="W_f14">{{configExportButton}}</span></a><a class="W_btn_b yawf-reset" href="javascript:;"><span class="W_f14">{{configResetButton}}</span></a></div>',
'configImportWbp': '<div class="yawf-configImportWbp yawf-configItem"><a class="W_btn_b" href="javascript:;"><span class="W_f14">{{configImportWbpButton}}</span></a><br /><div class="yawf-groupRemark">{{configImportWbpWarning}}</div></div>',
// 新功能提示对话框
'whatsNewHeader': '<div class="yawf-whats-new-header">{{updateSuccessHeader}}</div>',
'whatsNewBody': '<div class="yawf-whats-new-body yawf-window-body"><div class="yawf-whats-new-desc">{{updateSuccessDesc}}</div></div>',
'whatsNewFooter': '<div class="yawf-whats-new-footer"><hr /></div>',
'whatsNewBottom': '<div class="yawf-whats-new-bottom"></div>',
// 从 WBP 导入成功对话框
'wbpImportSuccessHeader': '<div class="wbp-import-success-header">{{wbpImportSuccessHeader}}</div>',
'wbpImportSuccessBody': '<div class="wbp-import-success-body yawf-window-body"><div class="wbp-import-success-desc">{{wbpImportSuccessDesc}}</div></div>',
// 合并左边栏占位符
'leftFake': '<div style="display: none !important;" id="yawf-left-fake"></div>',
// 左栏展开消息
'leftMsgHeader': '<div class="lev_Box yawf-leftMsg"><h3 class="lev"><a href="/at/weibo?leftnav=1" class="S_txt1" node-type="item" suda-uatrack="key=V6update_leftnavigate&value=message" bpfilter="message"><span class="levtxt">{{leftNavMsg}}</span></a></h3>',
'leftMsgAtMe': '<div class="lev"><a class="S_txt1" nm="mention_all" bpfilter="message" hrefextra="/at/weibo|/at/comment" nt="mention" node-type="item" href="/at/weibo?leftnav=1&wvr=6&nofilter=1"><span class="ico_block"><em node-type="left_item" class="W_ficon ficon_dot S_ficon">D</em></span><span class="levtxt">{{leftNavAtMe}}</span></a></div>',
'leftMsgCmt': '<div class="lev"><a class="S_txt1" nm="cmt_all" bpfilter="message" hrefextra="/comment/inbox|/comment/outbox" node-type="item" href="/comment/inbox?leftnav=1&wvr=6"><span class="ico_block"><em node-type="left_item" class="W_ficon ficon_dot S_ficon">D</em></span><span class="levtxt">{{leftNavCmt}}</span></a></div>',
'leftMsgLike': '<div class="lev"><a class="S_txt1" nm="attitude" bpfilter="message" node-type="item" href="/like/inbox?leftnav=1&wvr=6"><span class="ico_block"><em node-type="left_item" class="W_ficon ficon_dot S_ficon">D</em></span><span class="levtxt">{{leftNavLike}}</span></a></div></div>',
'leftMsgDM': '<div class="lev_Box"><div class="lev"><a class="S_txt1" nm="dm" bpfilter="message" hrefextra="/messages|/message/history" node-type="item" href="/messages?leftnav=1&wvr=6"><span class="ico_block"><em node-type="left_item" class="W_ficon ficon_dot S_ficon">D</em></span><span class="levtxt">{{leftNavDM}}</span></a></div>',
'leftMsgBox': '<div class="lev"><a class="S_txt1" nm="msgbox_c" bpfilter="message" node-type="item" href="/notesboard?leftnav=1&wvr=6"><span class="ico_block"><em node-type="left_item" class="W_ficon ficon_dot S_ficon">D</em></span><span class="levtxt">{{leftNavMsgBox}}</span></a></div>',
'leftMsgGroup': '<div class="lev"><a class="S_txt1" nm="chat_group_notice" bpfilter="message" node-type="item" href="/messages?leftnav=1&wvr=6&is_notice=1"><span class="ico_block"><em node-type="left_item" class="W_ficon ficon_dot S_ficon">D</em></span><span class="levtxt">{{leftNavGroup}}</span></a></div>',
'leftMsgDMSub': '<div class="lev"><a class="S_txt1" nm="dm_group" bpfilter="message" node-type="item" href="/message/sub?leftnav=1&wvr=6"><span class="ico_block"><em class="W_ficon ficon_dot S_ficon" node-type="left_item">D</em></span><span class="levtxt">{{leftNavDMSub}}</span></a></div>',
'leftMsgFooter': '</div>',
// 右侧栏收藏用户列表
'rightUserList': '<div id="yawf-rightmod_userlist"><div class="WB_cardwrap S_bg2"><div ucardconf="type=1" class="WB_right_module"><div class="WB_cardtitle_b S_line2"><h4 class="obj_name"><span title="{{rightUserListTitle}}" class="main_title W_fb W_f14 S_txt1"></a>{{rightUserListTitle}}</h4><div class="opt_box"><a class="W_ficon ficon_setup S_ficon">J</a></div></div><div class="WB_innerwrap"><div class="m_wrap clearfix"><ul class="group_list"></ul></div></div></div></div></div>',
'rightUserListItem': '<li node-type="row" class="S_line2"><div class="pic"><a href="/u/{{id}}" title="{{name}}" target="_blank"><img width="30" height="30" src="{{avatar}}" alt="{{name}}" usercard="id={{id}}"></a></div><div class="con"><p class="name"><a usercard="id={{id}}" href="/u/{{id}}" class="S_txt1 W_fb">{{name}}</a><span class="W_new" style="display:none"></span></p></div></li>',
'rightUserListConfig': '<div class="yawf-fave-people-config-body yawf-window-body"></div>',
// 屏蔽微博
'hideBoxSimple': '<div class="yawf-hide_box"><a href="javascript:void(0);" title="{{hideThisWeibo}}"><i class="W_ficon ficon_close S_ficon">X</i></a></div>',
// 查看原图
'viewOriginalLink': '<li><span class="line S_line1"><a class="S_txt1" href="javascript:;" target="_blank"><i class="W_ficon ficon_search S_ficon">l</i>{{viewOriginalText}}</a></span></li>',
'viewOriginalFCLink': '<a imagecard="pid={{pid}}" href="javascript:void(0);"><i class="W_ficon ficon_cd_img WBficon">¡</i>{{viewOriginalFCText}}</a>',
// 视频播放
'videoMediaDisplay': '<div class="WB_expand_media S_bg1"><div class="tab_feed_a clearfix"><div class="tab"><ul class="clearfix"><li><span class="line S_line1"><a class="S_txt1" href="javascript:;" action-type="feed_list_media_toSmall"><i class="W_ficon ficon_arrow_fold S_ficon">k</i>{{foldDetails}}</a></span></li></ul></div></div><div class="WB_app_view" node-type="feed_list_media_widgetDiv"><img class="loading_gif" src="http://img.t.sinajs.cn/t6//style/images/common/loading.gif"></div></div>',
'videoMediaPlayer': '<video src="{{url}}" autoplay="autoplay" controls="controls" style="max-width: 482px; max-height: 482px;"></video>',
// 拖拽
'dropArea': '<div id="yawf-drop-area" style="display: none;"><div class="yawf-drop-area-desc"><div class="yawf-drop-area-title">{{dropAreaTitle}}</div><div class="yawf-drop-area-text">{{dropAreaText}}</div></div><div contenteditable="true" id="yawf-drop-area-content"></div></div>',
'fastFilterHeader': '<div id="yawf-fast-filter-chose"><div class="yawf-fast-filter-option"><span class="yawf-fast-filter-text">{{fastFilterChoseText}}</span><ul id="yawf-fast-filter-list">',
'fastFilterItem': '<li class="yawf-fast-filter-item"><label><input class="W_checkbox yawf-configBooleanInput" type="checkbox"><span class="yawf-fastFilterItemInner"></span></label><select value="blacklist"><option value="whitelist">{{whitelistActionDesc}}</option><option value="blacklist">{{blacklistActionDesc}}</option><option value="foldlist">{{foldlistActionDesc}}</option></select></li>',
'fastFilterFooter': '</ul></div><div class="W_layer_btn S_bg2"><a action-type="ok" node-type="ok" class="W_btn_a btn_34px" href="javascript:void(0);"><span>{{okButtonTitle}}</span></a><a action-type="cancel" node-type="cancel" class="W_btn_b btn_34px" href="javascript:void(0);"><span>{{cancelButtonTitle}}</span></a></div></div>',
'fastFilterString': '<label><span></span></label>',
'fastFilterStringInput': '<input width="12" class="input_default" type="text" />',
// 表情输入
'fastEmojiInput': '<div class="faces_list yawf-faces_list" node-type="scrollView"><div yawf-face="top" node-type="list"><span>{{fastEmojiInputTop}}</span><ul><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><span id="yawf-face-drop-area">{{fastEmojiInputTopNotice}}</span></div><div yawf-face="recent" node-type="list"><span>{{fastEmojiInputRecent}}</span><ul><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul></div></div>',
'fastEmojiListItem': '<li title="{{title}}" action-data="insert={{text}}" action-type="select"><img src="{{img}}"></li>',
'fastEmojiListItemIM': '<li title="{{text}}" action-data="text={{text}}" action-type="webim_phiz_face"><img src="{{img}}"></li>',
'fastEmojiClearButton': '<a class="W_btn_b yawf-clear-emoji" href="javascript:;"><span class="W_f14">{{fastEmojiClear}}</span></a>',
// 只看微博列表
'weiboOnlyButton': '<div id="yawf-weibo-only"><span><a class="S_txt1" href="javascript:void(0);">{{weiboOnlyButtonDesc}}</a></span></div>',
// 分组或特别关注的未读提示
'noticeContainer': '<div class="WB_feed_type SW_fun S_line2" action-type="feed_list_item" yawf-display="notice"></div>',
// 有新微博的替代提示
'feedListNewBar': '<div class="WB_cardwrap WB_notes" yawf-id="home_new_feed_tip"><a href="javascript:void(0);"></a></div>',
'feedTimeTip': '<div class="WB_cardwrap S_bg2 yawf-timeTip"><div class="WB_cardtitle_a W_tc"><a node-type="feed_list_item_date" date="{{date}}" style="color:inherit"></a> {{{time}}}</div></div>',
// 顶栏徽标
'navLogo': '<span class="logo"></span>',
// 来自 微博 weibo.com
'weiboViaWeiboCom': '<a rel="nofollow" href="http://weibo.com/" target="_blank" action-type="app_source" class="S_txt2">{{defaultSource}}</a>',
};
// 其他在填写格式化字符串时自动填写的内容
var fill = {
'domainURL': {
'toString': function () {
if (document.domain === 'www.weibo.com') return 'http://www.weibo.com';
return 'http://weibo.com';
}
},
};
// 超链接
var url = {
'newcard': '{{domainURL}}/aj/user/newcard?type=1&{{query}}&_t=1&callback={{callback}}',
'view_cmt_ori': 'http://ww1.sinaimg.cn/large/{{pid}}.jpg',
'block_wb': '{{domainURL}}/aj/user/block?ajwvr=6',
'del_cmt': '{{domainURL}}/aj/comment/del?ajwvr=6',
'video_show': 'http://video.weibo.com/show?fid={{id}}',
'user': '{{domainURL}}/u/{{uid}}',
'topsuggest': 'http://s.weibo.com/ajax/topsuggest.php?key={{query}}&_v={{callback}}',
'topicsuggest': '{{domainURL}}/aj/mblog/topic?ajwvr=6&q={{query}}',
'attention': '{{domainURL}}/aj/mblog/attention?ajwvr=6&q={{query}}',
'getlongtext': '{{domainURL}}/p/aj/mblog/getlongtext?ajwvr=6&mid={{mid}}',
};
var font = {
'west': [
['Times', 'Times'],
['"Times New Roman"', 'Times New Roman'],
['Georgia', 'Georgia'],
['Arial', 'Arial'],
['Helvetica', 'Helvetica'],
['Verdana', 'Verdana'],
],
'chinese': [
['"SimSun", "宋体"', '中易宋体'],
['"Heiti SC", "黑体-简"', '黑体-简'],
['"PingFang SC", "苹方-简"', '苹方-简'],
['"STHeiti", "华文黑体"', '华文黑体'],
['"Hiragino Sans GB", "冬青黑体简体中文"', '冬青黑体'],
['"Microsoft YaHei", "微软雅黑"', '微软雅黑'],
['"DengXian", "等线"', '等线'],
['"WenQuanYi Zen Hei", "文泉驿正黑"', '文泉驿正黑'],
['"WenQuanYi Micro Hei", "文泉驿微米黑"', '文泉驿微米黑'],
['"Noto Sans CJK SC", "思源黑体 SC"', '思源黑体'],
['"SimKai", "楷体"', '中易楷体'],
['"PMingLiU", "新細明體"', '新細明體'],
['"MingLiU", "細明體"', '細明體'],
['"Heiti TC", "黑體-繁"', '黑體-繁'],
['"PingFang TC", "蘋方-繁"', '蘋方-繁'],
['"PingFang HK", "蘋方-港"', '蘋方-港'],
['"LiHei Pro Medium", "儷黑 Pro"', '儷黑 Pro'],
['"Microsoft JhengHei", "微軟正黑體"', '微軟正黑體'],
['"Noto Sans CJK TC", "思源黑體 TC"', '思源黑體'],
['"DFKai-SB", "BiauKai", "標楷體"', '標楷體'],
]
};
// 微博使用 softbank 的 emoji 编码,我们将它们转换到标准的 unicode
// 键是 softbank 扩展 unicode 表情的码位点减去 0xe000 ;值是 unicode 码位点
var emoji = { 1: 128102, 2: 128103, 3: 128139, 4: 128104, 5: 128105, 6: 128085, 7: 128094, 8: 128247, 9: 9742, 10: 128241, 11: 128224, 12: 128187, 13: 128074, 14: 128077, 15: 9757, 16: 9994, 17: 9996, 18: 128587, 19: 127935, 20: 9971, 21: 127934, 22: 9918, 23: 127940, 24: 9917, 25: 128033, 26: 128052, 27: 128663, 28: 9973, 29: 9992, 30: 128643, 31: 128645, 32: 10067, 33: 10071, 34: 10084, 35: 128148, 36: 128336, 37: 128337, 38: 128338, 39: 128339, 40: 128340, 41: 128341, 42: 128342, 43: 128343, 44: 128344, 45: 128345, 46: 128346, 47: 128347, 48: 127800, 49: 128305, 50: 127801, 51: 127876, 52: 128141, 53: 128142, 54: 127968, 55: 9962, 56: 127970, 57: 128649, 58: 9981, 59: 128507, 60: 127908, 61: 127909, 62: 127925, 63: 128273, 64: 127927, 65: 127928, 66: 127930, 67: 127860, 68: 127864, 69: 9749, 70: 127856, 71: 127866, 72: 9924, 73: 9729, 74: 9728, 75: 9748, 76: 127764, 77: 127748, 78: 128124, 79: 128049, 80: 128047, 81: 128059, 82: 128041, 83: 128045, 84: 128051, 85: 128039, 86: 128523, 87: 128515, 88: 128542, 89: 128544, 90: 128169, 257: 128234, 258: 128238, 259: 9993, 260: 128242, 261: 128540, 262: 128525, 263: 128561, 264: 128531, 265: 128053, 266: 128025, 267: 128055, 268: 128125, 269: 128640, 270: 128081, 271: 128161, 272: 127808, 273: 128143, 274: 127873, 275: 128299, 276: 128269, 277: 127939, 278: 128296, 279: 127878, 280: 127809, 281: 127810, 282: 128127, 283: 128123, 284: 128128, 285: 128293, 286: 128188, 287: 128186, 288: 127828, 289: 9970, 290: 9978, 291: 9832, 292: 127905, 293: 127915, 294: 128191, 295: 128192, 296: 128251, 297: 128252, 298: 128250, 299: 128126, 300: 12349, 301: 126980, 302: 127386, 303: 128176, 304: 127919, 305: 127942, 306: 127937, 307: 127920, 308: 128014, 309: 128676, 310: 128690, 311: 128679, 312: 128697, 313: 128698, 314: 128700, 315: 128137, 316: 128164, 317: 9889, 318: 128096, 319: 128704, 320: 128701, 321: 128266, 322: 128226, 323: 127884, 324: 128274, 325: 128275, 326: 127750, 327: 127859, 328: 128211, 329: 128177, 330: 128185, 331: 128225, 332: 128170, 333: 127974, 334: 128677, 335: 127359, 336: 128655, 337: 128699, 338: 128110, 339: 127971, 340: 127975, 341: 127973, 342: 127978, 343: 127979, 344: 127976, 345: 128652, 346: 128661, 1091: 127744, 1084: 127746, 1099: 127747, 1097: 127749, 1098: 127751, 1100: 127752, 1086: 127754, 821: 127775, 575: 9800, 576: 9801, 577: 9802, 578: 9803, 579: 9804, 580: 9805, 581: 9806, 582: 9807, 583: 9808, 584: 9809, 585: 9810, 586: 9811, 587: 9934, 772: 127799, 1095: 127811, 771: 127802, 773: 127803, 775: 127796, 776: 127797, 1092: 127806, 837: 127822, 838: 127818, 839: 127827, 840: 127817, 841: 127813, 842: 127814, 1049: 128064, 1051: 128066, 1050: 128067, 1052: 128068, 1033: 128069, 796: 128132, 797: 128133, 798: 128134, 799: 128135, 800: 128136, 1064: 128107, 1065: 128111, 1301: 128113, 1302: 128114, 1303: 128115, 1304: 128116, 1305: 128117, 1306: 128118, 1307: 128119, 1308: 128120, 595: 128129, 1310: 128130, 1311: 128131, 1325: 128013, 1326: 128020, 1327: 128023, 1328: 128043, 1318: 128024, 1319: 128040, 1320: 128018, 1321: 128017, 1089: 128026, 1317: 128027, 1314: 128032, 1315: 128036, 1313: 128038, 1312: 128044, 1316: 128057, 1322: 128058, 1323: 128046, 1324: 128048, 1329: 128056, 1334: 128062, 1027: 128553, 1040: 128562, 1030: 128565, 1039: 128560, 1038: 128530, 1028: 128548, 1048: 128536, 1047: 128538, 1036: 128567, 1037: 128563, 1045: 128517, 1034: 128518, 1042: 128514, 1044: 9786, 1043: 128546, 1041: 128557, 1035: 128552, 1046: 128545, 1031: 128534, 1032: 128554, 1026: 128527, 1025: 128549, 1029: 128521, 1059: 128581, 1060: 128582, 1062: 128583, 1063: 128588, 1053: 128591, 1281: 127977, 1284: 127980, 1285: 127983, 1286: 127984, 1288: 127981, 514: 9875, 779: 127982, 1289: 128508, 1309: 128509, 794: 128097, 795: 128098, 770: 128084, 792: 128082, 793: 128087, 801: 128088, 802: 128089, 803: 128092, 1299: [127464, 127475], 1294: [127465, 127466], 1297: [127466, 127480], 1293: [127467, 127479], 1296: [127468, 127463], 1295: [127470, 127481], 1291: [127471, 127477], 1300: [127472, 127479], 1298: [127479, 127482], 1292: [127482, 127480], 574: 128302, 521: 128304, 783: 128138, 1330: 127344, 1331: 127345, 1332: 127374, 1333: 127358, 788: 127872, 843: 127874, 1096: 127877, 784: 127880, 786: 127881, 1078: 127885, 1080: 127886, 1081: 127891, 1082: 127890, 1083: 127887, 1088: 127879, 1090: 127888, 1093: 127875, 1094: 127889, 769: 128221, 791: 128227, 790: 128189, 787: 9986, 1066: 127936, 1067: 127944, 1069: 127946, 1076: 128647, 1077: 128644, 1070: 128665, 1071: 128666, 1072: 128658, 1073: 128657, 1074: 128659, 1075: 127906, 1287: 127910, 778: 127911, 1282: 127912, 1283: 127913, 804: 127916, 1068: 127921, 806: 127926, 774: 128144, 1061: 128145, 1085: 128146, 519: 128286, 590: 169, 591: 174, 1335: 8482, 528: [35, 8419], 540: [49, 8419], 541: [50, 8419], 542: [51, 8419], 543: [52, 8419], 544: [53, 8419], 545: [54, 8419], 546: [55, 8419], 547: [56, 8419], 548: [57, 8419], 549: [48, 8419], 523: 128246, 592: 128243, 593: 128244, 834: 127833, 832: 127836, 825: 127838, 826: 127846, 827: 127839, 828: 127841, 829: 127832, 830: 127834, 831: 127837, 833: 127835, 835: 127842, 836: 127843, 844: 127857, 845: 127858, 1087: 127847, 824: 127861, 780: 127867, 566: 8599, 568: 8600, 567: 8598, 569: 8601, 562: 11014, 563: 11015, 564: 10145, 565: 11013, 570: 9654, 571: 9664, 572: 9193, 573: 9194, 818: 11093, 819: 10060, 822: 10068, 823: 10069, 529: 10175, 807: 128147, 808: 128151, 809: 128152, 810: 128153, 811: 128154, 812: 128155, 813: 128156, 1079: 128157, 516: 128159, 524: 9829, 526: 9824, 525: 9830, 527: 9827, 782: 128684, 520: 128685, 522: 9855, 594: 9888, 513: 128694, 777: 128702, 532: 127378, 553: 127380, 530: 127381, 589: 127383, 531: 127385, 515: 127489, 552: 127490, 555: 127539, 554: 127541, 533: 127542, 534: 127514, 535: 127543, 536: 127544, 551: 127545, 556: 127535, 557: 127546, 789: 12953, 781: 12951, 550: 127568, 820: 128162, 785: 128163, 817: 128166, 816: 128168, 814: 10024, 517: 10036, 518: 10035, 537: 9898, 538: 128309, 539: 128307, 815: 11088, 805: 128276, 588: 128285, 558: 128070, 559: 128071, 560: 128072, 561: 128073, 1054: 128075, 1055: 128079, 1056: 128076, 1057: 128078, 1058: 128080 };
// 皮肤
var skin = { skin: { _001: "蓝色心情", _002: "紫荆花瓣", _003: "沙滩漫步", _004: "凌晨两点半", _005: "梦幻星空", _006: "暗夜留香", _007: "我心飞翔", _008: "happy forever", _009: "彩虹", _010: "梦幻游乐场", _011: "彩色天空", _012: "名人会", _013: "哇嗷", _014: "我愿意", _015: "猫趣", _016: "保护北冰洋", _017: "魅影", _018: "童趣彩虹", _019: "kiss", _020: "漓彩", _021: "留沙", _022: "心晴", _023: "greenway", _024: "Hello Pig", _025: "Iam 80后", _026: "安静夜", _027: "百灵鸟", _028: "碧草蓝天", _029: "窗台", _030: "梦幻", _031: "飞鸟鱼", _032: "粉色风信子", _034: "复古", _035: "黑板", _036: "咖啡", _037: "情迷宝丽来", _038: "太空", _039: "涂鸦板", _040: "星空", _041: "雨夜", _042: "纸飞机", _043: "飘", _045: "pop", _046: "紫色风情", _047: "coffee bar", _048: "风轻云淡", _049: "风轻云淡", _050: "梦幻星空", _051: "保护北冰洋", _052: "漓彩", _053: "情迷宝丽来", _054: "太空", _055: "雨夜", _058: "默认", _211: "我们结婚吧", _212: "幸福在身边", _214: "新年闹春", _252: "环保益起来", _253: "地球一小时", _254: "随手拍", _255: "为爱益起跑" }, skinvip: { _001: "鸟人的异想世界", _002: "纸面人生", _006: "简约生活", _009: "游戏时光", _010: "秀出真我", _011: "糖果缤纷", _013: "我的翅膀", _014: "莲花", _016: "超级玛丽", _017: "浪小花", _018: "80后", _019: "可爱滴兔子", _021: "海底世界", _022: "给自己放个假", _023: "80后的回忆", _024: "马戏团", _025: "孤独的夜", _026: "暖暖", _027: "吃豆人", _028: "rainbow", _031: "海之梦境", _032: "旋转时光", _033: "午后巴士情缘", _034: "小黄鸭", _035: "夏微凉", _036: "碧水晚舟", _037: "Marry Me", _038: "水墨鱼", _039: "夕影", _040: "心之恋", _041: "心心相印", _042: "旅行时光", _043: "拥抱美好", _044: "寐", _045: "狗狗漫步", _046: "阿狸的海洋", _047: "蒲公英的梦", _048: "播种阳光", _049: "小情人", _050: "海滩", _051: "天使爱人", _054: "悠闲午后", _056: "西瓜女孩", _057: "郊游", _058: "南极企鹅", _059: "老上海岁月", _060: "雾都", _061: "海边度假", _062: "一个人的旅行", _063: "环游地球", _064: "罗小黑的异想世界", _065: "李雷与韩梅", _068: "艾玩兔-守候", _069: "俏皮喵星人", _070: "梦游仙境", _071: "爱情畅想", _072: "萌狗狗", _073: "马背上的天空", _074: "暖阳", _075: "渔舟唱晚", _076: "小伙伴", _078: "简单生活", _079: "守望", _080: "好基友", _081: "都市流浪", _082: "躲猫猫", _083: "键盘仔", _084: "南瓜头快跑", _085: "飞向月球", _086: "枫林", _087: "柿子红了", _088: "Trick or Treat", _089: "马里奥", _090: "天空", _091: "礼物轰炸机", _092: "阿狸的秋天", _093: "勇士狸", _094: "萌宠公寓", _095: "宁静的海", _096: "月光", _097: "good night", _098: "喵星人向前冲", _099: "棒棒糖", _101: "童话", _102: "猫咪乐队", _105: "表白", _106: "自由猪神", _107: "梦中的小屋", _108: "XOXO", _109: "童年的小熊", _110: "我的交响乐", _111: "仙乐飘飘", _112: "下雪啦", _113: "寒冬", _114: "后天", _115: "蛇年祝福", _116: "圣诞老人", _117: "江南style", _118: "龄官", _120: "迪士尼-史迪奇", _121: "迪士尼-维尼熊", _122: "迪士尼-小顽皮", _123: "迪士尼-玛丽猫", _124: "迪士尼-美人鱼", _125: "迪士尼-米奇米妮", _126: "迪士尼-欢乐圣诞", _127: "迪士尼-小仙女", _128: "守望", _129: "幽灵古堡", _130: "迷雾", _131: "金色阳光", _132: "I Miss U", _133: "未来の树", _134: "金色海洋", _135: "雨后", _136: "草坡上的女孩", _137: "Sexy music", _138: "移动城堡", _139: "拥抱爱", _140: "春草", _141: "花与蝶", _142: "樱の花", _145: "黑暗阶梯", _146: "鱼", _147: "公主", _149: "仙女的裙摆", _150: "小仙女", _152: "樱花舞", _153: "自娱自乐", _154: "哥哥", _156: "家有金毛", _158: "淘气小哈", _159: "海军狗狗", _160: "巴哥", _163: "迪士尼-魔境仙踪", _164: "迪士尼-公主", _165: "青春", _166: "花椅", _169: "拉拉", _173: "旧城往事", _174: "功夫之王", _175: "不明飞行物", _176: "星际探险", _178: "小泰迪", _179: "饼干喵星人", _181: "喵星人三兄弟", _182: "麋鹿喵星人", _185: "可爱喵星人", _187: "母爱", _188: "大手小手", _189: "一家人", _192: "钢铁侠", _193: "钢铁侠出击", _194: "迪士尼-米奇", _195: "迪士尼-米老鼠", _196: "萝莉", _197: "御姐", _198: "凝望地球", _199: "依靠", _201: "CS战士", _202: "Take Me Home", _203: "登船style", _204: "稻草人", _205: "happy everyday", _206: "甜点", _207: "大风吹", _208: "烤红薯", _209: "Ball", _211: "贪吃蛇", _212: "力争上游", _213: "棋逢对手", _214: "团团圆圆", _216: "年夜饭", _221: "春雨", _222: "尘飞扬", _224: "雾霾压城", _225: "仙女的舞蹈", _226: "旅行赏春", _227: "赏春去", _228: "极速飙车", _234: "喵星人的思念", _235: "二货喵星人", _236: "怀念", _237: "卖萌喵星人", _238: "金字塔的秘密", _239: "母亲节", _240: "端午节", _242: "盒子星球", _243: "心心相印", _244: "粉色心情", _245: "侏罗纪公园", _246: "世界杯", _247: "点球大战", _250: "杨洋", _251: "杨洋生日专属", _303: "纪念日", _304: "窗外的春天", _305: "速度与激情", _306: "绿意盎然", _307: "动画城", _310: "牧人", _311: "美好风光", _312: "春天的幻想", _318: "重返地球", _319: "冲上云霄", _320: "陨石", _325: "爱情使者", _326: "怪兽大学", _328: "毛怪和小伙伴", _330: "迪士尼-复古米老鼠", _332: "鱼跃", _333: "夜色", _334: "海洋", _335: "祈盼", _337: "玫瑰代表我的爱", _339: "神偷奶爸2", _342: "圣诞驯鹿", _343: "温情圣诞", _344: "冰雪奇缘", _345: "驯龙骑士", _347: "蝴蝶春天", _348: "绿色生活", _349: "彩色气球", _350: "雨滴", _351: "晴空暖阳", _354: "花瓣", _355: "春色", _358: "keeny的咖啡", _359: "keeny的鲸鱼", _400: "春天的气息", _401: "鬼娃娃", _402: "密室", _404: "竹林听雨", _405: "云雾", _407: "油菜花", _408: "旅途中的等待", _409: "旅程", _410: "汽车之旅", _411: "荷兰风车", _412: "迷彩之战", _414: "战地飞车", _415: "情侣喵星人", _416: "喵星人和鱼", _417: "一起午觉", _419: "爱心磁带", _420: "来自星星的我", _422: "欢乐喵星人", _423: "私家飞碟", _425: "乐队", _600: "家", _702: "纪念泰戈尔", _704: "TFBOYS少年强", _709: "TFBOYS青春修炼手册", _711: "新版微博", _713: "探寻幸福", _714: "夏天你好", _715: "我爱火锅", _716: "红色巴士", _717: "仰望星空", _718: "happy birthday", _719: "银杏知秋", _722: "玩雪咯", _723: "喵星人的星际穿越", _724: "Jingle bells", _725: "闹新春", _726: "三羊开泰", _731: "7月日历", _732: "8月日历", _733: "9月日历", _734: "10月日历", _735: "11月日历", _736: "12月日历", _737: "1月日历", _738: "2月日历", _739: "3月日历", _740: "碧波", _741: "一猫一世界", _742: "呐喊的汪汪", _743: "家有馋猫", _744: "狗狗爱美丽", _745: "温柔如喵", _746: "藏猫猫", _747: "伴君旅行", _748: "我想静静", _749: "倾情", _750: "粼粼海光", _751: "华晨宇", _752: "SNH48", _753: "诺言", _754: "乔振宇", _755: "妞妞和端午", _756: "暖暖屋", _757: "依偎ivvi", _800: "TFBOYS易烊千玺", _801: "初雪", _802: "暖心拿铁", _803: "陪伴", _804: "Merry Xmas", _805: "逆光森林", _806: "我爱披萨", _807: "旅行成瘾", _808: "我爱甜点", _809: "羊年到", _811: "希望之树", _812: "海洋", _813: "小岛和船", _814: "雪景", _815: "彩虹之路" }, skinvipf: { _001: "大海", _002: "下雪", _003: "天使", _004: "双子座", _005: "远行" }, skinvipg: { _001: "毕业季", _002: "上班族的周一", _003: "上班族的周二", _004: "上班族的周三", _005: "上班族的周四", _006: "上班族的周五", _007: "上班族的周六", _008: "上班族的周天" }, skinvipj: { _001: "超级玛丽动态版" }, weekskin: { _002: "微博经典" }, weekskinvip: { _001: "旅行时光", _002: "绿意", _003: "上班族一周心情", _004: "迪士尼" } };
var util = {};
// 浏览器识别
util.browser = {};
// 一些兼容性代码
// Array.from
if (!Array.from) Array.from = function () { var r = Object.prototype.toString, n = function (n) { return "function" == typeof n || "[object Function]" === r.call(n) }, t = function (r) { var n = +r; return isNaN(n) ? 0 : 0 !== n && isFinite(n) ? (n > 0 ? 1 : -1) * Math.floor(Math.abs(n)) : n }, e = Math.pow(2, 53) - 1, o = function (r) { var n = t(r); return Math.min(Math.max(n, 0), e) }; return function (r) { var t = this, e = Object(r); if (null == r) throw new TypeError("Array.from requires an array-like object - not null or undefined"); var a, i = arguments.length > 1 ? arguments[1] : void 0; if (void 0 !== i) { if (!n(i)) throw new TypeError("Array.from: when provided, the second argument must be a function"); arguments.length > 2 && (a = arguments[2]) } for (var u, f = o(e.length), c = n(t) ? Object(new t(f)) : Array(f), h = 0; f > h;) u = e[h], c[h] = i ? void 0 === a ? i(u, h) : i.call(a, u, h) : u, h += 1; return c.length = f, c } }();
// Object.assign
if (!Object.assign) Object.assign = function (n) { "use strict"; if (void 0 === n || null === n) throw new TypeError("Cannot convert undefined or null to object"); for (var r = Object(n), t = 1; t < arguments.length; t++) { var e = arguments[t]; if (void 0 !== e && null !== e) for (var o in e) e.hasOwnProperty(o) && (r[o] = e[o]) } return r };
// 检查是否是 Firefox 浏览器
util.browser.fx = {};
util.browser.fx.version = (function () {
var m = navigator.userAgent.match(/^Mozilla\/5\.0 \([^)]+; rv:([\d.]+)\) Gecko\/[\d]{8} Firefox\/[\d.]+$/);
return m && m[1] || null;
}());
util.browser.fx.avaliable = !!util.browser.fx.version;
if (util.browser.fx.avaliable) util.browser.fx.mainversion = +util.browser.fx.version.match(/^\d+/);
// 脚本识别
util.script = {};
// 获得脚本图标
util.script.icon = (function () {
try {
return GM_info.scriptMetaStr.match(new RegExp('// @(icon)(?:\\s+(.*))'))[2];
} catch (e) { return 'https://tiansh.github.io/yawf/img/yawf.png'; }
}());
// 检查是否是压缩版本
util.script.ismin = (function () {
try {
// 检查多余的空格或分号、布尔字面常量、未消除的死代码、if语句,判断是否是压缩后的代码
var func = function () {
return
if (false) {
true;;
}
} + '';
return !func.match(/return[\s\S]*if[\s\S]*\s\strue;;[\r\n\s]/);
} catch (e) {
return true; // 不知道哪里出的问题,当作是压缩的比较安全
}
}());
// 检查是否开启了调试
util.script.isdebug = (function () {
if (util.script.ismin) return false;
return !!GM_getValue('debug', false);
}());
// 优先级设置
util.priority = {
'FIRST': 1e6,
'HIGH': 1e5,
'BEFORE': 1e3,
'DEFAULT': 0,
'AFTER': -1e3,
'LOW': -1e5,
'LAST': -1e6,
};
// 函数相关操作
util.func = {};
// 基本函数
var noop = util.func.noop = function () { };
util.func.identity = function (x) { return x; };
util.func.constant = function (x) { return function () { return x; }; };
// 在页面执行一个函数
util.func.page = function (f) {
var args = JSON.stringify(Array.from(arguments).slice(1)).slice(1, -1);
var js = 'void(' + f + '(' + args + '));';
window.eval(js); // YES! eval! windoww.eval!
};
// 延迟调用函数
util.func.call = function (f) {
setTimeout.apply(null, [f, 0].concat([].slice.call(arguments, 1)));
};
// 套上try-catch
util.func.catched = function (f, fc) {
var ret = function () {
try { return f.apply(this, arguments); }
catch (e) {
util.error('Exception while run %o: %o\n%o', f, e, e.stack);
if (fc) fc(e);
}
};
ret.name = f.name;
return ret;
};
// 度量函数性能
util.func.performance = (util.script.isdebug && ('performance' in window)) ? (function (ignore) {
var status = {}, p = false;
var show = function () {
if (p) return; p = true;
setTimeout(function () {
p = false;
console.log('performance meansure: %o', status);
}, 60e3);
};
var mfunc = function (f) {
status[f.name] = { 'total': 0, 'data': [] };
console.log('%o time meansure', f);
return function () {
var t = performance.now();
f.apply(this, arguments);
var d = performance.now() - t;
status[f.name].total += d;
if (d > ignore)
status[f.name].data.push({ 'duration': d, 'time': t });
show();
};
}, mfuncs = {}, recorded = {};
return function (f) {
if (!f.name) { console.log('function name needed: %o', f); return f; }
if (recorded[f.name] && recorded[f.name] !== f) { console.log('duplicate function name: %o, %o', recorded[f.name], f); return f; } else recorded[f.name] = f;
if (!mfuncs[f.name]) mfuncs[f.name] = mfunc(f);
return mfuncs[f.name];
};
}(10)) : util.func.identity;
// 向 unsafeWindow 暴露接口
util.func.output = function (name, handler) {
var push = util.func.catched(function (args) {
args = args.wrappedJSObject || args;
util.debug('%s.(%o)', name, args);
handler(args);
}.bind(window));
if (unsafeWindow[name]) {
util.debug('before loaded %s: %o', name, unsafeWindow[name]);
Array.from(unsafeWindow[name]).forEach(push);
}
try {
unsafeWindow[name] = new Proxy({ 'push': push }, {
'get': function (obj, name) { if (name === 'push') return obj.push; },
'set': function () { }
});
} catch (e) { unsafeWindow[name] = { 'push': push }; }
};
// 对象相关工具
util.obj = {};
// 使用点分隔的字串索引对象
util.obj.dotted = function (o, p) {
p = p.split('.');
while (typeof o !== 'undefined' && p.length) o = o[p.shift()];
return o;
};
// 字符串工具
util.str = {};
// 多行字符串
// 传入的函数内包含一大段注释,提取注释内容作为字符串
// 传入的函数末尾的附加内容是为了避免 UglifyJS2 压缩时造成错误而添加的
util.str.cmt = function (f) {
var s = f.toString().replace(/^[\s\S]*\/\*.*/, '').replace(/.*\*\/[\s\S]*$/, '').replace(/\r\n|\r|\n/g, '\n');
return s;
};
// 从一个链接中截取他的域名
util.str.host = function (link) {
var x = document.createElement('a');
x.href = link;
return x.host;
};
util.str.escape = {};
// 将字符串用&#dd的形式转义,以便将内容至于 XML 中
util.str.escape.xml = function (s) {
return s.replace(/[\u0000-\u00ff]/g, function (c) { return '&#' + c.charCodeAt(0); });
};
// 将正则式相关字符以斜杠转义,以便创建正则匹配
util.str.escape.regexp = function (s) {
return s.replace(/([.*+?^${}()|\[\]\/\\])/g, "\\$1");
};
// 将 utf8 编码的 softbank 表情转换为 unicode , 例如 "ee8192" -> "🐶"
util.str.codePoint = function (codePoint) {
if (String.fromCodePoint) return String.fromCodePoint(codePoint);
if (codePoint < 0xFFFF) return String.fromCharCode(codePoint);
return (String.fromCharCode((codePoint >> 10) + 0xD7C0) +
String.fromCharCode((codePoint % 0x400) + 0xDC00));
};
util.str.emoji = function (code) {
// 我们将 utf8 编码转换成码位点,并减去 0xe000 后查表
var softbank = emoji[decodeURIComponent(code.replace(/(..)/g, '%$1')).charCodeAt(0) - 0xe000];
if (!softbank.length) softbank = [softbank];
// 最后将结果转换回字符
var unicode = softbank.map(util.str.codePoint).join('');
util.debug('emoji convert %o -> %o', code, unicode);
return unicode;
};
// 以参数填充字符串
util.str.fill = function (base, func) {
var argdatas = Array.from(arguments).slice(1);
var datas = argdatas.concat([text, fill]);
// 找合适的内容填上
var parser = function (datas) {
return function (key) {
var ret = null;
datas.some(function (data) {
if (typeof data === 'object' && key in data) ret = '' + data[key];
return ret !== null;
});
return ret;
};
};
var parseFunction;
if (typeof func === 'function') parseFunction = func;
else parseFunction = parser(datas);
return base.replace(/\{\{([\[{])?([a-zA-Z0-9_\-]*)([\]\}])?\}\}/g, function (o, i, p, c) {
var ps = p.split('|'), m = { '{': '}', '[': ']', '': '' }[i || ''] === (c || '');
var ret = parseFunction(ps[0]);
if (ret == null) return o;
if (m && i === '{') ret = util.str.fill(ret, parseFunction);
else if (m && i === '[') ret = util.str.escape.xml(ret);
else if (!m) ret = (i || '') + ret + (c || '');
return ret;
});
};
// 产生一个假的回调函数
util.str.fcb = (function () {
var last = 0;
return function () {
return 'STK_' + (last = Math.max(last + 1, Number(new Date())));
};
}());
// 从 JSONP 的返回结果中截取有用的东西
util.str.parsejsonp = function (resp) {
return JSON.parse(resp.replace(/^try\{[^{]*\(\{/, '{').replace(/}\)\s*;?\s*}catch\(e\)\{\};?$/, '}'));
};
// 检查一个字串是否是正则式,如果出错报告用户
// 返回为正则式或 null
util.str.addregex = function (s) {
s = s.trim();
if (s.length >= 2 && s[0] === '/' && s[s.length - 1] === '/') s = s.slice(1, -1);
try { RegExp(s).exec(''); } catch (e) {
util.ui.alert('yawf-regexp-bad-formed', {
'title': util.str.fill('{{regexpBadFormedTitle}}'),
'text': util.str.fill('{{{regexpBadFormed}}}', { 'regexp': util.str.escape.xml(s) }),
'icon': 'error'
});
s = null;
}
if (RegExp(s) + '' === '/(?:)/') return null;
return s;
};
// 将字符串编译成正则式
util.str.compregex = function (regex) {
try { return RegExp(regex); }
catch (e) {
util.debug('compile regexp exception %s : %o', regex, e);
return null;
}
};
// 将&连接的键值对变为对象
util.str.parsequery = function (str) {
var o = {};
if (str === '') return o;
str.split('&').map(function (kv) {
if (kv.indexOf('=') === -1) o[kv] = null;
else {
kv = kv.split('=', 2);
o[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);
}
});
return o;
};
// 将对象换成 & 连接的键值
util.str.toquery = function (o) {
return Object.keys(o).map(function (k) {
if (o[k] == null) return encodeURIComponent(k);
return encodeURIComponent(k) + '=' + encodeURIComponent(o[k]);
}).join('&');
};
// 将颜色和透明度转换为一个表示颜色的字符串
util.str.rgba = function (color, transparency) {
return 'rgba(' + color.slice(1)
.split(/(..)/).filter(function (x) { return x; })
.map(function (x) { return parseInt(x, 16); }).join(',') +
',' + (100 - transparency) / 100 + ')';
};
// 字符串 base64 编码
util.str.base64 = function (str) {
return btoa(unescape(encodeURIComponent(str)));
};
// 文档相关工具
util.dom = {};
// 快速创建一段文档元素
util.dom.create = function create(tag, inner) {
if (tag && typeof inner === 'undefined')
return create('div', tag).firstChild;
var d = document.createElement(tag);
d.innerHTML = inner;
return d;
};
// 某个元素是否匹配特定选择器
util.dom.matches = (function () {
// 不能直接扩展 Element.prototype
// https://bugzil.la/787070 (mozilla35)
var ep = Element.prototype, matches = ep.matches ||
ep.mozMatchesSelector || ep.oMatchesSelector ||
ep.webkitMatchesSelector || ep.msMatchesSelector;
return function (element, selector) {
try { return matches.call(element, [selector]); }
catch (e) { return null; }
};
}());
// 找到符合条件的父节点
util.dom.parent = function (node, selector) {
while (node && !util.dom.matches(node, selector)) node = node.parentNode;
return node || null;
};
// 同一个元素多个输入框同步
// 将输入框和某个设置项绑定
util.dom.bind = (function () {
var bind = function (param, input, obj, standlize) {
var fine = standlize || util.func.identity;
var onchange = function () {
var val = input[param], valid;
valid = fine(val);
if (String(valid) !== val) input[param] = valid;
obj.putconf(valid);
};
if (obj.key) util.config.onput(obj.key, function (value) { input[param] = value; });
input[param] = fine(obj.getconf());
input.addEventListener('change', onchange);
return onchange;
};
return {
'text': bind.bind(null, 'value'),
'checkbox': bind.bind(null, 'checked'),
'select': bind.bind(null, 'value'),
};
}());
util.font = {};
// 计算文字宽度
util.font.width = (function () {
// 使用微博的默认字号作为度量值
var fontsize = 14;
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
// 使用Canvas计算
// https://bugzil.la/561361
return function (fontname, text) {
context.font = 'bold ' + fontsize + 'px ' + fontname;
return context.measureText(text).width;
};
}());
// 选择合适的字体
util.font.valid = (function () {
// 检查这个字串的宽度来检查字体是否存在
var sampleText =
'The quick brown fox jumps over the lazy dog7531902468,.!-天地玄黄則近道矣,。:!';
// 和这些字体进行比较
var sampleFont = [
'monospace', 'sans-serif', 'sans', 'Symbol', 'Arial', 'Fixed',
'Times', 'Times New Roman', '宋体', '黑体', 'Microsoft YaHei'
];
// 如果被检查的字体和基准字体可以渲染出不同的宽度
// 那么说明被检查的字体总是存在的
var diffFont = function (base, test) {
var baseSize = util.font.width(base, sampleText, 72);
var testSize = util.font.width(test + ',' + base, sampleText, 72);
return baseSize !== testSize;
};
return function (test) {
var valid = sampleFont.some(function (base) {
return diffFont(base, test);
});
return valid;
};
}());
// 对网页的判断
util.page = {};
// 检查是否要在本页上运行
util.page.valid = function () {
// 必须的参数
if (!unsafeWindow.$CONFIG) return false;
if (!unsafeWindow.$CONFIG.uid) return false;
if (!unsafeWindow.$CONFIG.nick) return false;
// 如果是搜索页,而且未于搜索页面启用,则不工作
if (util.page.search && !util.page.searchenable) return false;
// 如果有登录按钮,则说明没有登录,此时不工作
if (document.querySelector('.gn_login')) return false;
util.debug('yawf started in page: %o (%s top)', location, self === top ? 'is' : 'is not');
return true;
};
// 当前是否是首页
util.page.home = function () {
return location.pathname.slice(-5) === '/home';
};
// 当前是查看分组的页面吗
util.page.group = function () {
return location.pathname.slice(-9) === '/mygroups';
};
// 当前是搜索页面吗
util.page.search = (function () {
return location.hostname === 's.weibo.com';
}());
// 以及在搜索也启用吗
util.page.searchenable = (function () {
return !!GM_getValue('search_enable', false);
}());
// 当前是发现页面吗
util.page.discovery = (function () {
return location.hostname === 'd.weibo.com';
}());
// 检查当前是否是用户个人主页
util.page.user = function () {
if (!document.body.classList.contains('FRAME_page')) return false;
if (!document.querySelector('.PCD_header .username')) return false;
return true;
};
// 检查是不是我的个人主页
util.page.myhome = function () {
if (!util.page.user()) return false;
return !!util.info.uid && util.info.oid() === util.info.uid;
};
// 初始化
util.init = (function () {
var callbacks = [], index = 0;
// 完成加载时调用
var dcl = function () {
var valid = util.page.valid();
callbacks.sort(function (x, y) {
return y[0] - x[0] || y[1] - x[1];
}).forEach(function (i) {
if (valid || i[3]) util.func.catched(i[2])(valid);
});
};
if (document.body) setTimeout(dcl, 0);
else document.addEventListener('DOMContentLoaded', dcl);
// 添加回调
var add = function (func, priority, always) {
callbacks.push([priority, ++index, func, always]);
return func;
};
return add;
}());
// 对页面中添加元素时的监听
var observer = {};
// 有新结点时分发事件监听
observer.dom = (function () {
var callbacks = [];
var add = function (callback) {
callbacks.push({
'ori': callback,
'wrap': util.func.catched(util.func.performance(callback))
});
return callback;
};
var remove = function (callback) {
var found = false;
callbacks = callbacks.filter(function (x) {
var same = x.ori === callback;
if (same) found = true;
return !same;
});
return found;
};
var actived = null;
var act = function () {
callbacks.forEach(function (c) { c.wrap(); });
};
var active = util.func.catched(function (mutation) {
if (mutation && Array.from(mutation).every(function isDate(x) {
var target = x.target;
return target.hasAttribute('date') || target.hasAttribute('yawf-date');
})) return;
if (actived === false) actived = true;
if (actived !== null) return;
act(); actived = false;
setTimeout(function () {
if (actived === true) act(); actived = null;
}, 100);
});
var observe = function () {
active(); // 初始化
(new MutationObserver(active))
.observe(document.body, { 'childList': true, 'subtree': true });
};
if (!('MutationObserver' in window)) observe = function () {
// for lagency browsers
document.body.addEventListener("DOMNodeInserted", function (e) { active(); }, false);
document.body.addEventListener("DOMNodeRemoved", function (e) { active(); }, false);
};
util.init(function () {
observe();
}, util.priority.LAST + util.priority.AFTER * 2);
return {
'add': add,
'remove': remove,
};
}());
// 对每条微博应用过滤和其他相关回调
observer.weibo = (function () {
var befores = [], afters = [], onloads = [], dones = [];
var weiboObserver, busy = false, rerun = false;
var checkFeedDone = function () {
busy = false;
weiboObserver();
dones.forEach(function (x) { x(); });
return;
};
var checkFeeds = function (feeds) {
busy = true;
(function checkFeed() {
util.debug('checking %d feed(s)', feeds.length);
if (feeds.length === 0) return checkFeedDone();
var feed = feeds.shift();
util.func.catched(function () {
befores.forEach(function (f) { f(feed); });
if (filter.active(feed))
afters.forEach(function (f) { f(feed); });
})();
util.func.call(checkFeed);
}());
};
weiboObserver = function weiboObserver() {
if (busy) return;
var feeds, selector = '[action-type="feed_list_item"]:not([yawf-weibo]), [node-type="feed_list"] .WB_feed_type:not([yawf-weibo])';
if (rerun) selector = '[action-type="feed_list_item"], [node-type="feed_list"] .WB_feed_type';
feeds = Array.from(document.querySelectorAll(selector));
feeds.forEach(function (feed) {
feed.setAttribute('yawf-weibo', '');
onloads.forEach(function (f) { f(feed); });
});
if (feeds.length) checkFeeds(feeds);
rerun = false;
};
observer.dom.add(weiboObserver);
var add = function (callbacks) {
return function (callback) {
callbacks.push(util.func.catched(callback));
return callback;
};
};
// 强制重新过滤所有微博
var refilter = function () {
rerun = true;
util.func.call(weiboObserver);
};
return {
'onload': add(onloads),
'before': add(befores),
'after': add(afters),
'done': add(dones),
'refilter': refilter,
};
}());
observer.comment = (function () {
var before = [], after = [];
observer.dom.add(function commentObserver() {
var comments = Array.from(document.querySelectorAll(
'.list_ul[node-type="feed_list_commentList"] .list_li:not([yawf-comment]), ' +
'.list_ul[node-type="comment_list"] .list_li:not([yawf-comment]) '
));
comments.forEach(function (comment) {
comment.setAttribute('yawf-comment', '');
before.forEach(function (f) { f(comment); });
filter.cmt_active(comment);
after.forEach(function (f) { f(comment); });
});
});
return {
'before': function (f) { before.push(util.func.catched(f)); },
'after': function (f) { after.push(util.func.catched(f)); },
};
}());
// 阻止页面通过 jsonp 获取数据
observer.stopjsonp = (function () {
var initialed = false, patterns = [];
var checkAndCleanCallback = function (script) {
if (!script || (script.tagName || '').toLowerCase() !== 'script') return;
var match;
for (var i = 0, l = patterns.length; i < l; i++) {
match = script.src.match(patterns[i]);
if (match && match[1]) break;
}
var callback = match && match[1] || null; if (!callback) return;
util.func.page(function (cb) { delete window[cb]; }, callback);
script.parentNode.removeChild(script);
};
var initial = function () {
if ('onbeforescriptexecute' in document) document.addEventListener('beforescriptexecute', function (e) {
if (checkAndCleanCallback(e.target)) e.preventDefault();
}); else document.documentElement.addEventListener('DOMNodeInserted', function (e) {
checkAndCleanCallback(e.target);
});
initialed = true;
};
return function (pattern) {
if (!initialed) initial();
patterns.push(pattern);
};
}());
// 键盘相关工具
util.keyboard = (function () {
var ctrl = 1 << 8, shift = 1 << 9, alt = 1 << 10, meta = 1 << 11, key = ctrl - 1;
var namelist = '#0;#1;#2;Cancel;#4;#5;Help;#7;BackSpace;TAB;#10;#11;Clear;Enter;EnterSpecial;#15;;;;Pause;CapsLock;Kana;Eisu;Junja;Final;Hanja;#26;Esc;Convert;Nonconvert;Accept;ModeChange;Space;PageUp;PageDown;End;Home;Left;Up;Right;Down;Select;Print;Execute;PrintScreen;Insert;Delete;#47;0;1;2;3;4;5;6;7;8;9;Colon;Semicolon;LessThan;Equals;GreaterThan;QuestionMark;At;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;Win;#92;ContextMenu;#94;Sleep;NumPad0;NumPad1;NumPad2;NumPad3;NumPad4;NumPad5;NumPad6;NumPad7;NumPad8;NumPad9;Multiply;Add;Separator;Subtract;Decimal;Divide;F1;F2;F3;F4;F5;F6;F7;F8;F9;F10;F11;F12;F13;F14;F15;F16;F17;F18;F19;F20;F21;F22;F23;F24;#136;#137;#138;#139;#140;#141;#142;#143;NumLock;ScrollLocK;WIN_OEM_FJ_JISHO;WIN_OEM_FJ_MASSHOU;WIN_OEM_FJ_TOUROKU;WIN_OEM_FJ_LOYA;WIN_OEM_FJ_ROYA;#151;#152;#153;#154;#155;#156;#157;#158;#159;Circumflex;Exclamation;DoubleQuote;Hash;Dollar;Percent;Ampersand;Underscore;OpenParen;CloseParen;Asterisk;Plus;Pipe;HyphenMinus;OpenCurlyBracket;CloseCurlyBracket;Tilde;#177;#178;#179;#180;VolumeMute;VolumeDown;VolumeUp;#184;#185;#186;#187;Comma;#189;Period;Slash;BackQuote;#193;#194;#195;#196;#197;#198;#199;#200;#201;#202;#203;#204;#205;#206;#207;#208;#209;#210;#211;#212;#213;#214;#215;#216;#217;#218;OpenBracket;BackSlash;CloseBracket;Quote;#223;;AltGr;#226;WIN_ICO_HELP;WIN_ICO_00;#229;WIN_ICO_CLEAR;#231;#232;WIN_OEM_RESET;WIN_OEM_JUMP;WIN_OEM_PA1;WIN_OEM_PA2;WIN_OEM_PA3;WIN_OEM_WSCTRL;WIN_OEM_CUSEL;WIN_OEM_ATTN;WIN_OEM_FINISH;WIN_OEM_COPY;WIN_OEM_AUTO;WIN_OEM_ENLW;WIN_OEM_BACKTAB;Attn;Crsel;Exsel;Ereof;Play;Zoom;#252;PA1;WIN_OEM_CLEAR;#255'.split(';');
var code = {}; namelist.forEach(function (name, index) { code[name.toUpperCase()] = index; });
var alter = { CTRL: ctrl, SHIFT: shift, ALT: alt, META: meta, KEY: key };
// 对一个按键事件做编号
var get = function (e) {
if (!e || !e.keyCode) return null;
var code = e.keyCode & key;
if (e.ctrlKey) code |= ctrl;
if (e.shiftKey) code |= shift;
if (e.altKey) code |= alt;
if (e.metaKey) code |= meta;
return code;
};
// 给一个编号,转换为键名
var name = function (n) {
if (n === 0) return text.disabledKey;
var ret = '';
if (n & ctrl) ret += 'Ctrl-';
if (n & shift) ret += 'Shift-';
if (n & alt) ret += 'Alt-';
if (n & meta) ret += 'Meta-';
ret += namelist[n & key];
if (ret.slice(-1) === '-') ret = ret.slice(0, -1);
return ret;
};
// 注册全局监听按键
var triggers = [];
var reg = function (type, key, callback, ignoreInInput) {
triggers.push({
'type': type,
'key': key,
'callback': util.func.catched(callback),
'ignoreInInput': !!ignoreInInput
});
};
// 监听按键
var baseEvent = function (e) {
var code = get(e);
var inInput = /^select|textarea|input$/.test(e.target.nodeName.toLowerCase());
var actived = triggers.filter(function (trigger) {
if (inInput && trigger.ignoreInInput) return false;
return trigger.type === e.type && trigger.key === code;
});
if (!actived) return;
actived.forEach(function (trigger) { trigger.callback(e); });
};
['keydown', 'keypress', 'keyup'].forEach(function (type) {
document.documentElement.addEventListener(type, baseEvent);
});
return {
'get': get,
'name': name,
'reg': reg,
'code': code,
'alter': alter,
};
}());
// 语言相关工具
util.i18n = {};
// 语言相关样式
util.i18n.stylish = function (lang) {
var isEn = lang === 'en';
util.css.add(util.str.fill(util.str.cmt(function () { /*!CSS
.layoutFilterGroupLayer .yawf-configBoolean { width: {{layoutOptionWidth}}; }
.layoutFilterGroupLayer .yawf-configBoolean.yawf-layoutConfig-line { width: 100%; }
*/ noop(); }), { 'layoutOptionWidth': isEn ? '240px' : '160px' }));
};
// 根据用户界面上的语言做不同调整
util._languages = (function () {
var defaultLang = 'zh-cn';
var allLang = ['zh-cn', 'zh-hk', 'zh-tw', 'en'];
var lang = null;
var pending = [];
var chose = function (langObj) {
langObj.local = langObj[lang] || langObj[defaultLang];
};
return function (l) {
if (!l || allLang.indexOf(l) === -1) l = defaultLang;
lang = l;
pending.map(chose);
pending = [];
chose.lang = l;
util.i18n.stylish(lang);
return chose;
};
}());
// 设置相关工具
util.config = null;
util._storage = function () {
var config = {};
var keys = [], onputs = {};
var storageKey = 'user' + util.info.uid + 'config';
var tonputs = function (key, value, oldValue) {
(onputs[key] || []).map(function (f) { f(value, oldValue); });
};
// 读取到内存
var readp = false;
var read = function () {
if (readp) return;
util.func.call(function () { readp = false; });
readp = true;
util.debug('read GM value');
try { config = JSON.parse(GM_getValue(storageKey, '{}')); }
catch (e) { config = {}; }
};
// 从内存写出
var write = function () {
util.debug('write GM value');
GM_setValue(storageKey, JSON.stringify(config));
};
// 写入到内存
var put = function (key, value) {
if (value != null && keys.indexOf(key) === -1) util.debug('put key %s not in keys.', key);
read();
var ori = config[key];
var old = JSON.stringify(config);
if (value == null) delete config[key];
else config[key] = JSON.parse(JSON.stringify(value));
var cur = JSON.stringify(config);
if (cur === old) return value;
tonputs(key, value, ori);
write();
return value;
};
// 从内存读取
var get = function (key, value, type) {
if (keys.indexOf(key) === -1) util.debug('get key %s not in keys.', key);
read();
if (!(key in config)) return value;
var val = config[key];
if (typeof val === 'undefined') return value;
if (type && (val === null || val.constructor !== type)) return value;
return JSON.parse(JSON.stringify(val));
};
// 当内存配置被修改时调用
var onput = function (key, f) {
if (!onputs[key]) onputs[key] = [];
if (onputs[key].indexOf(f) === -1) onputs[key].push(f);
};
// 从字串导入
var import_ = function (s, cmp) {
if (cmp == null) cmp = function (n, o) { return n; };
var version = void 0, backup;
// 备份当前设置
try {
backup = JSON.stringify(config);
try {
s = JSON.parse(s);
var c = s.conf;
var keys = Object.keys(config).concat(Object.keys(c));
keys = keys.filter(function (x, i) { return keys.indexOf(x) === i; });
keys.forEach(function (key) {
if (key.indexOf('._') !== -1) return;
put(key, cmp(c[key], get(key)));
});
write();
version = Number(s.ver.match(/\d+$/)[0]) || 0;
} catch (e) {
config = JSON.parse(backup);
}
} catch (e) { }
return version;
};
// 导出成为字串
var export_ = function () {
var info = GM_info || {}, script = info.script || {};
var conf = {};
// 不导出键值包含 ._ 的项,因为他们是内部项
Object.keys(config)
.filter(function (x) { return x.indexOf('._') === -1; })
.forEach(function (x) { conf[x] = config[x]; });
return JSON.stringify({
'ua': navigator.userAgent,
'yawf': script.name,
'ver': script.version,
'gm': (info.scriptHandler || '') + info.version,
'conf': conf,
}, null, 2);
};
// 清空设置
var clear = function () {
config = {};
tonputs();
write();
};
// 注册键
var reg = function (key) { keys.push(key); };
// 初始化
return {
'put': put, 'get': get,
'onput': onput,
'read': read, 'write': write,
'import': import_, 'export': export_,
'clear': clear,
'reg': reg,
};
};
util.init(function () {
// 保存用户信息
util.info.uid = unsafeWindow.$CONFIG.uid;
util.info.nick = unsafeWindow.$CONFIG.nick;
// 初始化语言选项
util.i18n.chose = util._languages(unsafeWindow.$CONFIG.lang);
Object.keys(text).map(function (key) { util.i18n.chose(text[key]); text[key] = text[key].local; });
Object.keys(html).map(function (key) { html[key] = util.str.fill(html[key]); });
// 初始化设置集
util.config = util._storage();
}, util.priority.FIRST);
// 用户信息
util.info = {};
util.info.uid = null;
util.info.nick = null;
util.info.oid = function () {
return unsafeWindow.$CONFIG.oid || null;
};
util.info.onick = function () {
return unsafeWindow.$CONFIG.onick || null;
};
// 打印调试信息
util.debug = util.script.isdebug &&
console && console.log && console.log.bind(console) ||
util.func.noop;
util.error = util.script.isdebug &&
console && console.error && console.error.bind(console) ||
util.func.noop;
// 桌面提示工具
util.notify = (function () {
var avaliable = {};
var shown = [];
var use = {
'hasPermission': function () { return null; },
'requestPermission': function (callback) { return null; },
'hideNotification': function (notify) { return null; },
'showNotification': function (id, title, body, icon, delay, onclick) { return null; }
};
// 检查一个微博是不是已经被显示过了,如果显示过了不重复显示
var shownFeed = function (id) {
var shown = [];
try {
shown = JSON.parse(GM_getValue('notification', '[]'));
shown = Array.from(shown);
id = String(id);
} catch (e) { }
util.debug('%o %s shown feed list: %o', id, shown.indexOf(id) === -1 ? 'not in' : 'in', shown);
if (shown.indexOf(id) !== -1) return true;
shown.push(id); shown = shown.slice(-20);
GM_setValue('notification', JSON.stringify(shown));
return false;
};
// webkitNotifications
// Tab Notifier 扩展实现此接口,但显示的桌面提示最多只能显示前两行
if (typeof webkitNotifications !== 'undefined') avaliable.webkit = {
'hasPermission': function () {
return [true, null, false][webkitNotifications.checkPermission()];
},
'requestPermission': function (callback) {
return webkitNotifications.requestPermission(callback);
},
'hideNotification': function (notify) {
notify.cancel();
afterHideNotification(notify);
},
'showNotification': function (id, title, body, icon, delay, onclick) {
if (shownFeed(id)) return null;
util.debug('show (webkit) notification: %s - %s', title, body);
var notify = webkitNotifications.createNotification(icon, title, body);
if (delay && delay > 0) notify.addEventListener('display', function () {
setTimeout(function () { hideNotification(notify); }, delay);
});
if (onclick) notify.addEventListener('click', onclick);
notify.show();
return notify;
},
};
// Notification
// Firefox 22+
// 显示4秒会自动关闭 https://bugzil.la/875114
if (typeof Notification !== 'undefined') avaliable.standard = {
'hasPermission': function () {
return {
'granted': true,
'denied': false,
'default': null,
}[Notification.permission];
},
'requestPermission': function (callback) {
return Notification.requestPermission(callback);
},
'hideNotification': function (notify) {
notify.close();
afterHideNotification(notify);
},
'showNotification': function (id, title, body, icon, delay, onclick) {
if (shownFeed(id)) return null;
util.debug('show notification: %s - %s', title, body);
var notify = new Notification(title, { 'body': body, 'icon': icon, 'requireInteraction': !delay });
if (delay && delay > 0) notify.addEventListener('show', function () {
setTimeout(function () { hideNotification(); }, delay);
});
if (onclick) notify.addEventListener('click', onclick);
return notify;
},
};
// 有哪些接口可用
var avaliableNotification = function () {
return Object.keys(avaliable);
};
// 选择用哪个接口
var choseNotification = function (prefer) {
return (use = prefer && avaliable[prefer] || avaliable.standard);
};
choseNotification();
// 检查权限
var hasPermission = function () {
return use.hasPermission.apply(this, arguments);
};
// 请求权限
var requestPermission = function () {
return use.requestPermission.apply(this, arguments);
};
// 显示消息
var showNotification = function (title, body, icon, delay, onclick) {
var notify = use.showNotification.apply(this, arguments);
shown.push(notify);
return notify;
};
// 隐藏已经显示的消息
var hideNotification = function (notify) {
use.hideNotification.apply(this, arguments);
return notify;
};
var afterHideNotification = function (notify) {
shown = shown.filter(function (x) { return x !== notify; });
};
document.addEventListener('unload', function () {
shown.forEach(hideNotification);
shown = [];
});
return {
'avaliableNotification': avaliableNotification,
'choseNotification': choseNotification,
'hasPermission': hasPermission,
'requestPermission': requestPermission,
'showNotification': showNotification,
'hideNotification': hideNotification
};
}());
// 管理样式
util.css = (function () {
var styleText = '', added = false;
var fun = function (css) { return fun.add.bind(fun, css); };
fun.add = function (css) { if (!added) styleText += css + '\n'; else GM_addStyle(css); };
util.init(function () { GM_addStyle(styleText); added = true; }, util.priority.LAST);
return fun;
}());
// 界面相关
util.ui = {};
// 显示设置按钮
// 包括右上角过滤器图标和设置菜单中的菜单项
util.ui.icon = util.init(function () {
if (util.page.search) return; // 搜索页面不提供设置窗口
var onClick = util.func.catched(function (e) { filter.dialog(); e.preventDefault(); });
var icon = function () {
var p = document.querySelector('.WB_global_nav .gn_set_list');
if (!p) return setTimeout(icon, 100);
var d = util.dom.create(html.icon); p.parentNode.insertBefore(d, p);
document.querySelector('.gn_filter').addEventListener('click', onClick);
};
var menuitem = function () {
var a = document.querySelectorAll('.gn_topmenulist ul li.line');
if (!a || !a.length) return setTimeout(menuitem, 100);
var l = a[a.length - 1];
var m = util.dom.create(html.menuitem);
while (m.firstChild) l.parentNode.insertBefore(m.firstChild, l);
document.querySelector('.yawf-config-menuitem').addEventListener('click', onClick);
};
icon(); menuitem();
}, util.priority.LAST);
// 对话框
util.ui.form = function (dom, display, details) {
var ok = dom.querySelector('[node-type="ok"]');
var cancel = dom.querySelector('[node-type="cancel"]');
var close = dom.querySelector('[node-type="close"]');
var title = dom.querySelector('.title, .W_layer_title');
var mouse = null, pos;
// 定位对话框的位置
var setPos = function (pos) {
var left = pos[0], top = pos[1];
left = Math.min(Math.max(0, left), document.body.clientWidth - dom.clientWidth - 2);
top = Math.min(Math.max(window.pageYOffset, top), window.pageYOffset + window.innerHeight - dom.clientHeight - 2);
if (left + 'px' !== dom.style.left) dom.style.left = left + 'px';
if (top + 'px' !== dom.style.top) dom.style.top = top + 'px';
return [left, top];
};
// 网页滚动时维持在页面内
var hold = function () {
pos = setPos(pos);
};
// 开始拖拽
var dragMoveStart = function (e) {
mouse = [e.clientX, e.clientY];
document.addEventListener('mousemove', dragMove);
document.addEventListener('mouseup', dragMoveDone);
dom.classList.add('yawf-drag');
if (dom.setCapture) { dom.setCapture(); }
};
// 拖拽移动
var dragMove = function (e) {
var mouse_new = [e.clientX, e.clientY];
pos[0] += mouse_new[0] - mouse[0];
pos[1] += mouse_new[1] - mouse[1];
setPos(pos);
mouse = mouse_new;
};
// 拖拽结束
var dragMoveDone = function () {
document.removeEventListener('mousemove', dragMove);
document.removeEventListener('mouseup', dragMoveDone);
dom.classList.remove('yawf-drag');
if (dom.releaseCapture) { dom.releaseCapture(); }
pos = setPos(pos);
mouse = null;
};
// 标题栏可以拖拽
if (title) {
title.style.cursor = 'move';
title.addEventListener('mousedown', dragMoveStart);
}
// 确定取消等按钮
if (details.onOk) if (ok) ok.addEventListener('click', details.onOk);
if (details.onCancel) {
if (cancel) cancel.addEventListener('click', details.onCancel);
if (close) close.addEventListener('click', details.onCancel);
}
// 背景遮罩
var cover = util.dom.create(html.cover);
// 响应按键
var keys = function (e) {
if (e.keyCode === util.keyboard.code.ENTER && ok) ok.click(); // Enter
else if (e.keyCode === util.keyboard.code.ESC && close) close.click(); // Esc
else return;
e.stopPropagation(); e.preventDefault();
};
// 关闭对话框
var hide = function () {
dom.className += ' UI_animated UI_speed_fast UI_ani_bounceOut';
document.removeEventListener('keydown', keys);
document.removeEventListener('scroll', hold);
window.removeEventListener('resize', hold);
document.body.removeChild(cover);
setTimeout(function () { document.body.removeChild(dom); }, 200);
};
// 显示对话框
var show = function (top, left) {
document.body.appendChild(cover);
document.body.appendChild(dom);
if (top == null) top = (window.innerHeight - dom.clientHeight) / 2;
if (left == null) left = (window.innerWidth - dom.clientWidth) / 2;
pos = setPos([left, top + window.pageYOffset]);
document.addEventListener('keydown', keys);
document.addEventListener('scroll', hold);
window.addEventListener('resize', hold);
document.activeElement.blur();
dom.className += ' UI_animated UI_speed_fast UI_ani_bounceIn';
setTimeout(function () {
dom.className = dom.className.replace(/(?:\s|^)(UI_animated|UI_speed_fast|UI_ani_bounceIn)(?=\s|$)/g, '').trim();
}, 200);
};
if (display) show();
if (ok) ok.addEventListener('click', hide);
if (cancel) cancel.addEventListener('click', hide);
if (close) close.addEventListener('click', hide);
return { 'hide': hide, 'show': show, 'dom': dom };
};
// 显示一个对话框
util.ui.dialog = function (id, title, fillFun) {
var dom = util.dom.create(util.str.fill(html.dialog, { 'id': id, 'title': util.str.fill(title) }));
fillFun(dom.querySelector('[node-type="inner"]'));
var form = util.ui.form(dom, false, {});
return form;
};
// 显示一个提示框
util.ui.alert = function (id, details) {
var dom = util.dom.create(util.str.fill(html.alert, { 'id': id, 'title': details.title, 'text': details.text, 'icon': details.icon || 'ask' }));
var form = util.ui.form(dom, true, details);
return form;
};
// 显示一个确定框
util.ui.confirm = function (id, details) {
var dom = util.dom.create(util.str.fill(html.confirm, { 'id': id, 'title': details.title, 'text': details.text, 'icon': details.icon || 'question' }));
var form = util.ui.form(dom, true, details);
return form;
};
util.ui.bubble = function (description, ref) {
var bubble;
var rect = ref.getClientRects()[0];
if (description instanceof Element) bubble = description;
else bubble = util.dom.create(util.str.fill(html.bubble, { 'text': description }));
var bor = bubble.querySelector('.W_arrow_bor');
document.body.appendChild(bubble);
util.func.call(function () {
var top0 = rect.top - bubble.clientHeight - 8;
var top1 = top0 + window.pageYOffset;
var top2 = rect.bottom + 8 + window.pageYOffset;
bubble.style.left = rect.left - 32 + rect.width + window.pageXOffset + 'px';
if (top0 > 0) {
bubble.style.top = top1 + 'px';
bor.className = 'W_arrow_bor W_arrow_bor_b';
} else {
bubble.style.top = top2 + 'px';
bor.className = 'W_arrow_bor W_arrow_bor_t';
}
});
return bubble;
};
// 网络访问相关
var network = {};
util.xhr = function (details) {
util.debug('XHRURL: %o', details.url);
return GM_xmlhttpRequest(details);
};
// 维护帐号信息,用于显示
network.account = (function () {
var idCache = {}, nameCache = {}, working = {};
var request = function (queryStr, onsucc, onerror) {
// 如果同时已经有了同类请求则等待那个请求的返回
if (working[queryStr]) return working[queryStr].push([onsucc, onerror]);
working[queryStr] = [[onsucc, onerror]];
var done = function (success, data) {
working[queryStr].forEach(function (w) { w[success ? 0 : 1](data); });
delete working[queryStr];
};
// 请求获取
util.xhr({
'method': 'GET',
'url': util.str.fill(url.newcard, { 'query': queryStr, 'callback': util.str.fcb() }),
'onload': util.func.catched(function (resp) {
// 永远不要试图理解一个用 JSON 包裹 HTML 的 API
var respJson = util.str.parsejsonp(resp.responseText);
var namecard = util.dom.create('div', respJson.data);
var avatar = namecard.querySelector('.name dt img').getAttribute('src');
var name = namecard.querySelector('.name dd a[uid]').getAttribute('title');
var uid = namecard.querySelector('.name dd a[uid]').getAttribute('uid');
var data = { 'avatar': avatar, 'id': uid, 'name': name };
nameCache[name] = idCache[uid] = data;
done(true, data);
}, function () { done(false); }),
'onerror': function () { done(false); },
});
return queryStr;
};
var byId = function (id, onsucc, onerror) {
if (idCache[id]) onsucc(idCache[id]);
else request('id=' + id, onsucc, onerror);
};
var byName = function (name, onsucc, onerror) {
if (nameCache[name]) onsucc(nameCache[name]);
else request('name=' + encodeURIComponent(name), onsucc, onerror);
};
var put = function (data) {
nameCache[data.name] = idCache[data.id] = data;
};
return { 'id': byId, 'name': byName, 'put': put };
}());
network.buffered = (function () {
var buffer = [], busy = false;
var delay = function () { return 3000 + Math.round(20 * Math.random()) * 100; };
var active = function active() {
if (!(busy = !!buffer.length)) return;
var callback = buffer.shift();
callback(function () { setTimeout(active, delay()); });
};
return function (callback) {
buffer.push(callback);
if (!busy) active();
return callback;
};
}());
network.headers = function () {
return {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Cache-Control': 'no-cache',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': document.cookie,
'Referer': location.href,
'X-Requested-With': 'XMLHttpRequest',
};
};
network.comment = {};
// 删评论
network.comment.del = (function () {
var del = function (info, callback) {
util.debug('deleting comment %s', info);
util.xhr({
'method': 'POST',
'url': util.str.fill(url.del_cmt),
'headers': network.headers(),
'data': info + '&block=1',
'onload': function (resp) {
try { util.debug('delete %s response: %o', info, JSON.parse(resp.responseText)); }
catch (e) { util.debug('delete %s response: %s', info, resp.responseText); }
callback();
},
'onerror': function () { util.debug('block %s network error', info); callback(); },
});
};
return function (info) {
network.buffered(function (callback) { del(info, callback); });
};
}());
network.ua = {};
network.ua.android = 'Mozilla/5.0 (Linux; Android 4.4.2; zh-cn; YAWF) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16';
network.video = {};
// 通过秒拍视频的 objectid 获取 mp4 文件地址
// 获取方法是模拟安卓用户访问秒拍视频的网页
network.video.get = {};
network.video.get['1034'] = function (id, callback) {
util.xhr({
'method': 'GET',
'url': util.str.fill(url.video_show, { 'id': id }),
'headers': {
'User-Agent': network.ua.android
},
'onload': function (resp) {
var d = util.dom.create('div', resp.responseText);
var video = d.querySelector('video');
callback(video.getAttribute('src'));
},
});
};
network.video.get['2017607'] = function (url, callback) {
util.xhr({
'method': 'GET',
'url': url,
'headers': {
'User-Agent': network.ua.android
},
'onload': function (resp) {
var d = util.dom.create('div', resp.responseText);
var video = d.querySelector('.vid_img');
callback(video.getAttribute('data-url'));
},
});
};
// 看看某个人最近都有哪些微博
// 输入是 uid, 返回的是 mid 数组,或空数组(失败)
network.recent = (function () {
// 减少访问个人主页的次数
// 限制一刻钟内最多访问一次某人的主页
// 重复的访问用缓存解决
var cache = (function () {
var data;
var rm = function () {
var time = Number(new Date());
Object.keys(data).forEach(function (user) { if (data[user].exp < time) delete data[user]; });
};
var read = function () { data = JSON.parse(GM_getValue('recentmid', '{}')) || {}; rm(); };
var write = function () { GM_setValue('recentmid', JSON.stringify(data)); };
return function (uid, mids) {
read(); if (mids) data[uid] = { 'exp': Number(new Date()) + 1e6, 'mid': mids }; write();
return (data[uid] || {}).mid;
};
}());
// 访问个人主页
var get = function (uid, callback) {
util.debug('request user page: %o', uid);
util.xhr({
'method': 'GET',
'url': util.str.fill(url.user, { 'uid': uid }),
'onload': function (resp) {
try {
var d = String(resp.responseText);
var re = /<script>FM\.view\({"ns":"pl\.content\.homeFeed\.index".*"html":(?=.*WB_feed_type)(".*")}\)<\/script>\n/;
var html = JSON.parse(d.match(re)[1]);
var dom = util.dom.create('div', html);
var feeds = Array.from(dom.querySelectorAll('.WB_feed_type[mid]:not([feedtype="ad"])'));
var mids = feeds.map(function (f) { return f.getAttribute('mid'); });
util.debug('user page %o found %o messages: %o', uid, mids.length, mids);
if (mids.length) cache(uid, mids);
callback(mids);
} catch (e) {
util.debug('user page read error: %o', e);
callback([]);
}
},
});
};
// 控制访问频率
// 每次访问后间隔 2~4 秒再进行下次访问
var busy = false, queue = [];
var active = function active() {
if (!queue.length) return;
if (busy) return;
var req = queue.shift();
get(req[0], function (mids) {
util.func.call(req[1], mids);
setTimeout(function () {
busy = false;
active();
}, Math.round(2000 * (1 + Math.random())));
});
busy = true;
};
return function (uid, callback) {
var mids = cache(uid);
if (mids) {
util.func.call(callback, mids);
util.debug('read user page %o from cache: %o', uid, mids);
return;
}
queue.push([uid, callback]);
active();
};
}());
network.suggest = {};
// 推荐用户或话题等
network.suggest.base = function (func, normalize, empty) {
var suggestCache = {};
var current = null, xhr = null;
if (empty != null) suggestCache[''] = empty;
return function (query, callback) {
query = normalize(query);
if (current === query) return;
if (current && xhr) xhr.abort();
if (suggestCache[query]) {
current = xhr = null;
callback(suggestCache[query]);
} else {
current = query;
xhr = func(query, function (data) {
suggestCache[query] = data;
current = xhr = null;
callback(data);
});
}
};
};
network.suggest.topsuggest = function (query, callback) {
return util.xhr({
'method': 'GET',
'url': util.str.fill(url.topsuggest, { 'query': encodeURIComponent(query), 'callback': util.str.fcb() }),
'onload': function (resp) {
var data = util.str.parsejsonp(resp.responseText).data;
data.user.forEach(function (user) {
var data = { 'id': String(user.u_id), 'avatar': user.u_pic, 'name': user.u_name };
network.account.put(data);
});
callback(data);
},
});
};
// 推荐用户
network.suggest.user = network.suggest.base(function (query, callback) {
var result1 = null, result2 = null;
// 把两个结果合并,自己关注的帐号优先
var done = function () {
if (!result1 || !result2) return;
var results = result2.concat(result1);
results = results.filter(function (x, i) { return results.indexOf(x) === i; });
callback(results);
};
// 推荐搜索框提供的候选用户
// 这些一般是微博中关注量较多的帐号
var network1 = network.suggest.topsuggest(query, function (data) {
result1 = data.user.map(function (user) { return user.u_name; });
done();
});
// 推荐提到工具提供的候选用户
// 这些是自己关注的帐号
var network2 = util.xhr({
'method': 'GET',
'url': util.str.fill(url.attention, { 'query': encodeURIComponent(query) }),
'onload': function (resp) {
var data = JSON.parse(resp.responseText).data;
result2 = data.map(function (item) { return item.screen_name; });
done();
},
});
return {
'abort': function () {
network1.abort();
network2.abort();
}
};
}, function (x) { return x.replace(/^@/, ''); }, []);
// 推荐话题
network.suggest.topic = network.suggest.base(function (query, callback) {
return util.xhr({
'method': 'GET',
'url': util.str.fill(url.topicsuggest, { 'query': encodeURIComponent(query) }),
'onload': function (resp) {
var data = JSON.parse(resp.responseText).data;
var formatted = data.map(function (item) { return item.topic; });
// 有一些地点会混在里面,最后用 “[地点]” 标识
// 这里将所有有方括号的都删掉
formatted = formatted.filter(function (topic) { return topic.indexOf(']') === -1; });
callback(formatted);
},
});
}, function (x) { return x.replace(/#/g, ''); }, []);
network.weibo = {};
network.weibo.longtext = (function () {
var maxlength = 2000, br = 1;
var wordCount = function (html) {
var p = util.dom.create('div', html), text = p.textContent, br = p.querySelectorAll('br').length;
var count = Math.ceil(text.length - (text.match(/[\u0000-\u00ff]/g) || []).length / 2); // 西文字母按半字计
return { 'count': count, 'br': br };
};
var checkLength = function (count, lines) {
if (maxlength === 2000) return true;
if (count + lines * br <= maxlength) return true;
return false;
};
// 读写缓存
var getCache = function () {
var cache;
try { cache = JSON.parse(GM_getValue('long_weibo_cache', '{}')); } catch (e) { }
return cache || {};
};
var putCache = function (cache) {
GM_setValue('long_weibo_cache', JSON.stringify(cache));
};
// 更新缓存
var writeCache = function (mid, html, count, br) {
var cache = getCache();
while (Object.keys(cache).length > 2e4 / maxlength) {
delete cache[Math.min.apply(Math, Object.keys(cache))];
}
cache[mid] = { 'html': html, 'count': count, 'br': br };
util.debug('getlongtext cache write: %o -> %o', mid, cache[mid]);
util.debug('getlongtext cache keys: %o', Object.keys(cache));
putCache(cache);
};
// 检查缓存
var readCache = function (mid) {
var cache = getCache();
util.debug('getlongtext cache check (mid: %o): %o', mid, cache[mid]);
if (mid in cache && cache[mid].html &&
checkLength(cache[mid].count, cache[mid].br)) return cache[mid].html;
if (mid in cache && cache[mid].count &&
!checkLength(cache[mid].count, cache[mid].br)) return cache[mid].count;
return null;
};
// 检查某条微博的完整内容
var getter = function (mid, callback) {
// 首先查找缓存,或者得到html,或者得到文本长度
var html = readCache(mid) || null;
if (html) { callback(html); return; }
// 缓存没有联网查找
util.xhr({
'method': 'GET',
'url': util.str.fill(url.getlongtext, { 'mid': mid }),
'onload': function (resp) {
try { html = JSON.parse(resp.responseText).data.html || null; } catch (e) { }
if (!html) { callback(null); return; }
var wc = wordCount(html);
if (!checkLength(wc.count, wc.br)) html = null;
writeCache(mid, html, wc.count, wc.br);
callback(html || wc.count);
},
});
};
// 设置一下最大接受的长度
getter.setMaxLength = function (m, b) { maxlength = m; br = b; };
return getter;
}());
// 过滤器
var filter = {};
// 过滤器的过滤规则
filter.filters = function () {
var list = [];
var add = function (priority, rule) {
list.push({ 'priority': priority, 'rule': rule });
list.sort(function (x, y) { return y.priority - x.priority; });
};
var parse = function (obj, confs) {
var result = null;
list.some(function (item) {
try { result = item.rule(obj, confs) || result; }
catch (e) { util.error('Exception while parsing rule %o: %o\n%o', item.rule, e, e.stack); }
if (result) util.debug('%o(%o) -> %s', item.rule, obj, result);
return result !== null;
});
return result;
};
return {
'add': add,
'parse': parse,
};
};
filter.rules = filter.filters();
filter.comment = filter.filters();
// 单条微博页面永远不应当隐藏微博
filter.rules.add(1e6, function singleWeiboPageUnsetRule(feed) {
return document.querySelector('[id^="Pl_Official_WeiboDetail__"]') ? 'unset' : null;
});
// 头条文章是一条微博,类似于单条微博,不应当隐藏
filter.rules.add(1e6, function singleWeiboPageUnsetRule(feed) {
return util.dom.matches(feed, '.WB_artical *') ? 'unset' : null;
});
// 过滤器的对话框
filter.dialog = (function () {
var dialog = null;
var lastTab = 0, defaultTab = 1;
// 初始化选项卡处理
var dialogTabs = function (list, inner, page) {
var litems = Array.from(inner.querySelectorAll('.yawf-config-header .minitb_item'));
var llinks = litems.map(function (x) { return x.querySelector('.minitb_lk'); });
var layers = Array.from(inner.querySelectorAll('.yawf-config-body .yawf-config-layer'));
var body = inner.querySelector('.yawf-config-body');
var currentIndex = null;
// 显示第几个选项卡
var choseLList = function (i) {
if (currentIndex !== null) (function (i) {
if (list[i].hide) list[i].hide();
layers[i].style.display = 'none';
layers[i].innerHTML = '';
litems[i].classList.remove('current');
if (llinks[i]) llinks[i].classList.remove('S_bg2');
}(currentIndex));
(function () {
layers[i].style.display = 'block';
list[i].show(layers[i]);
litems[i].classList.add('current');
if (llinks[i]) llinks[i].classList.add('S_bg2');
}());
currentIndex = lastTab = i;
util.func.call(function () { body.scrollTop = 0; });
};
// 为每个选项卡关联显示的回调函数
list.map(function (item, i) {
item.active = function () { choseLList(i); };
var a = llinks[i]; if (!a) return;
a.addEventListener('mousedown', item.active);
a.addEventListener('keydown', item.active);
});
// 初始选择一个选项卡
choseLList(page);
};
return function showDialog(page, count) {
var showDialogInner = function (inner) {
var list = filter.collection.group.list;
inner.innerHTML = [html.configHeaderTop,
html.configHeaderBottom,
html.configLayerTop,
list.map(function (item) {
return util.str.fill(html.configLayerItem, {
'name': item.name + 'FilterGroupLayer',
});
}).join(''),
html.configLayerBottom,
html.configFooter,
].join('');
var ul = inner.querySelector('.yawf-config-header ul');
list.map(function (item, index) {
if (item.list) return item.list(item, index);
return util.dom.create('ul', util.str.fill(html.configHeaderItem, {
'name': (item.pgroup ? text.indent : '') + text[item.name + 'FilterGroupTitle'],
'aclass': index === 0 ? 'S_bg5' : 'S_bg1',
'liclass': index === 0 ? 'current' : ' ',
})).firstChild;
}).forEach(function (li) { ul.appendChild(li); });
util.func.call(function () { dialog.show(0); });
var pgnum = list.indexOf(page);
if (pgnum === -1) pgnum = lastTab || defaultTab;
dialogTabs(list, inner, pgnum);
};
if (!(dialog = util.ui.dialog('yawf-config', '{{configDialogTitle}}', showDialogInner))) {
if (!count || count < 100) setTimeout(showDialog, 100, page, (count || 0) + 1);
}
};
}());
// 快速创建过滤器
filter.fast = {};
// 快速创建过滤器的对话框
filter.fast.dialog = function (candidate, selected) {
var dialogInner = function (inner) {
inner.innerHTML = html.fastFilterHeader + html.fastFilterFooter;
var items = inner.querySelector('#yawf-fast-filter-list');
var selects = [], group_shown = [];
var checkboxs = candidate.map(function (c) {
var item = util.dom.create('ul', html.fastFilterItem).firstChild;
var inner = item.querySelector('.yawf-fastFilterItemInner');
var checked = c.filter.description(inner, c.value) !== false;
var checkbox = item.querySelector('input[type="checkbox"], input[type="radio"]');
var group = checkbox.getAttribute('yawf-checkbox-group');
if (group_shown.indexOf(group) === -1) {
group_shown.push(group);
if (selected === true) checked = true;
}
if (selected === false) checked = false;
if (!c.selected) checked = false;
var select = item.querySelector('select');
checkbox.checked = checked; select.value = 'blacklist';
selects.push(select);
var updateSelect = util.func.catched(function () {
selects.forEach(function (s) {
if (s === select) return;
var values = Array.from(s.querySelectorAll('option'))
.map(function (x) { return x.value; });
var fallback = ['whitelist', 'foldlist', 'blacklist'];
var i = fallback.indexOf(select.value);
while (values.indexOf(fallback[i]) === -1) i++;
s.value = fallback[i];
});
});
select.addEventListener('change', updateSelect);
select.addEventListener('keyup', updateSelect);
// 处理有可能没有折叠列表的情况
if (c.filter.listtype) {
var options = Array.from(item.querySelectorAll('option'));
options.forEach(function (option) {
if (c.filter.listtype.indexOf(option.value) === -1)
option.parentNode.removeChild(option);
});
}
items.appendChild(item);
return checkbox;
});
// 找到所有选择了的过滤器
var chosen = function () {
var active = [];
checkboxs.forEach(function (checkbox, i) {
if (!checkbox.checked) return;
active.push({
'filter': candidate[i].filter,
'value': candidate[i].value,
'action': selects[i].value
});
});
return active;
};
// 确定按钮
var ok = inner.querySelector('[action-type="ok"]');
var updateOkButton = function () {
if (chosen().length) ok.classList.remove('W_btn_a_disable');
else ok.classList.add('W_btn_a_disable');
};
ok.addEventListener('click', function () {
var active = chosen();
if (!active.length) return null;
active.forEach(function (act) {
act.filter.addconf(act.filter.rawvalue(act.value), act.action);
});
dialog.hide();
});
checkboxs.forEach(function (checkbox) {
checkbox.addEventListener('change', updateOkButton);
});
updateOkButton();
// 取消按钮
var cancel = inner.querySelector('[action-type="cancel"]');
cancel.addEventListener('click', function () { dialog.hide(); });
};
var dialog = util.ui.dialog('yawf-drop-select', '{{fastCreateChoseTitle}}', dialogInner);
util.func.call(function () { dialog.show(); });
return dialog;
};
// 检查拖拽一个元素是不是该触发快速创建过滤器的显示
filter.fast.valid = (function () {
var validators = [];
// 检查某个元素是否被至少一个函数识别
var test = function (element) {
for (var i = 0, l = validators.length; i < l; i++) {
var result = util.func.catched(validators[i])(element);
if (result) return result;
}
return false;
};
// 添加一个识别在某种特定元素的函数
var add = function add(validator) {
if (!validator || validators.indexOf(validator) !== -1) return;
validators.push(validator);
};
return {
'add': add,
'test': test,
};
}());
// 从拖拽得到的东西里面找出来我们关心的东西
filter.fast.recognize = (function () {
var listeners = [];
var got = function (element, element2) {
util.debug('got %o', element);
if (!element) if (element2) return got(element2); else return;
// 问所有过滤器是不是需要
var candidate = [];
listeners.forEach(function (details, i) { candidate[i] = null; });
listeners.forEach(function (details, i) {
var callback = function callback(val) {
if (!val) return callback([]);
else if (!Array.isArray(val)) return callback([val]);
else candidate[i] = val.map(function (val) {
var selected = details.selected && details.selected(element2 || element) || false;
return { 'filter': details, 'value': val, 'selected': selected };
});
// 如果还有没填写的,那么等待所有的函数填写好
if (candidate.length !== candidate.filter(Boolean).length) return;
// 找到所有备选的情况给用户做选择
var chosen = candidate.reduce(function (x, y) { return x.concat(y); });
if (chosen.length) filter.fast.dialog(chosen);
else if (element2) got(element2);
};
util.func.catched(details.recognizer)(element, callback);
});
};
var add = function (details) {
listeners.push(details);
};
return {
'got': got,
'add': add,
};
}());
// 使用右键菜单屏蔽
filter.fast.right = (function () {
var counter = 0, filters = [];
var addmenu = function (feed, isChild) {
if (feed.querySelector('menu')) return;
var menu = document.createElement('menu');
menu.setAttribute('type', 'context');
var submenu = menu.appendChild(document.createElement('menu'));
submenu.setAttribute('label', text.contextMenuCreateLabel);
filters.forEach(function (details) {
var items = details.contextmenu(feed);
if (!items) return;
if (!Array.isArray(items)) items = [items];
if (!items.length) return;
var container
gitextract_ia0rapfg/
├── README.md
└── js/
├── GitHub-Material-Design.js
├── Yet-Another-Weibo-Filter.js
└── Youtube Auto-Subtitle-Downloader.js
SYMBOL INDEX (3 symbols across 1 files)
FILE: js/Youtube Auto-Subtitle-Downloader.js
function download_subtitle (line 83) | function download_subtitle(){
function downloadFile (line 200) | function downloadFile(fileName, content){
function process_time (line 213) | function process_time(s){
Condensed preview — 4 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (596K chars).
[
{
"path": "README.md",
"chars": 6865,
"preview": "# 程序员必备的那些Chrome插件\n\n\n### 1.CL1024\n由于种种原因....「取消viidii跳转」「种子链接转化磁链接」「去帖子广告」「阅读帖子按楼数快速跳转楼层」「帖子内去掉1024的回复」「今日帖子高亮」「超大图片根据屏幕"
},
{
"path": "js/GitHub-Material-Design.js",
"chars": 8559,
"preview": "// ==UserScript==\n// @name GitHub Material Design\n// @namespace http://userstyles.org\n// @description\t Git"
},
{
"path": "js/Yet-Another-Weibo-Filter.js",
"chars": 499157,
"preview": "// ==UserScript==\n// @name Yet Another Weibo Filter\n// @name:zh-CN Yet Another Weibo Filter 看真正想看的微博"
},
{
"path": "js/Youtube Auto-Subtitle-Downloader.js",
"chars": 7111,
"preview": "// ==UserScript==\n// @name Youtube Auto Subtitle Downloader\n// @description download youtube AUTO subtitle.(this"
}
]
About this extraction
This page contains the full source code of the jiang111/chrome-plugin-recommand GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4 files (509.5 KB), approximately 173.6k tokens, and a symbol index with 3 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.