]*class="[^"]*ck-media__wrapper[^"]*"[^>]*data-oembed-url="([^"]+)"[^>]*>[\s\S]*?<\/div>/gi,
(match, url) => {
if (url) {
count++;
const isNative = match.includes('data-is-native="true"');
const title = decodeURIComponent(url.split('/').pop().split('?')[0]) || '视频';
return createVideoLink(url, title, isNative ? 'native' : 'iframe');
}
return match;
}
);
// 清理空结构
content = content.replace(/
\s*
\s*( |\s)*<\/div>\s*<\/div>/gi, '');
if (content !== originalContent) {
await note.setContent(content);
return { success: true, count };
}
return { success: false, count: 0 };
}, [note.noteId]);
$icon.removeClass('loading');
if (result.success) {
$icon.addClass('success');
api.showMessage(`✅ 已转换 ${result.count} 个视频链接`);
setTimeout(() => {
$icon.removeClass('success');
api.activateNote(note.noteId);
}, 1000);
} else if (result.error) {
api.showMessage('❌ ' + result.error);
} else {
api.showMessage('ℹ️ 没有找到可转换的视频链接');
}
} catch (e) {
console.error('[VideoEmbed]', e);
api.showMessage('❌ 转换出错: ' + e.message);
$('.video-converter-icon').removeClass('loading');
}
}
entitiesReloadedEvent({ loadResults }) {
if (loadResults.isNoteReloaded(this.noteId)) {
setTimeout(() => this.renderVideos(), 300);
}
}
}
module.exports = new VideoEmbedV14();