/
Tesey4ik
/
PeoGenweb
Обзор
Документация
Войти
/
Tesey4ik
/
PeoGenweb
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
replace_script.py
122 строки
11 KB
tesey4ik68
полная рабочая версия
04 июн 2026, 08:42
04 июн 2026, 08:42
7f52d5b
Код
Авторство
О чём код?
import sys sys.stdout.reconfigure(encoding='utf-8') with open(r'C:\Users\aasolomennikov\Desktop\ID программ\2026\PeoGenweb\static\js\app.js', 'rb') as f: data = f.read() start = data.find(b'<select class="split-field" data-idx="${idx}" data-field="interval_type">') end = data.find(b'</select>', start) + len(b'</select>') old_block = data[start:end] print(f'Old block length: {len(old_block)}') lines = [] lines.append(b' <select class="split-field" data-idx="${idx}" data-field="interval_type">') lines.append(b' <option value="">\xe2\x80\x94</option>') lines.append(b' <optgroup label="\xd0\x95\xd0\xb4\xd0\xb8\xd0\xbd\xd1\x81\xd1\x82\xd0\xb2\xd0\xb5\xd0\xbd\xd0\xbd\xd0\xbe\xd0\xb5 \xd1\x87\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe">') lines.append(b' <option value="\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xb2\xd0\xb0\xd0\xbb\xd0\xb5" ${part.interval_type === \'\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xb2\xd0\xb0\xd0\xbb\xd0\xb5\' ? \'selected\' : \'\'}>\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xb2\xd0\xb0\xd0\xbb\xd0\xb5</option>') lines.append(b' <option value="\xd0\xbd\xd0\xb0 \xd1\x83\xd1\x87\xd0\xb0\xd1\x81\xd1\x82\xd0\xba\xd0\xb5" ${part.interval_type === \'\xd0\xbd\xd0\xb0 \xd1\x83\xd1\x87\xd0\xb0\xd1\x81\xd1\x82\xd0\xba\xd0\xb5\' ? \'selected\' : \'\'}>\xd0\xbd\xd0\xb0 \xd1\x83\xd1\x87\xd0\xb0\xd1\x81\xd1\x82\xd0\xba\xd0\xb5</option>') lines.append(b' <option value="\xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xbc\xd0\xb5\xd1\x82\xd0\xba\xd0\xb5" ${part.interval_type === \'\xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xbc\xd0\xb5\xd1\x82\xd0\xba\xd0\xb5\' ? \'selected\' : \'\'}>\xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xbc\xd0\xb5\xd1\x82\xd0\xba\xd0\xb5</option>') lines.append(b' <option value="\xd0\xb2 \xd0\xba\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x80\xd0\xb5" ${part.interval_type === \'\xd0\xb2 \xd0\xba\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x80\xd0\xb5\' ? \'selected\' : \'\'}>\xd0\xb2 \xd0\xba\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x80\xd0\xb5</option>') lines.append(b' <option value="\xd0\xb2 \xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x86\xd0\xb5" ${part.interval_type === \'\xd0\xb2 \xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x86\xd0\xb5\' ? \'selected\' : \'\'}>\xd0\xb2 \xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x86\xd0\xb5</option>') lines.append(b' <option value="\xd0\xb2 \xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb8" ${part.interval_type === \'\xd0\xb2 \xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb8\' ? \'selected\' : \'\'}>\xd0\xb2 \xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb8</option>') lines.append(b' </optgroup>') lines.append(b' <optgroup label="\xd0\x9c\xd0\xbd\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd0\xb5\xd0\xbd\xd0\xbd\xd0\xbe\xd0\xb5 \xd1\x87\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe">') lines.append(b' <option value="\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xb2\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x85" ${part.interval_type === \'\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xb2\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x85\' ? \'selected\' : \'\'}>\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xb2\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x85</option>') lines.append(b' <option value="\xd0\xbd\xd0\xb0 \xd1\x83\xd1\x87\xd0\xb0\xd1\x81\xd1\x82\xd0\xba\xd0\xb0\xd1\x85" ${part.interval_type === \'\xd0\xbd\xd0\xb0 \xd1\x83\xd1\x87\xd0\xb0\xd1\x81\xd1\x82\xd0\xba\xd0\xb0\xd1\x85\' ? \'selected\' : \'\'}>\xd0\xbd\xd0\xb0 \xd1\x83\xd1\x87\xd0\xb0\xd1\x81\xd1\x82\xd0\xba\xd0\xb0\xd1\x85</option>') lines.append(b' <option value="\xd0\xb2 \xd1\x82\xd0\xbe\xd1\x87\xd0\xba\xd0\xb0\xd1\x85" ${part.interval_type === \'\xd0\xb2 \xd1\x82\xd0\xbe\xd1\x87\xd0\xba\xd0\xb0\xd1\x85\' ? \'selected\' : \'\'}>\xd0\xb2 \xd1\x82\xd0\xbe\xd1\x87\xd0\xba\xd0\xb0\xd1\x85</option>') lines.append(b' <option value="\xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xbc\xd0\xb5\xd1\x82\xd0\xba\xd0\xb0\xd1\x85" ${part.interval_type === \'\xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xbc\xd0\xb5\xd1\x82\xd0\xba\xd0\xb0\xd1\x85\' ? \'selected\' : \'\'}>\xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xbc\xd0\xb5\xd1\x82\xd0\xba\xd0\xb0\xd1\x85</option>') lines.append(b' <option value="\xd0\xb2 \xd0\xba\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x80\xd0\xb0\xd1\x85" ${part.interval_type === \'\xd0\xb2 \xd0\xba\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x80\xd0\xb0\xd1\x85\' ? \'selected\' : \'\'}>\xd0\xb2 \xd0\xba\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x80\xd0\xb0\xd1\x85</option>') lines.append(b' <option value="\xd0\xb2 \xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x86\xd0\xb0\xd1\x85" ${part.interval_type === \'\xd0\xb2 \xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x86\xd0\xb0\xd1\x85\' ? \'selected\' : \'\'}>\xd0\xb2 \xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x86\xd0\xb0\xd1\x85</option>') lines.append(b' <option value="\xd0\xb2 \xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f\xd1\x85" ${part.interval_type === \'\xd0\xb2 \xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f\xd1\x85\' ? \'selected\' : \'\'}>\xd0\xb2 \xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f\xd1\x85</option>') lines.append(b' </optgroup>') lines.append(b' </select>') new_block = b'\r\n'.join(lines) print(f'New block length: {len(new_block)}') assert old_block in data, 'Old block not found in data!' result = data[:start] + new_block + data[end:] with open(r'C:\Users\aasolomennikov\Desktop\ID программ\2026\PeoGenweb\static\js\app.js', 'wb') as f: f.write(result) print('Replacement done!') print(f'Old size: {len(data)}, New size: {len(result)}') with open(r'C:\Users\aasolomennikov\Desktop\ID программ\2026\PeoGenweb\static\js\app.js', 'rb') as f: data = f.read() # Old block with CRLF old = ( b'<select class="split-field" data-idx="${idx}" data-field="interval_type"> ' b' <option value="">â</option> ' b' <option value="на инÑеÑвале" ${part.interval_type === 'на инÑеÑвале' ? 'selected' : ''}>на инÑеÑÐ²Ð°Ð»Ð°Ñ </option> ' b' <option value="на ÑÑаÑÑке" ${part.interval_type === 'на ÑÑаÑÑке' ? 'selected' : ''}>на ÑÑаÑÑÐºÐ°Ñ </option> ' b' <option value="в ÑоÑÐºÐ°Ñ " ${part.interval_type === 'в ÑоÑÐºÐ°Ñ ' ? 'selected' : ''}>в ÑоÑÐºÐ°Ñ </option> ' b' <option value="на оÑмеÑке" ${part.interval_type === 'на оÑмеÑке' ? 'selected' : ''}>на оÑмÐxb5ÑÐºÐ°Ñ </option> ' b' <option value="в камеÑе" ${part.interval_type === 'в камеÑÐxb5' ? 'selected' : ''}>в камÐxb5ÑÐ°Ñ </option> ' b' <option value="в колодÑе" ${part.interval_type === 'в колодÑÐxb5' ? 'selected' : ''}>в колодÑÐ°Ñ </option> ' b' <option value="в здании" ${part.interval_type === 'в зданÐxb8Ðxb8' ? 'selected' : ''}>в зданÐxb8ÑÑ </option> ' b' </select>' ) count = data.count(old) print(f'Found: {count}') assert count == 1, f'Expected 1 occurrence, found {count}' new = ( b'<select class="split-field" data-idx="${idx}" data-field="interval_type"> ' b' <option value="">â</option> ' b' <optgroup label="ÐдинÑÑвенное ÑиÑло"> ' b' <option value="на инÑеÑвале" ${part.interval_type === 'на инÑеÑвалÐxb5' ? 'selected' : ''}>на инÑеÑвалÐxb5</option> ' b' <option value="на ÑÑаÑÑке" ${part.interval_type === 'на ÑÑаÑÑкÐxb5' ? 'selected' : ''}>на ÑÑаÑÑкÐxb5</option> ' b' <option value="на оÑмеÑке" ${part.interval_type === 'на оÑмÐxb5ÑкÐxb5' ? 'selected' : ''}>на оÑмÐxb5ÑкÐxb5</option> ' b' <option value="в камеÑе" ${part.interval_type === 'в камÐxb5ÑÐxb5' ? 'selected' : ''}>в камÐxb5ÑÐxb5</option> ' b' <option value="в колодÑе" ${part.interval_type === 'в колодÑÐxb5' ? 'selected' : ''}>в колоÐxb4ÑÐxb5</option> ' b' <option value="в здании" ${part.interval_type === 'в зданÐxb8Ðxb8' ? 'selected' : ''}>в зданÐxb8Ðxb8</option> ' b' </optgroup> ' b' <optgroup label="ÐножеÑÑвенное ÑиÑло"> ' b' <option value="на инÑеÑÐ²Ð°Ð»Ð°Ñ " ${part.interval_type === 'на инÑеÑвалÐxb0Ñ ' ? 'selected' : ''}>на инÑеÑвалÐxb0Ñ </option> ' b' <option value="на ÑÑаÑÑÐºÐ°Ñ " ${part.interval_type === 'на ÑÑаÑÑкÐxb0Ñ ' ? 'selected' : ''}>на ÑÑаÑÑкÐxb0Ñ </option> ' b' <option value="в ÑоÑÐºÐ°Ñ " ${part.interval_type === 'в ÑоÑкÐxb0Ñ ' ? 'selected' : ''}>в ÑоÑкÐxb0Ñ </option> ' b' <option value="на оÑмÐxb5ÑÐºÐ°Ñ " ${part.interval_type === 'на оÑмÐxb5ÑкÐxb0Ñ ' ? 'selected' : ''}>на оÑмÐxb5ÑкÐxb0Ñ </option> ' b' <option value="в камÐxb5ÑÐ°Ñ " ${part.interval_type === 'в камÐxb5ÑÐxb0Ñ ' ? 'selected' : ''}>в камÐxb5ÑÐxb0Ñ </option> ' b' <option value="в колодÑÐ°Ñ " ${part.interval_type === 'в колодÑÐxb0Ñ ' ? 'selected' : ''}>в колодÑÐxb0Ñ </option> ' b' <option value="в зданÐxb8ÑÑ " ${part.interval_type === 'в зданÐxb8ÑÑ ' ? 'selected' : ''}>в зданÐxb8ÑÑ </option> ' b' </optgroup> ' b' </select>' ) data = data.replace(old, new, 1) with open(r'C:\Users\aasolomennikov\Desktop\ID программ\2026\PeoGenweb\static\js\app.js', 'wb') as f: f.write(data) print('Replacement done successfully!')