视频迁移笔记
文章目录
背景
近期将mooc上的视频(1000+)从一个云服务商(Azure)转移到另一个云服务商(七牛云)。做个记录。
视频迁移的思路是通用的,如果你使用的云服务商有镜像存储功能,这篇文章可能就有用。
思路
思路很简单,使用七牛云的镜像存储功能,将Azure的视频镜像到七牛云上。
镜像前后的视频url只有host不同。
操作流程
- 允许Azure视频存储容器的访问策略调整为:
匿名读取访问容器和blob
- 将Azure上的视频url导出为url列表(csv)
- 配置好七牛云的镜像
- 写一个触发程序(类似url点击),触发url列表的镜像缓存
前三点在对应云平台都有教程,在此不赘述。下边分享一下触发程序
触发程序
talk is cheap show you the code:
|
|
至此完成视频迁移,需要注意的是七牛云的镜像存储缓存时间默认是30天,最长是一年。所以需要留意到期的问题。如果要继续使用,再此镜像也很轻松。
mooc课程内链接替换
视频迁移完之后,我们还需要在mooc课程内,替换相应url。如果url很少,可以手动替换,如果数量很大的话,推荐使用批量替换。下边记录批量替换的过程。
open edx的课程包内容是纯文本(xml),所以我们可以导出课程包,解压后,替换完链接再导入回去。
我们前头提到,迁移前后,视频链接的唯一变化就是host,假设迁移前的host为:video.example1.com
, 迁移后的host为:video.example2.com
。我们只要全局替换课程包里的视频host就行。
首先在studio中导出课程包,形如:course.D3ztEC.tar.gz
,这是个tar包,接下来我们需要解压它,但我每次都记不住解压的命令,所以我们可以使用cheat/tldr
(pip install cheat)来看看tar的常见用法:cheat tar
,cheat会列出目录指令的典型用法,而不是像man一样事无巨细,看着头疼。
|
|
接下来开始将video.example1.com
替为video.example2.com
在一个目录里递归替换文件里的字符串,linux社区习惯用sed,mac下sed有问题,与linux不一致,再者sed的正则和转义神烦。推荐直接使用vscode,简单清晰。
替换完成后,git diff
看一下是否符合预期,如果符合,就把.git
目录删掉
最后把course目录压缩回tar包
|
|
上传替换好的课程包到课程里(studio中)
完毕!
一些tips
url处理
我们将视频从Azure迁往七牛云,前后的连接变化有两处:
- https变为http
- host调整
- 不需要url参数
尽管我们可以用正则来做这些事,但会很丑,推荐使用furl
|
|
csv新增一栏替换后的url
使用pandas批量替换host,新增一栏:
df['qiniu_url'] = df.apply(lambda row: str(furl(row["SAS URL"]).set(host="video.example2.com",scheme="http").remove(query=True)), axis=1)
文章作者 种瓜
上次更新 2018-09-17