下载地址:https://www.pan38.com/share.php?code=JCnzE 提取码:8888 【仅供学习】
完整的朋友圈虚拟点赞评论生成器,包含数据生成逻辑和UI交互界面。核心功能包括随机生成点赞和评论数据、统计功能以及数据导出。
/**
- 朋友圈虚拟点赞生成器
- 功能:模拟生成朋友圈点赞和评论数据
*/
class VirtualLikeGenerator {
constructor(config = {}) {
// 默认配置
this.defaultConfig = {
maxLikes: 1000, // 最大点赞数
maxComments: 500, // 最大评论数
likeProbability: 0.7, // 点赞概率
commentProbability: 0.3, // 评论概率
names: ['张三', '李四', '王五', '赵六', '钱七'], // 名字库
commentTemplates: [ // 评论模板库
'太棒了!',
'好羡慕啊~',
'这是哪里?',
'求带!',
'666',
'已转发',
'点赞支持'
],
emojis: ['❤️', '👍', '😊', '😂', '🤔'], // 表情库
timeRange: { // 时间范围(天)
min: 1,
max: 30
}
};
// 合并配置
this.config = {...this.defaultConfig, ...config};
// 初始化数据
this.initData();
}
// 初始化数据
initData() {
this.likes = [];
this.comments = [];
this.generatedData = [];
this.statistics = {
totalLikes: 0,
totalComments: 0,
likeNames: new Set(),
commentNames: new Set()
};
}
// 生成随机整数
getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// 生成随机日期
getRandomDate() {
const days = this.getRandomInt(
this.config.timeRange.min,
this.config.timeRange.max
);
const date = new Date();
date.setDate(date.getDate() - days);
return date;
}
// 生成随机名字
getRandomName() {
return this.config.names[
this.getRandomInt(0, this.config.names.length - 1)
];
}
// 生成随机评论内容
getRandomComment() {
const template = this.config.commentTemplates[
this.getRandomInt(0, this.config.commentTemplates.length - 1)
];
const emoji = Math.random() > 0.5 ?
this.config.emojis[
this.getRandomInt(0, this.config.emojis.length - 1)
] : '';
return template + emoji;
}
// 生成点赞数据
generateLike() {
const name = this.getRandomName();
const time = this.getRandomDate();
this.likes.push({
name,
time,
type: 'like'
});
this.statistics.totalLikes++;
this.statistics.likeNames.add(name);
}
// 生成评论数据
generateComment() {
const name = this.getRandomName();
const time = this.getRandomDate();
const content = this.getRandomComment();
this.comments.push({
name,
time,
content,
type: 'comment'
});
this.statistics.totalComments++;
this.statistics.commentNames.add(name);
}
// 批量生成数据
generateBatch(count = 100) {
this.initData();
for (let i = 0; i < count; i++) {
if (Math.random() < this.config.likeProbability) {
this.generateLike();
}
if (Math.random() < this.config.commentProbability) {
this.generateComment();
}
}
// 合并数据并按时间排序
this.generatedData = [...this.likes, ...this.comments].sort(
(a, b) => b.time - a.time
);
return this.generatedData;
}
// 获取统计数据
getStatistics() {
return {
...this.statistics,
uniqueLikeNames: this.statistics.likeNames.size,
uniqueCommentNames: this.statistics.commentNames.size
};
}
// 导出为JSON格式
exportToJSON() {
return JSON.stringify({
data: this.generatedData,
statistics: this.getStatistics(),
config: this.config
}, null, 2);
}
}
// UI交互类
class VirtualLikeUI {
constructor(containerId, generator) {
this.container = document.getElementById(containerId);
this.generator = generator;
this.initUI();
}
initUI() {
this.container.innerHTML = <div class="virtual-like-container"> <h2>朋友圈虚拟点赞生成器</h2> <div class="control-panel"> <div class="form-group"> <label>生成数量:</label> <input type="number" id="generateCount" value="100" min="10" max="1000"> </div> <div class="form-group"> <label>点赞概率:</label> <input type="range" id="likeProb" min="0" max="1" step="0.1" value="0.7"> <span id="likeProbValue">70%</span> </div> <div class="form-group"> <label>评论概率:</label> <input type="range" id="commentProb" min="0" max="1" step="0.1" value="0.3"> <span id="commentProbValue">30%</span> </div> <button id="generateBtn">生成数据</button> <button id="exportBtn">导出JSON</button> </div> <div class="result-panel"> <div class="statistics"> <h3>统计数据</h3> <div id="statsContainer"></div> </div> <div class="data-preview"> <h3>数据预览</h3> <div id="dataContainer"></div> </div> </div> </div>;
this.bindEvents();
}
bindEvents() {
document.getElementById('likeProb').addEventListener('input', (e) => {
document.getElementById('likeProbValue').textContent =
${Math.round(e.target.value * 100)}%;
this.generator.config.likeProbability = parseFloat(e.target.value);
});
document.getElementById('commentProb').addEventListener('input', (e) => {
document.getElementById('commentProbValue').textContent =
`${Math.round(e.target.value * 100)}%`;
this.generator.config.commentProbability = parseFloat(e.target.value);
});
document.getElementById('generateBtn').addEventListener('click', () => {
const count = parseInt(document.getElementById('generateCount').value);
this.generateData(count);
});
document.getElementById('exportBtn').addEventListener('click', () => {
this.exportData();
});
}
generateData(count) {
const data = this.generator.generateBatch(count);
this.displayStats();
this.displayData(data);
}
displayStats() {
const stats = this.generator.getStatistics();
document.getElementById('statsContainer').innerHTML = <p>总点赞数: ${stats.totalLikes}</p> <p>总评论数: ${stats.totalComments}</p> <p>点赞人数: ${stats.uniqueLikeNames}</p> <p>评论人数: ${stats.uniqueCommentNames}</p>;
}
displayData(data) {
const previewCount = Math.min(20, data.length);
let html = '
- ';
for (let i = 0; i < previewCount; i++) { const item = data[i]; const timeStr = item.time.toLocaleString(); if (item.type === 'like') { html += `<li>${timeStr} - ${item.name} 点赞了</li>`; } else { html += `<li>${timeStr} - ${item.name} 评论: ${item.content}</li>`; } } if (data.length > previewCount) { html += `<li>...还有${data.length - previewCount}条未显示</li>`; } html += '</ul>'; document.getElementById('dataContainer').innerHTML = html;}
exportData() {
const json = this.generator.exportToJSON();
const blob = new Blob([json], {type: 'application/json'});
const url = URL.createObjectURL(blob);const a = document.createElement('a'); a.href = url; a.download = 'virtual_likes_comments.json'; a.click(); URL.revokeObjectURL(url);}
}// 示例用法
document.addEventListener('DOMContentLoaded', () => {
const generator = new VirtualLikeGenerator();
const ui = new VirtualLikeUI('app', generator);
});