Scientific journal
Scientific Review. Technical science
ISSN 2500-0799
ПИ №ФС77-57440

SOFTWARE TOOL DEVELOPMENT FOR AUTOMATIC ACCESS CHECKING TO PUBLICATIONS IN ELECTRONIC LIBRARIES

Pepelyshev D.I. 1 Karelova R.A. 1
1 Ural Federal University named after the First President of Russia B.N. Yeltsin
4789 KB
The staffing of the university library fund is subject to an accreditation examination. The electronic editions indicated in the disciplines’ work programs should be available to students at the time of the discipline studying. Lack of access to this literature is a violation of the Federal State Educational Standard. The article proposes a variant of a computer program implementation that makes it possible to automate the check of the availability of publications in electronic library systems. There are the logic of the program operation, features and tools for its implementation are described, examples of listings in Python, illustrations of the program interface, results of its work are given. The resulting software tool allows the user to select a file with the discipline’s work program, searches for a list of references in it and then checks the possibility of accessing them under the organization’s login and password. Based on the results of the program’s work, the user receives a message about which links are available for reading, and which are not.
applied programming
software module
software development
electronic library system
availability of electronic publications
monitoring of electronic publications
Python
PyQt
python-docx

Информационное обеспечение образовательного процесса в учреждении высшего образования подлежит аккредитационной экспертизе, которая подтверждает соответствие образовательных программ вуза требованиям Федеральных государственных образовательных стандартов (далее – ФГОС). Библиотечный фонд, как одна из главных составляющих такого обеспечения, должен быть укомплектован печатными и/или электронными учебными изданиями [1].

Списки литературы рабочих программ дисциплин (далее – РПД) подлежат проверке. Как правило, перед утверждением РПД сотрудники библиотеки проверяют наличие печатных изданий и доступ к электронным изданиям, указанным в качестве основной и дополнительной литературы в РПД. Такая верификация осуществляется перед утверждением РПД и после их актуализации, в том числе внесения изменений в список литературы.

На момент изучения любой дисциплины, входящей в учебный план направления подготовки, вся указанная в ней литература должна быть доступна обучающимся, и в частности издания, находящиеся на сайтах ЭБС. В противном случае происходит нарушение требований ФГОС [2]. По определенным причинам то или иное издание может стать недоступным для студентов и сотрудников вуза в конкретной ЭБС. Это обусловливает необходимость периодических проверок ссылок на их доступность, что, в свою очередь, требует временных затрат со стороны проверяющих, а также не исключает человеческого фактора.

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

В настоящее время библиотеки вузов находятся в поиске средств, которые позволили бы автоматизировать процесс мониторинга учебно-методического обеспечения образовательного процесса [3]. Однако в описаниях применяемых библиотеками программных средств не указаны модули, осуществляющие мониторинг доступности изданий в ЭБС.

Следует отметить, что в настоящее время существуют сервисы для проверки работоспособности ссылок. Рассмотрим подробнее особенности двух наиболее известных и распространенных таких сервисов: xseo.in и Ablebits Link Checker for Microsoft Word.

Сервис Xseo.in (рис. 1) предназначен для поиска ссылок в тексте и проверки работоспособности этих ссылок (проверяется код ответа HTTP). Популярность сервиса обусловлена тем, что он бесплатный. В рамках решаемой нами проблемы к недостаткам данного сервиса можно отнести необходимость ручного поиска и ввода списка литературы из РПД, а, главное, отсутствие проверки статуса издания в ЭБС.

missing image file

Рис. 1. Интерфейс сервиса xseo.in

missing image file

Рис. 2. Интерфейс Ablebits Link Checker for Microsoft Word

Программный сервис Ablebits Link Checker for Microsoft Word (рис. 2) является дополнением к Microsoft Office Word и позволяет напрямую проверять работоспособность ссылок в документе, особым образом отмечая и отображая список «подозрительных» ссылок. По сути, в РПД, содержащей ссылки на литературу в ЭБС, данный сервис сможет проверить, корректна ли ссылка на издание, то есть осуществится ли переход по ней и откроется ли что-то в браузере.

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

Материалы и методы исследования

В данной статье представлен вариант реализации программного решения, которое позволяет автоматизировать мониторинг доступности издания следующим образом.

В выбранном пользователем файле (РПД) осуществляется поиск списка литературы, в котором идентифицируются ссылки на ЭБС, и происходит проверка их статуса. По результатам работы программного средства пользователь получает сообщение о том, по каким ссылкам издания доступны для чтения или не доступны. У программного средства для входа в ЭБС должны быть соответствующие логины и пароли.

В общем виде жизненный цикл проверки показан на UML-диаграмме последовательности (рис. 3).

missing image file

Рис. 3. Диаграмма последовательности

Как видно из диаграммы, выбранный пользователем файл сначала преобразуется. Обратим внимание, что РПД, как правило, в библиотеку для верификации попадают в формате текстового файла.

В качестве языка программирования для реализации программного средства был выбран Python 3.7.9.

Для работы Python с документом Microsoft Word необходимо преобразовать его в современный формат docx, это необходимо сделать по требованию работы с библиотекой python-docx [4]. Для этого в программе была предусмотрена функция преобразования (листинг 1).

Листинг 1

Конструктор класса Doc

class Doc:

# получение корневой папки с программой

ProgramInstalDir = "\\".join(os.path.abspath(__file__).split("\\")[:-1])

def __init__(self, FileName, Login1, Password1, load):

# получение расширение файла и копирование файла в корневую папку

Extension = FileName.split(".")[-1]

FileName = shutil.copyfile(

FileName, self.ProgramInstalDir+'\\temp.doc')

if Extension == "docx":

self.FileName = FileName

else:

self.FileName = self.ConvertToDocx(FileName)

Как видно из листинга 1, если файл имеет расширение docx, то конвертация не требуется, иначе - вызывается метод конвертации (листинг 2).

Листинг 2

Метод ConvertToDocx

def ConvertToDocx(self, FileName):

word = win32com.client.Dispatch('Word.Application')

doc = word.Documents.Add(FileName)

Target = self.ProgramInstalDir+'\\temp_converted.docx'

doc.SaveAs(Target, FileFormat=16)

doc.Close()

return Target

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

Далее в файле необходимо найти список с литературой. Для этого вызывается метод поиска списка (листинг 3), который ищет в документе соответствующие заголовки. Пример того, как выглядит список литературы в РПД, приведен на рис. 4.

missing image file

Рис. 4. Список литературы в РПД

Листинг 3

Метод SearchLit

def SearchLit(self):

doc = docx.Document(self.FileName)

lit_stop = [0, 0]

self.Main_lit = []

for par in doc.paragraphs:

# чтение строк из документа

if lit_stop[1] == 1:

break

elif par.text == "":

pass

elif re.search(r'Электронные ресурсы', par.text, flags=re.IGNORECASE):

# следующие строки будут с литературой

lit_stop[0] = 1

elif re.search(r'Печатные издания', par.text, flags=re.IGNORECASE):

# список литературы закончился

lit_stop[1] = 1

elif lit_stop[0] == 1 and lit_stop[1] == 0:

self.Main_lit.append(par.text)

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

Листинг 4

Метод UrlSearch

def UrlSearch(self, lit_arr, load):

url_arr = []

# для отображения прогресса

proggres_hop = int(20/(len(arr)+0.01))

for i in lit_arr:

url = re.search(r'https?://[\S]+', i, flags=re.IGNORECASE)

if not url:

url = re.search(r'www.[\S]+', i, flags=re.IGNORECASE)

if url:

# если последний символ точка, то удалить ее

if url[0][-1] == ".":

url_arr.append(url[0][:-1])

else:

url_arr.append(url[0])

else:

url_arr.append("Ссылка не найдена")

self.Progress += proggres_hop

load.setValue(self.Progress)

return url_arr

Проверку доступности необходимо выполнять индивидуально для каждой ЭБС, так как все они имеют различный подход к авторизации и проверке доступности изданий. В качестве примера рассмотрим модуль для ЭБС "Лань" с использованием открытого API (листинг 5).

Листинг 5

Модуль ebs_lan

import requests

import json

def Authorization(login, password):

# Выполняем вход в ЭБС

url = 'https://e.lanbook.com/api/v2/signin'

user_agent_val = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'

# Создаем сессию и указываем наш user-agent

session = requests.Session()

r = session.get(url, headers={

'User-Agent': user_agent_val

})

# Указываем referrer

session.headers.update({'Referrer': url})

session.headers.update({'User-Agent': user_agent_val})

# Осуществляем вход с помощью метода POST с указанием необходимых данных

post_request = session.post(url, {

'login': login,

'password': password,

'type': 'UserCredentials'

})

login1 = json.loads(post_request.text)

if login1["status"] == "ok":

return session

else:

return "Ошибка авторизации в ЭБС Лань"

def Check_available(book_id, session):

user_agent_val = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'

session.headers.update({'User-Agent': user_agent_val})

a = session.get(

'https://e.lanbook.com/api/v2/catalog/book/'+str(book_id)).text

j = json.loads(a)

if j["body"]:

if j["body"]["available"]:

return "Книга доступна"

else:

return "Книга не доступна"

else:

return "Книга не найдена"

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

Результаты исследования и их обсуждение

Готовая программа выглядит следующим образом (рис. 5). Графический интерфейс программного средства был создан с использованием PyQt [5], так как данная библиотека позволяет довольно просто создавать графический интерфейс для программы.

missing image file

Рис. 5. Графический интерфейс программного средства

Для осуществления проверки работоспособности ссылок пользователь вводит данные для авторизации в системах ЭБС, затем нажимает соответствующую кнопку и выбирает текстовый файл. После этого проходит авторизация с помощью модуля request [6], затем пользователь получает готовый отчет о проверке (рис. 6).

missing image file

Рис. 6. Отчет о проверке работоспособности ссылок

Заключение

В результате работы получилось программное средство, которое имеет простой интерфейс и позволяет автоматизировать проверку РПД на наличие недоступных ссылок. Спроектированная структура программы позволяет легко расширять количество проверяемых ЭБС с помощью добавления отдельных модулей.