39 lines
1.8 KiB
TypeScript
39 lines
1.8 KiB
TypeScript
|
|
import PocketBase from 'pocketbase';
|
|||
|
|
|
|||
|
|
const PB_URL = 'http://127.0.0.1:8090';
|
|||
|
|
const pb = new PocketBase(PB_URL);
|
|||
|
|
|
|||
|
|
const SLUG_TO_NEW_TITLE: Record<string, string> = {
|
|||
|
|
'skrytie-s-mesta-dtp': 'Скрытие с места ДТП: суть статьи',
|
|||
|
|
'prezumpciya-nevinovnosti-voditelya': 'Презумпция невиновности водителя',
|
|||
|
|
'otkaz-ot-podpisi-v-protokole-gibdd': 'Отказ от подписи в протоколе ГИБДД',
|
|||
|
|
'nezavisimaya-ekspertiza-posle-dtp': 'Независимая экспертиза после ДТП',
|
|||
|
|
'lekarstva-za-rulem-lishenie-prav': 'Лишение прав за лекарства',
|
|||
|
|
'lishenie-prav-za-vstrechku-12-15': 'Лишение прав за выезд на встречную',
|
|||
|
|
'kak-priostanovit-protokol-gibdd': 'Как приостановить протокол ГИБДД',
|
|||
|
|
'avtoyurist-surgut-besplatnaya-konsultaciya': 'Юридическая консультация автоюриста',
|
|||
|
|
'kak-pravilno-zapolnyat-admin-protokol-gibdd': 'Как заполнять протокол ГИБДД',
|
|||
|
|
'protocol-ili-postanovlenie': 'Протокол и постановление ГИБДД',
|
|||
|
|
'5-oshibok-voditelya-pri-zapolnenii-protokola-gibdd': '5 ошибок при заполнении протокола',
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
async function main() {
|
|||
|
|
const posts = await pb.collection('posts').getList(1, 500);
|
|||
|
|
|
|||
|
|
for (const post of posts.items) {
|
|||
|
|
const newTitle = SLUG_TO_NEW_TITLE[post.slug as string];
|
|||
|
|
if (!newTitle) continue;
|
|||
|
|
|
|||
|
|
let content = post.content as string;
|
|||
|
|
|
|||
|
|
// Заменяем старый H2 на новый
|
|||
|
|
if (content.includes('<h2>')) {
|
|||
|
|
content = content.replace(/<h2>[^<]+<\/h2>/, `<h2>${newTitle}</h2>`);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
await pb.collection('posts').update(post.id, { content });
|
|||
|
|
console.log(`✓ ${post.slug}: ${newTitle}`);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
main();
|