跳到正文
← 全部文章

一对一交换视频:请求、提议和新提议

tapeshelf 上的私密视频不会出现在任何信息流里,也没有人出售。想要的话,就去问拥有它的人。有时对方直接分享给你,更多时候会希望你拿点什么来换。下面先讲在界面上是什么样子,再讲背后是怎么实现的。

请求一个视频

在别人的片架上打开一个私密视频。你看不到播放器,只会看到封面、16 帧的预览和一个请求这个视频按钮,下面可以附一句留言(可不填)。如果你已经想好拿什么来换,点 + 附上交换的视频,从你的视频里挑选;这样所有者能同时看到双方的内容,可以直接接受。对方如果写了想找和请勿提议,会显示在按钮旁边。想一次要好几个视频,就在片架上把它们选中,发一个请求,最多 20 个。

按钮会不会出现,取决于这几条规则:

  • 请求发给你所在片架的主人,即使他不是作者。那是他的副本,由他决定。
  • 公开视频的收藏不能请求,你会看到一个指向作者的链接。
  • 你已经能观看的视频,或者你已经向任何人发出过、还没结束的请求里的视频,都不能再请求。
  • 只要你们有一方屏蔽了另一方,彼此之间就不能请求。
  • 每天最多请求 30 个视频。

如果你的片架还是空的,应用会建议你先上传几个视频。这个建议很实在:大家更愿意分享给有东西可以回赠的人。

所有者能怎么回应

所有者会收到通知,在请求页面里看到你的请求。他可以:

  • 免费分享。你会拿到所请求的全部视频的副本。
  • 提议交换。他从你的片架上挑出想要的视频作为交换。
  • 拒绝,想的话可以附上说明。
  • 屏蔽用户。你们之间所有未结束的请求都会关闭。你这边看到的是请求被拒绝,不会得知自己被屏蔽。

如果你附上了交换的视频,他也可以直接接受。

一轮轮来回

只要有人提议交换,请求就变成一场简短的协商。页面会显示轮到谁(“轮到你了”或“等待对方”)。轮到你时,你可以接受当前的提议,拒绝它,或者换成别的视频,提出你自己的交换。

轮数不限。可以一换一,一换多,也可以多换多,但每一方至少要给出一个视频。你可以拿片架上的任何视频去换,包括以前交换得来的,只有公开视频的收藏除外,而对方已经有的视频也不行。在此期间,所有者仍然可以免费分享或屏蔽,发起请求的人也可以撤回。

举个例子。小米向阿乐请求《黎明的港口》。阿乐提议用它换小米的《夜行列车》。小米换了个提议,改用《屋顶上的雨》。阿乐接受了,两人在同一时刻拿到各自的副本。

用户之间的请求不会过期。它们会一直留在请求页面(收到的、发出的、历史记录)里,直到有人回应,每一轮都保存在对话里。每一步也会出现在铃铛通知里;如果你开启了邮件通知,还会发邮件给你。

被拒绝就暂停一周

无论哪一方、在哪一轮拒绝,都会开始七天的暂停。这一周内,发起请求的人不能再请求这个视频,向谁请求都不行。这样可以避免没完没了地来回拉扯,也没人能绕开拒绝,转而去找另一个有副本的人。请求按钮上会显示还剩几天。

撤回自己的请求不会触发暂停,但其中的视频仍然计入当天的请求上限。

你能留下什么

副本一旦归你,谁也收不回去。它会出现在媒体库的别人给的里,也会出现在访客看到的你的片架上的“来自其他作者”一栏。你可以观看,在套餐限额内下载,放进分类,对访客隐藏,也可以再拿去交换。作者的名字会一直跟着它。它不占用你的存储空间,只有你自己上传的视频才占。

只有两种情况会让你的副本消失:作者删除了视频(它会立刻从所有片架上消失),或者你自己删除它(只删掉你的那份副本)。

如果协商途中发生了变化,比如当前提议里的某个视频被删了,或者某一方已经不再拥有它,这个提议就作废,请求回到最初请求的内容。如果最初请求的视频也都不在了,请求就会关闭。双方都会收到通知。

和没有账号的人交换

没有账号的人也能和你交换,只要他们带着自己的视频来。你可以发给他们一个交换链接(复制链接 → 用于交换;在你撤销之前一直有效),他们也可以在你的某个私密视频上点提议交换。无论哪种方式,他们都会进入一个名为“公平交换”的页面,上传最多 5 个视频。这些视频会一直锁定:在你们双方都同意之前,谁都不能观看或下载。这笔交易会以“游客”的名义出现在你的请求里,你像回应其他请求一样回应它。

与游客的交易会等待 3 天回应,任何一方每走一步,就再延长 3 天。如果交易被拒绝、被取消或者过期,游客的视频会立刻从服务器上删除。不想让游客对你的视频提议交换,可以在“设置 → 个人资料 → 交换”里关闭接受游客的交换;交换链接仍然有效。

背后是怎么实现的

这一切都是一个状态机。请求要么是开启的,要么是关闭的,关闭有五种方式:完成、拒绝、撤回、屏蔽,或被系统关闭。与游客的交易还可能过期。最初的请求是第 0 轮:所有者给出被请求的视频,请求者给出他附上的视频(通常什么也没有),而“免费分享”就是所有者给出自己这一方,不要任何回报。每个新提议是新的一轮,并把上一轮标记为已被取代。请求本身记录着当前轮次、当前的提议和轮到谁,所以所有在等你处理的内容,只需一次带索引的查询就能找到。

每个操作都在一个数据库事务里执行,事务一开始就锁住请求所在的那一行。同一秒内的两次点击会依次执行。

接受时会指明你正在看的那个具体提议。如果就在前一刻对方发来了新提议,服务器会返回冲突,页面重新加载对话。你不可能接受一个自己没看到的提议。

接受时还会把一切重新检查一遍:视频仍然存在并且已经处理好,双方仍然拥有各自要给出的视频,也没有谁屏蔽了谁。然后双方在同一个事务里拿到各自的副本。

同一个人的新请求严格地逐个创建,所以双击或者开着两个标签页,都不会产生重复请求,也绕不过每日上限或暂停。

通知和邮件会在与操作相同的事务里写入发件箱,事务提交后由后台进程投递。如果操作失败并回滚,没有人会收到一件没发生的事的通知。如果进程中途重启,也什么都不会丢。

简短的说明见使用方法和常见问题。