Есть ли способ выполнить «массовое удаление» неиспользуемых страниц и изображений в Mediawiki. deleteArchivedFiles.php работает не так, как ожидалось

#mediawiki

#mediawiki

Вопрос:

Версия Mediawiki: 1.34

Версия PHP: 7.3

Тип базы данных: 10.3.24-MariaDB — Сервер MariaDB

Есть ли способ выполнить «массовое удаление» неиспользуемых страниц и изображений. deleteArchivedFiles.php работает не так, как ожидалось.

Комментарии:

1. Что именно вы подразумеваете под «неиспользуемым»?

2. На специальных страницах присутствуют неиспользуемые файлы, которые я хочу массово удалить. Также я хочу, чтобы страницы были заархивированы

Ответ №1:

Чтобы получить список неиспользуемых файлов, используйте MediaWiki API:

https://mediawiki.org/w/api.php?action=queryamp;format=jsonamp;list=querypageamp;qppage=Unusedimagesamp;qplimit=500amp;qpoffset=0.

Этот URL-адрес будет извлекать 500 записей ( qplimit ) для неиспользуемых файлов ( qppage ) из mediawiki.org (замените на ваш проект), начиная с 0 ( qpoffset ) в формате JSON ( format ). Также доступен XML.

Вы можете использовать jq ( apt install jq ) для анализа JSON и извлечения полных заголовков файловых страниц:

 wget -cq -O - 'https://mediawiki.org/w/api.php?action=queryamp;format=jsonamp;list=querypageamp;qppage=Unusedimagesamp;qplimit=500amp;qpoffset=0' | jq -r '.query.querypage.results[].title' >> list.txt
 

Или вы можете просто grep :

 wget -cq -O - 'https://mediawiki.org/w/api.php?action=queryamp;format=jsonamp;list=querypageamp;qppage=Unusedimagesamp;qplimit=500amp;qpoffset=0' | grep -oP '(?<="title":")[^"] ' >> list.txt
 

Возможно, вам потребуется повторить это увеличение qpoffset на qplimit , пока в нем ничего не останется .query.querypage.results .

Предполагая, что вы собрали список того, что хотите удалить в файле list.txt , по одной записи в строке, используйте сценарий обслуживания php maintenance/deleteBatch.php -u "deleting user" -r "reason for deletion" list.txt .

Дальнейшее чтение:

Комментарии:

1. Я хочу сначала собрать список, как мне это сделать

2. @dsouzajoel22, я не понимаю, что такое «страницы, которые архивируются». Для неиспользуемых файлов см. Обновленный ответ.

Ответ №2:

Спасибо за @Alexander Mashin. Я использовал тот же скрипт для получения списка неиспользуемых изображений, но я не смог удалить изображение, потому что при запуске пакетного скрипта удаления я получил сообщение об ошибке несуществующей страницы. Итак, я установил https://www.mediawiki.org/wiki/Extension:DeleteBatch расширение и откройте специальную страницу:DeleteBatch и вставьте список файлов. У вашей папки «Изображения / удаленные» должно быть правильное разрешение на доступ к файлам, в противном случае она не сможет удалить файлы.