mirror of
https://github.com/mashirozx/sakura.git
synced 2024-11-22 06:48:12 +08:00
commit
7a1ec65a9a
File diff suppressed because one or more lines are too long
2
cdn/js/src/11.third-part-functions.js
Normal file → Executable file
2
cdn/js/src/11.third-part-functions.js
Normal file → Executable file
@ -8,7 +8,7 @@ function get_gravatar(email, size) {
|
||||
|
||||
var size = size || 80;
|
||||
|
||||
return 'https://gravatar.2heng.xin/avatar/' + MD5(email) + '.jpg?s=' + size + '&d=mm';
|
||||
return 'https://' + Poi.gravatar_url + '/' + MD5(email) + '.jpg?s=' + size + '&d=mm';
|
||||
}
|
||||
|
||||
// sync css
|
||||
|
@ -150,6 +150,7 @@ h1.entry-title {
|
||||
}
|
||||
|
||||
.entry-content tr:nth-child(even){background-color: #f2f2f2}
|
||||
body.dark .entry-content tr:nth-child(even){background-color: unset}
|
||||
|
||||
.entry-content th {
|
||||
color: white;
|
||||
|
@ -88,7 +88,7 @@
|
||||
'comment_notes_after' => '',
|
||||
'comment_notes_before' => '',
|
||||
'fields' => apply_filters( 'comment_form_default_fields', array(
|
||||
'avatar' => '<div class="cmt-info-container"><div class="comment-user-avatar"><img src="https://gravatar.2heng.xin/avatar/f11f237b3de93c93b24045e71f7f65c6?s=80&d=mm&r=g"><div class="socila-check qq-check"><i class="fa fa-qq" aria-hidden="true"></i></div><div class="socila-check gravatar-check"><i class="fa fa-google" aria-hidden="true"></i></div></div>',
|
||||
'avatar' => '<div class="cmt-info-container"><div class="comment-user-avatar"><img src="' . get_template_directory_uri() . '/images/avatar.jpeg"><div class="socila-check qq-check"><i class="fa fa-qq" aria-hidden="true"></i></div><div class="socila-check gravatar-check"><i class="fa fa-google" aria-hidden="true"></i></div></div>',
|
||||
'author' =>
|
||||
'<div class="popup cmt-popup cmt-author" onclick="cmt_showPopup(this)"><span class="popuptext" id="thePopup" style="margin-left: -115px;width: 230px;">' . __("Auto pull nickname and avatar with a QQ num. entered", "sakura")/*输入QQ号将自动拉取昵称和头像*/ . '</span><input type="text" placeholder="' . __("Nickname or QQ number", "sakura") /*昵称或QQ号*/. ' ' . ( $req ? '(' . __("Name* ", "sakura") . ')' : '') . '" name="author" id="author" value="' . esc_attr($comment_author) . '" size="22" autocomplete="off" tabindex="1" ' . ($req ? "aria-required='true'" : '' ). ' /></div>',
|
||||
'email' =>
|
||||
|
@ -65,7 +65,8 @@
|
||||
<?php wp_nav_menu( array( 'depth' => 2, 'theme_location' => 'primary', 'container' => false ) ); ?>
|
||||
</div><!-- m-nav-center end -->
|
||||
<a class="cd-top faa-float animated "></a>
|
||||
<button onclick="topFunction()" id="moblieGoTop" title="Go to top"><i class="fa fa-chevron-up" aria-hidden="true"></i></button>
|
||||
<button id="moblieGoTop" title="Go to top"><i class="fa fa-chevron-up" aria-hidden="true"></i></button>
|
||||
<button id="moblieDarkLight"><i class="fa fa-moon-o" aria-hidden="true"></i></button>
|
||||
<!-- search start -->
|
||||
<form class="js-search search-form search-form--modal" method="get" action="<?php echo home_url(); ?>" role="search">
|
||||
<div class="search-form__inner">
|
||||
@ -148,11 +149,11 @@
|
||||
<div class="show-hide-wrap"><button class="show-hide"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z"></path></svg></button></div>
|
||||
</aside>
|
||||
<?php endif; ?>
|
||||
<?php if (akina_option('playlist_id', '')): ?>
|
||||
<?php if (akina_option('aplayer_server') != 'off'): ?>
|
||||
<div id="aplayer-float" style="z-index: 100;"
|
||||
class="aplayer"
|
||||
data-id="<?php echo akina_option('playlist_id', ''); ?>"
|
||||
data-server="netease"
|
||||
data-id="<?php echo akina_option('aplayer_playlistid', ''); ?>"
|
||||
data-server="<?php echo akina_option('aplayer_server'); ?>"
|
||||
data-type="playlist"
|
||||
data-fixed="true"
|
||||
data-theme="orange">
|
||||
|
@ -204,6 +204,7 @@ function sakura_scripts()
|
||||
// }
|
||||
//拦截移动端
|
||||
version_compare($GLOBALS['wp_version'], '5.1', '>=') ? $reply_link_version = 'new' : $reply_link_version = 'old';
|
||||
$gravatar_url = akina_option('gravatar_proxy') ?: 'secure.gravatar.com/avatar';
|
||||
wp_localize_script('app', 'Poi', array(
|
||||
'pjax' => akina_option('poi_pjax'),
|
||||
'movies' => $movies,
|
||||
@ -215,7 +216,8 @@ function sakura_scripts()
|
||||
'reply_link_version' => $reply_link_version,
|
||||
'api' => esc_url_raw(rest_url()),
|
||||
'nonce' => wp_create_nonce('wp_rest'),
|
||||
'google_analytics_id' => akina_option('google_analytics_id', '')
|
||||
'google_analytics_id' => akina_option('google_analytics_id', ''),
|
||||
'gravatar_url' => $gravatar_url
|
||||
));
|
||||
}
|
||||
add_action('wp_enqueue_scripts', 'sakura_scripts');
|
||||
@ -609,12 +611,14 @@ function get_link_items()
|
||||
*/
|
||||
function gravatar_cn($url)
|
||||
{
|
||||
$gravatar_url = array('0.gravatar.com', '1.gravatar.com', '2.gravatar.com', 'secure.gravatar.com');
|
||||
$gravatar_url = array('0.gravatar.com/avatar','1.gravatar.com/avatar','2.gravatar.com/avatar','secure.gravatar.com/avatar');
|
||||
//return str_replace($gravatar_url, 'cn.gravatar.com', $url);
|
||||
//官方服务器近期大陆访问 429,建议使用镜像
|
||||
return str_replace( $gravatar_url, 'gravatar.2heng.xin', $url );
|
||||
return str_replace( $gravatar_url, akina_option('gravatar_proxy'), $url );
|
||||
}
|
||||
if(akina_option('gravatar_proxy')){
|
||||
add_filter('get_avatar_url', 'gravatar_cn', 4);
|
||||
}
|
||||
|
||||
/*
|
||||
* 自定义默认头像
|
||||
@ -662,6 +666,7 @@ function akina_body_classes($classes)
|
||||
/*if(!wp_is_mobile()) {
|
||||
$classes[] = 'serif';
|
||||
}*/
|
||||
$classes[] = $_COOKIE['dark'.akina_option('cookie_version', '')] == '1' ? 'dark' : ' ';
|
||||
return $classes;
|
||||
}
|
||||
add_filter('body_class', 'akina_body_classes');
|
||||
@ -1759,7 +1764,9 @@ function DEFAULT_FEATURE_IMAGE()
|
||||
|
||||
//防止设置置顶文章造成的图片同侧bug
|
||||
add_action( 'pre_get_posts', function( $q ){
|
||||
if ($q->is_home() && $q->is_main_query() && $q->get('paged') > 1) {
|
||||
if ( $q->is_home() && $q->is_main_query() ){
|
||||
$q->set( 'posts_per_page', 10 - sizeof(get_option( 'sticky_posts' )) );
|
||||
if ( $q->get( 'paged' ) > 1 )
|
||||
$q->set( 'post__not_in', get_option( 'sticky_posts' ) );
|
||||
}
|
||||
|
||||
|
@ -62,6 +62,7 @@ if (akina_option('akina_meta') == true) {
|
||||
<meta name="keywords" content="<?php echo $keywords; ?>" />
|
||||
<?php } ?>
|
||||
<link rel="shortcut icon" href="<?php echo akina_option('favicon_link', ''); ?>"/>
|
||||
<meta name="theme-color" content="#31363b">
|
||||
<meta http-equiv="x-dns-prefetch-control" content="on">
|
||||
<?php wp_head(); ?>
|
||||
<script type="text/javascript">
|
||||
|
BIN
images/avatar.jpeg
Normal file
BIN
images/avatar.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
BIN
inc/QQWry.Dat
BIN
inc/QQWry.Dat
Binary file not shown.
430
inc/api.php
Normal file → Executable file
430
inc/api.php
Normal file → Executable file
@ -1,5 +1,18 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Classes
|
||||
*/
|
||||
include_once('classes/Aplayer.php');
|
||||
include_once('classes/Bilibili.php');
|
||||
include_once('classes/Cache.php');
|
||||
include_once('classes/Images.php');
|
||||
include_once('classes/QQ.php');
|
||||
|
||||
use Sakura\API\Images;
|
||||
use Sakura\API\QQ;
|
||||
use Sakura\API\Cache;
|
||||
|
||||
/**
|
||||
* Router
|
||||
*/
|
||||
@ -32,63 +45,20 @@ add_action('rest_api_init', function () {
|
||||
'methods' => 'GET',
|
||||
'callback' => 'get_qq_avatar',
|
||||
));
|
||||
register_rest_route('sakura/v1', '/bangumi/bilibili', array(
|
||||
'methods' => 'POST',
|
||||
'callback' => 'bgm_bilibili',
|
||||
));
|
||||
register_rest_route('sakura/v1', '/meting/aplayer', array(
|
||||
'methods' => 'GET',
|
||||
'callback' => 'meting_aplayer',
|
||||
));
|
||||
});
|
||||
|
||||
/**
|
||||
* QQ info
|
||||
* https://sakura.2heng.xin/wp-json/sakura/v1/qqinfo/json
|
||||
*/
|
||||
function get_qq_info(WP_REST_Request $request)
|
||||
{
|
||||
if (!check_ajax_referer('wp_rest', '_wpnonce', false)) {
|
||||
$output = array(
|
||||
'status' => 403,
|
||||
'success' => false,
|
||||
'message' => 'Unauthorized client.'
|
||||
);
|
||||
} elseif ($_GET['qq']) {
|
||||
$qq = $_GET['qq'];
|
||||
/**
|
||||
* TODO: 设置host,国外服务器默认解析的不是国内IP,可能无法获取数据
|
||||
* 182.254.92.32 r.qzone.qq.com
|
||||
* 参考:https://www.php.net/manual/zh/function.file-get-contents.php#108309
|
||||
*/
|
||||
$get_info = file_get_contents('http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?get_nick=1&uins=' . $qq);
|
||||
$get_info = mb_convert_encoding($get_info, "UTF-8", "GBK");
|
||||
$name = json_decode(substr($get_info, 17, -1), true);
|
||||
if ($name) {
|
||||
$output = array(
|
||||
'status' => 200,
|
||||
'success' => true,
|
||||
'message' => 'success',
|
||||
'avatar' => 'https://q.qlogo.cn/headimg_dl?dst_uin=' . $qq . '&spec=100',
|
||||
'name' => $name[$qq][6],
|
||||
);
|
||||
} else {
|
||||
$output = array(
|
||||
'status' => 404,
|
||||
'success' => false,
|
||||
'message' => 'QQ number not exist.'
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$output = array(
|
||||
'status' => 400,
|
||||
'success' => false,
|
||||
'message' => 'Bad Request'
|
||||
);
|
||||
}
|
||||
|
||||
$result = new WP_REST_Response($output, $output['status']);
|
||||
$result->set_headers(array('Content-Type' => 'application/json'));
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Image uploader response
|
||||
*/
|
||||
function upload_image(WP_REST_Request $request)
|
||||
{
|
||||
function upload_image(WP_REST_Request $request) {
|
||||
// see: https://developer.wordpress.org/rest-api/requests/
|
||||
|
||||
// handle file params $file === $_FILES
|
||||
@ -110,19 +80,19 @@ function upload_image(WP_REST_Request $request)
|
||||
$result->set_headers(array('Content-Type' => 'application/json'));
|
||||
return $result;
|
||||
}
|
||||
|
||||
$images = new \Sakura\API\Images();
|
||||
switch (akina_option("img_upload_api")) {
|
||||
case 'imgur':
|
||||
$image = file_get_contents($_FILES["cmt_img_file"]["tmp_name"]);
|
||||
$API_Request = Imgur_API($image);
|
||||
$API_Request = $images->Imgur_API($image);
|
||||
break;
|
||||
case 'smms':
|
||||
$image = $_FILES;
|
||||
$API_Request = SMMS_API($image);
|
||||
$API_Request = $images->SMMS_API($image);
|
||||
break;
|
||||
case 'chevereto':
|
||||
$image = file_get_contents($_FILES["cmt_img_file"]["tmp_name"]);
|
||||
$API_Request = Chevereto_API($image);
|
||||
$API_Request = $images->Chevereto_API($image);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -131,221 +101,13 @@ function upload_image(WP_REST_Request $request)
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Chevereto upload interface
|
||||
*/
|
||||
function Chevereto_API($image)
|
||||
{
|
||||
$upload_url = akina_option('cheverto_url') . '/api/1/upload';
|
||||
$args = array(
|
||||
'body' => array(
|
||||
'source' => base64_encode($image),
|
||||
'key' => akina_option('chevereto_api_key'),
|
||||
),
|
||||
);
|
||||
|
||||
$response = wp_remote_post($upload_url, $args);
|
||||
$reply = json_decode($response["body"]);
|
||||
|
||||
if ($reply->status_txt == 'OK' && $reply->status_code == 200) {
|
||||
$status = 200;
|
||||
$success = true;
|
||||
$message = "success";
|
||||
$link = $reply->image->image->url;
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
} else {
|
||||
$status = $reply->status_code;
|
||||
$success = false;
|
||||
$message = $reply->error->message;
|
||||
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
}
|
||||
$output = array(
|
||||
'status' => $status,
|
||||
'success' => $success,
|
||||
'message' => $message,
|
||||
'link' => $link,
|
||||
'proxy' => $proxy,
|
||||
);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Imgur upload interface
|
||||
*/
|
||||
function Imgur_API($image)
|
||||
{
|
||||
$client_id = akina_option('imgur_client_id');
|
||||
$upload_url = akina_option('imgur_upload_image_proxy');
|
||||
$args = array(
|
||||
'headers' => array(
|
||||
'Authorization' => 'Client-ID ' . $client_id,
|
||||
),
|
||||
'body' => array(
|
||||
'image' => base64_encode($image),
|
||||
),
|
||||
);
|
||||
|
||||
$response = wp_remote_post($upload_url, $args);
|
||||
$reply = json_decode($response["body"]);
|
||||
|
||||
if ($reply->success && $reply->status == 200) {
|
||||
$status = 200;
|
||||
$success = true;
|
||||
$message = "success";
|
||||
$link = $reply->data->link;
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
} else {
|
||||
$status = $reply->status;
|
||||
$success = false;
|
||||
$message = $reply->data->error;
|
||||
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
}
|
||||
$output = array(
|
||||
'status' => $status,
|
||||
'success' => $success,
|
||||
'message' => $message,
|
||||
'link' => $link,
|
||||
'proxy' => $proxy,
|
||||
);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* smms upload interface
|
||||
*/
|
||||
function SMMS_API($image)
|
||||
{
|
||||
$client_id = akina_option('smms_client_id');
|
||||
$upload_url = "https://sm.ms/api/v2/upload";
|
||||
$filename = $image['cmt_img_file']['name'];
|
||||
$filedata = $image['cmt_img_file']['tmp_name'];
|
||||
$Boundary = wp_generate_password();
|
||||
$bits = file_get_contents($filedata);
|
||||
|
||||
$args = array(
|
||||
"headers" => "Content-Type: multipart/form-data; boundary=$Boundary\r\n\r\nAuthorization: Basic $client_id\r\n\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97",
|
||||
"body" => "--$Boundary\r\nContent-Disposition: form-data; name=\"smfile\"; filename=\"$filename\"\r\n\r\n$bits\r\n\r\n--$Boundary--"
|
||||
);
|
||||
|
||||
$response = wp_remote_post($upload_url, $args);
|
||||
$reply = json_decode($response["body"]);
|
||||
|
||||
if ($reply->success && $reply->code == 'success') {
|
||||
$status = 200;
|
||||
$success = true;
|
||||
$message = $reply->message;
|
||||
$link = $reply->data->url;
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
} else if (preg_match("/Image upload repeated limit/i", $reply->message, $matches)) {
|
||||
$status = 200; // sm.ms 接口不规范,建议检测到重复的情况下返回标准化的 code,并单独把 url 放进一个字段
|
||||
$success = true;
|
||||
$message = $reply->message;
|
||||
$link = str_replace('Image upload repeated limit, this image exists at: ', '', $reply->message);
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
} else {
|
||||
$status = 400;
|
||||
$success = false;
|
||||
$message = $reply->message;
|
||||
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
}
|
||||
$output = array(
|
||||
'status' => $status,
|
||||
'success' => $success,
|
||||
'message' => $message,
|
||||
'link' => $link,
|
||||
'proxy' => $proxy,
|
||||
);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/*
|
||||
* 定制实时搜索 rest api
|
||||
* @rest api接口路径:https://sakura.2heng.xin/wp-json/sakura/v1/cache_search/json
|
||||
* @可在cache_search_json()函数末尾通过设置 HTTP header 控制 json 缓存时间
|
||||
*/
|
||||
function cache_search_json()
|
||||
{
|
||||
global $more;
|
||||
$vowels = array("[", "{", "]", "}", "<", ">", "\r\n", "\r", "\n", "-", "'", '"', '`', " ", ":", ";", '\\', " ", "toc");
|
||||
$regex = <<<EOS
|
||||
/<\/?[a-zA-Z]+("[^"]*"|'[^']*'|[^'">])*>|begin[\S\s]*\/begin|hermit[\S\s]*\/hermit|img[\S\s]*\/img|{{.*?}}|:.*?:/m
|
||||
EOS;
|
||||
$more = 1;
|
||||
|
||||
$posts = new WP_Query('posts_per_page=-1&post_status=publish&post_type=post');
|
||||
while ($posts->have_posts()): $posts->the_post();
|
||||
$output .= '{"type":"post","link":"' . get_permalink() . '","title":' . json_encode(get_the_title()) . ',"comments":"' . get_comments_number('0', '1', '%') . '","text":' . json_encode(str_replace($vowels, " ", preg_replace($regex, ' ', apply_filters( 'the_content', get_the_content())))) . '},';
|
||||
endwhile;
|
||||
wp_reset_postdata();
|
||||
|
||||
$pages = new WP_Query('posts_per_page=-1&post_status=publish&post_type=page');
|
||||
while ($pages->have_posts()): $pages->the_post();
|
||||
$output .= '{"type":"page","link":"' . get_permalink() . '","title":' . json_encode(get_the_title()) . ',"comments":"' . get_comments_number('0', '1', '%') . '","text":' . json_encode(str_replace($vowels, " ", preg_replace($regex, ' ', apply_filters( 'the_content', get_the_content())))) . '},';
|
||||
endwhile;
|
||||
wp_reset_postdata();
|
||||
|
||||
$tags = get_tags();
|
||||
foreach ($tags as $tag) {
|
||||
$output .= '{"type":"tag","link":"' . get_term_link($tag) . '","title":' . json_encode($tag->name) . ',"comments":"","text":""},';
|
||||
}
|
||||
|
||||
$categories = get_categories();
|
||||
foreach ($categories as $category) {
|
||||
$output .= '{"type":"category","link":"' . get_term_link($category) . '","title":' . json_encode($category->name) . ',"comments":"","text":""},';
|
||||
}
|
||||
if (akina_option('live_search_comment')) {
|
||||
$comments = get_comments();
|
||||
foreach ($comments as $comment) {
|
||||
$is_private = get_comment_meta($comment->comment_ID, '_private', true);
|
||||
if ($is_private) {
|
||||
$output .= '{"type":"comment","link":"' . get_comment_link($comment) . '","title":' . json_encode(get_the_title($comment->comment_post_ID)) . ',"comments":"","text":' . json_encode($comment->comment_author . ":" . __("The comment is private", "sakura") /*该评论为私密评论*/) . '},';
|
||||
continue;
|
||||
} else {
|
||||
$output .= '{"type":"comment","link":"' . get_comment_link($comment) . '","title":' . json_encode(get_the_title($comment->comment_post_ID)) . ',"comments":"","text":' . json_encode(str_replace($vowels, " ", preg_replace($regex, " ", $comment->comment_author . ":" . $comment->comment_content))) . '},';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$output = substr($output, 0, strlen($output) - 1);
|
||||
|
||||
$data = '[' . $output . ']';
|
||||
$result = new WP_REST_Response(json_decode($data), 200);
|
||||
$result->set_headers(
|
||||
array(
|
||||
'Content-Type' => 'application/json',
|
||||
'Cache-Control' => 'max-age=3600', // json 缓存控制
|
||||
)
|
||||
);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/*
|
||||
* 随机封面图 rest api
|
||||
* @rest api接口路径:https://sakura.2heng.xin/wp-json/sakura/v1/image/cover
|
||||
*/
|
||||
function cover_gallery() {
|
||||
if(akina_option('cover_cdn_options')=="type_2"){
|
||||
$img_array = glob(get_template_directory() . "/manifest/gallary/*.{gif,jpg,png}",GLOB_BRACE);
|
||||
$img = array_rand($img_array);
|
||||
$imgurl = trim($img_array[$img]);
|
||||
$imgurl = str_replace(get_template_directory(), get_template_directory_uri(), $imgurl);
|
||||
}elseif(akina_option('cover_cdn_options')=="type_3"){
|
||||
$imgurl = akina_option('cover_cdn');
|
||||
}else{
|
||||
global $sakura_image_array;
|
||||
$img_array = json_decode($sakura_image_array, true);
|
||||
$img = array_rand($img_array);
|
||||
$img_domain = akina_option('cover_cdn') ? akina_option('cover_cdn') : get_template_directory_uri();
|
||||
if(strpos($_SERVER['HTTP_ACCEPT'], 'image/webp')) {
|
||||
$imgurl = $img_domain . "/manifest/" . $img_array[$img]["webp"][0];
|
||||
} else {
|
||||
$imgurl = $img_domain . "/manifest/" . $img_array[$img]["jpeg"][0];
|
||||
}
|
||||
}
|
||||
$imgurl = Images::cover_gallery();
|
||||
$data = array('cover image');
|
||||
$response = new WP_REST_Response($data);
|
||||
$response->set_status(302);
|
||||
@ -367,28 +129,7 @@ function feature_gallery() {
|
||||
*/
|
||||
function update_database() {
|
||||
if (akina_option('cover_cdn_options') == "type_1") {
|
||||
global $wpdb;
|
||||
$sakura_table_name = $wpdb->base_prefix.'sakura';
|
||||
$img_domain = akina_option('cover_cdn') ? akina_option('cover_cdn') : get_template_directory();
|
||||
$manifest = file_get_contents($img_domain . "/manifest/manifest.json");
|
||||
if($manifest) {
|
||||
$manifest = array(
|
||||
"mate_key" => "manifest_json",
|
||||
"mate_value" => $manifest
|
||||
);
|
||||
$time = array(
|
||||
"mate_key" => "json_time",
|
||||
"mate_value" => date("Y-m-d H:i:s",time())
|
||||
);
|
||||
|
||||
$wpdb->query("DELETE FROM $sakura_table_name WHERE `mate_key` ='manifest_json'");
|
||||
$wpdb->query("DELETE FROM $sakura_table_name WHERE `mate_key` ='json_time'");
|
||||
$wpdb->insert($sakura_table_name,$manifest);
|
||||
$wpdb->insert($sakura_table_name,$time);
|
||||
$output = "manifest.json has been stored into database.";
|
||||
}else{
|
||||
$output = "manifest.json not found, please ensure your url ($img_domain) is corrent.";
|
||||
}
|
||||
$output = Cache::update_database();
|
||||
$result = new WP_REST_Response($output, 200);
|
||||
return $result;
|
||||
} else {
|
||||
@ -396,29 +137,126 @@ function update_database() {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 定制实时搜索 rest api
|
||||
* @rest api接口路径:https://sakura.2heng.xin/wp-json/sakura/v1/cache_search/json
|
||||
* @可在cache_search_json()函数末尾通过设置 HTTP header 控制 json 缓存时间
|
||||
*/
|
||||
function cache_search_json() {
|
||||
if (!check_ajax_referer('wp_rest', '_wpnonce', false)) {
|
||||
$output = array(
|
||||
'status' => 403,
|
||||
'success' => false,
|
||||
'message' => 'Unauthorized client.'
|
||||
);
|
||||
$result = new WP_REST_Response($output, 403);
|
||||
} else {
|
||||
$output = Cache::search_json();
|
||||
$result = new WP_REST_Response($output, 200);
|
||||
}
|
||||
$result->set_headers(
|
||||
array(
|
||||
'Content-Type' => 'application/json',
|
||||
'Cache-Control' => 'max-age=3600', // json 缓存控制
|
||||
)
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* QQ info
|
||||
* https://sakura.2heng.xin/wp-json/sakura/v1/qqinfo/json
|
||||
*/
|
||||
function get_qq_info(WP_REST_Request $request) {
|
||||
if (!check_ajax_referer('wp_rest', '_wpnonce', false)) {
|
||||
$output = array(
|
||||
'status' => 403,
|
||||
'success' => false,
|
||||
'message' => 'Unauthorized client.'
|
||||
);
|
||||
} elseif ($_GET['qq']) {
|
||||
$qq = $_GET['qq'];
|
||||
$output = QQ::get_qq_info($qq);
|
||||
} else {
|
||||
$output = array(
|
||||
'status' => 400,
|
||||
'success' => false,
|
||||
'message' => 'Bad Request'
|
||||
);
|
||||
}
|
||||
|
||||
$result = new WP_REST_Response($output, $output['status']);
|
||||
$result->set_headers(array('Content-Type' => 'application/json'));
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* QQ头像链接解密
|
||||
* https://sakura.2heng.xin/wp-json/sakura/v1/qqinfo/avatar
|
||||
*/
|
||||
function get_qq_avatar() {
|
||||
global $sakura_privkey;
|
||||
$encrypted = $_GET["qq"];
|
||||
if(isset($encrypted)){
|
||||
$iv = str_repeat($sakura_privkey, 2);
|
||||
$encrypted = base64_decode(urldecode($encrypted));
|
||||
$qq_number = openssl_decrypt($encrypted, 'aes-128-cbc', $sakura_privkey, 0, $iv);
|
||||
preg_match('/^\d{3,}$/', $qq_number, $matches);
|
||||
$imgurl='https://q2.qlogo.cn/headimg_dl?dst_uin='.$matches[0].'&spec=100';
|
||||
$imgurl = QQ::get_qq_avatar($encrypted);
|
||||
if (akina_option('qq_avatar_link') == 'type_2') {
|
||||
$imgdata = file_get_contents($imgurl);
|
||||
header("Content-type: image/jpeg");
|
||||
header("Cache-Control: max-age=86400");
|
||||
$response = new WP_REST_Response();
|
||||
$response->set_headers(array(
|
||||
'Content-Type' => 'image/jpeg',
|
||||
'Cache-Control' => 'max-age=86400'
|
||||
));
|
||||
echo $imgdata;
|
||||
} else {
|
||||
$response = new WP_REST_Response();
|
||||
$response->set_status(301);
|
||||
$response->header('Location', $imgurl);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
function bgm_bilibili() {
|
||||
if (!check_ajax_referer('wp_rest', '_wpnonce', false)) {
|
||||
$output = array(
|
||||
'status' => 403,
|
||||
'success' => false,
|
||||
'message' => 'Unauthorized client.'
|
||||
);
|
||||
$response = new WP_REST_Response($output, 403);
|
||||
} else {
|
||||
$page = $_GET["page"] ?: 2;
|
||||
$bgm = new \Sakura\API\Bilibili();
|
||||
$html = preg_replace("/\s+|\n+|\r/", ' ', $bgm->get_bgm_items($page));
|
||||
$response = new WP_REST_Response($html, 200);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
function meting_aplayer() {
|
||||
$type = $_GET['type'];
|
||||
$id = $_GET['id'];
|
||||
$wpnonce = $_GET['_wpnonce'];
|
||||
$meting_pnonce = $_GET['meting_pnonce'];
|
||||
if ((isset($wpnonce) && !check_ajax_referer('wp_rest', $wpnonce, false)) || (isset($nonce) && !wp_verify_nonce($nonce, $type . '#:' . $id))) {
|
||||
$output = array(
|
||||
'status' => 403,
|
||||
'success' => false,
|
||||
'message' => 'Unauthorized client.'
|
||||
);
|
||||
$response = new WP_REST_Response($output, 403);
|
||||
} else {
|
||||
$Meting_API = new \Sakura\API\Aplayer();
|
||||
$data = $Meting_API->get_data($type, $id);
|
||||
if ($type === 'playlist') {
|
||||
$response = new WP_REST_Response($data, 200);
|
||||
$response->set_headers(array('cache-control' => 'max-age=3600'));
|
||||
} elseif ($type === 'lyric') {
|
||||
$response = new WP_REST_Response();
|
||||
$response->set_headers(array('cache-control' => 'max-age=3600'));
|
||||
echo $data;
|
||||
} else {
|
||||
$response = new WP_REST_Response();
|
||||
$response->set_status(301);
|
||||
$response->header('Location', $data);
|
||||
}
|
||||
}
|
||||
return $response;
|
||||
}
|
156
inc/classes/Aplayer.php
Normal file
156
inc/classes/Aplayer.php
Normal file
@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
namespace Sakura\API;
|
||||
|
||||
class Aplayer
|
||||
{
|
||||
public $server;
|
||||
public $playlist_id;
|
||||
private $cookies;
|
||||
public $api_url;
|
||||
|
||||
public function __construct() {
|
||||
$this->server = akina_option('aplayer_server');
|
||||
$this->playlist_id = akina_option('aplayer_playlistid');
|
||||
$this->cookies = akina_option('aplayer_cookie');
|
||||
$this->api_url = rest_url('sakura/v1/meting/aplayer');
|
||||
require('Meting.php');
|
||||
}
|
||||
|
||||
public function get_data($type, $id) {
|
||||
$server = $this->server;
|
||||
$cookies = $this->cookies;
|
||||
$playlist_id = $this->playlist_id;
|
||||
$api = new \Sakura\API\Meting($server);
|
||||
if (!empty($cookies) && $server === "netease") $api->cookie($cookies);
|
||||
switch ($type) {
|
||||
case 'song':
|
||||
$data = $api->format(true)->song($id);
|
||||
$data = json_decode($data, true)["url"];
|
||||
$data = $this->song_url($data);
|
||||
break;
|
||||
// case 'album':
|
||||
// $data = $api->format(true)->album($id);
|
||||
// $data=json_decode($data, true)["url"];
|
||||
// break;
|
||||
case 'playlist':
|
||||
$data = $api->format(true)->playlist($playlist_id);
|
||||
$data = $this->format_playlist($data);
|
||||
break;
|
||||
case 'lyric':
|
||||
$data = $api->format(true)->lyric($id);
|
||||
$data = $this->format_lyric($data);
|
||||
break;
|
||||
case 'pic':
|
||||
$data = $api->format(true)->pic($id);
|
||||
$data = json_decode($data, true)["url"];
|
||||
break;
|
||||
// case 'search':
|
||||
// $data = $api->format(true)->search($id);
|
||||
// $data=json_decode($data, true);
|
||||
// break;
|
||||
default:
|
||||
$data = $api->format(true)->url($id);
|
||||
$data = json_decode($data, true)["url"];
|
||||
$data = $this->song_url($data);
|
||||
break;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function format_playlist($data) {
|
||||
$server = $this->server;
|
||||
$api_url = $this->api_url;
|
||||
$data = json_decode($data);
|
||||
$playlist = array();
|
||||
foreach ((array)$data as $value) {
|
||||
$name = $value->name;
|
||||
$artists = implode(" / ", (array)$value->artist);
|
||||
$mp3_url = "$api_url?server=$server&type=url&id=" . $value->url_id . '&meting_nonce=' . wp_create_nonce('url#:' . $value->url_id);
|
||||
$cover = "$api_url?server=$server&type=pic&id=" . $value->pic_id . '&meting_nonce=' . wp_create_nonce('pic#:' . $value->url_id);
|
||||
$lyric = "$api_url?server=$server&type=lyric&id=" . $value->lyric_id . '&meting_nonce=' . wp_create_nonce('lyric#:' . $value->url_id);
|
||||
$playlist[] = array(
|
||||
"name" => $name,
|
||||
"artist" => $artists,
|
||||
"url" => $mp3_url,
|
||||
"cover" => $cover,
|
||||
"lrc" => $lyric
|
||||
);
|
||||
}
|
||||
return $playlist;
|
||||
}
|
||||
|
||||
private function song_url($url){
|
||||
$server = $this->server;
|
||||
if ($server == 'netease') {
|
||||
$url = str_replace('://m7c.', '://m7.', $url);
|
||||
$url = str_replace('://m8c.', '://m8.', $url);
|
||||
$url = str_replace('http://m8.', 'https://m9.', $url);
|
||||
$url = str_replace('http://m7.', 'https://m9.', $url);
|
||||
$url = str_replace('http://m10.', 'https://m10.', $url);
|
||||
}elseif ($server == 'xiami') {
|
||||
$url = str_replace('http://', 'https://', $url);
|
||||
}elseif ($server == 'baidu') {
|
||||
$url = str_replace('http://zhangmenshiting.qianqian.com', 'https://gss3.baidu.com/y0s1hSulBw92lNKgpU_Z2jR7b2w6buu', $url);
|
||||
}else{
|
||||
$url = $url;
|
||||
}
|
||||
return $url;
|
||||
}
|
||||
|
||||
private function format_lyric($data) {
|
||||
$server = $this->server;
|
||||
$data = json_decode($data, true);
|
||||
$data = $this->lrctran($data['lyric'], $data['tlyric']);
|
||||
if (empty($data)) {
|
||||
$data = "[00:00.000]此歌曲暂无歌词,请您欣赏";
|
||||
}
|
||||
if ($server === 'tencent') {
|
||||
$data = html_entity_decode($data, ENT_QUOTES | ENT_HTML5);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function lrctran($lyric, $tlyric) {
|
||||
$lyric = $this->lrctrim($lyric);
|
||||
$tlyric = $this->lrctrim($tlyric);
|
||||
$len1 = count($lyric);
|
||||
$len2 = count($tlyric);
|
||||
$result = "";
|
||||
for ($i = 0, $j = 0; $i < $len1 && $j < $len2; $i++) {
|
||||
while ($lyric[$i][0] > $tlyric[$j][0] && $j + 1 < $len2) {
|
||||
$j++;
|
||||
}
|
||||
if ($lyric[$i][0] == $tlyric[$j][0]) {
|
||||
$tlyric[$j][2] = str_replace('/', '', $tlyric[$j][2]);
|
||||
if (!empty($tlyric[$j][2])) {
|
||||
$lyric[$i][2] .= " ({$tlyric[$j][2]})";
|
||||
}
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
for ($i = 0; $i < $len1; $i++) {
|
||||
$t = $lyric[$i][0];
|
||||
$result .= sprintf("[%02d:%02d.%03d]%s\n", $t / 60000, $t % 60000 / 1000, $t % 1000, $lyric[$i][2]);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function lrctrim($lyrics) {
|
||||
$lyrics = explode("\n", $lyrics);
|
||||
$data = array();
|
||||
foreach ($lyrics as $key => $lyric) {
|
||||
preg_match('/\[(\d{2}):(\d{2}[\.:]?\d*)]/', $lyric, $lrcTimes);
|
||||
$lrcText = preg_replace('/\[(\d{2}):(\d{2}[\.:]?\d*)]/', '', $lyric);
|
||||
if (empty($lrcTimes)) {
|
||||
continue;
|
||||
}
|
||||
$lrcTimes = intval($lrcTimes[1]) * 60000 + intval(floatval($lrcTimes[2]) * 1000);
|
||||
$lrcText = preg_replace('/\s\s+/', ' ', $lrcText);
|
||||
$lrcText = trim($lrcText);
|
||||
$data[] = array($lrcTimes, $key, $lrcText);
|
||||
}
|
||||
sort($data);
|
||||
return $data;
|
||||
}
|
||||
}
|
68
inc/classes/Bilibili.php
Normal file
68
inc/classes/Bilibili.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Sakura\API;
|
||||
|
||||
class Bilibili
|
||||
{
|
||||
private $uid;
|
||||
private $cookies;
|
||||
|
||||
public function __construct() {
|
||||
$this->uid = akina_option('bilibili_id');
|
||||
$this->cookies = akina_option('bilibili_cookie');
|
||||
}
|
||||
|
||||
public function get_the_bgm_items($page = 1) {
|
||||
$uid = $this->uid;
|
||||
$cookies = $this->cookies;
|
||||
$url = 'https://api.bilibili.com/x/space/bangumi/follow/list?type=1&pn=' . $page . '&ps=15&follow_status=0&vmid=' . $uid;
|
||||
$args = array(
|
||||
'headers' => array(
|
||||
'Cookie' => $cookies,
|
||||
'Host' => 'api.bilibili.com',
|
||||
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97'
|
||||
)
|
||||
);
|
||||
$response = wp_remote_get($url, $args);
|
||||
$bgmdata = json_decode($response["body"])->data;
|
||||
return json_encode($bgmdata);
|
||||
}
|
||||
|
||||
public function get_bgm_items($page = 1) {
|
||||
$bgm = json_decode($this->get_the_bgm_items($page), true);
|
||||
$totalpage = $bgm["total"] / 15;
|
||||
if ($totalpage - $page < 0) {
|
||||
$next = '<span>共追番' . $bgm["total"] . '部,继续加油吧!٩(ˊᗜˋ*)و</span>';
|
||||
} else {
|
||||
$next = '<a class="bangumi-next" href="' . rest_url('sakura/v1/bangumi/bilibili') . '?page=' . ++$page . '"><i class="fa fa-bolt" aria-hidden="true"></i> NEXT </a>';
|
||||
}
|
||||
$lists = $bgm["list"];
|
||||
$html = "";
|
||||
foreach ((array)$lists as $list) {
|
||||
if (preg_match('/看完/m', $list["progress"], $matches_finish)) {
|
||||
$percent = 100;
|
||||
} else {
|
||||
preg_match('/第(\d+)./m', $list['progress'], $matches_progress);
|
||||
preg_match('/第(\d+)./m', $list["new_ep"]['index_show'], $matches_new);
|
||||
$progress = is_numeric($matches_progress[1]) ? $matches_progress[1] : 0;
|
||||
$total = is_numeric($matches_new[1]) ? $matches_new[1] : $list['total_count'];
|
||||
$percent = $progress / $total * 100;
|
||||
}
|
||||
$html .= '<div class="column">
|
||||
<a class="bangumi-item" href="https://bangumi.bilibili.com/anime/' . $list['season_id'] . '/" target="_blank" rel="nofollow">
|
||||
<img class="bangumi-image" src="' . str_replace('http://', 'https://', $list['cover']) . '"/>
|
||||
<div class="bangumi-info">
|
||||
<h3 class="bangumi-title" title="' . $list['title'] . '">' . $list['title'] . '</h2>
|
||||
<div class="bangumi-summary"> ' . $list['evaluate'] . ' </div>
|
||||
<div class="bangumi-status">
|
||||
<div class="bangumi-status-bar" style="width: ' . $percent . '%"></div>
|
||||
<p>' . $list['new_ep']['index_show'] . '</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>';
|
||||
}
|
||||
$html .= '</div><br><div id="bangumi-pagination">' . $next . '</div>';
|
||||
return $html;
|
||||
}
|
||||
}
|
103
inc/classes/Cache.php
Normal file
103
inc/classes/Cache.php
Normal file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace Sakura\API;
|
||||
|
||||
class Cache
|
||||
{
|
||||
public static function search_json() {
|
||||
global $more;
|
||||
$vowels = array("[", "{", "]", "}", "<", ">", "\r\n", "\r", "\n", "-", "'", '"', '`', " ", ":", ";", '\\', " ", "toc");
|
||||
$regex = <<<EOS
|
||||
/<\/?[a-zA-Z]+("[^"]*"|'[^']*'|[^'">])*>|begin[\S\s]*\/begin|hermit[\S\s]*\/hermit|img[\S\s]*\/img|{{.*?}}|:.*?:/m
|
||||
EOS;
|
||||
$more = 1;
|
||||
$output = array();
|
||||
|
||||
$posts = new \WP_Query('posts_per_page=-1&post_status=publish&post_type=post');
|
||||
while ($posts->have_posts()): $posts->the_post();
|
||||
$output[] = array(
|
||||
"type" => "post",
|
||||
"link" => get_permalink(),
|
||||
"title" => get_the_title(),
|
||||
"comments" => get_comments_number('0', '1', '%'),
|
||||
"text" => str_replace($vowels, " ", preg_replace($regex, ' ', apply_filters('the_content', get_the_content())))
|
||||
);
|
||||
endwhile;
|
||||
wp_reset_postdata();
|
||||
|
||||
$pages = new \WP_Query('posts_per_page=-1&post_status=publish&post_type=page');
|
||||
while ($pages->have_posts()): $pages->the_post();
|
||||
$output[] = array(
|
||||
"type" => "page",
|
||||
"link" => get_permalink(),
|
||||
"title" => get_the_title(),
|
||||
"comments" => get_comments_number('0', '1', '%'),
|
||||
"text" => str_replace($vowels, " ", preg_replace($regex, ' ', apply_filters('the_content', get_the_content())))
|
||||
);
|
||||
endwhile;
|
||||
wp_reset_postdata();
|
||||
|
||||
$tags = get_tags();
|
||||
foreach ($tags as $tag) {
|
||||
$output[] = array(
|
||||
"type" => "tag",
|
||||
"link" => get_term_link($tag),
|
||||
"title" => $tag->name,
|
||||
"comments" => "",
|
||||
"text" => ""
|
||||
);
|
||||
}
|
||||
|
||||
$categories = get_categories();
|
||||
foreach ($categories as $category) {
|
||||
$output[] = array(
|
||||
"type" => "category",
|
||||
"link" => get_term_link($category),
|
||||
"title" => $category->name,
|
||||
"comments" => "",
|
||||
"text" => ""
|
||||
);
|
||||
}
|
||||
if (akina_option('live_search_comment')) {
|
||||
$comments = get_comments();
|
||||
foreach ($comments as $comment) {
|
||||
$is_private = get_comment_meta($comment->comment_ID, '_private', true);
|
||||
$output[] = array(
|
||||
"type" => "comment",
|
||||
"link" => get_comment_link($comment),
|
||||
"title" => get_the_title($comment->comment_post_ID),
|
||||
"comments" => "",
|
||||
"text" => $is_private ? ($comment->comment_author . ": " . __('The comment is private', 'sakura')) : str_replace($vowels, ' ', preg_replace($regex, ' ', $comment->comment_author . ":" . $comment->comment_content))
|
||||
);
|
||||
}
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
public static function update_database() {
|
||||
global $wpdb;
|
||||
$sakura_table_name = $wpdb->base_prefix . 'sakura';
|
||||
$img_domain = akina_option('cover_cdn') ? akina_option('cover_cdn') : get_template_directory();
|
||||
$manifest = file_get_contents($img_domain . "/manifest/manifest.json");
|
||||
if ($manifest) {
|
||||
$manifest = array(
|
||||
"mate_key" => "manifest_json",
|
||||
"mate_value" => $manifest
|
||||
);
|
||||
$time = array(
|
||||
"mate_key" => "json_time",
|
||||
"mate_value" => date("Y-m-d H:i:s", time())
|
||||
);
|
||||
|
||||
$wpdb->query("DELETE FROM $sakura_table_name WHERE `mate_key` ='manifest_json'");
|
||||
$wpdb->query("DELETE FROM $sakura_table_name WHERE `mate_key` ='json_time'");
|
||||
$wpdb->insert($sakura_table_name, $manifest);
|
||||
$wpdb->insert($sakura_table_name, $time);
|
||||
$output = "manifest.json has been stored into database.";
|
||||
} else {
|
||||
$output = "manifest.json not found, please ensure your url ($img_domain) is corrent.";
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
}
|
165
inc/classes/Images.php
Normal file
165
inc/classes/Images.php
Normal file
@ -0,0 +1,165 @@
|
||||
<?php
|
||||
|
||||
namespace Sakura\API;
|
||||
|
||||
class Images
|
||||
{
|
||||
private $chevereto_api_key;
|
||||
private $imgur_client_id;
|
||||
private $smms_client_id;
|
||||
|
||||
public function __construct() {
|
||||
$this->chevereto_api_key = akina_option('chevereto_api_key');
|
||||
$this->imgur_client_id = akina_option('imgur_client_id');
|
||||
$this->smms_client_id = akina_option('smms_client_id');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Chevereto upload interface
|
||||
*/
|
||||
public function Chevereto_API($image) {
|
||||
$upload_url = akina_option('cheverto_url') . '/api/1/upload';
|
||||
$args = array(
|
||||
'body' => array(
|
||||
'source' => base64_encode($image),
|
||||
'key' => $this->chevereto_api_key,
|
||||
),
|
||||
);
|
||||
|
||||
$response = wp_remote_post($upload_url, $args);
|
||||
$reply = json_decode($response["body"]);
|
||||
|
||||
if ($reply->status_txt == 'OK' && $reply->status_code == 200) {
|
||||
$status = 200;
|
||||
$success = true;
|
||||
$message = "success";
|
||||
$link = $reply->image->image->url;
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
} else {
|
||||
$status = $reply->status_code;
|
||||
$success = false;
|
||||
$message = $reply->error->message;
|
||||
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
}
|
||||
$output = array(
|
||||
'status' => $status,
|
||||
'success' => $success,
|
||||
'message' => $message,
|
||||
'link' => $link,
|
||||
'proxy' => $proxy,
|
||||
);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Imgur upload interface
|
||||
*/
|
||||
public function Imgur_API($image) {
|
||||
$upload_url = akina_option('imgur_upload_image_proxy');
|
||||
$args = array(
|
||||
'headers' => array(
|
||||
'Authorization' => 'Client-ID ' . $this->imgur_client_id,
|
||||
),
|
||||
'body' => array(
|
||||
'image' => base64_encode($image),
|
||||
),
|
||||
);
|
||||
|
||||
$response = wp_remote_post($upload_url, $args);
|
||||
$reply = json_decode($response["body"]);
|
||||
|
||||
if ($reply->success && $reply->status == 200) {
|
||||
$status = 200;
|
||||
$success = true;
|
||||
$message = "success";
|
||||
$link = $reply->data->link;
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
} else {
|
||||
$status = $reply->status;
|
||||
$success = false;
|
||||
$message = $reply->data->error;
|
||||
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
}
|
||||
$output = array(
|
||||
'status' => $status,
|
||||
'success' => $success,
|
||||
'message' => $message,
|
||||
'link' => $link,
|
||||
'proxy' => $proxy,
|
||||
);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* smms upload interface
|
||||
*/
|
||||
public function SMMS_API($image) {
|
||||
$client_id = $this->smms_client_id;
|
||||
$upload_url = "https://sm.ms/api/v2/upload";
|
||||
$filename = $image['cmt_img_file']['name'];
|
||||
$filedata = $image['cmt_img_file']['tmp_name'];
|
||||
$Boundary = wp_generate_password();
|
||||
$bits = file_get_contents($filedata);
|
||||
|
||||
$args = array(
|
||||
"headers" => "Content-Type: multipart/form-data; boundary=$Boundary\r\n\r\nAuthorization: Basic $client_id\r\n\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97",
|
||||
"body" => "--$Boundary\r\nContent-Disposition: form-data; name=\"smfile\"; filename=\"$filename\"\r\n\r\n$bits\r\n\r\n--$Boundary--"
|
||||
);
|
||||
|
||||
$response = wp_remote_post($upload_url, $args);
|
||||
$reply = json_decode($response["body"]);
|
||||
|
||||
if ($reply->success && $reply->code == 'success') {
|
||||
$status = 200;
|
||||
$success = true;
|
||||
$message = $reply->message;
|
||||
$link = $reply->data->url;
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
} else if (preg_match("/Image upload repeated limit/i", $reply->message, $matches)) {
|
||||
$status = 200; // sm.ms 接口不规范,建议检测到重复的情况下返回标准化的 code,并单独把 url 放进一个字段
|
||||
$success = true;
|
||||
$message = $reply->message;
|
||||
$link = str_replace('Image upload repeated limit, this image exists at: ', '', $reply->message);
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
} else {
|
||||
$status = 400;
|
||||
$success = false;
|
||||
$message = $reply->message;
|
||||
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
|
||||
$proxy = akina_option('cmt_image_proxy') . $link;
|
||||
}
|
||||
$output = array(
|
||||
'status' => $status,
|
||||
'success' => $success,
|
||||
'message' => $message,
|
||||
'link' => $link,
|
||||
'proxy' => $proxy,
|
||||
);
|
||||
return $output;
|
||||
}
|
||||
|
||||
public static function cover_gallery() {
|
||||
if (akina_option('cover_cdn_options') == "type_2") {
|
||||
$img_array = glob(get_template_directory() . "/manifest/gallary/*.{gif,jpg,png}", GLOB_BRACE);
|
||||
$img = array_rand($img_array);
|
||||
$imgurl = trim($img_array[$img]);
|
||||
$imgurl = str_replace(get_template_directory(), get_template_directory_uri(), $imgurl);
|
||||
} elseif (akina_option('cover_cdn_options') == "type_3") {
|
||||
$imgurl = akina_option('cover_cdn');
|
||||
} else {
|
||||
global $sakura_image_array;
|
||||
$img_array = json_decode($sakura_image_array, true);
|
||||
$img = array_rand($img_array);
|
||||
$img_domain = akina_option('cover_cdn') ? akina_option('cover_cdn') : get_template_directory_uri();
|
||||
if (strpos($_SERVER['HTTP_ACCEPT'], 'image/webp')) {
|
||||
$imgurl = $img_domain . "/manifest/" . $img_array[$img]["webp"][0];
|
||||
} else {
|
||||
$imgurl = $img_domain . "/manifest/" . $img_array[$img]["jpeg"][0];
|
||||
}
|
||||
}
|
||||
return $imgurl;
|
||||
}
|
||||
}
|
1365
inc/classes/Meting.php
Executable file
1365
inc/classes/Meting.php
Executable file
File diff suppressed because it is too large
Load Diff
40
inc/classes/QQ.php
Normal file
40
inc/classes/QQ.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace Sakura\API;
|
||||
|
||||
class QQ
|
||||
{
|
||||
public static function get_qq_info($qq) {
|
||||
$get_info = file_get_contents('http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?get_nick=1&uins=' . $qq);
|
||||
$get_info = mb_convert_encoding($get_info, "UTF-8", "GBK");
|
||||
$name = json_decode(substr($get_info, 17, -1), true);
|
||||
if ($name) {
|
||||
$output = array(
|
||||
'status' => 200,
|
||||
'success' => true,
|
||||
'message' => 'success',
|
||||
'avatar' => 'https://q.qlogo.cn/headimg_dl?dst_uin=' . $qq . '&spec=100',
|
||||
'name' => $name[$qq][6],
|
||||
);
|
||||
} else {
|
||||
$output = array(
|
||||
'status' => 404,
|
||||
'success' => false,
|
||||
'message' => 'QQ number not exist.'
|
||||
);
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
public static function get_qq_avatar($encrypted) {
|
||||
global $sakura_privkey;
|
||||
if (isset($encrypted)) {
|
||||
$iv = str_repeat($sakura_privkey, 2);
|
||||
$encrypted = base64_decode(urldecode($encrypted));
|
||||
$qq_number = openssl_decrypt($encrypted, 'aes-128-cbc', $sakura_privkey, 0, $iv);
|
||||
preg_match('/^\d{3,}$/', $qq_number, $matches);
|
||||
$imgurl = 'https://q2.qlogo.cn/headimg_dl?dst_uin=' . $matches[0] . '&spec=100';
|
||||
return $imgurl;
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -67,8 +67,9 @@ mashiro_option.jsdelivr_css_src = "<?php echo get_template_directory_uri() ?>/cd
|
||||
<?php } else { ?>
|
||||
mashiro_option.jsdelivr_css_src = "https://cdn.jsdelivr.net/gh/mashirozx/Sakura@<?php echo SAKURA_VERSION; ?>/cdn/css/lib.min.css";
|
||||
<?php } ?>
|
||||
<?php if (akina_option('playlist_id', '')): ?>
|
||||
<?php if (akina_option('aplayer_server') != 'off'): ?>
|
||||
mashiro_option.float_player_on = true;
|
||||
mashiro_option.meting_api_url = "<?php echo rest_url('sakura/v1/meting/aplayer'); ?>";
|
||||
<?php endif; ?>
|
||||
|
||||
mashiro_option.cover_api = "<?php echo rest_url('sakura/v1/image/cover'); ?>";
|
||||
|
149
js/sakura-app.js
149
js/sakura-app.js
@ -17,6 +17,7 @@ mashiro_global.ini = new function () {
|
||||
coverVideoIni();
|
||||
checkskinSecter();
|
||||
scrollBar();
|
||||
load_bangumi();
|
||||
}
|
||||
this.pjax = function () { // pjax reload functions (pjax 重载函数)
|
||||
pjaxInit();
|
||||
@ -25,6 +26,7 @@ mashiro_global.ini = new function () {
|
||||
copy_code_block();
|
||||
coverVideoIni();
|
||||
checkskinSecter();
|
||||
load_bangumi();
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,6 +79,12 @@ function post_list_show_animation() {
|
||||
|
||||
function callback(entries) {
|
||||
entries.forEach((article) => {
|
||||
if (!window.IntersectionObserver) {
|
||||
article.target.style.willChange = 'auto';
|
||||
if( article.target.classList.contains("post-list-show") === false){
|
||||
article.target.classList.add("post-list-show");
|
||||
}
|
||||
} else {
|
||||
if (article.target.classList.contains("post-list-show")) {
|
||||
article.target.style.willChange = 'auto';
|
||||
io.unobserve(article.target)
|
||||
@ -87,6 +95,7 @@ function post_list_show_animation() {
|
||||
io.unobserve(article.target)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
articles.forEach((article) => {
|
||||
@ -320,10 +329,51 @@ function checkBgImgCookie() {
|
||||
$("#" + bgurl).click();
|
||||
}
|
||||
}
|
||||
|
||||
function checkDarkModeCookie() {
|
||||
var dark = getCookie("dark"),
|
||||
today = new Date(),
|
||||
hour = today.getHours();
|
||||
if ((!dark && (hour > 21 || hour < 7) ) || (dark == '1' && (hour >= 22 || hour <= 6))) {
|
||||
setTimeout(function () {
|
||||
$("#dark-bg").click();
|
||||
}, 100);
|
||||
$("#moblieDarkLight").html('<i class="fa fa-sun-o" aria-hidden="true"></i>');
|
||||
console.log('夜间模式开启');
|
||||
} else {
|
||||
if (document.body.clientWidth > 860) {
|
||||
setTimeout(function () {
|
||||
checkBgImgCookie();
|
||||
}, 100);
|
||||
} else {
|
||||
$("html").css("background", "unset");
|
||||
$("body").removeClass("dark");
|
||||
$("#moblieDarkLight").html('<i class="fa fa-moon-o" aria-hidden="true"></i>');
|
||||
setCookie("dark", "0", 0.33);
|
||||
}
|
||||
console.log('夜间模式关闭');
|
||||
}
|
||||
}
|
||||
if (!getCookie("darkcache") && (new Date().getHours() > 21 || new Date().getHours() < 7)) {
|
||||
removeCookie("dark");
|
||||
setCookie("darkcache", "cached", 0.4);
|
||||
}
|
||||
setTimeout(function() {
|
||||
checkDarkModeCookie();
|
||||
}, 100);
|
||||
|
||||
function mobile_dark_light() {
|
||||
if ($("body").hasClass("dark")) {
|
||||
$("html").css("background", "unset");
|
||||
$("body").removeClass("dark");
|
||||
$("#moblieDarkLight").html('<i class="fa fa-moon-o" aria-hidden="true"></i>');
|
||||
setCookie("dark", "0", 0.33);
|
||||
} else {
|
||||
$("html").css("background", "#31363b");
|
||||
$("#moblieDarkLight").html('<i class="fa fa-sun-o" aria-hidden="true"></i>');
|
||||
$("body").addClass("dark");
|
||||
setCookie("dark", "1", 0.33);
|
||||
}
|
||||
}
|
||||
|
||||
function no_right_click() {
|
||||
@ -336,13 +386,12 @@ $(document).ready(function () {
|
||||
function checkskin_bg(a) {
|
||||
return a == "none" ? "" : a
|
||||
}
|
||||
|
||||
function changeBG() {
|
||||
var cached = $(".menu-list");
|
||||
cached.find("li").each(function () {
|
||||
var tagid = this.id;
|
||||
cached.on("click", "#" + tagid, function () {
|
||||
if (tagid == "white-bg") {
|
||||
if (tagid == "white-bg" || tagid == "dark-bg") {
|
||||
mashiro_global.variables.skinSecter = true;
|
||||
checkskinSecter();
|
||||
} else {
|
||||
@ -350,36 +399,50 @@ $(document).ready(function () {
|
||||
checkskinSecter();
|
||||
}
|
||||
if (tagid == "dark-bg") {
|
||||
$("#night-mode-cover").css("visibility", "visible");
|
||||
} else
|
||||
$("#night-mode-cover").css("visibility", "hidden");
|
||||
$("html").css("background", "#31363b");
|
||||
$(".site-content").css("background-color", "#fff");
|
||||
$("body").addClass("dark");
|
||||
setCookie("dark", "1", 0.33);
|
||||
} else{
|
||||
$("html").css("background", "unset");
|
||||
$("body").removeClass("dark");
|
||||
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
|
||||
setCookie("dark", "0", 0.33);
|
||||
setCookie("bgImgSetting", tagid, 30);
|
||||
}
|
||||
switch (tagid) {
|
||||
case "white-bg":
|
||||
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg0) + ")");
|
||||
$(".site-content").css("background-color", "#fff");
|
||||
break;
|
||||
case "sakura-bg":
|
||||
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg1) + ")");
|
||||
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
|
||||
break;
|
||||
case "gribs-bg":
|
||||
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg2) + ")");
|
||||
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
|
||||
break;
|
||||
case "pixiv-bg":
|
||||
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg3) + ")");
|
||||
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
|
||||
break;
|
||||
case "KAdots-bg":
|
||||
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg4) + ")");
|
||||
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
|
||||
break;
|
||||
case "totem-bg":
|
||||
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg5) + ")");
|
||||
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
|
||||
break;
|
||||
case "bing-bg":
|
||||
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg6) + ")");
|
||||
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
|
||||
break;
|
||||
case "dark-bg":
|
||||
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg7) + ")");
|
||||
break;
|
||||
// case "dark-bg":
|
||||
// $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg7) + ")");
|
||||
// break;
|
||||
}
|
||||
setCookie("bgImgSetting", tagid, 30);
|
||||
closeSkinMenu();
|
||||
});
|
||||
});
|
||||
@ -421,14 +484,9 @@ $(document).ready(function () {
|
||||
});
|
||||
|
||||
function topFunction() {
|
||||
if ('scrollBehavior' in document.documentElement.style) {
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: "smooth"
|
||||
$('body,html').animate({
|
||||
scrollTop: 0
|
||||
})
|
||||
} else {
|
||||
window.scrollSmoothTo(0)
|
||||
}
|
||||
}
|
||||
|
||||
function timeSeriesReload(flag) {
|
||||
@ -817,7 +875,7 @@ if (mashiro_option.float_player_on) {
|
||||
}
|
||||
});
|
||||
}
|
||||
var b = 'https://api.i-meto.com/meting/api?server=:server&type=:type&id=:id&r=:r';
|
||||
var b = mashiro_option.meting_api_url + '?server=:server&type=:type&id=:id&_wpnonce=' + Poi.nonce;
|
||||
'undefined' != typeof meting_api && (b = meting_api);
|
||||
for (var f = 0; f < aplayers.length; f++) try {
|
||||
aplayers[f].destroy()
|
||||
@ -830,7 +888,7 @@ if (mashiro_option.float_player_on) {
|
||||
f = d.dataset.id;
|
||||
if (f) {
|
||||
var g = d.dataset.api || b;
|
||||
g = g.replace(':server', d.dataset.server), g = g.replace(':type', d.dataset.type), g = g.replace(':id', d.dataset.id), g = g.replace(':auth', d.dataset.auth), g = g.replace(':r', Math.random());
|
||||
g = g.replace(':server', d.dataset.server), g = g.replace(':type', d.dataset.type), g = g.replace(':id', d.dataset.id);
|
||||
var h = new XMLHttpRequest;
|
||||
h.onreadystatechange = function () {
|
||||
if (4 === h.readyState && (200 <= h.status && 300 > h.status || 304 === h.status)) {
|
||||
@ -929,27 +987,6 @@ function getqqinfo() {
|
||||
}
|
||||
});
|
||||
}
|
||||
// $.ajax({
|
||||
// type: 'get',
|
||||
// url: mashiro_option.qq_avatar_api_url + '?type=getqqavatar&qq=' + qq,
|
||||
// dataType: 'jsonp',
|
||||
// jsonp: 'callback',
|
||||
// jsonpCallback: 'qqavatarCallBack',
|
||||
// success: function (data) {
|
||||
// $('div.comment-user-avatar img').attr('src', data[qq]);
|
||||
// setCookie('user_avatar', data[qq], 30);
|
||||
// },
|
||||
// error: function () {
|
||||
// cached.filter('#qq,#email,#url').val('');
|
||||
// if (!cached.filter('#qq').val()) {
|
||||
// $('.qq-check').css('display', 'none');
|
||||
// $('.gravatar-check').css('display', 'block');
|
||||
// setCookie('user_qq', '', 30);
|
||||
// $('div.comment-user-avatar img').attr('src', get_gravatar(cached.filter('#email').val(), 80));
|
||||
// setCookie('user_avatar', get_gravatar(cached.filter('#email').val(), 80), 30);
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
});
|
||||
if (getCookie('user_avatar') && getCookie('user_email') && getCookie('is_user_qq') == 'no' && !getCookie('user_qq_email')) {
|
||||
$('div.comment-user-avatar img').attr('src', getCookie('user_avatar'));
|
||||
@ -1011,6 +1048,27 @@ setTimeout(function () {
|
||||
activate_widget();
|
||||
}, 100);
|
||||
|
||||
function load_bangumi() {
|
||||
if ($("section").hasClass("bangumi")) {
|
||||
$('body').on('click', '#bangumi-pagination a', function () {
|
||||
$("#bangumi-pagination a").addClass("loading").text("");
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', this.href + "&_wpnonce=" + Poi.nonce, true);
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState == 4 && xhr.status == 200) {
|
||||
var html = JSON.parse(xhr.responseText);
|
||||
$("#bangumi-pagination").remove();
|
||||
$(".row").append(html);
|
||||
}else{
|
||||
$("#bangumi-pagination a").removeClass("loading").html('<i class="fa fa-exclamation-triangle" aria-hidden="true"></i> ERROR ');
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
mashiro_global.ini.normalize();
|
||||
loadCSS(mashiro_option.jsdelivr_css_src);
|
||||
loadCSS(mashiro_option.entry_content_theme_src);
|
||||
@ -1394,7 +1452,7 @@ var home = location.href,
|
||||
$('html').css('overflow-y', 'hidden');
|
||||
if (mashiro_option.live_search) {
|
||||
var QueryStorage = [];
|
||||
search_a(Poi.api + "sakura/v1/cache_search/json");
|
||||
search_a(Poi.api + "sakura/v1/cache_search/json?_wpnonce=" + Poi.nonce);
|
||||
|
||||
var otxt = addComment.I("search-input"),
|
||||
list = addComment.I("PostlistBox"),
|
||||
@ -1594,7 +1652,7 @@ var home = location.href,
|
||||
var tempScrollTop = $(window).scrollTop();
|
||||
$(window).scrollTop(tempScrollTop);
|
||||
$body.animate({
|
||||
scrollTop: tempScrollTop + 300
|
||||
scrollTop: tempScrollTop + 100
|
||||
}, 666)
|
||||
} else {
|
||||
$("#pagination").html("<span>很高兴你翻到这里,但是真的没有了...</span>");
|
||||
@ -1763,14 +1821,17 @@ var home = location.href,
|
||||
cheight = window.innerHeight,
|
||||
pc_to_top = document.querySelector(".cd-top"),
|
||||
mb_to_top = document.querySelector("#moblieGoTop"),
|
||||
mb_dark_light = document.querySelector("#moblieDarkLight"),
|
||||
changeskin = document.querySelector(".changeSkin-gear");
|
||||
|
||||
$(window).scroll(function() {
|
||||
if (cwidth <= 860) {
|
||||
if ($(this).scrollTop() > 20) {
|
||||
mb_to_top.style.transform = "scale(1)";
|
||||
mb_dark_light.style.transform = "scale(1)";
|
||||
} else {
|
||||
mb_to_top.style.transform = "scale(0)";
|
||||
mb_dark_light.style.transform = "scale(0)";
|
||||
}
|
||||
} else {
|
||||
if ($(this).scrollTop() > 100) {
|
||||
@ -1796,6 +1857,12 @@ var home = location.href,
|
||||
pc_to_top.onclick = function() {
|
||||
topFunction();
|
||||
}
|
||||
mb_to_top.onclick = function() {
|
||||
topFunction();
|
||||
}
|
||||
mb_dark_light.onclick = function() {
|
||||
mobile_dark_light();
|
||||
}
|
||||
}
|
||||
}
|
||||
$(function () {
|
||||
|
Binary file not shown.
@ -1,8 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Sakura\n"
|
||||
"POT-Creation-Date: 2020-02-13 23:59+0800\n"
|
||||
"PO-Revision-Date: 2020-02-13 23:59+0800\n"
|
||||
"POT-Creation-Date: 2020-04-06 17:56+0800\n"
|
||||
"PO-Revision-Date: 2020-04-06 17:56+0800\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: en_US\n"
|
||||
@ -142,74 +142,74 @@ msgstr ""
|
||||
msgid "Nav Menus"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:420 inc/theme_plus.php:186 layouts/authorprofile.php:11
|
||||
#: functions.php:423 inc/theme_plus.php:186 layouts/authorprofile.php:11
|
||||
#: options.php:121
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:420
|
||||
#: functions.php:423
|
||||
msgid "Blogger"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:424
|
||||
#: functions.php:427
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:428
|
||||
#: functions.php:431
|
||||
msgid "Private"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:430
|
||||
#: functions.php:433
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:432
|
||||
#: functions.php:435
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:435
|
||||
#: functions.php:438
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:524
|
||||
#: functions.php:527
|
||||
msgid ""
|
||||
"Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/"
|
||||
"\" target=\"_blank\">WP-Statistics</a>"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:574
|
||||
#: functions.php:577
|
||||
msgid "This guy is so lazy ╮(╯▽╰)╭"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1329
|
||||
#: functions.php:1334
|
||||
msgid "All expand/collapse"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1350 options.php:834
|
||||
#: functions.php:1355 options.php:834
|
||||
msgid " "
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1354
|
||||
#: functions.php:1359
|
||||
msgid " post(s)"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1377 functions.php:1380 inc/theme_plus.php:478
|
||||
#: functions.php:1382 functions.php:1385 inc/theme_plus.php:478
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1606
|
||||
#: functions.php:1611
|
||||
msgid "<b>ERROR</b>: This email domain (<b>@"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1711
|
||||
#: functions.php:1716
|
||||
msgid "QQ"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1781
|
||||
#: functions.php:1788
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1893
|
||||
#: functions.php:1900
|
||||
msgid ""
|
||||
"<b> For a better experience, please do not set <a href=\"/wp-admin/options-"
|
||||
"permalink.php\"> permalink </a> as plain. To do this, you may need to "
|
||||
@ -222,10 +222,6 @@ msgstr ""
|
||||
msgid "page %s "
|
||||
msgstr ""
|
||||
|
||||
#: inc/api.php:301 inc/theme_plus.php:727
|
||||
msgid "The comment is private"
|
||||
msgstr ""
|
||||
|
||||
#: inc/categories-images.php:45 inc/categories-images.php:66
|
||||
msgid "category/tag image"
|
||||
msgstr ""
|
||||
@ -247,6 +243,10 @@ msgstr ""
|
||||
msgid "no image"
|
||||
msgstr ""
|
||||
|
||||
#: inc/classes/Cache.php:70 inc/theme_plus.php:727
|
||||
msgid "The comment is private"
|
||||
msgstr ""
|
||||
|
||||
#: inc/options-framework.php:182 inc/options-framework.php:183
|
||||
#: inc/options-framework.php:412
|
||||
msgid "Sakura Options"
|
||||
@ -923,7 +923,7 @@ msgstr ""
|
||||
msgid "Whether to turn on the top-feature"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:446 options.php:1085
|
||||
#: options.php:446 options.php:1126
|
||||
msgid "Default on"
|
||||
msgstr ""
|
||||
|
||||
@ -1380,167 +1380,239 @@ msgid "Footer float music player"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:926
|
||||
msgid ""
|
||||
"If you don't need the player just leave it blank.Fill in the \"song list\" "
|
||||
"ID of Netease Cloud Music, eg: https://music.163.com/#/playlist?"
|
||||
"id=2288037900 The ID is 2288037900"
|
||||
msgid "Choose which platform you'll use."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:931
|
||||
msgid "Netease Cloud Music (default)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:932
|
||||
msgid "Version Control"
|
||||
msgid "Xiami Music"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:933
|
||||
msgid "KuGou Music"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:934
|
||||
msgid "Baidu Music"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:935
|
||||
msgid "QQ Music (may fail) "
|
||||
msgstr ""
|
||||
|
||||
#: options.php:936
|
||||
msgid "Off"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:940
|
||||
msgid "Song list ID"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:941
|
||||
msgid ""
|
||||
"Fill in the \"song list\" ID, eg: https://music.163.com/#/playlist?"
|
||||
"id=2288037900 The ID is 2288037900"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:947
|
||||
msgid "Netease Cloud Music cookie"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:948
|
||||
msgid ""
|
||||
"For Netease Cloud Music, fill in your vip account's cookies if you want to "
|
||||
"play special tracks.<b>If you don't know what does mean, left it blank.</b>"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:954
|
||||
msgid "Version Control"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:955
|
||||
msgid ""
|
||||
"Used to update frontend cookies and browser caches, any string can be used"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:939
|
||||
#: options.php:961
|
||||
msgid "Enable PJAX (recommand on)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:940
|
||||
#: options.php:962
|
||||
msgid "The principle is the same as Ajax"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:946
|
||||
#: options.php:968
|
||||
msgid "Enable NProgress progress bar"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:947 options.php:954 options.php:961
|
||||
#: options.php:969 options.php:976 options.php:983
|
||||
msgid "Default off, check on"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:953
|
||||
#: options.php:975
|
||||
msgid "Enable sidebar widget"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:960
|
||||
#: options.php:982
|
||||
msgid "Enable Announcement"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:967
|
||||
#: options.php:989
|
||||
msgid "Announcement content"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:968
|
||||
#: options.php:990
|
||||
msgid ""
|
||||
"Announcement content, the text exceeds 142 bytes will be scrolled display "
|
||||
"(mobile device is invalid)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:974
|
||||
#: options.php:995
|
||||
msgid "Bilibili UID"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:996
|
||||
msgid ""
|
||||
"Fill in your UID, eg.https://space.bilibili.com/13972644/, only fill in with "
|
||||
"the number part."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1002
|
||||
msgid "Bilibili Cookie"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1003
|
||||
msgid ""
|
||||
"Fill in your Cookies, go to your bilibili homepage, you can get cookies in "
|
||||
"brownser network pannel with pressing F12. If left this blank, you'll not "
|
||||
"get the progress."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1008
|
||||
msgid "The categories of articles that don't not show on homepage"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:975 options.php:982
|
||||
#: options.php:1009 options.php:1016
|
||||
msgid "Fill in category ID, multiple IDs are divided by a comma \",\""
|
||||
msgstr ""
|
||||
|
||||
#: options.php:981
|
||||
#: options.php:1015
|
||||
msgid "Images category"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:988
|
||||
#: options.php:1022
|
||||
msgid "Statistics Interface"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:993
|
||||
#: options.php:1027
|
||||
msgid ""
|
||||
"WP-Statistics plugin (Professional statistics, can exclude invalid access)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:994
|
||||
#: options.php:1028
|
||||
msgid "Theme built-in (simple statistics, calculate each page access request)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:998
|
||||
#: options.php:1032
|
||||
msgid "Statistical data display format"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1003
|
||||
#: options.php:1037
|
||||
msgid "23333 Views (default)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1004
|
||||
#: options.php:1038
|
||||
msgid "23,333 Views (britain)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1005
|
||||
#: options.php:1039
|
||||
msgid "23 333 Views (french)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1006
|
||||
#: options.php:1040
|
||||
msgid "23k Views (chinese)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1010
|
||||
#: options.php:1044
|
||||
msgid "Gravatar avatar proxy"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1045
|
||||
msgid ""
|
||||
"A front-ed proxy for Gravatar, eg. gravatar.2heng.xin/avatar . Leave it "
|
||||
"blank if you do not need."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1051
|
||||
msgid "Comment image upload API"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1015
|
||||
#: options.php:1056
|
||||
msgid "Imgur (https://imgur.com)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1016
|
||||
#: options.php:1057
|
||||
msgid "SM.MS (https://sm.ms)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1017
|
||||
#: options.php:1058
|
||||
msgid "Chevereto (https://chevereto.com)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1021
|
||||
#: options.php:1062
|
||||
msgid "Imgur Client ID"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1022
|
||||
#: options.php:1063
|
||||
msgid ""
|
||||
"Register your application <a href=\"https://api.imgur.com/oauth2/addclient"
|
||||
"\">here</a>, note we only need the Client ID here."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1028
|
||||
#: options.php:1069
|
||||
msgid "SM.MS Secret Token"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1029
|
||||
#: options.php:1070
|
||||
msgid ""
|
||||
"Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1035
|
||||
#: options.php:1076
|
||||
msgid "Chevereto API v1 key"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1036
|
||||
#: options.php:1077
|
||||
msgid "Get your API key here: "
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1042
|
||||
#: options.php:1083
|
||||
msgid "Chevereto URL"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1043
|
||||
#: options.php:1084
|
||||
msgid ""
|
||||
"Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto."
|
||||
"com"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1049
|
||||
#: options.php:1090
|
||||
msgid "Comment images proxy"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1050
|
||||
#: options.php:1091
|
||||
msgid ""
|
||||
"A front-ed proxy for the uploaded images. Leave it blank if you do not need."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1056
|
||||
#: options.php:1097
|
||||
msgid "Imgur upload proxy"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1057
|
||||
#: options.php:1098
|
||||
msgid ""
|
||||
"A back-ed proxy to upload images. You may set a self hosted proxy with "
|
||||
"Nginx, following my <a href=\"https://2heng.xin/2018/06/06/javascript-upload-"
|
||||
@ -1550,151 +1622,151 @@ msgid ""
|
||||
"a>】"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1063
|
||||
#: options.php:1104
|
||||
msgid "Enable live search"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1064
|
||||
#: options.php:1105
|
||||
msgid ""
|
||||
"Real-time search in the foreground, call the Rest API to update the cache "
|
||||
"every hour, you can manually set the cache time in functions.php"
|
||||
"every hour, you can manually set the cache time in api.php"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1070
|
||||
#: options.php:1111
|
||||
msgid "Include comments in live search"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1071
|
||||
#: options.php:1112
|
||||
msgid ""
|
||||
"Search for comments in real-time search (not recommended if there are too "
|
||||
"many comments on the site)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1077
|
||||
#: options.php:1118
|
||||
msgid "Enable baguetteBox"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1078
|
||||
#: options.php:1119
|
||||
msgid ""
|
||||
"Default off,<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox"
|
||||
"\">please read wiki</a>"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1084
|
||||
#: options.php:1125
|
||||
msgid "Enable lazyload in posts"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1091
|
||||
#: options.php:1132
|
||||
msgid "lazyload spinner"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1092
|
||||
#: options.php:1133
|
||||
msgid "The placeholder to display when the image loads, fill in the image url"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1098
|
||||
#: options.php:1139
|
||||
msgid "Whether to enable the clipboard copyright"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1099
|
||||
#: options.php:1140
|
||||
msgid ""
|
||||
"Automatically add a copyright to the clipboard when copying more than 30 "
|
||||
"bytes, which is enabled by default."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1105
|
||||
#: options.php:1146
|
||||
msgid "Email address prefix"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1106
|
||||
#: options.php:1147
|
||||
msgid ""
|
||||
"For sending system mail, the sender address displayed in the user's mailbox, "
|
||||
"do not use Chinese, the default system email address is bibi@your_domain_name"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1112
|
||||
#: options.php:1153
|
||||
msgid "Comments reply notification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1113
|
||||
#: options.php:1154
|
||||
msgid ""
|
||||
"WordPress will use email to notify users when their comments receive a reply "
|
||||
"by default. Tick this item allows users to set their own comments reply "
|
||||
"notification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1119
|
||||
#: options.php:1160
|
||||
msgid "Administrator comment notification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1120
|
||||
#: options.php:1161
|
||||
msgid ""
|
||||
"Whether to use email notification when the administrator's comments receive "
|
||||
"a reply"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1126
|
||||
#: options.php:1167
|
||||
msgid "Enable private comment"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1127
|
||||
#: options.php:1168
|
||||
msgid "Allow users to set their own comments to be invisible to others"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1133
|
||||
#: options.php:1174
|
||||
msgid "Human verification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1134
|
||||
#: options.php:1175
|
||||
msgid "Enable human verification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1140
|
||||
#: options.php:1181
|
||||
msgid "QQ avatar link encryption"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1141
|
||||
#: options.php:1182
|
||||
msgid "Do not display the user's qq avatar links directly."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1146
|
||||
#: options.php:1187
|
||||
msgid "Off (default)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1147
|
||||
#: options.php:1188
|
||||
msgid "use redirect (general security)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1148
|
||||
#: options.php:1189
|
||||
msgid "fetch data at backend (high security)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1149
|
||||
#: options.php:1190
|
||||
msgid "fetch data at backend (high security,slow)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1153
|
||||
#: options.php:1194
|
||||
msgid "Comment UA infomation"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1154
|
||||
#: options.php:1195
|
||||
msgid ""
|
||||
"Check to enable, display the user's browser, operating system information"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1160
|
||||
#: options.php:1201
|
||||
msgid "Enable disqus"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1161
|
||||
#: options.php:1202
|
||||
msgid "Enable disqus for comment"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1167
|
||||
#: options.php:1208
|
||||
msgid "Time Zone adjustment"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1168
|
||||
#: options.php:1209
|
||||
msgid ""
|
||||
"If the comment has a time difference problem adjust here, fill in an "
|
||||
"integer, the calculation method: actual_time = display_error_time - "
|
||||
@ -1753,6 +1825,10 @@ msgstr ""
|
||||
msgid "Attribution-NonCommercial-ShareAlike 4.0 International"
|
||||
msgstr ""
|
||||
|
||||
#: user/page-bangumi.php:30
|
||||
msgid "Please fill in the Bilibili UID in Sakura Options."
|
||||
msgstr ""
|
||||
|
||||
#: user/page-login.php:18
|
||||
msgid "Remember Me"
|
||||
msgstr ""
|
||||
@ -1817,7 +1893,11 @@ msgstr ""
|
||||
msgid "Sign up"
|
||||
msgstr ""
|
||||
|
||||
#: user/page-register.php:92
|
||||
#: user/page-register.php:90
|
||||
msgid "Success! Redirecting......"
|
||||
msgstr ""
|
||||
|
||||
#: user/page-register.php:95
|
||||
msgid "Registration is not open yet."
|
||||
msgstr ""
|
||||
|
||||
|
@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||
"Project-Id-Version: Sakura\n"
|
||||
"POT-Creation-Date: 2020-02-13 23:59+0800\n"
|
||||
"POT-Creation-Date: 2020-04-06 17:55+0800\n"
|
||||
"PO-Revision-Date: 2019-11-01 14:27+0800\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -142,73 +142,73 @@ msgstr ""
|
||||
msgid "Nav Menus"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:420 inc/theme_plus.php:186 layouts/authorprofile.php:11 options.php:121
|
||||
#: functions.php:423 inc/theme_plus.php:186 layouts/authorprofile.php:11 options.php:121
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:420
|
||||
#: functions.php:423
|
||||
msgid "Blogger"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:424
|
||||
#: functions.php:427
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:428
|
||||
#: functions.php:431
|
||||
msgid "Private"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:430
|
||||
#: functions.php:433
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:432
|
||||
#: functions.php:435
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:435
|
||||
#: functions.php:438
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:524
|
||||
#: functions.php:527
|
||||
msgid ""
|
||||
"Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/\" target=\"_blank"
|
||||
"\">WP-Statistics</a>"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:574
|
||||
#: functions.php:577
|
||||
msgid "This guy is so lazy ╮(╯▽╰)╭"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1329
|
||||
#: functions.php:1334
|
||||
msgid "All expand/collapse"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1350 options.php:834
|
||||
#: functions.php:1355 options.php:834
|
||||
msgid " "
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1354
|
||||
#: functions.php:1359
|
||||
msgid " post(s)"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1377 functions.php:1380 inc/theme_plus.php:478
|
||||
#: functions.php:1382 functions.php:1385 inc/theme_plus.php:478
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1606
|
||||
#: functions.php:1611
|
||||
msgid "<b>ERROR</b>: This email domain (<b>@"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1711
|
||||
#: functions.php:1716
|
||||
msgid "QQ"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1781
|
||||
#: functions.php:1788
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1893
|
||||
#: functions.php:1900
|
||||
msgid ""
|
||||
"<b> For a better experience, please do not set <a href=\"/wp-admin/options-permalink.php\"> "
|
||||
"permalink </a> as plain. To do this, you may need to configure <a href=\"https://www.wpdaxue."
|
||||
@ -220,10 +220,6 @@ msgstr ""
|
||||
msgid "page %s "
|
||||
msgstr ""
|
||||
|
||||
#: inc/api.php:301 inc/theme_plus.php:727
|
||||
msgid "The comment is private"
|
||||
msgstr ""
|
||||
|
||||
#: inc/categories-images.php:45 inc/categories-images.php:66
|
||||
msgid "category/tag image"
|
||||
msgstr ""
|
||||
@ -244,6 +240,10 @@ msgstr ""
|
||||
msgid "no image"
|
||||
msgstr ""
|
||||
|
||||
#: inc/classes/Cache.php:70 inc/theme_plus.php:727
|
||||
msgid "The comment is private"
|
||||
msgstr ""
|
||||
|
||||
#: inc/options-framework.php:182 inc/options-framework.php:183 inc/options-framework.php:412
|
||||
msgid "Sakura Options"
|
||||
msgstr ""
|
||||
@ -911,7 +911,7 @@ msgstr ""
|
||||
msgid "Whether to turn on the top-feature"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:446 options.php:1085
|
||||
#: options.php:446 options.php:1126
|
||||
msgid "Default on"
|
||||
msgstr ""
|
||||
|
||||
@ -1359,160 +1359,231 @@ msgid "Footer float music player"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:926
|
||||
msgid ""
|
||||
"If you don't need the player just leave it blank.Fill in the \"song list\" ID of Netease Cloud "
|
||||
"Music, eg: https://music.163.com/#/playlist?id=2288037900 The ID is 2288037900"
|
||||
msgid "Choose which platform you'll use."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:931
|
||||
msgid "Netease Cloud Music (default)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:932
|
||||
msgid "Version Control"
|
||||
msgid "Xiami Music"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:933
|
||||
msgid "Used to update frontend cookies and browser caches, any string can be used"
|
||||
msgid "KuGou Music"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:939
|
||||
msgid "Enable PJAX (recommand on)"
|
||||
#: options.php:934
|
||||
msgid "Baidu Music"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:935
|
||||
msgid "QQ Music (may fail) "
|
||||
msgstr ""
|
||||
|
||||
#: options.php:936
|
||||
msgid "Off"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:940
|
||||
msgid "Song list ID"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:941
|
||||
msgid ""
|
||||
"Fill in the \"song list\" ID, eg: https://music.163.com/#/playlist?id=2288037900 The ID is "
|
||||
"2288037900"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:947
|
||||
msgid "Netease Cloud Music cookie"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:948
|
||||
msgid ""
|
||||
"For Netease Cloud Music, fill in your vip account's cookies if you want to play special tracks."
|
||||
"<b>If you don't know what does mean, left it blank.</b>"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:954
|
||||
msgid "Version Control"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:955
|
||||
msgid "Used to update frontend cookies and browser caches, any string can be used"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:961
|
||||
msgid "Enable PJAX (recommand on)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:962
|
||||
msgid "The principle is the same as Ajax"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:946
|
||||
#: options.php:968
|
||||
msgid "Enable NProgress progress bar"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:947 options.php:954 options.php:961
|
||||
#: options.php:969 options.php:976 options.php:983
|
||||
msgid "Default off, check on"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:953
|
||||
#: options.php:975
|
||||
msgid "Enable sidebar widget"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:960
|
||||
#: options.php:982
|
||||
msgid "Enable Announcement"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:967
|
||||
#: options.php:989
|
||||
msgid "Announcement content"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:968
|
||||
#: options.php:990
|
||||
msgid ""
|
||||
"Announcement content, the text exceeds 142 bytes will be scrolled display (mobile device is "
|
||||
"invalid)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:974
|
||||
msgid "The categories of articles that don't not show on homepage"
|
||||
#: options.php:995
|
||||
msgid "Bilibili UID"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:975 options.php:982
|
||||
msgid "Fill in category ID, multiple IDs are divided by a comma \",\""
|
||||
#: options.php:996
|
||||
msgid ""
|
||||
"Fill in your UID, eg.https://space.bilibili.com/13972644/, only fill in with the number part."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:981
|
||||
msgid "Images category"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:988
|
||||
msgid "Statistics Interface"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:993
|
||||
msgid "WP-Statistics plugin (Professional statistics, can exclude invalid access)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:994
|
||||
msgid "Theme built-in (simple statistics, calculate each page access request)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:998
|
||||
msgid "Statistical data display format"
|
||||
#: options.php:1002
|
||||
msgid "Bilibili Cookie"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1003
|
||||
msgid "23333 Views (default)"
|
||||
msgid ""
|
||||
"Fill in your Cookies, go to your bilibili homepage, you can get cookies in brownser network "
|
||||
"pannel with pressing F12. If left this blank, you'll not get the progress."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1004
|
||||
msgid "23,333 Views (britain)"
|
||||
#: options.php:1008
|
||||
msgid "The categories of articles that don't not show on homepage"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1005
|
||||
msgid "23 333 Views (french)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1006
|
||||
msgid "23k Views (chinese)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1010
|
||||
msgid "Comment image upload API"
|
||||
#: options.php:1009 options.php:1016
|
||||
msgid "Fill in category ID, multiple IDs are divided by a comma \",\""
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1015
|
||||
msgid "Imgur (https://imgur.com)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1016
|
||||
msgid "SM.MS (https://sm.ms)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1017
|
||||
msgid "Chevereto (https://chevereto.com)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1021
|
||||
msgid "Imgur Client ID"
|
||||
msgid "Images category"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1022
|
||||
msgid "Statistics Interface"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1027
|
||||
msgid "WP-Statistics plugin (Professional statistics, can exclude invalid access)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1028
|
||||
msgid "Theme built-in (simple statistics, calculate each page access request)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1032
|
||||
msgid "Statistical data display format"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1037
|
||||
msgid "23333 Views (default)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1038
|
||||
msgid "23,333 Views (britain)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1039
|
||||
msgid "23 333 Views (french)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1040
|
||||
msgid "23k Views (chinese)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1044
|
||||
msgid "Gravatar avatar proxy"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1045
|
||||
msgid ""
|
||||
"A front-ed proxy for Gravatar, eg. gravatar.2heng.xin/avatar . Leave it blank if you do not "
|
||||
"need."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1051
|
||||
msgid "Comment image upload API"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1056
|
||||
msgid "Imgur (https://imgur.com)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1057
|
||||
msgid "SM.MS (https://sm.ms)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1058
|
||||
msgid "Chevereto (https://chevereto.com)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1062
|
||||
msgid "Imgur Client ID"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1063
|
||||
msgid ""
|
||||
"Register your application <a href=\"https://api.imgur.com/oauth2/addclient\">here</a>, note we "
|
||||
"only need the Client ID here."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1028
|
||||
#: options.php:1069
|
||||
msgid "SM.MS Secret Token"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1029
|
||||
#: options.php:1070
|
||||
msgid "Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1035
|
||||
#: options.php:1076
|
||||
msgid "Chevereto API v1 key"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1036
|
||||
#: options.php:1077
|
||||
msgid "Get your API key here: "
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1042
|
||||
#: options.php:1083
|
||||
msgid "Chevereto URL"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1043
|
||||
#: options.php:1084
|
||||
msgid "Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto.com"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1049
|
||||
#: options.php:1090
|
||||
msgid "Comment images proxy"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1050
|
||||
#: options.php:1091
|
||||
msgid "A front-ed proxy for the uploaded images. Leave it blank if you do not need."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1056
|
||||
#: options.php:1097
|
||||
msgid "Imgur upload proxy"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1057
|
||||
#: options.php:1098
|
||||
msgid ""
|
||||
"A back-ed proxy to upload images. You may set a self hosted proxy with Nginx, following my <a "
|
||||
"href=\"https://2heng.xin/2018/06/06/javascript-upload-images-with-imgur-api/\">turtal</a>. "
|
||||
@ -1521,146 +1592,146 @@ msgid ""
|
||||
"</a>】"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1063
|
||||
#: options.php:1104
|
||||
msgid "Enable live search"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1064
|
||||
#: options.php:1105
|
||||
msgid ""
|
||||
"Real-time search in the foreground, call the Rest API to update the cache every hour, you can "
|
||||
"manually set the cache time in functions.php"
|
||||
"manually set the cache time in api.php"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1070
|
||||
#: options.php:1111
|
||||
msgid "Include comments in live search"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1071
|
||||
#: options.php:1112
|
||||
msgid ""
|
||||
"Search for comments in real-time search (not recommended if there are too many comments on the "
|
||||
"site)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1077
|
||||
#: options.php:1118
|
||||
msgid "Enable baguetteBox"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1078
|
||||
#: options.php:1119
|
||||
msgid ""
|
||||
"Default off,<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox\">please read wiki</a>"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1084
|
||||
#: options.php:1125
|
||||
msgid "Enable lazyload in posts"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1091
|
||||
#: options.php:1132
|
||||
msgid "lazyload spinner"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1092
|
||||
#: options.php:1133
|
||||
msgid "The placeholder to display when the image loads, fill in the image url"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1098
|
||||
#: options.php:1139
|
||||
msgid "Whether to enable the clipboard copyright"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1099
|
||||
#: options.php:1140
|
||||
msgid ""
|
||||
"Automatically add a copyright to the clipboard when copying more than 30 bytes, which is "
|
||||
"enabled by default."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1105
|
||||
#: options.php:1146
|
||||
msgid "Email address prefix"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1106
|
||||
#: options.php:1147
|
||||
msgid ""
|
||||
"For sending system mail, the sender address displayed in the user's mailbox, do not use "
|
||||
"Chinese, the default system email address is bibi@your_domain_name"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1112
|
||||
#: options.php:1153
|
||||
msgid "Comments reply notification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1113
|
||||
#: options.php:1154
|
||||
msgid ""
|
||||
"WordPress will use email to notify users when their comments receive a reply by default. Tick "
|
||||
"this item allows users to set their own comments reply notification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1119
|
||||
#: options.php:1160
|
||||
msgid "Administrator comment notification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1120
|
||||
#: options.php:1161
|
||||
msgid "Whether to use email notification when the administrator's comments receive a reply"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1126
|
||||
#: options.php:1167
|
||||
msgid "Enable private comment"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1127
|
||||
#: options.php:1168
|
||||
msgid "Allow users to set their own comments to be invisible to others"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1133
|
||||
#: options.php:1174
|
||||
msgid "Human verification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1134
|
||||
#: options.php:1175
|
||||
msgid "Enable human verification"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1140
|
||||
#: options.php:1181
|
||||
msgid "QQ avatar link encryption"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1141
|
||||
#: options.php:1182
|
||||
msgid "Do not display the user's qq avatar links directly."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1146
|
||||
#: options.php:1187
|
||||
msgid "Off (default)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1147
|
||||
#: options.php:1188
|
||||
msgid "use redirect (general security)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1148
|
||||
#: options.php:1189
|
||||
msgid "fetch data at backend (high security)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1149
|
||||
#: options.php:1190
|
||||
msgid "fetch data at backend (high security,slow)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1153
|
||||
#: options.php:1194
|
||||
msgid "Comment UA infomation"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1154
|
||||
#: options.php:1195
|
||||
msgid "Check to enable, display the user's browser, operating system information"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1160
|
||||
#: options.php:1201
|
||||
msgid "Enable disqus"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1161
|
||||
#: options.php:1202
|
||||
msgid "Enable disqus for comment"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1167
|
||||
#: options.php:1208
|
||||
msgid "Time Zone adjustment"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1168
|
||||
#: options.php:1209
|
||||
msgid ""
|
||||
"If the comment has a time difference problem adjust here, fill in an integer, the calculation "
|
||||
"method: actual_time = display_error_time - the_integer_you_entered (unit: hour)"
|
||||
@ -1714,6 +1785,10 @@ msgstr ""
|
||||
msgid "Attribution-NonCommercial-ShareAlike 4.0 International"
|
||||
msgstr ""
|
||||
|
||||
#: user/page-bangumi.php:30
|
||||
msgid "Please fill in the Bilibili UID in Sakura Options."
|
||||
msgstr ""
|
||||
|
||||
#: user/page-login.php:18
|
||||
msgid "Remember Me"
|
||||
msgstr ""
|
||||
@ -1777,6 +1852,10 @@ msgstr ""
|
||||
msgid "Sign up"
|
||||
msgstr ""
|
||||
|
||||
#: user/page-register.php:92
|
||||
#: user/page-register.php:90
|
||||
msgid "Success! Redirecting......"
|
||||
msgstr ""
|
||||
|
||||
#: user/page-register.php:95
|
||||
msgid "Registration is not open yet."
|
||||
msgstr ""
|
||||
|
Binary file not shown.
@ -1,8 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Sakura\n"
|
||||
"POT-Creation-Date: 2020-02-13 23:59+0800\n"
|
||||
"PO-Revision-Date: 2020-02-13 23:59+0800\n"
|
||||
"POT-Creation-Date: 2020-04-06 17:55+0800\n"
|
||||
"PO-Revision-Date: 2020-04-06 17:56+0800\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: zh_CN\n"
|
||||
@ -142,36 +142,36 @@ msgstr "小工具"
|
||||
msgid "Nav Menus"
|
||||
msgstr "导航菜单"
|
||||
|
||||
#: functions.php:420 inc/theme_plus.php:186 layouts/authorprofile.php:11
|
||||
#: functions.php:423 inc/theme_plus.php:186 layouts/authorprofile.php:11
|
||||
#: options.php:121
|
||||
msgid "Author"
|
||||
msgstr "作者"
|
||||
|
||||
#: functions.php:420
|
||||
#: functions.php:423
|
||||
msgid "Blogger"
|
||||
msgstr "博主"
|
||||
|
||||
#: functions.php:424
|
||||
#: functions.php:427
|
||||
msgid "Location"
|
||||
msgstr "来自"
|
||||
|
||||
#: functions.php:428
|
||||
#: functions.php:431
|
||||
msgid "Private"
|
||||
msgstr "私密"
|
||||
|
||||
#: functions.php:430
|
||||
#: functions.php:433
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
#: functions.php:432
|
||||
#: functions.php:435
|
||||
msgid "No"
|
||||
msgstr "否"
|
||||
|
||||
#: functions.php:435
|
||||
#: functions.php:438
|
||||
msgid "Edit"
|
||||
msgstr "编辑"
|
||||
|
||||
#: functions.php:524
|
||||
#: functions.php:527
|
||||
msgid ""
|
||||
"Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/"
|
||||
"\" target=\"_blank\">WP-Statistics</a>"
|
||||
@ -179,39 +179,39 @@ msgstr ""
|
||||
"请安装插件 <a href=\"https://wordpress.org/plugins/wp-statistics/\" target="
|
||||
"\"_blank\">WP-Statistics</a>"
|
||||
|
||||
#: functions.php:574
|
||||
#: functions.php:577
|
||||
msgid "This guy is so lazy ╮(╯▽╰)╭"
|
||||
msgstr "这家伙好懒╮(╯▽╰)╭"
|
||||
|
||||
#: functions.php:1329
|
||||
#: functions.php:1334
|
||||
msgid "All expand/collapse"
|
||||
msgstr "全部展开/收缩"
|
||||
|
||||
#: functions.php:1350 options.php:834
|
||||
#: functions.php:1355 options.php:834
|
||||
msgid " "
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1354
|
||||
#: functions.php:1359
|
||||
msgid " post(s)"
|
||||
msgstr " 篇文章"
|
||||
|
||||
#: functions.php:1377 functions.php:1380 inc/theme_plus.php:478
|
||||
#: functions.php:1382 functions.php:1385 inc/theme_plus.php:478
|
||||
msgid "Dashboard"
|
||||
msgstr "管理中心"
|
||||
|
||||
#: functions.php:1606
|
||||
#: functions.php:1611
|
||||
msgid "<b>ERROR</b>: This email domain (<b>@"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1711
|
||||
#: functions.php:1716
|
||||
msgid "QQ"
|
||||
msgstr ""
|
||||
|
||||
#: functions.php:1781
|
||||
#: functions.php:1788
|
||||
msgid "Sidebar"
|
||||
msgstr "侧栏"
|
||||
|
||||
#: functions.php:1893
|
||||
#: functions.php:1900
|
||||
msgid ""
|
||||
"<b> For a better experience, please do not set <a href=\"/wp-admin/options-"
|
||||
"permalink.php\"> permalink </a> as plain. To do this, you may need to "
|
||||
@ -227,10 +227,6 @@ msgstr ""
|
||||
msgid "page %s "
|
||||
msgstr "第 %s 页 "
|
||||
|
||||
#: inc/api.php:301 inc/theme_plus.php:727
|
||||
msgid "The comment is private"
|
||||
msgstr "该评论为私密评论"
|
||||
|
||||
#: inc/categories-images.php:45 inc/categories-images.php:66
|
||||
msgid "category/tag image"
|
||||
msgstr "分类/标签图像"
|
||||
@ -252,6 +248,10 @@ msgstr "图像"
|
||||
msgid "no image"
|
||||
msgstr "暂无"
|
||||
|
||||
#: inc/classes/Cache.php:70 inc/theme_plus.php:727
|
||||
msgid "The comment is private"
|
||||
msgstr "该评论为私密评论"
|
||||
|
||||
#: inc/options-framework.php:182 inc/options-framework.php:183
|
||||
#: inc/options-framework.php:412
|
||||
msgid "Sakura Options"
|
||||
@ -938,7 +938,7 @@ msgstr "点点"
|
||||
msgid "Whether to turn on the top-feature"
|
||||
msgstr "是否开启聚焦"
|
||||
|
||||
#: options.php:446 options.php:1085
|
||||
#: options.php:446 options.php:1126
|
||||
msgid "Default on"
|
||||
msgstr "默认开启"
|
||||
|
||||
@ -1412,52 +1412,95 @@ msgid "Footer float music player"
|
||||
msgstr "页脚悬浮播放器"
|
||||
|
||||
#: options.php:926
|
||||
msgid ""
|
||||
"If you don't need the player just leave it blank.Fill in the \"song list\" "
|
||||
"ID of Netease Cloud Music, eg: https://music.163.com/#/playlist?"
|
||||
"id=2288037900 The ID is 2288037900"
|
||||
msgstr ""
|
||||
"如果不需要播放器留空即可。填写网易云音乐的「歌单」ID,eg:https://music.163."
|
||||
"com/#/playlist?id=2288037900的ID是2288037900"
|
||||
msgid "Choose which platform you'll use."
|
||||
msgstr "选择你要使用的平台。"
|
||||
|
||||
#: options.php:931
|
||||
msgid "Netease Cloud Music (default)"
|
||||
msgstr "网易云音乐(默认)"
|
||||
|
||||
#: options.php:932
|
||||
msgid "Xiami Music"
|
||||
msgstr "虾米音乐"
|
||||
|
||||
#: options.php:933
|
||||
msgid "KuGou Music"
|
||||
msgstr "酷狗音乐"
|
||||
|
||||
#: options.php:934
|
||||
msgid "Baidu Music"
|
||||
msgstr "百度音乐"
|
||||
|
||||
#: options.php:935
|
||||
msgid "QQ Music (may fail) "
|
||||
msgstr "QQ音乐(可能解析失败) "
|
||||
|
||||
#: options.php:936
|
||||
msgid "Off"
|
||||
msgstr "关闭"
|
||||
|
||||
#: options.php:940
|
||||
msgid "Song list ID"
|
||||
msgstr "「歌单」ID"
|
||||
|
||||
#: options.php:941
|
||||
msgid ""
|
||||
"Fill in the \"song list\" ID, eg: https://music.163.com/#/playlist?"
|
||||
"id=2288037900 The ID is 2288037900"
|
||||
msgstr ""
|
||||
"填写「歌单」ID,eg:https://music.163.com/#/playlist?id=2288037900的ID是"
|
||||
"2288037900"
|
||||
|
||||
#: options.php:947
|
||||
msgid "Netease Cloud Music cookie"
|
||||
msgstr "网易云音乐 Cookies"
|
||||
|
||||
#: options.php:948
|
||||
msgid ""
|
||||
"For Netease Cloud Music, fill in your vip account's cookies if you want to "
|
||||
"play special tracks.<b>If you don't know what does mean, left it blank.</b>"
|
||||
msgstr ""
|
||||
"针对网易云音乐,如果你想播放特殊曲目,填入你的vip帐号Cookies。<b>如果不知道这"
|
||||
"是什么意思,忽略即可。</b>"
|
||||
|
||||
#: options.php:954
|
||||
msgid "Version Control"
|
||||
msgstr "版本控制"
|
||||
|
||||
#: options.php:933
|
||||
#: options.php:955
|
||||
msgid ""
|
||||
"Used to update frontend cookies and browser caches, any string can be used"
|
||||
msgstr "用于更新前端 cookie 及浏览器缓存,可使用任意字符串"
|
||||
|
||||
#: options.php:939
|
||||
#: options.php:961
|
||||
msgid "Enable PJAX (recommand on)"
|
||||
msgstr "开启PJAX局部刷新(建议开启)"
|
||||
|
||||
#: options.php:940
|
||||
#: options.php:962
|
||||
msgid "The principle is the same as Ajax"
|
||||
msgstr "原理与Ajax相同"
|
||||
|
||||
#: options.php:946
|
||||
#: options.php:968
|
||||
msgid "Enable NProgress progress bar"
|
||||
msgstr "开启NProgress加载进度条"
|
||||
|
||||
#: options.php:947 options.php:954 options.php:961
|
||||
#: options.php:969 options.php:976 options.php:983
|
||||
msgid "Default off, check on"
|
||||
msgstr "默认不开启,勾选开启"
|
||||
|
||||
#: options.php:953
|
||||
#: options.php:975
|
||||
msgid "Enable sidebar widget"
|
||||
msgstr "支持侧栏小部件"
|
||||
|
||||
#: options.php:960
|
||||
#: options.php:982
|
||||
msgid "Enable Announcement"
|
||||
msgstr "开启公告"
|
||||
|
||||
#: options.php:967
|
||||
#: options.php:989
|
||||
msgid "Announcement content"
|
||||
msgstr "公告内容"
|
||||
|
||||
#: options.php:968
|
||||
#: options.php:990
|
||||
msgid ""
|
||||
"Announcement content, the text exceeds 142 bytes will be scrolled display "
|
||||
"(mobile device is invalid)"
|
||||
@ -1465,72 +1508,108 @@ msgstr ""
|
||||
"公告内容,文字超出142个字节将会被滚动显示(移动端无效),一个汉字 = 3字节,一"
|
||||
"个字母 = 1字节,自己计算吧"
|
||||
|
||||
#: options.php:974
|
||||
#: options.php:995
|
||||
msgid "Bilibili UID"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:996
|
||||
msgid ""
|
||||
"Fill in your UID, eg.https://space.bilibili.com/13972644/, only fill in with "
|
||||
"the number part."
|
||||
msgstr ""
|
||||
"填写你的UID,,例如:https://space.bilibili.com/13972644/,只需填写数字部分。"
|
||||
|
||||
#: options.php:1002
|
||||
msgid "Bilibili Cookie"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1003
|
||||
msgid ""
|
||||
"Fill in your Cookies, go to your bilibili homepage, you can get cookies in "
|
||||
"brownser network pannel with pressing F12. If left this blank, you'll not "
|
||||
"get the progress."
|
||||
msgstr ""
|
||||
"填写你的帐号Cookies。F12打开浏览器网络面板,前往你的B站主页获取Cookies。如果"
|
||||
"留空,将不会显示追番进度。"
|
||||
|
||||
#: options.php:1008
|
||||
msgid "The categories of articles that don't not show on homepage"
|
||||
msgstr "首页不显示的分类文章"
|
||||
|
||||
#: options.php:975 options.php:982
|
||||
#: options.php:1009 options.php:1016
|
||||
msgid "Fill in category ID, multiple IDs are divided by a comma \",\""
|
||||
msgstr "填写分类ID,多个用英文“ , ”分开"
|
||||
|
||||
#: options.php:981
|
||||
#: options.php:1015
|
||||
msgid "Images category"
|
||||
msgstr "图片展示分类"
|
||||
|
||||
#: options.php:988
|
||||
#: options.php:1022
|
||||
msgid "Statistics Interface"
|
||||
msgstr "统计接口"
|
||||
|
||||
#: options.php:993
|
||||
#: options.php:1027
|
||||
msgid ""
|
||||
"WP-Statistics plugin (Professional statistics, can exclude invalid access)"
|
||||
msgstr "WP-Statistics 插件(专业性统计,可排除无效访问)"
|
||||
|
||||
#: options.php:994
|
||||
#: options.php:1028
|
||||
msgid "Theme built-in (simple statistics, calculate each page access request)"
|
||||
msgstr "主题内建(简单的统计,计算每一次页面访问请求)"
|
||||
|
||||
#: options.php:998
|
||||
#: options.php:1032
|
||||
msgid "Statistical data display format"
|
||||
msgstr "统计数据显示格式"
|
||||
|
||||
#: options.php:1003
|
||||
#: options.php:1037
|
||||
msgid "23333 Views (default)"
|
||||
msgstr "23333 次访问(默认)"
|
||||
|
||||
#: options.php:1004
|
||||
#: options.php:1038
|
||||
msgid "23,333 Views (britain)"
|
||||
msgstr "23,333 次访问(英式)"
|
||||
|
||||
#: options.php:1005
|
||||
#: options.php:1039
|
||||
msgid "23 333 Views (french)"
|
||||
msgstr "23 333 次访问(法式)"
|
||||
|
||||
#: options.php:1006
|
||||
#: options.php:1040
|
||||
msgid "23k Views (chinese)"
|
||||
msgstr "23k 次访问(中式)"
|
||||
|
||||
#: options.php:1010
|
||||
#: options.php:1044
|
||||
msgid "Gravatar avatar proxy"
|
||||
msgstr "Gravatar头像代理"
|
||||
|
||||
#: options.php:1045
|
||||
msgid ""
|
||||
"A front-ed proxy for Gravatar, eg. gravatar.2heng.xin/avatar . Leave it "
|
||||
"blank if you do not need."
|
||||
msgstr ""
|
||||
"填写Gravatar头像的代理地址,例如:gravatar.2heng.xin/avatar。留空则不使用代"
|
||||
"理。"
|
||||
|
||||
#: options.php:1051
|
||||
msgid "Comment image upload API"
|
||||
msgstr "评论上传图片接口"
|
||||
|
||||
#: options.php:1015
|
||||
#: options.php:1056
|
||||
msgid "Imgur (https://imgur.com)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1016
|
||||
#: options.php:1057
|
||||
msgid "SM.MS (https://sm.ms)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1017
|
||||
#: options.php:1058
|
||||
msgid "Chevereto (https://chevereto.com)"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1021
|
||||
#: options.php:1062
|
||||
msgid "Imgur Client ID"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1022
|
||||
#: options.php:1063
|
||||
msgid ""
|
||||
"Register your application <a href=\"https://api.imgur.com/oauth2/addclient"
|
||||
"\">here</a>, note we only need the Client ID here."
|
||||
@ -1538,48 +1617,48 @@ msgstr ""
|
||||
"在<a href=\"https://api.imgur.com/oauth2/addclient\">这里</a>注册你的 "
|
||||
"application , 注意此处只需要填写 Client ID."
|
||||
|
||||
#: options.php:1028
|
||||
#: options.php:1069
|
||||
msgid "SM.MS Secret Token"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1029
|
||||
#: options.php:1070
|
||||
msgid ""
|
||||
"Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>."
|
||||
msgstr "在<a href=\"https://sm.ms/home/apitoken\">这里</a>获取 key."
|
||||
|
||||
#: options.php:1035
|
||||
#: options.php:1076
|
||||
msgid "Chevereto API v1 key"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1036
|
||||
#: options.php:1077
|
||||
msgid "Get your API key here: "
|
||||
msgstr "在这里获取你的 API key: "
|
||||
|
||||
#: options.php:1042
|
||||
#: options.php:1083
|
||||
msgid "Chevereto URL"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:1043
|
||||
#: options.php:1084
|
||||
msgid ""
|
||||
"Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto."
|
||||
"com"
|
||||
msgstr ""
|
||||
"你的 Chevereto 首页 url, 注意结尾没有 /, 例如:https://your.cherverto.com"
|
||||
|
||||
#: options.php:1049
|
||||
#: options.php:1090
|
||||
msgid "Comment images proxy"
|
||||
msgstr "评论图片代理"
|
||||
|
||||
#: options.php:1050
|
||||
#: options.php:1091
|
||||
msgid ""
|
||||
"A front-ed proxy for the uploaded images. Leave it blank if you do not need."
|
||||
msgstr "前端显示的图片的代理。"
|
||||
|
||||
#: options.php:1056
|
||||
#: options.php:1097
|
||||
msgid "Imgur upload proxy"
|
||||
msgstr "Imgur 上传代理"
|
||||
|
||||
#: options.php:1057
|
||||
#: options.php:1098
|
||||
msgid ""
|
||||
"A back-ed proxy to upload images. You may set a self hosted proxy with "
|
||||
"Nginx, following my <a href=\"https://2heng.xin/2018/06/06/javascript-upload-"
|
||||
@ -1594,33 +1673,33 @@ msgstr ""
|
||||
"端显示都需要代理!如果服务器在国外不需要上传代理,此处填写默认值即可:【<a "
|
||||
"href=\"https://api.imgur.com/3/image/\">https://api.imgur.com/3/image/</a>】"
|
||||
|
||||
#: options.php:1063
|
||||
#: options.php:1104
|
||||
msgid "Enable live search"
|
||||
msgstr "启用实时搜索"
|
||||
|
||||
#: options.php:1064
|
||||
#: options.php:1105
|
||||
msgid ""
|
||||
"Real-time search in the foreground, call the Rest API to update the cache "
|
||||
"every hour, you can manually set the cache time in functions.php"
|
||||
"every hour, you can manually set the cache time in api.php"
|
||||
msgstr ""
|
||||
"前台实现实时搜索,调用 Rest API 每小时更新一次缓存,可在 functions.php 里手动"
|
||||
"设置缓存时间"
|
||||
"前台实现实时搜索,调用 Rest API 每小时更新一次缓存,可在 api.php 里手动设置缓"
|
||||
"存时间"
|
||||
|
||||
#: options.php:1070
|
||||
#: options.php:1111
|
||||
msgid "Include comments in live search"
|
||||
msgstr "实时搜索包含评论"
|
||||
|
||||
#: options.php:1071
|
||||
#: options.php:1112
|
||||
msgid ""
|
||||
"Search for comments in real-time search (not recommended if there are too "
|
||||
"many comments on the site)"
|
||||
msgstr "在实时搜索中搜索评论(如果网站评论数量太多不建议开启)"
|
||||
|
||||
#: options.php:1077
|
||||
#: options.php:1118
|
||||
msgid "Enable baguetteBox"
|
||||
msgstr "启用 baguetteBox"
|
||||
|
||||
#: options.php:1078
|
||||
#: options.php:1119
|
||||
msgid ""
|
||||
"Default off,<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox"
|
||||
"\">please read wiki</a>"
|
||||
@ -1628,33 +1707,33 @@ msgstr ""
|
||||
"默认禁用,<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox\">请阅"
|
||||
"读说明</a>"
|
||||
|
||||
#: options.php:1084
|
||||
#: options.php:1125
|
||||
msgid "Enable lazyload in posts"
|
||||
msgstr "文章内图片启用 lazyload"
|
||||
|
||||
#: options.php:1091
|
||||
#: options.php:1132
|
||||
msgid "lazyload spinner"
|
||||
msgstr "lazyload 占位图"
|
||||
|
||||
#: options.php:1092
|
||||
#: options.php:1133
|
||||
msgid "The placeholder to display when the image loads, fill in the image url"
|
||||
msgstr "图片加载时要显示的占位图,填写图片 url"
|
||||
|
||||
#: options.php:1098
|
||||
#: options.php:1139
|
||||
msgid "Whether to enable the clipboard copyright"
|
||||
msgstr "是否开启剪贴板版权标识"
|
||||
|
||||
#: options.php:1099
|
||||
#: options.php:1140
|
||||
msgid ""
|
||||
"Automatically add a copyright to the clipboard when copying more than 30 "
|
||||
"bytes, which is enabled by default."
|
||||
msgstr "复制超过30个字节时自动向剪贴板添加版权标识,默认开启。"
|
||||
|
||||
#: options.php:1105
|
||||
#: options.php:1146
|
||||
msgid "Email address prefix"
|
||||
msgstr "发件地址前缀"
|
||||
|
||||
#: options.php:1106
|
||||
#: options.php:1147
|
||||
msgid ""
|
||||
"For sending system mail, the sender address displayed in the user's mailbox, "
|
||||
"do not use Chinese, the default system email address is bibi@your_domain_name"
|
||||
@ -1662,11 +1741,11 @@ msgstr ""
|
||||
"用于发送系统邮件,在用户的邮箱中显示的发件人地址,不要使用中文,默认系统邮件"
|
||||
"地址为 bibi@你的域名"
|
||||
|
||||
#: options.php:1112
|
||||
#: options.php:1153
|
||||
msgid "Comments reply notification"
|
||||
msgstr "邮件回复通知"
|
||||
|
||||
#: options.php:1113
|
||||
#: options.php:1154
|
||||
msgid ""
|
||||
"WordPress will use email to notify users when their comments receive a reply "
|
||||
"by default. Tick this item allows users to set their own comments reply "
|
||||
@ -1675,78 +1754,78 @@ msgstr ""
|
||||
"WordPress默认会使用邮件通知用户评论收到回复,开启此项允许用户设置自己的评论收"
|
||||
"到回复时是否使用邮件通知"
|
||||
|
||||
#: options.php:1119
|
||||
#: options.php:1160
|
||||
msgid "Administrator comment notification"
|
||||
msgstr "邮件回复通知管理员"
|
||||
|
||||
#: options.php:1120
|
||||
#: options.php:1161
|
||||
msgid ""
|
||||
"Whether to use email notification when the administrator's comments receive "
|
||||
"a reply"
|
||||
msgstr "当管理员评论收到回复时是否使用邮件通知"
|
||||
|
||||
#: options.php:1126
|
||||
#: options.php:1167
|
||||
msgid "Enable private comment"
|
||||
msgstr "允许私密评论"
|
||||
|
||||
#: options.php:1127
|
||||
#: options.php:1168
|
||||
msgid "Allow users to set their own comments to be invisible to others"
|
||||
msgstr "允许用户设置自己的评论对其他人不可见"
|
||||
|
||||
#: options.php:1133
|
||||
#: options.php:1174
|
||||
msgid "Human verification"
|
||||
msgstr "机器人验证"
|
||||
|
||||
#: options.php:1134
|
||||
#: options.php:1175
|
||||
msgid "Enable human verification"
|
||||
msgstr "开启机器人验证"
|
||||
|
||||
#: options.php:1140
|
||||
#: options.php:1181
|
||||
msgid "QQ avatar link encryption"
|
||||
msgstr "QQ头像链接加密"
|
||||
|
||||
#: options.php:1141
|
||||
#: options.php:1182
|
||||
msgid "Do not display the user's qq avatar links directly."
|
||||
msgstr "不直接暴露用户QQ头像链接"
|
||||
msgstr "不直接暴露用户QQ头像链接。"
|
||||
|
||||
#: options.php:1146
|
||||
#: options.php:1187
|
||||
msgid "Off (default)"
|
||||
msgstr "关闭(默认)"
|
||||
|
||||
#: options.php:1147
|
||||
#: options.php:1188
|
||||
msgid "use redirect (general security)"
|
||||
msgstr "使用重定向(安全性低)"
|
||||
|
||||
#: options.php:1148
|
||||
#: options.php:1189
|
||||
msgid "fetch data at backend (high security)"
|
||||
msgstr "后端获取头像数据(安全性高)"
|
||||
|
||||
#: options.php:1149
|
||||
#: options.php:1190
|
||||
msgid "fetch data at backend (high security,slow)"
|
||||
msgstr "后端解析QQ头像接口(安全性高,慢)"
|
||||
|
||||
#: options.php:1153
|
||||
#: options.php:1194
|
||||
msgid "Comment UA infomation"
|
||||
msgstr "评论UA信息"
|
||||
|
||||
#: options.php:1154
|
||||
#: options.php:1195
|
||||
msgid ""
|
||||
"Check to enable, display the user's browser, operating system information"
|
||||
msgstr "勾选开启,显示用户的浏览器,操作系统信息"
|
||||
|
||||
#: options.php:1160
|
||||
#: options.php:1201
|
||||
msgid "Enable disqus"
|
||||
msgstr "开启多说插件支持"
|
||||
|
||||
#: options.php:1161
|
||||
#: options.php:1202
|
||||
msgid "Enable disqus for comment"
|
||||
msgstr "多说已经凉了~~"
|
||||
|
||||
#: options.php:1167
|
||||
#: options.php:1208
|
||||
msgid "Time Zone adjustment"
|
||||
msgstr "时区调整"
|
||||
|
||||
#: options.php:1168
|
||||
#: options.php:1209
|
||||
msgid ""
|
||||
"If the comment has a time difference problem adjust here, fill in an "
|
||||
"integer, the calculation method: actual_time = display_error_time - "
|
||||
@ -1806,6 +1885,10 @@ msgstr ""
|
||||
msgid "Attribution-NonCommercial-ShareAlike 4.0 International"
|
||||
msgstr "知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议"
|
||||
|
||||
#: user/page-bangumi.php:30
|
||||
msgid "Please fill in the Bilibili UID in Sakura Options."
|
||||
msgstr "请在后台设置填写 Bilibili UID 后继续。"
|
||||
|
||||
#: user/page-login.php:18
|
||||
msgid "Remember Me"
|
||||
msgstr "记住我"
|
||||
@ -1870,7 +1953,11 @@ msgstr "拖动滑块验证"
|
||||
msgid "Sign up"
|
||||
msgstr "注 册"
|
||||
|
||||
#: user/page-register.php:92
|
||||
#: user/page-register.php:90
|
||||
msgid "Success! Redirecting......"
|
||||
msgstr "注册成功!正在跳转......"
|
||||
|
||||
#: user/page-register.php:95
|
||||
msgid "Registration is not open yet."
|
||||
msgstr "暂未开放注册。"
|
||||
|
||||
|
49
options.php
49
options.php
@ -182,7 +182,7 @@ function optionsframework_options()
|
||||
'name' => __('Favicon', 'sakura'),
|
||||
'desc' => __('It is the small logo on the browser tab, fill in the url', 'sakura'), /*就是浏览器标签栏上那个小 logo,填写url*/
|
||||
'id' => 'favicon_link',
|
||||
'std' => '/wp-content/themes/Sakura/images/favicon.ico',
|
||||
'std' => get_template_directory_uri().'/images/favicon.ico',
|
||||
'type' => 'text');
|
||||
|
||||
$options[] = array(
|
||||
@ -923,11 +923,33 @@ function optionsframework_options()
|
||||
|
||||
$options[] = array(
|
||||
'name' => __('Footer float music player', 'sakura'), /*页脚悬浮播放器*/
|
||||
'desc' => __('If you don\'t need the player just leave it blank.Fill in the "song list" ID of Netease Cloud Music, eg: https://music.163.com/#/playlist?id=2288037900 The ID is 2288037900', 'sakura'), /*如果不需要播放器留空即可。填写网易云音乐的「歌单」ID,eg:https://music.163.com/#/playlist?id=2288037900的ID是2288037900*/
|
||||
'id' => 'playlist_id',
|
||||
'desc' => __('Choose which platform you\'ll use.', 'sakura'),
|
||||
'id' => 'aplayer_server',
|
||||
'std' => "netease",
|
||||
'type' => "select",
|
||||
'options' => array(
|
||||
'netease' => __('Netease Cloud Music (default)', 'sakura'),
|
||||
'xiami' => __('Xiami Music', 'sakura'),
|
||||
'kugou' => __('KuGou Music', 'sakura'),
|
||||
'baidu' => __('Baidu Music', 'sakura'),
|
||||
'tencent' => __('QQ Music (may fail) ', 'sakura'),
|
||||
'off' => __('Off', 'sakura'),
|
||||
));
|
||||
|
||||
$options[] = array(
|
||||
'name' => __('Song list ID', 'sakura'),
|
||||
'desc' => __('Fill in the "song list" ID, eg: https://music.163.com/#/playlist?id=2288037900 The ID is 2288037900', 'sakura'),
|
||||
'id' => 'aplayer_playlistid',
|
||||
'std' => '2288037900',
|
||||
'type' => 'text');
|
||||
|
||||
$options[] = array(
|
||||
'name' => __('Netease Cloud Music cookie', 'sakura'),
|
||||
'desc' => __('For Netease Cloud Music, fill in your vip account\'s cookies if you want to play special tracks.<b>If you don\'t know what does mean, left it blank.</b>', 'sakura'),
|
||||
'id' => 'aplayer_cookie',
|
||||
'std' => '',
|
||||
'type' => 'textarea');
|
||||
|
||||
$options[] = array(
|
||||
'name' => __('Version Control', 'sakura'), /*版本控制*/
|
||||
'desc' => __('Used to update frontend cookies and browser caches, any string can be used', 'sakura'), /*用于更新前端 cookie 及浏览器缓存,可使用任意字符串*/
|
||||
@ -969,7 +991,19 @@ function optionsframework_options()
|
||||
'id' => 'notice_title',
|
||||
'std' => '',
|
||||
'type' => 'text');
|
||||
$options[] = array(
|
||||
'name' => __('Bilibili UID', 'sakura'), /*bilibiliUID*/
|
||||
'desc' => __('Fill in your UID, eg.https://space.bilibili.com/13972644/, only fill in with the number part.', 'sakura'),
|
||||
'id' => 'bilibili_id',
|
||||
'std' => '13972644',
|
||||
'type' => 'text');
|
||||
|
||||
$options[] = array(
|
||||
'name' => __('Bilibili Cookie', 'sakura'), /*Bilibili Cookie*/
|
||||
'desc' => __('Fill in your Cookies, go to your bilibili homepage, you can get cookies in brownser network pannel with pressing F12. If left this blank, you\'ll not get the progress.', 'sakura'),
|
||||
'id' => 'bilibili_cookie',
|
||||
'std' => 'LIVE_BUVID=',
|
||||
'type' => 'textarea');
|
||||
$options[] = array(
|
||||
'name' => __('The categories of articles that don\'t not show on homepage', 'sakura'), /*首页不显示的分类文章*/
|
||||
'desc' => __('Fill in category ID, multiple IDs are divided by a comma ","', 'sakura'), /*填写分类ID,多个用英文“ , ”分开*/
|
||||
@ -1006,6 +1040,13 @@ function optionsframework_options()
|
||||
'type_4' => __('23k Views (chinese)', 'sakura'), /*23k 次访问(中式)*/
|
||||
));
|
||||
|
||||
$options[] = array(
|
||||
'name' => __('Gravatar avatar proxy', 'sakura'),
|
||||
'desc' => __('A front-ed proxy for Gravatar, eg. gravatar.2heng.xin/avatar . Leave it blank if you do not need.', 'sakura'),
|
||||
'id' => 'gravatar_proxy',
|
||||
'std' => "gravatar.2heng.xin/avatar",
|
||||
'type' => "text");
|
||||
|
||||
$options[] = array(
|
||||
'name' => __('Comment image upload API', 'sakura'), /*评论图片上传接口*/
|
||||
'id' => 'img_upload_api',
|
||||
@ -1061,7 +1102,7 @@ function optionsframework_options()
|
||||
|
||||
$options[] = array(
|
||||
'name' => __('Enable live search', 'sakura'), /*启用实时搜索*/
|
||||
'desc' => __('Real-time search in the foreground, call the Rest API to update the cache every hour, you can manually set the cache time in functions.php', 'sakura'), /*前台实现实时搜索,调用 Rest API 每小时更新一次缓存,可在 functions.php 里手动设置缓存时间*/
|
||||
'desc' => __('Real-time search in the foreground, call the Rest API to update the cache every hour, you can manually set the cache time in api.php', 'sakura'), /*前台实现实时搜索,调用 Rest API 每小时更新一次缓存,可在 functions.php 里手动设置缓存时间*/
|
||||
'id' => 'live_search',
|
||||
'std' => '0',
|
||||
'type' => 'checkbox');
|
||||
|
255
style.css
255
style.css
@ -5,7 +5,7 @@ Theme URI: https://github.com/mashirozx/Sakura/
|
||||
Author: Mashiro, Spirit, Louie, Fuzzz
|
||||
Author URI: http://2heng.xin
|
||||
Description: A wonderful branch of theme Akina
|
||||
Version: 3.3.7
|
||||
Version: 3.3.8
|
||||
License: GNU General Public License v2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
Text Domain: sakura
|
||||
@ -1283,7 +1283,7 @@ a:hover {
|
||||
padding: 0 10px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
background-color: rgba(255, 255, 255, .8)
|
||||
background-color: #fff
|
||||
}
|
||||
|
||||
.post-list {
|
||||
@ -1325,7 +1325,8 @@ a:hover {
|
||||
border-radius: 50%;
|
||||
padding: 2px;
|
||||
border: 1px solid #DADADA;
|
||||
position: relative
|
||||
position: relative;
|
||||
object-fit: cover
|
||||
}
|
||||
|
||||
.feature :hover .overlay i {
|
||||
@ -1708,6 +1709,10 @@ i.iconfont.hotpost {
|
||||
background: #FBFBFB
|
||||
}
|
||||
|
||||
body.dark .s-content{
|
||||
background: unset;
|
||||
}
|
||||
|
||||
.s-time i {
|
||||
font-size: 13px;
|
||||
margin-right: 5px
|
||||
@ -1876,21 +1881,10 @@ h1.page-title.mb- {
|
||||
text-align: center
|
||||
}
|
||||
|
||||
@media screen and (max-width:860px) {
|
||||
.cd-top {
|
||||
display: none;
|
||||
height: 60px;
|
||||
width: 50px
|
||||
}
|
||||
.cd-top span {
|
||||
height: 10px;
|
||||
width: 50px
|
||||
}
|
||||
}
|
||||
|
||||
#moblieGoTop {
|
||||
#moblieGoTop,#moblieDarkLight {
|
||||
visibility: hidden;
|
||||
position: fixed;
|
||||
bottom: 10px;
|
||||
bottom: 60px;
|
||||
right: 10px;
|
||||
z-index: 99;
|
||||
border: 0;
|
||||
@ -1905,11 +1899,29 @@ h1.page-title.mb- {
|
||||
transform: scale(0);
|
||||
transition:transform .3s
|
||||
}
|
||||
#moblieGoTop:hover {
|
||||
#moblieGoTop:hover,#moblieDarkLight:hover {
|
||||
background-color: #fff;
|
||||
opacity: .8
|
||||
}
|
||||
|
||||
#moblieDarkLight{
|
||||
bottom: 10px;
|
||||
}
|
||||
|
||||
@media screen and (max-width:860px) {
|
||||
.cd-top {
|
||||
display: none;
|
||||
height: 60px;
|
||||
width: 50px
|
||||
}
|
||||
.cd-top span {
|
||||
height: 10px;
|
||||
width: 50px
|
||||
}
|
||||
#moblieGoTop,#moblieDarkLight{
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
.post-footer {
|
||||
padding: 20px 0;
|
||||
border-bottom: 1px dashed #ddd;
|
||||
@ -3866,6 +3878,10 @@ li.feature-2 {
|
||||
z-index: -1
|
||||
}
|
||||
|
||||
@supports (-webkit-touch-callout: none) {
|
||||
#centerbg: { background-attachment: scroll !important; }
|
||||
}
|
||||
|
||||
@media (max-width:860px) {
|
||||
#centerbg {
|
||||
height: 300px;
|
||||
@ -4364,7 +4380,9 @@ i.iconfont.js-toggle-search.iconsearch {
|
||||
margin-top: -3px;
|
||||
line-height: unset;
|
||||
}
|
||||
|
||||
body.dark .ins-section .fa{
|
||||
color: #ccc;
|
||||
}
|
||||
.ins-section .ins-section-header,.ins-section .ins-search-item {
|
||||
padding: 8px 15px;
|
||||
cursor: url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/cursor/ayuda.cur),auto;
|
||||
@ -5009,7 +5027,7 @@ i.iconfont.down {
|
||||
color: #ADADAD
|
||||
}
|
||||
|
||||
#pagination span {
|
||||
#pagination span,#bangumi-pagination span {
|
||||
color: #989898;
|
||||
font-size: 15px
|
||||
}
|
||||
@ -5019,7 +5037,7 @@ i.iconfont.down {
|
||||
color: orange
|
||||
}
|
||||
|
||||
#pagination .loading {
|
||||
#pagination .loading,#bangumi-pagination .loading {
|
||||
background: url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/images/wordpress-rotating-ball-o.svg);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
@ -5217,7 +5235,7 @@ i.iconfont.down {
|
||||
|
||||
@media (max-width:860px) {
|
||||
#main-container {
|
||||
transition-duration: .5s;
|
||||
transition: background,transform .5s !important;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
z-index: 2
|
||||
@ -5304,7 +5322,7 @@ i.iconfont.down {
|
||||
top: 8px
|
||||
}
|
||||
.openNav.open .icon {
|
||||
background-color: transparent
|
||||
background-color: transparent !important
|
||||
}
|
||||
.openNav.open .icon:after,
|
||||
.openNav.open .icon:before {
|
||||
@ -5810,7 +5828,8 @@ i.iconfont.down {
|
||||
}
|
||||
|
||||
.header-user-avatar:hover .header-user-menu {
|
||||
display: block
|
||||
display: block;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.header-user-menu {
|
||||
@ -5841,7 +5860,6 @@ i.iconfont.down {
|
||||
|
||||
.herder-user-name {
|
||||
font-size: 12px;
|
||||
background: #fff;
|
||||
padding: 10px 10px;
|
||||
border-radius: 4px 4px 0 0
|
||||
}
|
||||
@ -5857,7 +5875,6 @@ i.iconfont.down {
|
||||
|
||||
.header-user-menu .user-menu-option {
|
||||
padding: 5px 0;
|
||||
background: #fff;
|
||||
border-radius: 0 0 4px 4px;
|
||||
width: 130px
|
||||
}
|
||||
@ -5877,6 +5894,11 @@ i.iconfont.down {
|
||||
background-color: #f1f1f1
|
||||
}
|
||||
|
||||
body.dark .user-menu-option a:hover {
|
||||
color: #3daee9;
|
||||
background-color: #232629
|
||||
}
|
||||
|
||||
.no-logged {
|
||||
font-size: 13px;
|
||||
padding: 15px 10px;
|
||||
@ -5886,7 +5908,7 @@ i.iconfont.down {
|
||||
|
||||
.no-logged a {
|
||||
display: initial;
|
||||
color: #69d2e7;
|
||||
color: #69d2e7 !important;
|
||||
font-size: 14px;
|
||||
padding: 0 5px;
|
||||
text-decoration: underline
|
||||
@ -8277,6 +8299,8 @@ td.hljs-ln-numbers {
|
||||
--widthB: calc(var(--widthA) - 30px);
|
||||
height: var(--widthB);
|
||||
min-height: 99%;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
overflow-y: hidden;
|
||||
overflow-x: auto;
|
||||
height: auto
|
||||
@ -8624,3 +8648,180 @@ h1[id*=toc-head]::before,h2[id*=toc-head]::before,h3[id*=toc-head]::before,h4[id
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.bangumi {
|
||||
margin-top: 40px;
|
||||
}
|
||||
.bangumi .row {
|
||||
display: flex;
|
||||
margin: 0 -10px -20px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.bangumi .column {
|
||||
max-width: 50%;
|
||||
flex: 0 0 50%;
|
||||
margin-bottom: 30px;
|
||||
padding: 0 15px;
|
||||
max-width: 100%;
|
||||
flex: 0 0 100%;
|
||||
transition: .5s;
|
||||
}
|
||||
|
||||
.bangumi-item {
|
||||
height: 0;
|
||||
color: #fff;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
padding-bottom: 130%;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, .1), 0 5px 20px rgba(0, 0, 0, .2);
|
||||
}
|
||||
.bangumi-item:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.bangumi-item img {
|
||||
width: 100%;
|
||||
user-select: none;
|
||||
object-fit: cover;
|
||||
transition: filter 2s;
|
||||
}
|
||||
.bangumi-item .bangumi-info {
|
||||
height: 30%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
padding: 10px;
|
||||
position: absolute;
|
||||
background: rgba(0, 0, 0, .5);
|
||||
transition: transform 1s;
|
||||
transform: translateY(250%);
|
||||
}
|
||||
.bangumi-title {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
margin-top: 0;
|
||||
}
|
||||
.bangumi-summary {
|
||||
height: 65%;
|
||||
white-space: normal;
|
||||
display: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
.bangumi-status-bar {
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
max-width: 100%;
|
||||
position: absolute;
|
||||
background: #dc143c;
|
||||
}
|
||||
.bangumi-status, .bangumi-status p {
|
||||
position: relative;
|
||||
}
|
||||
.bangumi-status {
|
||||
background: rgba(0, 0, 0, .6);
|
||||
}
|
||||
|
||||
@media screen and (min-width: 400px) {
|
||||
.bangumi .column {
|
||||
max-width: 50%;
|
||||
flex: 0 0 50%;
|
||||
}
|
||||
.bangumi-item .bangumi-info{
|
||||
height: 50%;
|
||||
transform: translateY(140%);
|
||||
}
|
||||
.bangumi-title {
|
||||
height: 20%;
|
||||
}
|
||||
}
|
||||
@media screen and (min-width: 600px) {
|
||||
.bangumi .column {
|
||||
max-width: 33.3333%;
|
||||
flex: 0 0 33.3333%;
|
||||
}
|
||||
.bangumi-title {
|
||||
height: 30%;
|
||||
}
|
||||
.bangumi-item .bangumi-info{
|
||||
height: 45%;
|
||||
transform: translateY(140%);
|
||||
}
|
||||
}
|
||||
@media screen and (min-width: 900px) {
|
||||
.bangumi .column {
|
||||
max-width: 25%;
|
||||
flex: 0 0 25%;
|
||||
}
|
||||
.bangumi-item .bangumi-info{
|
||||
height: 100%;
|
||||
transform: translateY(85%);
|
||||
}
|
||||
.bangumi-item:hover .bangumi-info {
|
||||
transform: translateY(0);
|
||||
}
|
||||
.bangumi-item:hover img{
|
||||
filter: blur(3px);
|
||||
}
|
||||
body.dark .bangumi-item:hover img{
|
||||
filter: brightness(0.8) blur(3px);
|
||||
}
|
||||
.bangumi-title {
|
||||
height: 15%;
|
||||
}
|
||||
.bangumi-summary{
|
||||
display: block;
|
||||
}
|
||||
.bangumi-status {
|
||||
height: 10%;
|
||||
}
|
||||
}
|
||||
@media screen and (min-width: 1200px) {
|
||||
.bangumi-item .bangumi-info{
|
||||
height: 75%;
|
||||
transform: translateY(115%);
|
||||
}
|
||||
.bangumi-item:hover .bangumi-info {
|
||||
transform: translateY(35%);
|
||||
}
|
||||
.bangumi-title {
|
||||
height: 10%;
|
||||
}
|
||||
}
|
||||
|
||||
#bangumi-pagination {
|
||||
width: 100%;
|
||||
margin-top: 80px;
|
||||
padding: 20px 0;
|
||||
font-size: 36px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.bangumi-next{
|
||||
font-family: sans-serif;
|
||||
color: #e67474;
|
||||
position: relative;
|
||||
padding: 13px 35px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.bangumi-next:before {
|
||||
content: ' ';
|
||||
background-color: pink;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
position: absolute;
|
||||
transition: all 5s;
|
||||
z-index: -1;
|
||||
}
|
||||
.bangumi-next.loading:before{
|
||||
display: none !important;
|
||||
}
|
||||
.bangumi-next:hover:before {
|
||||
height: 100%;
|
||||
}
|
||||
.bangumi-next i {
|
||||
color: orange;
|
||||
}
|
38
user/page-bangumi.php
Normal file
38
user/page-bangumi.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
Template Name: Bangumi
|
||||
*/
|
||||
get_header();
|
||||
?>
|
||||
<meta name="referrer" content="same-origin">
|
||||
<style>
|
||||
#content,.comments,.site-footer{max-width:1200px;}
|
||||
.comments{display: none}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<?php while(have_posts()) : the_post(); ?>
|
||||
<?php if(akina_option('patternimg') || !get_post_thumbnail_id(get_the_ID())) { ?>
|
||||
<span class="linkss-title"><?php the_title();?></span>
|
||||
<?php } ?>
|
||||
<article <?php post_class("post-item"); ?>>
|
||||
<?php the_content(); ?>
|
||||
<section class="bangumi">
|
||||
<?php if (akina_option('bilibili_id') ):?>
|
||||
<div class="row">
|
||||
<?php
|
||||
$bgm = new \Sakura\API\Bilibili();
|
||||
echo $bgm->get_bgm_items();
|
||||
?>
|
||||
<?php else: ?>
|
||||
<div class="row">
|
||||
<p> <?php _e("Please fill in the Bilibili UID in Sakura Options.","sakura"); ?></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</section>
|
||||
</article>
|
||||
<?php endwhile; ?>
|
||||
|
||||
<?php
|
||||
get_footer();
|
@ -86,7 +86,10 @@ if( !empty($_POST['register_reg']) ) {
|
||||
<?php }else{
|
||||
$loadurl = akina_option('exlogin_url') ? akina_option('exlogin_url') : get_bloginfo('url');
|
||||
?>
|
||||
<script>//window.location.href='<?php echo $loadurl; ?>';</script>
|
||||
<div class="ex-register-title">
|
||||
<h3><?php _e("Success! Redirecting......","sakura")/*注册成功!正在跳转...*/?></h3>
|
||||
</div>
|
||||
<script>window.location.href='<?php echo $loadurl; ?>';</script>
|
||||
<?php } ?>
|
||||
<?php else : ?>
|
||||
<div class="register-close"><p><?php _e("Registration is not open yet.","sakura")/*暂未开放注册。*/?></p></div>
|
||||
|
Loading…
Reference in New Issue
Block a user