Без темы...

Творчество, творчество...
Без музы - не хочется.
Ваше высочество,
Теплая ночь -
Вроде зима уже,
И снега хочется,
А его все нету,
Ешкина мать...
Пива стакан,
Сигаретная пачка,
Да, истукан.
И пельмени еще...
Бляха!
Хочется.
Ночью.
Творчества?
А может снега?
А может спать?..
А может сурком,
Непробудным
До вечера,
Завтра продрыхнуть?
Или все же встать?
Скажем, к обеду?
А может к полднику?
А может быть ну его на фиг?
Как знать?
И тишина...
С балкона зодчество
Столичное видится.
Благодать...
Пиво выпито,
Все искурено.
Тишина первозданная.
...
Пойду-ка спать...


Эгоизм заложен в нас эволюцией

Как и зачем эволюция сделала нас эгоистами? Почему люди так много думают о себе и действуют в своих интересах? Отвечает наука!

Отрывок из книги Андрея Курпатова "Быть эгоистом"

В психологии есть фантазёрство (имена таких «фантастов» мы называть не будем), есть дилетантство (сим грешат многие из нас), а есть данные реальных научных экспериментов. Причём изучение наших бра­тьев меньших с психологической точки зре­ния не менее показательно, чем и изу­чение человека. Так что обратимся к экспе­ри­ментам, которые были поставлены на ближайших наших родственниках по эволюционной линии — обезьянах.

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

Обезьяны, участвовавшие в этом эксперименте, очень быстро сообразили, что им нужно показывать на «правильный» ящик, и натренировались показывать куда надо. Итак, заходит человек, обезьяна показывает ему на ящик с бананом, он его открывает и отдает ей банан. Дальше исследователи усложнили эксперимент: перед обезьянами стал появляться не один, а два человека. Причем один «хороший», а другой — «плохой».

Read more...Collapse )

***

Мне известно, что было в этом.
Но не знаю, что будет в новом,
Здесь - оставь свои гадости.
В новом - не лишайся святости.
И быть может тогда от крайности
До желанной дойдём бескрайности.
Осмотрите свои окрестности -
Все границы от нашей робости.
Не лишай себя светлой радости,
Не глуши в себе муки совести,
Раздели с другим его сладости,
Преломи и чужие горести.
Разгляди в суете праздности
Чудеса и иные странности...

(с) 2018

С наступающим Новым годом!

Парадокс парадоксов

Мир учёных — странный мир. Как и сами учёные. Порой, в этом мире рождаются парадоксы, каких свет раньше не видел. Но ниже речь пойдёт не только о парадоксах, но и том... собственно читайте и сами поймёте о чём. Возможно, поймёте ;)


Парадокс Тахионного убийства (Ричард Мюллер, профессор Калифорнийского университета в Беркли).


Read more...Collapse )

Python #3.0 yt_dl.py

Итак, в первом приближении, вот такой скрипт получается.



Для чего этот скрипт?
Скрипт предназначен для облегчения загрузки видео с очень большого количества известных сайтов, таких, как youtube, vimeo, vk, facebook.com и т.п.
Загрузка возможна, как отдельных видео файлов, так и видео плейлистов.
В некоторых случаях поддерживается загрузка потоков трансляции (прямых эфиров).
Кроме того, возможна загрузка обложек, описаний, субтитров.
Скрипт так же позволяет извлекать из видео только аудиодорожки и сохранять их в аудиофайлах.

Скрипт, по сути своей, это простая обёртка для youtube-dl и ffmpeg.
Чтобы упростить пользователю работу с этим программным обеспечением, я и создал этот скрипт, сократив набор возможных параметров до минимума. Скрипт объединяет в себе возможности упомянутых ранее программных средств.


Для работы скрипта необходим Python версии 3.6 или выше, ffmpeg и ряд зависимостей.

Python брать здесь: https://www.python.org/downloads/release/python-371/
Для 64-битных Windows: https://www.python.org/ftp/python/3.7.1/python-3.7.1-amd64.exe
Для 32-битных Windows: https://www.python.org/ftp/python/3.7.1/python-3.7.1.exe

Для Linux Python 3 обычно установлен уже по-умолчанию. Если нет, то ставим примерно так (для разных версий Linix существует множество способов установки):
# Ubuntu:
$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt install -y python3.7
$ sudo apt install -y python3-pip

# CentOS 6: https://www.2daygeek.com/3-methods-to-install-latest-python3-package-on-centos-6-system/
$ sudo yum install -y epel-release
$ sudo yum --disablerepo="*" --enablerepo="epel" -y install python37
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ /usr/bin/python3.7 get-pip.py

# CentOS 7
$ sudo yum install -y epel-release
$ sudo yum -y upgrade
$ sudo yum install -y python37
$ sudo yum install -y python37-pip

# Fedora
$ sudo dnf -y upgrade
$ sudo dnf install python37
$ sudo dnf install -y python37-pip

# Manjaro 
$ sudo pacman -S python
# или
$ yaourt -S python

# Установка зависимостей (модулей Python)
$ pip3 -m user install package_name







Для Mac OS X: https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-macosx10.9.pkg

FFMPEG: https://ffmpeg.zeranoe.com/builds/


Для 64-битных Windows: https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20181215-011c911-win64-static.zip
Для 32-битных Windows: https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20181215-011c911-win32-static.zip

После установки ffmpeg, необходимо добавить путь до ffmpeg.exe в переменную PATH системного окружения.
Как это сделать, смотрим здесь:
https://github.com/adaptlearning/adapt_authoring/wiki/Installing-FFmpeg
Ну или тыканием так:


Mac OS X: https://ffmpeg.zeranoe.com/builds/macos64/static/ffmpeg-20181215-011c911-macos64-static.zip

Для Linux:
# Для Ubuntu:
$ sudo add-apt-repository ppa:mc3man/trusty-media
$ sudo apt update && sudo apt upgrade
$ sudo apt install ffmpeg

# Для RHEL/CentOS/Fedora:
# FFmpeg уже включён в официальные репозитории RPM в таких дистрибутивах, как RHEL, Fedora и CentOS.
# В некоторых случаях, понадобится подключить дополнительный репозиторий или EPEL или RPMFusion.

# Для RHEL 6.x/CentOS 6.x:
$ sudo yum install epel-release
$ sudo yum install ffmpeg ffmpeg-devel

# Для RHEL 7.x/CentOS 7.x/Fedora 22 и новее:
# Прежде добавьте репозиторий EPEL или RPMFusion.
$ sudo dnf install ffmpeg ffmpeg-devel

# Для Arch/Manjaro:
$ sudo pacman -S ffmpeg
# или
$ yaourt -S ffmpeg-full-git







Установка зависимостей (модулей Python):
# Предварительно, возможно понадобится обновить сам pip (установщик модулей Python)
python -m pip install --upgrade pip

# Установка зависимостей
pip install youtube_dl
pip install colorama

# Обновление зависимостей
pip install --upgrade youtube_dl
pip install --upgrade colorama







Собственно, на этом подготовительные работы завершены.
Теперь можно использовать мой скрипт.

Я создал два варианта задания параметров.
1. Классический только через опции командной строки
2. Классический сокращённый через конфигурационный файл, который необходимо задать в командной строке всего одним соответствующим параметром (-c).

Если используется сразу оба способа, то параметры, заданные 1-м способом перекроют (переопределят) те же параметры, заданные в конфигурационном файле.

В абсолютном большинстве случаев, повторно загружаемые с сайтов видео не будет загружаться заново, если однажды они уже были загружены и уже находятся в папке назначения. Этот механизм полезен для периодического обновления загрузок с обновляемых плей листов. Загружаться будет только то, что ещё не загружено в папку назначения, например, какие-то новинки на сайте источнике.

e:\>yt_dl.py
        Python  : 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)]
        Node    : ak545-work
        Home    : C:\Users\Andre
        OS      : Windows
        Release : 10
        Version : 10.0.17763
        Arch    : AMD64
        CPU     : Intel64 Family 6 Model 60 Stepping 3, GenuineIntel

        The ffmpeg found in: c:\ffmpeg\bin\ffmpeg.exe
        Ошибка: необходимо использовать один из параметров: -l, -i или -c.


        usage:
               yt_dl.py [-h] [-u] [-v] [-c FILE]
               или
               yt_dl.py [-h] [-u] [-v] [-l URL] [-i FILE] [-o DIR] [-x TXT] [-m EXT]
                        [-f EXT] [-e] [-a] [-t] [-s] [-d] [-y URL]
                        [-u LOGIN] [-p PSWD]

        Скрипт для загрузки видео с очень большого количества известных сайтов, таких,
        как youtube, vimeo, vk, facebook.com и т.п.
        Загрузка возможна как отдельных видео файлов, так и видео плейлистов.
        В некоторых случаях поддерживается загрузка потоков трансляции (прямых эфиров).
        Кроме того, возможна загрузка обложек, описаний, субтитров.


        Параметры:
        -h, --help            Справка
        -g, --usage           Показать примеры использования
        -v, --version         Вывести номер версии
        -c FILE, --config-file FILE
                              Ссылка на файл конфигурации, содержащий параметры запуска скрипта.
                              В этом файле могут содержаться все нижеследующие параметры:
        ------------------------------------------------------------------------------------------------
        -l URL, --link URL    Ссылка на http(s) ресурс
        -i FILE, --file FILE  Ссылка на файл, содержащий список http(s) ресурсов
        -l и -i               Взаимно-исключающие параметры

        -o DIR, --out DIR     Корневая папка для сохранения загруженного материала,
                              например: e:\Downloads
        -x TXT, --prefix TXT  Подпапка 1 уровня (имя задаётся значением параметра).
                              Если параметр не задан или пустой, его место занимает
                              подпапка 2-го уровня.
        -m EXT, --merge-output-format EXT
                              Формат выходного файла, например: mp4, mkv, avi.
                              По-умолчанию: mkv
        -f EXT, --format EXT  Формат исходных данных,
                              например: 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'.
                              По-умолчанию: 'bestvideo+bestaudio/best'
        -e, --extractor       Подпапка 2 уровня (имя задаётся по типу сайта
                              источника, например: Youtube)
        -a, --uploader        Подпапка 3 уровня (имя задаётся значением автора
                              загрузки на сайте источнике)
        -t, --thumbnail       Загружать обложки
        -s, --subtitles       Загружать субтитры
        -d, --description     Загружать описание
        -y URL, --proxy URL   Ссылка на прокси, например: socks5://127.0.0.1:9150
        -u LOGIN, --username LOGIN
                             Username for authentication purposes
        -p PSWD, --password PSWD
                             Password for authentication purposes

        (c) AK545 (Andrey Klimov) 2018, e-mail: ak545@mail.ru

e:\_@Python>







e:\_@Python>yt_dl.py -g
        Python  : 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)]
        Node    : ak545-work
        Home    : C:\Users\Andre
        OS      : Windows
        Release : 10
        Version : 10.0.17763
        Arch    : AMD64
        CPU     : Intel64 Family 6 Model 60 Stepping 3, GenuineIntel

        The ffmpeg found in: c:\ffmpeg\bin\ffmpeg.exe

Примеры использования:
*******************************************************************************
E:\yt_dl.py [Параметры]
или
python{3} E:\yt_dl.py [Параметры]
*******************************************************************************
E:\yt_dl.py -l https://www.youtube.com/watch?v=V_VztHT5BzY -o e:\Downloads
E:\yt_dl.py -l ytuser:user -o e:\Downloads
E:\yt_dl.py -l http://vimeo.com/channels/keypeele/75629013 -o e:\Downloads
E:\yt_dl.py -l https://vk.com/videos-46252034 -o e:\Downloads
E:\yt_dl.py -i e:\src-video.txt -o e:\Downloads
E:\yt_dl.py -i e:\src-audio.txt -o e:\Downloads
E:\yt_dl.py -x '(ru)' -i e:\src-audio.txt -o e:\Downloads
E:\yt_dl.py -e -i e:\src-audio.txt -o e:\Downloads
E:\yt_dl.py -e -a -i e:\src-audio.txt -o e:\Downloads
E:\yt_dl.py -e -a -t -s -d -i e:\src-audio.txt -o e:\Downloads
E:\yt_dl.py -e -a -t -s -d -l https://vk.com/videos-46252034 -u 'login' -p 'password' -o e:\Downloads
E:\yt_dl.py -e -a -t -s -d -l https://www.youtube.com/watch?v=V_VztHT5BzY -y 'socks5://127.0.0.1:9150' -o e:\Downloads
E:\yt_dl.py -e -a -t -s -d -m mkv -i e:\src-audio.txt -o e:\Downloads
E:\yt_dl.py -e -a -t -s -d -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' -i e:\src-audio.txt -o e:\Downloads
E:\yt_dl.py -r "[{'key': 'FFmpegExtractAudio','preferredcodec': 'mp3','preferredquality': '192',}]" -i e:\src-audio.txt -o e:\Downloads
E:\yt_dl.py -c e:\video.cfg
E:\yt_dl.py -c e:\audio.cfg
E:\yt_dl.py -c e:\audio.cfg -o e:\Downloads
*******************************************************************************

# Пример конфиг файла

{
#-------------------------------------
# Файл со списком источников
"file": "e:\src-audio.txt",

# Ссылка на источник
#"link": "https://www.youtube.com/watch?v=EVkodhicZps",

# Допускается использовать или только link или только file

#-------------------------------------
# Корневая папка для записи загруженного контента
"out": "e:\audio",
#-------------------------------------
# Далее, от корневой папки, создаются подпапки в следующем порядке:
#-------------------------------------
# Префикс подпапки
"prefix": "( ru ) ",
# Тип источника (если есть)
"extractor": True,
# Автор источника
"uploader": True,
#-------------------------------------
# Предпочитаемый формат исходных данных
"format": "bestaudio/best",

#-------------------------------------
# Пытаться загрузить так же:
# Загружать обложки к видео (если есть)
"thumbnail": True,

# Загружать субтитры к видео (если есть)
#"subtitles": True,

# Загружать описания к видео (если есть)
#"description": True,

#-------------------------------------
# ПОСТОБРАБОТКА
#-------------------------------------
# Формат финального файла
# (если не используется параметр postprocessors)
#"merge-output-format": "mkv",

# Задаёт постпроцессор для извлечения из видео
# аудиодорожки и конвертации её в финальный аудио файл
# параметр merge-output-format при этом игнорируется
"postprocessors": [
        {
                "key": "FFmpegExtractAudio",
                "preferredcodec": "mp3",
                "preferredquality": "192",
        }],

# Загруженные части видео после слияния их в финальное видео
# не будут удаляться
# "keepvideo": True,

# Создаёт в папке загрузки файл истории загруженных видео.
# Видео из этой истории повторно загружаться не будут
# Этот параметр полезно задавать, если вы извлекаете аудио из видео
"download_archive": True,

#-------------------------------------
# ДАННЫЕ ДЛЯ АУТЕНТИФИКАЦИИ
#-------------------------------------
#"username": "login",
#"password": "password",

}

*******************************************************************************
Для корректного завершения скрипта в процессе работы на платформе win32
нажмите: [ CTRL+BREAK ]
*******************************************************************************
e:\>







Формат файла-источника очень простой:
*******************************************************************************
# Яндекс.Музыка - Трек
https://music.yandex.ru/album/11570/track/122698
https://music.yandex.ru/album/11570/track/122697
https://music.yandex.ru/album/11570/track/122699
https://music.yandex.ru/album/11570/track/122703
https://music.yandex.ru/album/11570/track/122695
https://music.yandex.ru/album/11570/track/122700
https://music.yandex.ru/album/11570/track/122702
https://music.yandex.ru/album/11570/track/122701
https://music.yandex.ru/album/11570/track/122696

# Модель для сборки
https://www.youtube.com/channel/UC-TmwyyefjjM9fZdRX7xIWQ/playlists






*******************************************************************************

Для обхода различных блокировок можно использовать браузер Tor.
Запускаем браузер Tor, и не закрывая его добавляем к скрипту опцию:
-y "socks5://127.0.0.1:9150"






Скорость загрузки при этом, надо понимать - будет очень низкой. Но зато таким образом можно очень просто обойти блокировки.

Если для загрузки каких-то видео с сайта источника требуется авторизация, добавляем необходимые опции:
-u "login" -p "password"









Исходники скрипта

Скрипт, разумеется, не идеален. Доработки и развитие в планах. Предложения и замечания принимаются. Никаких гарантий не даю. Использование - свободное.

Валюта иерархии

Потом он обнял меня: человек, умеющий обнимать, – хороший человек.

ОРХАН ПАМУК

Будем считать, что с физиологией инстинкта самосохранения нам всё более-менее понятно. Всё-таки это биология, инстинкты, рефлексы… А какова, в таком случае, психофизиология нашей с вами социальности? Тут, наверное, странно нечто подобное обнаружить.

Но нет, и тут всё то же самое – физиология, рецепторика и тренировка мозга.

То, что мы с вами приматы, надеюсь, понятно. А каким образом наши ближайшие родственники – шимпанзе, бонобо и прочие гориллы – выстраивают свои социальные связи?

Учёные-этологи пролили свет на этот вопрос: главный инструмент создания и регулировки социальных отношений в группе приматов играет груминг (то есть – взаимное вычёсывание).

«Груминга без какой-либо цели просто не существует, – пишет выдающийся приматолог Франс де Вааль, и добавляет: – Всякий груминг имеет политический подтекст».

Долговременные и кратковременные союзы, дружба «с» или дружба «против», распределение пищи и передача навыков – всё это с математической точностью коррелирует с плотностью телесных контактов между членами группы.

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

Read more...Collapse )

Python #2.3

В продолжение:

Python #2.2
Python #2.1
Python #2
Python #1

Добавил:

Подкачку скрытых плейлистов. Дело в том, что если видео плейлистов на сайте https://www.youtube.com слишком много, то в окно браузера будет загружено столько, сколько вмещаются в вертикальный размер окна браузера и чуть чуть больше (с небольшим запасом). При прокрутке содержимого страницы вниз, недостающие данные будут автоматически подгружаться с сайта и так до тех пор, пока данные не исчерпают себя. Собственно, скрипт теперь подкачивает все скрытые плейлисты (если они есть).

Иногда, при загрузке видео с сайта, оно по каким-то причинам, зависящим от сайта (и я знаю, по каким) загружается не полностью. Скрипт теперь после каждой загрузки видео файла проверяет корректность загрузки. Незавершённые загрузки удаляются. Надобность в докачке отсутствует, так как подобное происходит очень редко и из-за того, что данный вариант видео на сайте ещё не прошёл полную обработку (https://www.youtube.com для каждого загруженного на его сервера видео автоматически создаёт серию его клонов с различным битрейтом и в нескольких контейнерах: mp4, webm, 3gpp и mkv). По этой причине лучше попытаться загрузить его заново позже. Как я уже сообщал, ранее успешно загруженные видео повторно загружаться уже не будут, что ускорит процесс обновления загрузки плейлиста на свой компьютер.

Кроме плейлистов скрипт теперь умеет скачивать просто видео файлы из раздела "Видео" на сайте. Это такой раздел, где все видео представлены одним общим списком - без их группировки в плейлисты. Пользователи https://www.youtube.com не всегда группируют свои видео в плейлисты. В этом режиме скрипт в папке загрузке создаст подпапку по имени автора канала (с префиксом (lang) заданным конкретно или определённым автоматически на основании имени автора).

По окончании всех загрузок добавил статистику по количеству загруженных, пропущенных и не загруженных по причине недоступности.








Ссылка на скрипт.




P.S. Кстати, если в вашей системе стоит плеер VLC Media Player я могу сделать так, что в процессе загрузки будет играть радио Relax.
Надо?

Python #2.2

В продолжение:

Python #2.1
Python #2
Python #1

Добавил новый необязательный параметр [lang], а так же расширил возможности скрипта.
В частности, теперь можно скачивать не только отдельный плейлист (одним из двух способов), но и вообще все доступные плейлисты на конкретном канале https://www.youtube.com/.






Ссылка на скрипт.

Python #2.1

В продолжении Python #2 и Python #1

Доработал немного скрипт.

Что сделал / добавил / исправил:

  • Проверку версии python (для работы требуется версия 3.6 и выше)

  • Проверку наличия необходимых модулей python (при отсутствии - производится попытка автоматической установки недостающих)

  • Добавил необязательный параметр выбора формата исходных видео файлов. Допустимые значения mp4 (по-умолчанию), webm, 3gpp

  • Добавил получение названия плейлиста

  • Добавил определение языка названия плейлиста

  • Добавил корректировку пути папки для сохранения видео из плейлиста. Теперь можно указывать только родительскую папку, внутри которой будет создана подпапка по имени названия плейлиста с префиксом языка названия плейлиста (ru) (en) и т.п. Если корневая папка указана не в полном виде, а, например, в виде относительного пути, то скрипт определит текущую папку ОС и уже в ней создаст относительную подпапку, указанную в качестве папки для сохранения видео из плейлиста

  • По завершению скачивания всех видео из плейлиста в папке сохранения видео из плейлиста создастся текстовый лог-файл description.log. Файл в кодировке UTF-8

  • Скаченные из плейлиста видео файлы будут называться так, как объявлено их название

  • Видео файлы плейлиста, которые не доступны на сайте youtube.com по тем или иным причинам (например, видео удалено или ограничено к просмотру) не вызовут ошибку в работе всего скрипта

  • Оптимизировал отрисовку индикатора процесса загрузки видео файлов

  • Если видео файл из плейлиста уже загружен, повторно загружаться он не будет (например, если скрипт будет повторно запущен с точно такими же параметрами, как и в прошлый раз)



Картинки кликабельны:








Ссылка на скрипт.

P.S. Python всё больше и больше вызывает во мне восхищение. Многого ешё не знаю (уже писал, что к изучению языка я приступил недавно, примерно неделю назад), но многое уже получается сделать так быстро, как никогда бы у меня не получилось сделать тоже самое при помощи других языков программирования.