2020-06-07 01:47:08 +08:00
function loadScript ( url ) {
var el = document . createElement ( 'script' ) ;
el . src = url ;
document . body . appendChild ( el ) ;
}
function xhrGet ( url , callback ) {
var xhr = new XMLHttpRequest ;
xhr . open ( 'GET' , url ) ;
xhr . onload = function ( ) { callback ( xhr . responseText ) } ;
xhr . send ( ) ;
}
2021-10-26 13:57:27 +08:00
location . hash = '' ;
2020-06-07 01:47:08 +08:00
mdui . confirm ( ''
+ '<div class="mdui-typo">'
+ '<p>'
2020-07-08 20:38:53 +08:00
+ '使用本工具<strong>不需要强制关注任何公众号或转发任何内容到朋友圈</strong>。如果你发现有公众号存在类似<strong>“关注○○,发送○○,转发○○到朋友圈领取○○”</strong>的行为,请对此类<strong>诱导行为</strong>进行<strong>投诉</strong>。'
2020-06-07 01:47:08 +08:00
+ '<a href="https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/faq_operation_tmpl#3dot3_3" target="_blank">什么是诱导行为?</a>'
+ '</p>'
2023-03-08 20:28:26 +08:00
+ '<p>请勿以<strong>“关注○○,发送○○获取工具地址”</strong>或类似方式使用本工具为自己的公众号引流,或将这个工具和源代码的链接通过“关注可见”、“登录可见”、“回复可见”等方式隐藏。如果想要推荐的话,请<strong>直接在正文里留下地址或二维码</strong>~ </p>'
+ '<p>本工具生成的截图,仅可用于<strong>个人应付各类强制要求转发朋友圈的情形</strong>,请勿<strong>批量生成截图</strong>或将截图用于<strong>造谣诽谤、微商宣传、灰色产业</strong>等非法或令人反感的用途,请勿用于商业用途,<strong>二次部署请勿删除原作者相关信息</strong>。</p>'
2020-07-08 20:38:53 +08:00
+ '<p>当你生成截图时,你应该确定你可以接受向他人发送该截图将会带来的后果和影响,否则请不要使用本工具并离开当前页面。</p>'
2022-06-22 23:53:00 +08:00
+ '<p>本工具谢绝肖战粉丝(<a href="https://w.url.cn/s/AC2atup" target="_blank">#我是普通人,我讨厌肖战#</a>)和<a href="https://m.weibo.cn/detail/4777390159170190" target="_blank">彳亍的“阿苇岛匿名版”( ^ω^)</a> 用户(请移步 A 岛正统继承者 <a href="https://nmbxd.com/" target="_blank">X 岛</a>)使用。</p>'
2020-06-07 01:47:08 +08:00
+ '</div>' ,
'在开始使用之前……' ,
2020-07-25 13:44:34 +08:00
function ( ) { } ,
2020-06-07 01:47:08 +08:00
function ( ) { location . href = 'about:blank' } ,
{
modal : true ,
closeOnEsc : false ,
history : false ,
}
) ;
2023-02-11 01:24:59 +08:00
if ( navigator . userAgent . toLowerCase ( ) . indexOf ( 'micromessenger' ) !== - 1 ) loadScript ( 'https://cdn.jsdelivr.net/gh/TransparentLC/WechatMomentScreenshot/fuckWechat.min.js' ) ;
2020-06-07 01:47:08 +08:00
2023-02-11 01:24:59 +08:00
if ( ! window . Promise ) loadScript ( 'https://cdn.jsdelivr.net/npm/promise-polyfill/dist/polyfill.min.js' ) ;
2020-06-07 01:47:08 +08:00
var avatarURL = [ ] ;
2023-02-11 01:24:59 +08:00
function loadAvatarSet ( s , n ) {
avatarURL = s . split ( '\n' ) . filter ( Boolean ) . map ( function ( e ) {
return e . trim ( ) ;
} ) ;
if ( n ) mdui . snackbar ( '加载成功,头像库中一共有 ' + avatarURL . length + ' 个头像' ) ;
}
2020-06-07 01:47:08 +08:00
var emoticon = [ ] ;
2023-02-11 01:24:59 +08:00
xhrGet ( 'https://cdn.jsdelivr.net/gh/TransparentLC/WechatMomentScreenshot/emoticon.json' , function ( result ) { emoticon = JSON . parse ( result ) } ) ;
2020-06-07 01:47:08 +08:00
2020-06-20 01:12:17 +08:00
// 读取配置
var configDefault = {
name : 'A 营销号免费广告姬' ,
text : '很实用的教程[微笑]\n需要收集五个赞 谢谢大家啦~( ^ω^)' ,
location : '' ,
app : '' ,
height : 1920 ,
uiWhite : false ,
2021-09-03 11:36:55 +08:00
firstAvatar : false ,
2020-06-20 01:12:17 +08:00
appIcon : false ,
statusIcon : true ,
2023-02-11 01:24:59 +08:00
avatarSet : '' ,
2020-06-20 01:12:17 +08:00
} ;
var config ;
var avatarFile ;
try {
config = JSON . parse ( localStorage . getItem ( 'config' ) ) || { } ;
} catch ( error ) {
config = { } ;
}
for ( var k in configDefault ) {
if ( config [ k ] === undefined ) config [ k ] = configDefault [ k ] ;
}
document . getElementById ( 'configName' ) . value = config . name ;
document . getElementById ( 'configText' ) . value = config . text ;
document . getElementById ( 'configLocation' ) . value = config . location ;
document . getElementById ( 'configApp' ) . value = config . app ;
document . getElementById ( 'configHeight' ) . value = config . height ;
document . getElementById ( 'configUIWhite' ) . checked = config . uiWhite ;
2021-09-03 11:36:55 +08:00
document . getElementById ( 'configFirstAvatar' ) . checked = config . firstAvatar ;
2020-06-20 01:12:17 +08:00
document . getElementById ( 'configTopBarAppIcons' ) . checked = config . appIcon ;
document . getElementById ( 'configTopBarStatusIcons' ) . checked = config . statusIcon ;
document . getElementById ( 'avatar' ) . style . backgroundImage = 'url(' + ( localStorage . getItem ( 'avatar' ) || 'https://ae01.alicdn.com/kf/HTB1yE4fMmzqK1RjSZFp761kSXXal.png' ) + ')' ;
2023-02-11 01:24:59 +08:00
document . getElementById ( 'configAvatarSet' ) . value = config . avatarSet ;
xhrGet ( config . avatarSet || 'https://i.akarin.dev/wms-avatar/avatar-stable.txt' , function ( result ) { loadAvatarSet ( result ) } ) ;
2020-06-20 01:12:17 +08:00
2020-06-07 01:47:08 +08:00
//输入微信文章的链接,通过后端自动获取文章标题和文章封面
function getArticleInfo ( ) {
var requestDialog = new mdui . Dialog ( '#request' ) ;
mdui . prompt ( '公众号文章链接' , function ( value ) {
var xhr = new XMLHttpRequest ;
2022-05-21 22:35:04 +08:00
xhr . open ( 'GET' , 'https://i.akarin.dev/wmsproxy/?url=' + encodeURIComponent ( value ) ) ; //获取标题和封面的服务器
2020-06-07 01:47:08 +08:00
xhr . onreadystatechange = function ( ) {
if ( xhr . readyState == 4 && xhr . status == 200 ) {
var result = JSON . parse ( xhr . responseText ) ;
document . getElementById ( 'requestAction' ) . innerText = 'OK' ;
if ( requestDialog . getState ( ) == 'opening' || requestDialog . getState ( ) == 'opened' ) {
if ( typeof ( result ) != 'undefined' && result . success ) {
document . getElementById ( 'configArticleTitle' ) . value = result . title ;
document . getElementById ( 'articleTitle' ) . innerText = result . title ;
document . getElementById ( 'articleIcon' ) . style . backgroundImage = 'url(\"' + result . cover + '\")' ;
document . getElementById ( 'requestResult' ) . innerText = '获取成功!(ゝ∀・)' ;
document . getElementById ( 'requestResultContent' ) . innerHTML = '标题:' + result . title + '<br>封面:<a target="_blank" href="' + result . cover + '">点此查看</a>' ;
} else {
document . getElementById ( 'requestResult' ) . innerText = '获取失败!( ´ _っ`)' ;
document . getElementById ( 'requestResultContent' ) . innerHTML = '输入的链接是否为微信公众号文章?<br>(链接通常以 <code>https://mp.weixin.qq.com/</code> 作为开头)' ;
}
}
} else {
document . getElementById ( 'requestResult' ) . innerText = '获取失败!( ´ _っ`)' ;
document . getElementById ( 'requestResultContent' ) . innerHTML = '无法连接到服务器。' ;
}
requestDialog . handleUpdate ( ) ;
}
xhr . send ( ) ;
document . getElementById ( 'requestResult' ) . innerText = '' ;
document . getElementById ( 'requestAction' ) . innerText = 'CANCEL' ;
document . getElementById ( 'requestResultContent' ) . innerHTML = '<div class="mdui-valign"><div class="mdui-spinner"></div><span class="mdui-m-l-2">获取中…… (o゚ω゚o)</span></div>' ;
mdui . updateSpinners ( ) ;
requestDialog . open ( ) ;
2020-07-25 13:44:34 +08:00
} , function ( ) { } ) ;
2020-06-07 01:47:08 +08:00
}
//删除所有发表的九宫格图片
function clearMultiImage ( ) {
for ( var i = 1 ; i <= 9 ; i ++ ) {
document . getElementById ( 'image' + i ) . style . backgroundImage = '' ;
}
}
//将时间转换为微信中显示的格式
function getTimeString ( currentDate , specificDate ) {
var cd = new Date ( currentDate . getTime ( ) - currentDate . getTimezoneOffset ( ) * 60 * 1000 - ( currentDate . getTime ( ) - currentDate . getTimezoneOffset ( ) * 60 * 1000 ) % ( 60 * 60 * 24 * 1000 ) ) ;
var sd = new Date ( specificDate . getTime ( ) - specificDate . getTimezoneOffset ( ) * 60 * 1000 - ( specificDate . getTime ( ) - specificDate . getTimezoneOffset ( ) * 60 * 1000 ) % ( 60 * 60 * 24 * 1000 ) ) ;
if ( cd . getTime ( ) == sd . getTime ( ) ) {
return ( ( specificDate . getHours ( ) < 10 ) ? ( '0' + specificDate . getHours ( ) ) : specificDate . getHours ( ) ) + ':' + ( ( specificDate . getMinutes ( ) < 10 ) ? ( '0' + specificDate . getMinutes ( ) ) : specificDate . getMinutes ( ) ) ;
} else if ( cd . getTime ( ) - sd . getTime ( ) == 60 * 60 * 24 * 1000 ) {
return '昨天 ' + ( ( specificDate . getHours ( ) < 10 ) ? ( '0' + specificDate . getHours ( ) ) : specificDate . getHours ( ) ) + ':' + ( ( specificDate . getMinutes ( ) < 10 ) ? ( '0' + specificDate . getMinutes ( ) ) : specificDate . getMinutes ( ) ) ;
} else {
return specificDate . getFullYear ( ) + '年' + ( specificDate . getMonth ( ) + 1 ) + '月' + specificDate . getDate ( ) + '日 ' + ( ( specificDate . getHours ( ) < 10 ) ? ( '0' + specificDate . getHours ( ) ) : specificDate . getHours ( ) ) + ':' + ( ( specificDate . getMinutes ( ) < 10 ) ? ( '0' + specificDate . getMinutes ( ) ) : specificDate . getMinutes ( ) ) ;
}
}
//复制短链接
function copyGitLink ( ) {
document . getElementById ( 'gitLink' ) . style . display = 'block' ;
var range = document . createRange ( ) ;
range . selectNodeContents ( document . getElementById ( 'gitLink' ) ) ;
var selection = document . getSelection ( ) ;
selection . removeAllRanges ( ) ;
selection . addRange ( range ) ;
document . execCommand ( 'Copy' ) ;
selection . removeAllRanges ( ) ;
mdui . snackbar ( {
message : '已复制到剪贴板~( っ*\'ω\'*c)'
} ) ;
document . getElementById ( 'gitLink' ) . style . display = 'none' ;
}
var commentList = [ ] ;
//添加评论
2021-09-11 21:44:26 +08:00
function addComment ( avatar , name , content , date , reply ) {
2020-06-07 01:47:08 +08:00
commentList . push ( {
2021-09-11 21:44:26 +08:00
avatar ,
name ,
content ,
date ,
reply ,
2020-06-07 01:47:08 +08:00
} ) ;
var tr = document . createElement ( 'tr' ) ;
2021-09-11 21:44:26 +08:00
tr . innerHTML = '<th>' + commentList . length + '</th><th>' + name + ( reply ? ( '(回复' + reply + ') ' ) : '' ) + '</th><th>' + content + '</th><th>' + date . toLocaleString ( ) + '</th>' ;
2020-06-07 01:47:08 +08:00
document . getElementById ( 'configCommentList' ) . append ( tr ) ;
}
//删除(最后一条)评论
function removeComment ( ) {
if ( commentList . length ) {
commentList . pop ( ) ;
2020-11-20 12:09:26 +08:00
document . getElementById ( 'configCommentList' ) . removeChild ( document . getElementById ( 'configCommentList' ) . lastChild ) ;
2020-06-07 01:47:08 +08:00
}
}
//替换表情文字和换行符为对应的HTML标签
function emoticonReplace ( text ) {
2021-10-06 11:48:19 +08:00
text = text . replace ( /\r?\n/g , '<br>' ) ;
2020-06-07 01:47:08 +08:00
for ( var i = 0 ; i < emoticon . length ; i ++ ) {
text = text . replace ( new RegExp ( emoticon [ i ] . name , 'g' ) , '<img class="emoticon" src="' + emoticon [ i ] . URL + '">' ) ;
}
return text ;
}
2021-12-07 19:29:52 +08:00
//生成随机姓名, 数据来自于faker.js
//https://github.com/Marak/faker.js/blob/master/lib/locales/zh_CN/name/index.js
function randomName ( ) {
var firstName = [ "王" , "李" , "张" , "刘" , "陈" , "杨" , "黄" , "吴" , "赵" , "周" , "徐" , "孙" , "马" , "朱" , "胡" , "林" , "郭" , "何" , "高" , "罗" , "郑" , "梁" , "谢" , "宋" , "唐" , "许" , "邓" , "冯" , "韩" , "曹" , "曾" , "彭" , "萧" , "蔡" , "潘" , "田" , "董" , "袁" , "于" , "余" , "叶" , "蒋" , "杜" , "苏" , "魏" , "程" , "吕" , "丁" , "沈" , "任" , "姚" , "卢" , "傅" , "钟" , "姜" , "崔" , "谭" , "廖" , "范" , "汪" , "陆" , "金" , "石" , "戴" , "贾" , "韦" , "夏" , "邱" , "方" , "侯" , "邹" , "熊" , "孟" , "秦" , "白" , "江" , "阎" , "薛" , "尹" , "段" , "雷" , "黎" , "史" , "龙" , "陶" , "贺" , "顾" , "毛" , "郝" , "龚" , "邵" , "万" , "钱" , "严" , "赖" , "覃" , "洪" , "武" , "莫" , "孔" ] ;
var lastName = [ "绍齐" , "博文" , "梓晨" , "胤祥" , "瑞霖" , "明哲" , "天翊" , "凯瑞" , "健雄" , "耀杰" , "潇然" , "子涵" , "越彬" , "钰轩" , "智辉" , "致远" , "俊驰" , "雨泽" , "烨磊" , "晟睿" , "文昊" , "修洁" , "黎昕" , "远航" , "旭尧" , "鸿涛" , "伟祺" , "荣轩" , "越泽" , "浩宇" , "瑾瑜" , "皓轩" , "擎苍" , "擎宇" , "志泽" , "子轩" , "睿渊" , "弘文" , "哲瀚" , "雨泽" , "楷瑞" , "建辉" , "晋鹏" , "天磊" , "绍辉" , "泽洋" , "鑫磊" , "鹏煊" , "昊强" , "伟宸" , "博超" , "君浩" , "子骞" , "鹏涛" , "炎彬" , "鹤轩" , "越彬" , "风华" , "靖琪" , "明辉" , "伟诚" , "明轩" , "健柏" , "修杰" , "志泽" , "弘文" , "峻熙" , "嘉懿" , "煜城" , "懿轩" , "烨伟" , "苑博" , "伟泽" , "熠彤" , "鸿煊" , "博涛" , "烨霖" , "烨华" , "煜祺" , "智宸" , "正豪" , "昊然" , "明杰" , "立诚" , "立轩" , "立辉" , "峻熙" , "弘文" , "熠彤" , "鸿煊" , "烨霖" , "哲瀚" , "鑫鹏" , "昊天" , "思聪" , "展鹏" , "笑愚" , "志强" , "炫明" , "雪松" , "思源" , "智渊" , "思淼" , "晓啸" , "天宇" , "浩然" , "文轩" , "鹭洋" , "振家" , "乐驹" , "晓博" , "文博" , "昊焱" , "立果" , "金鑫" , "锦程" , "嘉熙" , "鹏飞" , "子默" , "思远" , "浩轩" , "语堂" , "聪健" , "明" , "文" , "果" , "思" , "鹏" , "驰" , "涛" , "琪" , "浩" , "航" , "彬" ] ;
return firstName [ Math . floor ( Math . random ( ) * firstName . length ) ] + lastName [ Math . floor ( Math . random ( ) * lastName . length ) ] ;
}
//在已选择的单张图片上添加播放视频的图标
function addPlayIcon ( ) {
Promise . all ( [
new Promise ( resolve => {
var img = new Image ;
img . crossOrigin = 'anonymous' ;
img . onload = function ( ) { resolve ( img ) ; } ;
img . src = document . getElementById ( 'image' ) . src ;
} ) ,
new Promise ( resolve => {
var img = new Image ;
img . onload = function ( ) { resolve ( img ) ; } ;
img . src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAZlBMVEUAAAAAAADV1dX19fX4+Pj8/PzNzc2goKBAQEDy8vLLy8u/v7/d3d1qamrr6+vw8PDk5OTd3d3n5+eKiorW1tbw8PDt7e3h4eHm5uba2trq6ur09PTn5+exsbHl5eXi4uLj4+P///+1KpiJAAAAIXRSTlMzAJnY5fIUZkDJjYBKTZvMsqWNWSa6rFuOS7/Ie3NrNkgRMr3KAAAD0UlEQVR42uSX2ZaqMBBFq0EyGcBGRtuh+f+fvHRKBG3xUlTwpc+DspaS7JzUkMDHEonvY1ZqnbZOqdZldvwWi4YiA4iq1lH7VJGuKxIFHcAmYfsfhYnF//oHqMqonaWorPwD5MmmJWiT5V4BbPFodBoEUsoYOsXdQxCkj5tTWG8Ajb5b3MFIeCppDnc26cYLgB1Pn5o9vNTehGMEywbIv0a+GwUzpMYMXzkLQGRDaO9imK14NyRMJpYD2M1t440CklQwvGuXAiS3IbawQNsbQiKWAFzC3vxAwSKpIOqj50IHOPcv7xQsltr1izhTAZLefQksyU2/DSQA0Ve+TwVMqc++Mor5ACK8GncCDzpF10AQ8wCG+cMYvCgOe4J5APn1/zvwpt00AUyu34BHmUkCmJp/C161nSIAxvwMgmmAgjY/naB4DZBQ56cTJK8AzvT56QTnaYBLRI9/ei5ElykAERLyn1EPwimABH+GFYVLTJ4DWDQohhUV4ybbZwACG+cJVtUJm7x4ApBh/4WVhd05+w2QI5qClaXQ6PwXAJ7/JawuifeFRwBLy0B+LtoHAO0yQMEbpFwm6HuAxlEF8BYFbrLmDkBTI5Afh3oMYOk9iN+V7AigcAbA2+QsKAaAnBEBjCjIbwAZLQWk8pMI2Q1gQynC2wgvTPxasOkBKmfIzC6493JljN0o1RWgpBwDguHWyD4YlFcAtyGGAsA3wbiwQwAsAooCwDdBYSlwAAnuABEATWDuQeIA3KOhAfBNMG7ZPwDCjbSnAfBNwGwSHUCFZZgKMJjAKcdVB1D/PByWA7ThHpbo0HaqPwA7sWEALOwiBnsyYBWQVAC+CRIrAWAMAhmAbwJGITRuBWwANIEehQ0cf75SOgDfhLTtdIQa36UC8E3AkWoo+QCDAjJACRqTgA2ASmNiGmjPAG1kqAApA4BngsTwx+OYR4A22lKOZYCf/gAIhq4HEPx5gH/d20EKwjAURVGsGThScdj9L1Twg5MqNDTJ+WlXUGia/Lx3b80n8IuQ/4Z8I+JbMT+M+HHMB5LPSFbcSOaHUj6W+4sJv5rxyym/nvOAIiKah4locoRUPKbzQSWPaiOsfrqw+nJHcX2ewoJXNr60GlzbRXOZq7jk1e3I8nqNFZCtvvcAA0c4PMTCMZ4RINPtL8gUzyiUKy3M5nE+DzR6pNNDrRzr7QQ2LzvB5niDjmj3HHC7x/u94OAVj2aSy/qVXObTfJqKTg1Ur+WI6jWv7OZ1v43weK0VHs+gfP6UXstWei3dpNdYC69a7fds4nMG9TuD/N5B/38D8Sl28Qj+OSkAAAAASUVORK5CYII' ;
} ) ,
] )
. then ( function ( /** @type {HTMLImageElement[]} */ imgs ) {
var sourceImg = imgs [ 0 ] ;
var playIcon = imgs [ 1 ] ;
var canvas = document . createElement ( 'canvas' ) ;
canvas . width = sourceImg . width
canvas . height = sourceImg . height
var ctx = canvas . getContext ( '2d' ) ;
ctx . drawImage ( sourceImg , 0 , 0 )
ctx . drawImage ( playIcon , sourceImg . width / 2 - canvas . width / 4 / 2 , sourceImg . height / 2 - canvas . width / 4 / 2 , canvas . width / 4 , canvas . width / 4 ) ;
canvas . toBlob ( function ( blob ) {
URL . revokeObjectURL ( document . getElementById ( 'image' ) . src ) ;
document . getElementById ( 'image' ) . src = URL . createObjectURL ( blob ) ;
console . log ( URL . createObjectURL ( blob ) ) ;
mdui . snackbar ( '已添加视频播放图标' ) ;
} ) ;
} )
}
2020-06-07 01:47:08 +08:00
//设置界面显示
document . getElementById ( 'configTypeText' ) . onclick = function ( ) {
document . getElementById ( 'configWebsite' ) . style . display = 'none' ;
document . getElementById ( 'configSingleImage' ) . style . display = 'none' ;
document . getElementById ( 'configMultiImage' ) . style . display = 'none' ;
document . getElementById ( 'article' ) . style . display = 'none' ;
document . getElementById ( 'singleImage' ) . style . display = 'none' ;
document . getElementById ( 'multiImage' ) . style . display = 'none' ;
}
document . getElementById ( 'configTypeWebsite' ) . onclick = function ( ) {
document . getElementById ( 'configWebsite' ) . style . display = 'block' ;
document . getElementById ( 'configSingleImage' ) . style . display = 'none' ;
document . getElementById ( 'configMultiImage' ) . style . display = 'none' ;
document . getElementById ( 'article' ) . style . display = 'flex' ;
document . getElementById ( 'singleImage' ) . style . display = 'none' ;
document . getElementById ( 'multiImage' ) . style . display = 'none' ;
}
document . getElementById ( 'configTypeSingleImage' ) . onclick = function ( ) {
document . getElementById ( 'configWebsite' ) . style . display = 'none' ;
document . getElementById ( 'configSingleImage' ) . style . display = 'block' ;
document . getElementById ( 'configMultiImage' ) . style . display = 'none' ;
document . getElementById ( 'article' ) . style . display = 'none' ;
document . getElementById ( 'singleImage' ) . style . display = 'block' ;
document . getElementById ( 'multiImage' ) . style . display = 'none' ;
}
document . getElementById ( 'configTypeMultiImage' ) . onclick = function ( ) {
document . getElementById ( 'configWebsite' ) . style . display = 'none' ;
document . getElementById ( 'configSingleImage' ) . style . display = 'none' ;
document . getElementById ( 'configMultiImage' ) . style . display = 'block' ;
document . getElementById ( 'article' ) . style . display = 'none' ;
document . getElementById ( 'singleImage' ) . style . display = 'none' ;
document . getElementById ( 'multiImage' ) . style . display = 'block' ;
}
//设初始值
var date = new Date ( ) ;
document . getElementById ( 'configScreenshotDate' ) . valueAsDate = date ;
document . getElementById ( 'configScreenshotTimeHour' ) . value = date . getHours ( ) ;
document . getElementById ( 'configScreenshotTimeMinute' ) . value = date . getMinutes ( ) ;
document . getElementById ( 'configPostDate' ) . valueAsDate = date ;
document . getElementById ( 'configPostTimeHour' ) . value = date . getHours ( ) ;
document . getElementById ( 'configPostTimeMinute' ) . value = date . getMinutes ( ) ;
document . getElementById ( 'configCommentDate' ) . valueAsDate = date ;
document . getElementById ( 'configCommentTimeHour' ) . value = date . getHours ( ) ;
document . getElementById ( 'configCommentTimeMinute' ) . value = date . getMinutes ( ) ;
document . getElementById ( 'configLike' ) . value = Math . floor ( 20 * Math . random ( ) ) ;
//检验数值是否合法
document . getElementById ( 'configPostTimeHour' ) . addEventListener ( 'input' , function ( ) {
if ( document . getElementById ( 'configPostTimeHour' ) . value > 23 ) {
document . getElementById ( 'configPostTimeHour' ) . value = 23 ;
} else if ( document . getElementById ( 'configPostTimeHour' ) . value < 0 ) {
document . getElementById ( 'configPostTimeHour' ) . value = 0 ;
}
} )
document . getElementById ( 'configPostTimeMinute' ) . addEventListener ( 'input' , function ( ) {
if ( document . getElementById ( 'configPostTimeMinute' ) . value > 59 ) {
document . getElementById ( 'configPostTimeMinute' ) . value = 59 ;
} else if ( document . getElementById ( 'configPostTimeMinute' ) . value < 0 ) {
document . getElementById ( 'configPostTimeMinute' ) . value = 0 ;
}
} )
document . getElementById ( 'configScreenshotTimeHour' ) . addEventListener ( 'input' , function ( ) {
if ( document . getElementById ( 'configScreenshotTimeHour' ) . value > 23 ) {
document . getElementById ( 'configScreenshotTimeHour' ) . value = 23 ;
} else if ( document . getElementById ( 'configScreenshotTimeHour' ) . value < 0 ) {
document . getElementById ( 'configScreenshotTimeHour' ) . value = 0 ;
}
} )
document . getElementById ( 'configScreenshotTimeMinute' ) . addEventListener ( 'input' , function ( ) {
if ( document . getElementById ( 'configScreenshotTimeMinute' ) . value > 59 ) {
document . getElementById ( 'configScreenshotTimeMinute' ) . value = 59 ;
} else if ( document . getElementById ( 'configScreenshotTimeMinute' ) . value < 0 ) {
document . getElementById ( 'configScreenshotTimeMinute' ) . value = 0 ;
}
} )
document . getElementById ( 'configCommentTimeHour' ) . addEventListener ( 'input' , function ( ) {
if ( document . getElementById ( 'configCommentTimeHour' ) . value > 23 ) {
document . getElementById ( 'configCommentTimeHour' ) . value = 23 ;
} else if ( document . getElementById ( 'configCommentTimeHour' ) . value < 0 ) {
document . getElementById ( 'configCommentTimeHour' ) . value = 0 ;
}
} )
document . getElementById ( 'configCommentTimeMinute' ) . addEventListener ( 'input' , function ( ) {
if ( document . getElementById ( 'configCommentTimeMinute' ) . value > 59 ) {
document . getElementById ( 'configCommentTimeMinute' ) . value = 59 ;
} else if ( document . getElementById ( 'configCommentTimeMinute' ) . value < 0 ) {
document . getElementById ( 'configCommentTimeMinute' ) . value = 0 ;
}
} )
document . getElementById ( 'configLike' ) . addEventListener ( 'input' , function ( ) {
2023-03-18 22:28:21 +08:00
if ( parseInt ( document . getElementById ( 'configLike' ) . value ) < 0 ) {
2020-06-07 01:47:08 +08:00
document . getElementById ( 'configLike' ) . value = 0 ;
}
} )
//上传图片
document . getElementById ( 'configAvatar' ) . addEventListener ( 'change' , function ( ) {
2020-06-20 01:12:17 +08:00
avatarFile = this . files [ 0 ] ;
document . getElementById ( 'avatar' ) . style . backgroundImage = 'url(\"' + URL . createObjectURL ( avatarFile ) + '\")' ;
2020-06-07 01:47:08 +08:00
} ) ;
document . getElementById ( 'configArticleIcon' ) . addEventListener ( 'change' , function ( ) {
2020-06-20 01:12:17 +08:00
document . getElementById ( 'articleIcon' ) . style . backgroundImage = 'url(\"' + URL . createObjectURL ( this . files [ 0 ] ) + '\")' ;
2020-06-07 01:47:08 +08:00
} ) ;
document . getElementById ( 'configSetSingleImage' ) . addEventListener ( 'change' , function ( ) {
2020-06-20 01:12:17 +08:00
document . getElementById ( 'image' ) . src = URL . createObjectURL ( this . files [ 0 ] ) ;
2020-06-07 01:47:08 +08:00
} ) ;
for ( var i = 1 ; i <= 9 ; i ++ ) {
! function ( i ) {
document . getElementById ( 'configSetMultiImage' + i ) . addEventListener ( 'change' , function ( ) {
2020-06-20 01:12:17 +08:00
document . getElementById ( 'image' + i ) . style . backgroundImage = 'url(\"' + URL . createObjectURL ( this . files [ 0 ] ) + '\")' ;
2020-06-07 01:47:08 +08:00
} ) ;
} ( i ) ;
}
document . getElementById ( 'generate' ) . addEventListener ( 'click' , function ( ) {
// 是否使用7.0以上版本白色界面?
var useWhiteUI = document . getElementById ( 'configUIWhite' ) . checked ;
if ( useWhiteUI ) {
document . getElementById ( 'fakeWechatMoment' ) . classList . add ( 'whiteUI' ) ;
document . querySelector ( '#header > img' ) . src = 'mdicons/black_icons/back.svg' ;
document . querySelector ( '.content > img' ) . src = 'mdicons/black_icons/comment.svg' ;
document . querySelector ( '#footer > img' ) . src = 'mdicons/black_icons/emoticon.svg' ;
} else {
document . getElementById ( 'fakeWechatMoment' ) . classList . remove ( 'whiteUI' ) ;
document . querySelector ( '#header > img' ) . src = 'mdicons/white_icons/back.svg' ;
document . querySelector ( '.content > img' ) . src = 'mdicons/white_icons/comment.svg' ;
document . querySelector ( '#footer > img' ) . src = 'mdicons/white_icons/emoticon.svg' ;
}
//设置生成的图片上的各种属性
document . getElementById ( 'name' ) . innerText = document . getElementById ( 'configName' ) . value ;
document . getElementById ( 'text' ) . innerText = document . getElementById ( 'configText' ) . value ;
document . getElementById ( 'articleTitle' ) . innerText = document . getElementById ( 'configArticleTitle' ) . value ;
if ( document . getElementById ( 'configLocation' ) . value == '' ) {
document . getElementById ( 'location' ) . style . display = 'none' ;
} else {
document . getElementById ( 'location' ) . style . display = 'inline' ;
document . getElementById ( 'location' ) . innerText = document . getElementById ( 'configLocation' ) . value ;
}
2021-10-06 11:48:19 +08:00
//表情替换、朋友圈话题和URL变蓝色
document . getElementById ( 'text' ) . innerHTML = emoticonReplace (
document . getElementById ( 'text' ) . innerText
. replace ( /((?:^|\s)#\S+(?:$|\s))/gm , '<span style="color:#576b95">$1</span>' )
. replace ( /(https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&//=]*))/g , '<span style="color:#576b95">$1</span>' )
) ;
console . log ( document . getElementById ( 'text' ) . innerHTML ) ;
2020-06-07 01:47:08 +08:00
//九宫格模式设定
if ( document . getElementById ( 'configTypeMultiImage' ) . checked ) {
for ( var i = 1 ; i <= 9 ; i ++ ) {
document . getElementById ( 'image' + i ) . style . display = 'inline-block' ;
}
var multiImageCount = 0 ;
for ( multiImageCount = 9 ; multiImageCount >= 1 ; multiImageCount -- ) {
if ( document . getElementById ( 'image' + multiImageCount ) . style . backgroundImage != '' ) {
break ;
}
}
//四张图的修正
if ( multiImageCount == 4 ) {
document . getElementById ( 'image5' ) . style . backgroundImage = document . getElementById ( 'image4' ) . style . backgroundImage ;
document . getElementById ( 'image4' ) . style . backgroundImage = document . getElementById ( 'image3' ) . style . backgroundImage ;
document . getElementById ( 'image3' ) . style . backgroundImage = '' ;
multiImageCount = 5 ;
}
for ( var i = multiImageCount + 1 ; i <= 9 ; i ++ ) {
document . getElementById ( 'image' + i ) . style . display = 'none' ;
}
}
//设置顶栏图标
var iconWifi = [ 4 , 4 , 4 , 4 , 4 , 3 , 3 , 3 , 3 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 0 ] ;
var iconSignal = [ 4 , 4 , 4 , 4 , 4 , 3 , 3 , 3 , 3 , 3 , 2 , 2 , 2 , 2 , 1 , 1 , 0 ] ;
var iconBattery = [ 20 , 30 , 50 , 60 , 80 , 90 , 'full' ] ;
if ( document . getElementById ( 'configTopBarStatusIcons' ) . checked ) {
document . getElementById ( 'topBarIconWifi' ) . src = 'mdicons/' + ( useWhiteUI ? 'black_icons' : 'white_icons' ) + '/ic_signal_wifi_' + iconWifi [ Math . floor ( Math . random ( ) * iconWifi . length ) ] + '_bar_48px.svg' ;
document . getElementById ( 'topBarIconSignal' ) . src = 'mdicons/' + ( useWhiteUI ? 'black_icons' : 'white_icons' ) + '/ic_signal_cellular_' + iconWifi [ Math . floor ( Math . random ( ) * iconSignal . length ) ] + '_bar_48px.svg' ;
document . getElementById ( 'topBarIconBattery' ) . src = 'mdicons/' + ( useWhiteUI ? 'black_icons' : 'white_icons' ) + '/ic_battery_' + ( ( Math . random ( ) > 0.75 ) ? 'charging_' : '' ) + iconBattery [ Math . floor ( Math . random ( ) * iconBattery . length ) ] + '_48px.svg' ;
} else {
document . getElementById ( 'topBarIconWifi' ) . src = 'mdicons/' + ( useWhiteUI ? 'black_icons' : 'white_icons' ) + '/ic_signal_wifi_4_bar_48px.svg' ;
document . getElementById ( 'topBarIconSignal' ) . src = 'mdicons/' + ( useWhiteUI ? 'black_icons' : 'white_icons' ) + '/ic_signal_cellular_4_bar_48px.svg' ;
document . getElementById ( 'topBarIconBattery' ) . src = 'mdicons/' + ( useWhiteUI ? 'black_icons' : 'white_icons' ) + '/ic_battery_full_48px.svg' ;
}
var iconApp = [ [ 'qq' , . 5 ] , [ 'wechat' , . 5 ] , [ 'cloudmusic' , . 25 ] , [ 'coolapk' , . 15 ] , [ 'tieba' , . 15 ] , [ 'acfun' , . 15 ] ] ;
iconApp . sort ( function ( ) { return ( Math . random ( ) > . 5 ) ? 1 : - 1 } ) ;
document . getElementById ( 'topBarAppIcons' ) . innerHTML = '' ;
if ( document . getElementById ( 'configTopBarAppIcons' ) . checked ) {
for ( var i = 0 ; i < iconApp . length ; i ++ ) {
if ( Math . random ( ) < iconApp [ i ] [ 1 ] ) {
document . getElementById ( 'topBarAppIcons' ) . innerHTML += '<img class="topBarIcon" src="mdicons/' + ( useWhiteUI ? 'black_icons' : 'white_icons' ) + '/app_' + iconApp [ i ] [ 0 ] + '.svg">' ;
}
}
}
//设置时间
var configPostDate = document . getElementById ( 'configPostDate' ) . valueAsDate ;
configPostDate . setHours ( document . getElementById ( 'configPostTimeHour' ) . value ) ;
configPostDate . setMinutes ( document . getElementById ( 'configPostTimeMinute' ) . value ) ;
var configScreenshotDate = document . getElementById ( 'configScreenshotDate' ) . valueAsDate ;
configScreenshotDate . setHours ( document . getElementById ( 'configScreenshotTimeHour' ) . value ) ;
configScreenshotDate . setMinutes ( document . getElementById ( 'configScreenshotTimeMinute' ) . value ) ;
2021-12-07 19:29:52 +08:00
document . getElementById ( 'time' ) . innerHTML = getTimeString ( configScreenshotDate , configPostDate ) ;
2020-06-07 01:47:08 +08:00
document . getElementById ( 'topBarTime' ) . innerText = ( ( document . getElementById ( 'configScreenshotTimeHour' ) . value < 10 ) ? ( '0' + document . getElementById ( 'configScreenshotTimeHour' ) . value ) : document . getElementById ( 'configScreenshotTimeHour' ) . value ) + ':' + ( ( document . getElementById ( 'configScreenshotTimeMinute' ) . value < 10 ) ? ( '0' + document . getElementById ( 'configScreenshotTimeMinute' ) . value ) : document . getElementById ( 'configScreenshotTimeMinute' ) . value ) ;
2021-12-07 19:29:52 +08:00
if ( document . getElementById ( 'configApp' ) ) {
if ( document . getElementById ( 'configApp' ) . value . match ( /视频号 *· *(.+)/g ) ) {
document . getElementById ( 'time' ) . innerHTML += ' <span style="color:#576b95">视频号 · ' + /视频号 *· *(.+)/g . exec ( document . getElementById ( 'configApp' ) . value ) [ 1 ] + '</span>' ;
} else {
document . getElementById ( 'time' ) . innerHTML += ' ' + document . getElementById ( 'configApp' ) . value ;
}
2020-06-07 01:47:08 +08:00
}
//加入点赞头像
var avatarSource = avatarURL . concat ( ) ;
2021-09-03 11:36:55 +08:00
var avatarUsed ;
2020-06-07 01:47:08 +08:00
document . getElementById ( 'likeAvatarList' ) . innerHTML = '' ;
2023-03-18 22:28:21 +08:00
for ( var i = 0 ; i < parseInt ( document . getElementById ( 'configLike' ) . value ) ; i ++ ) {
2021-09-03 11:36:55 +08:00
if ( i === 0 && document . getElementById ( 'configFirstAvatar' ) . checked ) {
avatarUsed = document . getElementById ( 'avatar' ) . style . backgroundImage . replace ( /url\("(.+?)"\)/g , '$1' ) ;
} else {
if ( avatarSource . length <= 0 ) {
avatarSource = avatarURL . concat ( ) ;
}
var avatarUsedIndex = Math . floor ( Math . random ( ) * avatarSource . length ) ;
avatarUsed = avatarSource [ avatarUsedIndex ] ;
avatarSource . splice ( avatarUsedIndex , 1 ) ;
2020-06-07 01:47:08 +08:00
}
var div = document . createElement ( 'div' ) ;
div . setAttribute ( 'class' , 'likeAvatar squareImage' ) ;
2021-09-03 11:36:55 +08:00
div . setAttribute ( 'style' , 'background-image:url(\"' + avatarUsed + '\")' ) ;
2020-06-07 01:47:08 +08:00
document . getElementById ( 'likeAvatarList' ) . appendChild ( div ) ;
}
//加入评论区
document . getElementById ( 'commentList' ) . innerHTML = '' ;
if ( document . getElementById ( 'configShowComment' ) . checked && commentList . length ) {
document . getElementById ( 'comment' ) . style . display = 'block' ;
for ( var i = 0 ; i < commentList . length ; i ++ ) {
2021-09-11 21:44:26 +08:00
var comment = commentList [ i ] ;
2020-06-07 01:47:08 +08:00
document . getElementById ( 'commentList' ) . innerHTML += ''
+ '<div class="commentItem">'
2021-09-11 21:44:26 +08:00
+ '<div class="commentAvatar squareImage" style="background-image: url(' + comment . avatar + ');"></div>'
2020-06-07 01:47:08 +08:00
+ '<div class="content">'
2021-09-11 21:44:26 +08:00
+ '<span class="commentName">' + comment . name + '</span>'
+ '<span class="commentTime">' + getTimeString ( configScreenshotDate , comment . date ) + '</span>'
+ '<div class="commentText">' + ( comment . reply ? ( '回复<span style="color:#576b95">' + comment . reply + '</span>: ' ) : '' ) + emoticonReplace ( comment . content ) + '</div>'
2020-06-07 01:47:08 +08:00
+ '</div>'
+ '</div>' ;
}
} else {
document . getElementById ( 'comment' ) . style . display = 'none' ;
}
//显示用于生成图片的div
var height = Number ( document . getElementById ( 'configHeight' ) . value ) ;
document . getElementById ( 'fakeWechatMoment' ) . style . display = 'block' ;
document . getElementById ( 'fakeWechatMoment' ) . style . width = '1080px' ;
document . getElementById ( 'fakeWechatMoment' ) . style . height = '' ;
document . getElementById ( 'fakeWechatMoment' ) . style . height = ( ( window . getComputedStyle ( document . getElementById ( 'fakeWechatMoment' ) ) . height . replace ( 'px' , '' ) > height ) ? window . getComputedStyle ( document . getElementById ( 'fakeWechatMoment' ) ) . height . replace ( 'px' , '' ) : height ) + 'px' ;
//点赞数为0时隐藏点赞区
2023-03-18 22:28:21 +08:00
document . getElementById ( 'like' ) . style . display = parseInt ( document . getElementById ( 'configLike' ) . value ) ? 'block' : 'none' ;
2020-06-07 01:47:08 +08:00
//修正底部位置
var offset = Number ( window . getComputedStyle ( document . getElementById ( 'topBar' ) ) . height . replace ( 'px' , '' ) ) + Number ( window . getComputedStyle ( document . getElementById ( 'header' ) ) . height . replace ( 'px' , '' ) ) + Number ( window . getComputedStyle ( document . getElementById ( 'main' ) ) . height . replace ( 'px' , '' ) ) ;
document . getElementById ( 'footer' ) . style . bottom = ( ( offset < height - Number ( window . getComputedStyle ( document . getElementById ( 'footer' ) ) . height . replace ( 'px' , '' ) ) ) ? ( - height + Number ( window . getComputedStyle ( document . getElementById ( 'footer' ) ) . height . replace ( 'px' , '' ) ) + offset ) : 0 ) + 'px' ;
//按钮上的提示
document . getElementById ( 'generate' ) . setAttribute ( 'disabled' , '' ) ;
document . getElementById ( 'generate' ) . innerText = '生成中...' ;
2023-04-21 11:30:06 +08:00
// 就算添加了对删除原作者信息和源代码链接的检测还是有人尝试把它改掉,嗯……
// 用javascript-obfuscator对这部分代码加密了, 但是仍然是防君子不防小人
// 如果你只会下载jsDelivr压缩后的JS, 你也看不到下面这些注释掉的未加密的代码
// 如果你想到了可以在GitHub上找到这些未加密代码, 我相信你也不会做出删除原作者信息这样的事情
( function ( ) {
var _0xc9cc35 = _0x5c91 ; ( function ( _0x1dfca0 , _0x36de24 ) { var _0x203f98 = _0x5c91 , _0x3dc4f2 = _0x1dfca0 ( ) ; while ( ! ! [ ] ) { try { var _0x4889b0 = parseInt ( _0x203f98 ( '0x117' , '2g*u' ) ) / 0x1 * ( parseInt ( _0x203f98 ( '0xb9' , '2g*u' ) ) / 0x2 ) + parseInt ( _0x203f98 ( '0xd1' , 'nzy3' ) ) / 0x3 * ( parseInt ( _0x203f98 ( '0x10a' , 'C%Om' ) ) / 0x4 ) + parseInt ( _0x203f98 ( '0xb2' , 'Ldy4' ) ) / 0x5 * ( - parseInt ( _0x203f98 ( '0xb0' , 'xpNb' ) ) / 0x6 ) + - parseInt ( _0x203f98 ( '0xff' , 'NMDW' ) ) / 0x7 * ( - parseInt ( _0x203f98 ( '0xd8' , 'F&2&' ) ) / 0x8 ) + - parseInt ( _0x203f98 ( '0x111' , 'pDU9' ) ) / 0x9 + parseInt ( _0x203f98 ( '0xe7' , '7ggT' ) ) / 0xa * ( - parseInt ( _0x203f98 ( '0xe0' , 'RJ4w' ) ) / 0xb ) + - parseInt ( _0x203f98 ( '0xf7' , 'y92n' ) ) / 0xc ; if ( _0x4889b0 === _0x36de24 ) break ; else _0x3dc4f2 [ 'push' ] ( _0x3dc4f2 [ 'shift' ] ( ) ) ; } catch ( _0x933324 ) { _0x3dc4f2 [ 'push' ] ( _0x3dc4f2 [ 'shift' ] ( ) ) ; } } } ( _0x4e7b , 0x31cd1 ) , ( document [ _0xc9cc35 ( '0x106' , '#&]y' ) ] ( _0xc9cc35 ( '0x105' , '%uur' ) ) [ _0xc9cc35 ( '0xf6' , 'NMDW' ) ] [ _0xc9cc35 ( '0xf0' , 'xpNb' ) ] ( _0xc9cc35 ( '0xba' , '7B0K' ) ) === - 0x1 || document [ _0xc9cc35 ( '0xfe' , 'Ldy4' ) ] ( _0xc9cc35 ( '0xf5' , 'F&2&' ) ) [ _0xc9cc35 ( '0xdf' , 'mXbQ' ) ] !== _0xc9cc35 ( '0x110' , 'Ldy4' ) || document [ _0xc9cc35 ( '0xd2' , 'IBTT' ) ] ( _0xc9cc35 ( '0x119' , 'w#Ad' ) ) [ _0xc9cc35 ( '0xd4' , 'xPl0' ) ] !== _0xc9cc35 ( '0xeb' , 'hOl7' ) ? Promise [ _0xc9cc35 ( '0xe5' , 'dWQ)' ) ] ( _0xc9cc35 ( '0xb1' , 'A0l2' ) ) : html2canvas ( document [ _0xc9cc35 ( '0xcd' , 'Jt)2' ) ] ( _0xc9cc35 ( '0xc2' , 'Q(3z' ) ) , { 'useCORS' : ! ! [ ] , 'scale' : 0x1 } ) ) [ _0xc9cc35 ( '0x115' , '7B0K' ) ] ( function ( _0x4a2609 ) { var _0x4df41e = _0xc9cc35 , _0x2fdf5b = _0x4a2609 [ _0x4df41e ( '0x103' , 'NMDW' ) ] ( ) ; document [ _0x4df41e ( '0xbb' , '(gM@' ) ] ( _0x4df41e ( '0xcb' , 'VZwM' ) ) [ _0x4df41e ( '0xb7' , 'F&2&' ) ] = _0x2fdf5b , document [ _0x4df41e ( '0xc9' , '7ggT' ) ] ( _0x4df41e ( '0xbd' , 'y92n' ) ) [ _0x4df41e ( '0xbf' , 'm782' ) ] ( _0x4df41e ( '0xcf' , '2g*u' ) , _0x2fdf5b ) , document [ _0x4df41e ( '0xd6' , 'V9zD' ) ] ( _0x4df41e ( '0xc8' , 'F&2&' ) ) [ _0x4df41e ( '0xf8' , 'lbu7' ) ] ( _0x4df41e ( '0x118' , 'RJ4w' ) , + new Date ( ) + _0x4df41e ( '0xf4' , '2g*u' ) ) , new mdui [ ( _0x4df41e ( '0x10b' , 'PllC' ) ) ] ( document [ _0x4df41e ( '0x11b' , '&]Uy' ) ] ( _0x4df41e ( '0x104' , 'ea@#' ) ) ) [ _0x4df41e ( '0xf1' , 'xpNb' ) ] ( ) ; var _0x308abd = { 'name' : document [ _0x4df41e ( '0xc1' , 'C%Om' ) ] ( _0x4df41e ( '0xce' , '5ZQ9' ) ) [ _0x4df41e ( '0x108' , '8qD7' ) ] , 'text' : document [ _0x4df41e ( '0xf2' , 'nzy3' ) ] ( _0x4df41e ( '0x113' , '8qD7' ) ) [ _0x4df41e ( '0xd9' , 'VZwM' ) ] , 'location' : document [ _0x4df41e ( '0xe9' , '[mUa' ) ] ( _0x4df41e ( '0xe4' , 'mXfd' ) ) [ _0x4df41e ( '0xfc' , 'PllC' ) ] , 'app' : document [ _0x4df41e ( '0xb8' , 'RJ4w' ) ] ( _0x4df41e ( '0xc0' , 'vQxc' ) ) [ _0x4df41e ( '0x100' , 'hOl7' ) ] , 'height' : parseInt ( document [ _0x4df41e ( '0xe3' , 'mXbQ' ) ] ( _0x4df41e ( '0xfa' , '*@Y)' ) ) [ _0x4df41e ( '0x100' , 'hOl7' ) ] ) , 'uiWhite' : document [ _0x4df41e ( '0xca' , '2g*u' ) ] ( _0x4df41e ( '0xb3' , '2g*u' ) ) [ _0x4df41e ( '0xc3' , 'pDU9' ) ] , 'appIcon' : document [ _0x4df41e ( '0xc6' , 'VZwM' ) ] ( _0x4df41e ( '0xd7' , 'y92n' ) ) [ _0x4df41e ( '0xdd' , 'ea@#' ) ] , 'statusIcon' : document [ _0x4df41e ( '0xec' , '5ZQ9' ) ] ( _0x4df41e ( '0xee' , '2g*u' ) ) [ _0x4df41e ( '0xb4' , 'k(vB' ) ] , 'avatarSet' : document [ _0x4df41e ( '0xbb' , '(gM@' ) ] ( _0x4df41e ( '0xb5' , '!Y5B' ) ) [ _0x4df41e ( '0xf3' , 'xpNb' ) ] } ; localStorage [ _0x4df41e ( '0xc4' , 'hOl7' ) ] ( _0x4df41e ( '0x107' , 'IBTT' ) , JSON [ _0x4df41e ( '0x109' , 'C%Om' ) ] ( _0x308abd ) ) ; if ( avatarFile ) { var _0x2e108c = new FileReader ( ) ; _0x2e108c [ _0x4df41e ( '0xbe' , 'w#Ad' ) ] ( avatarFile ) , _0x2e108c [ _0x4df41e ( '0x102' , 'C%Om' ) ] = function ( ) { var _0x4d262d = _0x4df41e ; localStorage [ _0x4d262d ( '0x11a' , '8qD7' ) ] ( _0x4d262d ( '0xb6' , '7B0K' ) , this [ _0x4d262d ( '0x11c' , 'VZX(' ) ] ) ; } ; } } ) [ _0xc9cc35 ( '0xf9' , '#&]y' ) ] ( function ( _0x5a671d ) { var _0x44098b = _0xc9cc35 ; mdui [ _0x44098b ( '0xe6' , '!Y5B' ) ] ( '' + _0x44098b ( '0xde' , 'IBTT' ) + _0x44098b ( '0xd0' , 'nzy3' ) + _0x5a671d + _0x44098b ( '0xdb' , 'VZX(' ) + ( _0x5a671d [ _0x44098b ( '0xe1' , '(gM@' ) ] ? _0x44098b ( '0xfb' , 'hOl7' ) + _0x5a671d [ _0x44098b ( '0xc5' , 'mXbQ' ) ] + _0x44098b ( '0x116' , '8qD7' ) : '' ) + _0x44098b ( '0x101' , 'VZX(' ) + _0x44098b ( '0xe2' , 'PllC' ) , _0x44098b ( '0xcc' , 'C%Om' ) ) ; } ) [ _0xc9cc35 ( '0xd3' , '8B(P' ) ] ( function ( ) { var _0x149d02 = _0xc9cc35 ; document [ _0x149d02 ( '0x11d' , '*@Y)' ) ] ( _0x149d02 ( '0x10d' , 'xPl0' ) ) [ _0x149d02 ( '0x10c' , 'lbu7' ) ] ( _0x149d02 ( '0xe8' , 'y92n' ) ) , document [ _0x149d02 ( '0xbc' , '8qD7' ) ] ( _0x149d02 ( '0xfd' , 'lbu7' ) ) [ _0x149d02 ( '0x10e' , '7B0K' ) ] = '生成' ; } ) ) ; function _0x5c91 ( _0x4f9be5 , _0x4425e9 ) { var _0x4e7bf4 = _0x4e7b ( ) ; return _0x5c91 = function ( _0x5c91ec , _0xeef53e ) { _0x5c91ec = _0x5c91ec - 0xb0 ; var _0x50388f = _0x4e7bf4 [ _0x5c91ec ] ; if ( _0x5c91 [ 'cfdUIS' ] === undefined )
} ) ( ) ;
// ((
// document.getElementById('aboutFooter').innerText.indexOf('✨小透明・宸✨') === -1 ||
// document.getElementById('aboutFooterBadge').href !== 'https://github.com/TransparentLC/WechatMomentScreenshot' ||
// document.getElementById('sourceRepo').href !== 'https://github.com/TransparentLC/WechatMomentScreenshot'
// ) ?
// Promise.reject('<p>如一开始的说明所述,请不要删除原作者相关信息和右上角的指向源代码的链接。</p><p>既然你已经动手这么做了,去掉检测这个的代码对你来说应该也是很简单的事情,但是这样很没有互联网分享精神哦?</p><p>如果你仍然要这么做的话,毕竟我不可能阻止你使用一份开源的代码,但是我至少可以说一声:<strong>Shame on you!</strong></p>') :
// html2canvas(document.getElementById('fakeWechatMoment'), {
// useCORS: true,
// scale: 1,
// })
// ).then(function (canvas) {
// var dURL = canvas.toDataURL();
// document.getElementById('generated').src = dURL;
// document.getElementById('save').setAttribute('href', dURL);
// document.getElementById('save').setAttribute('download', (+new Date) + '.png');
// (new mdui.Dialog(document.getElementById('generatedPopup'))).open();
// // 保存配置
// var config = {
// name: document.getElementById('configName').value,
// text: document.getElementById('configText').value,
// location: document.getElementById('configLocation').value,
// app: document.getElementById('configApp').value,
// height: parseInt(document.getElementById('configHeight').value),
// uiWhite: document.getElementById('configUIWhite').checked,
// appIcon: document.getElementById('configTopBarAppIcons').checked,
// statusIcon: document.getElementById('configTopBarStatusIcons').checked,
// avatarSet: document.getElementById('configAvatarSet').value,
// };
// localStorage.setItem('config', JSON.stringify(config));
// if (avatarFile) {
// var reader = new FileReader;
// reader.readAsDataURL(avatarFile);
// reader.onload = function () {
// localStorage.setItem('avatar', this.result);
// };
// }
// }).catch(function (error) {
// mdui.alert(''
// + '<div class="mdui-typo">'
// + '<p>' + error + '</p>'
// + (error.stack ? ('<pre>' + error.stack + '</pre>') : '')
// + '<p>你可以通过 <a href="https://github.com/TransparentLC/WechatMomentScreenshot/issues" target="_blank">Issue</a> 向作者反馈 BUG~ </p>'
// + '</div>',
// '生成失败'
// );
// }).finally(function () {
// // document.getElementById('fakeWechatMoment').style.display = 'none';
// document.getElementById('generate').removeAttribute('disabled');
// document.getElementById('generate').innerText = '生成';
// });
2020-06-07 01:47:08 +08:00
} ) ;