From fe4778eba59a34f4794b6d5b5a53571256a5748c Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Wed, 14 Sep 2022 20:21:21 +0300 Subject: [PATCH 1/7] update links --- themes/papercut/layouts/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/papercut/layouts/index.html b/themes/papercut/layouts/index.html index b97a897..839824a 100644 --- a/themes/papercut/layouts/index.html +++ b/themes/papercut/layouts/index.html @@ -127,7 +127,7 @@

- 🔗 + 🔗 Library parser from version.json on Minecraft JE

@@ -142,7 +142,7 @@

📫 How to reach me

- Twitter + EMail
From 56f07d5dec947e95cc4bc885d2304be36bd8f55f Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Fri, 16 Sep 2022 01:08:06 +0300 Subject: [PATCH 2/7] remove FTP password --- .gitignore | 2 +- ftp.txt.gpg | Bin 410 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 ftp.txt.gpg diff --git a/.gitignore b/.gitignore index b3cd03d..d609698 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ public/ +public.tar.xz .hugo_build.lock -ftp.txt diff --git a/ftp.txt.gpg b/ftp.txt.gpg deleted file mode 100644 index 0b86a137f6ae9fcf801fd3855b6752f278af79f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmV;L0cHM$0T2UE@wf4RcS+m<2p>vcQQMYUE8HNa@pAXpAih!caUUie6pN@MwNn$| zo+T-ORh6UPG~GSJ8^4K~M;g5-qs{je%suywZmo+&jX@-OkElFR)vzNQy06=wLO$I$ z`n2icIAw@_c@-hlj=Q>c(;K&q{aJm~*R6S%180a!2D@hOXD*V|m>4M!($lkUJC1GcigtNKtP zAg6rP&B2_J4y0iIwSV<0DVjloYIla1C^|MiAnB#Q4^us}&H^v)IT~Fy{*W-u7uaml z`{eFX%C5#!rTUVAmMtKrhepEim8*|D+i3q27G~$(!n%wU12RSQ6VKZduj&tX^L?u0 Eq_}X=K>z>% From 099abe5d62afcf7eb735aae10852b940357e4b87 Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Fri, 16 Sep 2022 01:38:42 +0300 Subject: [PATCH 3/7] requests, get file size --- content/posts/python/request-file-size.md | 116 ++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 content/posts/python/request-file-size.md diff --git a/content/posts/python/request-file-size.md b/content/posts/python/request-file-size.md new file mode 100644 index 0000000..d97e0e3 --- /dev/null +++ b/content/posts/python/request-file-size.md @@ -0,0 +1,116 @@ +--- +title: "Получаем размер загружаемого файла на Python" +date: 2022-09-16T01:08:53+03:00 +draft: false +tags: [python, tips] +--- + +### Введение + +Многие пишут грабберы сайтов на Python. +Я вот например [скачиваю](#) сиськи с [blog.stanis.ru](http://blog.stanis.ru/). + +Но иногда, требуется проверить, не загружен ли файл уже, до того как его скачать. + +Способов сравнения файлов существует достаточное количество, +но в рамках этого руководства я рассмотрю способ сравнения файлов по их размеру. + +### Получение размера локального файла + +В стандартной библиотеке Python, есть функция `getsize()` в модуле `os.path`. + +```python +import os.path + +if __name__ == '__main__': + file_size = os.path.getsize("./avatar.png") + + print("Size: {0} ({1})".format(file_size, type(file_size))) +``` + +Программа вернёт следующий результат: + +```text +Size: 14390 () +``` + +Однако не стоит забывать, что файла может и не быть. +По этому лучше проверять такие ситуации. + +```python +os.path.exists("./avatar/png") +``` + +### Получение размера удалённого файла + +Для работы с HTTP, +я использую модуль [requests](https://requests.readthedocs.io/en/latest/index.html). + +Каждый web-сервер, возвращает заголовки, в которых может быть полезная информация. +Для примера, получим заголовки файла [аватара](https://iiiypuk.me/avatar.png) на моём сайте. + +```python +import requests + +response = requests.get("https://iiiypuk.me/avatar.png") +print(response.headers) +``` + +Вывод будет следующий: + +```text +{ + 'Server': 'nginx/1.20.2', + 'Date': 'Thu, 15 Sep 2022 22:14:41 GMT', + 'Content-Type': 'image/png', + 'Content-Length': '14390', + 'Last-Modified': 'Fri, 08 Jul 2022 11:23:06 GMT', + 'Connection': 'keep-alive', + 'Accept-Ranges': 'bytes' +} +``` + +Нас интересует заголовок `Content-Length`. + +```python +print(response.headers['Content-Length']) +# Выхлоп: 14390 +``` + +Сравнение до боли простое: + +```python +import os.path +import requests + +if __name__ == '__main__': + local_size = os.path.getsize("./avatar.png") + + response = requests.get("https://iiiypuk.me/avatar.png") + remote_size = int(response.headers['Content-Length']) + + if local_size != remote_size: + print("Файлы разные") + print("Локальный размер: {0}\nУдалённый размер: {1}".format( + local_size, remote_size)) + else: + print("Файлы одинаковые") + +``` + +Обрати внимание, что `response.headers['Content-Length']` возвращает значение +строкой, а не целым числом. + +### ВСЁ! + +Можно скачивать файл. + +```python +import shutil +import requests + +response = requests.get("https://iiiypuk.me/avatar.png", stream=True) + +with open("./file.png", "wb") as out_image: + shutil.copyfileobj(response.raw, out_image) +``` From 5daaedab90ce8af4c338f888fe8d7f8cdeedb1c7 Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Fri, 16 Sep 2022 01:56:09 +0300 Subject: [PATCH 4/7] stanis grabber update --- .../posts/2022/update-stanis-tits-scrap.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 content/posts/2022/update-stanis-tits-scrap.md diff --git a/content/posts/2022/update-stanis-tits-scrap.md b/content/posts/2022/update-stanis-tits-scrap.md new file mode 100644 index 0000000..da7a867 --- /dev/null +++ b/content/posts/2022/update-stanis-tits-scrap.md @@ -0,0 +1,34 @@ +--- +title: "Обновил граббер сисек с blog.stanis.ru" +date: 2022-09-16T01:39:33+03:00 +draft: false +tags: [pet-projects, updates] +--- + +### О релизе + +[stanis-tits-scrap](https://git.a2s.su/iiiypuk/stanis-tits-scrap) - +скрипт для скачивания голых и не только девушек с блога stanis.ru. + +Из нововведений, это появилась проверка на наличие уже загруженного изображения. +Теперь сиськи не скачиваются снова, либо скачивается, +если ранее файл был загружен не полностью. + +Второе что я сделал, это восстановил работоспособность функционала +прекращения загрузки остальных файлов. +То есть программа прекращает работу, если новый изображених на сайте нет. + +Раньше это тоже как-то работало, но это было давно и не правда. +Плюс сама идея поменялась. Раньше я хотел скачать всю библиотеку сисек, +то сейчас цель просто поддерживать каталог сисек в актуальном состоянии. +Я ещё позже подумаю, как лучше всё это доделать, но пока пусть будет так. + +Добавил в проект модуль `flit`, для генерации дистрибутивов. +Но выкладывать их, пока не доведу всё до ума, я не буду. + +Изменения, которые описаны выше, доступные по тегу +[1.0.2](https://git.a2s.su/iiiypuk/stanis-tits-scrap/src/tag/1.0.2). + +Пока писал, эту заметку, в голову пришла идея, как лучше сделать всё. +Все ближайшие изменения в проекте, я оформлю на этой странице посредством обновления. +Спасибо за внимание! From 8af1e2e4981fe18229fb3c73504b61968686d589 Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Fri, 16 Sep 2022 03:02:26 +0300 Subject: [PATCH 5/7] update 1.0.3 --- content/posts/2022/update-stanis-tits-scrap.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/content/posts/2022/update-stanis-tits-scrap.md b/content/posts/2022/update-stanis-tits-scrap.md index da7a867..efc8792 100644 --- a/content/posts/2022/update-stanis-tits-scrap.md +++ b/content/posts/2022/update-stanis-tits-scrap.md @@ -32,3 +32,20 @@ tags: [pet-projects, updates] Пока писал, эту заметку, в голову пришла идея, как лучше сделать всё. Все ближайшие изменения в проекте, я оформлю на этой странице посредством обновления. Спасибо за внимание! + +### Update 1 + +**Теперь по умолчанию скачиваются все изображения, от текущего момента, до начала.** + +Добавил в программу спиннеры в сообщение о текущем состоянии. + +Добавил аргументы программы: +`--pages` - можно указать, сколько страниц загружать. +`--directory` - изменить директорию загрузки. + +Удалён сомнительный функционал `resume`. + +Новый релиз **1.0.3** доступен +по [этой ссылке](https://git.a2s.su/iiiypuk/stanis-tits-scrap/src/tag/1.0.3). + +Сборки будут выложены в ближайшем будующем. From a190766973b58e13c1fb5dacb333b5f9363af0a0 Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Fri, 16 Sep 2022 03:51:46 +0300 Subject: [PATCH 6/7] git remote branch in origin --- .../posts/2022/git-remove-remote-branch.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 content/posts/2022/git-remove-remote-branch.md diff --git a/content/posts/2022/git-remove-remote-branch.md b/content/posts/2022/git-remove-remote-branch.md new file mode 100644 index 0000000..78166a7 --- /dev/null +++ b/content/posts/2022/git-remove-remote-branch.md @@ -0,0 +1,23 @@ +--- +title: "Git: Удалить ветку на сервере" +date: 2022-09-16T03:48:34+03:00 +draft: false +tags: [git, tips] +--- + +Для удаления определённой ветки на сервере Git, необходимо выполнить команду: + +```sh +git push --delete +``` + +Например: + +```text +git push origin --delete gh-pages + +remote: . Processing 1 references +remote: Processed 1 references in total +To git.a2s.su:iiiypuk/minecraft-launcher.git + - [deleted] gh-pages +``` From a378aa42a832b6addfe0456f1d2dc672af413d5d Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Sat, 17 Sep 2022 22:49:42 +0300 Subject: [PATCH 7/7] portable imagemagick --- content/posts/2022/portable-imagemagick.md | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 content/posts/2022/portable-imagemagick.md diff --git a/content/posts/2022/portable-imagemagick.md b/content/posts/2022/portable-imagemagick.md new file mode 100644 index 0000000..dfb97a3 --- /dev/null +++ b/content/posts/2022/portable-imagemagick.md @@ -0,0 +1,78 @@ +--- +title: "Портативный ImageMagick в Linux" +date: 2022-09-17T22:23:58+03:00 +draft: false +tags: [guide, linux, imagemagick] +--- + +## ImageMagick +Набор программ для чтения и редактирования файлов множества графических форматов. +Является свободным и кроссплатформенным программным обеспечением. _(с) Википедия_ + +Во многих дистрибутивах продукт поставляется из коробки (скорее всего как зависимость), +однако у меня в [Porteus](http://porteus.org/) (основан на [Slackware](http://www.slackware.com/)) +пакет отсутсвует. + +Более чем начинающий пользователь ОС на базе ядра Linux +знаком с [AppImage](https://appimage.org/). + +**AppImage** - это приложения, которые запускаются в любом месте. + +На странице загрузки [ImageMagick](https://imagemagick.org/script/download.php#linux) +первым в списке представлен вариант AppImage. +Я даже не могу вспомнить, кто из разработчиков ПО +предлагал загрузить их программу в пакете AppImage +по умолчанию. + +В релизах на странице проекта на [GitHub](https://github.com/ImageMagick/ImageMagick/releases) +представлены для загрузки исключительно AppImage пакеты. +Даже в двух вариантах, собранных GCC и Clang. + +На сайте ImageMagick написано, что образ AppImage имеет открытую политику безопасности. +Они также настоятельно рекомендуют настроить политику безопасности. + +Для этого необходимо просто добавить [пользовательскую политику](https://imagemagick.org/script/security-policy.php) +безопасности в свой локальный путь, +например, `~/.config/ImageMagick/policy.xml` и проверьте с помощью этой команды: +```sh +./magick -list policy +``` + +## Использование + +В других дистрибутивах, где ImageMagick собирается из исходных кодов +доступна команда `convert`. +В сети множество примеров обработки изображений посредством этой утилиты. + +В случае использования образа AppImage необходимо запускать `convert` как аргумент. + +```sh +magick convert +``` + +## GCC or Clang + +Несмотря на то, что я загрузил **Clang** версию `ImageMagick--clang-x86_64.AppImage` (7.1.0-48) +со страницы [GitHub](https://github.com/ImageMagick/ImageMagick/releases/tag/7.1.0-48), +запуск утилиты с параметром `--version` говорить мне, что программа собрана **GCC**. + +```text +magick --version +Version: ImageMagick 7.1.0-48 Q16-HDRI x86_64 c1ca24765:20220910 https://imagemagick.org +Copyright: (C) 1999 ImageMagick Studio LLC +License: https://imagemagick.org/script/license.php +Features: Cipher DPC HDRI OpenMP(3.1) +Delegates (built-in): bzlib djvu fontconfig freetype jbig jng jpeg lcms lqr lzma openexr png raqm tiff webp x xml zlib +Compiler: gcc (4.2) +``` + +ХЗ почему так, работает и пофиг. + +## Размеры + +AppImage пакет занимает ~27MB, против ~11MB в том же ArchLinux. + +Да больше, но зато я не буду увеличивать энтропию, +тратить процессорное время и собирать из исходных кодов. + +Use AppImage, Luke ;)