Добрый день!
Думаю не я один столкнулся с проблемой выгрузки реестра запрещенных сайтов в новом формате.
Многие использовали готовый скрипт:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# yegorov-p.ru
from xml.etree.ElementTree import ElementTree
from datetime import datetime,timedelta
from zapretinfo import ZapretInfo
import time
import zipfile
from base64 import b64decode
XML_FILE_NAME = "zapros.xml"
P7S_FILE_NAME = "zapros.xml.p7s"
#Если файлик ранее выгружался, то пробуем получить из него данные
try:
ts=ElementTree().parse("dump.xml").attrib['updateTime']
dt = datetime.strptime(ts[:19],'%Y-%m-%dT%H:%M:%S')
fromFile=int(time.mktime(dt.timetuple()))
except:
fromFile=0
opener=ZapretInfo()
#print opener.sendRequest(XML_FILE_NAME,P7S_FILE_NAME)
#Проверяем, изменился ли файлик
if opener.getLastDumpDate()/1000<>fromFile:
#Файлик изменился. Отправляем запрос на выгрузку
request=opener.sendRequest(XML_FILE_NAME,P7S_FILE_NAME)
#Проверяем, принят ли запрос к обработке
if request['result']:
#Запрос не принят, получен код
code=request['code']
print 'Got code %s' % (code)
print 'Trying to get result...'
while 1:
#Пытаемся получить архив по коду
request=opener.getResult(code)
if request['result']:
#Архив получен, скачиваем его и распаковываем
print 'Got it!'
file = open('result.zip', "wb")
file.write(b64decode(request['registerZipArchive']))
file.close()
zip_file = zipfile.ZipFile('result.zip', 'r')
zip_file.extract('dump.xml', '')
zip_file.close()
break
else:
#Архив не получен, проверяем причину.
if request['resultComment']=='запрос обрабатывается':
#Если это сообщение об обработке запроса, то просто ждем минутку.
print 'Not ready yet.'
time.sleep(60)
else:
#Если это любая другая ошибка, выводим ее и прекращаем работу
print 'Error: %s' % request['resultComment']
break
else:
#Запрос не принят, возвращаем ошибку
print 'Error: %s' % request['resultComment']
else:
print 'No updates'
Все до недавнего времени было хорошо и комфортно, но силовики ввели некий параметр versionNum=2, который предоставляет выгрузку реестра в новом формате (небольшие изменения в контенте):
4. Для автоматизированного получения выгрузки в новом формате будет модифицирован веб-сервис – для метода sendRequest будет введен новый необязательный параметр versionNum. Если этот параметр не указан, либо указано значение versionNum=1, то будет возвращаться выгрузка в текущем формате, которая будет содержать данные только по реестрам 1-3. При указании versionNum=2 будет возвращаться выгрузка в новом формате, содержащая данные по всем реестрам. В течение некоторого времени (1-2 месяца) будет поддерживаться предоставление выгрузки как в старом, так и в новом формате. На стороне Роскомнадзора будет происходить мониторинг обращений и определение используемой версии. Операторам связи необходимо будет как можно оперативное модернизировать своё ПО и перейти на использование нового формата выгрузки. После завершения переходного периода запрос выгрузки в старом формате будет запрещен – при подаче запроса на получение выгрузки без указания номера версии или при указании versionNum=1 будет выдаваться сообщение о невозможности предоставления выгрузки в данном формате. При таких изменениях в веб-сервисе во время переходного периода существующий у операторов связи софт для получения выгрузки продолжит работать корректно, что позволит осуществить плавный переход к новому формату без прекращения блокировок по действующим реестрам 1-3.
В большинстве случаев админы мало знакомы с Питоном и сейчас у многих ступор куда и как в sendRequest впихнуть данный параметр.
Гуру help!!!