如何使用 youtube-dl 抓取 YouTube 频道的更新

众所周知,具有极强品牌意识的 Apple 会在下架商品的同时下架官方 YouTube 频道的视频,而 YouTube 上曾经出现过的第三方 Apple 视频库(例如 EveryAppleVideo)都纷纷被 Apple 发函拿下。如果你一直很想收藏 Apple 的广告视频(并在深夜反复观看),你可以在 VPS 上安装 youtube-dl 来抓取 Apple 的更新,下载最高清晰度的视频和音频,并使用 ffmpeg 将音视频流压在一起。这个方法适用于任何 YouTube 频道。

先决条件

在开始之前,你需要:

  • 一台配置不算太差 KVM 虚拟化的 VPS,内存至少要在 512 Mb 以上,因为要使用 ffmpeg,所以处理器核心不能太差。同时因为要挂载网盘,所以你的服务商需要为你的服务器开启 FUSE.
  • 一个网盘账号,Google Drive, Dropbox 和 OneDrive 均可。
  • 学会如何使用 ssh 远程登录 VPS,网上有很多教程,你可以轻松找到

Disclaimer: 接下来的安装和部署,我都是在 Debian 9 下进行,我可能会犯很初级的错误。如果有,请在评论中指出。

配置 youtube-dl 和 ffmpeg

  1. 安装 youtube-dl

youtube-dl 是一个可以下载 YouTube 视频的命令行应用程序,它需要 Python (2.6, 2.7, 或 3.2+) 才能正常工作,关于 youtube-dl 在不同平台下详细的安装说明可以参考它的 github readme 页面。

所以,我们先在 VPS 上安装 Python.

apt-get install python

然后再下载最新版的 youtube-dl

wget http://youtube-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl

在这一步,如果你的服务商的系统模版精简太厉害的话,很可能会报证书错误,提示证书不可信之类的信息,这个时候,你需要安装 ca-certificates 证书包。

apt-get install ca-certificates

更改目录的访问权限

chmod a+x /usr/local/bin/youtube-dl

至此,youtube-dl 就安装好了,这个时候,执行 youtube-dl —help应该可以看到如下的输出:

  1. 安装 ffmpeg

由于 YouTube 在 1080P 以上清晰度的视频才用了音视频流分开的设计,单纯下载 1080P 以上清晰度的视频时会出现只有画面没有声音的情况,所以我们需要使用 ffmpeg 将音视频流压制在一起。

apt-get install ffmpeg

安装完成之后,执行命令 ffmpeg 应该可以看到如下的输出:

至此,下载并且压制 YouTube 视频的工具已经完备,接下来我们准备一个抓取频道最高清晰度所有视频并下载的脚本。

准备抓取频道的脚本

youtube-dl 的具体使用说明在这里不赘述了,它的帮助文档中也有较为详细的描述,yotuube-dl 的功能和可配置选项非常强大,有兴趣的你可以详细研究。

但总之,我们需要做到的是:

  1. 下载频道中提供的最高清晰度视频,并且使用 ffmpeg 将音视频重新压制,输出为 mkv 格式。
  2. 重新命名输出文件,命名格式为:视频上传日期 – 视频标题 – (视频ID) – 清晰度 – 视频的 ID,视频需要存在以频道名称命名的文件夹中。
  3. 记录需要下载的 YouTube 频道,并且记录已经下载的视频 ID,重复执行脚本的时候无需重复下载。
  4. 下载视频配套的字幕(非自动转换)元数据和原始插图。

为了达到上述所有的功能,下载脚本的配置文件应该这么写,在这个配置文件中,下载的项目略微有些多,如果你不需要下载字幕和元数据,可以使用 # 将它注释掉:

-i
-o "%(uploader)s (%(uploader_id)s)/%(upload_date)s - %(title)s - (%(duration)ss) [%(resolution)s] [%(id)s].%(ext)s"

# 记录已下载文件以及需要下载的频道
--download-archive youtube-dl-archive.txt
-a youtube-dl-channels.txt

# 统一输出格式
--prefer-ffmpeg
--merge-output-format mkv

# 下载字幕
--write-sub
--all-subs
--convert-subs srt

# 下载元数据和配图
--add-metadata
--write-description
--write-thumbnail

# Debug
-v

将这个文件保存为 youtube-dl.conf,同时,新建一个名字叫 youtube-dl-channels.txt 的文件,记录你需要下载的频道地址,如下所示:

# Apple
https://www.youtube.com/user/Apple/

#Crowbcat

https://www.youtube.com/user/CrowbCat

#Nerdwriter1

https://www.youtube.com/user/Nerdwriter1

#idubbbz

https://www.youtube.com/user/iDubbbzTV

只需提供 URL 即可,接下来,新建一个名字为 youtube-dl-archive.txt 的空文件,这个文件内会记录已经下载的 YouTube 视频的视频 ID,重复运行的时候会跳过这个文件中记录的 ID.

接下来,确保上面建立的三个文件都在同一个目录,执行 youtube-dl --config-location youtube-dl.conf 即可开始自动爬取的过程,下载视频和压制的过程非常漫长,建议在 screen 中运行这个命令,以免 ssh 连接中断而导致脚本终止。

当然,你可能要问了,要我手工执行命令的话,这个到底自动在哪里?其实你可以将 youtube-dl --config-location youtube-dl.conf 保存为一个 shell script 并且建立一个 cron job 每隔一段时间自动执行,cron 是一个 Linux 系统下的计划任务工具,可以给定一个时间间隔自动运行一些项目,非常好用。

另外,配合 rclone,你可以挂载主流网盘,直接将下载完成的文件 rclone sync 到网盘上。但关于 rclone 的用法,我们只能下次再讲了(标准虎头蛇尾结局)。

注:本文的写作离不开 reddit/r/DataHoarder 社区的帮助。

 


20180717 更新:

针对自动化下载和 crontab 配置撰写,我写了这篇更新博文

写申请材料的 Personal Statement (PS) / Statement of Purpose 非常头疼?这是 Caltech 给的建议

在去年(2017 年)准备 PhD 项目申请的时候,Personal Statement (PS) / Statement of Purpose 是我最头疼的部分,这一部分的材料非常需要自我审视和总结,也需要将一些人生偶然粉饰成自主选择,相当难过。加上大部分中国学生的语言壁垒,写好一个能看的 PS 非常难。我的师弟彼时在加州理工 Caltech 做暑期研究,他去参加了加州理工研究生院举办的申请文书写作指导并且分享了当时发放的材料和 PPT 给我,我将它们整理成了文字版,希望能给你带来帮助:

Statement of purpose

It is a document submitted as part of a graduate application that describes your abilities, attributes and accomplishments as evidence of your aspirations for pursuing a graduate education and, beyond that, a career in research.

Main Points

  1. What do you want to study
  2. Why do you want to study that topic
  3. What experience to do you have
  4. What to do you intend on doing when you have earned your Ph.D.

Make yours unique

Stand out from the beginning

Keep it concise and focused.

Address ”Fit” with the particular program or lab.

Emphasize interest in solving relevant problems and addressing research questions.

You should be as specific as possible in discussing what interest you. Use examples of particular phenomena, tools, or situations that you find exciting.

Evidence of experience in order of relevance.

The yawn effect

I love science. I love to study it, research it and I want to devote my life to it. Science is the foundation for all that we are.

Don’t tell me you LOVE it or are passionate about it. SHOW me how you are and what you have done.

What to include

Research, research, research

Focus on future

Support future goals with your experience

“Light bulb” moments

What have you done to prepare for this step?

What are your research interests?

How do those research interests mesh with the program to which you are applying?

What will you contribute to the program?

Why this particular group/program/advisor/institution?

Where will this program lead you?

What not to include

Avoid childhood.

Avoid K-12

Generic information that does not tell them anything about you.

A brochure for the school — they know what they are, but how does that impact you.

Start now

Free write — do not expect your first SOP draft to be perfect

Make a brag sheet — toot your own horn

Take time — write, put it away, edit

Research programs — read faculty’s research and take notes

2nd, 3rd, 4th … drafts

Be clear and concise

Have an angle — you may not even know what it is until your define it

Include information about the program/faculty

Think of yourself as a scientist

Every sentence should have value

Every paragraph should be related to research — post, present or future.

Minimize personal information — research focus!

Special circumstances

It is special to you, but not to the review committee

Make a negative a positive — Spin it

Focus on your strengths

Do not make excuses

Proof read

Your advisor

Other faculty

Your application will be reviewed by faculty so show it to faculty beforehand.

Your friends

People from different disciplines

To include faculty or not?

Include faculty with whom you want to work, this shows you have done your homework.

Contact faculty before you apply to build a relationship.

Mention a few fields/areas that you are interested in.

Write specifically for a department: you do now want an overly general statement.

Writer’s block

Pretend you are writing about a friend.

Just keep writing…anything.

Have a friend read it.

Discuss it with an advisor or friend.

Focus on a different part. Can’t write an opening paragraph? Start with the middle.

Red flags

“My parents both have PhDs and have encouraged me to pursue graduate educations.”

“At this point, I am considering a career in academia or industry.”

Vague, unclear , internal dialog

Not written for that program

Too much personal information

Not able to demonstrate experience in field

Check list

  • Clearly state goal.
  • Motivation for applying to graduate school.
  • Relevant experiences and academic coursework that have prepared you for graduate study in the field.
  • Characteristics and strengths that make you particularly well-suited to graduate study.
  • Future career objectives.
  • Decision to apply to that program.
  • Extenuating circumstance that may have resulted in less than ideal academic credentials for graduate school.

Print, edit, revise, recycle, repeat

Print it out.

Edit with pen in hand.

Read it through start to finish and back to start again. Make sure theme is consistent.

Revise throughly for each program… not just the last sentence. Do not rely on find/replace feature.

在被污名化之前的中国梦

以下段落全篇摘自张岱《陶庵梦忆》,题为《南镇祈梦》

万历壬子,余年十六,祈梦于南镇梦神之前,因作疏曰:

「爰自混沌谱中,别开天地;华胥国里,早见春秋。梦两楹,梦赤舄,至人不无;梦蕉鹿,梦轩冕,痴人敢说。惟其无想无因,未尝梦乘车入鼠穴,捣虀啖铁杵;非其先知先觉,何以将得位梦棺器,得财梦秽矢?正在恍惚之交,俨若神明之赐。某也躨跜偃潴,轩翥樊笼,顾影自怜,将谁以告?为人所玩,吾何以堪?一鸣惊人,赤壁鹤耶?局促辕下,南柯蚁耶?得时则驾,渭水熊耶?半榻蘧除,漆园蝶耶?神其诏我,或寝或吪;我得先知,何从何去。择此一阳之始,以祈六梦之正。功名志急,欲搔首而问天;祈祷心坚,故举头以抢地。

轩辕氏圆梦鼎湖,已知一字而有一验;李卫公上书西岳,可云三问而三不灵。肃此以闻,惟神垂鉴。」

十六岁的张岱向神明祈祷,想看出命运的判词,用典很多,我就不献丑翻译了。但我觉得如果要说中国梦在被污名化之前长什么样,还得看这篇。

P.S. 大家比较熟悉的《湖心亭看雪》也是这位仙人写的。

分享一个快速制作 LaTeX 插图的方法

闲来无聊,分享一下我排版文章的时候处理插图的方法,本方法适用于 Mac,特别简单。

  1. 使用 PowerPoint 排出你需要图片的位置,确保 PowerPoint 里面调用的插图是矢量图。
  2. 使用 PowerPoint 的输出 PDF 功能,输出当前页面的 PDF。确保输出之前页面上没有出现其它不应该出现的文本框、占位符等。
  3. 输出之后的 PDF 应该是带有白边的,被 LaTeX 调用之后会比较难看,这个时候需要切边,打开 Mac 自带的 terminal,输入 pdfcrop ,然后拖入你需要切边的 PDF 图片。
  4. 同路径会出现一个切了全部白边的新的 PDF 文件,这个时候你就可以在 LaTeX 中调用了。

没了,本来想插图的,但这个超级简单,没啥好插图的。好奇的你应该可以去看一下 pdfcrop 的指南,没准有新收获呢。

Terminal 输出大概如下:

 ~ > pdfcrop /Users/blah/Desktop/yin-blank.pdf 
PDFCROP 1.38, 2012/11/02 - Copyright (c) 2002-2012 by Heiko Oberdiek.
==> 1 page written on `/Users/blah/Desktop/yin-blank-crop.pdf'.

令人惊叹的神奇苹果产品逻辑

 

今天知道一件事情,苹果目前最新的操作系统:macOS Sierra,如果你在升级之后被哄骗着打开了 iCloud Desktop and Documents Folders 功能,然后觉得上传太慢想要关掉它的话,系统会建立空的 Documents 和 Desktop 文件夹,并且认为 iCloud Drive 上面的内容已经是同步完成的,紧接着开始从 iCloud 上拉取尚未同步完成的文档存储到本地。

所以对于一个无辜的用户,心理历程是

1.哎,这个功能不错嘛。

2.哎,上传好慢啊,算了吧。

3.我操,我的文档呢?

4.我操,我桌面上的东西呢?

5.啊啊啊啊啊啊啊啊啊啊啊啊啊

6.啊,好像回来了,错怪苹果了呢!

7.我操!怎么全是空的文件夹呢!

8.啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

太惨了,我觉得人类罪不至此,没有人值得被这么玩弄。

如果您是使用搜索引擎搜索到本文的话,我建议您去看下面路径是不是尚存您原来的文件:

~/users/你的用户名/iCloud Drive (Archive)/Documents

非常抱歉给您带来这样不好的体验了,请问还有什么可以帮到您呢?

不肖子孙之一种

昨天在干活的时候听 podcast,话题是死亡,非常沉重,但死亡近来被谈论很多,也不是什么大事。访谈嘉宾有一个韩美混血女歌手,母亲隐瞒患癌的事实,在发现之后已经中晚期,和大多数人一样,化疗是唯一选择,不是为了活命,纯粹是为了不存在的一线生机。

但女歌手话锋一转,徐徐说到了自己在照顾临终的母亲时的感悟,说了三件事情:

1.母亲是韩国人,美国文化里会给生病的人煮鸡汤,但她从来不知道韩国文化传统中要给生病的人煮什么吃,很担心自己从此会与那一部分的 heritage 分离。

2.在母亲生病之后,自己马上就给男朋友打了电话求婚,并且在母亲去世前一周完成了婚礼,母亲再也不会看不到自己女儿结婚了,可以说非常幸福。

3.在母亲去世之后,她的感受非常 surreal,因为前一个礼拜还在写婚礼贺词,后一个礼拜就开始写母亲的悼词。

有没有发现出了什么问题,这位朋友是将母亲的死亡变成了自己的事情。《百年酒馆》里 Sylvia 确诊乳腺癌之后没有告诉自己的女儿,理由是:”She will make it all about herself.” 并没有给出进一步的解释,但现在看来还是比较清楚的:很多时候人们会鼓励你经历不同的人生,去探索更多不同的可能,但对于即将去世的人,如果还抱着积攒人生经历的心态,未免也太残忍。

PS: Podcast 还是 Lena Dunham 的 Women of the hour Season 2 Episode 9.

I Got Rejected by Apple Music… So I Redesigned It – Startup Grind – Medium

看完之后可以理解为什么作者会被 Apple Music 设计团队给拒绝了,特别是首页这个将字号从 Light-Heavy 改成 Regular-Semibold 的选择,还是相当业余的。大字号大 spacing 和 bold typeface 加上卡片导航,是苹果继 iOS 7 之后的第一次大型 HIG 更新,是以内容为先为主要考虑,在 Apple News 下的表现简直可以起立鼓掌。其次,Apple Music 的精髓或者说唯一竞争力就是 Radio 和 Beats 1 电台,作者居然建议将 Radio 的入口换成 MV ,可以说非常不懂苹果。MV 在一个音乐应用中的使用频率会比 Radio 更高吗?不见得。

总体来说,这篇文章中描述的 ”redesign“ 就是将 Spotify 和 Tinder 的一些特性囊括到 Apple Music 中,非常奇怪,例如双击专辑封面给歌曲点赞,很让人迷惑,我双击的是专辑封面,我给专辑还是歌曲点赞呢?逻辑出现了问题。

当然,文章中唯一可取的就是对 Apple Music Playlist 展示的专辑封面进行统一 VI 的设计,这个我举双手赞成,目前 Playlist 简直是太杂乱了。

Source: I Got Rejected by Apple Music… So I Redesigned It – Startup Grind – Medium

 

Apple’s China Problem – Stratechery by Ben Thompson

The fundamental issue is this: unlike the rest of the world, in China the most important layer of the smartphone stack is not the phone’s operating system. Rather, it is WeChat.

来源: Apple’s China Problem – Stratechery by Ben Thompson

昨天使用了 WordPress 的快速发布功能丢了 comment 文字,简要地说就是 Ben Thompson 和 John Gruber 实在是太不了解中国市场的情况了,而且发文章互相引用和 bolster,非常不负责任,具体的大家可以看姊妹博客发的这篇,讲得很详细:

 

Check This Box if You just started a parade of cliché

这篇文章很温暖,几乎足够点燃十三岁的我对世界抱有的美好向往。同时,这篇文章也是二十四岁的我第一次在《读者》和《青年文摘》以外读到了面试扶扫把,推门进入总裁办公室听到「恭喜你被录取了」这类 cliché.

在录取的时候观察和重视一个学生是否除了在 CV 里疯狂展露出的智能之外还有些许人性和温情可能确实重要,但是在餐厅里落下巧克力棒被学生归还就可以浸入思绪长河的这位老师未免是有些刻奇。我不是要愤世嫉俗,招生是需要全方位查看一个学生的实力,但将这样的事情写出来并有意鼓励学生多展示自己可拆卸的温情,或许有一点太一码归一码了。所以当读到作者下面这段真情流露的时候,我还是很不舒服。

Next year there might be a flood of custodian recommendations thanks to this essay. But if it means students will start paying as much attention to the people who clean their classrooms as they do to their principals and teachers, I’m happy to help start that trend.

来源: Check This Box if You’re a Good Person – The New York Times