9521_视频迁移.txt
Edited: Thursday 1 May 2025

E .lll ′′箩苓 (箩 匡筏〕'
大 小 不 安 全 一 wwj718.github.io O 〔五 D

一 一 / 一 一
{叉 千亡|_人 Home Archives Tags Categories About-Me
祈 颖 3
1 训 移 笔
jbp
17 September 2018 edx
出 春
月 吉
近 期 将 mooc 上 的 视 频 (10004+) 从 一 个 云 服 务 商 (Azure) 转 移 到 另 一 个 云 服 务 商 ( 七 牛 云 )。 做 个 记 录 。
视 频 迁 移 的 思 路 是 通 用 的 , 如 果 你 使 用 的 云 服 务 商 有 镜 像 存 储 功 能 , 这 篇 文 章 可 能 就 有 用 。
思 路

思 路 很 简 单 , 使 用 七 牛 云 的 镜 像 存 储 功 能 , 将 Azure 的 视 频 镜 像 到 七 牛 云 上 。
镜 像 前 后 的 视 频 url 只 有 host 不 同 。
操 作 流 程

  1. 允 许 Azure 视 频 存 储 容 器 的 访 问 策 略 调 整 为 : 匿 名 读 取 访 问 容 器 和 bLob

  2. 将 Azure 上 的 视 频 url 导 出 为 url 列 表 (csy)

  3. 配 置 好 七 牛 云 的 镜 像

  4. 写 一 个 触 发 程 序 ( 类 似 url 点 击 ), 触 发 url 列 表 的 镜 像 缓 存
    言 占 孙 3 府 五 平 六 郎 吉 助 程 一 衍 山 不 袋 诀 一 十 务 八 言 一 十 觞 元 程 序
    01:47 ` 国 国 . 闻 e 山 孕 @ 盼 J
    国 园 园 ˇ 不 安 全 一 wwj718.github.io
    前 三 点 在 对 应 云 平 台 都 有 教 程 , 在 此 不 赘 述 。 下 边 分 享 一 下 触 发 程 序
    触 发 程 序
    talk ls cheap show you the code:
    Python

python >== 于 .5

import pandas as pd
import aiohttp
import 35ynCio
import 七 ime
df = pd. read_csy(“qiniu_urL,csy )
aSync def job(Session,urt) :
response = await sSesSsion.options(urt)
if response,status != 208:
print(f“bad_urtitur1X)
async def main( Loop):
aSync with aiohttp.CLientSession() as session:
taSks =“[【Loop,create_task(job(Ssession,ur1)) for url in df [「qiniu_urL「] if “mp4“in
finished,unfinished = await asyncio.wait(task5)
aLL_resutts = [r,resutt() for r in finished]
print(Len(aLL_resutt5) )
t1 = Lime,time( )

Loop = asyncio.get_event_Loop()
Looprun_until_complete(main(Loop) )
Loop,close()

print(“Async total time:“,time,time() - t1)
至 此 完 成 视 频 迁 移 , 需 要 注 意 的 是 七 牛 云 的 镜 像 存 储 缓 存 时 间 默 认 是 30 天 , 最 长 是 一 年 。 所 以 需 要 留 意 到 期
的 问 题 。 如 果 要 继 续 使 用 , 再 此 镜 像 也 很 轻 松 。

e
01:47 国 园 园 吴 吴 吴 吴 吴 许 沥 许 许 水 连 连 连 运 山 云 @ 欧
不 安 全 一 wwj718.github.io
ˇ ˇ 至 化 早 成 视 频 迁 移 , 需 要 注 意 的 是 七 牛 云 的 镜 像 存 储 缓 存 时 间 默 认 是 30 天 , 最 长 是 一 年 。 所 以 需 要 留 意 到 期 ˇ 一
的 问 题 。 如 果 要 继 续 使 用 , 再 此 镜 像 也 很 轻 松 。
mooc 课 程 内 链 接 替 换
视 频 迁 移 完 之 后 , 我 们 还 需 要 在 mooc 课 程 内 , 替 换 相 应 url。 如 果 url 很 少 , 可 以 手 动 替 换 , 如 果 数 量 很 大 的
话 , 推 荐 使 用 批 量 替 换 。 下 边 记 录 批 量 替 换 的 过 程 。
open edx 的 课 程 包 内 容 是 纯 文 本 (xml)), 所 以 我 们 可 以 导 出 课 程 包 , 解 庄 后 , 替 换 完 链 接 再 导 入 回 去 。
我 们 前 头 提 到 , 迁 移 前 后 , 视 频 链 接 的 唯 一 变 化 就 是 host, 假 设 迁 移 前 的 host 为 : video.examplel.com , 迂
移 后 的 host 为 : video.example2.com 。 我 们 只 要 全 局 替 换 课 程 包 里 的 视 频 host 就 行 。
首 先 在 studio 中 导 出 课 程 包 , 形 如 : course.D3ztEC.tar.gz , 这 是 个 tar 包 , 接 下 来 我 们 需 要 解 庄 乙 , 但 我 每
次 都 记 不 住 解 压 的 命 令 , 所 以 我 们 可 以 使 用 cheat/tldr (pip install cheat) 来 看 看 tar 的 常 见 用 法 : cheat
tar ,cheat 会 列 出 目 录 指 令 的 典 型 用 法 , 而 不 是 像 man 一 样 事 无 巨 细 , 看 着 头 疫 。
tar -XZVfT courSe.D3ztELC.tar.gZ “ 沥 脱 止 刹 一 水 CoUurSe
cd course

git init # 侍 用 it 记 炳 厂 炳 妮 化 , 以 便 子 没 有 弄 坏 奂 西 , 记 得
git add 。

git commit -m “1St「
接 下 来 开 始 将 video.examplel. com 替 丶 vVideo.exampLe2 . conm
在 一 个 目 录 里 递 归 替 换 文 件 里 的 字 符 串 ,linux 社 区 习 惯 用 sed,mac 下 sed 有 问 题 , 与 linux 不 一 致 , 再 者 sed
的 正 则 和 转 义 神 烦 。 推 荐 直 接 使 用 vscode, 简 单 清 晰 。

. . 木 E Course
[虱 搜 索 是 否 将 91 个 文 件 中 的 182 次 匹 配 替 换
汀^i_f s cmmmsmmmmm j E 一 1 1 com「32
E T b ` I
, “ “ 屋 .
人 “ 00 一
01:47
广 一 , E 0 国 山 仑 @ 肋 J
不 安 全 一 wwj718.github.io
在 一 个 目 录 里 递 归 替 换 文 件 里 的 字 符 串 ,linux 社 区 习 惯 用 sed,mac 下 sed 有 问 题 , 与 linux 不 一 致 , 再 者 sed
的 正 则 和 转 义 神 烦 。 推 荐 直 接 使 用 vscode, 简 单 清 晰 。
. . co
国 蜀 怠 颜 将 91 个 文 件 中 的 182 次 医 督 换
为^【__.’ . E 白 com“2
诊 妙 干 仪 p M 悬 …l’
-.:"._′"‘i.=n .


  • 户 n ‖ n EE
    A? 182 个 结 果 , 包 含 于 91 个 文 件 中
    萧 换 完 成 后 , git diff 看 一 下 是 否 符 合 预 期 , 如 果 符 合 , 就 把 .git 目 录 删 掉
    最 后 把 course 目 录 压 缩 回 tar 包

TOD create a ,gz archive::

tar -czvf repltaceurtcourse,D3ztEC.,tar.gz “course
上 传 替 换 好 的 课 程 包 到 课 程 里 (studio 中 )

_ 课 程 导 入 状 态
娄 “ 正 在 上 传
娄 “ 正 在 解 序
志 “ 正 在 校 验
0 一 一 仁
万 圭 页 招 河 租
01:47
一 e a 山 五 @ 放
不 安 全 一 wwj718.github.io
正 在 传 输 您 的 文 件 至 服 务 器
团 正 在 解 压
展 开 预 定 义 的 目 录 / 文 件 结 构 ( 您 现 在 可 以 安 全 地 离 开 这 个 页 面 了 , 但 在 内 容 导 入 完 成 之 前 请 尽 量 避 免 不 必 要 的 修
改 )
桂 “ 正 在 校 验
正 在 复 查 语 义 、 语 法 和 必 要 数 据
柱 “ 正 在 更 新 课 程
正 在 整 合 您 导 入 的 内 容 到 该 课 程 。 如 果 课 程 较 大 , 这 一 过 程 可 能 花 费 较 多 时 间 。
巴 “ 成 功 (09/17/2018 at 01:42 UTC)
您 导 入 的 内 容 已 经 被 整 合 进 课 程
杳 看 更 新 后 的 课 程 大 纲
我 们 将 视 频 从 Azure 迁 往 七 牛 云 , 前 后 的 连 接 变 化 有 两 处 :
s https 变 为 http
s host 调 整
s 不 需 要 url 参 数
尽 管 我 f
门 可 以
用 正
则 3
来 做 这 些 事
, 但 会 f
旦 会 很 丑
, 推 荐
使 用
fur|

一 一
01:47 e a 山 仁 @ 皇
不 安 全 一 wwj718.github.io
尽 管 我 们
门 可 以
用 正
则 3
来 做 这 些 事
, 但 会 f
旦 会 很 丑
, 推 荐
使 用 f
u
Code
from furt import furt

ul =“https://video.examplel.com/a/b.mp47q=1“

u2 = furL(u) set(host=「video.example2.com 「,scheme=“http“) .remove(query=True)
print(str(u2))

http://video.example2.com/a/b.…

csv 新 增 一 栏 替 换 后 的 url
使 用 pandas 批 量 替 换 host, 新 增 一 栏 :
df [「qiniu_urt「] = df,appty( Lambda row: sStr(furtL( row [“5AS
URL“] ) ,set(host=“video,example2.com“,scheme=「“http“ ) ,remove(query=True) ) ,axiS=1)
文 章 作 者 : 种 瓜
上 次 更 新 : 17 September 2018
edx
《 scratch3-adapter 接 入 优 必 选 Alpha 系 列 机 器 人 scratch3-adapter 重 构 笔 记 》
要 ) 八
加 入 我 们 | 搜 索 本 站 | RSS 订 阅 | Powered by Hugo | Theme - Even
@ 2ol3 - 2022 鄂 种 瓜

Backlinks