#!/bin/sh
#
# 1604436674 created for testing in Linux/PTT
#
# 这是个 YouTube 缩网址的 one-liner. 必须很 portable.
# 我已测试过各种不同形状的水管 url's 例如:
#
# /v/<VID>
# watch?v=<VID>
# embed/<VID>?rel=0
# watch?argv=xyz&v=<VID>
# watch?v=<VID>&list=PLDB852818BF378DAC
# watch?v=<VID>&feature=related
# watch?argv=xyz&v=<VID>
# watch?v=<VID>&feature=feedrec_grec_index
# user/IngridMichaelsonVEVO#p/a/u/1/<VID>
# v/<VID>?fs=1&hl=en_US&rel=0
# watch?v=<VID>#t=0m10s
# embed/<VID>?rel=0
# watch?v=<VID>
# http://youtu.be/<VID> (idempotent)
#
# 能不能帮忙看看还有哪些 url's 会出错, 并帮忙想办法?
#
# 我本来不喜欢缩网址的, 因为不知道有效期限多久...
# 但如果我没误解的话, youtu.be 是水管自家的,
# 而且保留了原始的影片 ID (确定都是11个字吗?).
# 所以还可以接受.
#
# 解说:
#
# 0. 它必须尽可能 portable, 不管什么系统, 必须随抄即用
# 谁有 Solaris, SunOS, OsX, Ultrix, AIX, ... 拜托!
# 我只是很好奇, 它能有多广的 portability.
#
# 1. 请忽视与 termux 有关的东西, 那是让手机也可以用的,
#
# 2. youtu() 就已经是个充份的 one-liner.
# 为了应付可能出现的杂七杂八的选项及形态
# 我决定撷取 \1. protocol 跟 \2. video_id
# 然后忽略掉其它可能出现的所有东西.
#
# 3. 为方便测试, 所以它要可以从 X-clipborad 读取,
# 由 stdin 读取, 也可以由指令行读取.
#
# 4. 用了 sed(1) tr(1) grep(1) xsel(1) termux-clipboard-get(1)
#
# 5. 1604555294 新增, 原本的 -e 's/$/\n/' | tr -s '\n' 是为了确保
# 行尾起码有一个 newline, 而且只有一个. 这也是为了使用上方便.
youtu()
{
# sed -e 's|^\(http.\?\):.*[/vd]\{0,1\}[0-9vd][/=]\([0-9a-zA-Z_-]\{11\}\).*$|\1://youtu.be/\2|' -e 's/$/\n/' | tr -s '\n'
# 哇