Welcome to Linkbrary Bot project!
Want to collect all your links, articles and videos in one place for future reading? Try out Linkbrary!
Linkbrary helps you to collect links and videos you want to go through later in one place. As easy as sending link to the bot. Have time for reading? Just ask the bot - it will send you random link! Or specify topic, estimated time of difficulty to get what you want!
- Demo
- Features
- Technology Stack
- Project Glossary
- Project Architecture
- Code Best Practices
- Materials for SSAD Course
- Credits
- Universal link storage accessible from any platform
- Automatic links tagging
- Automatic time to read/view estimation
- Getting random unread links
- TelegramAPI
- Python
- MongoDB
- Telegram Bot - automated dialogue system in Telegram that is able to connect user and backend service of the app.
- Link Analyzer Tool - part of backend app service, which is able to: process links, get link’s text, determine features of a link’s text (topic, estimated time to read/view).
- Link Classification Tool - trained machine learning model for topic classification task.
- Links Database - database of links and custom tags assigned to them.
-
SOLID Principles:
-
Single Responsibility Principle
The principle of single duty requires that one class does only one job. Thus, if a class has more than one job, it becomes dependent. Changing the behavior of one class job leads to a change in another. Link Analyzer is an example of such a class.
-
Liskov Substitution Principle
The main idea behind the Liskov Substitution Principle is that for any class, the client should be able to use any subclass of the base class without noticing the difference between them, and therefore without any changes in the behavior of the program during execution. This means that the client is completely isolated and unaware of changes in the class hierarchy. For example, we used InvalidUrl, which inherits from BaseException and uses all its methods.
-
Interface Segregation Principle
Create thin interfaces that are customer-centric. Clients should not depend on interfaces that they do not use. This principle eliminates the disadvantages of implementing large interfaces. An example in our project is the Analyzer interface.
-
-
Using Linter:
- Using PyTest:
Innopolis University students, Data Science track:
- Daniil @igudesman Igudesman
- Mikhail @Glemhel Rudakov
- Anna @asleepann Startseva




