【技术分享】程序员是怎么下电影的?

最近有很多小伙伴问我怎么在网络上下载最新的或者版权保护比较严格的电影,今天就跟大家分享一下一个程序员是怎么下载资源的(以电影为例)。
【重要声明】这篇博客仅供技术分享,仅探讨一种技术上可行的方案。在实际使用这种方案时,请确保该方案符合你所在地区的版权保护相关法律,并在技术测试后删除所有受保护的资源,切勿传播。

需要的工具

  • qBittorrent (下载工具)
  • PotPlayer (或者其他视频播放器,能导入字幕就行)
  • 字幕库、人人字幕组、诸神字幕组等字幕搜索网站

下载流程

  • 下载qBittorrent,安装并启动;
  • 点击左上角的搜索Tab,进入搜索页面,然后选择右下角的“搜索插件”,添加一些你需要的搜索插件;
    【警告:在使用这些种子源时,请确认它符合您所在国家的版权法】
  • 然后搜索你想要的电影的名字,选择一个做种者比较多的种子,双击并等它检索完元信息,然后就可以下载啦。下载时你会感受到来自全世界各地网友磅礴的力量(比限速的某云不知道高到哪里去了)
  • 因为高清的视频源基本不会把字幕嵌进画面里,所以等电影下载完成的过程中可以去上文提到的几个网站找到自己需要的字幕文件,放到视频同一个文件夹里;
  • 等视频下载完成,就可以用PotPlayer导入字幕,然后愉快地看电影啦!

其他

  • 【重要的事情】p2p下载重要的是分享精神,所以下载完电影后尽量把qBittorrent放在后台吧,它会给全球各地其他需要这个资源的网友做种,请不要做只下载不上传的“吸血鬼”。上传速度软件本身有限制,不会影响你网络的正常使用的。
  • 很多视频播放软件也有内置的字幕搜索器,比如说小米手机自带的播放器就会自动搜索opensubtitle.org上的字幕文件,所以如果你惯用的视频播放器有这个功能的话,就可以跳过搜索字幕的步骤。
  • 推荐搜索时首选英语,种子数量更多,质量更高。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import requests
import json
import time
from win10toast import ToastNotifier
# 输入你的设置
profileId = 0000 #输入你的profileId(从选课页面url中获取)
wanted_course_ids = ['280030','280031','281135'] #输入你要监控的课程id(从选课页面点击课程介绍url获取)
cookies_raw = '' #输入你的cookies(按F12从Network里的Request Headers获取,或者搜索如何获取coockies)
request_frequence = 20 #设定你的刷新频率(秒)
COURSE_URL = "http://eams.sufe.edu.cn/eams/stdElectCourse!queryStdCount.action?profileId="
# 处理cookies
cookies={}#初始化cookies字典变量
cookies_arr = cookies_raw.split(';')
for ck in cookies_arr:
name,value=ck.strip().split('=',1)
cookies[name]=value
request_count = 0
while True:
time.sleep(request_frequence)
request_count += 1
print("正在监控课程余量,已请求",request_count,"次")
response = requests.get(COURSE_URL+str(profileId),cookies=cookies)
count_text = response.text
student_count_text = count_text.split('window.lessonId2Counts=')[1]
replace_list = ['sc', 'lc']
for replace_text in replace_list:
student_count_text = student_count_text.replace(
'{}:'.format(replace_text), '"{}":'.format(replace_text))
student_count_text = student_count_text.replace("'", '"')
student_count_list = json.loads(student_count_text)
for wanted_course_id in wanted_course_ids:
course_count = student_count_list[wanted_course_id]
if course_count['sc'] != course_count['lc']:
toaster = ToastNotifier()
toaster.show_toast(u'快抢课', u'课程有余量了!')
break