- Saved searches
- Use saved searches to filter your results more quickly
- License
- dezzev/linkshortener
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Создаём укорачиватель ссылок — wxPython #34
- Создание простого укорачивателя
- Укорачиваем ссылку, используя другие укорачиватели
- Итоги
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Простой сокращатель ссылок на Python
License
dezzev/linkshortener
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Давно ли ты хотел подчинить себе мир? Сделать так, чтобы все люди подчинялись тебе? Это очень легко сделать с сокращателем ссылок Runiv!
Наш сокращатель ссылок — это простой, удобный и минималистичный open-source ответ коммерческим аналогам.
Этот код передан в общественное достояние. Это значит, что вы можете делать с ним все, что угодно, даже продавать, не оставляя никаких ссылок и копирайтов.
- Установите Python 3
- Склонируйте репозиторий git clone https://github.com/dezzev/runiv
- Отредачьте config.py
- Сделайте SQLite3 бд из дампа (подсказка: Short.sql)
- Установите все важные вещи
pip3 install -r requirements.txt
А теперь, если вы запускаете на локалке то просто запускаете app.py, как обычно
А если вы хотите запустить это на сервере — самый оптимальный вариант это gUnicorn + nginx
Удачи в захвате вселенной!
Создаём укорачиватель ссылок — wxPython #34
В далёком 2009, я был постоянным читателем Ars Technica. Они иногда постили статьи о Python, и я заметил одну из них, в которой говорилось об использовании PyGTK для сокращения ссылок. PyGTK было довольно сложно установить на Windows, а так как Windows в тот момент был моей основной средой программирования, я решил использовать wxPython. Так что, в этой статье, мы сделаем действительно простое приложение для сокращения ссылок, а затем создадим более сложное для тех же целей.
Создание простого укорачивателя
Этот простой укорачиватель полностью основан на материалах, которые я прочёл в той статье. Это код прекрасен и лаконичен. Давайте взглянем на версию этого кода для Python 2.
Это достаточно короткий фрагмент кода. Всё, что вам нужно это рамка, панель и TextCtrl. BoxSizer не требуется, но он может быть полезен в случаях, когда нужно растянуть TextCtrl на всю ширину рамки. Основное внимание стоит уделить нашему хэндлеру событий, который называется onTextChange.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Здесь мы захватываем текст, который был вставлен в TextCtrl, а затем используем Regular Expression, чтобы определить валидная это ссылка или же нет. Мы также убеждаемся в том, что длина исходной ссылки больше, чем 20 символов. Если оба чека были пройдены, то мы укорачиваем ссылку, используя веб-сайт https://is.gd/.
Примечание: Этот пример в первозданном виде работает только на Windows. В других случаях вы получите SSL-ошибку. Если вы столкнулись с данной проблемой, это значит, что вам нужно обновить и/или настроить ваш пакет openSSL. Вам также стоит проверить свои биндинги Python к openSSL.
В Python 3, библиотеки urllib были объединены в одну, так что код нужно будет переработать, принимая во внимание данное изменение. Вот обновлённый вариант:
Укорачиваем ссылку, используя другие укорачиватели
В интернете существует масса других укорачивателей ссылок. Например, вы можете предпочитать использовать Bit.ly или tinyURL. Для большинства этих сервисов существую Python-врапперы. В следующем нашем примере мы будем использовать пакеты tinyurl и bitly. Вы можете установить оба, с помощью pip.
Учтите, что для корректной работы Bit.ly, вам нужно будет получить ключ его API. Также есть ещё один пакет, который, как по мне, также заслуживает внимания. Он называется pyshorteners. Он поддерживает сразу несколько протоколов в одном пакете. Так что pyshorteners наверняка достоит вашего внимания.
А теперь давайте двигаться дальше и разбираться с кодом. Учтите, что данный код использует urllib из Python 2, так что, если у вас вдруг установлен Python 3, вам нужно будет обновить данный код также, как я сделал это в предыдущей части статьи.
Данный фрагмент кода немного длиннее чем тот, что был в моём простом примере, но в него встроено гораздо больше логики. Сначала я занялся внедрением некоторых исключений, которые понадобятся в случае, если у программиста не установлены модули pyshorteners.
Если их действительно нет, то запускается флаг, который предотвращает добавление данных опций. Вы увидите это в действии в классе MainPanel, а именно в его методе createLayout. Именно здесь мы добавляем опции к списку выбранных для использования в нашем комбо-боксе. В зависимости от того, что вы устанавливали, вы увидите от одной до трёх опций в вашем выпадающем списке.
Следующий интересный фрагмент тот, в котором ввод ссылки в текстовый контроль привязывается к фокус-событию. Мы используем его, чтобы текстовый контроль мог очистится перед вставкой в него следующей ссылки.
Кстати, учтите, что на выходе текстовый контроль доступен только в режиме чтения, то есть вы не сможете отредактировать укороченную ссылку в самом приложении. Это не даёт пользователю повредить только что созданную ссылку. Наконец, мы добрались до двух последних виджетов: кнопок сокращения ссылки и буфера обмена.
Давайте быстренько взглянем, что будет с методом onCopy, если сделать следующее:
Как вы видите, он захватывает текущий текст из текстового контроля для ввода и создаёт из него отдельный TextDataObject. Затем мы пытаемся открыть буфер обмена, и, если у нас получилось, мы вставляем в него данные, используя метод буфера обмена под названием SetData. Наконец, мы сообщаем пользователю о том, что сделали посредством изменения строки статуса рамки.
В методе onShorten, я снова использую обычные выражения, которые взял с программы, найденной мной на Ars, чтобы проверить вставил ли пользователь валидную ссылку, её длину, тем самым убеждаясь, что вставленная ссылка нуждается в укорачивании. Вы получаем тип короткой ссылки из комбо-бокса, а затем используем условия для её укорачивания в соответствии с выбранным методом сокращения.
Метод shortenWithIsGd делает всё то же, что описано в первом примере, так что его мы пропустим. Метод shortenWithBitly показывает, что нам нужно установить свойства LOGIN и API_KEY для того, чтобы мы смогли укоротить ссылку. После того, как мы это сделали, мы просто вызываем метод bitly, который называется shorten(). В методе shortenWithTinyURL всё даже проще: всё что вам нужно будет сделать – вызвать метод tinyURL под названием create_one().
Итоги
Теперь вы знаете несколько способов укорачивания ваших длинных ссылок. Не стесняйтесь добавлять ваши собственные наработки или же добавлять в приложение пакеты от других сервисом по укорачиванию ссылок. В общем, делайте всё, чтобы сделать приложение максимально удобным для вас, и не забывайте получать удовольствие от кодинга!
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»