💡Руководства

Как экспортировать комментарии Anycomment

Сервис комментариев Anycomment для сайтов на WordPress перестал работать для российских пользователей и многие администраторы сайтов столкнулись с проблемой, как экспортировать комментарии сайта в другой сервис комментирования или базу WP.

Дело в том, что anycomment.io не предлагает скачать файл комментариев или экспортировать их, чтобы перенести уже имеющиеся комментарии на сайте в другой сервис.

Важный момент: система комментариев anycomment имеет как и плагин для WordPress, где комментарии сохраняются в базу WP и экспортировать их можно при помощи SQL‑экспорт таблицы wp_comments, так и облачные комментарии, где сами комментарии хранятся в базе на сервере anycomment.io и подключаются к сайту при помощи скрипта. В обоях методов размещения комментариев (плагин или облачные), нет возможности экспортировать или скачать комментарии уже написанные на сайте. Но, если комментарии на сайте при помощи плагина, то их можно экспортировать при помощи специальных плагинов как "Comments Import & Export", а облачные нет, только по API.

В данном руководстве я собрал скрипт API для PowerShell в Windows, который сделает автоматически экспорт комментариев с сайта WordPress в CSV и json форматов из системы Anycomment.

Как скачать комментарии сайта из сервиса Anycomment в формат CSV и json

1. В первую очередь нужно узнать API ключ Anycomment, а точнее токен. Перейдите в сервис Anycomment и настройки сайта к которому подключены комментарии. В параметрах выберите "API" и нужна первая самая строчка API справа. Не закрывайте данный раздел сервиса, так как удобнее будет копировать API.

узнать API ключ Anycomment

2. Если нажать на "Здесь" выше API ключа, будет документация API создателя Anycomment (https://anycommentio.docs.apiary.io/), где описывается работа системы комментариев. Исходя из данного кода я собрал экспорт комментариев из сайта на WordPress при помощи PowerShell в Windows. Соответственно, создайте текстовый .txt файл на рабочем столе и вставьте ниже скрипт:

param(
[Parameter(Mandatory=$true)]
[string]$Token, # Website API key

[Parameter(Mandatory=$false)]
[string]$PageUrl = "", # Фильтр по URL страницы

[Parameter(Mandatory=$false)]
[int]$AppId = 0, # app_id нужен только для жалоб

[Parameter(Mandatory=$false)]
[string]$OutputDir = ".\AnyCommentExport-$(Get-Date -Format 'yyyyMMdd-HHmmss')"
)

# Создаем папку
if (!(Test-Path $OutputDir)) { New-Item -ItemType Directory -Path $OutputDir | Out-Null }

$BaseUrl = "https://anycomment.io/v1"

# Универсальная функция GET
function Invoke-AnyCommentGet {
param(
[string]$Endpoint,
[hashtable]$QueryParams
)

$query = ($QueryParams.GetEnumerator() | ForEach-Object {
"$($_.Key)=$([uri]::EscapeDataString($_.Value))"
}) -join "&"

$url = "$BaseUrl$Endpoint?$query"

try {
return Invoke-RestMethod -Uri $url -Method GET -ErrorAction Stop
}
catch {
Write-Host "...: $url" -ForegroundColor Red
Write-Host $_.Exception.Message
return $null
}
}

# ================================
# 1. Информация о сайте
# ================================
Write-Host "..." -ForegroundColor Green
$siteInfo = Invoke-AnyCommentGet "/client/app/info" @{ token = $Token }
if ($siteInfo) {
$siteInfo | ConvertTo-Json -Depth 10 | Out-File "$OutputDir\site_info.json"
}

# ================================
# 2. Экспорт комментариев (с пагинацией)
# ================================
Write-Host "..." -ForegroundColor Green

$AllComments = @()
$NextUrl = "$BaseUrl/client/comment?token=$Token&page=1&per-page=50"

if ($PageUrl) {
$NextUrl += "&page_url=$([uri]::EscapeDataString($PageUrl))"
}

while ($NextUrl) {

Write-Host "...: $NextUrl"

try {
$Response = Invoke-RestMethod -Uri $NextUrl -Method GET -ErrorAction Stop
}
catch {
Write-Host "...." -ForegroundColor Red
break
}

$Items = $Response.items
$Users = $Response.users
$Pages = $Response.pages

foreach ($c in $Items) {
$User = $Users["$($c.author_id)"]
$PageInfo = $Pages["$($c.website_page_id)"]

$AllComments += [PSCustomObject]@{
CommentId = $c.id
ParentId = $c.parent_id
Content = ($c.content -replace '<[^>]+>', '')
Created = $c.created_date
Updated = $c.updated_date

AuthorId = $User.id
AuthorName = $User.name
AuthorEmail = $User.email
AuthorUsername= $User.username

PageId = $PageInfo.id
PageTitle = $PageInfo.page_title
PageUrl = $PageInfo.url
}
}

# ....
if ($Response._links.next.href) {
$NextUrl = $Response._links.next.href
}
else {
$NextUrl = $null
}
}

# Сохранение
$AllComments | ConvertTo-Json -Depth 10 | Out-File "$OutputDir\comments_full.json" -Encoding UTF8
$AllComments | Export-Csv "$OutputDir\comments.csv" -NoTypeInformation -Encoding UTF8

Write-Host ".... $($AllComments.Count) ...." -ForegroundColor Green

# ================================
# 3. Экспорт жалоб (complaints) mywebpc.ru
# ================================
if ($AppId -gt 0) {
Write-Host "..." -ForegroundColor Green
$complaints = Invoke-AnyCommentGet "/client/complaint" @{
app_id = $AppId
token = $Token
}

if ($complaints) {
$complaints | ConvertTo-Json -Depth 10 | Out-File "$OutputDir\complaints.json"
}
}

Write-Host "...: $OutputDir" -ForegroundColor Cyan
  • В текстовом документе, куда вставили скрипт, нажмите "Файл" → "Сохранить как".
  • Выберите тип файла: Все файлы (*.*) и напишите имя файла: Export-AnyComment.ps1.
  • Нажмите "Сохранить". Я сохранил по пути "Рабочий стол" в "Новая папка". Можете также, чтобы не путаться далее.
    создать скрипт экспорта anycomment powershell

3. Запустите PowerShell от имени администратора и введите ниже команды, чтобы экспортировать комментарии в файл формата CSV и json:

Set-ExecutionPolicy RemoteSigned
cd "C:\Users\myweb\Desktop\Новая папка\"
.\Export-AnyComment.ps1 -Token "ТВОЙ_API_КЛЮЧ"
  • Первая команда включает разрешение выполнить скрипт один раз.
  • Второй командой указываем путь к файлу ".ps1", где находится сам скрипт.
  • Третей, запускаем скрипт в работу, где указываем свой API токен (первый шаг выше).
    ввод скриптов Export-AnyComment.ps1 для экспорта комментариев

4. Перейдите в папку, где находился файл скрипт Export-AnyComment.ps1, в моем случае "Новая папка", там будут сохраненные уже комментарии из вашего сайта WordPress в формате CSV и json, которые были подключены через Anycomment.

экспортированные комментарии в csv и json