# 13 Неделя года

Создание моей личной страницы портфолио. Интегрированные статьи Medium в моем личном блоге. Получение статистики GitHub и ее анимация. Работа с Tkinter для создания графических интерфейсов.

Страница личного портфолио

В резюме за последние недели я уже упоминал, что в настоящее время я создаю свою личную страницу портфолио, где я хочу не только делиться сообщениями в блоге с другими, но и представлять проекты, которые я создал или в которых участвовал. На прошлой неделе я сосредоточился на этом крупном проекте, чтобы запустить его как можно быстрее.

Домашняя страница почти готова, осталось откорректировать содержимое только одного раздела. Страница блога уже готова и будет более подробно рассмотрена в следующем разделе этой статьи. Еще одним важным достижением является интегрированный раздел «Факты GitHub», о котором я расскажу чуть подробнее в третьем разделе.

В конце концов, я совершенно уверен, что закончу этот проект и запущу его в онлайн к середине апреля.

Средние статьи в личном блоге

Все статьи о кодировании и связанных с технологиями темах я написал и опубликовал на Medium. Тем не менее, особенностью моей новой страницы портфолио должен быть блог, где люди могут видеть и читать мои письменные сообщения. Поскольку я не хотел копировать и вставлять все из Medium в свой собственный блог, я решил найти способ автоматически получать последние статьи, опубликованные на Medium, и отображать их в своем блоге со ссылкой на исходный пост на Medium. В настоящее время Mediums API не поддерживает получение статей определенного пользователя. Поэтому мне нужно было ознакомиться с RSS-каналом Mediums, который, казалось, был единственным способом получить необходимую информацию.

Я открыл интерактивную оболочку Python и начал собирать информацию. Первое, что я заметил, это то, что пакет feedparser, который я использовал, не мог получить весь контент RSS-канала. Поэтому мне нужно было получить RSS-канал через обычный запрос и добавить его в парсер.

import requests
import feedparser
page = requests.get("https://medium.com/feed/@DahlitzF")
rss = feedparser.parse(page.content)

С помощью приведенного выше кода я смог получить доступ к последним сообщениям из своей учетной записи Medium. rss.entries — это список всех сообщений, поэтому мне нужно было только перебрать список и получить доступ к свойствам каждого сообщения, например. название, резюме, ссылку, дату публикации и URL-адрес изображения. Я поместил код в свое приложение Flask и создал динамический HTML-шаблон. Для получения дополнительной информации вы можете взглянуть на сделанные коммиты и на весь проект.

На миниатюре этой статьи показан небольшой снимок готовой страницы блога.

Факты о GitHub

На главной странице я хотел поделиться некоторой статистикой GitHub о моем вкладе в открытый исходный код. Однако информация об общем количестве коммитов, проблем и запросов на вытягивание недоступна или, по крайней мере, недоступна без перебора всех репозиториев. Я не нашел способ. Поэтому я использовал доступную информацию: количество публичных репозиториев, публичные списки, подписчики и подписчики. Вся эта информация доступна через:

https://api.github.com/users/‹имя пользователя›

В другой раз я настроил запрос и получил данные из API и записал их в шаблон. Вот небольшой фрагмент кода, показывающий, как получить данные:

import requests
url = "https://api.github.com/users/DahlitzFlorian"
github_user = requests.get(url).json()
context = {"name": "home",
           "repos": github_user["public_repos"],
           "gists": github_user["public_gists"],
           "followers": github_user["followers"],
           "following": github_user["following"],
           "contributions": contributions}

Результат показан на GIF ниже.

Если вам интересно увидеть календарь взносов GitHub под чистыми числами, вам не нужно бояться, что вы что-то пропустили. Я сделал дополнительные запросы на получение календаря в формате svg и добавил его в div-контейнер ниже.

Взгляните на очень простой код:

import requests
from bs4 import BeautifulSoup
url = "https://github.com/users/DahlitzFlorian/contributions"
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
contributions = soup.find("svg")

Переменная вклады уже была добавлена ​​в переменную контекста в предыдущем фрагменте кода.

Это все о том, как я собрал раздел Факты на GitHub. Если вы хотите увидеть полный код, пожалуйста, взгляните на мой общий проект. Не стесняйтесь задавать вопросы или связаться со мной через Twitter для получения дополнительной помощи по этой теме.

Дополнительные материалы и информация

Вдобавок к уже упомянутым вещам, я продолжил решать алгоритмические задачи на HackerRank с помощью Python. На мой взгляд, это отличный ресурс для обучения вас пониманию определенного языка программирования (или даже нескольких).

Кроме того, я полностью закончил свой преобразователь цвета Python, добавил его в Travis CI для непрерывного тестирования и опубликовал в PyPI. Теперь вы можете установить его через

pip install color-changer

Для получения дополнительной информации загляните в репозиторий GitHub.

В пятницу я стал патроном подкаста Talk Python To Me от Майкла Кеннеди, который мне очень нравится слушать раз в неделю. Вы обязательно должны это проверить. Желаю вам приятной недели, оставайтесь любопытными и продолжайте программировать!

Статьи и выпуски подкастов

Как обычно, я делюсь с вами списком статей, которые я прочитал, и эпизодов, которые я прослушал и которыми стоит поделиться.

Статьи

Эпизоды