Ocean
А что взамен используешь? Open office online? Или вообще ничего?
Не, я просто скрипты в Google Sheets перестал использовать и всё. Они там предлагают язык этот их учить, чтобы функции писать в документах, а я просто на него забил - пускай сами учат свой язык, который нафиг не нужен. А в LibreOffice скрипты на JavaScript снаружи лежат, это тоже неудобно. Хочется, чтобы оно внутри файла хранилось, потому что он же гуляет туда-сюда, где-то он в бэкап идёт и так далее. Это его надо бэкапить, потом скрипты надо бэкапить - ну, такое.
Так что я просто делаю базу данных и клиент к ней. Ничего сложного. Базу данных можно экспортировать в документ, пригодный для LibreOffice. Скачанный документ какой-то откуда-то можно влить в базу данных. Если у него формат неподходящий, можно его переформатировать. Вот я переформатировал документ из одного вида в другой. Это было
задание на форуме. Вот там довольно сложное переделывание было. Но, как видишь, скрипты эти короткие довольно. Это в 2016 году было, с тех пор-то я поднялся ещё выше. Несколько языков выучил ещё. Вот я в прошлом году AWK выучил наконец-то, теперь им владею и очень много уже функций понаписал с ним в рабочих скриптах.
Вот из последних:
Скрипт качает фильмы с YouTube или VK или OK, то есть он сам определяет, откуда ссылка, и подбирает правильный способ скачивания. Так вот там применён AWK (инфа, если не знаешь
wiki.en.awk wiki.ru.awk)
Это Bash-функция, внутри которой AWK-код
load_file_ok_get_vformat()
{
local url=$1
Ytl "$url" | awk '
state == 0 {
if ($1 ~ "^(sd|hd)$")
state = 1
}
state == 1 {
if ($1 ~ "^hls-[0-9]+$") {
vformat = $1
state = 0
}
}
END {print vformat}
'
}
Когда ссылка определена как одноклассниковая, скрипт спускается в эту фукнцию и отыскивает наилучший формат видео по критерию качество-размер. Так вот Ytl - это функция, которая получает простыню из форматов для этого видео. Там много всяких строк, среди которых много всяких форматов и много всяких псевдоформатов.
Допустим, фильм “Грань будущего”, ссылка
https://ok.ru/video/794300844679[guest@localhost ~]$ Ytl https://ok.ru/video/794300844679
mobile mp4 unknown
mpd-0 mp4 256x144 DASH video 122k , mp4_dash container, avc1.64000C, 30fps, mp4a.40.2 (44100Hz)
hls-162 mp4 256x144 162k
lowest mp4 unknown
mpd-1 mp4 426x240 DASH video 359k , mp4_dash container, avc1.640015, 30fps, mp4a.40.2 (44100Hz)
hls-409 mp4 426x240 409k
low mp4 unknown
mpd-2 mp4 640x360 DASH video 765k , mp4_dash container, avc1.64001E, 30fps, mp4a.40.2 (44100Hz)
hls-837 mp4 640x360 837k
sd mp4 unknown
mpd-3 mp4 852x480 DASH video 1361k , mp4_dash container, avc1.64001F, 30fps, mp4a.40.2 (44100Hz)
hls-1466 mp4 852x480 1466k
hd mp4 unknown
mpd-4 mp4 1280x720 DASH video 2952k , mp4_dash container, avc1.64001F, 30fps, mp4a.40.2 (44100Hz)
hls-3148 mp4 1280x720 3148k (best)
[guest@localhost ~]$
[guest@localhost ~]$
[guest@localhost ~]$ load_file_ok_get_vformat https://ok.ru/video/794300844679
hls-3148
[guest@localhost ~]$
Мы сначала смотрим все форматы, а потом выбираем из них либо hd, либо sd. Но сначала нам нужно понять, кто из них кто. Мы видим сначала sd и сохраняем его код hls-1466. Но потом мы видим hd и сохраняем его код hls-3148. Больше мы ничего не видим и поэтому выводим на экран то, что сохранено последним.
Допустим, фильм “Чужие”, ссылка
https://ok.ru/video/91577387571[guest@localhost ~]$ Ytl https://ok.ru/video/91577387571
mobile mp4 unknown
mpd-0 mp4 256x138 DASH video 114k , mp4_dash container, avc1.42c01e, 24fps, mp4a.40.2 (44100Hz)
hls-147 mp4 256x138 147k
lowest mp4 unknown
mpd-1 mp4 426x230 DASH video 305k , mp4_dash container, avc1.42c01e, 24fps, mp4a.40.2 (44100Hz)
hls-349 mp4 426x230 349k
low mp4 unknown
mpd-2 mp4 640x346 DASH video 649k , mp4_dash container, avc1.64001e, 24fps, mp4a.40.2 (44100Hz)
hls-710 mp4 640x346 710k
sd mp4 unknown
mpd-3 mp4 852x462 DASH video 1155k , mp4_dash container, avc1.64001e, 24fps, mp4a.40.2 (44100Hz)
hls-1240 mp4 852x462 1240k
hd mp4 unknown
mpd-4 mp4 1280x692 DASH video 2566k , mp4_dash container, avc1.64001f, 24fps, mp4a.40.2 (44100Hz)
hls-2718 mp4 1280x692 2718k
full mp4 unknown
mpd-5 mp4 1920x1040 DASH video 5484k , mp4_dash container, avc1.640028, 24fps, mp4a.40.2 (44100Hz)
hls-5760 mp4 1920x1040 5760k (best)
[guest@localhost ~]$
[guest@localhost ~]$
[guest@localhost ~]$ load_file_ok_get_vformat https://ok.ru/video/91577387571
hls-2718
[guest@localhost ~]$
Мы сначала смотрим все форматы, а потом выбираем из них либо hd, либо sd. Но сначала нам нужно понять, кто из них кто. Мы видим сначала sd и сохраняем его код hls-1240. Но потом мы видим hd и сохраняем его код hls-2718. Больше мы ничего не видим и поэтому выводим на экран то, что сохранено последним.
И вот представь, в “Грани будущего” нет формата full, а в “Чужих” есть формат full. И вот этот формат full в “Чужих” весит 5.08 Gb. При этом формат hd в “Чужих” весит 2.38 Gb. То есть при просмотре на телевизоре разницы между этими форматами вообще нет, а для флешки, с которой смотришь это дело, разница как раз есть. Там же не один фильм лежит, а много. И, как видишь, эти коды форматов для hd одного фильма и для hd другого фильма различаются по числам.
И вот эту всю проблему (не трогать full, если он там есть; брать hd, если он там есть; брать sd, если там нет hd; не брать ничего, если там нет ни sd, ни hd, а если только full, например, есть) решает вот этот короткий код на AWK. Ну, если эту функцию на чистом Shell'е написать (нативный язык в Bash), то она будет раз в пять длиннее и раза в три непонятнее. А AWK, благодаря своему устройству, даёт делать какие-то такие забубённые вещи очень короткими кодами. Он очень плотно упакован, как бы сам себя пронизывает. Так вот в названии AWK эти буквы A - это Ахо, а K - это Керниган. Ахо написал книжку про компиляторы (как создавать компиляторы), классическая книжка. А Керниган - это буква K в K&R2, то есть он соавтор главной книги по языку C. Вот эти мужики сделали AWK.
А вот ещё одна функция. Посмотри, какая красавица
# Increment time in the file name;
# The file name "name123.ext" is set to 1 hour 23 minutes
# FileTimeInc(fname, minutes)
FileTimeInc()
{
local fname=$1
local mininc=$2
[ $# -ne 2 ] && {
echo "usage: $FUNCNAME filenameTIME.ext MIN"
echo ""
echo "Example: $FUNCNAME name50.ext 15 --> name105.ext"
return 1
} >&2
awk -v fname="$fname" -v mininc="$mininc" '
# Split filename in form "file.ext" to ["file", "", ".ext"]
# or "file123.ext" to ["file", "123", ".ext"]
# return 0 if split is wrong
# return 1 if split is right and has 3 parts
function split_filename(fname, out) {
if (fname ~ /[0-9]\.[^.]+$/) {
sub(/[0-9]+\.[^.]+$/, "|&", fname)
sub(/\.[^.]+$/, "|&", fname)
} else {
sub(/\.[^.]+$/, "||&", fname)
}
return split(fname, out, "|") == 3
}
# Convert number in form 1 to 3 if increment is 2
# or number in form 59 to 101 if increment is 2
# return converted value
function convert_time(n, inc, out, left, right, moved, reminder) {
if (length(n) <= 2) {
out = int((n + inc) / 60) * 100 + (n + inc) % 60
return out
}
else {
left = int(n / 100)
right = n % 100
moved = int((right + inc) / 60)
reminder = (right + inc) % 60
out = (left + moved) * 100 + reminder
return out
}
}
BEGIN {
if (split_filename(fname, parts)) {
newfname = parts[1] convert_time(parts[2], mininc) parts[3]
print "mv \"" fname "\" \"" newfname "\""
}
}' | sh
return 0
}
Вот с помощью этой функции и обёртки над ней со sleep'ом я смотрю всякие конференции Путина четырёхчасовые. Не будешь же четыре часа сидеть и смотреть эту муть. Смотришь кусочками по 10-15-23-37 минут и так далее. А время нужно постоянно запоминать, докуда досмотрел, чтобы в следующий раз потом продолжить с того места, где отключился. Ну, и прямо в имени файла время это и сохраняется. Для каждого файла его время в его имени хранится. Раньше я руками всё это делал, а потом вот функцию написал. Сейчас вот смотрю концерт певца одного, врубаю свою эту систему - так кайфово. Ни за чем следить не надо, имя само тикает (через каждые две минуты переименовывается, повышая счётчик времени). Потом можешь просто видео выключить и точно знаешь, что там никакое время никуда не потерялось.
Это ты спросила, чем я пользуюсь. Я пользуюсь своими скриптами со своими функциями, которые пишу сам себе. Конечно, у меня их больше всяких, но, я думаю, тебе и этих хватит почитать.
Ocean
Там еще и шелуха от еды с перьями летит.
Знаешь, шелуха летит, конечно, но там тряпочка лежит под клеткой как раз для шелухи. Просто тряпочку поднимаешь и вся шелуха сползает к центру тряпочки. И она потом по комнате не летает и к одежде не прилипает, когда собираешься в город. Как собираешься в город, так сначала минут десять выковыриваешь перья зелёные из одежды.
Ocean
Чистится еще потом небось долго после паники, возмущается и недовольно на тебя смотрит.
Не, она чистится, когда она в спокойном состоянии. То есть я её когда выпускаю из клетки в комнате, она на люстру садится и может весь день сидеть и чиститься там. Чистюля такая. Это значит, что ей комфортно.
Короче, неудобно на ноутбуке заниматься. То одно, то другое мешает. В теории кажется, что ноутбук - это же классно, он такой удобный, перемещаемый, можно брать с собой в город, где-то там ещё сидеть с ним. По факту же самое удобное использование ноутбука - это когда ты его на стол ставишь, подключаешь к розетке и работаешь, как на обычном компе. И то, клава неудобная, все кнопки перенесены там куда-то, все кнопки сжаты ещё вплотную (неудобно для слепого набора десятипальцевым методом). Ещё когда набираешь текст, рука попадает на мышку (тачпэд) и эта мышка начинает там двигаться по экрану, нажимать и так далее. А ты не можешь руку поднимать, чтобы она не касалась мыши, потому что рука устаёт и синдром запястья начинает развиваться.