Module for working with the site dnevnik.ru with python

Overview

PyPI Python Versions

dnevnikru

Module for working with the site dnevnik.ru with python

Dnevnik object accepts login and password from the dnevnik.ru account
Methods: homework, marks, searchpeople, birthdays, week

Read the full functionality of the module here: Wiki

(Doesn't work in regions where you can enter the Diary only through GosUslugi !)

Installation

Windows:

Run the command in the terminal:

pip install dnevnikru

Examples of use

from dnevnikru import Dnevnik

dairy = Dnevnik(login='Your login', password='Your password')

homework = dairy.homework(studyyear=2020, datefrom='01.12.2020', dateto='30.12.2020')
marks = dairy.marks(index=0, period=1)
class_11b = dairy.searchpeople(grade='11B')
birthdays = dairy.birthdays(day=9, month=5)
schedule = dairy.week(info="schedule", weeks=-1)

For more examples of uses and parameters in methods, see Wiki.

Requires

The module requires requests, lxml, bs4 libraries

Releases

  • 1.0

Contact

Aleksandr – tg: @paracosm17 – email: [email protected]

LICENSE

Distributed under the Apache License 2.0 license. See LICENSE for more information.

Comments
  • refactoring: replace() change to strip() in homework

    refactoring: replace() change to strip() in homework

    Замена сложного и подогнанного под найденные строки метода .replace() на .strip(), так как .strip() по умолчанию без аргументов убирает все пробелы и отступы слева и справа от строки.

    opened by vypivshiy 3
  • Убрать fake_useragent и поставить статичный headers

    Убрать fake_useragent и поставить статичный headers

    В подобных проектах нет смысла подменивать user-agent при каждом запуске (не оправдано его использование) Поэтому предлагаю сделать по умолчанию статичный юзер агент, так как обратившись к атрибуту main_session его всегда можно изменить (даже через тот самый fake_useragent), например:

    dn = Dnevnik("foo", "bar").main_session.headers.update({"User-Agent": "Mozilla 5.0 like gecko My user agent"})
    dn.main_session.headers.update({"User-Agent": "Takoy user-agent hochu Linux Windows Macintosh"})
    
    opened by vypivshiy 3
  • Добавление фильтра на колонки таблицы, получение данных из вложенных тэгов и атрибутов

    Добавление фильтра на колонки таблицы, получение данных из вложенных тэгов и атрибутов

    Изначальной целью доработки было разделение строки оценок и получение подробностей, а именно тип работы, за которую получена оценка. Заодно и фильтрация данных о посещаемости. Для этого в функцию save_content добавил необязательный параметр map2. Если он пустой, то функция работает, как раньше. map2 это словарь, ключом в котором являются номера колонок, которые нужно вернуть. Значение словаря - это кортеж. Если пустой, то возвращается текст ячейки целиком. Если он заполнен (например ('tag', 'attr')), то внутри ячейки ищутся все тэги tag, извлекаются данные из атрибута 'attr', эти пары упаковываются в кортеж и возвращаются как значение ячейки. В итоге значение строки выглядит как '6', 'Математика', (('5', 'Ответ на уроке, 15 ноября 2021, 3 урок '), ('4', 'Ответ на уроке, 16 ноября 2021, 2 урок '), ('5', 'Математический диктант, 17 ноября 2021, 1 урок '), ('5', 'Ответ на уроке, 18 ноября 2021, 2 урок ')), '4,86'

    Новый параметр применил в функции marks. Единственное, что в строке

    marks = self.save_content(self, marks_response, class2='grid gridLines vam marks', {0:(),1:(),2:('span', 'title'),6:()})

    нужно либо убрать именование class2 или добавить именование map2. Сам поздно заметил.

    opened by MerQGh 1
  • Не для внесения в мастер, а для обсуждения.

    Не для внесения в мастер, а для обсуждения.

    После пары дней размышления предлагаю следующее:

    1. перенести в метод (статикметод) класса Dnevnikru запрос к странице и первичную обработку Супом, в моём примере это save_content2()
    2. Всю последующую обработку HTML проводить в соответствующем методе, т.е. домашние задания в homework и т.п.
    3. Результат работы методов класса Dnevnik (которые ответственны за вывод конкретных данных) стандартизировать, чтобы пользователь всегда получал данные в удобоваримом состоянии, например использовать словарь. Точнее конечно создать соответствующий класс, к объектам и их значениям которого можно напрямую обращатся.
    opened by stepanskryabin 0
  • Уменьшение потребления памяти, исправления ошибок и опечаток в описании

    Уменьшение потребления памяти, исправления ошибок и опечаток в описании

    Предлагаю следующие изменения:

    • исключить из отслеживания директорию .idea/ из-за нахождения в ней специфичных файлов предназначеных только для IDE
    • добавление глобального .gitignore
    • переход на использование pipenv (в качестве менеджера рабочего окружения)
    • в Readme.md добавлена подсветка синтаксиса, исправлена ошибка в примере использования, дополнено описание способа установки зависимостей используя pipenv
    • в dnevnikru.py вместо метода + используется метод .join, где это не ломает логику использования, преобразовал list в tuple где это возможно (для уменьшения использования памяти)
    • ну и так по мелочи

    хотелось бы ещё больше правок внести, например:

    • укоротить длинну строк - но мне не понятно какая длинна строк используется вами
    • переделать код со 125 по 147 строки т.к. там повторно используется один и тот же код
    • далее избавится от list и использовать tuple
    • добавить описание к функциям и указание на типы ко всем параметрам этих функций но надо это всё обсуждать отдельно, если что моя телега @stepan_skryabin
    opened by stepanskryabin 0
  • не проходит авторизация

    не проходит авторизация

    не проходит авторизация HTTPSConnectionPool(host='login.%d0%b4%d0%bd%d0%b5%d0%b2%d0%bd%d0%b8%d0%ba.%d1%80%d1%84', port=443): Max retries exceeded with url: /login/token?token=e6%2FHeWIzcpm91bCz8MupmxgVZtkUIR%2FWtJ1lfD6y0gYVsHsSX4P7ZuaNivmBnRzMMYLPr3UOyROFbNmv9kzRLy0RzjKpix8nBeG4RYRhv5rcMl%2BokFAQjFYVIwoZb8uihcVosJpsh2AToaUaa8IKyVs01PxAHdlx8ZnpzJqG91n80SgHPdBy69f%2B3jjgRM3TnqllgEyuesSVR6zNJpOZNI%2BtJX67zp6oMDaR4dvGbP7R28ECPJJq%2Bzl3s%2FCDnbJ6fQMyLH5fO9t0jGbih1XYHH%2BJ0JI%3D&returnUrl=https%3A%2F%2F%D0%B4%D0%BD%D0%B5%D0%B2%D0%BD%D0%B8%D0%BA.%D1%80%D1%84%2F (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7fb08bfa3220>: Failed to establish a new connection: [Errno -2] Name or service not known'))

    opened by vedmakoff 4
Owner
Aleksandr
Aleksandr
Companion Web site for Fluent Python, Second Edition

Fluent Python, the site Source code and content for fluentpython.com. The site complements Fluent Python, Second Edition with extra content that did n

Fluent Python 49 Dec 8, 2022
Site de gestion de cave à vin utilisant une BDD manipulée avec SQLite3 via Python

cave-vin Site de gestion de cave à vin utilisant une bdd manipulée avec MySQL ACCEDER AU SITE : Pour accéder à votre cave vous aurez besoin de lancer

Elouann Lucas 0 Jul 5, 2022
A Python program for calculating the 95%CI for GNSS-derived site velocities

GNSS_Vel_95%CI A Python program for calculating the 95%CI for GNSS-derived site velocities Function_GNSS_95CI.py is a Python function for calculating

BobWang@UH 4 Dec 16, 2022
A site that went kinda viral that lets you put Bernie Sanders in places

Bernie In Places An app that accidentally went viral! Read the story in WIRED here Install First, create a python virtual environment, and install all

null 310 Aug 22, 2022
uMap lets you create maps with OpenStreetMap layers in a minute and embed them in your site.

uMap project About uMap lets you create maps with OpenStreetMap layers in a minute and embed them in your site. Because we think that the more OSM wil

null 771 Dec 29, 2022
Tiny demo site for exploring SameSite=Lax

samesite-lax-demo Background on my blog: Exploring the SameSite cookie attribute for preventing CSRF This repo holds some tools for exploring the impl

Simon Willison 6 Nov 10, 2021
An alternative site to emplea.do due to inconsistent service of the app.

feline a agile and fast alternative to emplea.do License: MIT Settings Moved to settings. Basic Commands Setting Up Your Users To create a normal user

Codetiger 8 Nov 10, 2021
A small site to list shared directories

Nebula Server Directories This site can be used to list folder and subdirectories in your server : Python It's required to have Python 3.8 or more ins

Adrien J. 1 Dec 28, 2021
Djangoblog - A blogging site where people can make their accout and write blogs and read other author's blogs

This a blogging site where people can make their accout and write blogs and read other author's blogs.

null 1 Jan 26, 2022
Plugin to manage site, circuit and device diagrams and documents in Netbox

Netbox Documents Plugin A plugin designed to faciliate the storage of site, circuit and device specific documents within NetBox Note: Netbox v3.2+ is

Jason Yates 38 Dec 24, 2022
Automatização completa do site https://blaze.com

PyBlaze Pyblaze possibilita o acesso a api do site blaze utilizando python, retornando os últimos resultados de crashs e doubles. Agora também é possí

Cleiton Leonel 24 Dec 30, 2022
Ahmed Hossam 12 Oct 17, 2022
Utility functions for working with data from Nix in Python

Pynixutil - Utility functions for working with data from Nix in Python Examples Base32 encoding/decoding import pynixutil input = "v5sv61sszx301i0x6x

Tweag 11 Dec 16, 2022
The first Python 1v1.lol triggerbot working with colors !

1v1.lol TriggerBot Afin d'utiliser mon triggerbot, vous devez activer le plein écran sur 1v1.lol sur votre naviguateur (quelque-soit ce dernier). Vous

Venax 5 Jul 25, 2022
Python tools for working with Orbit Ephemeris Messages (OEMs).

Python Orbit Ephemeris Message tools Python tools for working with Orbit Ephemeris Messages (OEMs). Development Status Installation The oem package is

Brad Sease 4 Apr 6, 2022
A Python wrapper API for operating and working with the Neo4j Graph Data Science (GDS) library

gdsclient NOTE: This is a work in progress and many GDS features are known to be missing or not working properly. This repo hosts the sources for gdsc

Neo4j 100 Dec 20, 2022
This is a working model for which I have used python.

Jarvis_voiceAssistance This is a working model for which I have used python. This model can: 1)Play a video or song on youtube. 2)Tell us time. 3)Tell

Hardik Jain 1 Jan 30, 2022
Open source tools to allow working with ESP devices in the browser

ESP Web Tools Allow flashing ESPHome or other ESP-based firmwares via the browser. Will automatically detect the board type and select a supported fir

ESPHome 195 Dec 31, 2022
Wisdom Tree is a concentration app i am working on.

Wisdom Tree Wisdom Tree is a tui concentration app I am working on. Inspired by the wisdom tree in Plants vs. Zombies which gives in-game tips when it

NO ONE 241 Jan 1, 2023