Nexia: различия между версиями

Материал из Поле цифровой дидактики
Новая страница: «{| class="wikitable" |- | Описание || Сайт, который отслеживает популярные посты с платформы Reddit. |- | Область знаний || Программирование на Python, Работа с API, Веб-технологии |- | Область использования (ISTE) || Digital Citizen |- | Возрастная категория || 18 |- | Близкие рецепту поня...»
 
Нет описания правки
Строка 1: Строка 1:
{| class="wikitable"
{| class="wikitable"
|-
|-
| Описание || Сайт, который отслеживает популярные посты с платформы Reddit.
| Описание || Сайт, отслеживающий популярные посты с платформы Reddit.
|-
|-
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]
|-
| Область использования (ISTE) || [[Digital Citizen]]
|-
| Возрастная категория || 18
|-
|-
| Близкие рецепту понятия || Лента, популярное, новости
| Близкие рецепту понятия || Лента, популярное, новости
Строка 16: Строка 12:
<!-- Карточка проекта -->
<!-- Карточка проекта -->
     <div style="background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
     <div style="background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
         <h2 style="color: #2c3e50; border-bottom: 2px solid #4a76a8; padding-bottom: 10px; margin-top: 0;">📊 Сайт по сбору популярных статей Reddit.</h2>
         <h2 style="color: #2c3e50; border-bottom: 2px solid #48db92; padding-bottom: 10px; margin-top: 0;"> Сайт по сбору популярных статей Reddit.</h2>
         <p><b>Автор:</b> Харламова Анна</p>
         <p><b>Автор:</b> Харламова Анна</p>
         <p><b>Группа:</b> АДЭУ-221</p>
         <p><b>Группа:</b> АДЭУ-221</p>
Строка 23: Строка 19:
     </div>
     </div>


== Введение ==
<div style="background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
        <h3 style="color: #2c3e50;">Введение</h3>
 
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.
Строка 29: Строка 27:
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.


<!-- Задачи проекта -->
     <div style="background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
     <div style="background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
         <h3 style="color: #2c3e50;">🎯 Цель проекта</h3>
         <h3 style="color: #2c3e50;">Задачи проекта:</h3>
         <ul>
         <ul>
             <li>Изучить работу внешних API (Reddit и Hacker News).</li>
             <li>Изучить работу внешних API (Reddit и Hacker News).</li>
Строка 44: Строка 41:
     </div>
     </div>


==🏗 Архитектура приложения==
    <div style="background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
{{#mermaid: flowchart TB
        <h3 style="color: #2c3e50;">🏗 Архитектура и блок-схема проекта</h3>
     A[🌐 Уровень представления (Frontend)] --> B(🚀 Backend (API-сервер)
        <p>Архитектура построена по принципу клиент-серверной модели и включает несколько уровней:</p>
     B --> C(🔌 Слой бизнес-логики)
       
     C --> D(🌍 Внешние API)
        <div style="display: flex; flex-direction: column; align-items: center; margin-top: 20px;">
     D --> E(⚙️ Инфраструктурный слой)  
            <div style="position: relative; width: 360px;">
                <div style="background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;">🌐 Уровень представления (Frontend)
<ul>
            <li>Реализован через статические файлы (static).</li>
            <li>Отображает данные пользователю.</li>
            <li>Отправляет HTTP-запросы к серверу.</li>
        </ul>
</div>
                <div style="width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;"></div>
                <div style="background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;">🚀 Backend (API-сервер)
<ul>
            <li>Обработка HTTP-запросов.</li>
            <li>Маршрутизация (/api/reddit, /api/news, /api/comments).</li>
            <li>Возврат данных в формате JSON.</li>
            <li>Логирование.</li>
        </ul>
</div>
                <div style="width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;"></div>
                <div style="background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;">🔌 Слой бизнес-логики
<ul>
            <li>RedditClient.</li>
            <li>NewsClient.</li>
        </ul>
</div>
                <div style="width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;"></div>
                <div style="background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;">🌍 Внешние API
<ul>
            <li>Reddit API.</li>
            <li>Hacker News API.</li>
        </ul>
</div>
                <div style="width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;"></div>
                <div style="background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;">⚙️ Инфраструктурный слой
<ul>
            <li>Переменные окружения (.env).</li>
            <li>Логирование (logging).</li>
            <li>HTTP-клиент (requests).</li>
            <li>ASGI-сервер Uvicorn.</li>
        </ul>
</div>
            </div>
        </div>
    </div>
 
<div style="background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
        <h3 style="color: #2c3e50;">⚙️ Логика работы приложения</h3>
{{#mermaid:
flowchart TB
     A[Пользователь обращается к API (например, /api/reddit)] --> B(Сервер на FastAPI принимает запрос)
     B --> C(В зависимости от маршрута создаётся RedditClient или NewsClient)
     C --> D(Клиент отправляет HTTP-запрос к внешнему API)
     D --> E(Полученные данные:проверяются, обрабатываются и приводятся к нужному формату)
    E --> F[Результат возвращается пользователю в формате JSON]
    F --> G[Все действия логируются]
}}
}}
== Описание приложения ==
Мобильное приложение «Цитата дня» предлагает пользователям возможность получать ежедневные мотивационные цитаты простым нажатием кнопки. Каждая цитата выбрана с учетом ее способности вдохновлять и поддерживать позитивный настрой. Это приложение станет полезным инструментом для тех, кто ценит короткие, но глубокие мысли, способные изменить взгляд на мир и зарядить на новые свершения. Пользователи «Цитаты дня» смогут находить моменты для размышлений и саморефлексии, что поможет им сосредоточиться на важных аспектах жизни.
== Цель проекта ==
Цель проекта «Цитата дня» заключается в предоставлении пользователям ежедневного источника вдохновения и мотивации через подобранные цитаты. Приложение стремится помочь людям находить моменты для размышлений, поддерживать позитивный настрой и способствовать личностному росту. Оно направлено на создание привычки уделять время саморазвитию и саморефлексии, что может способствовать улучшению общего психоэмоционального состояния пользователей.

Версия от 01:40, 27 марта 2026

Описание Сайт, отслеживающий популярные посты с платформы Reddit.
Область знаний Программирование на Python, Работа с API, Веб-технологии
Близкие рецепту понятия Лента, популярное, новости
Среды и средства для приготовления рецепта Python, Visual studio code

Сайт по сбору популярных статей Reddit.

Автор: Харламова Анна

Группа: АДЭУ-221

Дисциплина: Работа с API социальных сетей и визуализация данных

Статус проекта: Выполнен

Введение

🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News. Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.

💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.

Задачи проекта:

  • Изучить работу внешних API (Reddit и Hacker News).
  • Реализовать клиент для получения постов и комментариев с Reddit.
  • Реализовать клиент для получения новостей с Hacker News.
  • Создать API-эндпоинты для: получения постов, получения новостей, получения комментариев.
  • Организовать обработку и структурирование данных (JSON-формат).
  • Реализовать логирование работы приложения.
  • Обеспечить обработку ошибок при работе с внешними сервисами.
  • Подключить статические файлы для отображения пользовательского интерфейса.

🏗 Архитектура и блок-схема проекта

Архитектура построена по принципу клиент-серверной модели и включает несколько уровней:

🌐 Уровень представления (Frontend)
  • Реализован через статические файлы (static).
  • Отображает данные пользователю.
  • Отправляет HTTP-запросы к серверу.
🚀 Backend (API-сервер)
  • Обработка HTTP-запросов.
  • Маршрутизация (/api/reddit, /api/news, /api/comments).
  • Возврат данных в формате JSON.
  • Логирование.
🔌 Слой бизнес-логики
  • RedditClient.
  • NewsClient.
🌍 Внешние API
  • Reddit API.
  • Hacker News API.
⚙️ Инфраструктурный слой
  • Переменные окружения (.env).
  • Логирование (logging).
  • HTTP-клиент (requests).
  • ASGI-сервер Uvicorn.

⚙️ Логика работы приложения