ssau_parser

package
v0.0.0-...-73e1c45 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 30, 2023 License: GPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var HeadURL = "https://ssau.ru"

Адрес основного сайта (прод или тестовый)

Functions

func CheckGroupOrTeacher

func CheckGroupOrTeacher(db *xorm.Engine, sh WeekShedule) (bool, error)

Проверка наличия группы или преподавателя в БД и добавление при необходимости Возвращает истину, если группы/преподавателя раньше не было TODO: Добавить проверку изменений в полях данных

func Compare

func Compare(new []database.Lesson, old []database.Lesson) ([]database.Lesson, []database.Lesson)

Сравнивание списков занятий на предмет добавления и удаления

func Diff

func Diff(jeden []database.Lesson, dzwa []database.Lesson) []database.Lesson

Проверка занятий, которые появились в eden и отсутствуют в dzwa

func GenerateUri

func GenerateUri(id int64, isGroup bool) string

Создать URI по ID и условию группа/преподаватель

func GetSheduleInfo

func GetSheduleInfo(doc *goquery.Document, sh *WeekShedule)

Получить полный номер группы и название специальности (ФИО и место работы для преподавателей)

func Hash

func Hash(s database.Lesson) string

Получение хэша занятия для быстрого сравнения

func ParseTeacherName

func ParseTeacherName(fullName string) database.Teacher

func UpdateSchedule

func UpdateSchedule(db *xorm.Engine, sh WeekShedule) ([]database.Lesson, []database.Lesson, error)

Согласование недельного расписания с БД Возвращает соответственно добавленные и удалённые занятия

Types

type Lesson

type Lesson struct {
	Type      string
	Name      string
	Place     string
	TeacherId []int64
	GroupId   []int64
	Comment   string
	SubGroup  []int
	Hash      []byte
}

Отдельные занятия внутри пары

func ParseLesson

func ParseLesson(s *goquery.Selection, isGroup bool, sheduleId int64) []Lesson

Парсинг занятия

type Page

type Page struct {
	ID      int64
	IsGroup bool
	Week    int
	Doc     *goquery.Document
}

Страница с расписанием и служебными хвостами

func DownloadShedule

func DownloadShedule(uri string, week int) (Page, error)

Загрузка страницы с расписанием из ssau.ru/rasp по URI и номеру недели (в семестре)

func DownloadSheduleById

func DownloadSheduleById(id int64, isGroup bool, week int) (Page, error)

Загрузка страницы с расписанием из ssau.ru/rasp по ID и номеру недели (в семестре)

type Pair

type Pair struct {
	Begin        time.Time
	End          time.Time
	NumInShedule int
	Lessons      []Lesson
}

Пара, состоящая из занятий

type SearchResults

type SearchResults []struct {
	Id   int64
	Url  string
	Text string
}

Результаты поиска

func SearchInRasp

func SearchInRasp(query string) (SearchResults, error)

Поиск расписания группы или преподавателя через ssau.ru/rasp/search

type WeekShedule

type WeekShedule struct {
	IsGroup   bool
	SheduleId int64
	FullName  string
	SpecName  string
	Week      int               // Номер недели в семестре
	WeekBegin int               // Номер недели в году начала семестра
	Lessons   [][]Pair          // Таблица пар в форме недельного расписания
	Uncovered []database.Lesson // Раскрытый список всех занятий для дальнейшей обработки в БД
}

Недельное расписание

func (*WeekShedule) Download

func (sh *WeekShedule) Download(uri string, week int, uncover bool) error

Загрузка, парсинг и раскрытие расписания в одной функции по URI и номеру недели

func (*WeekShedule) DownloadById

func (sh *WeekShedule) DownloadById(uncover bool) error

Загрузка, парсинг и раскрытие расписания в одной функции Обязательно наличие IsGroup, SheduleId, Week в объекте

func (*WeekShedule) Parse

func (sh *WeekShedule) Parse(p Page, uncover bool) error

Парсинг страницы с расписанием

func (*WeekShedule) UncoverShedule

func (sh *WeekShedule) UncoverShedule()

Раскрытие недельного расписания в список занятий для базы данных и сравнения

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL