Переводчик имбецильного текста в стиле Fallout 1-2 (beta)




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

34 Comments

  1. starik-2005

    Йа довно знал, што мир кудато катеццо, но штобы настолька — дажо и недумал…

    Reply
  2. ZhokhovM

    (1) Спасибо.

    Reply
  3. orefkov

    Я джва года….

    Reply
  4. ZhokhovM

    (3)

    Я джва года….

    Ага, очень смешно.

    Reply
  5. ZhokhovM

    Скачайте, не ленитесь!

    Общаясь в чате, вы можете пользоваться данным переводчиком. Для этого нужно скопировать любой выделенный текст и вставить его в первом поле, потом нажать «Перевести» и будет результат во втором поле(справа от кнопки).

    Reply
  6. asved.ru

    Незаменимая вещь для первой линии поддержки!

    Reply
  7. ZhokhovM

    (6)Спасибо.

    Reply
  8. agr1ck

    Интересненько, осталось только сделать переводчик на падонкоффский.

    Reply
  9. HorusTheOne

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

    Reply
  10. kolya_tlt

    ТС отсыпь чего ты там куришь

    Reply
  11. DrBlack
    ТС отсыпь чего ты там куришь

    Мне тоже пожалуйста!

    ЗЫ — два стартмани за эту поделку на коленке да еще и яндекс-кошелек прикрепил…

    ТС, у тебя чё, шмаль кончилась?

    Reply
  12. ZhokhovM

    (11)яндекс-кошелек убрал. Какую еще подделку? Я ее сам делал. Раньше код был захаржкожен, но он простой. Скриптуется программистом. В SDK для этого есть возможность. Достаточно отлавливать то, что пишут в игровом чате. Но я сделал обработку непосредственно в 1С.

    Reply
  13. ryutao

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

    Reply
  14. DrAku1a

    А обратно переводить умеет?

    Reply
  15. ZhokhovM

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

    Reply
  16. ZhokhovM

    (11)Уменьшил до 1 sm. Бесплатно, к сожалению, не могу.

    Reply
  17. ZhokhovM

    (11)»Ты победил меня. Теперь я вижу, что ты крут, Избранный» (с)

    Reply
  18. DrBlack

    (17) Прошу понять и простить… 🙂

    Reply
  19. DrAku1a

    (15) Да, тут надо больше, чем замена букоффф… Надо пытаться анализировать контекст слова.

    В плане доработки — может сделать подстройку степени замены (заменять не более 1-2-3 букв в слове, не заменять слова менее чем из 3 букв и т.д., делать грамматические ошибки).

    Кстати, прикольно знакомый текст перевести будет, например:

    Быть иль не быть? Вот в чем вопрос? Что лучше?

    Сносить ли от неистовой судьбы

    Удары стрел и камней, — или смело

    Вооружиться против моря зла
    Reply
  20. ZhokhovM

    (19)

    Быть иль не быть? Вот в чем вопрос? Что лучше?

    Сносить ли от неистовой судьбы

    Удары стрел и камней, — или смело

    Вооружиться против моря зла

    бит ыл нйэ пит? фёт в чэм ваплёз? чта лочшэ? снёсет ле ад неыздёвёй зодпи удялы стрёр е гамнйе, — еле смйэла вёёлюжитсйа братиф мёля сла))))

    Reply
  21. ZhokhovM

    (18)Прощение принято.

    Reply
  22. ZhokhovM

    Если кто смотрел фильм про Джеки Чана(Бенни) «Отпетые напарники» 2017, там в одном из субтитров было процитировано:

    Бенни: Эй, мальчик! Ты не видел американца?

    Мальчик: Вчера уехать. Мой купить лошадь.

    Бенни: Он купил лошадь?

    Мальчик: Кивает

    Бенни: За налик?

    Мальчик: Кивает

    Вот один из примеров для имбецилов)

    Reply
  23. alex_4x

    Шикарная разработка! Буду ей тексты договоров прогонять. Думаю всем очень понравится.

    Reply
  24. ZhokhovM

    (23)Спасибо!

    Reply
  25. ZhokhovM

    (22)Второй из найденных мной субтитров для имбецилов в том же фильме:

    Старик: Простите. Вы не подержать, пожалуйста?

    Американец: Давайте.

    Старик: Спасибо.

    Американец: Мужик, ну ты че? Решил трупака мне подсунуть?

    Старик: Слишком любопытный. Зачем ты открывать?

    Американец: А зачем вы ее таскаете?

    Старик: Внутри мой друг. Перед как он умер я обещать ему развеять его прах в бухта Виктория.

    Старик: Я давать обещание и я выполнять.

    Старик: Ты что-то иметь против это?

    Американец: Нет, сэр, я.. Простите. Я не подумал.

    Reply
  26. nikolayD

    А переводчика с имбецильного нет случаем?

    Reply
  27. ZhokhovM

    (26)нету, к сожалению, еще не делал

    Reply
  28. ZhokhovM

    (13)

    (14)

    (19)

    (26)Сделал переводчик с имбецильного, но пока еще сыро работает.

    Reply
  29. DrBlack

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

    Как-то так… 🙂

    Reply
  30. feva

    Не рабонькает… незаменимаем в повседневной жизни вещь.

    скачал. Нажимаю перево — ничего не происходит

    Reply
  31. ZhokhovM

    (30)в тексте слева набери текст «я люблю тебя», внизу слева должен быть пункт «Только слова», нажать «Перевести», в тексте справа результат текста: «моя люблю твою»

    если у вас выбран пункт слова и тексты, то вариантов несколько

    моя люплю твою

    моя рюблю твою

    моя люблю твою

    и так далее

    Reply
  32. feva

    Авдар нйэ набесал некдё, чта нужйн вёрд ёфес дла рябаты. Мёжнё ы дйньке за дакай абрядна папрёсыдь

    Reply
  33. feva
    Попытка
    мWord = Новый COMОбъект(«Word.Application»);
    Если мWord.Documents.Count = 0 Тогда
    мWord.Documents.Add();
    КонецЕсли;
    Исключение
    Возврат;
    КонецПопытки;
    Reply
  34. ZhokhovM

    (32)бонял, юже напесал. спасепо жа напомынанее.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *