#mediawiki
#mediawiki
Вопрос:
Версия Mediawiki: 1.34
Версия PHP: 7.3
Тип базы данных: 10.3.24-MariaDB — Сервер MariaDB
Есть ли способ выполнить «массовое удаление» неиспользуемых страниц и изображений. deleteArchivedFiles.php работает не так, как ожидалось.
Комментарии:
1. Что именно вы подразумеваете под «неиспользуемым»?
2. На специальных страницах присутствуют неиспользуемые файлы, которые я хочу массово удалить. Также я хочу, чтобы страницы были заархивированы
Ответ №1:
Чтобы получить список неиспользуемых файлов, используйте MediaWiki API:
Этот 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 и вставьте список файлов. У вашей папки «Изображения / удаленные» должно быть правильное разрешение на доступ к файлам, в противном случае она не сможет удалить файлы.