hmtpk_parser

package module
v2.0.12 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2024 License: MIT Imports: 10 Imported by: 6

README

Парсер ХМТПК

Go Reference Go Report Card License Application Group

Этот пакет предоставляет простой способ получения данных с сайта Ханты-Мансийский технолого-педагогический колледж (ХМТПК).

Получаемые данные

Пакет позволяет получить следующие данные:

  • Расписание занятий для группы
  • Расписание занятий для преподавателя
  • Список групп
  • Список преподавателей
  • Объявления

Установка

Для установки пакета, выполните следующую команду:

go get github.com/chazari-x/hmtpk_parser/v2

Использование

Пример использования:

package main

import (
  "context"
  "fmt"
  
  hmtpk "github.com/chazari-x/hmtpk_parser/v2"
  "github.com/go-redis/redis/v8"
  "github.com/sirupsen/logrus"
)

func main() {
  // Инициализация клиента Redis
  redisClient := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379",
    Password: "",
    DB:       0,
  })
  
  // Создание логгера
  logger := logrus.New()
  
  // Создание экземпляра структуры Controller
  controller := hmtpk.NewController(redisClient, logger)
  
  groupScheduleExample(controller)
  
  teacherScheduleExample(controller)
  
  announcementsExample(controller)
}

func groupScheduleExample(controller *hmtpk.Controller) {
  // Получение списка групп
  groups, err := controller.GetGroupOptions(context.Background())
  if err != nil || len(groups) == 0 {
    fmt.Println("Ошибка при получении списка групп:", err)
    return
  }
  
  // Получение расписания для группы
  groupSchedule, err := controller.GetScheduleByGroup(context.Background(), groups[0].Value, "20.03.2024")
  if err != nil {
    fmt.Println("Ошибка при получении расписания для группы:", err)
    return
  }
  
  // Вывод расписания на экран
  fmt.Println(groupSchedule)
}

func teacherScheduleExample(controller *hmtpk.Controller) {
  // Получение списка преподавателей
  teachers, err := controller.GetTeacherOptions(context.Background())
  if err != nil || len(teachers) == 0 {
    fmt.Println("Ошибка при получении списка преподавателей:", err)
    return
  }
  
  // Получение расписания для преподавателя
  teacherSchedule, err := controller.GetScheduleByTeacher(context.Background(), teachers[0].Value, "20.03.2024")
  if err != nil {
    fmt.Println("Ошибка при получении расписания для преподавателя:", err)
    return
  }
  
  // Вывод расписания на экран
  fmt.Println(teacherSchedule)
}

func announcementsExample(controller *hmtpk.Controller) {
  // Получение списка объявлений
  announcements, err := controller.GetAnnounces(context.Background(), 1)
  if err != nil {
    fmt.Println("Ошибка при получении списка объявлений:", err)
    return
  }
  
  // Вывод объявлений на экран 
  fmt.Println(announcements)
}

Примечание

Данный пакет использует веб-скрейпинг для извлечения данных с сайта Ханты-Мансийского технолого-педагогического колледжа. В случае изменения структуры сайта, пакет может перестать корректно работать. Если вы столкнулись с проблемой, пожалуйста, создайте issue на GitHub.

Лицензия

Этот проект лицензирован в соответствии с условиями лицензии MIT. См. файл LICENSE для получения дополнительной информации.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Controller

type Controller struct {
	// contains filtered or unexported fields
}

func NewController

func NewController(client *redis.Client, logger *logrus.Logger) *Controller

func (*Controller) GetAnnounces

func (c *Controller) GetAnnounces(ctx context.Context, page int) (model.Announces, error)

GetAnnounces получает блок с объявлениями

func (*Controller) GetGroupOptions

func (c *Controller) GetGroupOptions(ctx context.Context) ([]model.Option, error)

GetGroupOptions получает список групп

func (*Controller) GetScheduleByGroup

func (c *Controller) GetScheduleByGroup(ctx context.Context, group, date string) ([]model.Schedule, error)

GetScheduleByGroup по идентификатору группы и дате получает расписание на неделю

func (*Controller) GetScheduleByTeacher

func (c *Controller) GetScheduleByTeacher(ctx context.Context, teacher, date string) ([]model.Schedule, error)

GetScheduleByTeacher по ФИО преподавателя и дате получает расписание преподавателя

func (*Controller) GetTeacherOptions

func (c *Controller) GetTeacherOptions(ctx context.Context) ([]model.Option, error)

GetTeacherOptions получает список преподавателей

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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