Giter VIP home page Giter VIP logo

airathalitov / ad-generator Goto Github PK

View Code? Open in Web Editor NEW
24.0 4.0 14.0 142 KB

Профессиональный рандомизатор текста и генератор объявлений от Айрата Халитова / Professional text randomizer and ad generator. Author: Airat Halitov

Home Page: https://github.com/AiratHalitov/ad-generator

License: GNU General Public License v3.0

PHP 100.00%
randomizer wordpress text-randomizer ad-generator shortcode wordpress-plugin php avito random text-generation

ad-generator's Introduction

Профессиональный рандомизатор текста и генератор объявлений от Айрата Халитова / Professional text randomizer and ad generator. Author: Airat Halitov

Описание

Профессиональный рандомизатор текста и генератор объявлений от Айрата Халитова / Professional text randomizer and ad generator. Author: Airat Halitov

Установка

  1. Visit 'Plugins > Add New'
  2. Click 'Upload Plugin'
  3. Upload the file 'ad-generator.zip'
  4. Activate Ad Generator from your Plugins page.
  5. Add [ad_generator] shortcode to WordPress Page.

Настройка

  1. Create new WordPress Page, add [ad_generator] shortcode and save
  2. Go to page and use ad generator
  3. Enjoy

Скриншоты

In Russian:

ad-generator rus

In English:

ad-generator eng

Gif Animation of Process:

ad-generator animation


Что такое рандомизатор текста?

Это - программа для промышленного создания псевдоуникального контента. Используется, например, при регистрации сайта во множестве каталогов. Чтобы в каждом каталоге сайт описывался уникальным с точки зрения поисковиков текстом. В отличие от аналогичных инструментов (синонимайзеры, доргены) позволяет максимально сохранить читабельность результирующих текстов.

Как работает рандомизатор?

Берем некий исходный текст. Например:

Бытует мнение, что и копирайтинг (написание текстов) и рерайтинг (переработка готовых текстов) с успехом можно доверить текстовому рандомизатору – специальной программе.

Обрабатываем его специальным образом:

  1. Если "текст 1" можно заменить на "текст 2" или на "текст 3", то вместо "текст 1" вставляем инструкцию {текст 1|текст 2|текст 3}.
  2. Если "текст" можно опустить, то вместо "текст" вставляем инструкцию {|текст}.
  3. Если можно перемешать последовательность "текст 1 текст 2 текст 3", то вместо нее вставляем инструкцию [текст 1|текст 2|текст 3].
  4. Если можно перемешать последовательность "текст 1, текст 2, текст 3", то вместо нее вставляем инструкцию [+,+текст 1|текст 2|текст 3].
  5. Если можно перемешать абзацы "абзац1 абзац2 абзац3", то можно просто писать абзац1|абзац2|абзац3.
  6. Если нужно вставить в текст какой-то спецсимвол {, }, |, [, ], + или \, то его следует экранировать: \{, \}, \|, \[, \], \+ или \\.
  7. Если нужно вставить случайное число - шаблон %rand% возвращает случайное число от 0 до 9

Инструкции могут иметь неограниченную вложенность.

Вариант обработки на скорую руку:

{ {Бытует|Существует|Есть|Имеется} мнение|{Некоторые|Многие} думают}, что и
[+и+
 {копирайтинг (написание текстов)
 |написание текстов (копирайтинг)
 |написание текстов
 |копирайтинг
 }
|{рерайтинг (переработку готовых текстов)
 |переработку готовых текстов (рерайтинг)
 |переработку готовых текстов
 |рерайтинг
 }
] [{|с успехом}|можно] доверить
[+–+{текстовому рандомизатору|рандомизатору {|текста|текстов}}
|{специальной|особой} {программе|проге}
].

Скармливаем этот код рандомизатору и получаем кучу вариантов, таких как:

Некоторые думают, что и написание текстов и рерайтинг (переработку готовых текстов) с успехом можно доверить особой программе – рандомизатору.

или

Есть мнение, что и переработку готовых текстов и написание текстов можно доверить текстовому рандомизатору – особой проге.

Для приведенного в примере кода существует 24576 различных вариантов результирующих текстов.

Итак, повторим:

  • {текст 1|текст 2|текст 3} - перебор
  • [текст 1|текст 2|текст 3] - перестановки
  • [+разделитель+текст 1|текст 2|текст 3] - перестановки с разделителем
  • { } | [ ] + \ - экранизация спецсимволов в виде \{, \}, \|, \[, \], \+ или \\
  • %rand% возвращает случайное число от 0 до 9
  • Поддерживается вложенность дирректив

Консольная версия скрипта

Данный скрипт теперь можно запускать через коммандную строку, т.е. без установки плагина на WordPress сайт. Это гораздо быстрее и не ограничено ни по ресурсам, ни по выводу результатов.

Необходимо запустить файл ad-generator-cli.php, как обычный php-файл, и на входе в параметрах скрипта задать файл с шаблоном, количеством выводимых вариантов и файл для записи результатов (необязательно):

Пример команды запуска скрипта:

php ad-generator-cli.php -n 300 -f shablon.txt -o result.txt

где

  • -n или -N - количество вариантов на выходе (по умолчанию 300),
  • -f или --file - файл с шаблоном (обязательно),
  • -o или --out - файл с результатом (по умолчанию, result-N.txt),
  • -h или --help - вызов справки.

Запускать эту команду нужно из папки плагина. Параметры разделяются пробелом, как в примере. У вас обязательно должны быть права на чтение и запись файлов в этой папке. На выходе вы получите файл, в котором будут сгенерированные по вашему шаблону случайные N вариантов.

Пример шаблона объявления для ниши «Ремонт квартир»

Попробуйте вставить его в рандомизатор и посмотрите, что получится на выходе. Это объявления можно публиковать на авито.

Заголовок объявления:

Ремонт {квартир|офисов|коттеджей} под ключ. Гарантия, {бригада|качество}

Текст объявления:

Бригада {высококвалифицированных|опытных|ответственных} {ремонтников|работников|мастеров} {выполнит|произведет} {качественный|профессиональный} ремонт {Вашей квартиры|Вашего дома|Вашего жилища} по {разумной|приемлемой} {цене|стоимости}. {У нас|Мы|Ищите у нас|Почему мы|Обращайтесь к нам}:
— {Закупка стройматериалов по {оптовым|сниженным} {ценам|расценкам}|Выполнение {всех видов|любых} работ в {кратчайшие|минимальные} сроки}.
— {{Все|Наши} {рабочие|ремонтники} — граждане РФ|{Опыт|Стаж} {всех|наших} {рабочих|сотрудников|строителей} {5|6|7} лет}.
— Гарантия на {все виды работ|{любые|выполненные} работы} {1|2|3} года.
— {{Все|Любые} виды {ремонтно-отделочных|ремонтных|отделочных} работ {любой сложности|»от А до Я»|под ключ}.|Выезд {специалиста|замерщика} для консультации и замера — БЕСПЛАТНО!}
{===|* * *|***|# # #|~ ~ ~|- — -|___}
{->>|=>|>>|->} ТОЛЬКО до %DATE {действует|работает} СКИДКА на {ремонт|проведение ремонта} {квартир|помещений|Вашей квартиры} «под ключ» – {15|20|10}%!!!
{✆|☏|►} {ЗВОНИТЕ ПО ТЕЛЕФОНУ|ТЕЛЕФОН|ЗВОНИТЕ|Звоните прямо СЕЙЧАС|Звоните и заказывайте БЕСПЛАТНЫЙ замер}: %PHONE

Ещё примеры:

Дни недели:

{Понедельник|Вторник|Среда|Четверг|Пятница|Суббота|Воскресенье}

или

{ПН|ВТ|СР|ЧТ|ПТ|СБ|ВС}

Месяцы:

{Январь|Февраль|Март|Апрель|Май|Июнь|Июль|Август|Сентябрь|Октябрь|Ноябрь|Декабрь}

Дни месяца:

{{|1|2}{0|1|2|3|4|5|6|7|8|9}|30|31}

или проще

{1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31}

Числа:

0-9:

{1|2|3|4|5|6|7|8|9|0}

или

%rand%

10-99 (двузначные):

{1|2|3|4|5|6|7|8|9}{1|2|3|4|5|6|7|8|9|0}

или

{1|2|3|4|5|6|7|8|9}%rand%

Английский алфавит:

{A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z}

Русский алфавит:

{А|Б|В|Г|Д|Е|Ё|Ж|З|И|Й|К|Л|М|Н|О|П|Р|С|Т|У|Ф|Х|Ц|Ч|Ш|Щ|Ъ|Ы|Ь|Э|Ю|Я}

и т.д. Таким образом можно ставить абсолютно любые конструкции. Всё ограничено только вашей фантазией


2.2.0

  • Исправлен баг с подменой лишних пробелов
  • Рефакторинг кода рандомизатора
  • Добавлено больше примеров шаблонов

2.0.1

  • Исправлен баг с появлением лишних пробелов (#12)

2.0.0

  • Добавлена новая консольная версия
  • Обработка ошибок и справка в консольной версии
  • Добавлены теги label к выбору вариантов
  • Поправлено удаление лишних пробелов в результатах

1.4.0

  • Увеличено число допустимых символов с 4000 до 10000
  • Исправлен автофокус на странице с формой

1.3.2

  • Добавлены айдишники к выбору количества результатов
  • Обновлен URL лицензии
  • Добавлены скриншоты в README.md
  • Обновлены файлы для репозитория GitHub (DOCUMENTATION, ISSUE_TEMPLATE, README)
  • Изменен регистр названия репозитория Ad-Generator -> ad-generator
  • Обновлены файлы переводов

1.3.1

  • Форматирование вывода результатов
  • Обновлены файлы переводов

1.3.0

  • Добавлена возможность выбора количество отображаемых результатов

1.2.3

  • %rand% возвращает случайное число от 0 до 9
  • Исправлена ошибка с лишними символами \
  • Форматирование и оптимизация кода

1.2.2

  • Теперь работает поддержка разных языков (пока русский и английский)

1.2.1

  • Добавил автоматические обновления через GitHub Updater
  • Поправил changelog.md
  • Прописал метаданные пакета
  • Поправил /languages/
  • Поправил шаблон генератора

1.2.0

  • Добавил поддержку языковых файлов
  • Добавил русские и английские переводы
  • Обновил "рыбу" для рандомизации
  • Уменьшил макс. число символов в форме до 4000

1.1.1

  • Добавлены айдишники ко всем полям и элементам
  • Настроена ширина поля. Оптимизация под мобильники
  • Визуальные настройки отображения элементов
  • Добавил поддержку composer (файл composer.json)
  • Расширил ISSUE_TEMPLATE.md
  • Оптимизация кода

1.1.0

  • Решена проблема с множественными пробелами
  • Добавлена ссылка на проект GitHub
  • Добавлена кнопка очистки результатов
  • Настроено визульное оформление результатов
  • Обработка частных случаев разного количества результатов
  • Очистка вывода от обилия слешей

1.0.2

  • Решил проблему с переносом строк
  • Добавил файлы для GitHub
  • Настроил правильный вывод результатов

1.0.1

  • Объединил всё в одну функцию. Убрал лишнее и поправил ошибки
  • Проверил на тестовом сайте - всё работает Дальше:
  • Нужно навести красоту
  • Сделать так, чтобы генерировалось с переносами строк

1.0.0

  • Initial Release

ad-generator's People

Contributors

airathalitov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ad-generator's Issues

Лишние символы экранирования \

Если несколько раз генерировать текст со специальными символами, то можно заметить, как появляются \ (каждый раз по одному).
Нужно узнать, в чем причина, и исправить эту ошибку

Ограничения для анонимных пользователей

Это предложение (улучшение, расширение, оптимизация и т.д.)?

Что конкретно вы предлагаете?

  • Нужно сделать ограничение для анонимных пользователей и неограниченный доступ для зарегистрированных пользователей

Зачем и для чего это нужно?

Чтобы повысить активность и вовлеченность на сайте

Как это будет реализовано? Что для этого нужно?

  1. Переменная, которая будет учитывать количество обращений к генератору
  2. Для авторизованного пользователя не будет подобного ограничения
  3. Плюс данный параметр можно будет отключить по умолчанию через ключ в шорткоде. Т.е. по умолчанию он будет выключен, а ключ будет его включать

Переносы строк

Не работает перенос строк.

Рекомендовалось закоментить строки

 $result = trim($result);
 $result = preg_replace('/\s+/u', ' ', $result);

из файла https://github.com/AiratHalitov/ad-generator/blob/master/includes/Natty/TextRandomizer/Node.php, но это не помогает.

Нужно найти, где еще могут удаляться переносы строк.
Вставка <br /> в форму генерации не работает, т.к. в выводе результата используется функция htmlspecialchars()

Консольная версия

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

Т.е. должен быть отдельный файл ad-generator-cli.php

Запуск должен быть примерно такой:

php ad-generator-cli.php -n 300 -f shablon.txt -o result.txt

где
n - количество вариантов на выходе
shablon.txt - файл с шаблоном
result.txt - файл с результатом. Если не задан, использовать имя по умолчанию + время.

Иначе я задобался копировать, вставлять и снова копировать из файла в файл. Всё должно быть автоматизировано и удобно.

Настроить ширину поля ввода

Прописать все варианты:
минимальная и максимальная ширина и высота
Проверить на мобильниках.
Поставить нормальные значения по умолчанию

Переводы на другие языки

Зачем и для чего это нужно?

Чтобы можно было пользоваться плагином на других языках

Как это будет реализовано? Что для этого нужно?

  1. Добавить шаблон переводов
  2. Добавить базовые перводы
  3. Добавить поддержку переводов

Количество результатов

Нужно добавить возможность выбора количества выводимых результатов.
Хотя бы пока из заданного количества: 1, 5, 20, 50, 100

P.S. Вывод в файл может нагружать сервак, поэтому не будем пока этого делать

Добавить composer

Нужно добавить/настроить composer (пока не знаю, как это сделать, но нужно будет загуглить и глянуть примеры)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.