Как сделать импорт комментариев с XML (или JSON)?

Енот
Новичо́к, через «о́»
Заблокирован
Регистрация
15 Янв 2020
Сообщения
110
#1
Перевожу свой старый сайт на CinemaPress, комментарии терять не хочу.
Можно конечно сделать импорт в Disqus, но он сильно затормаживает загрузку сайта, а приделывать свои костыли в виде php скриптов, считаю неправильным, тем более, когда в CMS есть своя быстрая и индексируемая система.
В итоге, перевел свои данные в source.xml с переменными CinemaPress:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<sphinx:docset xmlns:sphinx="http://sphinxsearch.com/">
    <sphinx:document id="1008445">
        <comment_id><![CDATA[1590488480711]]></comment_id>
        <comment_custom><![CDATA[]]></comment_custom>
        <comment_publish><![CDATA[]]></comment_publish>       
        <content_id><![CDATA[0]]></content_id>
        <movie_id><![CDATA[1008445]]></movie_id>
        <season_id><![CDATA[0]]></season_id>
        <episode_id><![CDATA[0]]></episode_id>
        <user_id><![CDATA[]]></user_id>
        <reply_id><![CDATA[0]]></reply_id>
        <comment_confirm><![CDATA[1]]></comment_confirm>
        <type><![CDATA[0]]></type>
        <comment_like><![CDATA[3]]></comment_like>
        <comment_dislike><![CDATA[2]]></comment_dislike>
        <comment_star><![CDATA[0]]></comment_star>
        <comment_text><![CDATA[Фильмец стоящий. Хотя в плане постановки фантастика еще та, но претензий нет - драки очень красивые, сценарий мотивирует. Фильм очень удачный и музыка современная.]]></comment_text>
        <comment_url><![CDATA[/movie/id1008445]]></comment_url>
        <comment_title><![CDATA[Человек-паук: Вдали от дома]]></comment_title>
        <comment_anonymous><![CDATA[]]></comment_anonymous>
        <comment_avatar><![CDATA[/files/avatar/0f5c1ba30f64d21634cfca5af7a06a70.svg]]></comment_avatar>
        <comment_admin><![CDATA[]]></comment_admin>
        <comment_ip><![CDATA[127.0.0.1]]></comment_ip>
        <comment_vote_ip><![CDATA[]]></comment_vote_ip>
        <all_comments><![CDATA[__mydomain_com__]]></all_comments>
    </sphinx:document>
</sphinx:docset>
Но indexer не срабатывает, видимо нужен sphinx.conf, которого в последней версии нет.
docker exec "mydomain_com" indexer "xmlpipe2_mydomain_com" --rotate

Alisa, Что я могу сделать со своей стороны, чтобы это заработало?
 
Регистрация
15 Дек 2017
Сообщения
5,067
#2
Вы таким способом не сможете добавить данные в realtime индекс.
Приведите данные в формат JSON, завтра будет возможность добавлять.
 
Енот
Новичо́к, через «о́»
Заблокирован
Регистрация
15 Янв 2020
Сообщения
110
#3
Вы таким способом не сможете добавить данные в realtime индекс.
Приведите данные в формат JSON, завтра будет возможность добавлять.
Alisa, привет!
Добрался до восстановления комментариев, собрал все в JSON. Подскажи, пожалуйста с какими параметрами запустить CP на добавление их в основной индекс?

Структура файла такая. Все норм?
JSON:
{
  "comments": [
    {
      "movie_id": "1016160",
      "comment_ip": "127.0.0.1",
      "comment_avatar": "/files/avatar/1.png",
      "comment_title": "Фильм 1",
      "comment_url": "/film/1016160",
      "comment_confirm": 1,
      "comment_anonymous": "Имя 1",
      "comment_text": "Текст комментария 1",
      "comment_admin": "",
      "comment_like": 29,
      "comment_dislike": 4,
      "comment_star": 10
    },
    {
      "movie_id": "1236063",
      "comment_ip": "127.0.0.1",
      "comment_avatar": "/files/avatar/2.png",
      "comment_title": "Фильм 2",
      "comment_url": "/film/1236063",
      "comment_confirm": 1,
      "comment_anonymous": "Имя 2",
      "comment_text": "Текст комментария 2",
      "comment_admin": "",
      "comment_like": 42,
      "comment_dislike": 9,
      "comment_star": 8
    }
    ]
}
Ну и еще вопросы:

1. Папка /files/avatar попадает в бекап?

2. "comment_confirm": 1 отвечает за автоматическое подтверждение комментария, если будет 0, то премодерация?

3. Не нашел переменную для указания даты/времени комментария. Как ее правильно добавить в JSON?

4. "comment_url" можно пропускать, CP его поставит?
Я использую вызов ошибки при неточном адресе (в routes/website.js на стр. 214 изменен 301 редирект на return callback(config.l.notFound);)
Это не должно повлиять на comment_url?
 
Последнее редактирование:
Регистрация
15 Дек 2017
Сообщения
5,067
#4
Структура файла такая. Все норм?
Да, хорошо.
1. Папка /files/avatar попадает в бекап?
Да.
2. "comment_confirm": 1 отвечает за автоматическое подтверждение комментария, если будет 0, то премодерация?
Да.
3. Не нашел переменную для указания даты/времени комментария. Как ее правильно добавить в JSON?
"comment_publish": new Date().getTime() + 719528 * 1000 * 60 * 60 * 24
4. "comment_url" можно пропускать, CP его поставит?
Да, пропускайте.
 
Енот
Новичо́к, через «о́»
Заблокирован
Регистрация
15 Янв 2020
Сообщения
110
#5
"comment_publish": new Date().getTime() + 719528 * 1000 * 60 * 60 * 24
Если комменты уже с датами. Можно так задавать?
"comment_publish":"2019-15-21 10:38:10"

А с какими параметрами запускать CinemaPress для добавления их в основной индекс?
И как JSON файл должен называться?

Alisa, спасибо за ответы! :coffee:
 
Регистрация
15 Дек 2017
Сообщения
5,067
#6
Этот JSON должен быть в файле config/update/default.json
И запустить добавление docker exec -it example_com node config/update/default.js

Чтобы такую дату перевести в число миллисекунд для добавления в индекс, нужно так:
"comment_publish": Date.parse("2019-12-21 10:38:10") + 719528 * 1000 * 60 * 60 * 24