Repository: makelove/Programer_Log Branch: master Commit: 12ee6d18ae36 Files: 309 Total size: 29.3 MB Directory structure: gitextract_yt17wx8s/ ├── .gitignore ├── 2019/ │ ├── 12-16-Github-Pull-requests-gocolly/ │ │ └── Github-Pull-requests-gocolly.md │ ├── 12-18-Caddy搭建Google镜像-反向代理/ │ │ └── Caddy搭建Google镜像-反向代理.md │ ├── 12-26-用docker模拟Nginx限制同一个爬虫ip的访问频率/ │ │ └── 用docker模拟Nginx限制同一个爬虫ip的访问频率.md │ ├── 12-29-Docker-OpenCV-golang-gocv/ │ │ ├── README.md │ │ └── facedetect-from-url/ │ │ ├── facedetect │ │ └── main.go │ ├── 12-30-Docker-Puppeteer抓取动态页面/ │ │ ├── README.md │ │ └── puppeteer/ │ │ └── docker-puppeteer-pdf.js │ └── 12-31-Ubuntu-docker-puppeteer-刷B站视频播放量/ │ ├── README.md │ └── docker-h5.js ├── 2020/ │ ├── 1-19-TTS语音合成/ │ │ ├── README.md │ │ └── 讯飞语音/ │ │ ├── config.py │ │ ├── tts_ws_python3_demo.py │ │ └── xf_service.py │ ├── 1-20-hacker-tools/ │ │ └── README.md │ ├── 1-3-特朗普-推特-截图/ │ │ ├── README.md │ │ └── twitter_screenshot1.js │ ├── 10-9-weShare-ink-display/ │ │ └── README.md │ ├── 11-25-use-Search-engine/ │ │ └── README.md │ ├── 12-17-Azure-server-free/ │ │ └── README.md │ ├── 12-19-password-generator/ │ │ ├── README.md │ │ └── password.py │ ├── 12-21-python-hosts/ │ │ ├── README.md │ │ └── add-host-ip.py │ ├── 12-21-requests-toolbelt/ │ │ └── README.md │ ├── 12-22-PyGithub/ │ │ └── README.md │ ├── 12-4-chrome-enable-network-request-blocking/ │ │ └── README.md │ ├── 12-5-flask-ffmpeg-m3u8/ │ │ └── README.md │ ├── 2-1-WordCloud-武汉/ │ │ ├── README.md │ │ ├── 词云-Alice-英文.ipynb │ │ └── 词云wordcloud-中文.ipynb │ ├── 2-12-Elasticsearch-Chrome/ │ │ ├── README.md │ │ └── 分词.md │ ├── 2-13-微博实时抓取/ │ │ └── README.md │ ├── 2-17-Python-secrets/ │ │ └── README.md │ ├── 2-18-Docker-Go-goProxy/ │ │ └── README.md │ ├── 2-18-Scrapy-auto-proxy/ │ │ ├── README.md │ │ └── manage_proxy.py │ ├── 2-19-JetBrains-Pycharm-破解/ │ │ ├── README.md │ │ └── demo/ │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── demo.py │ │ ├── go.mod │ │ └── t1.go │ ├── 2-20-Python-Siri-语音朗读文章/ │ │ ├── Global-hotkeys.py │ │ ├── README.md │ │ ├── copy-string-tts.py │ │ ├── copy-string-tts2.py │ │ └── keyboard_Listener1.py │ ├── 2-22-Scrapy-Puppeteer-Js/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── demo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── items.py │ │ │ │ ├── middlewares.py │ │ │ │ ├── pipelines.py │ │ │ │ ├── settings.py │ │ │ │ └── spiders/ │ │ │ │ ├── __init__.py │ │ │ │ └── example.py │ │ │ ├── main.py │ │ │ └── scrapy.cfg │ │ ├── docker-puppeteer-index.js │ │ ├── index.html │ │ ├── js_server.go │ │ ├── js_server.py │ │ └── templates/ │ │ └── index.html │ ├── 2-23-压力测试-locust/ │ │ ├── README.md │ │ ├── locust-get.py │ │ ├── locust_file.py │ │ └── server.go │ ├── 2-24-Go-Module/ │ │ ├── README.md │ │ └── demo/ │ │ ├── a │ │ ├── a.go │ │ ├── a2.go │ │ ├── dir1/ │ │ │ ├── b.go │ │ │ ├── b2.go │ │ │ └── dir11/ │ │ │ └── b11.go │ │ ├── dir2d/ │ │ │ ├── d2.go │ │ │ └── d21.go │ │ └── go.mod │ ├── 2-26-Go_Proxy_server/ │ │ ├── README.md │ │ ├── go.mod │ │ ├── proxy_server │ │ └── proxy_server.go │ ├── 2-26-多点签到领积分/ │ │ ├── README.md │ │ ├── demo1.py │ │ ├── 多点-签到-抓包.txt │ │ └── 多点-领取奖励-抓包.txt │ ├── 2-29-Docker-WeChat/ │ │ └── README.md │ ├── 2-3-Chrome-extensions/ │ │ ├── README.md │ │ ├── content_scripts和background的消息传递.md │ │ └── 参考.md │ ├── 2-4-App-Store/ │ │ ├── 怎样做一个像 【七麦数据】那样的网站.txt │ │ └── 苹果 接口 node-js.txt │ ├── 2-5-Go语言入门/ │ │ └── README.md │ ├── 2-5-TTS-Moviepy/ │ │ ├── README.md │ │ └── TTS/ │ │ ├── Install.txt │ │ ├── config.py │ │ ├── xf_service.py │ │ └── 语音合成自动视频.ipynb │ ├── 2-6-BT_Torrent/ │ │ └── README.md │ ├── 2-6-Spider-Speed-test/ │ │ ├── README.md │ │ ├── go_spider │ │ ├── go_spider.go │ │ ├── scrapy_demo/ │ │ │ ├── README.md │ │ │ ├── scrapy.cfg │ │ │ └── scrapy_demo/ │ │ │ ├── __init__.py │ │ │ ├── items.py │ │ │ ├── middlewares.py │ │ │ ├── middlewares_proxy_redis.py │ │ │ ├── pipelines.py │ │ │ ├── settings.py │ │ │ └── spiders/ │ │ │ ├── __init__.py │ │ │ └── example.py │ │ ├── server │ │ └── server.go │ ├── 2-6-gocolly/ │ │ └── README.md │ ├── 2-7-Docker-Nginx-antiClawer/ │ │ ├── README.md │ │ ├── deny_userAgent.conf │ │ ├── go_spider │ │ ├── go_spider.go │ │ ├── nginx1.conf │ │ └── server.go │ ├── 2-9-Chrome插件-全文检索/ │ │ └── README.md │ ├── 3-1-世界语言-翻译-Siri朗读/ │ │ ├── README.md │ │ ├── baidu_translate_api.py │ │ ├── config.py │ │ ├── macOS-siri-百度翻译-TTS.py │ │ └── py-调用macos内置的语音听写功能.py │ ├── 3-10-nonebot_Coolq_Docker/ │ │ └── README.md │ ├── 3-13-macOS-lock-screen/ │ │ ├── README.md │ │ ├── lockscreen.py │ │ └── suspend.py │ ├── 3-14-DNS查询/ │ │ └── README.md │ ├── 3-14-时间管理/ │ │ └── README.md │ ├── 3-16-GitHub-Free/ │ │ ├── README.md │ │ ├── proxy_list1 │ │ ├── proxy_list1.py │ │ └── verify_proxy.py │ ├── 3-16-企业微信/ │ │ ├── QYWX_APP/ │ │ │ ├── WXBizMsgCrypt.py │ │ │ ├── callback1.py │ │ │ ├── config.py │ │ │ ├── ierror.py │ │ │ └── 安装.md │ │ ├── README.md │ │ └── bot1.py │ ├── 3-17-Auto.js/ │ │ ├── Programer-Pay-Solution.md │ │ ├── README.md │ │ ├── 微信/ │ │ │ ├── 微信-收款码-输入金额-备注.js │ │ │ ├── 微信-收款码-输入金额-捕捉toast.js │ │ │ ├── 微信-收款码-输入金额.js │ │ │ ├── 微信1.js │ │ │ └── 收款码.js │ │ └── 打开QQ聊天.js │ ├── 3-18-Docker-PHP-dataoke/ │ │ ├── PHP/ │ │ │ ├── README.md │ │ │ └── nginx/ │ │ │ ├── conf/ │ │ │ │ └── conf.d/ │ │ │ │ └── php.conf │ │ │ └── www/ │ │ │ ├── index.html │ │ │ ├── index.php │ │ │ └── phpinfo.php │ │ └── README.md │ ├── 3-18-raspberry-pi-VScode/ │ │ ├── README.md │ │ └── request-ip.py │ ├── 3-2-Wikipedia/ │ │ └── README.md │ ├── 3-20-keyboard-man/ │ │ └── README.md │ ├── 3-23-douban-movie-chrome-extension/ │ │ ├── README.md │ │ └── extension/ │ │ ├── _locales/ │ │ │ ├── en/ │ │ │ │ └── messages.json │ │ │ └── zh_CN/ │ │ │ └── messages.json │ │ ├── css/ │ │ │ └── tab.css │ │ ├── js/ │ │ │ ├── background.js │ │ │ └── content.js │ │ └── manifest.json │ ├── 3-24-macOS-Python-Notification/ │ │ ├── README.md │ │ ├── bili_status_number.py │ │ └── macos_notify.py │ ├── 3-25-git-sourcetree-Fork/ │ │ └── README.md │ ├── 3-26-m3u8-decrypt/ │ │ └── README.md │ ├── 3-28-Python反向编程/ │ │ ├── README.md │ │ └── demo.py │ ├── 3-29-Chrome-History/ │ │ └── README.md │ ├── 3-30-程序员-邮件订阅/ │ │ └── README.md │ ├── 3-31-python-smart-device/ │ │ ├── README.md │ │ ├── broadlink1.py │ │ ├── 广播1.py │ │ └── 监听1.py │ ├── 3-4-WireShark-https-Decrypt/ │ │ └── README.md │ ├── 3-5-Python-Request-https-with-proxy/ │ │ ├── README.md │ │ ├── verify_https.go │ │ └── verify_https.py │ ├── 3-5-Ubuntu-install-Wine-run-Windows/ │ │ └── README.md │ ├── 3-6-macOS创建输入法/ │ │ ├── README.md │ │ ├── bili_utf16.inputplugin │ │ └── mac_canton_utf16.inputplugin │ ├── 3-7-web-proxy/ │ │ ├── README.md │ │ ├── demo1.py │ │ └── demo2.py │ ├── 3-9-DNS-server/ │ │ ├── README.md │ │ ├── dns_flask.py │ │ └── mini_dns_server.go │ ├── 4-1-mitmproxy-抖音/ │ │ └── README.md │ ├── 4-10-MCN-papi酱/ │ │ ├── README.md │ │ └── analysis.py │ ├── 4-2-今日头条-原创视频-收益/ │ │ └── README.md │ ├── 4-23-moviepy-GIF/ │ │ ├── README.md │ │ └── 跳绳-GIF动画.ipynb │ ├── 4-23-程小奔python/ │ │ ├── README.md │ │ └── 检测物体.py │ ├── 4-29-GoPro-MAX/ │ │ └── README.md │ ├── 4-3-Jupiter-Notebook-插入HTML视频/ │ │ ├── README.md │ │ └── html_video.ipynb │ ├── 4-8-instagram/ │ │ └── README.md │ ├── 5-4-movie-调查犯罪是我们的职业/ │ │ ├── Crime est notre affaire.subs.cn.srt │ │ ├── Crime est notre affaire.subs.eng.srt │ │ └── README.md │ ├── 6-17-Bird-Sound-crawl/ │ │ ├── README.md │ │ ├── data.py │ │ ├── download_sound.py │ │ ├── sound_proxy.py │ │ └── sounds/ │ │ └── download.ams.birds.cornell.edu/ │ │ └── api/ │ │ └── v1/ │ │ └── asset/ │ │ ├── 108015/ │ │ │ └── audio │ │ └── 109243711/ │ │ └── audio │ ├── 6-17-EXIF-GPS/ │ │ ├── README.md │ │ └── exif-gps.py │ ├── 6-22-iPad-Draw-on-Map/ │ │ └── README.md │ └── 7-30-PDF-decrypt/ │ ├── README.md │ ├── pdf_decrypt.py │ └── pdf_unlock.go ├── 2021/ │ ├── 1-19-macOS-Window-On-Top/ │ │ └── README.md │ ├── 1-24-desert-forest-destroyed/ │ │ └── README.md │ ├── 1-27-server-psutil/ │ │ ├── README.md │ │ └── server_report.py │ ├── 1-31-scapy-graph-svg/ │ │ ├── Graphviz/ │ │ │ ├── dot/ │ │ │ │ └── test.dot │ │ │ └── 生成动态路由轨迹图.ipynb │ │ └── README.md │ ├── 1-4-bilibili_api/ │ │ └── README.md │ ├── 1-5-github-markdown-html/ │ │ ├── README.md │ │ └── repo_markdown_html1.py │ ├── 2-23-great-code/ │ │ └── README.md │ ├── 2-24-movie-cut/ │ │ └── README.md │ ├── 2-28-GitHub-short-link/ │ │ ├── README.md │ │ ├── push_qrcode1.py │ │ └── short_link1.py │ ├── 3-13-chrome-book/ │ │ └── README.md │ ├── 3-15-wallpaper/ │ │ ├── README.md │ │ └── 壁纸/ │ │ ├── README.MD │ │ ├── goWP.go │ │ ├── wp1.go │ │ ├── wp1.py │ │ ├── wp2.go │ │ └── wp_macos │ ├── 3-17-VMagicMirror/ │ │ └── README.md │ ├── 3-19-Chrome-tabs/ │ │ ├── README.md │ │ └── TabGroups-shortcuts/ │ │ ├── README.md │ │ ├── background.js │ │ ├── hello.html │ │ └── manifest.json │ ├── 3-21-subtitle-rejust/ │ │ ├── README.md │ │ ├── cn2.srt │ │ ├── jl1.py │ │ ├── 从网站下载的简体.srt │ │ ├── 从视频分离的字幕.srt │ │ └── 调整后.srt │ ├── 3-7-m3u8-chrome/ │ │ ├── README.md │ │ ├── ffmpeg1.py │ │ └── youku1.py │ ├── 5-30-SMS-api/ │ │ ├── README.md │ │ └── sms_server.py │ ├── 5-30-puppeteer-REPL/ │ │ ├── README.md │ │ └── 在命令行里REPL/ │ │ ├── DEMO.JS │ │ ├── debug.js │ │ └── puppeteer-extra-plugin-repl.js │ ├── 6-19-list-groupby/ │ │ ├── README.md │ │ └── groupby.py │ ├── 7-11-Flask-Pydantic/ │ │ ├── README.md │ │ ├── fastapi_pydantic1.py │ │ └── flask_pydantic1.py │ ├── 7-25-Lorca/ │ │ ├── README.MD │ │ └── examples/ │ │ ├── counter/ │ │ │ ├── Example.app/ │ │ │ │ └── Contents/ │ │ │ │ ├── Info.plist │ │ │ │ ├── MacOS/ │ │ │ │ │ └── lorca-example │ │ │ │ └── Resources/ │ │ │ │ └── icon.icns │ │ │ ├── build-linux.sh │ │ │ ├── build-macos.sh │ │ │ ├── build-windows.bat │ │ │ ├── counter_win10 │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── icons/ │ │ │ │ └── icon.icns │ │ │ ├── main.go │ │ │ └── www/ │ │ │ └── index.html │ │ ├── hello/ │ │ │ ├── hello_win10 │ │ │ ├── main.go │ │ │ └── main_macOS │ │ └── stopwatch/ │ │ ├── main.go │ │ ├── main_macOS │ │ └── stopwatch_win10 │ ├── 7-4-diskcache/ │ │ ├── README.md │ │ └── diskcache1.py │ ├── 8-1-deta-fastapi/ │ │ └── README.md │ ├── 8-15-Marp-ppt/ │ │ ├── README.MD │ │ ├── README.html │ │ ├── demo-完成.html │ │ ├── demo-完成.md │ │ ├── demo-完成2.html │ │ ├── demo-完成3.html │ │ ├── demo-完成4.html │ │ ├── demo-完成5.html │ │ ├── demo-完成6.html │ │ └── demo.md │ └── 9-3-Deta-Base/ │ ├── BaseDemo/ │ │ ├── config.py │ │ ├── main.py │ │ └── requirements.txt │ └── README.md └── README.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # new .idea .DS_Store ================================================ FILE: 2019/12-16-Github-Pull-requests-gocolly/Github-Pull-requests-gocolly.md ================================================ - 使用gocolly爬虫,想统计抓取情况发现不方便,所以自己修改colly.go写了一个方法Statistics - https://github.com/gocolly/colly/issues/411 - 参考 - [git学习--GitHub上如何进行PR(Pull Request)操作](https://blog.csdn.net/qq_33429968/article/details/62219783) - PR步骤 ```shell script #首先fork gocolly 到自己的GitHub # 然后clone到本地 (.py3) pro:github play$ mkdir PR (.py3) pro:github play$ cd PR (.py3) pro:PR play$ git clone git@github.com:makelove/colly.git Cloning into 'colly'... remote: Enumerating objects: 130, done. remote: Counting objects: 100% (130/130), done. remote: Compressing objects: 100% (97/97), done. remote: Total 1797 (delta 33), reused 52 (delta 8), pack-reused 1667 Receiving objects: 100% (1797/1797), 8.16 MiB | 43.00 KiB/s, done. Resolving deltas: 100% (955/955), done. (.py3) pro:PR play$ (.py3) pro:PR play$ ls . .. colly (.py3) pro:PR play$ cd colly/ #与 https://github.com/gocolly/colly 建立链接 (.py3) pro:colly play$ git remote -v origin git@github.com:makelove/colly.git (fetch) origin git@github.com:makelove/colly.git (push) (.py3) pro:colly play$ git remote add upstream https://github.com/gocolly/colly.git (.py3) pro:colly play$ git remote -v origin git@github.com:makelove/colly.git (fetch) origin git@github.com:makelove/colly.git (push) upstream https://github.com/gocolly/colly.git (fetch) upstream https://github.com/gocolly/colly.git (push) #建立分支 (.py3) pro:colly play$ git branch * master (.py3) pro:colly play$ git checkout -b Statistics Switched to a new branch 'Statistics' (.py3) pro:colly play$ git branch * Statistics master #修改代码 (.py3) pro:colly play$ sub . #提交代码 (.py3) pro:colly play$ git status On branch Statistics Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: colly.go no changes added to commit (use "git add" and/or "git commit -a") (.py3) pro:colly play$ git add colly.go (.py3) pro:colly play$ git commit -m "add Statistics function to colly.Collector" [Statistics fe0f649] add Statistics function to colly.Collector 1 file changed, 12 insertions(+) (.py3) pro:colly play$ git status On branch Statistics nothing to commit, working tree clean (.py3) pro:colly play$ git push fatal: The current branch Statistics has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin Statistics (.py3) pro:colly play$ git push --set-upstream origin Statistics Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 466 bytes | 466.00 KiB/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 2 local objects. remote: remote: Create a pull request for 'Statistics' on GitHub by visiting: remote: https://github.com/makelove/colly/pull/new/Statistics remote: To github.com:makelove/colly.git * [new branch] Statistics -> Statistics Branch 'Statistics' set up to track remote branch 'Statistics' from 'origin'. ``` - 在https://github.com/makelove/colly/pulls 创建 Pull requests - 检查代码 - 提交 ================================================ FILE: 2019/12-18-Caddy搭建Google镜像-反向代理/Caddy搭建Google镜像-反向代理.md ================================================ - 官网 - https://github.com/caddyserver/caddy - 下载 https://caddyserver.com/v1/download - 视频 https://www.bilibili.com/video/av79726017/ - 参考 - [caddy 搭建google 镜像,很容易](https://www.banwagongzw.com/33.html) - 安装脚本 - https://github.com/ToyoDAdoubi/doubi/blob/master/caddy_install.sh - 视频 - [Caddy搭建Google镜像-反向代理](https://www.bilibili.com/video/av79726017/) - 配置 - 最后在Chrome浏览器安装扩展【[删除谷歌重定向](https://github.com/kodango/Remove-Google-Redirection)】 - Chrome 网上应用店 https://chrome.google.com/webstore/detail/dnhjklgpiifbofihffldllbcopkinlod ```shell script (.py3) localhost:caddy_v1.0.4_linux_amd64 play$ cat Caddyfile :80 { gzip proxy / https://www.baidu.com } #执行 sudo ./caddy -conf ./Caddyfile ``` - 调试 - 镜像HTTPS网站 - ./caddy -host baidu.com -port 8080 - 可能SSL证书获取失败 ## 还需要买一个服务器 - 国外 - [vultr](https://www.vultr.com/?ref=8349543) ================================================ FILE: 2019/12-26-用docker模拟Nginx限制同一个爬虫ip的访问频率/用docker模拟Nginx限制同一个爬虫ip的访问频率.md ================================================ # 用docker模拟Nginx限制同一个爬虫ip的访问频率 - Nginx配置 https://blog.csdn.net/weixin_34341117/article/details/85848963 使用golang的tollbooth模块代替 https://github.com/didip/tollbooth - Docker 1.启动busybox docker run -it -p 84:4000 --volume /Users/play/CODE/GO/HTTP请求限流/tollbooth1:/go busybox cd /go/ /go # ./demo3_linux 网址 curl http://192.168.0.111:84/ip 查看IP docker exec -it container1 ip addr 172.17.0.2 2.启动代理 docker run -it -p 3129:3128 --name=squid3 datadog/squid 测试 curl -x localhost:3129 http://172.17.0.2:4000/ip 3.批量测试 ```shell script #!/bin/bash for((i=1;i<=10;i++)); do curl -x localhost:3129 http://172.17.0.2:4000/ip ; echo "" echo "-------" done ``` 4. Python测试 ```python import requests from time import sleep url='http://172.17.0.2:4000/ip' proxies = { "http": "http://localhost:3129", "https": "http://localhost:3129", } for i in range(200): rs=requests.get(url,proxies=proxies) print(rs.status_code,rs.text) if rs.status_code==429: sleep(0.3) ``` ================================================ FILE: 2019/12-29-Docker-OpenCV-golang-gocv/README.md ================================================ # 使用docker运行OpenCV+golang - 参考 - https://github.com/hybridgroup/gocv - https://hub.docker.com/r/hybridgroup/gocv - 结论 - docker+gocv 可以作为服务器程序,在服务器上高速执行 - 首先 pull docker - docker pull hybridgroup/gocv - 运行后 - 发现golang版本太低,不能执行代码,需要升级 下载 go1.13.3.linux-amd64.tar.gz https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz 不行 https://studygolang.com/dl/golang/go1.13.3.linux-amd64.tar.gz docker run -it -v /Users/play/github/gocv:/gocv hybridgroup/gocv 进入后,解压,即可 ```shell script 1 cd /gocv/ 2 rm -rf /usr/local/go 3 tar -C /usr/local -xzf go1.13.3.linux-amd64.tar.gz 4 go version ``` 退出 ```shell script (.py3) pro:~ play$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2dc43cabe71 hybridgroup/gocv "/bin/bash" 12 minutes ago Exited (0) 2 seconds ago hopeful_lehmann ec9d94cacbe1 pypy:3.6 "pypy3" 16 hours ago Exited (0) 16 hours ago admiring_vaughan #将容器打包成一个新的镜像 (.py3) pro:~ play$ docker commit f2dc43cabe71 gocv:go1.13 sha256:033be3d5044d7f84ff552255e0c7f3d1da7c92d3a462342d37799b3f02f519fa (.py3) pro:~ play$ docker image ls |grep gocv gocv go1.13 033be3d5044d 16 seconds ago 1.5GB hybridgroup/gocv latest f236ffa190b7 7 weeks ago 1.14GB #测试 docker run -it -v /Users/play/github/gocv:/gocv gocv:go1.13 root@d7b692fdda37:/gocv/cmd/version# go run main.go gocv version: 0.21.0 opencv lib version: 4.0.1 root@d7b692fdda37:/gocv/cmd/version# go version go version go1.13.3 linux/amd64 ``` - 执行脸部识别程序 ```shell script root@d7b692fdda37:/gocv/cmd/facedetect# cd /gocv/cmd/facedetect-from-url/ root@d7b692fdda37:/gocv/cmd/facedetect-from-url# go build -o facedetect main.go root@d7b692fdda37:/gocv/cmd/facedetect-from-url# ll -h total 8.3M drwxr-xr-x 4 root root 128 Jan 1 03:36 ./ drwxr-xr-x 30 root root 960 Dec 2 10:39 ../ -rwxr-xr-x 1 root root 8.3M Jan 1 03:36 facedetect* -rw-r--r-- 1 root root 1.9K Dec 2 11:04 main.go root@d7b692fdda37:/gocv/cmd/facedetect-from-url# ./facedetect How to run: facedetect-from-url [image URL] [classifier XML file] [image file] root@d7b692fdda37:/gocv/cmd/facedetect-from-url# ./facedetect https://raw.githubusercontent.com/hybridgroup/gocv/master/images/face.jpg ../../data/haarcascade_frontalface_default.xml output2.jpg [./facedetect https://raw.githubusercontent.com/hybridgroup/gocv/master/images/face.jpg ../../data/haarcascade_frontalface_default.xml output2.jpg] Get(imageURL) found 1 faces saved to output2.jpg root@d7b692fdda37:/gocv/cmd/facedetect-from-url# ll -h total 8.3M drwxr-xr-x 5 root root 160 Jan 1 03:38 ./ drwxr-xr-x 31 root root 992 Jan 1 03:38 ../ -rwxr-xr-x 1 root root 8.3M Jan 1 03:36 facedetect* -rw-r--r-- 1 root root 1.9K Dec 2 11:04 main.go -rw-r--r-- 1 root root 39K Jan 1 03:38 output2.jpg ``` - 大问题:不能编译跨平台程序,因为OpenCV - 在Linux编译macOS程序 ```shell script root@d7b692fdda37:/gocv/cmd/showimage# CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go # gocv.io/x/gocv /gocv/dnn_ext.go:9:28: undefined: Mat /gocv/dnn_ext.go:16:12: undefined: NewMatWithSize /gocv/dnn_ext.go:42:2: undefined: Resize /gocv/dnn_ext.go:42:38: undefined: InterpolationDefault /gocv/dnn_ext.go:45:3: undefined: CvtColor /gocv/dnn_ext.go:48:15: undefined: NewMat /gocv/dnn_ext.go:51:31: undefined: MatTypeCV32F ``` ================================================ FILE: 2019/12-29-Docker-OpenCV-golang-gocv/facedetect-from-url/main.go ================================================ // What it does: // // This example uses the CascadeClassifier class to detect faces from url, // and draw a rectangle around each of them, before displaying them within a Window. // // How to run: // // facedetect-from-url [image URL] [classifier XML file] [image file] // // go run ./cmd/facedetect-from-url/main.go https://raw.githubusercontent.com/hybridgroup/gocv/master/images/face.jpg data/haarcascade_frontalface_default.xml output.jpg // // +build example package main import ( "fmt" "image" "image/color" "io/ioutil" "log" "net/http" "os" "gocv.io/x/gocv" ) func main() { if len(os.Args) < 4 { fmt.Println("How to run:\n\tfacedetect-from-url [image URL] [classifier XML file] [image file]") return } // parse args imageURL := os.Args[1] xmlFile := os.Args[2] saveFile := os.Args[3] fmt.Println(os.Args) // color for the rect when faces detected blue := color.RGBA{0, 0, 255, 0} // load classifier to recognize faces classifier := gocv.NewCascadeClassifier() defer classifier.Close() if !classifier.Load(xmlFile) { fmt.Printf("Error reading cascade file: %v\n", xmlFile) return } // get image from URL res, err := http.Get(imageURL) if err != nil { log.Fatal(err) } println("Get(imageURL)") resByte, err := ioutil.ReadAll(res.Body) if err != nil { log.Fatal(err) } img, err := gocv.IMDecode(resByte, 1) if err != nil { log.Fatal(err) } rects := classifier.DetectMultiScale(img) fmt.Printf("found %d faces\n", len(rects)) // draw a rectangle around each face on the original image, // along with text identifing as "Human" for _, r := range rects { gocv.Rectangle(&img, r, blue, 3) size := gocv.GetTextSize("Human", gocv.FontHersheyPlain, 1.2, 2) pt := image.Pt(r.Min.X+(r.Min.X/2)-(size.X/2), r.Min.Y-2) gocv.PutText(&img, "Human", pt, gocv.FontHersheyPlain, 1.2, blue, 2) } gocv.IMWrite(saveFile, img) fmt.Printf("saved to %s\n", saveFile) } ================================================ FILE: 2019/12-30-Docker-Puppeteer抓取动态页面/README.md ================================================ # Docker+Puppeteer抓取动态页面 - 视频 https://www.bilibili.com/video/av81253564/ ### 问题 爬虫怎样抓取Js动态页面?例如电商网站的价格,销量 ## 常规解决方案 安装firefox selenium python - 问题 - 1 安装麻烦,配置麻烦 - 2 本地配置好了,不方便部署到服务器 - 3 效率低下 ## 解决 Docker+Puppeteer(Chrome headless node API) 1. 自定义脚本 - https://hub.docker.com/r/alekzonder/puppeteer - 下载 - docker pull alekzonder/puppeteer - 运行 - docker run --shm-size 1G --rm -v /Users/play/Temp/puppeteer/docker-puppeteer-pdf.js:/app/index.js -v /Users/play/Temp/puppeteer:/puppeteer alekzonder/puppeteer:latest - 查看PDF 2. 渲染中间件-动态网页 - https://hub.docker.com/r/zenato/puppeteer-renderer - 源代码 https://github.com/zenato/puppeteer-renderer - 运行 - docker run -it --name renderer -p 8080:3000 zenato/puppeteer-renderer - 测试 - curl http://localhost:8080/?url=https://ip.cn/ ## Scrapy 爬虫 抓取Js动态页面 - 参考 [scrapy如何在中间件修改请求url](https://blog.csdn.net/wang785994599/article/details/97887294) - 在middlewares.py编写中间件 ``` from urllib.parse import quote class Puppeteer(object): @classmethod def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls(crawler) # crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s def __init__(self, crawler): self.host = 'http://localhost:8080/?url=' def process_request(self, request, spider): request.meta['url'] = request.url url = self.host + quote(request.url) request._set_url(url) pass def process_response(self, request, response, spider): response._set_url(request.meta['url']) return response pass ``` - 在settings.py 加入 ``` DOWNLOADER_MIDDLEWARES = { 'demo.middlewares.Puppeteer': 543, } ``` - 缺点 - 不能更改Puppeteer的UserAgent ?!! - 只能修改index.js 源代码 ================================================ FILE: 2019/12-30-Docker-Puppeteer抓取动态页面/puppeteer/docker-puppeteer-pdf.js ================================================ /* 运行 docker run --shm-size 1G --rm -v /Users/play/Temp/puppeteer/docker-puppeteer-pdf.js:/app/index.js -v /Users/play/Temp/puppeteer:/puppeteer alekzonder/puppeteer:latest */ const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: [ '--no-sandbox', '--disable-setuid-sandbox' ] }); const page = await browser.newPage(); await page.goto('https://ip.cn/'); await page.waitFor(2000) await page.pdf({path: '/puppeteer/example.pdf'}); await browser.close(); })(); ================================================ FILE: 2019/12-31-Ubuntu-docker-puppeteer-刷B站视频播放量/README.md ================================================ # 12-31-Ubuntu-docker-puppeteer-刷B站视频播放量 - 首先在Ubuntu服务器上安装docker.io - 参考 https://docs.docker.com/install/linux/docker-ce/ubuntu/ - 先更新apt缓存 - sudo apt-get update - 添加key - 添加repo - 更新apt缓存 - sudo apt-get update - 安装 - sudo apt-get install docker-ce docker-ce-cli containerd.io - 测试 - sudo docker run hello-world - 拉取镜像 - sudo docker pull alekzonder/puppeteer - 上传js脚本 - docker-h5.js - 运行测试 - sudo docker run --shm-size 1G --name bili -v /home/play/WORK/puppeteer/docker-h5.js:/app/index.js alekzonder/puppeteer:latest - 服务器定时运行 - sudo crontab -e - 3 */2 * * * docker start bili - 每隔2小时执行 ================================================ FILE: 2019/12-31-Ubuntu-docker-puppeteer-刷B站视频播放量/docker-h5.js ================================================ /** * Created by play on 2019/8/24. 先安装node 再运行 npm install -g puppeteer 然后 node docker-h5.js Docker运行 docker rm bili docker run --shm-size 1G --name bili -v /Users/play/CODE/B站刷视频/docker-h5.js:/app/index.js alekzonder/puppeteer:latest docker run --shm-size 1G --name bili -v /home/play/WORK/puppeteer/docker-h5.js:/app/index.js alekzonder/puppeteer:latest */ Array.prototype.shuffle = function () { let m = this.length, i; while (m) { i = (Math.random() * m--) >>> 0; [this[m], this[i]] = [this[i], this[m]] } return this; } const puppeteer = require('puppeteer'); const main_url = 'https://space.bilibili.com/180948619/video' const main_url2 = 'https://space.bilibili.com/180948619/video?page=2' const main_url3 = 'https://space.bilibili.com/180948619/video?page=3' var browser var sel = '#bilibiliPlayer > div.bilibili-player-area.video-state-pause.video-control-show.video-state-blackside > div.bilibili-player-video-wrap > div.bilibili-player-video > video' sel ='div.player-box > div' // var sel2='div.bilibili-player-video' var urls = [] async function on_response(response) { // console.log('response url', response.url()) let url = response.url() if (url.indexOf('arc/search') > 0) { // let page2 = await browser.newPage(); // await page2.setViewport({width: 1280, height: 800}) // await page._client.send('Network.clearBrowserCookies')//TODO console.log('response url:', url) let text = await response.text() // console.log(text); let js = JSON.parse(text) for (let vd of js["data"]["list"]["vlist"]) { // console.log(vd) let url = 'https://www.bilibili.com/video/av' + vd["aid"] console.log(url) urls.push(url) console.log('---------') continue } } } async function run() { //const browser = await puppeteer.launch(); browser = await puppeteer.launch({ // headless: false, timeout: 20000, DefaultArgs:'--mute-audio', ignoreDefaultArgs: ['--enable-automation'], // executablePath: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome',//可注销 //也可以改为你系统里Chrome的目录 args: [ '--no-sandbox', '--disable-setuid-sandbox' ] }); const page = await browser.newPage(); page.on('response', on_response) const client = await page.target().createCDPSession(); await page.setViewport({width: 1280, height: 800}) console.log("page.goto(main_url)") await page.goto(main_url) console.log("page.waitFor(10000)") await page.waitFor(10000) // await page.goto(main_url2)//翻页 // await page.waitFor(15000) // await page.goto(main_url3)//翻页 // await page.waitFor(10000) // let url = 'https://www.bilibili.com/video/av56212181' //urls.length > 20 urls=urls.slice(0,10) urls.shuffle() console.log('urls len:', urls.length) await page.setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'); for (let url of urls) { // let page2 = await browser.newPage(); // await page2.setViewport({width: 1280, height: 800}) try { console.log("clearBrowserCookies") await client.send('Network.clearBrowserCookies'); await page.goto(url) await page.waitFor(6000); let title=await page.title() console.log('open url:', url,title) await page.click(sel) console.log("page.click('video')") await page.waitFor(10000); // await page.close() // await page2.waitFor(6000); } catch (err) { console.log(err) } } await page.waitFor(20000); // setTimeout() browser.close(); console.log("Finished",new Date()) } run(); ================================================ FILE: 2020/1-19-TTS语音合成/README.md ================================================ ## TTS 从文本到语音(TextToSpeech) 语音合成 - 视频 [想要鬼畜素材,【TTS语音合成】来帮你,哈哈哈](https://www.bilibili.com/video/av84082965) - macos say 使用文档 man say - 命令行 - say 'TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。' - 保存为文件 - say 'TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。' -o tts.aiff - 转成mp3 - brew install lame - lame -m m tts.aiff tts.mp3 - 发音人 【系统偏好设置】>>【辅助功能】>>【语音】 2. 更好的发音系统,更多选择 - 讯飞语音 https://www.xfyun.cn/services/online_tts - 文档 https://www.xfyun.cn/doc/tts/online_tts/API.html demo代码写得很烂 不方便使用,需要重写 ================================================ FILE: 2020/1-19-TTS语音合成/讯飞语音/config.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020-01-18 20:29 # @File : config.py """ config.py: """ APPID = 'xxx' APIKey = 'xxxxxx' APISecret = 'xxxxxx' ================================================ FILE: 2020/1-19-TTS语音合成/讯飞语音/tts_ws_python3_demo.py ================================================ # -*- coding:utf-8 -*- # # 播放 /Applications/VLC.app/Contents/MacOS/VLC --demux=rawaud --rawaud-channels 1 --rawaud-samplerate 16000 demo.pcm # 转换格式 ffmpeg -y -f s16be -ar 16000 -acodec pcm_s16le -i demo2.pcm demo22.mp3 # author: iflytek # # 本demo测试时运行的环境为:Windows + Python3.7 # 本demo测试成功运行时所安装的第三方库及其版本如下: # cffi==1.12.3 # gevent==1.4.0 # greenlet==0.4.15 # pycparser==2.19 # six==1.12.0 # websocket==0.2.1 # websocket-client==0.56.0 # 合成小语种需要传输小语种文本、使用小语种发音人vcn、ent=mtts、tte=unicode以及修改文本编码方式 # 错误码链接:https://www.xfyun.cn/document/error-code (code返回错误码时必看) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # import websocket import datetime import hashlib import base64 import hmac import json from urllib.parse import urlencode import time import ssl from wsgiref.handlers import format_date_time from datetime import datetime from time import mktime import _thread as thread import os import wave STATUS_FIRST_FRAME = 0 # 第一帧的标识 STATUS_CONTINUE_FRAME = 1 # 中间帧标识 STATUS_LAST_FRAME = 2 # 最后一帧的标识 class Ws_Param(object): # 初始化 def __init__(self, APPID, APIKey, APISecret, Text): self.APPID = APPID self.APIKey = APIKey self.APISecret = APISecret self.Text = Text # 公共参数(common) self.CommonArgs = {"app_id": self.APPID} # 业务参数(business),更多个性化参数可在官网查看 self.BusinessArgs = {"aue": "raw", "auf": "audio/L16;rate=16000", "vcn": "xiaoxue", "tte": "utf8", "ent": "aisound"} self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-8')), "UTF8")} # 使用小语种须使用以下方式,此处的unicode指的是 utf16小端的编码方式,即"UTF-16LE"” # self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-16')), "UTF8")} # self.url = self.create_url() # 生成url def create_url(self): url = 'wss://tts-api.xfyun.cn/v2/tts' # 生成RFC1123格式的时间戳 now = datetime.now() date = format_date_time(mktime(now.timetuple())) # 拼接字符串 signature_origin = "host: " + "ws-api.xfyun.cn" + "\n" signature_origin += "date: " + date + "\n" signature_origin += "GET " + "/v2/tts " + "HTTP/1.1" # 进行hmac-sha256进行加密 signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'), digestmod=hashlib.sha256).digest() signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8') authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % ( self.APIKey, "hmac-sha256", "host date request-line", signature_sha) authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8') # 将请求的鉴权参数组合为字典 v = { "authorization": authorization, "date": date, "host": "ws-api.xfyun.cn" } # 拼接鉴权参数,生成url url = url + '?' + urlencode(v) print("date: ", date) print("v: ", v) # 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致 print('websocket url :', url) return url def on_message(ws, message): try: message = json.loads(message) code = message["code"] sid = message["sid"] audio = message["data"]["audio"] audio = base64.b64decode(audio) status = message["data"]["status"] # print(message) if status == 2: print("ws is closed") ws.close() if code != 0: errMsg = message["message"] print("sid:%s call error:%s code is:%s" % (sid, errMsg, code)) else: with open('./demo333.pcm', 'ab') as f:#用追加的模式写入语音 f.write(audio) except Exception as e: print("receive msg,but parse exception:", e) # 收到websocket错误的处理 def on_error(ws, error): print("### error:", error) # 收到websocket关闭的处理 def on_close(ws): print("### closed ###") # 收到websocket连接建立的处理 def on_open(ws): def run(*args): # TODO while true d = {"common": wsParam.CommonArgs, "business": wsParam.BusinessArgs, "data": wsParam.Data, } d = json.dumps(d) print(d) print("------>开始发送文本数据") ws.send(d) if os.path.exists('./demo.pcm'): os.remove('./demo.pcm') thread.start_new_thread(run, ()) if __name__ == "__main__": # 测试时候在此处正确填写相关信息即可运行 text = '苹果中国宣布iPad降价:最高降幅达500元' from config import APIKey, APISecret, APPID wsParam = Ws_Param(APPID=APPID, APIKey=APIKey, APISecret=APISecret, Text=text) # "这是一个语音合成示例" websocket.enableTrace(True) wsUrl = wsParam.create_url() print('wsUrl:', wsUrl) ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close) ws.on_open = on_open ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE}) ================================================ FILE: 2020/1-19-TTS语音合成/讯飞语音/xf_service.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020-01-18 20:25 # @File : xf_service.py """ xf_service.py: """ # import websocket from websocket import create_connection import datetime import hashlib import base64 import hmac import json from urllib.parse import urlencode import os from wsgiref.handlers import format_date_time from datetime import datetime from time import mktime class XFtts(object): # 初始化 def __init__(self, APPID, APIKey, APISecret, ): self.APPID = APPID self.APIKey = APIKey self.APISecret = APISecret # self.Text = Text # 公共参数(common) self.CommonArgs = {"app_id": self.APPID} # 业务参数(business),更多个性化参数可在官网查看 self.BusinessArgs = {"aue": "raw", "auf": "audio/L16;rate=16000", "vcn": "xiaoxue", "tte": "utf8", "ent": "aisound"}#TODO # self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-8')), "UTF8")} # 使用小语种须使用以下方式,此处的unicode指的是 utf16小端的编码方式,即"UTF-16LE"” # self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-16')), "UTF8")} # self.url = self.create_url() # 生成url def create_url(self): url = 'wss://tts-api.xfyun.cn/v2/tts' # 生成RFC1123格式的时间戳 now = datetime.now() date = format_date_time(mktime(now.timetuple())) # 拼接字符串 signature_origin = "host: " + "ws-api.xfyun.cn" + "\n" signature_origin += "date: " + date + "\n" signature_origin += "GET " + "/v2/tts " + "HTTP/1.1" # 进行hmac-sha256进行加密 signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'), digestmod=hashlib.sha256).digest() signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8') authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % ( self.APIKey, "hmac-sha256", "host date request-line", signature_sha) authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8') # 将请求的鉴权参数组合为字典 # authorization='YXBpX2tleT0iODc1YmQ5OGNmOTJmZTE0OGQxNDU5ODFiZjZmNGJhMGEiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0ia3RlelJoV2lMS2tvbW9rbXcxZDhvZ1Q5WE5Obld1ZWhqcjFWUVhleFZkTT0i' v = { "authorization": authorization, "date": date, "host": "ws-api.xfyun.cn" } # 拼接鉴权参数,生成url url = url + '?' + urlencode(v) # print("date: ", date) # print("v: ", v) # 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致 # print('websocket url :', url) # url='wss://tts-api.xfyun.cn/v2/tts?authorization=YXBpX2tleT0iODc1YmQ5OGNmOTJmZTE0OGQxNDU5ODFiZjZmNGJhMGEiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iU0hnZ1lLa2c4Y0xUV25BdTNTNGkwak90YzhYNnM1WENrTFFIUHRLekc0VT0i&date=Sat,%2004%20Jan%202020%2004:19:03%20GMT&host=ws-api.xfyun.cn' return url def say(self, sentens,speaker='xiaoxue'):#发音人 print(sentens) text = str(base64.b64encode(sentens.encode('utf-8')), "UTF8") # print(text) self.BusinessArgs['vcn']=speaker Data = {"status": 2, "text": text} d = {"common": self.CommonArgs, "business": self.BusinessArgs, "data": Data, }#传参 dt = json.dumps(d) print(d) # if not ws.connected: # print('重新连接ws') # # uri = wsParam.create_url() # ws = create_connection(uri) ws = create_connection(self.create_url()) ws.send(dt) print('-' * 30) print('接收信息') audiosum = bytes() while True: message = ws.recv() # print(message) try: message = json.loads(message) code = message["code"] sid = message["sid"] audio = message["data"]["audio"] audio = base64.b64decode(audio) status = message["data"]["status"] if status == 2: audiosum += audio print("ws is closed") ws.close() # wav_path = f'./wav-{index}.wav' # wav_path = f'{dir}/{index}.wav' # with wave.open(wav_path, 'wb') as wavfile: # wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE')) # wavfile.writeframes(audiosum) # TODO byteIO ? # print('写入 ', wav_path) # rsd[index] = {'sentens': sentens, 'file': wav_path} return audiosum # break if code != 0: errMsg = message["message"] print("sid:%s call error:%s code is:%s" % (sid, errMsg, code)) else: audiosum += audio continue except Exception as e: print("receive msg,but parse exception:", e) pass def tts_say_wave(wav_path,text): import wave from config import APIKey, APISecret, APPID wsParam = XFtts(APPID=APPID, APIKey=APIKey, APISecret=APISecret, ) audiosum = wsParam.say(text) # audiosum += audio with wave.open(wav_path, 'wb') as wavfile: wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE')) wavfile.writeframes(audiosum) print('写入 ', wav_path) pass def main(): wav_path = f'test1.wav' text = '而除了靠免费盗版片获取流量,以广告等方式变现的途径外,更直接的盈利方式就是直接售卖盗版资源。2019年4月,媒体报道称河南公安机关已打击2个制作销售高清盗版电影的犯罪团伙,截止案发,这2个团伙共制作盗版影片320余部,初步估算非法获利700余万元。' tts_say_wave(wav_path,text) pass if __name__ == '__main__': main() ================================================ FILE: 2020/1-20-hacker-tools/README.md ================================================ ## Docker黑客工具 - 视频:[一行命令让你成为黑客高手!!!Docker黑客工具](https://www.bilibili.com/video/av84227396/) - https://hub.docker.com/r/veerendrav2/hacker-tools - 下载 - docker pull veerendrav2/hacker-tools - 启动 - docker run -it --rm --net=host --privileged veerendrav2/hacker-tools - 启动squid代理 - docker run -it --rm -p 3128:3128 datadog/squid - docker exec -it 1bff576f3afc /bin/bash - 测试 - traceroute baidu.com - ping 172.17.0.2 - nmap 172.17.0.2 ================================================ FILE: 2020/1-3-特朗普-推特-截图/README.md ================================================ # 特朗普-推特-截图 - 首先要使用代理 - args: ['--proxy-server=127.0.0.1:8118'], - 然后page.goto(main_url) - 使用selector获取【推文】元素 - 截图 ================================================ FILE: 2020/1-3-特朗普-推特-截图/twitter_screenshot1.js ================================================ /* 要使用代理执行 */ const puppeteer = require('puppeteer'); var main_url='https://twitter.com/realDonaldTrump' async function run() { //const browser = await puppeteer.launch(); browser = await puppeteer.launch({ headless: false, timeout: 20000, DefaultArgs:'--mute-audio', ignoreDefaultArgs: ['--enable-automation'], executablePath: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome',//可注销 //也可以改为你系统里Chrome的目录 ignoreHTTPSErrors: true, args: ['--proxy-server=127.0.0.1:8118'], }); const page = await browser.newPage(); await page.setViewport({width: 1280, height: 1000}) await page.goto(main_url) console.log('page.waitFor(10000)') await page.waitFor(4000) // const element = await page.$("body"); // await element.screenshot({ // path: "screenshot.png" // }); // let elements=document.querySelectorAll('div > article') console.log('kaishi截图') let elements=await page.$$('#stream-items-id > li') console.log('截图',elements.length) for (var i = 0; i < elements.length; i++) { console.log(i); await elements[i].screenshot({ path: i+"_screenshot.png" }); await page.waitFor(1000) } // elements.forEach(async function(element,index){ // console.log(index) // await element.screenshot({ // path: index+"_screenshot.png" // }); // }) console.log('page.waitFor(2000);') await page.waitFor(200000); // setTimeout() browser.close(); } run(); ================================================ FILE: 2020/10-9-weShare-ink-display/README.md ================================================ ## 微雪-墨水屏-编程 ## 视频 - [微雪墨水屏-Arduino编程,ESP32 支持WiFi和蓝牙](https://www.bilibili.com/video/BV1yz4y1C7Y8/) ## 购买 - 淘宝,运费6元 - [微雪 墨水屏裸屏驱动板 SPI接口 ESP32 ESP8266 支持WIFI/蓝牙](https://s.click.taobao.com/t?e=m%3D2%26s%3DLWwjUCPQv2QcQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67trmiN9ZoeYrZW7hPg9HazilldgrEKAMDZqHHjUPN5fPvcXgLQcnSPhUUJCbLNYEnHJi6DFpZGNc%2Bht3wBcxEojg%2BvVPtZxVh1vzY1gj2%2FS51m%2FRykadurUYtE6uZJaO3HEqY%2Bakgpmw&scm=null&pvid=null&app_pvid=59590_11.88.32.203_568_1602231743720&ptl=floorId%3A17741&originalFloorId%3A17741&app_pvid%3A59590_11.88.32.203_568_1602231743720&union_lens=lensId%3APUB%401602231720%400b1a25df_d9d4_1750c73d849_2645%40026UvXKptoe9OnJOZeqXA9tB) - e-Paper ESP32 Driver Board - [微雪 4.2寸墨水屏裸屏 电子纸 显示模块 红黑白三色 兼容树莓派4](https://s.click.taobao.com/t?e=m%3D2%26s%3Dgu%2FRd0bRTGkcQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67ogRc0DrYpkvFfrEfJ4hp2qlldgrEKAMDZqHHjUPN5fPvcXgLQcnSPhUUJCbLNYEnHJi6DFpZGNc%2Bht3wBcxEojg%2BvVPtZxVh1vzY1gj2%2FS51m%2FRykadurUDBRIF6NDIT3EqY%2Bakgpmw&scm=null&pvid=null&app_pvid=59590_11.26.37.22_555_1602231877211&ptl=floorId%3A17741&originalFloorId%3A17741&app_pvid%3A59590_11.26.37.22_555_1602231877211&union_lens=lensId%3APUB%401602231873%400b14eca8_ae89_1750c763150_4d4c%40027HYB50teMJ7vU6A8SsikWj) - 资料 - https://www.waveshare.net/wiki/E-Paper_ESP32_Driver_Board - 根据这个指南,安装软件和驱动 - 下载案例 E-Paper_ESP32_Driver_Board_Code - 外国参考 https://www.hackster.io/vitorio/e-paper-name-tag-2d22cc - 步骤 - Windows 7 安装 Arduino IDE - 在GitHub下载 [Arduino-ESP32 支持包](https://codeload.github.com/espressif/arduino-esp32/zip/master) 驱动,放在hardware文件夹,新建子文件夹 - 使用管理员权限打开cmd ``` cd C:\Program Files (x86)\Arduino\hardware\espressif\esp32\tools C:\Program Files (x86)\Arduino\hardware\espressif\esp32\tools>get.exe System: Windows, Info: Windows-7-6.1.7601-SP1 Platform: i686-mingw32 Downloading xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip Done Extracting xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip Downloading esptool-2.6.1-windows.zip Done Extracting esptool-2.6.1-windows.zip Downloading mkspiffs-0.2.3-arduino-esp32-win32.zip Done Extracting mkspiffs-0.2.3-arduino-esp32-win32.zip Renaming mkspiffs-0.2.3-arduino-esp32-win32/ to mkspiffs Done ``` ## WiFi案例 - 然后打开ArduinoIDE - 打开WiFi案例,编译,上传 - 编译完后,马上长按boot键 - 等上传完毕,松开 - 打开串口后台,波特率:115200 - 按下EN键,连接WiFi - 串口显示IP - 浏览器登录http://192.168.1.104/ - 上传图片 - 尺寸 4.2b ? c ? - 串口输出 ``` ets Jun 8 2016 00:22:57 rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:1216 ho 0 tail 12 room 4 load:0x40078000,len:10864 load:0x40080400,len:6432 entry 0x400806b8 Connecting to Pro . WiFi connected Server started 192.168.1.104 Ok! ``` ## 蓝牙案例 - 跟WiFi案例相同,编译上传固件 - 在案例文件夹里找到app-release.apk,上传到手机安装 - 手机蓝牙,连接电子纸驱动板 - 打开App,上传图片 ## macOS系统 - 安装驱动很麻烦,不支持,不推荐使用macOS ``` I found that macOS High Sierra has blocked the SiLabs kernel extension. Here are steps to allow this extension: Go to "System Preferences" -> "Security & Privacy" In the bottom of the window, you will see a message "System software from developer "SiLabs" was blocked from loading." Click on "Allow" button Restart your Mac Now my device is listed as /dev/cu.SLAB_USBtoUART and everything work as expected. ``` ## 售后 - 微雪客服,技术支持工程师 ``` EMAIL:2355742828@qq.com 电话:0755-83040712 QQ: 2355742828 ``` ================================================ FILE: 2020/11-25-use-Search-engine/README.md ================================================ # 怎样使用搜索引擎 - 视频 [【实践】怎样使用搜索引擎?代替Google](https://www.bilibili.com/video/BV1UD4y1X7xm/) ## 国内 - 不要使用百度 - 使用微软bing - https://cn.bing.com/ - 能搜到大部分信息 - 其他搜索引擎 - 平时我都不用 - 只能搜索到部分信息 - 搜狗 - 用来搜微信公众号 - 360 - 绑定在360浏览器,设置其他搜索引擎非常麻烦,让你放弃,老老实实使用360搜索 ## 国外 - Google - https://www.google.com/ 不能访问 - http://www.google.cn/ - 会调整到http://www.google.com.hk/webhp?hl=zh-CN&sourceid=cnhp - 打不开 - 用来下载 Chome 和 Google Earth - http://www.google.cn/chrome/ - http://www.google.cn/intl/zh-CN/earth/ - 翻译 https://translate.google.cn/?hl=zh-CN - https://www.google.com.hk - 打不开 - https://duckduckgo.com/ - 打不开 ## 代替 Google - 雅虎搜索 - AOL搜索 - https://search.aol.com/ - 俄罗斯 - https://yandex.com/ - 捷克 - https://search.centrum.cz/ - 推荐使用这个,因为它使用Google的结果 - 有验证码 ## 搭建网站 - https://github.com/makelove/whoogle-search - 没有广告 - 没有跟踪/链接您的个人IP地址 - 易于安装/部署 - [Heroku快速部署](https://heroku.com/about) ================================================ FILE: 2020/12-17-Azure-server-free/README.md ================================================ ## 免费Azure服务器 - 视频 [【亲测有效】申请微软Azure服务器免费12个月](https://www.bilibili.com/video/BV12p4y1q7t7/) - 参考 - [申请微软Azure服务免费12个月+$200 额度+永久免费(25+项服务)](https://www.daniao.org/7057.html) - 首月送200美金,10T流量随意用 - vps免费资源为1G内存/40G空间/15G月流量,持续一年。 - 套路 - 需要试用完200美元或者过了30天后,必须升级即用即付后,才能享受12个月免费服务 - 免费12个月期间,如果产生扣费(比如流量超了)会在下个月账单中直接信用卡扣费。 - 免费12个月到期后,订阅不会停止,已开通的免费资源会直接产生扣费 - 注册 - 活动 [通过 12 个月的免费服务开始使用](https://azure.microsoft.com/zh-cn/free/) - 一张信用卡,验证卡的时候扣费1美刀!(VISA或者万事达,且没有激活过其他账号) - 创建虚拟机vps - 选择配置的时候一定要选择标准 B1s这个配置 - 只有它才免费 - 创建用户时,建议使用 【ssh密钥】,到时登录不需要密码,很方便 - 创建完成后 - 【网络】添加【入站端口】 - 登录服务器 - ssh 【你的账号】@【你的IP】 - ssh ms@168.62.xxx.xxx - 翻墙 - Nginx反向代理 - Squid代理 - 用来做爬虫 - 参考 - 搭建 https://www.linuxidc.com/Linux/2019-08/159960.htm - squid搭建高匿名代理服务 https://www.jianshu.com/p/96c8f1f7fd17 - 测试 - curl -x 你的IP:3128 http://httpbin.org/ip - SSR - 比较复杂 - 微软发公告禁止翻墙 - ssh 隧道 - 最简单 - 先登录服务器 ssh -f -NC -D 2345 ms@168.62.xxx.xxx - sock5代理,端口是2345 - 然后在Chrome浏览器的【Proxy SwitchyOmega】插件设置代理 - 代理协议是SOCKS5,IP是127.0.0.1,端口是2345 - 测试 - curl --socks5 localhost:2345 http://httpbin.org/ip - Python 虚拟环境 - sudo apt-get install python3-pip - pip3 install virtualenv - virtualenv -p /usr/bin/python3.6 .py3 - 把source ~/.py3/bin/activate - 加到~/.bashrc末尾 - 这样,每次登录服务器,就能自动使用Python 虚拟环境 - YouTube视频 - pip3 install youtube_dl - sudo apt install ffmpeg - pip3 install python-ffmpeg-video-streaming - 下载视频 - 从服务器到本机 - 使用Nginx - sudo ln -s /home/ms/video/ /var/www/html/video - 修改Nginx配置,添加【目录遍历】 - 参考 https://blog.csdn.net/ddazz0621/article/details/85338671 - 打开 http://服务器IP/video/ - 可以使用ftp,比较慢 - 使用Flask ,比较快,1 m/s - response=send_file(fp,as_attachment=True,attachment_filename=filename) - 使用m3u8在线观看,hls流式播放 - https://github.com/newnewcoder/flask-hls-demo - https://github.com/aminyazdanpanah/python-ffmpeg-video-streaming - 问题,ts文件大,网速慢,体验差 ``` (.py3) ms@f1:~/video$ youtube-dl https://www.youtube.com/watch?v=79aP7BhrbuI [youtube] 79aP7BhrbuI: Downloading webpage [youtube] 79aP7BhrbuI: Downloading MPD manifest [download] Destination: The world's top 10 ultimate travel experiences-79aP7BhrbuI.mp4 [download] 100% of 29.18MiB in 00:01 ``` - Google Earth Studio - 翻墙后,配置Chrome浏览器的【Proxy SwitchyOmega】插件 - 打开 https://earth.google.com/studio/ - 需要申请,很快通过,当天 - 新建工程,然后调整视角,地点 - 渲染,它会自动导出高分辨率的图片到你的电脑 - 然后使用【视频剪辑软件】合并成视频 - 使用FFmpeg命令行 - 参考 https://blog.csdn.net/wangshuainan/article/details/77914508 - ffmpeg -i 测试1_%03d.jpeg -vcodec libx264 -r 30 test.mp4 - 【测试1】 为工程名称 - 图片:测试1_441.jpeg - -r 30 帧率 - -vcodec libx264 编码器 - 视频[【测试】Google Earth Studio 样片,使用ffmpeg合成,无声](https://www.bilibili.com/video/BV1yp4y1q7Nw/) - 使用moviepy ================================================ FILE: 2020/12-19-password-generator/README.md ================================================ ## Python密码生成器 - 视频 [Python密码生成器,轻松实现](https://www.bilibili.com/video/BV1sf4y1e7gk/) - 参考 - https://github.com/redacted/XKCD-password-generator - https://pypi.org/project/random-password-generator/ - https://github.com/PyLamGR/PyVault - 代码 - [password.py](password.py) - 需求 - 1.很多网站App,新建账号时需要添加密码 - 2.简单密码不安全 - 3.在多个网站使用同一个密码,也不安全 - 4.创建密码后,使用Excel或密码管理器1password保存 - 5.Chrome浏览器自带密码管理 ================================================ FILE: 2020/12-19-password-generator/password.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/12/19 13:29 # @File : password.py """ password.py: password-generator 快捷方式 alias pw='python3 /Users/play/CODE/Python_Test/密码生成器/password.py' """ import sys import random, string def 不重复(size=6, chars=string.ascii_letters + string.digits): pw = '' for _ in range(size): x = random.choice(chars) pw += x chars = chars.replace(x, '') pass return pw def random_string_generator(size=6, chars=string.ascii_letters + string.digits): return ''.join(random.choice(chars) for _ in range(size)) def main(size): # return random_string_generator(size) return 不重复(size) pass if __name__ == '__main__': if len(sys.argv) > 1: num = int(sys.argv[1]) else: num = 8 if num > 62: print('长度太大') else: rs = main(num) print(rs) ================================================ FILE: 2020/12-21-python-hosts/README.md ================================================ ## 用来翻墙 - 视频 [Python 工具库python-hosts的使用](https://www.bilibili.com/video/BV1y5411G7Kj/) - 代码 - [add-host-ip.py](add-host-ip.py) - 怎样修改域名+IP,打开国外网站更流畅? - 查询 全球DNS - https://www.gdnspc.com/ - 国内 https://www.ping.cn/dns - [拨号API接口](https://www.ping.cn/api) - 获取 服务器IP - 把curl转成Python Requests代码 - https://curl.trillworks.com/ - 检查本地能否连接该IP - [python requests toolbelt 工具带的使用](https://www.bilibili.com/video/BV1rh411Z73N/) - 写入/etc/hosts - 参考 - https://github.com/jonhadfield/python-hosts - 解析/etc/hosts - 可以添加或删除【 IP+domain】映射 ================================================ FILE: 2020/12-21-python-hosts/add-host-ip.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/12/21 11:56 # @File : add-host-ip.py """ add-host-ip.py: 自动添加/etc/hosts 域名绑定IP """ import requests def 查询全球DNS(host): import requests headers = { 'authority': 'www.gdnspc.com', 'sec-ch-ua': '"Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"', 'accept': 'application/json, text/javascript, */*; q=0.01', 'dnt': '1', 'x-requested-with': 'XMLHttpRequest', 'sec-ch-ua-mobile': '?0', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36', 'sec-fetch-site': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'referer': 'https://www.gdnspc.com/', 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', 'cookie': '__cfduid=d7f182d3c5a68e71c2a9902c472e8a3631608433922; _ga=GA1.2.1900327867.1608433937; _gid=GA1.2.337357370.1608433937; __gads=ID=6af39aca34d98035-22caac9a43c50018:T=1608433936:RT=1608433936:S=ALNI_MaE5H6FI7G_xbl_V_rJex291IiUkw; PHPSESSID=468b4c4c7f252da4308788b995996134', } params = ( ('s', '162'), ('t', 'A'), ('q', 'raw.githubusercontent.com'), ('k', 'AyaEUoRPnk5yximSDQFBow2FGoM91qP1'), ('r', '1608534545-CFbFIYp4MCn78Beb'), ) response = requests.get('https://www.gdnspc.com/api/checker', headers=headers, params=params) js = response.json() return js['result'][0]['record'] pass def 查询全球DNS2(host): headers = { 'authority': 'www.whatsmydns.net', 'sec-ch-ua': '"Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"', 'accept': 'application/json, text/plain, */*', 'dnt': '1', 'sec-ch-ua-mobile': '?0', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36', 'sec-fetch-site': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'referer': 'https://www.whatsmydns.net/', 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', 'cookie': '__cfduid=dd845ca2c0dae8ef04fade64da42aa53d1608433918; _ga=GA1.2.864067538.1608433921; _gid=GA1.2.1694506165.1608433921; __gads=ID=7c02c0ed2adccebb:T=1608527151:S=ALNI_MYn8MpuX26lqec-GtWHF_fWoSR1qA; _gat=1', } params = ( ('server', '343'), ('type', 'A'), ('query', host,), # 'hide.me' ) response = requests.get('https://www.whatsmydns.net/api/details', headers=headers, params=params) js = response.json() return js['data'][0]['response'][0] #js['result'][0]['record'] pass import socket def 检查本地能否连接该IP(ip, host): # OK from requests.exceptions import ConnectTimeout,ConnectionError from requests_toolbelt.adapters import host_header_ssl s = requests.Session() s.mount('https://', host_header_ssl.HostHeaderSSLAdapter()) headers = { "Host": host, 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36', } # rs = s.get("https://"+ip, headers={"Host": host}) try: rs = s.get(f"https://{ip}/", headers=headers, timeout=4, verify=False,allow_redirects=False) print(rs.status_code, rs.headers) except ConnectTimeout as e: return False except Exception as e: print(e) return True pass def 检查本地能否连接该IP1(ip): # import socket # s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # try: # s.connect((ip, 80)) # print("Port 80 reachable") # except socket.error as e: # print("Error on connect: %s" % e) # s.close() with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: try: s.connect((ip, 80)) print("Port 80 reachable") return True except socket.error as e: print("Error on connect: %s" % e) return False def 检查本地能否连接该IP2(ip): try: socket.gethostbyaddr(ip) except socket.herror: print(u"Unknown host 连接不上") return False return True pass def main(url): # 查询 全球DNS # 获取 服务器IP from urllib.parse import urlparse host = urlparse(url).netloc print('host:',host) ip = 查询全球DNS(host) # 检查本地能否连接该IP print('检查本地能否连接该IP') print('-'*40) tf = 检查本地能否连接该IP(ip, host) print('-'*40) # ip='151.101.124.133' # tf=True # 写入/etc/hosts if tf: print('写入/etc/hosts') # Root 用户 from python_hosts import Hosts, HostsEntry hosts = Hosts(path='/etc/hosts') new_entry = HostsEntry(entry_type='ipv4', address=ip, names=[host]) hosts.add([new_entry]) hosts.write() pass else: print('该IP不能连接', ip) pass if __name__ == '__main__': import sys if len(sys.argv) > 1: url = sys.argv[1] main(url) else: print('添加url') # 检查本地能否连接该IP('8.7.198.46', 'google.com') # 检查本地能否连接该IP('174.138.52.82', 'hide.me') # 检查本地能否连接该IP('151.101.52.133', 'raw.githubusercontent.com') ================================================ FILE: 2020/12-21-requests-toolbelt/README.md ================================================ ## python requests toolbelt 工具带的使用 - 视频 [python requests toolbelt 工具带的使用](https://www.bilibili.com/video/BV1rh411Z73N/) - 步骤 - 1.Request请求绑定 网卡IP - 2.Request请求绑定 目标服务器IP - 参考 - https://stackoverflow.com/questions/28773033/python-requests-how-to-bind-to-different-source-ip-for-each-request - https://github.com/psf/requests/issues/394 - 官方文档 - https://toolbelt.readthedocs.io/en/latest/user.html ================================================ FILE: 2020/12-22-PyGithub/README.md ================================================ ## Github API 的使用-PyGithub - 视频 [Github API 的使用-PyGithub](https://www.bilibili.com/video/BV1fh411Z777/) - 参考 - 第一个例子 [How to Use Github API in Python](https://www.thepythoncode.com/article/using-github-api-in-python) - [PyGithub](https://github.com/PyGithub/PyGithub) - [文档](https://pygithub.readthedocs.io/en/latest/introduction.html) - [Examples例子代码](https://pygithub.readthedocs.io/en/latest/examples.html) - [使用 Python3 编写 Github 自动周报生成器](https://www.jianshu.com/p/a0af604b3d97) - 不错 [使用GitHub API和Python可以做的所有事情](https://towardsdatascience.com/all-the-things-you-can-do-with-github-api-and-python-f01790fca131) 要翻墙 - [Rate limit ](https://docs.github.com/en/free-pro-team@latest/rest/reference/rate-limit) - [创建个人token](https://github.com/settings/tokens) ================================================ FILE: 2020/12-4-chrome-enable-network-request-blocking/README.md ================================================ ## 创建Chrome扩展程序以阻止网站请求 - 视频 [【经验】开发Chrome插件,浏览器禁止某些网络请求,更快加载国外的网站](https://www.bilibili.com/video/BV1TT4y1M72r/) - 代码 - [Chrome Request Blocker Extension](https://github.com/clupasq/ChromeHttpRequestBlocker) - 参考 - Chrome Dev tool - > opening the 3-dot-menu at the top right of the dev tools - >> More tools - >>> Request blocking - https://stackoverflow.com/questions/18158297/blocking-request-in-chrome - [BlockIt - Chrome extension to block requests](https://www.codeproject.com/Articles/1179350/BlockIt-Chrome-extension-to-block-requests) - [创建一个简单的扩展程序以阻止网站](https://ops.tips/blog/extension-to-block-websites/) ================================================ FILE: 2020/12-5-flask-ffmpeg-m3u8/README.md ================================================ ## Python编程,Flask网站播放m3u8流媒体 - 视频 [【Python编程】Flask网站播放m3u8流媒体](https://www.bilibili.com/video/BV15K4y1L7nF/) - 步骤 - FFmpeg切割视频,ts - m3u8指向ts段文件 - 在浏览器端使用hls.js播放视频 - 代码 - https://github.com/newnewcoder/flask-hls-demo - https://github.com/aminyazdanpanah/python-ffmpeg-video-streaming - 文档 https://video.aminyazdanpanah.com/python/start - m3u8文件解析 https://github.com/globocom/m3u8 - 加密m3u8 - Encryption(DRM) - 参考 - [使用FFmpeg作为HLS流服务器(第1部分)– HLS基础](https://www.martin-riedl.de/2018/08/24/using-ffmpeg-as-a-hls-streaming-server-part-1/) - 第二部分 https://www.martin-riedl.de/2018/08/24/using-ffmpeg-as-a-hls-streaming-server-part-2/ - [m3u8下载](https://gist.github.com/primaryobjects/7423d7982656a31e72542f60d30f9d30) - ffmpeg 切割视频,生成m3u8 ```shell script ffmpeg -i input.mp4 \ -c:v libx264 -crf 21 -preset veryfast \ -c:a aac -b:a 128k -ac 2 \ -f hls -hls_time 4 -hls_playlist_type event stream.m3u8 ffmpeg -i input.mp4 \ -c:v libx264 -c:a aac -strict -2 -hls_time 20 -f hls output.m3u8 ``` ================================================ FILE: 2020/2-1-WordCloud-武汉/README.md ================================================ - 视频:[怎样用Python制作【词云】?武汉-冠状病毒](https://www.bilibili.com/video/av86091936/) 从【微博搜索】获取【热门微博】 然后用【结巴分词】提取关键词 使用Wordcloud制作词云 关键点是中文字体路径 否则显示不出来 ================================================ FILE: 2020/2-1-WordCloud-武汉/词云-Alice-英文.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 参考 https://github.com/amueller/word_cloud/blob/master/examples/simple.py" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from wordcloud import WordCloud" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "text = open('/Users/play/Downloads/alice.txt').read()\n", "#https://github.com/amueller/word_cloud/blob/master/examples/alice.txt" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "145190" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(text)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "wordcloud = WordCloud( width=1000, height=860).generate(text)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.5, 999.5, 859.5, -0.5)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.imshow(wordcloud, interpolation='bilinear')\n", "plt.axis(\"off\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# lower max_font_size\n", "wordcloud = WordCloud(max_font_size=40).generate(text)\n", "plt.figure()\n", "plt.imshow(wordcloud, interpolation=\"bilinear\")\n", "plt.axis(\"off\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: 2020/2-1-WordCloud-武汉/词云wordcloud-中文.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "中文" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "微博搜索\n", "https://s.weibo.com/weibo?q=%E6%AD%A6%E6%B1%89&xsort=hot&suball=1×cope=custom:2020-01-01:&Refer=g\n", "\n", "然后打开Console\n", "document.querySelectorAll('.content .txt').forEach(function(div){\n", " console.log(div.innerText)\n", " txtl.push(div.innerText)})" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "txt=''' 【捐了那么多东西怎么还缺?#记者探访武汉市红十字会# 】总台央广记者31日来到位于湖北省武汉市胜利街162号的武汉市红十字会。因红十字会已成为舆论焦点,采访时记者明显感受到现场工作人员的压力和对媒体的防备。记者始终没有在现场见到红十字会的工作人员,一位从其他部门抽调来的工作人员私下说,“ ​ \n", " \n", " 【捐了那么多东西怎么还缺?#记者探访武汉市红十字会# 】总台央广记者31日来到位于湖北省武汉市胜利街162号的武汉市红十字会。因红十字会已成为舆论焦点,采访时记者明显感受到现场工作人员的压力和对媒体的防备。记者始终没有在现场见到红十字会的工作人员,一位从其他部门抽调来的工作人员私下说,“红十字会几十年没打大仗了,一打仗就有点乱。” #总台记者探访武汉红十字会# 详情>>O捐了那么多东西怎么还缺?记者探访武汉市红十字会 \n", " \n", " 【#9省物资直达武汉协和# 快递司机:水都不敢多喝,怕耽误时间】截至1日上午10时15分,北京、山东、黑龙江、湖南、海南、甘肃、四川、内蒙古、辽宁等9省(区、市)40个单位将援助物资直接运抵协和医院。包括医用口罩、医用手套、隔离衣、防护服、防护眼镜、一次性鞋套和工作帽等总计30多万件。 ​\n", " 【究竟是物资紧缺还是物资分配环节存在问题?看着揪心】网友@BigWayneWu : 物资紧缺,大战当前,武汉协和医院西区的一线老师们没有条件创造条件也要上,泪目 ​\n", " 【#武汉小姐姐每天给医院做饭800份#】武汉盘龙城一家餐厅,专门为金银潭等医院的医护人员做盒饭。由于忙不过来,店主小姐姐还叫上父母兄妹齐上阵,每天能制作盒饭800-1000份。小姐姐说:“看到医护人员的朋友圈,很受不了,我想做这个事儿。”加话题#武汉日记#发微博,在昵称后点亮icon,一起为武 ​ \n", " \n", " 【#武汉小姐姐每天给医院做饭800份#】武汉盘龙城一家餐厅,专门为金银潭等医院的医护人员做盒饭。由于忙不过来,店主小姐姐还叫上父母兄妹齐上阵,每天能制作盒饭800-1000份。小姐姐说:“看到医护人员的朋友圈,很受不了,我想做这个事儿。”加话题#武汉日记#发微博,在昵称后点亮icon,一起为武汉加油!(总台央视记者张竣 单泽)#央视记者武汉vlog# L央视新闻的微博视频 \n", " \n", " 【终于!#武汉协和医院收到急需物资#】今天下午,武汉协和医院急需的一批医疗物资已经送到医生和护士手里。这批物资由武大和华科校友会联合捐赠,包括超过20万个医疗口罩,以及外罩和手套等个人防护装备。希望更多物资能尽快到达一线!(沈文敏) ​\n", " #共同战疫#【直播!总台#央视记者采访武汉协和医院#!】口罩等应急物资是否短缺?医院物资来源有哪些?发放有何标准?记者独家专访华中科技大学附属协和医院党委副书记孙晖,回应各方关切。看直播,关注!(总台央视记者王宇) 央视新闻的微博直播 . ​\n", " 【捐了那么多东西怎么还缺?#总台记者探访武汉红十字会#】记者看到,原来的展馆被临时征用为武汉市红十字会存放捐赠物资的仓库。展馆的一个角落被改造为办公室,有工作人员在登记造册,地上堆放着货物。武汉市常务副市长胡亚波说:“大量捐赠物资都是民用的。很多有用的东西,现在特别紧缺。一方面需要 ​ \n", " \n", " 【捐了那么多东西怎么还缺?#总台记者探访武汉红十字会#】记者看到,原来的展馆被临时征用为武汉市红十字会存放捐赠物资的仓库。展馆的一个角落被改造为办公室,有工作人员在登记造册,地上堆放着货物。武汉市常务副市长胡亚波说:“大量捐赠物资都是民用的。很多有用的东西,现在特别紧缺。一方面需要的东西进不来,另一方面医护人员不需要的东西堆积如山。”详情↓ O捐了那么多东西怎么还缺? 总台记者探访武汉市红十字会 \n", " \n", " 【#滞留海外湖北籍同胞回国瞬间#】31日,两驾包机返回武汉,滞留海外的湖北籍同胞顺利回国。抵达机场那一刻,他们说:“回家,真好!”L人民日报的微博视频 ​\n", " #新型冠状病毒感染肺炎#【上海药物所、武汉病毒所联合发现中成药双黄连口服液可抑制新型冠状病毒】记者31日从中国科学院上海药物所获悉,该所和武汉病毒所联合研究初步发现,中成药双黄连口服液可抑制新型冠状病毒。此前,上海药物所启动由蒋华良院士牵头的抗新型冠状病毒感染肺炎药物研究应急攻关团队 ​ \n", " \n", " #新型冠状病毒感染肺炎#【上海药物所、武汉病毒所联合发现中成药双黄连口服液可抑制新型冠状病毒】记者31日从中国科学院上海药物所获悉,该所和武汉病毒所联合研究初步发现,中成药双黄连口服液可抑制新型冠状病毒。此前,上海药物所启动由蒋华良院士牵头的抗新型冠状病毒感染肺炎药物研究应急攻关团队,在前期SARS相关研究和药物发现成果基础上,聚焦针对该病毒的治疗候选新药筛选、评价和老药新用研究。双黄连口服液由金银花、黄芩、连翘三味中药组成。中医认为,这三味中药具有清热解毒、表里双清的作用。现代医学研究认为,双黄连口服液具有广谱抗病毒、抑菌、提高机体免疫功能的作用,是目前有效的广谱抗病毒药物之一。上海药物所长期从事抗病毒药物研究,2003年“非典”期间,上海药物所左建平团队率先证实双黄连口服液具有抗SARS冠状病毒作用,十余年来又陆续证实双黄连口服液对流感病毒(H7N9、H1N1、H5N1)、严重急性呼吸综合征冠状病毒、中东呼吸综合征冠状病毒具有明显的抗病毒效应。目前,双黄连口服液已在上海公共卫生临床中心、华中科技大学附属同济医院开展临床研究。(记者董瑞丰)(完) \n", " \n", " 【上海药物所、武汉病毒所联合发现:#双黄连可抑制新型冠状病毒#】31日从中国科学院上海药物所获悉,该所和武汉病毒所联合研究初步发现,中成药#双黄连口服液可抑制新型冠状病毒#。此前,上海药物所启动由蒋华良院士牵头的抗新型冠状病毒感染肺炎药物研究应急攻关团队,在前期SARS相关研究和药物发现成 ​ \n", " \n", " 【上海药物所、武汉病毒所联合发现:#双黄连可抑制新型冠状病毒#】31日从中国科学院上海药物所获悉,该所和武汉病毒所联合研究初步发现,中成药#双黄连口服液可抑制新型冠状病毒#。此前,上海药物所启动由蒋华良院士牵头的抗新型冠状病毒感染肺炎药物研究应急攻关团队,在前期SARS相关研究和药物发现成果基础上,聚焦针对该病毒的治疗候选新药筛选、评价和老药新用研究。双黄连口服液由金银花、黄芩、连翘三味中药组成。中医认为,这三味中药具有清热解毒、表里双清的作用。现代医学研究认为,双黄连口服液具有广谱抗病毒、抑菌、提高机体免疫功能的作用,是目前有效的广谱抗病毒药物之一。上海药物所长期从事抗病毒药物研究,2003年“非典”期间,上海药物所左建平团队率先证实双黄连口服液具有抗SARS冠状病毒作用,十余年来又陆续证实双黄连口服液对流感病毒(H7N9、H1N1、H5N1)、严重急性呼吸综合征冠状病毒、中东呼吸综合征冠状病毒具有明显的抗病毒效应。目前,双黄连口服液已在上海公共卫生临床中心、华中科技大学附属同济医院开展临床研究。(新华社) \n", " \n", " 【湖北红十字会工作人员回应物资分配:#凭什么医院要分三六等级#】这位工作人员表示,捐赠物资是宏观调控,是一个从前到后的整体规划,有时候这个人多,有时候那个人多,不是很正常的现象吗?他们(武汉仁爱医院和天佑医院)也是医院,是中华人民共和国为人民群众看病、救命的医院,凭什么医院要分三六 ​ \n", " \n", " 【湖北红十字会工作人员回应物资分配:#凭什么医院要分三六等级#】这位工作人员表示,捐赠物资是宏观调控,是一个从前到后的整体规划,有时候这个人多,有时候那个人多,不是很正常的现象吗?他们(武汉仁爱医院和天佑医院)也是医院,是中华人民共和国为人民群众看病、救命的医院,凭什么医院要分三六等级?凭什么不能给这些医院发口罩?都是医生都是人命,都在接受肺炎的病人,凭什么不能捐?#抗击肺疫最前线##武汉新型冠状病毒感染肺炎防控专题# O湖北省疫情防控指挥部:非定向捐赠物资分配方案由红十字会自行拟定 2北京·安贞西里二区 2北京·安贞西里二区 \n", " \n", " 【正在直播:#探访武汉雷神山医院施工现场#】湖北武汉,雷神山医院进入建设倒计时。@人民日报 记者来到工地实地探访!戳直播↓↓ 人民日报的微博直播 . ​\n", " 【#捐了那么多东西为啥还缺#?记者实地探访武汉红十字会】爱心捐赠总量大可为何总是不够用?武汉市常务副市长胡亚波表示:①现场有些货物不是我们要的,有些货装得不规范;②医院一方面需要的东西进不来,另一方面医护人员不需要的东西堆积如山。医护人员不能用的口罩民众可以戴,后续会下发社区等;③ ​ \n", " \n", " 【#捐了那么多东西为啥还缺#?记者实地探访武汉红十字会】爱心捐赠总量大可为何总是不够用?武汉市常务副市长胡亚波表示:①现场有些货物不是我们要的,有些货装得不规范;②医院一方面需要的东西进不来,另一方面医护人员不需要的东西堆积如山。医护人员不能用的口罩民众可以戴,后续会下发社区等;③科学调配是一个最复杂的系统工程,涉及到了方方面面,我们的力量还是不够。详戳↓↓L中国之声的微博视频 \n", " \n", " 【#你好,明天#】武汉市委书记称:将责成慈善机构每三天发布捐赠物品去向。疫情仍在尖峰时刻,一线医护渴求物资,一只口罩可能就是一条命。物资调配必须遵循谁最急需、谁来使用的原则,绝不能耽搁拖延,更不能变糊涂账。歌手韩红说得好:一包方便面都可公示。公平高效调配捐赠物,以公开赢得公信。 ​\n", " 【武汉医生:1/4同事被感染 口罩不合格也按时进病房】“1月31日,最新通知下来了,由于医护人员减员情况严重,医院决定每个科室留5名医生倒班,每班6小时;这样的值班时长对于已连续奋战10天的医护人员来说危险系数很高↓↓医生称他连续10天没有离开医院,目前病房爆满,已经出现医护人员交叉感染 ​ \n", " \n", " 【武汉医生:1/4同事被感染 口罩不合格也按时进病房】“1月31日,最新通知下来了,由于医护人员减员情况严重,医院决定每个科室留5名医生倒班,每班6小时;这样的值班时长对于已连续奋战10天的医护人员来说危险系数很高↓↓医生称他连续10天没有离开医院,目前病房爆满,已经出现医护人员交叉感染↓↓更多细节↓↓O武汉医生:1/4同事被感染 口罩不合格也要进病房 \n", " \n", " 【武汉封城后,有些事只有外卖小哥知道】\n", "\n", "在现在武汉空空荡荡的城市街道上,外卖小哥和快递员是最繁忙的人。在这个特殊时期,他们也见证了世间百态:陌生市民为前线医生点大餐;一个顾客点了餐,备注鸡蛋要生的,因为家里没有余粮了;留在家中的猫咪产仔了,结果因为主人不在,新生的小猫宝宝都死了… ​ \n", " \n", " 【武汉封城后,有些事只有外卖小哥知道】在现在武汉空空荡荡的城市街道上,外卖小哥和快递员是最繁忙的人。在这个特殊时期,他们也见证了世间百态:陌生市民为前线医生点大餐;一个顾客点了餐,备注鸡蛋要生的,因为家里没有余粮了;留在家中的猫咪产仔了,结果因为主人不在,新生的小猫宝宝都死了……为此,《Vista看天下》采访了这个春节一直奔波在武汉街头的几位外卖小哥和快递小哥……本文系Vista看天下APP独家稿件,未经允许请勿转载。 \n", " \n", " 【武汉市委书记:我现在是一种内疚愧疚自责的心态】1月31日21:35,央视新闻频道《新闻1+1》,主持人白岩松将连线湖北省委副书记、武汉市委书记马国强,解读公众关心的疫情问题。\n", "武汉市市委书记马国强:我现在是一种内疚、愧疚、自责的心态,如果早采取严厉的管控措施,结果会比现在好,对全国各地的 ​ \n", " \n", " 【武汉市委书记:我现在是一种内疚愧疚自责的心态】1月31日21:35,央视新闻频道《新闻1+1》,主持人白岩松将连线湖北省委副书记、武汉市委书记马国强,解读公众关心的疫情问题。武汉市市委书记马国强:我现在是一种内疚、愧疚、自责的心态,如果早采取严厉的管控措施,结果会比现在好,对全国各地的影响要小,也会让党中央、国务院少操心。(央视)#白岩松对话湖北省委副书记# L视频-新闻1+1:武汉市市委书记马国强-我现在是一种内疚愧疚自责的心态 \n", " \n", " 【莆田系医院获赠1.8万个口罩遭质疑,涉事医院院长:我们真的需要】30日,湖北省红十字会官网公布了17项捐赠物资的使用情况,其中莆田系医院武汉仁爱医院收到1.8万个KN95口罩,而防疫一线医院武汉协和医院仅收到3000个口罩,这让武汉仁爱医院陷入舆论漩涡。\n", "对此,武汉仁爱医院院长熊怡祥回应:武汉是 ​ \n", " \n", " 【莆田系医院获赠1.8万个口罩遭质疑,涉事医院院长:我们真的需要】30日,湖北省红十字会官网公布了17项捐赠物资的使用情况,其中莆田系医院武汉仁爱医院收到1.8万个KN95口罩,而防疫一线医院武汉协和医院仅收到3000个口罩,这让武汉仁爱医院陷入舆论漩涡。对此,武汉仁爱医院院长熊怡祥回应:武汉是疫区,医院是危险的地方,我们真的需要口罩,但我们买不到口罩。1月22日,我们向社会求口罩,可是没求来。1月24日,向武汉市红十字会求援,没结果。1月26日,再向湖北省红十字会求援。1月27日,湖北省红十字会给了我们1.8万个KN95口罩。对于公众的质疑,院长称:我们医院确实是莆田系医院,莆田系备受争议,但不是所有莆田系医院都是坏的,我们医院有20年历史了。 \n", " \n", " 【泪目!妈妈#给上前线军医儿子录制鼓励视频#:“盼望你早日平安归来”】“儿子,当妈妈知道的时候,你已经踏上征途,面对疫情挺身而出责无旁贷。虽然有点担心,但是妈妈坚决支持你。”大年三十晚上,空军军医大学医生史庆辉接到驰援武汉的命令。而这天,他的母亲刚刚出院回家。白衣战士们,我们都在等 ​ \n", " \n", " 【泪目!妈妈#给上前线军医儿子录制鼓励视频#:“盼望你早日平安归来”】“儿子,当妈妈知道的时候,你已经踏上征途,面对疫情挺身而出责无旁贷。虽然有点担心,但是妈妈坚决支持你。”大年三十晚上,空军军医大学医生史庆辉接到驰援武汉的命令。而这天,他的母亲刚刚出院回家。白衣战士们,我们都在等你平安归来! L人民日报的微博视频 \n", " \n", " #请勿抢购自行服用双黄连口服液#【投票:#你买双黄连口服液了吗#?】31日新华社记者从中国科学院上海药物所获悉,该所和武汉病毒所联合研究初步发现,中成药双黄连口服液可抑制新型冠状病毒。目前该发现仍是初步研究,该药已在上海公共卫生临床中心、华中科技大学附属同济医院开展临床研究,对病人如何 ​ \n", " \n", " #请勿抢购自行服用双黄连口服液#【投票:#你买双黄连口服液了吗#?】31日新华社记者从中国科学院上海药物所获悉,该所和武汉病毒所联合研究初步发现,中成药双黄连口服液可抑制新型冠状病毒。目前该发现仍是初步研究,该药已在上海公共卫生临床中心、华中科技大学附属同济医院开展临床研究,对病人如何有效还要做大量的实验。特别提醒:按照@世界卫生组织 ,到目前为止,还没有用于预防和治疗新型冠状病毒的药物。特定的治疗方法正在研究中,并将通过临床试验进行测试。 你买双黄连口服液了吗? \n", " \n", "undefined'''" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "import jieba\n", "jieba.enable_parallel(4)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "import jieba.analyse" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "from wordcloud import WordCloud, ImageColorGenerator\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "seg_list = jieba.cut(txt, cut_all=True)\n", "liststr = \" \".join(seg_list)\n", "# liststr" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "总词数: 809\n" ] } ], "source": [ "words = []\n", "for sen in txt.split():\n", " words.extend(jieba.analyse.extract_tags(sen))\n", "print(\"总词数:\", len(words))" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wc=WordCloud(font_path=font_path, width=1000, height=860,)\n", "data=' '.join(words)\n", "wc.generate(data)\n", "wc.to_file('wc2.png')" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei,文泉驛微米黑,文泉驿微米黑:style=Regular\n", "/usr/share/fonts/X11/misc/wenquanyi_13px.pcf: WenQuanYi Bitmap Song:style=Regular\n", "/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei,文泉驛正黑,文泉驿正黑:style=Regular\n", "/usr/share/fonts/X11/misc/wenquanyi_12pt.pcf: WenQuanYi Bitmap Song:style=Regular\n", "/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei Sharp,文泉驛點陣正黑,文泉驿点阵正黑:style=Regular\n", "/usr/share/fonts/X11/misc/wenquanyi_10pt.pcf: WenQuanYi Bitmap Song:style=Regular\n", "/usr/share/fonts/X11/misc/wenquanyi_9pt.pcf: WenQuanYi Bitmap Song:style=Regular\n", "/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf: Droid Sans Fallback:style=Regular\n", "/usr/share/fonts/X11/misc/wenquanyi_11pt.pcf: WenQuanYi Bitmap Song:style=Regular\n", "/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei Mono,文泉驛等寬正黑,文泉驿等宽正黑:style=Regular\n", "/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei Mono,文泉驛等寬微米黑,文泉驿等宽微米黑:style=Regular\n", "/usr/share/fonts/truetype/msyahei/ms-ya-hei.ttf: Microsoft YaHei,微软雅黑:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta\n" ] } ], "source": [ "!fc-list :lang=zh" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "#fc-list :lang=zh\n", "font_path='/usr/share/fonts/truetype/msyahei/ms-ya-hei.ttf'\n", "wordcloud = WordCloud(font_path=font_path, width=1000, height=860,).generate(txt)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.5, 999.5, 859.5, -0.5)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#不支持中文\n", "\n", "plt.imshow(wordcloud, interpolation='bilinear')\n", "plt.axis(\"off\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from matplotlib import font_manager\n", "# fname中选择一个你本机查询出来的字体 若没有中文字体则需要你本人手动安装\n", "font = font_manager.FontProperties(fname=\"/usr/share/fonts/truetype/msyahei/ms-ya-hei.ttf\")\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imsave('wuhan.jpg',wordcloud)\n", "plt.savefig('wuhan2.png')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcmap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mnorm\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0maspect\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0minterpolation\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0malpha\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvmin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvmax\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0morigin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mextent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mshape\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0mdeprecated\u001b[0m \u001b[0mparameter\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfilternorm\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfilterrad\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m4.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mimlim\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0mdeprecated\u001b[0m \u001b[0mparameter\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mresample\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m\n", "Display an image, i.e. data on a 2D regular raster.\n", "\n", "Parameters\n", "----------\n", "X : array-like or PIL image\n", " The image data. Supported array shapes are:\n", "\n", " - (M, N): an image with scalar data. The data is visualized\n", " using a colormap.\n", " - (M, N, 3): an image with RGB values (0-1 float or 0-255 int).\n", " - (M, N, 4): an image with RGBA values (0-1 float or 0-255 int),\n", " i.e. including transparency.\n", "\n", " The first two dimensions (M, N) define the rows and columns of\n", " the image.\n", "\n", " Out-of-range RGB(A) values are clipped.\n", "\n", "cmap : str or `~matplotlib.colors.Colormap`, optional\n", " The Colormap instance or registered colormap name used to map\n", " scalar data to colors. This parameter is ignored for RGB(A) data.\n", " Defaults to :rc:`image.cmap`.\n", "\n", "norm : `~matplotlib.colors.Normalize`, optional\n", " The `Normalize` instance used to scale scalar data to the [0, 1]\n", " range before mapping to colors using *cmap*. By default, a linear\n", " scaling mapping the lowest value to 0 and the highest to 1 is used.\n", " This parameter is ignored for RGB(A) data.\n", "\n", "aspect : {'equal', 'auto'} or float, optional\n", " Controls the aspect ratio of the axes. The aspect is of particular\n", " relevance for images since it may distort the image, i.e. pixel\n", " will not be square.\n", "\n", " This parameter is a shortcut for explicitly calling\n", " `.Axes.set_aspect`. See there for further details.\n", "\n", " - 'equal': Ensures an aspect ratio of 1. Pixels will be square\n", " (unless pixel sizes are explicitly made non-square in data\n", " coordinates using *extent*).\n", " - 'auto': The axes is kept fixed and the aspect is adjusted so\n", " that the data fit in the axes. In general, this will result in\n", " non-square pixels.\n", "\n", " If not given, use :rc:`image.aspect` (default: 'equal').\n", "\n", "interpolation : str, optional\n", " The interpolation method used. If *None*\n", " :rc:`image.interpolation` is used, which defaults to 'nearest'.\n", "\n", " Supported values are 'none', 'nearest', 'bilinear', 'bicubic',\n", " 'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser',\n", " 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc',\n", " 'lanczos'.\n", "\n", " If *interpolation* is 'none', then no interpolation is performed\n", " on the Agg, ps, pdf and svg backends. Other backends will fall back\n", " to 'nearest'. Note that most SVG renders perform interpolation at\n", " rendering and that the default interpolation method they implement\n", " may differ.\n", "\n", " See\n", " :doc:`/gallery/images_contours_and_fields/interpolation_methods`\n", " for an overview of the supported interpolation methods.\n", "\n", " Some interpolation methods require an additional radius parameter,\n", " which can be set by *filterrad*. Additionally, the antigrain image\n", " resize filter is controlled by the parameter *filternorm*.\n", "\n", "alpha : scalar, optional\n", " The alpha blending value, between 0 (transparent) and 1 (opaque).\n", " This parameter is ignored for RGBA input data.\n", "\n", "vmin, vmax : scalar, optional\n", " When using scalar data and no explicit *norm*, *vmin* and *vmax*\n", " define the data range that the colormap covers. By default,\n", " the colormap covers the complete value range of the supplied\n", " data. *vmin*, *vmax* are ignored if the *norm* parameter is used.\n", "\n", "origin : {'upper', 'lower'}, optional\n", " Place the [0,0] index of the array in the upper left or lower left\n", " corner of the axes. The convention 'upper' is typically used for\n", " matrices and images.\n", " If not given, :rc:`image.origin` is used, defaulting to 'upper'.\n", "\n", " Note that the vertical axes points upward for 'lower'\n", " but downward for 'upper'.\n", "\n", " See the :doc:`/tutorials/intermediate/imshow_extent` tutorial for\n", " examples and a more detailed description.\n", "\n", "extent : scalars (left, right, bottom, top), optional\n", " The bounding box in data coordinates that the image will fill.\n", " The image is stretched individually along x and y to fill the box.\n", "\n", " The default extent is determined by the following conditions.\n", " Pixels have unit size in data coordinates. Their centers are on\n", " integer coordinates, and their center coordinates range from 0 to\n", " columns-1 horizontally and from 0 to rows-1 vertically.\n", "\n", " Note that the direction of the vertical axis and thus the default\n", " values for top and bottom depend on *origin*:\n", "\n", " - For ``origin == 'upper'`` the default is\n", " ``(-0.5, numcols-0.5, numrows-0.5, -0.5)``.\n", " - For ``origin == 'lower'`` the default is\n", " ``(-0.5, numcols-0.5, -0.5, numrows-0.5)``.\n", "\n", " See the :doc:`/tutorials/intermediate/imshow_extent` tutorial for\n", " examples and a more detailed description.\n", "\n", "filternorm : bool, optional, default: True\n", " A parameter for the antigrain image resize filter (see the\n", " antigrain documentation). If *filternorm* is set, the filter\n", " normalizes integer values and corrects the rounding errors. It\n", " doesn't do anything with the source floating point values, it\n", " corrects only integers according to the rule of 1.0 which means\n", " that any sum of pixel weights must be equal to 1.0. So, the\n", " filter function must produce a graph of the proper shape.\n", "\n", "filterrad : float > 0, optional, default: 4.0\n", " The filter radius for filters that have a radius parameter, i.e.\n", " when interpolation is one of: 'sinc', 'lanczos' or 'blackman'.\n", "\n", "resample : bool, optional\n", " When *True*, use a full resampling method. When *False*, only\n", " resample when the output image is larger than the input image.\n", "\n", "url : str, optional\n", " Set the url of the created `.AxesImage`. See `.Artist.set_url`.\n", "\n", "Returns\n", "-------\n", "image : `~matplotlib.image.AxesImage`\n", "\n", "Other Parameters\n", "----------------\n", "**kwargs : `~matplotlib.artist.Artist` properties\n", " These parameters are passed on to the constructor of the\n", " `.AxesImage` artist.\n", "\n", "See also\n", "--------\n", "matshow : Plot a matrix or an array as an image.\n", "\n", "Notes\n", "-----\n", "Unless *extent* is used, pixel centers will be located at integer\n", "coordinates. In other words: the origin will coincide with the center\n", "of pixel (0, 0).\n", "\n", "There are two common representations for RGB images with an alpha\n", "channel:\n", "\n", "- Straight (unassociated) alpha: R, G, and B channels represent the\n", " color of the pixel, disregarding its opacity.\n", "- Premultiplied (associated) alpha: R, G, and B channels represent\n", " the color of the pixel, adjusted for its opacity by multiplication.\n", "\n", "`~matplotlib.pyplot.imshow` expects RGB images adopting the straight\n", "(unassociated) alpha representation.\n", "\n", ".. note::\n", " In addition to the above described arguments, this function can take a\n", " **data** keyword argument. If such a **data** argument is given, the\n", " following arguments are replaced by **data[]**:\n", "\n", " * All positional and all keyword arguments.\n", "\n", " Objects passed as **data** must support item access (``data[]``) and\n", " membership test (`` in data``).\n", "\u001b[0;31mFile:\u001b[0m /usr/local/lib/python3.7/dist-packages/matplotlib/pyplot.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow?" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['红十字会',\n", " '探访',\n", " '武汉市',\n", " '东西',\n", " '那么',\n", " '怎么',\n", " '记者',\n", " '抽调',\n", " '私下',\n", " '工作人员',\n", " '人员',\n", " '一位',\n", " '部门',\n", " '其他',\n", " '红十字会',\n", " '探访',\n", " '武汉市',\n", " '东西',\n", " '那么',\n", " '怎么',\n", " '记者',\n", " '武汉市',\n", " '央广',\n", " '31',\n", " '打大仗',\n", " '总台',\n", " '红十字会',\n", " '探访',\n", " '记者',\n", " '详情',\n", " '湖北省',\n", " '打仗',\n", " '胜利',\n", " '有点',\n", " '来到',\n", " '位于',\n", " '东西',\n", " '那么',\n", " '怎么',\n", " '湖北省委',\n", " '直播',\n", " '书记',\n", " '战疫',\n", " '岩松',\n", " '马国强',\n", " '白岩松',\n", " '关注',\n", " '连线',\n", " '独家',\n", " '疫情',\n", " '市委书记',\n", " '对话',\n", " '今晚',\n", " '武汉',\n", " '新闻',\n", " '共同',\n", " '一起',\n", " '继续',\n", " '微博',\n", " '直播',\n", " '央视',\n", " '新闻',\n", " '武汉协和医院',\n", " '物资',\n", " '急需',\n", " '医疗',\n", " '20',\n", " '沈文敏',\n", " '外罩',\n", " '今天下午',\n", " '口罩',\n", " '手套',\n", " '万个',\n", " '护士',\n", " '防护',\n", " '一线',\n", " '尽快',\n", " '送到',\n", " '收到',\n", " '到达',\n", " '一批',\n", " '医生',\n", " '武汉',\n", " '小姐姐',\n", " '800',\n", " '发微博',\n", " 'icon',\n", " '为武',\n", " '医院',\n", " '盒饭',\n", " '盘龙城',\n", " '昵称',\n", " '医护人员',\n", " '点亮',\n", " '日记',\n", " '餐厅',\n", " '受不了',\n", " '做饭',\n", " '金银',\n", " '话题',\n", " '事儿',\n", " '专门',\n", " '武汉',\n", " '小姐姐',\n", " '800',\n", " '单泽',\n", " 'vlog',\n", " '盘龙城',\n", " '餐厅',\n", " '央视',\n", " '做饭',\n", " '医院',\n", " '每天',\n", " '一家',\n", " '记者',\n", " '微博',\n", " '央视',\n", " '视频',\n", " '新闻',\n", " '环卫',\n", " '急转',\n", " '纸条',\n", " '日照',\n", " '武汉',\n", " '大众网',\n", " '白衣天使',\n", " '12000',\n", " '31',\n", " '东港',\n", " '留言',\n", " '加油',\n", " '头戴',\n", " '心意',\n", " '派出所',\n", " '大爷',\n", " '帽子',\n", " '转身',\n", " '一张',\n", " '山东',\n", " '环卫',\n", " '大众网',\n", " '12000',\n", " '东港',\n", " '急转',\n", " '留言',\n", " '纸条',\n", " '日照',\n", " '派出所',\n", " '大爷',\n", " '转身',\n", " '微博',\n", " '人民日报',\n", " '视频',\n", " '校友会',\n", " '北加州',\n", " '医用',\n", " '华科',\n", " '2.5',\n", " '20',\n", " '2.75',\n", " '4000',\n", " '武汉协和医院',\n", " '防护服',\n", " '口罩',\n", " '武大',\n", " '手套',\n", " '好消息',\n", " '捐赠',\n", " '汇报',\n", " '总算',\n", " '紧急',\n", " '医疗',\n", " '一批',\n", " '武汉',\n", " '医护',\n", " '关爱',\n", " '肺炎',\n", " '抗击',\n", " '31',\n", " '21',\n", " '10',\n", " '李文亮',\n", " '守护者',\n", " '第一笔',\n", " '后盾',\n", " '拨付',\n", " '肺炎',\n", " '基金会',\n", " '病毒',\n", " '防范',\n", " '试图',\n", " '客观',\n", " '新型',\n", " '提前',\n", " '贡献',\n", " '行动',\n", " '特征',\n", " '明确',\n", " '医护',\n", " '关爱',\n", " '肺炎',\n", " '抗击',\n", " '后盾',\n", " '守护者',\n", " '医护',\n", " '31',\n", " '行动',\n", " '疫情',\n", " '一线',\n", " '项目',\n", " '公益',\n", " '网友',\n", " '转自',\n", " '武汉协和医院',\n", " '某会',\n", " '惹怒',\n", " '置之不理',\n", " '医护人员',\n", " '求助',\n", " '捐赠',\n", " '绕过',\n", " '病毒',\n", " '聚集',\n", " '据说',\n", " '工作人员',\n", " '危险',\n", " '网上',\n", " '身上',\n", " '它们',\n", " '直接',\n", " '工作',\n", " '转自',\n", " '武汉协和医院',\n", " '置之不理',\n", " '医护人员',\n", " '绕过',\n", " '据说',\n", " '工作人员',\n", " '网友',\n", " '因为',\n", " '黎黎',\n", " 'Lily',\n", " '微博',\n", " '视频',\n", " '胡亚波',\n", " '总台',\n", " '红十字',\n", " '展馆',\n", " '红十字会',\n", " '探访',\n", " '东西',\n", " '征用',\n", " '紧缺',\n", " '武汉市',\n", " '记者',\n", " '民用',\n", " '捐赠',\n", " '有用',\n", " '物资',\n", " '武汉',\n", " '市长',\n", " '一方面',\n", " '临时',\n", " '原来',\n", " '总台',\n", " '红十字会',\n", " '探访',\n", " '东西',\n", " '那么',\n", " '怎么',\n", " '武汉',\n", " '记者',\n", " '总台',\n", " '红十字会',\n", " '探访',\n", " '武汉市',\n", " '记者',\n", " '医院',\n", " '分三六',\n", " '物资',\n", " '工作人员',\n", " '天佑',\n", " '红十字会',\n", " '救命',\n", " '看病',\n", " '捐赠',\n", " '宏观调控',\n", " '回应',\n", " '等级',\n", " '什么',\n", " '湖北',\n", " '中华人民共和国',\n", " '分配',\n", " '群众',\n", " '这位',\n", " '人民',\n", " '表示',\n", " '分三六',\n", " '红十字会',\n", " '拟定',\n", " '回应',\n", " '物资',\n", " '自行',\n", " '湖北',\n", " '工作人员',\n", " '分配',\n", " '医院',\n", " '什么',\n", " '安贞',\n", " '西里',\n", " '北京',\n", " '安贞',\n", " '西里',\n", " '北京',\n", " '冠状病毒',\n", " '新型',\n", " '药物',\n", " '肺炎',\n", " '感染',\n", " '蒋华良',\n", " '口服液',\n", " '可抑制',\n", " '攻关',\n", " '双黄连',\n", " '中成药',\n", " '上海',\n", " '牵头',\n", " '应急',\n", " '病毒',\n", " '院士',\n", " '团队',\n", " '武汉',\n", " '启动',\n", " '此前',\n", " '冠状病毒',\n", " '董瑞丰',\n", " '同济',\n", " '肺炎',\n", " '附属',\n", " '病毒',\n", " '临床',\n", " '新型',\n", " '感染',\n", " '武汉',\n", " '药物',\n", " '开展',\n", " '医院',\n", " '大学',\n", " '联合',\n", " '上海',\n", " '发现',\n", " '研究',\n", " '记者',\n", " '医用',\n", " '防护眼镜',\n", " '新空',\n", " '429',\n", " '武汉协和医院',\n", " '防护服',\n", " '直飞',\n", " '萧山',\n", " '协和',\n", " '口罩',\n", " '装满',\n", " '运载',\n", " '降落',\n", " '贝尔',\n", " '隶属于',\n", " '起飞',\n", " '一架',\n", " '通航',\n", " '直升机',\n", " '今晚',\n", " '新空',\n", " '429',\n", " '萧山',\n", " '加油',\n", " '贝尔',\n", " '隶属于',\n", " '一架',\n", " '通航',\n", " '直升机',\n", " '今晚',\n", " '杭州',\n", " '计划',\n", " '之间',\n", " '水族馆',\n", " '生物',\n", " '物语',\n", " '航空',\n", " '药物',\n", " '冠状病毒',\n", " '新型',\n", " '31',\n", " 'SARS',\n", " '可抑制',\n", " '攻关',\n", " '双黄连',\n", " '上海',\n", " '肺炎',\n", " '发现',\n", " '研究',\n", " '应急',\n", " '中国科学院',\n", " '病毒',\n", " '团队',\n", " '获悉',\n", " '感染',\n", " '武汉',\n", " '前期',\n", " '华中科技大学',\n", " '冠状',\n", " '可抑制',\n", " '同济',\n", " '双黄连',\n", " '附属',\n", " '病毒',\n", " '新华社',\n", " '临床',\n", " '新型',\n", " '武汉',\n", " '药物',\n", " '开展',\n", " '医院',\n", " '联合',\n", " '上海',\n", " '发现',\n", " '研究',\n", " '火神',\n", " '医院',\n", " '神山',\n", " '冠状病毒',\n", " '收治病人',\n", " '3.4',\n", " '肺炎',\n", " '建筑面积',\n", " '全力',\n", " '万平方米',\n", " '新型',\n", " '最新',\n", " '推进',\n", " '介绍',\n", " '正式',\n", " '分别',\n", " '正在',\n", " '情况',\n", " '目前',\n", " '冠状病毒',\n", " '肺炎',\n", " '疫情',\n", " '新型',\n", " '医院',\n", " '神山',\n", " '火神',\n", " '实时',\n", " '地图',\n", " '更新',\n", " '最新',\n", " '全国',\n", " '分别',\n", " '情况',\n", " '不该',\n", " '公众',\n", " '新冠',\n", " '武汉协和医院',\n", " '3000',\n", " '领走',\n", " '定点医院',\n", " '红十字会',\n", " '医护人员',\n", " '口罩',\n", " '肺炎',\n", " '列出',\n", " '日夜',\n", " '强迫',\n", " '防护',\n", " '舆论',\n", " '透明',\n", " '落实',\n", " '一线',\n", " '湖北',\n", " '不该',\n", " '公众',\n", " '##',\n", " '红十字会',\n", " '拨付',\n", " '口罩',\n", " '强迫',\n", " '第一批',\n", " '舆论',\n", " '透明',\n", " '落实',\n", " '湖北',\n", " '执行',\n", " '信息',\n", " '使用',\n", " '亿元',\n", " '资金',\n", " '情况',\n", " '红十字会',\n", " '慈善',\n", " '总会',\n", " '武汉',\n", " '物资供应',\n", " '菜农',\n", " '监工',\n", " '寿光',\n", " '亿多',\n", " '拨付',\n", " '捐款',\n", " '捐赠',\n", " '湖北省',\n", " '连夜',\n", " '回应',\n", " '定向',\n", " '质疑',\n", " '收到',\n", " '网友',\n", " '监督',\n", " '万余名',\n", " '物资供应',\n", " '监工',\n", " '医务',\n", " '红十字会',\n", " '求助',\n", " '奋战',\n", " '工作者',\n", " '湖北省',\n", " '回应',\n", " '武汉',\n", " '监督',\n", " '网络',\n", " '医院',\n", " '大家',\n", " '看到',\n", " '问题',\n", " '火神',\n", " '医院',\n", " '收治',\n", " '监工',\n", " '神山',\n", " '直播',\n", " '武汉市',\n", " '用来',\n", " '近日',\n", " '集中',\n", " '建设',\n", " '一起',\n", " '决定',\n", " '直播',\n", " '直击',\n", " '火神',\n", " '京报',\n", " '全天候',\n", " '加油',\n", " '武汉',\n", " '发起',\n", " '医院',\n", " '建设',\n", " '一起',\n", " '微博',\n", " '京报',\n", " '直播',\n", " '出院',\n", " '20',\n", " '金银',\n", " '武汉市',\n", " '医院',\n", " '患者',\n", " '冠状病毒',\n", " '72',\n", " '今天下午',\n", " '数最多',\n", " '肺炎',\n", " '确诊',\n", " '之声',\n", " '新型',\n", " '武汉',\n", " '湖北',\n", " '集体',\n", " '共有',\n", " '累计',\n", " '截至',\n", " '##',\n", " '投稿',\n", " '医护人员',\n", " '武汉市',\n", " '捐赠',\n", " '慈善',\n", " '疫情',\n", " '总会',\n", " '防护',\n", " '物资',\n", " '地图',\n", " '制作',\n", " '最新',\n", " '装备',\n", " '公告',\n", " '才能',\n", " '使用',\n", " '时候',\n", " '情况',\n", " '开始',\n", " '宋彩萍',\n", " '博拉',\n", " '武汉',\n", " '妈妈',\n", " '2015',\n", " '儿子',\n", " '再战',\n", " '军医',\n", " '驰援',\n", " '奔赴',\n", " '加油',\n", " '拥抱',\n", " '大大的',\n", " '出征',\n", " '抗击',\n", " '归来',\n", " '高出',\n", " '迎接',\n", " '一头',\n", " '湖北',\n", " '红十字会',\n", " '探访',\n", " '武汉市',\n", " '东西',\n", " '那么',\n", " '怎么',\n", " '记者',\n", " '红十字会',\n", " '工作人员',\n", " '武汉市',\n", " '记者',\n", " '现场',\n", " '央广',\n", " '31',\n", " '162',\n", " '总台',\n", " '抽调',\n", " '防备',\n", " '私下',\n", " '湖北省',\n", " '舆论',\n", " '感受',\n", " '焦点',\n", " '始终',\n", " '胜利',\n", " '采访',\n", " '见到',\n", " '红十字会',\n", " '探访',\n", " '武汉市',\n", " '东西',\n", " '那么',\n", " '怎么',\n", " '记者',\n", " '红十字会',\n", " '武汉市',\n", " '工作人员',\n", " '记者',\n", " '现场',\n", " '央广',\n", " '31',\n", " '162',\n", " '打大仗',\n", " '总台',\n", " '探访',\n", " '抽调',\n", " '详情',\n", " '防备',\n", " '私下',\n", " '湖北省',\n", " '舆论',\n", " '打仗',\n", " '几十年',\n", " '感受',\n", " '湖北省委',\n", " '直播',\n", " '书记',\n", " '战疫',\n", " '岩松',\n", " '马国强',\n", " '白岩松',\n", " '关注',\n", " '连线',\n", " '独家',\n", " '疫情',\n", " '市委书记',\n", " '对话',\n", " '今晚',\n", " '武汉',\n", " '新闻',\n", " '共同',\n", " '一起',\n", " '继续',\n", " '微博',\n", " '直播',\n", " '央视',\n", " '新闻',\n", " '物资',\n", " '武汉协和医院',\n", " '急需',\n", " '校友会',\n", " '医疗',\n", " '这批',\n", " '华科',\n", " '20',\n", " '沈文敏',\n", " '外罩',\n", " '今天下午',\n", " '口罩',\n", " '武大',\n", " '手套',\n", " '捐赠',\n", " '万个',\n", " '护士',\n", " '防护',\n", " '一线',\n", " '尽快',\n", " '小姐姐',\n", " '800',\n", " '盒饭',\n", " '武汉',\n", " '医护人员',\n", " '朋友圈',\n", " '1000',\n", " '发微博',\n", " 'icon',\n", " '为武',\n", " '医院',\n", " '每天',\n", " '盘龙城',\n", " '昵称',\n", " '忙不过来',\n", " '上阵',\n", " '点亮',\n", " '兄妹',\n", " '店主',\n", " '日记',\n", " '小姐姐',\n", " '武汉',\n", " '800',\n", " '盒饭',\n", " '医护人员',\n", " '朋友圈',\n", " '1000',\n", " '发微博',\n", " 'icon',\n", " '张竣',\n", " '医院',\n", " '每天',\n", " '盘龙城',\n", " '昵称',\n", " '总台',\n", " '忙不过来',\n", " '上阵',\n", " '点亮',\n", " '兄妹',\n", " '店主',\n", " '单泽',\n", " 'vlog',\n", " '央视',\n", " '武汉',\n", " '记者',\n", " '微博',\n", " '央视',\n", " '视频',\n", " '新闻',\n", " '环卫',\n", " '派出所',\n", " '东港',\n", " '急转',\n", " '纸包',\n", " '纸条',\n", " '日照',\n", " '大爷',\n", " '武汉',\n", " '大众网',\n", " '转身',\n", " '白衣天使',\n", " '12000',\n", " '31',\n", " '公安分局',\n", " '留言',\n", " '千元',\n", " '加油',\n", " '头戴',\n", " '心意',\n", " '环卫',\n", " '派出所',\n", " '东港',\n", " '急转',\n", " '纸包',\n", " '纸条',\n", " '日照',\n", " '大爷',\n", " '武汉',\n", " '大众网',\n", " '转身',\n", " '白衣天使',\n", " '12000',\n", " '31',\n", " '公安分局',\n", " '留言',\n", " '千元',\n", " '加油',\n", " '头戴',\n", " '心意',\n", " '微博',\n", " '人民日报',\n", " '视频',\n", " '校友会',\n", " '北加州',\n", " '医用',\n", " '华科',\n", " '2.5',\n", " '20',\n", " '2.75',\n", " '4000',\n", " '武汉协和医院',\n", " '防护服',\n", " '口罩',\n", " '武大',\n", " '手套',\n", " '好消息',\n", " '捐赠',\n", " '汇报',\n", " '总算',\n", " '紧急',\n", " '医疗',\n", " '一批',\n", " '武汉',\n", " '医护',\n", " '关爱',\n", " '肺炎',\n", " '抗击',\n", " '李文亮',\n", " '31',\n", " '21',\n", " '10',\n", " '守护者',\n", " '受益人',\n", " '支持',\n", " '第一笔',\n", " '中心医院',\n", " '后盾',\n", " '拨付',\n", " '武汉市',\n", " '肺炎',\n", " '基金会',\n", " '款项',\n", " '真相',\n", " '敢于',\n", " '病毒',\n", " '防范',\n", " '试图',\n", " '10',\n", " '医护',\n", " '关爱',\n", " '肺炎',\n", " '抗击',\n", " '李文亮',\n", " '氧气管',\n", " '工作',\n", " '31',\n", " '21',\n", " '10',\n", " '疾控',\n", " '守护者',\n", " '打字',\n", " '接诊',\n", " '受益人',\n", " '训诫',\n", " '支持',\n", " '第一笔',\n", " '中心医院',\n", " '获知',\n", " '广泛传播',\n", " '后盾',\n", " '拨付',\n", " '疑似',\n", " '曾光',\n", " '忧国忧民',\n", " '应该',\n", " '赞扬',\n", " '见解',\n", " '保护',\n", " '一定',\n", " '他们',\n", " '医护',\n", " '后盾',\n", " '守护者',\n", " '资助',\n", " '找寻到',\n", " '15',\n", " '共克',\n", " '行动',\n", " '时艰',\n", " '肺炎',\n", " '加油',\n", " '检疫',\n", " '基金会',\n", " '疫情',\n", " '护士',\n", " '坚实',\n", " '抗击',\n", " '一线',\n", " '程序',\n", " '医生',\n", " '公益',\n", " '11',\n", " '协和',\n", " '网友',\n", " '领用',\n", " '转自',\n", " '武汉协和医院',\n", " '某会',\n", " '惹怒',\n", " '我们',\n", " '置之不理',\n", " '医护人员',\n", " '求助',\n", " '要饭',\n", " '排在',\n", " '捐赠',\n", " '绕过',\n", " '病毒',\n", " '物资',\n", " '聚集',\n", " '据说',\n", " '工作人员',\n", " '12',\n", " '协和',\n", " '网友',\n", " '领用',\n", " '转自',\n", " '武汉协和医院',\n", " '某会',\n", " '惹怒',\n", " '我们',\n", " '置之不理',\n", " '医护人员',\n", " '求助',\n", " '要饭',\n", " '排在',\n", " '捐赠',\n", " '绕过',\n", " '病毒',\n", " '物资',\n", " '聚集',\n", " '据说',\n", " '工作人员',\n", " '黎黎',\n", " 'Lily',\n", " '微博',\n", " '视频',\n", " '13',\n", " '展馆',\n", " '红十字会',\n", " '武汉市',\n", " '捐赠',\n", " '物资',\n", " '胡亚波',\n", " '总台',\n", " '造册',\n", " '探访',\n", " '东西',\n", " '征用',\n", " '堆放',\n", " '紧缺',\n", " '常务副',\n", " '记者',\n", " '民用',\n", " '存放',\n", " '角落',\n", " '仓库',\n", " '有用',\n", " '14',\n", " '展馆',\n", " '红十字会',\n", " '东西',\n", " '武汉市',\n", " '捐赠',\n", " '物资',\n", " '胡亚波',\n", " '总台',\n", " '进不来',\n", " '造册',\n", " '探访',\n", " '堆积如山',\n", " '医护人员',\n", " '征用',\n", " '堆放',\n", " '紧缺',\n", " '常务副',\n", " '需要',\n", " '记者',\n", " '详情',\n", " '东西',\n", " ...]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "words" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: 2020/2-12-Elasticsearch-Chrome/README.md ================================================ - 视频 [使用Elasticsearch为Chrome插件增强搜索功能-中文分词](https://www.bilibili.com/video/av88390156/) - 参考 - [Elasticsearch通过docker安装及安装中文分词插件](https://blog.csdn.net/weixin_38229356/article/details/84574416) - 官网 https://hub.docker.com/_/elasticsearch/?tab=description Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能, 但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。 不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它: 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理PB级结构化或非结构化数据 - ES的存储结构 ``` 在ES中,存储结构主要有四种,与传统的关系型数据库对比如下: index(Indices)相当于一个database type相当于一个table document相当于一个row properties(Fields)相当于一个column Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -> Indices -> Types -> Documents -> Fields ``` - 下载 docker pull elasticsearch:6.5.0 运行 启动ES docker run -p 9200:9200 -it --name es_6_5 elasticsearch:6.5.0 或,单节点模式 docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2 进入镜像 docker exec -it es_6_5 /bin/bash - 安装中文分词插件 [root@a31684a47a92 elasticsearch]# pwd /usr/share/elasticsearch [root@a31684a47a92 elasticsearch]# ls LICENSE.txt NOTICE.txt README.textile bin config data lib logs modules plugins ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.0/elasticsearch-analysis-ik-6.5.0.zip 加入跨域配置 vi ./config/elasticsearch.yml ``` http.cors.enabled: true http.cors.allow-origin: "*" ``` 这样 elasticsearch-head 插件才可以访问 Elasticsearch 重启 docker restart es_6_5 - python api https://elasticsearch-py.readthedocs.io/en/master/ ## 部署 ElasticSearch-Head 3种方式 https://hub.docker.com/r/mobz/elasticsearch-head docker pull mobz/elasticsearch-head:5 docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5 docker restart es_admin 不好用 使用Chrome插件 https://github.com/mobz/elasticsearch-head ## CURL - 参考 https://blog.csdn.net/u013063153/article/details/74108023 创建索引 建立索引库company,PUT和POST都可以: curl -XPUT 'http://localhost:9200/company' 索引库名称必须要全部小写,不能以下划线开头,也不能包含逗号 创建索引,其中employee是type,1是document,-d是指定要传输的数据(遵循JSON格式): curl -H "Content-Type: application/json" -XPOST http://localhost:9200/company/employee/2 -d '{ "first_name" : "werl", "last_name" : "jkd", "age" : 45, "about" : "君士坦丁堡亦以其宏伟建筑而闻名。著名的建筑包括圣索菲亚大教堂、君士坦丁堡大皇宫、君士坦丁堡竞技场和黄金城门,大道与广场在其间星罗棋布。在1204年和1453年两次被劫掠之前,君士坦丁堡还保存着为数众多的艺术和文学作品。在被奥斯曼帝国攻克之时,该城已经逐渐破败,但在此后得到了迅速的复兴与发展,并于17世纪中叶再次成为当时世界第一大城市。", "interests": [ "sports", "tv" ] }' ================================================ FILE: 2020/2-12-Elasticsearch-Chrome/分词.md ================================================ - IK分词 - [Elasticsearch入门和查询语法分析(ik中文分词)](https://www.cnblogs.com/johnson108178/p/9295737.html) ``` (.py3) localhost:~ play$ curl -X GET "localhost:9200/_analyze" -H 'Content-Type: application/json' -d'{ > "analyzer" : "ik_smart", > "text" : "410年,日耳曼的西哥特人在领袖阿拉里克率领下,进入意大利,围攻罗马城,在城内奴隶的配合下 打开城门,掠夺而去" > }' {"tokens":[{"token":"410年","start_offset":0,"end_offset":4,"type":"TYPE_CQUAN","position":0},{"token":"日耳曼","start_offset":5,"end_offset":8,"type":"CN_WORD","position":1},{"token":"的","start_offset":8,"end_offset":9,"type":"CN_CHAR","position":2},{"token":"西","start_offset":9,"end_offset":10,"type":"CN_CHAR","position":3},{"token":"哥","start_offset":10,"end_offset":11,"type":"CN_CHAR","position":4},{"token":"特","start_offset":11,"end_offset":12,"type":"CN_CHAR","position":5},{"token":"人在","start_offset":12,"end_offset":14,"type":"CN_WORD","position":6},{"token":"领袖","start_offset":14,"end_offset":16,"type":"CN_WORD","position":7},{"token":"阿拉","start_offset":16,"end_offset":18,"type":"CN_WORD","position":8},{"token":"里","start_offset":18,"end_offset":19,"type":"CN_CHAR","position":9},{"token":"克","start_offset":19,"end_offset":20,"type":"CN_CHAR","position":10},{"token":"率领","start_offset":20,"end_offset":22,"type":"CN_WORD","position":11},{"token":"下","start_offset":22,"end_offset":23,"type":"CN_CHAR","position":12},{"token":"进入","start_offset":24,"end_offset":26,"type":"CN_WORD","position":13},{"token":"意大利","start_offset":26,"end_offset":29,"type":"CN_WORD","position":14},{"token":"围攻","start_offset":30,"end_offset":32,"type":"CN_WORD","position":15},{"token":"罗马","start_offset":32,"end_offset":34,"type":"CN_WORD","position":16},{"token":"城","start_offset":34,"end_offset":35,"type":"CN_CHAR","position":17},{"token":"在","start_offset":36,"end_offset":37,"type":"CN_CHAR","position":18},{"token":"城内","start_offset":37,"end_offset":39,"type":"CN_WORD","position":19},{"token":"奴隶","start_offset":39,"end_offset":41,"type":"CN_WORD","position":20},{"token":"的","start_offset":41,"end_offset":42,"type":"CN_CHAR","position":21},{"token":"配合","start_offset":42,"end_offset":44,"type":"CN_WORD","position":22},{"token":"下","start_offset":44,"end_offset":45,"type":"CN_CHAR","position":23},{"token":"打开","start_offset":45,"end_offset":47,"type":"CN_WORD","position":24},{"token":"城门","start_offset":47,"end_offset":49,"type":"CN_WORD","position":25},{"token":"掠夺","start_offset":50,"end_offset":52,"type":"CN_WORD","position":26},{"token":"而去","start_offset":52,"end_offset":54,"type":"CN_WORD","position":27}]} ``` ``` (.py3) localhost:~ play$ curl -X GET "localhost:9200/_analyze" -H 'Content-Type: application/json' -d'{ > "analyzer" : "ik_max_word", > "text" : "410年,日耳曼的西哥特人在领袖阿拉里克率领下,进入意大利,围攻罗马城,在城内奴隶的配合下 打开城门,掠夺而去" > }' {"tokens":[{"token":"410","start_offset":0,"end_offset":3,"type":"ARABIC","position":0},{"token":"年","start_offset":3,"end_offset":4,"type":"COUNT","position":1},{"token":"日耳曼","start_offset":5,"end_offset":8,"type":"CN_WORD","position":2},{"token":"的","start_offset":8,"end_offset":9,"type":"CN_CHAR","position":3},{"token":"西","start_offset":9,"end_offset":10,"type":"CN_CHAR","position":4},{"token":"哥","start_offset":10,"end_offset":11,"type":"CN_CHAR","position":5},{"token":"特","start_offset":11,"end_offset":12,"type":"CN_CHAR","position":6},{"token":"人在","start_offset":12,"end_offset":14,"type":"CN_WORD","position":7},{"token":"领袖","start_offset":14,"end_offset":16,"type":"CN_WORD","position":8},{"token":"阿拉","start_offset":16,"end_offset":18,"type":"CN_WORD","position":9},{"token":"里","start_offset":18,"end_offset":19,"type":"CN_CHAR","position":10},{"token":"克","start_offset":19,"end_offset":20,"type":"CN_CHAR","position":11},{"token":"率领","start_offset":20,"end_offset":22,"type":"CN_WORD","position":12},{"token":"下","start_offset":22,"end_offset":23,"type":"CN_CHAR","position":13},{"token":"进入","start_offset":24,"end_offset":26,"type":"CN_WORD","position":14},{"token":"意大利","start_offset":26,"end_offset":29,"type":"CN_WORD","position":15},{"token":"围攻","start_offset":30,"end_offset":32,"type":"CN_WORD","position":16},{"token":"罗马","start_offset":32,"end_offset":34,"type":"CN_WORD","position":17},{"token":"城","start_offset":34,"end_offset":35,"type":"CN_CHAR","position":18},{"token":"在","start_offset":36,"end_offset":37,"type":"CN_CHAR","position":19},{"token":"城内","start_offset":37,"end_offset":39,"type":"CN_WORD","position":20},{"token":"奴隶","start_offset":39,"end_offset":41,"type":"CN_WORD","position":21},{"token":"的","start_offset":41,"end_offset":42,"type":"CN_CHAR","position":22},{"token":"配合","start_offset":42,"end_offset":44,"type":"CN_WORD","position":23},{"token":"下","start_offset":44,"end_offset":45,"type":"CN_CHAR","position":24},{"token":"打开","start_offset":45,"end_offset":47,"type":"CN_WORD","position":25},{"token":"开城","start_offset":46,"end_offset":48,"type":"CN_WORD","position":26},{"token":"城门","start_offset":47,"end_offset":49,"type":"CN_WORD","position":27},{"token":"掠夺","start_offset":50,"end_offset":52,"type":"CN_WORD","position":28},{"token":"而去","start_offset":52,"end_offset":54,"type":"CN_WORD","position":29}]}(.py3) localhost:~ play$ ``` ================================================ FILE: 2020/2-13-微博实时抓取/README.md ================================================ # 微博实时抓取 - 视频 [想第一时间看到爱豆的动态吗?快来学【微博实时抓取】吧](https://www.bilibili.com/video/av89008576/) - 参考 - https://github.com/makelove/puppeteer-examples/blob/master/my02-%E5%BE%AE%E5%8D%9A-%E6%98%8E%E6%98%9F-%E5%AE%9E%E6%97%B6%E6%9B%B4%E6%96%B0/test1.js - 需求 - 实时抓取明星发的微博 - 追星,粉丝经济,眼球。第一时间看到明星的最新动态 - 流程 - 用手机新注册一个微博账号 - 登陆 - 微博热门 https://d.weibo.com/ - 明星 https://d.weibo.com/102803_ctg1_4288_-_ctg1_4288 - 再进去,明星主页 - 实时监控明星的动态,更新列表 ================================================ FILE: 2020/2-17-Python-secrets/README.md ================================================ ## Python的秘密 - 视频 [Python的秘密,你知道吗?Python之禅](https://www.bilibili.com/video/av89586065/) - Python之禅 - import this - 英文 - 中文翻译 ``` Beautiful is better than ugly. # 优美胜于丑陋(Python以编写优美的代码为目标) Explicit is better than implicit. # 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似) Simple is better than complex. # 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现) Complex is better than complicated. # 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁) Flat is better than nested. # 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套) Sparse is better than dense. # 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题) Readability counts. # 可读性很重要(优美的代码是可读的) Special cases aren't special enough to break the rules. Although practicality beats purity. # 即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上) Errors should never pass silently. Unless explicitly silenced. # 不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写except:pass风格的代码) In the face of ambiguity, refuse the temptation to guess. # 当存在多种可能,不要尝试去猜测 There should be one-- and preferably only one --obvious way to do it. # 而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法) Although that way may not be obvious at first unless you're Dutch. # 虽然这并不容易,因为你不是 Python 之父(这里的Dutch是指Guido) Now is better than never. Although never is often better than *right* now. # 做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量) If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. # 如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准) Namespaces are one honking great idea -- let's do more of those! # 命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召) ``` - Python的好处 - 天下武功,唯快不破 - 代码量少 - 生态系统完善 - 工具库齐全 - 怎样生成随机加密串 ``` import string import random def random_string_generator(size=6, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for _ in range(size)) ``` ``` from uuid import uuid4 str(uuid4()) ``` - 使用secrets模块生成secure token ``` import secrets #生成适合于重置密码和难以想象的URL的安全令牌 secrets.token_bytes() secrets.token_hex() #返回随机字节为nbytes的URL安全文本字符串。 文本以Base64编码,每个字节平均约为1.3个字符。 如果nbytes为None或未给出,则使用有效的默认值。 secrets.token_urlsafe() #减少攻击风险 secrets.compare_digest("e","E") False tokens使用多少字节 为了抵御蛮力攻击和时序攻击,tokens需要具有足够的随机性。根据专家的说法,32字节(256位)的随机性足以抵御蛮力攻击。您应该根据您的要求选择字节大小。 使用secrets.compare_digest(a,b)减少时序攻击 为了降低时序攻击的风险,secrets模块具有compare_digest(a,b)功能。如果字符串a和b相等,则此函数返回True,否则返回False以降低计时攻击的风险。 ``` - 参考 - [Python 的加密库入门](https://zhuanlan.zhihu.com/p/65168597) - [HTTP对外接口API sign签名](https://www.cnblogs.com/yoyoketang/p/11742187.html) - [Whats the simplest and safest method to generate a API KEY and SECRET in Python](https://stackoverflow.com/questions/34897740/whats-the-simplest-and-safest-method-to-generate-a-api-key-and-secret-in-python/48426397#48426397) ================================================ FILE: 2020/2-18-Docker-Go-goProxy/README.md ================================================ - 视频 [本地开发环境不能用了?Docker帮你实现Go的独立编译环境](https://www.bilibili.com/video/av89812800/) - 本地开发环境损坏 - 使用Docker作为Go工程的打包编译环境 打开vscode - 启动Docker - docker run -it --rm -p 8080:8080 -v /Users/play/CODE/docker_go:/code golang - 检测 ``` go version go version go1.13.4 linux/amd64 go build server.go go get github.com/emicklei/go-restful ``` - build报错 ``` root@b6c01e230bce:/code/spider# go build proxy_auto_drop.go /go/src/github.com/andybalholm/cascadia/selector.go:9:2: cannot find package "golang.org/x/net/html" in any of: /usr/local/go/src/golang.org/x/net/html (from $GOROOT) /go/src/golang.org/x/net/html (from $GOPATH) /go/src/github.com/antchfx/htmlquery/query.go:16:2: cannot find package "golang.org/x/net/html/charset" in any of: /usr/local/go/src/golang.org/x/net/html/charset (from $GOROOT) /go/src/golang.org/x/net/html/charset (from $GOPATH) /go/src/github.com/gocolly/colly/colly.go:48:2: cannot find package "google.golang.org/appengine/urlfetch" in any of: /usr/local/go/src/google.golang.org/appengine/urlfetch (from $GOROOT) /go/src/google.golang.org/appengine/urlfetch (from $GOPATH) ``` - 不能下载 golang.org 的代码,因为被墙 ``` root@b6c01e230bce:/code/spider# go get -v github.com/gocolly/colly github.com/gocolly/colly (download) github.com/PuerkitoBio/goquery (download) github.com/andybalholm/cascadia (download) package golang.org/x/net/html: unrecognized import path "golang.org/x/net/html" (https fetch: Get https://golang.org/x/net/html?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) github.com/antchfx/htmlquery (download) github.com/antchfx/xpath (download) github.com/golang/groupcache (download) package golang.org/x/net/html/charset: unrecognized import path "golang.org/x/net/html/charset" (https fetch: Get https://golang.org/x/net/html/charset?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) github.com/antchfx/xmlquery (download) github.com/gobwas/glob (download) github.com/kennygrant/sanitize (download) github.com/saintfish/chardet (download) github.com/temoto/robotstxt (download) package google.golang.org/appengine/urlfetch: unrecognized import path "google.golang.org/appengine/urlfetch" (https fetch: Get https://google.golang.org/appengine/urlfetch?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) ``` - 文档说明不清楚 https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md - 参考我的帖子 https://github.com/goproxy/goproxy.cn/issues/59 - 解决 ``` export GO111MODULE=on export GOPROXY=https://goproxy.cn ``` - 然后 ``` root@b6c01e230bce:/code/spider# go get -v github.com/gocolly/colly go: finding github.com/gocolly/colly v1.2.0 go: downloading github.com/gocolly/colly v1.2.0 go: extracting github.com/gocolly/colly v1.2.0 go: finding google.golang.org/appengine v1.6.5 go: downloading google.golang.org/appengine v1.6.5 go: finding github.com/gobwas/glob v0.2.3 go: finding github.com/kennygrant/sanitize v1.2.4 go: finding github.com/saintfish/chardet latest go: finding github.com/PuerkitoBio/goquery v1.5.1 go: downloading github.com/kennygrant/sanitize v1.2.4 go: finding golang.org/x/net latest go: finding github.com/antchfx/xmlquery v1.2.3 go: finding github.com/temoto/robotstxt v1.1.1 go: finding github.com/antchfx/htmlquery v1.2.2 go: downloading github.com/antchfx/xmlquery v1.2.3 go: downloading github.com/temoto/robotstxt v1.1.1 go: downloading github.com/gobwas/glob v0.2.3 go: downloading golang.org/x/net v0.0.0-20200202094626-16171245cfb2 go: downloading github.com/antchfx/htmlquery v1.2.2 go: downloading github.com/PuerkitoBio/goquery v1.5.1 go: downloading github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca go: extracting github.com/kennygrant/sanitize v1.2.4 go: extracting google.golang.org/appengine v1.6.5 go: extracting github.com/antchfx/xmlquery v1.2.3 go: extracting github.com/antchfx/htmlquery v1.2.2 go: extracting github.com/temoto/robotstxt v1.1.1 go: extracting github.com/gobwas/glob v0.2.3 go: extracting golang.org/x/net v0.0.0-20200202094626-16171245cfb2 go: extracting github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca go: extracting github.com/PuerkitoBio/goquery v1.5.1 go: downloading github.com/andybalholm/cascadia v1.1.0 go: downloading golang.org/x/text v0.3.2 go: downloading github.com/golang/protobuf v1.3.1 go: extracting github.com/andybalholm/cascadia v1.1.0 go: finding github.com/antchfx/xpath v1.1.4 go: extracting github.com/golang/protobuf v1.3.1 go: finding github.com/golang/groupcache latest go: downloading github.com/antchfx/xpath v1.1.4 go: downloading github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e go: extracting github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e go: extracting github.com/antchfx/xpath v1.1.4 go: extracting golang.org/x/text v0.3.2 go: finding github.com/andybalholm/cascadia v1.1.0 go: finding golang.org/x/text v0.3.2 go: finding github.com/golang/protobuf v1.3.1 golang.org/x/net/html/atom golang.org/x/net/html github.com/antchfx/xpath github.com/golang/groupcache/lru github.com/andybalholm/cascadia golang.org/x/text/encoding/internal/identifier golang.org/x/text/transform golang.org/x/text/encoding golang.org/x/text/encoding/internal github.com/PuerkitoBio/goquery golang.org/x/text/encoding/charmap golang.org/x/text/encoding/japanese golang.org/x/text/encoding/korean golang.org/x/text/encoding/simplifiedchinese golang.org/x/text/encoding/traditionalchinese golang.org/x/text/internal/utf8internal golang.org/x/text/runes golang.org/x/text/internal/tag golang.org/x/text/internal/language golang.org/x/text/encoding/unicode github.com/gobwas/glob/util/runes github.com/gobwas/glob/util/strings github.com/gobwas/glob/match golang.org/x/text/internal/language/compact github.com/gobwas/glob/syntax/lexer golang.org/x/text/language github.com/gobwas/glob/syntax/ast github.com/gobwas/glob/compiler github.com/gobwas/glob/syntax github.com/gobwas/glob github.com/gocolly/colly/debug golang.org/x/text/encoding/htmlindex github.com/gocolly/colly/storage golang.org/x/net/html/charset github.com/kennygrant/sanitize github.com/antchfx/htmlquery github.com/antchfx/xmlquery github.com/saintfish/chardet github.com/temoto/robotstxt github.com/golang/protobuf/proto golang.org/x/net/context google.golang.org/appengine/internal/datastore google.golang.org/appengine/internal/base google.golang.org/appengine/internal/log google.golang.org/appengine/internal/remote_api google.golang.org/appengine/internal/urlfetch google.golang.org/appengine/internal google.golang.org/appengine/urlfetch github.com/gocolly/colly root@b6c01e230bce:/code/spider# go build proxy_auto_drop.go go: finding golang.org/x/net latest go: finding github.com/saintfish/chardet latest go: finding github.com/golang/groupcache latest root@b6c01e230bce:/code/spider# ls -l total 14268 -rwxr-xr-x 1 root root 14605898 Feb 18 02:07 proxy_auto_drop -rw-r--r-- 1 root root 514 Feb 18 02:01 proxy_auto_drop.go root@b6c01e230bce:/code/spider# ./proxy_auto_drop 2020/02/18 02:07:53 OnResponse 2020/02/18 02:07:53 r.Request.ProxyURL 2020/02/18 02:07:53 OnResponse Visited https://httpbin.org/ip 2020/02/18 02:07:53 { "origin": "221.218.140.26" } ------------ ``` ================================================ FILE: 2020/2-18-Scrapy-auto-proxy/README.md ================================================ # Scrapy 爬虫自动调整IP代理 - 视频 [Scrapy爬虫自动调整IP代理,避免失效](https://www.bilibili.com/video/av89959782/) - 问题 - IP代理失效 ## 启动Docker - 参考 https://github.com/makelove/Programer_Log/tree/master/2020/2-7-Docker-Nginx-antiClawer - 启动 http server ```shell script (.py3) localhost:2-7-Docker-Nginx-antiClawer play$ go run server.go Server starting on port 8080 curl http://127.0.0.1:8080/ curl http://192.168.0.222:8080/ ``` - 启动Nginx ```shell script (.py3) localhost:2-7-Docker-Nginx-antiClawer play$ docker run -it --rm -p 80:80 -v `pwd`/nginx1.conf:/etc/nginx/nginx.conf:ro nginx 172.17.0.1 - - [18/Feb/2020:11:44:54 +0000] "GET /api HTTP/1.1" 403 153 "-" "curl/7.64.1" 172.17.0.1 - - [18/Feb/2020:11:45:28 +0000] "GET /api HTTP/1.1" 200 49 "-" "iphone" #测试 curl -A 'iphone' http://192.168.0.222/api ``` - 启动 Squid 代理服务器 ```shell script docker run -it --rm -p 3121:3128 datadog/squid docker run -it --rm -p 3122:3128 datadog/squid docker run -it --rm -p 3123:3128 datadog/squid docker run -it --rm -p 3124:3128 datadog/squid ``` - 测试代理 ```shell script curl -A 'iphone' -x 127.0.0.1:3121 http://192.168.0.222/api curl -A 'iphone' -x 127.0.0.1:3121 http://httpbin.org/ip ``` - 启动Redis - 必须 Redis 5.0.7 64 bit ```shell script docker run -it --rm -p 6379:6379 redis #测试 redis-cli ``` - 编写Scrapy代码 - 使用2-6-Spider-Speed-test 的scrapy_demo代码 - 新建middlewares_proxy_redis.py - 在settings.py加入DOWNLOADER_MIDDLEWARES - 'scrapy_demo.middlewares_proxy_redis.redisProxy': 400, - 把代理插入Redis服务器 - manage_proxy.py - 运行爬虫测试 - scrapy crawl example -s CLOSESPIDER_ITEMCOUNT=1000 - 测试效果 - Nginx 配置,要正确 - limit_conn_zone $binary_remote_addr zone=perip:100k; - limit_conn_zone $server_name zone=perserver:100k; - 数值如果太大,就看不出效果 ================================================ FILE: 2020/2-18-Scrapy-auto-proxy/manage_proxy.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/2/18 20:20 # @File : manage_proxy.py """ manage_proxy.py: """ import redis r = redis.Redis(decode_responses=True) proxy_key = 'proxy' error_proxy_key = 'error_proxy' def main(): http_proxy = [ # 'http://127.0.0.1:3121', # 'http://127.0.0.1:3122', # 'http://127.0.0.1:3123', # 'http://127.0.0.1:3124', 'http://172.17.0.4:3128', 'http://172.17.0.5:3128', 'http://172.17.0.6:3128', 'http://172.17.0.7:3128', ] # init_value = 10000 # 1000000 # 1百万 for idx, ip in enumerate(http_proxy): # r.zincrby(proxy_key, init_value, ip) # r.zincrby(error_proxy_key, 0, ip) r.zadd(proxy_key, {ip: init_value+idx}) r.zadd(error_proxy_key, {ip: 0}) print('插入完毕') pass def scan(): count = r.zcard(proxy_key) print(proxy_key, count) rs = r.zscan(proxy_key, count=count) # 288 for ip, value in rs[1]: print(ip, '\t', value) print('-' * 40) # 错误 count = r.zcard(error_proxy_key) print(error_proxy_key, count) rs = r.zscan(error_proxy_key, count=count) for ip, value in rs[1]: print(ip, '\t', value) # break if __name__ == '__main__': # main() scan() ================================================ FILE: 2020/2-19-JetBrains-Pycharm-破解/README.md ================================================ # JetBrains全家桶 破解 - 视频 [JetBrains全家桶用不了?用VScode代替PyCharm](https://www.bilibili.com/video/av90073564/) - 常用 PyCharm 、GoLand、WebStorm、IntelliJ IDEA - Clion、AppCode、Kotlin - 免费领取正版,不用破解 - 教育网后缀的email - 开源项目 https://zhuanlan.zhihu.com/p/87370573 - 怎样破解 - 不需要断网 - 不需要改host - 0.0.0.0 account.jetbrains.com - 把jetbrains-agent.jar放到pycharm的lib目录 - 启动pycharm,输入激活码 - 上面的步骤对JetBrains全家桶都有效。 - 本人测试了GoLand破解,没问题 - 如果PyCharm 专业版不能激活,可以用【社区版】 - 代替 - VScode - 免费 - 功能齐全 - VScode 调试程序 - Python ``` { "name": "pyLaunch", "type": "python", "request": "launch", "mode": "auto", "pythonPath": "${config:python.pythonPath}", "program": "${file}", "env": {}, "args": [] } ``` - Go ``` { "name": "goLaunch", "type": "go", "request": "launch", "mode": "auto", "program": "${fileDirname}", "env": {}, "args": [] } 然后要创建mod文件 go mod init example.com/m ``` - 使用VScode编程Go语言 - 参考 https://github.com/makelove/Programer_Log/tree/master/2020/2-18-Docker-Go-goProxy - 步骤 - 设置环境变量 - export GO111MODULE=on - export GOPROXY=https://goproxy.cn - 下载VScode的插件【Go for Visual Studio Code】 - 参考 https://github.com/microsoft/vscode-go - 便可以自动import go 模块了 - 另外,你在命令行 go build main.go时,Go 会自动下载模块 ================================================ FILE: 2020/2-19-JetBrains-Pycharm-破解/demo/.vscode/launch.json ================================================ { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "go", "type": "go", "request": "launch", "mode": "debug", "program": "${file}" }, { "name": "Py", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal" } ] } ================================================ FILE: 2020/2-19-JetBrains-Pycharm-破解/demo/demo.py ================================================ # -*- encoding: utf-8 -*- ''' @File : demo.py @Time : 2020/02/19 10:49:37 @Author : play4fun @Desc : ''' def f1(): for i,x in enumerate(range(13,19)): print(i,'\t',x) pass if __name__ == "__main__": f1() ================================================ FILE: 2020/2-19-JetBrains-Pycharm-破解/demo/go.mod ================================================ module example.com/m go 1.13 ================================================ FILE: 2020/2-19-JetBrains-Pycharm-破解/demo/t1.go ================================================ /* @File : t1.go @Time : 2020/02/18 17:36:24 @Author : play4fun @Desc : d */ package main import "fmt" func main() { numbers := [6]int{1, 2, 3, 5} for i, x := range numbers { fmt.Printf("第 %d 位 x 的值 = %d\n", i, x) } } ================================================ FILE: 2020/2-20-Python-Siri-语音朗读文章/Global-hotkeys.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/2/20 17:50 # @File : Global-hotkeys.py """ Global-hotkeys.py: 全局热键 只支持一对热键 """ from pynput import keyboard def on_activate(): print('Global hotkey activated!') def for_canonical(f): return lambda k: f(listener.canonical(k)) hotkey = keyboard.HotKey( # keyboard.HotKey.parse('++1'), keyboard.HotKey.parse('+1'), on_activate) with keyboard.Listener( on_press=for_canonical(hotkey.press), on_release=for_canonical(hotkey.release)) as listener: listener.join() def main(): listener.start() pass if __name__ == '__main__': main() ================================================ FILE: 2020/2-20-Python-Siri-语音朗读文章/README.md ================================================ # python-切换Siri的发音人-朗读文章 - 视频 [Python-切换Siri的发音人-朗读文章,不需要手动切换发音人](https://www.bilibili.com/video/av90408293/) - 监控键盘,模拟键盘按下 - https://pypi.org/project/pyperclip/ - pip install pyperclip - 需要【隐私】的监视权限 - 组合键? - 粘贴板 - https://pypi.org/project/pyperclip/ - pip install pyperclip ``` import pyperclip pyperclip.copy('The text to be copied to the clipboard.') pyperclip.paste() ``` ================================================ FILE: 2020/2-20-Python-Siri-语音朗读文章/copy-string-tts.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/2/20 18:00 # @File : copy-string-tts.py """ copy-string-tts.py: """ from pynput import keyboard import pyperclip as cp import os def get_listener(key, voice): def on_activate(): print('Global hotkey activated!') cpstr: str = cp.paste() print(cpstr) if cpstr.strip(): cmd = f'say -v {voice} "{cpstr}"' print(cmd) os.system(cmd) pass def for_canonical(f): return lambda k: f(listener.canonical(k)) hotkey = keyboard.HotKey( # keyboard.HotKey.parse('++1'), keyboard.HotKey.parse(key), on_activate) with keyboard.Listener( on_press=for_canonical(hotkey.press), on_release=for_canonical(hotkey.release)) as listener: listener.join() return listener def main(): listener1 = get_listener('+1', "Ting-Ting") listener1.start() # listener2 = get_listener('+2', "Mei-Jia") # listener2.start()#不行 pass if __name__ == '__main__': main() ================================================ FILE: 2020/2-20-Python-Siri-语音朗读文章/copy-string-tts2.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/2/20 18:14 # @File : copy-string-tts2.py """ copy-string-tts2.py: 支持多对热键 运行后 先选中文本 按 ctrl+c 复制 然后按照对应的热键 """ from pynput import keyboard import pyperclip as cp import os def say(voice): cpstr: str = cp.paste() print(cpstr) print('-'*20) if cpstr.strip(): cmd = f'say -v {voice} "{cpstr}"' print(cmd) os.system(cmd) print('-'*40) pass def on_activate_1(): print('+1 pressed') say("Ting-Ting") def on_activate_2(): print('+2 pressed') say("Mei-Jia") def on_activate_3(): print('+3 pressed') say("Sin-ji") def on_activate_4(): print('+4 pressed') say("Allison") def main(): try: with keyboard.GlobalHotKeys({ '+1': on_activate_1, '+2': on_activate_2, '+3': on_activate_3, '+4': on_activate_4, }) as h: h.join() h.start() except KeyboardInterrupt as e: print('KeyboardInterrupt',e) return except Exception as e: print('Exception',e) raise # listener.start() pass if __name__ == '__main__': main() ================================================ FILE: 2020/2-20-Python-Siri-语音朗读文章/keyboard_Listener1.py ================================================ # coding=utf-8 ''' https://pypi.org/project/keyboard/ ''' from pynput import keyboard def on_press(key): try: print('alphanumeric key {0} pressed'.format( key.char)) except AttributeError: print('special key {0} pressed'.format( key)) def on_release(key): print('{0} released'.format( key)) if key == keyboard.Key.esc: # Stop listener return False # Collect events until released with keyboard.Listener( on_press=on_press, on_release=on_release) as listener: listener.join() # ...or, in a non-blocking fashion: # listener = keyboard.Listener( # on_press=on_press, # on_release=on_release) listener.start() ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/README.md ================================================ ## Scrapy使用Puppeteer中间件抓取JS动态页面 - 视频 [有瓶颈!Scrapy使用Puppeteer中间件抓取JS动态页面](https://www.bilibili.com/video/av91039863/) ## 1. JS动态页面 ## 2. Go server - go run js_server.go - flask server - python3 js_server.py ## 3. Scrapy爬虫,中间件 - scrapy crawl example -s CLOSESPIDER_ITEMCOUNT=1000 - spider的parse函数要yield item ## 4. 运行测试 - 启动Docker - 运行 Puppeteer - docker run -it --name renderer -p 8080:3000 zenato/puppeteer-renderer - 测试 - curl http://localhost:8080/?url=http://192.168.0.222:8888/ - scrapy shell 'http://192.168.0.222:8888/' - scrapy shell 'http://localhost:8080/?url=http://192.168.0.222:8888/' ## 5. 压力测试 ab ``` 测试工具Apache ab http://httpd.apache.org/docs/2.2/programs/ab.html ab -q -c 50 -n 1000 http://192.168.0.222:8888/ -n表示请求数,-c表示并发数 Go: Requests per second: 7109.04 [#/sec] (mean) Flask: Requests per second: 293.62 [#/sec] (mean) ab -c 50 -n 1000 http://localhost:8080/?url=http://192.168.0.222:8888/ ab -c 32 -n 200 http://localhost:8080/?url=http://192.168.0.222:8888/ Go: Requests per second: 8.82 [#/sec] (mean) Flask: Requests per second: 8.27 [#/sec] (mean) ``` ## 6. 优化 ?瓶颈 ! - 修改docker Puppeteer index.js - express ? - 增大并发量 - 同时打开多个Chrome窗口,占用更多的内存 ``` (.py3) localhost:~ play$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7fb712736d3 zenato/puppeteer-renderer "/bin/sh -c 'npm run…" 7 weeks ago Up About an hour 0.0.0.0:8080->3000/tcp renderer #进入docker镜像 (.py3) localhost:~ play$ docker exec -it renderer /bin/bash root@c7fb712736d3:/app# cat Dockerfile FROM zenato/puppeteer USER root COPY . /app RUN cd /app && npm install --quiet EXPOSE 3000 WORKDIR /app CMD npm run start root@c7fb712736d3:/app# ls -l total 144 -rw-r--r-- 1 root root 128 Dec 18 23:52 Dockerfile -rw-r--r-- 1 root root 1091 Dec 18 23:52 LICENSE -rw-r--r-- 1 root root 3293 Dec 18 23:52 README.md drwxr-xr-x 3 root root 4096 Dec 18 23:52 middleware drwxr-xr-x 266 root root 12288 Dec 18 23:58 node_modules -rw-r--r-- 1 root root 23 Dec 18 23:52 now.json -rw-r--r-- 1 root root 101140 Dec 18 23:58 package-lock.json -rw-r--r-- 1 root root 737 Dec 18 23:52 package.json drwxr-xr-x 2 root root 4096 Dec 18 23:52 src drwxr-xr-x 2 root root 4096 Dec 18 23:52 test root@c7fb712736d3:/app# ls src/ index.js renderer.js #源代码 root@c7fb712736d3:/app# cat src/index.js 'use strict' const express = require('express') const qs = require('qs') const { URL } = require('url') const contentDisposition = require('content-disposition') const createRenderer = require('./renderer') const port = process.env.PORT || 3000 const app = express() let renderer = null // Configure. app.set('query parser', s => qs.parse(s, { allowDots: true })) app.disable('x-powered-by') // Render url. app.use(async (req, res, next) => { console.log(req.query) let { url, type, filename, ...options } = req.query if (!url) { return res.status(400).send('Search with url parameter. For eaxample, ?url=http://yourdomain') } if (!url.includes('://')) { url = `http://${url}` } try { switch (type) { case 'pdf': const urlObj = new URL(url) if (!filename) { filename = urlObj.hostname if (urlObj.pathname !== '/') { filename = urlObj.pathname.split('/').pop() if (filename === '') filename = urlObj.pathname.replace(/\//g, '') const extDotPosition = filename.lastIndexOf('.') if (extDotPosition > 0) filename = filename.substring(0, extDotPosition) } } if(!filename.toLowerCase().endsWith('.pdf')) { filename += '.pdf'; } const pdf = await renderer.pdf(url, options) res .set({ 'Content-Type': 'application/pdf', 'Content-Length': pdf.length, 'Content-Disposition': contentDisposition(filename), }) .send(pdf) break case 'screenshot': const { screenshotType, buffer } = await renderer.screenshot(url, options) res .set({ 'Content-Type': `image/${screenshotType}`, 'Content-Length': buffer.length, }) .send(buffer) break default: const html = await renderer.render(url, options) res.status(200).send(html) } } catch (e) { next(e) } }) // Error page. app.use((err, req, res, next) => { console.error(err) res.status(500).send('Oops, An expected error seems to have occurred.') }) // Create renderer and start server. createRenderer({ ignoreHTTPSErrors: !!process.env.IGNORE_HTTPS_ERRORS, }) .then(createdRenderer => { renderer = createdRenderer console.info('Initialized renderer.') app.listen(port, () => { console.info(`Listen port on ${port}.`) }) }) .catch(e => { console.error('Fail to initialze renderer.', e) }) // Terminate process process.on('SIGINT', () => { process.exit(0) }) root@c7fb712736d3:/app# ``` ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/demo/__init__.py ================================================ ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/demo/items.py ================================================ # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # https://docs.scrapy.org/en/latest/topics/items.html import scrapy class DemoItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() pass ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/demo/middlewares.py ================================================ # -*- coding: utf-8 -*- # Define here the models for your spider middleware # # See documentation in: # https://docs.scrapy.org/en/latest/topics/spider-middleware.html from scrapy import signals from urllib.parse import quote class Puppeteer(object): @classmethod def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls(crawler) # crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s def __init__(self, crawler): self.host = 'http://localhost:8080/?url=' def process_request(self, request, spider): request.meta['url'] = request.url url = self.host + quote(request.url) request._set_url(url) pass def process_response(self, request, response, spider): response._set_url(request.meta['url']) return response pass class DemoSpiderMiddleware(object): # Not all methods need to be defined. If a method is not defined, # scrapy acts as if the spider middleware does not modify the # passed objects. @classmethod def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls() crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s def process_spider_input(self, response, spider): # Called for each response that goes through the spider # middleware and into the spider. # Should return None or raise an exception. return None def process_spider_output(self, response, result, spider): # Called with the results returned from the Spider, after # it has processed the response. # Must return an iterable of Request, dict or Item objects. for i in result: yield i def process_spider_exception(self, response, exception, spider): # Called when a spider or process_spider_input() method # (from other spider middleware) raises an exception. # Should return either None or an iterable of Request, dict # or Item objects. pass def process_start_requests(self, start_requests, spider): # Called with the start requests of the spider, and works # similarly to the process_spider_output() method, except # that it doesn’t have a response associated. # Must return only requests (not items). for r in start_requests: yield r def spider_opened(self, spider): spider.logger.info('Spider opened: %s' % spider.name) class DemoDownloaderMiddleware(object): # Not all methods need to be defined. If a method is not defined, # scrapy acts as if the downloader middleware does not modify the # passed objects. @classmethod def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls() crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s def process_request(self, request, spider): # Called for each request that goes through the downloader # middleware. # Must either: # - return None: continue processing this request # - or return a Response object # - or return a Request object # - or raise IgnoreRequest: process_exception() methods of # installed downloader middleware will be called return None def process_response(self, request, response, spider): # Called with the response returned from the downloader. # Must either; # - return a Response object # - return a Request object # - or raise IgnoreRequest return response def process_exception(self, request, exception, spider): # Called when a download handler or a process_request() # (from other downloader middleware) raises an exception. # Must either: # - return None: continue processing this exception # - return a Response object: stops process_exception() chain # - return a Request object: stops process_exception() chain pass def spider_opened(self, spider): spider.logger.info('Spider opened: %s' % spider.name) ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/demo/pipelines.py ================================================ # -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html class DemoPipeline(object): def process_item(self, item, spider): return item ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/demo/settings.py ================================================ # -*- coding: utf-8 -*- # Scrapy settings for demo project # # For simplicity, this file contains only settings considered important or # commonly used. You can find more settings consulting the documentation: # # https://docs.scrapy.org/en/latest/topics/settings.html # https://docs.scrapy.org/en/latest/topics/downloader-middleware.html # https://docs.scrapy.org/en/latest/topics/spider-middleware.html BOT_NAME = 'demo' SPIDER_MODULES = ['demo.spiders'] NEWSPIDER_MODULE = 'demo.spiders' # Crawl responsibly by identifying yourself (and your website) on the user-agent #USER_AGENT = 'demo (+http://www.yourdomain.com)' # Obey robots.txt rules ROBOTSTXT_OBEY = False # Configure maximum concurrent requests performed by Scrapy (default: 16) CONCURRENT_REQUESTS = 32 # Configure a delay for requests for the same website (default: 0) # See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay # See also autothrottle settings and docs #DOWNLOAD_DELAY = 3 # The download delay setting will honor only one of: #CONCURRENT_REQUESTS_PER_DOMAIN = 16 #CONCURRENT_REQUESTS_PER_IP = 16 # Disable cookies (enabled by default) #COOKIES_ENABLED = False # Disable Telnet Console (enabled by default) #TELNETCONSOLE_ENABLED = False # Override the default request headers: #DEFAULT_REQUEST_HEADERS = { # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', # 'Accept-Language': 'en', #} # Enable or disable spider middlewares # See https://docs.scrapy.org/en/latest/topics/spider-middleware.html #SPIDER_MIDDLEWARES = { # 'demo.middlewares.DemoSpiderMiddleware': 543, #} # Enable or disable downloader middlewares # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html DOWNLOADER_MIDDLEWARES = { 'demo.middlewares.Puppeteer': 543, } # Enable or disable extensions # See https://docs.scrapy.org/en/latest/topics/extensions.html #EXTENSIONS = { # 'scrapy.extensions.telnet.TelnetConsole': None, #} # Configure item pipelines # See https://docs.scrapy.org/en/latest/topics/item-pipeline.html #ITEM_PIPELINES = { # 'demo.pipelines.DemoPipeline': 300, #} # Enable and configure the AutoThrottle extension (disabled by default) # See https://docs.scrapy.org/en/latest/topics/autothrottle.html #AUTOTHROTTLE_ENABLED = True # The initial download delay #AUTOTHROTTLE_START_DELAY = 5 # The maximum download delay to be set in case of high latencies #AUTOTHROTTLE_MAX_DELAY = 60 # The average number of requests Scrapy should be sending in parallel to # each remote server #AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 # Enable showing throttling stats for every response received: #AUTOTHROTTLE_DEBUG = False # Enable and configure HTTP caching (disabled by default) # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings #HTTPCACHE_ENABLED = True #HTTPCACHE_EXPIRATION_SECS = 0 #HTTPCACHE_DIR = 'httpcache' #HTTPCACHE_IGNORE_HTTP_CODES = [] #HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/demo/spiders/__init__.py ================================================ # This package will contain the spiders of your Scrapy project # # Please refer to the documentation for information on how to create and manage # your spiders. ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/demo/spiders/example.py ================================================ # -*- coding: utf-8 -*- import scrapy from scrapy import Request class ExampleSpider(scrapy.Spider): name = 'example' # allowed_domains = ['example.com'] start_urls = ['http://192.168.0.222:8888/'] def parse(self, response): for a in response.xpath('//a'): href=a.xpath('@href').extract_first() text=a.xpath('text()').extract_first().strip() print('网址:',href) print('文本:',text) print('-'*10) for src in response.xpath('//img/@src').extract(): print('图片:', src) #TODO yield item #scrapy crawl example -s CLOSESPIDER_ITEMCOUNT=100 # 重复访问 print('重复访问',response.url) yield Request(url=response.url, callback=self.parse,dont_filter=True) pass ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/main.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/2/21 18:03 # @File : main.py """ main.py: 在pycharm或vscode里单步调试 """ from scrapy import cmdline from datetime import datetime # now = datetime.now().strftime('%Y-%m-%d_%H-%M') cmdline.execute("scrapy crawl example -s CLOSESPIDER_ITEMCOUNT=1000".split()) ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/demo/scrapy.cfg ================================================ # Automatically created by: scrapy startproject # # For more information about the [deploy] section see: # https://scrapyd.readthedocs.io/en/latest/deploy.html [settings] default = demo.settings [deploy] #url = http://localhost:6800/ project = demo ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/docker-puppeteer-index.js ================================================ 'use strict' const express = require('express') const qs = require('qs') const { URL } = require('url') const contentDisposition = require('content-disposition') const createRenderer = require('./renderer') const port = process.env.PORT || 3000 const app = express() let renderer = null // Configure. app.set('query parser', s => qs.parse(s, { allowDots: true })) app.disable('x-powered-by') // Render url. app.use(async (req, res, next) => { console.log(req.query) let { url, type, filename, ...options } = req.query if (!url) { return res.status(400).send('Search with url parameter. For eaxample, ?url=http://yourdomain') } if (!url.includes('://')) { url = `http://${url}` } try { switch (type) { case 'pdf': const urlObj = new URL(url) if (!filename) { filename = urlObj.hostname if (urlObj.pathname !== '/') { filename = urlObj.pathname.split('/').pop() if (filename === '') filename = urlObj.pathname.replace(/\//g, '') const extDotPosition = filename.lastIndexOf('.') if (extDotPosition > 0) filename = filename.substring(0, extDotPosition) } } if(!filename.toLowerCase().endsWith('.pdf')) { filename += '.pdf'; } const pdf = await renderer.pdf(url, options) res .set({ 'Content-Type': 'application/pdf', 'Content-Length': pdf.length, 'Content-Disposition': contentDisposition(filename), }) .send(pdf) break case 'screenshot': const { screenshotType, buffer } = await renderer.screenshot(url, options) res .set({ 'Content-Type': `image/${screenshotType}`, 'Content-Length': buffer.length, }) .send(buffer) break default: const html = await renderer.render(url, options) res.status(200).send(html) } } catch (e) { next(e) } }) // Error page. app.use((err, req, res, next) => { console.error(err) res.status(500).send('Oops, An expected error seems to have occurred.') }) // Create renderer and start server. createRenderer({ ignoreHTTPSErrors: !!process.env.IGNORE_HTTPS_ERRORS, }) .then(createdRenderer => { renderer = createdRenderer console.info('Initialized renderer.') app.listen(port, () => { console.info(`Listen port on ${port}.`) }) }) .catch(e => { console.error('Fail to initialze renderer.', e) }) // Terminate process process.on('SIGINT', () => { process.exit(0) }) ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/index.html ================================================ {{.Title}}

{{.Title}}

视频链接: Scrapy和Go爬虫速度比较,Go简直太快了!Python很难追上!

在这里用js动态添加a标签和img标签 演示图片:
================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/js_server.go ================================================ /* @File : js_server.go @Time : 2020/02/22 11:32:32 @Author : play4fun @Desc : d */ package main import ( "fmt" "html/template" "net/http" ) func main() { fmt.Println("Open http://127.0.0.1:8888/") tmpl := template.Must(template.ParseFiles("index.html")) data := struct { Title string // Items []string }{ Title: "Js动态页面演示", // Items: []string{ // "My pictures", // "My dialog", // }, } http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { tmpl.Execute(w, data) }) http.ListenAndServe("0.0.0.0:8888", nil) } ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/js_server.py ================================================ # -*- encoding: utf-8 -*- ''' @File : js_server.py @Time : 2020/02/23 09:53:30 @Author : play4fun @Desc : https://www.w3cschool.cn/flask/flask_templates.html ''' from flask import Flask, render_template app = Flask(__name__) @app.route('/', methods=["GET"]) def index(): Title = "Js动态页面演示" return render_template('index.html', Title=Title) if __name__ == '__main__': app.run(host='0.0.0.0',port=8888,debug=True) ================================================ FILE: 2020/2-22-Scrapy-Puppeteer-Js/templates/index.html ================================================ {{Title}}

{{Title}}

视频链接: Scrapy和Go爬虫速度比较,Go简直太快了!Python很难追上!

在这里用js动态添加a标签和img标签 演示图片:
================================================ FILE: 2020/2-23-压力测试-locust/README.md ================================================ # 2-23-压力测试-locust - 视频 [蝗虫来袭!你的服务器顶得住【压力测试】吗?locust](https://www.bilibili.com/video/av91066346/) - 参考 - [locust是一个易于使用的,分布式的,用户负载测试工具](http://blog.timd.cn/python-locust/) - 常用的压力测试有 - Apache ab 命令行工具 - http://httpd.apache.org/docs/2.2/programs/ab.html - Locust 蝗虫 https://locust.io/ - 案例文档 https://docs.locust.io/en/stable/quickstart.html - 安装 pip3 install locust - 好处是 可以编写Python程序,自定义测试流程。有后台界面 - 测试 - ab -c表示并发数 -n表示请求数 - ab -c 50 -n 200 http://127.0.0.1:8080/ - Locust - locust -f locust-get.py - 打开浏览器 http://127.0.0.1:8089/ - 命令行运行 - locust -f locust-get.py --no-web -c 50 -r 200 ================================================ FILE: 2020/2-23-压力测试-locust/locust-get.py ================================================ # -*- encoding: utf-8 -*- ''' @File : locust-get.py @Time : 2020/02/23 12:11:51 @Author : play4fun @Desc : ''' from locust import HttpLocust, TaskSet, task, Locust def get(l): uri = '/' rs = l.client.get(uri) class UserTasks(TaskSet): # 列出需要测试的任务形式一 tasks = [get] # 列出需要测试的任务形式二 # @task # def page404(self): # self.client.get("/does_not_exist") class WebsiteUser(HttpLocust): host = "http://127.0.0.1:8080/" min_wait = 2000 max_wait = 5000 task_set = UserTasks ================================================ FILE: 2020/2-23-压力测试-locust/locust_file.py ================================================ # -*- encoding: utf-8 -*- ''' @File : locust_file.py @Time : 2020/02/23 12:06:03 @Author : play4fun @Desc : ''' from locust import HttpLocust, TaskSet, between def login(l): l.client.post("/login", {"username":"ellen_key", "password":"education"}) def logout(l): l.client.post("/logout", {"username":"ellen_key", "password":"education"}) def index(l): l.client.get("/") def profile(l): l.client.get("/profile") class UserBehavior(TaskSet): tasks = {index: 2, profile: 1} ================================================ FILE: 2020/2-23-压力测试-locust/server.go ================================================ /* 对比 Python 和 Go 语言的每秒请求数 https://www.oschina.net/translate/python-vs-go-requests-per-second curl http://127.0.0.1:8080/ 压力测试 ab -q -c 50 -n 1000 http://127.0.0.1:8080/ */ package main import ( "encoding/json" "fmt" "io" "net/http" "github.com/emicklei/go-restful" ) func main() { ws := new(restful.WebService) ws.Route(ws.GET("/").To(hello)) restful.Add(ws) fmt.Print("Server starting on port 8080\n") fmt.Print("open http://127.0.0.1:8080/\n") http.ListenAndServe(":8080", nil) } func hello(req *restful.Request, resp *restful.Response) { b, _ := json.Marshal(article) io.WriteString(resp, string(b)) } type Article struct { Name string Body string } var article = Article{"A Royal Baby", "A slow news week"} ================================================ FILE: 2020/2-24-Go-Module/README.md ================================================ # Go Module 包管理 - 视频 [Go-Module包管理,怎样import子文件夹的变量或函数?](https://www.bilibili.com/video/av91313893/) - 参考 - [Go Modules 不完全教程](https://learnku.com/go/t/33859) - [Break up go project into subfolders](https://stackoverflow.com/questions/23154898/break-up-go-project-into-subfolders) - 很有用-GitHub 代码 https://github.com/J7mbo/go-subdirectories-with-modules - GitHub - https://github.com/jasonkeene/go-modules-demo - 非常详细 https://github.com/go-modules-by-example/index - 总结 - 同一个文件夹内只能存在一个package,否则编译时会报错。 - go的package不局限于一个文件,可以由多个文件组成。 - 同一个文件夹内的所有文件,所有变量或函数可以互相调用,不分大小写,不得同名 - 子文件夹,也是不同的package ,也可互相导入 - go不要求package的名称和所在目录名相同,但是你最好保持相同,否则容易引起歧义。因为引入包的时候,go会使用子目录名作为包的路径,而你在代码中真正使用时,却要使用你package的名称。 - package与文件夹名相同 - 与Python的区别 - Python通过文件名py来管理导入 - GO通过package来管理导入 - demo 文件夹 - 创建模块 - go mod init a - 生成go.mod - 运行程序 go run . - a.go - package main - 使用a2.go的变量,直接调用 - fmt.Println("a2.go abc2:", abc2) - 使用dir1/b.go的变量 - 变量名要大写 - import "a/dir1" - fmt.Println("dir1/b.go bbb1:", dir1.bbb1) - a2.go - package main - 不能用其他包名 package xxx 会报错 - 变量 var abc2 = 2343 - dir1 - b.go - 不需要创建模块go.mod - package dir1 - 变量 var bbb1 = "b.go bbb1" - 变量名要大写 - b2.go - package dir1 - 函数名第一个字母,大写func T1() - 使用dir2/d2.go的变量 - import "a/dir2" - fmt.Println("dir2/d2.go ddd2:", dir2.ddd2) - dir2 - d2.go - package dir2 - 变量 var ddd2 = "d2.go ddd2" ================================================ FILE: 2020/2-24-Go-Module/demo/a.go ================================================ /* @File : a.go @Time : 2020/02/24 11:42:20 @Author : play4fun @Desc : d */ package main import ( "a/dir1" "a/dir1/dir11" "fmt" ) func main() { //使用a2.go的变量,直接调用 fmt.Println("a2.go abc2:", abc2) // 使用dir1/b.go的变量 // - import "a/dir1" fmt.Println("dir1/b.go bbb1:", dir1.Bbb1) // 使用dir1/b2.go的函数 dir1.T1() //使用子文件夹的子文件夹 fmt.Println("a/dir1/dir11/b11.go B11:", dir11.B11) } ================================================ FILE: 2020/2-24-Go-Module/demo/a2.go ================================================ package main var abc2 = 2343 ================================================ FILE: 2020/2-24-Go-Module/demo/dir1/b.go ================================================ package dir1 // Bbb1 不是同一文件夹同一package引用它,要大写 var Bbb1 = "b.go bbb1" //int_fjdk 同一文件夹同一package引用它,可以小写 var int_fjdk = 234893 ================================================ FILE: 2020/2-24-Go-Module/demo/dir1/b2.go ================================================ package dir1 import ( "a/dir2d" // "a/fdjk" "fmt" ) //T1 备注,函数名第一个字母 func T1() { fmt.Println("b2.go使用b.go:", int_fjdk) // fmt.Println("fdjk:", fdjk.Ddd2) fmt.Println("dir2/d2.go ddd2:", dir2d.Ddd2) } ================================================ FILE: 2020/2-24-Go-Module/demo/dir1/dir11/b11.go ================================================ package dir11 // B11 不是同一文件夹同一package引用它,要大写 var B11 = "b11.go B11" ================================================ FILE: 2020/2-24-Go-Module/demo/dir2d/d2.go ================================================ package dir2d var Ddd2 = "d2.go ddd2" ================================================ FILE: 2020/2-24-Go-Module/demo/dir2d/d21.go ================================================ package dir2d // fdjk //found packages dir2d (d2.go) and fdjk (d21.go) 在同一文件夹 var fj5dk = 324 ================================================ FILE: 2020/2-24-Go-Module/demo/go.mod ================================================ module a go 1.13 ================================================ FILE: 2020/2-26-Go_Proxy_server/README.md ================================================ ## 2-26-最简单的翻墙代理 - 视频 - 失效了。 [越狱?最简单的代理服务器Go,翻过防火墙](https://www.bilibili.com/video/av91817713/) - 百度网盘 - 链接:https://pan.baidu.com/s/15qUFJKDMBDUl6ldlXh-zzQ 密码:jnxi - 今日头条 - https://www.ixigua.com/home/1789618645372350/video/ - 参考 - [chrome 67版本后无法拖拽离线安装CRX格式插件的解决方法](https://chromecj.com/utilities/2018-09/1525.html) - [解决Chrome插件安装时程序包无效:"CRX_HEADER_INVALID"](https://blog.csdn.net/wst0717/article/details/88867047) - 单步调试 - curl -x 127.0.0.1:8081 http://httpbin.org/ip - 交叉编译 Linux - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build . - 部署到服务器 - 端口 - 测试 curl -x 42.56.89.102:8081 https://httpbin.org/ip - host屏蔽域名 www.baidu.com - 切换代理 - 浏览器插件 https://proxy-switchyomega.com/ - 配置 - 因为没有国外服务器,所以用【百度】来演示了。 - 对代理进行【压力测试】? ================================================ FILE: 2020/2-26-Go_Proxy_server/go.mod ================================================ module proxy_server go 1.13 ================================================ FILE: 2020/2-26-Go_Proxy_server/proxy_server.go ================================================ /* @File : proxy_server1.go @Time : 2020/02/24 20:55:11 @Author : play4fun @Desc : d 一个简单的Golang实现的HTTP Proxy https://www.flysnow.org/2016/12/24/golang-http-proxy.html 使用HTTP/1.1协议中的CONNECT方法建立起来的隧道连接,实现的HTTP Proxy。 这种代理的好处就是不用知道客户端请求的数据,只需要原封不动的转发就可以了, 对于处理HTTPS的请求就非常方便了,不用解析他的内容,就可以实现代理。 测试 curl -x 127.0.0.1:8081 http://httpbin.org/ip curl -x 127.0.0.1:8081 https://httpbin.org/ip curl -x 42.56.89.102:8081 https://httpbin.org/ip */ package main import ( "bytes" "fmt" "io" "log" "net" "net/url" "strings" ) func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) l, err := net.Listen("tcp", ":8081") //监听端口 if err != nil { log.Panic(err) } for { client, err := l.Accept() //阻塞 log.Println("新请求") if err != nil { log.Panic(err) } go handleClientRequest(client) } } func handleClientRequest(client net.Conn) { if client == nil { return } defer client.Close() var b [1024]byte n, err := client.Read(b[:]) //读取请求 if err != nil { log.Println(err) return } //解析请求参数 var method, host, address string fmt.Sscanf(string(b[:bytes.IndexByte(b[:], '\n')]), "%s%s", &method, &host) log.Println("Visit: ", host) hostPortURL, err := url.Parse(host) if err != nil { log.Println(err) return } if hostPortURL.Opaque == "443" { //https访问 address = hostPortURL.Scheme + ":443" } else { //http访问 if strings.Index(hostPortURL.Host, ":") == -1 { //host不带端口, 默认80 address = hostPortURL.Host + ":80" } else { address = hostPortURL.Host } } //获得了请求的host和port,就开始拨号吧 server, err := net.Dial("tcp", address) if err != nil { log.Println(err) return } if method == "CONNECT" { fmt.Fprint(client, "HTTP/1.1 200 Connection established\r\n\r\n") } else { server.Write(b[:n]) } //进行转发 go io.Copy(server, client) io.Copy(client, server) } ================================================ FILE: 2020/2-26-多点签到领积分/README.md ================================================ # 多点App签到领积分 - 视频 [写Python自动【多点App签到领积分】,100积分兑换1元钱](https://www.bilibili.com/video/av91889395/) - 积分有什么用 - 下单的时候,使用积分兑换人民币 - 抓包 - 签到 - 领取奖励 - 过滤 appapis - 编写Python程序 - pbpaste |uncurl - 定时执行 每天10点1分 crontab - 1 10 * * * /home/play/.py3/bin/python /home/play/WORK/checkIn.py > /home/play/WORK/checkIn.log ================================================ FILE: 2020/2-26-多点签到领积分/demo1.py ================================================ # -*- encoding: utf-8 -*- ''' @File : demo1.py @Time : 2020/02/26 15:57:31 @Desc : ''' import requests def main(): rs = requests.get("https://appapis.dmall.com/static/userIsCheckIn.jsonp?callback=jQuery22304504064425163671_1582705578650&venderId=1&_=1582705578651", headers={ "Accept": "*/*", "Accept-Language": "zh-cn", "Host": "appapis.dmall.com", "Referer": "https://act.dmall.com/dac/signIn/index.html?dmShowTitleBar=false&dmfrom=wx&bounces=false&dmTransStatusBar=true", "User-Agent": "Mozilla/5.0 (iPod touch; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148Dmall/4.4.7" }, cookies={ "_utm_id": "42631642", "addr": "%E5%8C%97%E4%BA%AC%E5%B8%82%E6%B5%B7%E6%B7%80%E5%8C%BA%E4%B8%89%E7%BB%93%E4%B9%89%E9%BA%BB%E8%BE%A3%E9%BE%99%E8%99%BE%E9%94%A1%E7%BA%B8%E7%83%A7%E7%83%A4", "addrId": "", "appMode": "online", "appVersion": "4.4.7", "areaId": "110108", "bigdata": "", "businessCode": "2", "community": "%E4%B8%89%E7%BB%93%E4%B9%89%E9%BA%BB%E8%BE%A3%E9%BE%99%E8%99%BE%E9%94%A1%E7%BA%B8%E7%83%A7%E7%83%A4", "console_mode": "0", "data_seq": "4", "env": "app", "first_session_time": "1574310210261", "grayStoreId": "11480", "inited": "true", "lat": "40.043306", "lng": "116.185492", "platform": "IOS", "session_id": "66509D2F16AC414399D5FBF955E31E78", "storeGroupV4": "1-11480-1,2-11480-1,1-12672-86", "store_id": "11480", "tdc": "", "tempid": "C8AF4E0FA1D00002B22A17C019BDDDD0", "ticketName": "4484988D798A580F36FBF8455694C40250224A91CB8226F4B464582A6ADE8352947EA08F0657D8645D6D3041216E08E8E78F004AB9A14CAAC4BEACBC5C04C8990EF1D08CCA0B8B55295C1C8D938B8443377C2EECF18F2EC1A9871D44BBB01CA12135F3AC155D0B0E85A8F0C31A8FDAEFA297180361FBAEC03B90BE4AB177D191", "token": "12b731cd-27df-4ab5-b9c4-70bcf628b5fc", "updateTime": "1581561484000", "uuid": "ad5335126ca7762dd08ed9fafc49634de7834f51", "vender_id": "1", "web_session_count": "32" }, ) print(rs) print(rs.headers) print('-'*30) print("Text",rs.text) pass if __name__ == "__main__": main() pass ================================================ FILE: 2020/2-26-多点签到领积分/多点-签到-抓包.txt ================================================ 多点 签到 curl -H 'Host: appapis.dmall.com' -H 'Accept: */*' -H 'Cookie: first_session_time=1574310210261; web_session_count=1; addr=%E5%8C%97%E4%BA%AC%E5%B8%82%E6%B5%B7%E6%B7%80%E5%8C%BA%E7%99%BD%E5%AE%B6%E7%96%83%E5%B0%9A%E5%93%81%E5%9B%AD1%E5%8F%B7%E6%A5%BC; addrId=; appMode=online; appVersion=4.4.7; areaId=110108; bigdata=; businessCode=1; community=%E7%99%BD%E5%AE%B6%E7%96%83%E5%B0%9A%E5%93%81%E5%9B%AD1%E5%8F%B7%E6%A5%BC; env=app; lat=40.043246; lng=116.185641; platform=IOS; session_id=079C552208294D8C9CF5FC6B8604BEB5; storeGroupV4=1-11480-1,2-11480-1; store_id=11480; tdc=; tempid=C8AF4E0FA1D00002B22A17C019BDDDD0; ticketName=4484988D798A580F36FBF8455694C40250224A91CB8226F4B464582A6ADE8352947EA08F0657D8645D6D3041216E08E8E78F004AB9A14CAAC4BEACBC5C04C8990EF1D08CCA0B8B55295C1C8D938B8443377C2EECF18F2EC1A9871D44BBB01CA12135F3AC155D0B0E85A8F0C31A8FDAEFA297180361FBAEC03B90BE4AB177D191; token=12b731cd-27df-4ab5-b9c4-70bcf628b5fc; uuid=ad5335126ca7762dd08ed9fafc49634de7834f51; vender_id=1' -H 'User-Agent: Mozilla/5.0 (iPod touch; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148Dmall/4.4.7' -H 'Accept-Language: zh-cn' -H 'Referer: https://act.dmall.com/dac/signIn/index.html?dmShowTitleBar=false&dmfrom=wx&bounces=false&dmTransStatusBar=true' --compressed 'https://appapis.dmall.com/static/receiveReward.jsonp?callback=jQuery22308167890741502714_1574310205126&phone=17070258828&taskId=24354&isNew=1&_=1574310205134' jQuery22308167890741502714_1574310205126( {'result': {'code': '0000', 'data': {'rewardInfos': [ {'replenishSrc': 2, 'rewardCount': 2, 'rewardItemId': 24252, 'rewardName': '2积分', 'rewardStatus': 4, 'rewardType': 2, 'rewardWay': 4, 'taskId': 24354}, {'batchId': 36369, 'replenishSrc': 2, 'rewardCount': 1, 'rewardItemId': 24253, 'rewardName': '0.1元话费券', 'rewardStatus': 4, 'rewardType': 1, 'rewardWay': 4, 'taskId': 24354}]}, 'msg': '用户领取任务奖励成功'}} ) ================================================ FILE: 2020/2-26-多点签到领积分/多点-领取奖励-抓包.txt ================================================ 领取奖励 curl -H 'Host: appapis.dmall.com' -H 'Accept: */*' -H 'Cookie: first_session_time=1574310210261; web_session_count=1; addr=%E5%8C%97%E4%BA%AC%E5%B8%82%E6%B5%B7%E6%B7%80%E5%8C%BA%E7%99%BD%E5%AE%B6%E7%96%83%E5%B0%9A%E5%93%81%E5%9B%AD1%E5%8F%B7%E6%A5%BC; addrId=; appMode=online; appVersion=4.4.7; areaId=110108; bigdata=; businessCode=1; community=%E7%99%BD%E5%AE%B6%E7%96%83%E5%B0%9A%E5%93%81%E5%9B%AD1%E5%8F%B7%E6%A5%BC; env=app; lat=40.043246; lng=116.185641; platform=IOS; session_id=079C552208294D8C9CF5FC6B8604BEB5; storeGroupV4=1-11480-1,2-11480-1; store_id=11480; tdc=; tempid=C8AF4E0FA1D00002B22A17C019BDDDD0; ticketName=4484988D798A580F36FBF8455694C40250224A91CB8226F4B464582A6ADE8352947EA08F0657D8645D6D3041216E08E8E78F004AB9A14CAAC4BEACBC5C04C8990EF1D08CCA0B8B55295C1C8D938B8443377C2EECF18F2EC1A9871D44BBB01CA12135F3AC155D0B0E85A8F0C31A8FDAEFA297180361FBAEC03B90BE4AB177D191; token=12b731cd-27df-4ab5-b9c4-70bcf628b5fc; uuid=ad5335126ca7762dd08ed9fafc49634de7834f51; vender_id=1' -H 'User-Agent: Mozilla/5.0 (iPod touch; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148Dmall/4.4.7' -H 'Accept-Language: zh-cn' -H 'Referer: https://act.dmall.com/dac/signIn/index.html?dmShowTitleBar=false&dmfrom=wx&bounces=false&dmTransStatusBar=true' --compressed 'https://appapis.dmall.com/static/queryUserCheckInfo.jsonp?callback=jQuery22308167890741502714_1574310205126&isNew=1&phone=17070258828&apiVersion=4.4.7&platform=IOS&venderId=1&storeId=11480&addressId=&longitude=116.185641&latitude=40.043246&nowLongitude=&nowLatitude=&_=1574310205135' jQuery22308167890741502714_1574310205126({'result':{"code":"0000","data":{"afterSignInImg":"common/c5bb5335-218c-4a04-9f8d-18f99dd9a74b","beforSignInImg":"common/2818e420-650c-4712-b72a-a7a7cd9433be","checkInCalendar":[],"checkInUserCount":500067,"currentCommonAddProgress":[],"currentMonthAddProgress":[{"activityId":383,"hidden":false,"progressBar":1,"requiredTimes":15,"rewardFinished":false,"rewards":[{"rewardCode":"33394","rewardCount":15,"rewardItemId":24258,"rewardName":"15积分","rewardType":2,"rewardWay":4,"taskId":24359}],"status":1,"taskId":24359,"type":2,"userId":102173490},{"activityId":383,"hidden":false,"progressBar":1,"requiredTimes":20,"rewardFinished":false,"rewards":[{"rewardCode":"33396","rewardCount":15,"rewardItemId":24259,"rewardName":"15积分","rewardType":2,"rewardWay":4,"taskId":24360}],"status":1,"taskId":24360,"type":2,"userId":102173490},{"activityId":383,"hidden":false,"progressBar":1,"requiredTimes":30,"rewardFinished":false,"rewards":[{"rewardCode":"33398","rewardCount":50,"rewardItemId":24260,"rewardName":"50积分","rewardType":2,"rewardWay":4,"taskId":24361}],"status":1,"taskId":24361,"type":2,"userId":102173490}],"currentMonthAddUpDays":1,"currentMonthContinueProgress":[{"activityId":383,"hidden":false,"progressBar":1,"requiredTimes":1,"rewardFinished":true,"rewards":[{"rewardCode":"33382","rewardCount":2,"rewardItemId":24252,"rewardName":"2积分","rewardType":2,"rewardWay":4,"taskId":24354},{"rewardCode":"33384","rewardCount":1,"rewardItemId":24253,"rewardName":"0.1元话费券","rewardType":1,"rewardWay":4,"taskId":24354}],"status":3,"taskId":24354,"type":3,"userId":102173490},{"activityId":383,"hidden":false,"progressBar":1,"requiredTimes":3,"rewardFinished":false,"rewards":[{"rewardCode":"33386","rewardCount":8,"rewardItemId":24254,"rewardName":"8积分","rewardType":2,"rewardWay":4,"taskId":24356},{"rewardCode":"33388","rewardCount":1,"rewardItemId":24255,"rewardName":"0.3元话费券","rewardType":1,"rewardWay":4,"taskId":24356}],"status":1,"taskId":24356,"type":3,"userId":102173490},{"activityId":383,"hidden":false,"progressBar":1,"requiredTimes":7,"rewardFinished":false,"rewards":[{"rewardCode":"33392","rewardCount":10,"rewardItemId":24257,"rewardName":"10积分","rewardType":2,"rewardWay":4,"taskId":24358},{"rewardCode":"33390","rewardCount":1,"rewardItemId":24256,"rewardName":"1张补签卡\t","rewardType":8,"rewardWay":4,"taskId":24358}],"status":1,"taskId":24358,"type":3,"userId":102173490}],"currentMonthContinuousDays":1,"currentTime":1574310218540,"dailyRanking":500002,"firstTimeSignInProgress":[],"hasCheckIn":true,"image":"/userIcon/201904/67e25b4e-0546-4951-aa40-b4e79023958c","notCurrentMonthAddProgress":[],"notCurrentMonthCommonAddProgress":[],"notCurrentMonthContinueProgress":[],"reCheckNum":0,"ruleUrl":"https://a.dmall.com/act/4QiMB0Iv6ZjRd.html","score":34,"showCheckInManager":true,"signInBackgroundDefaultImg":"common/fa977ce6-b2de-45c2-a22c-59fde64b91ca","signInManagerContext":"每天上午10点提醒,让您不错过每一个签到奖励!","signInManagerTip":"(只有打开推送选项,才能启动该功能)","signInManagerTitle":"签到小管家","switchOn":0,"taskCenterUrl":"app://DMMyVIPPage?scrollToTask=true","taskFinishUserCount":510862,"topSignAction":[{"imgUrl":"https://download.dmallcdn.com/837e350188034a319bfb65248a120c22.png","name":"北京物美-230.png","timestamp":"1574310206087","url":"https://atlas.dmall.com/click?ext=aHR0cHM6Ly90LmRtYWxsLmNvbS8yeFZlYnc=&log=eyJhZGNyZWF0aXZlSWQiOiIxMzc0IiwiYWRjcmVhdGl2ZVR5cGUiOiIxIiwiYWRwbGFuSWQiOiIzMDYiLCJhZHVuaXRJZCI6IjEzNTciLCJhcGlWZXJzaW9uIjoiMS4wIiwiYXBwVmVyc2lvbiI6IkFUTC1EbWEtUzFMT3dMeTAiLCJsb2dJZCI6IjcyZjEwY2E3LWU0ZjQtNDJmZi05ZDhlLTMwMWM3YzQ2MmE3OCIsInByb2plY3QiOiJhdGxhc19yZXBvcnRfZGF0YSIsInN5c3RlbSI6ImF0bGFzLmRtYWxsLmNvbSJ9"},{"imgUrl":"https://download.dmallcdn.com/2f58a534684a440ca5c7bf0b2100dd85.png","name":"常规.png","timestamp":"1574310206087","url":"https://atlas.dmall.com/click?ext=aHR0cHM6Ly9hLmRtYWxsLmNvbS9hY3QvelQwZTdqdUFGNUsuaHRtbD9ub3Bvcz0xJnRwYz1hXzE1Mjgx&log=eyJhZGNyZWF0aXZlSWQiOiIxNjI5IiwiYWRjcmVhdGl2ZVR5cGUiOiIxIiwiYWRwbGFuSWQiOiIzMDUiLCJhZHVuaXRJZCI6IjE2MjMiLCJhcGlWZXJzaW9uIjoiMS4wIiwiYXBwVmVyc2lvbiI6IkFUTC1EbWEtUFZURzhySmsiLCJsb2dJZCI6ImM5MmQxZWIzLTI0NzktNDM0Ny04MGNmLWRkZTZhODQ0MTI2OSIsInByb2plY3QiOiJhdGxhc19yZXBvcnRfZGF0YSIsInN5c3RlbSI6ImF0bGFzLmRtYWxsLmNvbSJ9"},{"imgUrl":"https://download.dmallcdn.com/6c80a18f94a440e8ac39323e5da27750.png","name":"光大.png","timestamp":"1574310206087","url":"https://atlas.dmall.com/click?ext=aHR0cHM6Ly9hLmRtYWxsLmNvbS9hY3QvRnFKam9DWUs4VXhRcndXLmh0bWw=&log=eyJhZGNyZWF0aXZlSWQiOiI0NDEiLCJhZGNyZWF0aXZlVHlwZSI6IjEiLCJhZHBsYW5JZCI6IjIzNSIsImFkdW5pdElkIjoiNDI1IiwiYXBpVmVyc2lvbiI6IjEuMCIsImFwcFZlcnNpb24iOiJBVEwtRG1hLVlBeGEyY21rIiwibG9nSWQiOiJhNmU3ZGJiZi02MmE3LTQxZDctODMyNC05ODZkMzBmYTYwMGIiLCJwcm9qZWN0IjoiYXRsYXNfcmVwb3J0X2RhdGEiLCJzeXN0ZW0iOiJhdGxhcy5kbWFsbC5jb20ifQ=="},{"imgUrl":"https://download.dmallcdn.com/1b9685d5059049758219297294ceb6b6.png","name":"124.png","timestamp":"1574310206087","url":"https://atlas.dmall.com/click?ext=aHR0cHM6Ly90LmRtYWxsLmNvbS96NUNORTk=&log=eyJhZGNyZWF0aXZlSWQiOiI5MzAiLCJhZGNyZWF0aXZlVHlwZSI6IjEiLCJhZHBsYW5JZCI6IjMwMyIsImFkdW5pdElkIjoiOTEzIiwiYXBpVmVyc2lvbiI6IjEuMCIsImFwcFZlcnNpb24iOiJBVEwtRG1hLVA0QkoyY0pnIiwibG9nSWQiOiJlYjRiNzYxNi0xYWU3LTQ1OWMtYjkxMi1mOGY2ZDkzYzRiZWIiLCJwcm9qZWN0IjoiYXRsYXNfcmVwb3J0X2RhdGEiLCJzeXN0ZW0iOiJhdGxhcy5kbWFsbC5jb20ifQ=="}],"userCheckInRecord":[{"checkInDate":1574310206000,"created":1574310205000,"ranking":500002,"reCheckInFlag":-1,"userId":102173490}]},"msg":"获取连续和累计签到数据成功"}}) ================================================ FILE: 2020/2-29-Docker-WeChat/README.md ================================================ ## 在Docker 运行 微信Windows版 - 视频 [微信营销?在Docker运行微信Windows版,机器人自动回复淘口令](https://www.bilibili.com/video/av92594352) - 参考 - [DoChat-Dockerized WeChat (盒装微信) ](https://github.com/huan/docker-wechat) - https://hub.docker.com/r/zixia/wechat - docker pull zixia/wechat - https://github.com/bestwu/docker-wechat - 2019年10月17日[Linux 下 完美运行 wechat](https://www.kpromise.top/run-wechat-in-linux/) - 本镜像基于深度操作系统 https://hub.docker.com/r/bestwu/wechat - docker pull bestwu/wechat - 要求 - Ubuntu19.10,我使用VMware虚拟机 - 安装Docker - sudo apt update && apt install docker.io - 微信测试账号 - 新建DoChat和WeChatFiles文件夹 - 检查输出 - sudo docker logs -f --tail 30 wechat ``` sudo docker run -d --name wechat --device /dev/snd \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $HOME/WeChatFiles:/WeChatFiles \ -e DISPLAY=unix$DISPLAY \ -e XMODIFIERS=@im=fcitx \ -e QT_IM_MODULE=fcitx \ -e GTK_IM_MODULE=fcitx \ -e AUDIO_GID=`getent group audio | cut -d: -f3` \ -e GID=`id -g` \ -e UID=`id -u` \ bestwu/wechat ``` ================================================ FILE: 2020/2-3-Chrome-extensions/README.md ================================================ - 视频: [谷歌浏览器插件开发-文章关键词高亮显示](https://www.bilibili.com/video/av86550145/) ================================================ FILE: 2020/2-3-Chrome-extensions/content_scripts和background的消息传递.md ================================================ - 视频: https://blog.csdn.net/qq_35430000/article/details/79421544 4.3. background 后台(姑且这么翻译吧),是一个常驻的页面,它的生命周期是插件中所有类型页面中最长的,它随着浏览器的打开而打开,随着浏览器的关闭而关闭,所以通常把需要一直运行的、启动就运行的、全局的代码放在background里面。 background的权限非常高,几乎可以调用所有的Chrome扩展API(除了devtools),而且它可以无限制跨域,也就是可以跨域访问任何网站而无需要求对方设置CORS。 然后会生成一个.crx文件,要发布到Google应用商店的话需要先登录你的Google账号,然后花5个$注册为开发者,本人太穷,就懒得亲自验证了,有发布需求的自己去整吧。 插件要实现一些ajax请求,都得通通搬到background里实现。 - 消息传递 参考 - [Message Passing](https://developer.chrome.com/extensions/messaging) - 长连接 Long-lived connections - chrome.runtime.sendMessage的回调函数默认是同步的,而且超时后直接执行,返回undefined,如果要异步执行,必须在处理函数中return true - https://blog.csdn.net/anjingshen/article/details/75579521 ================================================ FILE: 2020/2-3-Chrome-extensions/参考.md ================================================ - 参考文章 - 简单-[谷歌浏览器插件开发](https://blog.csdn.net/u012865381/article/details/78645215) - 齐全详细 [Chrome插件(扩展)开发全攻略(干货)](https://blog.csdn.net/qq_35430000/article/details/79421544) - 本文所有涉及到的大部分代码均在这个demo里面:https://github.com/sxei/chrome-plugin-demo - [一篇文章教你顺利入门和开发chrome扩展程序(插件)](https://juejin.im/post/5c135a275188257284143418) - [谷歌(Chrome)浏览器插件开发教程](https://www.jianshu.com/p/51c650f98d9c) - 开源插件 - 简悦 ( SimpRead ) - 让你瞬间进入沉浸式阅读的扩展 http://ksria.com/simpread - https://github.com/Kenshin/simpread - [双击单词高亮](https://github.com/qishibo/highlightCode ) - 1 - [基于Chrome插件实现支持CORS的本地开发代理](https://juejin.im/post/5b4c821c6fb9a04f9c43b700) - [Chrome插件fetch被CORB拦截](https://segmentfault.com/q/1010000018608266) - [Cross-Origin Read Blocking (CORB)](https://juejin.im/post/5cc2e3ecf265da03904c1e06) - [Flask: Ajax 设置Access-Control-Allow-Origin实现跨域访问;Ajax页面底部自动加载](https://blog.csdn.net/Kevin_QQ/article/details/51761654) - [How to avoid Cross-Origin Read Blocking(CORB) in a chrome web extension](https://stackoverflow.com/questions/54786635/how-to-avoid-cross-origin-read-blockingcorb-in-a-chrome-web-extension) - [HTML色彩表格工具](https://html-color-codes.info/chinese/) - [javascript 查找文本并高亮显示](https://www.cnblogs.com/joyho/articles/3510388.html) ================================================ FILE: 2020/2-4-App-Store/怎样做一个像 【七麦数据】那样的网站.txt ================================================ 怎样做一个像 【七麦数据】那样的网站? https://www.qimai.cn/ - 视频: [怎样抓取AppStore数据?做一个【七麦数据】网站,赚广告费](https://www.bilibili.com/video/av86658720/) - 获取数据 从App Store获取数据 iPhone越狱,抓包 购买别人已经越狱好的iPhone 抓包工具 Charles Fiddler Wireshark App Store的数据接口 node.js 模块 1.榜单列表 2.关键词 关键词 流行度 3.根据关键词搜索App,得到App列表 4.App列表->获取App信息(关键词),评分ratings 5.根据关键词搜索App,刷广告列表。目的1:有哪些App投放了广告,目的2:自己投放的广告,有没有展示 6.某App想投放广告,可以看一下自己的关键词有哪些App竞争对手,投放了多少广告 7.广告后台,编写算法,App-关键词的关系,精准投放广告。赚取 广告费。用户搜索App时,会出现广告 8.App趋势报告,排名,类别内排名 不同国家 爬虫架构 scrapy+Redis+MongoDB IP代理,购买服务,或自己搭建Squid代理服务-阿里云每个服务器可以领取20个IP 有瓶颈 解决: 异步asyncio Go语言,很快 数据库 MongoDB 数据很增长很快 网站架构 Nginx+Tomcat+Spring+MySQL+缓存 前端 vue ================================================ FILE: 2020/2-4-App-Store/苹果 接口 node-js.txt ================================================ 苹果 接口 node.js 苹果App store 抓取API https://github.com/facundoolano/app-store-scraper 安装 npm install -g app-store-scraper (.py3) localhost:~ play$ npm install -g app-store-scraper + app-store-scraper@0.16.2 added 93 packages from 164 contributors in 5.22s https://itunes.apple.com/lookup?id=962194608 测试 命令行输入node var store = require('app-store-scraper'); store.app({id: 553834731}).then(console.log).catch(console.log); store.list({ collection: store.collection.TOP_FREE_IPAD, category: store.category.GAMES_ACTION, num: 2 }).then(console.log).catch(console.log); store.search({ term: 'panda', num: 2, page: 3, country : 'cn', lang: 'lang' }).then(console.log).catch(console.log); store.reviews({ appId: 'com.midasplayer.apps.candycrushsaga', sort: store.sort.HELPFUL, page: 2 }).then(console.log).catch(console.log); store.ratings({ appId: '962194608', }).then(console.log).catch(console.log); ================================================ FILE: 2020/2-5-Go语言入门/README.md ================================================ ## Go语言快速入门上手-资料参考 - 视频: [最快的Go语言入门指南!!资料参考](https://www.bilibili.com/video/av86957359/) - 安装参考 https://www.jianshu.com/p/79bdd20c46cf - 设置环境变量 GOPROXY="https://goproxy.cn" - 编译器IDE - vscode 免费,要安装插件 - Goland 需要破解 https://www.jetbrains.com/go/ - Sublime 免费,不友好,没有代码提示 - 学习资料 - [Go by Example 中文](https://books.studygolang.com/gobyexample/) - https://gobyexample.com/ - 代码 https://github.com/mmcgrana/gobyexample - 官方example - https://github.com/golang/example/ - Go并发编程实战 https://github.com/gopcp/example.v2 - Go语言实战 https://github.com/goinaction/code ================================================ FILE: 2020/2-5-TTS-Moviepy/README.md ================================================ - 视频: [营销号利器?讯飞语音合成TTS+Moivepy=自动合成视频](https://www.bilibili.com/video/av86838467/) ================================================ FILE: 2020/2-5-TTS-Moviepy/TTS/Install.txt ================================================ 安装 pip3 install websocket pip3 install websocket_client ================================================ FILE: 2020/2-5-TTS-Moviepy/TTS/config.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020-01-18 20:29 # @File : config.py """ config.py: """ APPID = 'x' APIKey = 'x' APISecret = 'x' ================================================ FILE: 2020/2-5-TTS-Moviepy/TTS/xf_service.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020-01-18 20:25 # @File : xf_service.py """ xf_service.py: """ # import websocket from websocket import create_connection import datetime import hashlib import base64 import hmac import json from urllib.parse import urlencode import os from wsgiref.handlers import format_date_time from datetime import datetime from time import mktime class XFtts(object): # 初始化 def __init__(self, APPID, APIKey, APISecret, ): self.APPID = APPID self.APIKey = APIKey self.APISecret = APISecret # self.Text = Text # 公共参数(common) self.CommonArgs = {"app_id": self.APPID} # 业务参数(business),更多个性化参数可在官网查看 self.BusinessArgs = {"aue": "raw", "auf": "audio/L16;rate=16000", "vcn": "xiaoxue", "tte": "utf8", "ent": "aisound"}#TODO # self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-8')), "UTF8")} # 使用小语种须使用以下方式,此处的unicode指的是 utf16小端的编码方式,即"UTF-16LE"” # self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-16')), "UTF8")} # self.url = self.create_url() # 生成url def create_url(self): url = 'wss://tts-api.xfyun.cn/v2/tts' # 生成RFC1123格式的时间戳 now = datetime.now() date = format_date_time(mktime(now.timetuple())) # 拼接字符串 signature_origin = "host: " + "ws-api.xfyun.cn" + "\n" signature_origin += "date: " + date + "\n" signature_origin += "GET " + "/v2/tts " + "HTTP/1.1" # 进行hmac-sha256进行加密 signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'), digestmod=hashlib.sha256).digest() signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8') authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % ( self.APIKey, "hmac-sha256", "host date request-line", signature_sha) authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8') # 将请求的鉴权参数组合为字典 # authorization='YXBpX2tleT0iODc1YmQ5OGNmOTJmZTE0OGQxNDU5ODFiZjZmNGJhMGEiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0ia3RlelJoV2lMS2tvbW9rbXcxZDhvZ1Q5WE5Obld1ZWhqcjFWUVhleFZkTT0i' v = { "authorization": authorization, "date": date, "host": "ws-api.xfyun.cn" } # 拼接鉴权参数,生成url url = url + '?' + urlencode(v) # print("date: ", date) # print("v: ", v) # 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致 # print('websocket url :', url) # url='wss://tts-api.xfyun.cn/v2/tts?authorization=YXBpX2tleT0iODc1YmQ5OGNmOTJmZTE0OGQxNDU5ODFiZjZmNGJhMGEiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iU0hnZ1lLa2c4Y0xUV25BdTNTNGkwak90YzhYNnM1WENrTFFIUHRLekc0VT0i&date=Sat,%2004%20Jan%202020%2004:19:03%20GMT&host=ws-api.xfyun.cn' return url def say(self, sentens,speaker='xiaoxue'):#发音人 print(sentens) text = str(base64.b64encode(sentens.encode('utf-8')), "UTF8") # print(text) self.BusinessArgs['vcn']=speaker Data = {"status": 2, "text": text} d = {"common": self.CommonArgs, "business": self.BusinessArgs, "data": Data, }#传参 dt = json.dumps(d) print(d) # if not ws.connected: # print('重新连接ws') # # uri = wsParam.create_url() # ws = create_connection(uri) ws = create_connection(self.create_url()) ws.send(dt) print('-' * 30) print('接收信息') audiosum = bytes() while True: message = ws.recv() # print(message) try: message = json.loads(message) code = message["code"] sid = message["sid"] audio = message["data"]["audio"] audio = base64.b64decode(audio) status = message["data"]["status"] if status == 2: audiosum += audio print("ws is closed") ws.close() # wav_path = f'./wav-{index}.wav' # wav_path = f'{dir}/{index}.wav' # with wave.open(wav_path, 'wb') as wavfile: # wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE')) # wavfile.writeframes(audiosum) # TODO byteIO ? # print('写入 ', wav_path) # rsd[index] = {'sentens': sentens, 'file': wav_path} return audiosum # break if code != 0: errMsg = message["message"] print("sid:%s call error:%s code is:%s" % (sid, errMsg, code)) else: audiosum += audio continue except Exception as e: print("receive msg,but parse exception:", e) pass def tts_say_wave(wav_path,text): import wave from config import APIKey, APISecret, APPID wsParam = XFtts(APPID=APPID, APIKey=APIKey, APISecret=APISecret, ) audiosum = wsParam.say(text) # audiosum += audio with wave.open(wav_path, 'wb') as wavfile: wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE')) wavfile.writeframes(audiosum) print('写入 ', wav_path) pass def main(): wav_path = f'test1.wav' text = '而除了靠免费盗版片获取流量,以广告等方式变现的途径外,更直接的盈利方式就是直接售卖盗版资源。2019年4月,媒体报道称河南公安机关已打击2个制作销售高清盗版电影的犯罪团伙,截止案发,这2个团伙共制作盗版影片320余部,初步估算非法获利700余万元。' tts_say_wave(wav_path,text) pass if __name__ == '__main__': main() ================================================ FILE: 2020/2-5-TTS-Moviepy/TTS/语音合成自动视频.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 讯飞语音合成TTS+Moivepy=自动合成视频" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "from moviepy.editor import AudioFileClip,ImageClip,ImageSequenceClip,CompositeVideoClip,TextClip,concatenate_videoclips\n", "import os" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['黄鹤楼送孟浩然之广陵', '唐代:李白', '故人西辞黄鹤楼,', '烟花三月下扬州。', '孤帆远影碧空尽,', '唯见长江天际流。']" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#https://so.gushiwen.org/search.aspx?value=%E9%BB%84%E9%B9%A4%E6%A5%BC\n", "txt='''黄鹤楼送孟浩然之广陵\n", "唐代:李白\n", "故人西辞黄鹤楼,\n", "烟花三月下扬州。\n", "孤帆远影碧空尽,\n", "唯见长江天际流。'''\n", "tl=txt.split('\\n')\n", "tl" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "from xf_service import tts_say_wave" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "黄鹤楼送孟浩然之广陵\n", "{'common': {'app_id': '4f979d67'}, 'business': {'aue': 'raw', 'auf': 'audio/L16;rate=16000', 'vcn': 'xiaoxue', 'tte': 'utf8', 'ent': 'aisound'}, 'data': {'status': 2, 'text': '6buE6bmk5qW86YCB5a2f5rWp54S25LmL5bm/6Zm1'}}\n", "------------------------------\n", "接收信息\n", "ws is closed\n", "写入 wav/poem-0.wav\n", "唐代:李白\n", "{'common': {'app_id': '4f979d67'}, 'business': {'aue': 'raw', 'auf': 'audio/L16;rate=16000', 'vcn': 'xiaoxue', 'tte': 'utf8', 'ent': 'aisound'}, 'data': {'status': 2, 'text': '5ZSQ5LujOuadjueZvQ=='}}\n", "------------------------------\n", "接收信息\n", "ws is closed\n", "写入 wav/poem-1.wav\n", "故人西辞黄鹤楼,\n", "{'common': {'app_id': '4f979d67'}, 'business': {'aue': 'raw', 'auf': 'audio/L16;rate=16000', 'vcn': 'xiaoxue', 'tte': 'utf8', 'ent': 'aisound'}, 'data': {'status': 2, 'text': '5pWF5Lq66KW/6L6e6buE6bmk5qW877yM'}}\n", "------------------------------\n", "接收信息\n", "ws is closed\n", "写入 wav/poem-2.wav\n", "烟花三月下扬州。\n", "{'common': {'app_id': '4f979d67'}, 'business': {'aue': 'raw', 'auf': 'audio/L16;rate=16000', 'vcn': 'xiaoxue', 'tte': 'utf8', 'ent': 'aisound'}, 'data': {'status': 2, 'text': '54Of6Iqx5LiJ5pyI5LiL5oms5bee44CC'}}\n", "------------------------------\n", "接收信息\n", "ws is closed\n", "写入 wav/poem-3.wav\n", "孤帆远影碧空尽,\n", "{'common': {'app_id': '4f979d67'}, 'business': {'aue': 'raw', 'auf': 'audio/L16;rate=16000', 'vcn': 'xiaoxue', 'tte': 'utf8', 'ent': 'aisound'}, 'data': {'status': 2, 'text': '5a2k5biG6L+c5b2x56Kn56m65bC977yM'}}\n", "------------------------------\n", "接收信息\n", "ws is closed\n", "写入 wav/poem-4.wav\n", "唯见长江天际流。\n", "{'common': {'app_id': '4f979d67'}, 'business': {'aue': 'raw', 'auf': 'audio/L16;rate=16000', 'vcn': 'xiaoxue', 'tte': 'utf8', 'ent': 'aisound'}, 'data': {'status': 2, 'text': '5ZSv6KeB6ZW/5rGf5aSp6ZmF5rWB44CC'}}\n", "------------------------------\n", "接收信息\n", "ws is closed\n", "写入 wav/poem-5.wav\n", "[('wav/poem-0.wav', '黄鹤楼送孟浩然之广陵'), ('wav/poem-1.wav', '唐代:李白'), ('wav/poem-2.wav', '故人西辞黄鹤楼,'), ('wav/poem-3.wav', '烟花三月下扬州。'), ('wav/poem-4.wav', '孤帆远影碧空尽,'), ('wav/poem-5.wav', '唯见长江天际流。')]\n" ] } ], "source": [ "#先TTS,生成语音文件\n", "poem_wav=[]\n", "for index,sens in enumerate(tl):\n", " fp=f'wav/poem-{index}.wav'\n", " tts_say_wave(fp,sens)\n", " poem_wav.append((fp,sens))\n", "print(poem_wav)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "1.图片轮播\n", "2.音频合并,追加\n", "3.图片,音频合并" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['images/242.jpg', 'images/241.jpg', 'images/243.jpg', 'images/240.jpg']\n", "['images/240.jpg', 'images/241.jpg', 'images/242.jpg', 'images/243.jpg']\n" ] } ], "source": [ "images=[f'images/{img}' for img in os.listdir('images') if img.endswith('jpg') ]\n", "print(images)\n", "images=sorted(images)\n", "print(images)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(6, 4)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(tl),len(images)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "font='Microsoft-YaHei'" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "wav/poem-0.wav 黄鹤楼送孟浩然之广陵\n", "wav/poem-1.wav 唐代:李白\n", "wav/poem-2.wav 故人西辞黄鹤楼,\n", "wav/poem-3.wav 烟花三月下扬州。\n", "wav/poem-4.wav 孤帆远影碧空尽,\n", "wav/poem-5.wav 唯见长江天际流。\n" ] } ], "source": [ "acList=[]\n", "for index,(fp,title) in enumerate(poem_wav):\n", " print(fp,title)\n", " #图片+字幕+声音\n", " tc=TextClip(title, font=font, fontsize=30, color='white').set_pos(('center','bottom'))\n", " ac=AudioFileClip(fp)\n", " #每隔几个声音再更换相片\n", " im=ImageClip(images[index%len(images)]).resize(height=576,width=720)\n", " im2=im.set_audio(ac).set_duration(ac.duration)\n", " cv=CompositeVideoClip([im2,tc])\n", " cv2=cv.set_duration(im2.duration).resize(height=576,width=720)\n", " \n", " acList.append(cv2)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "acList" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "chunk: 12%|█▏ | 32/278 [00:00<00:00, 318.93it/s, now=None]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Moviepy - Building video hhl.mp4.\n", "MoviePy - Writing audio in %s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "t: 1%| | 3/302 [00:00<00:10, 27.47it/s, now=None] " ] }, { "name": "stdout", "output_type": "stream", "text": [ "MoviePy - Done.\n", "Moviepy - Writing video hhl.mp4\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " \r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Moviepy - Done !\n", "Moviepy - video ready hhl.mp4\n" ] } ], "source": [ "#合成视频\n", "final_video= concatenate_videoclips(acList,method=\"compose\")\n", "final_video.resize(height=576,width=720).write_videofile(\"hhl.mp4\",fps=24)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: 2020/2-6-BT_Torrent/README.md ================================================ # BT下载Torrent - 视频: [程序员怎样BT下载?宅男不难](https://www.bilibili.com/video/av87059432/) - 3种编程方式 - Python - Node.js - Go - 平时我们都是使用迅雷-BitTorrent下载Torrent - 程序员是怎样下载Torrent的? - 可以搭建Aria2 离线下载服务 ## Python - https://github.com/makelove/True_Artificial_Intelligence/tree/master/Python/BT_libtorrent ## Node.js - WebTorrent (torrents on the web) 在浏览器里BT下载 - 官网 https://webtorrent.io/ - 在线文件传输和BT下载 https://instant.io/ - GitHub代码 https://github.com/webtorrent/webtorrent ## Go - https://github.com/anacrolix/torrent - 完整功能的BitTorrent客户端 - 文档 https://godoc.org/github.com/anacrolix/torrent - 案例 - 看cmd文件夹 - 操作 - 把BT种子转成磁链接 - 通过磁链接下载文件 ================================================ FILE: 2020/2-6-Spider-Speed-test/README.md ================================================ # 爬虫速度比较 - 视频:[Python和Go爬虫速度比较,Go简直太快了!Python很难追上!](https://www.bilibili.com/video/av87182685/) 常用框架 - Python - Scrapy - Go - gocolly - 网络服务 - 程序go HTTP Server - 本地运行 - 编写爬虫代码 - Scrapy - gocolly - 速度比较 - 计算方法 item/minute ================================================ FILE: 2020/2-6-Spider-Speed-test/go_spider ================================================ [File too large to display: 13.7 MB] ================================================ FILE: 2020/2-6-Spider-Speed-test/go_spider.go ================================================ /* @Time : 2020/2/6 15:17 @File : go_spider.go */ package main import ( "github.com/gocolly/colly" "log" "fmt" "time" ) func main() { log.Println("Start") start := time.Now() counter:=0 c:=colly.NewCollector( colly.Async(true), )//异步 c.AllowURLRevisit=true c.OnResponse(func(r *colly.Response) { fmt.Println("OnResponse Visited", r.Request.URL) fmt.Println(string(r.Body[:])) counter+=1 }) url := "http://127.0.0.1:8080/" for a := 0; a < 400; a++ { //fmt.Println(a) c.Visit(url) } c.Wait() end := time.Now() dlt:=end.Sub(start) speed:=float64(counter)/dlt.Minutes() fmt.Println("速度:",speed," item/minute ,",counter,dlt.Minutes()) //速度: 149258.717455393 item/minute 995 0.0066662773 } ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/README.md ================================================ 运行 ```shell script (.py3) localhost:2-6-Spider-Speed-test play$ cd scrapy_demo/ (.py3) localhost:scrapy_demo play$ ls . .. .DS_Store .idea README.md scrapy.cfg scrapy_demo (.py3) localhost:scrapy_demo play$ scrapy crawl example -s CLOSESPIDER_ITEMCOUNT=100 2020-02-18 20:32:04 [scrapy.utils.log] INFO: Scrapy 1.7.3 started (bot: scrapy_demo) ``` ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy.cfg ================================================ # Automatically created by: scrapy startproject # # For more information about the [deploy] section see: # https://scrapyd.readthedocs.io/en/latest/deploy.html [settings] default = scrapy_demo.settings [deploy] #url = http://localhost:6800/ project = scrapy_demo ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy_demo/__init__.py ================================================ ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy_demo/items.py ================================================ # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # https://docs.scrapy.org/en/latest/topics/items.html import scrapy class ScrapyDemoItem(scrapy.Item): # define the fields for your item here like: json = scrapy.Field() pass ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy_demo/middlewares.py ================================================ # -*- coding: utf-8 -*- # Define here the models for your spider middleware # # See documentation in: # https://docs.scrapy.org/en/latest/topics/spider-middleware.html from scrapy import signals class ScrapyDemoSpiderMiddleware(object): # Not all methods need to be defined. If a method is not defined, # scrapy acts as if the spider middleware does not modify the # passed objects. @classmethod def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls() crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s def process_spider_input(self, response, spider): # Called for each response that goes through the spider # middleware and into the spider. # Should return None or raise an exception. return None def process_spider_output(self, response, result, spider): # Called with the results returned from the Spider, after # it has processed the response. # Must return an iterable of Request, dict or Item objects. for i in result: yield i def process_spider_exception(self, response, exception, spider): # Called when a spider or process_spider_input() method # (from other spider middleware) raises an exception. # Should return either None or an iterable of Request, dict # or Item objects. pass def process_start_requests(self, start_requests, spider): # Called with the start requests of the spider, and works # similarly to the process_spider_output() method, except # that it doesn’t have a response associated. # Must return only requests (not items). for r in start_requests: yield r def spider_opened(self, spider): spider.logger.info('Spider opened: %s' % spider.name) class ScrapyDemoDownloaderMiddleware(object): # Not all methods need to be defined. If a method is not defined, # scrapy acts as if the downloader middleware does not modify the # passed objects. @classmethod def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls() crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s def process_request(self, request, spider): # Called for each request that goes through the downloader # middleware. # Must either: # - return None: continue processing this request # - or return a Response object # - or return a Request object # - or raise IgnoreRequest: process_exception() methods of # installed downloader middleware will be called return None def process_response(self, request, response, spider): # Called with the response returned from the downloader. # Must either; # - return a Response object # - return a Request object # - or raise IgnoreRequest return response def process_exception(self, request, exception, spider): # Called when a download handler or a process_request() # (from other downloader middleware) raises an exception. # Must either: # - return None: continue processing this exception # - return a Response object: stops process_exception() chain # - return a Request object: stops process_exception() chain pass def spider_opened(self, spider): spider.logger.info('Spider opened: %s' % spider.name) ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy_demo/middlewares_proxy_redis.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/2/18 20:10 # @File : middlewares_proxy_redis.py """ middlewares_proxy_redis.py: 使用Redis来控制 获取代理 Redis 5.0.7 (00000000/0) 64 bit """ import traceback import redis import logging logger = logging.getLogger(__name__) class redisProxy(object): @classmethod def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls(crawler) # crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s def __init__(self, crawler): self.red = redis.Redis(decode_responses=True) self.proxy_key = 'proxy' self.error_proxy_key = 'error_proxy' pass def process_request(self, request, spider): rs = self.red.zpopmax(self.proxy_key) # 取出 if len(rs) > 0: ip, score = rs[0] self.red.zincrby(self.proxy_key, score - 10, ip) # 放回 score - 1 # print(self.red.zscan(key)) request.meta["proxy"] = ip logger.info(f'获得代理Redis {ip}\t{score}') else: logger.error('没有获得代理Redis') pass pass def process_response(self, request, response, spider): proxy = request.meta.get('proxy', '') logger.info(f'process_response 获得代理proxy{proxy}') # TODO if proxy: if response.status != 200: # logger.info(f'代理失效{request.meta}') logger.error(f'代理失效response {response.status}') # TODO 429 self.red.zincrby(self.proxy_key, 3, proxy) # 放到队尾 3-10=-7 self.red.zincrby(self.error_proxy_key, -2, proxy) if response.status == 429: self.red.zincrby(self.proxy_key, -100, proxy) # 放到队尾 3-10=-7 logger.error(f'放到队尾 -100 {proxy}') # TODO 429 else: # 正常情况 self.red.zincrby(self.proxy_key, 7, proxy) else: logger.error('process_response 不能获取meta代理') return response pass def process_exception(self, request, exception, spider): try: logger.error('process_exception') logger.error(request.meta) logger.error(exception) # TODO proxy = request.meta.get('proxy', 'process_exception') self.red.zincrby(self.proxy_key, -2, proxy) # 放回 score - 1 self.red.zincrby(self.error_proxy_key, -2, proxy) logger.info(f'process_exception 获得代理proxy{proxy}') # TODO except: print(traceback.format_exc()) pass pass ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy_demo/pipelines.py ================================================ # -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html class ScrapyDemoPipeline(object): def process_item(self, item, spider): return item ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy_demo/settings.py ================================================ # -*- coding: utf-8 -*- # Scrapy settings for scrapy_demo project # # For simplicity, this file contains only settings considered important or # commonly used. You can find more settings consulting the documentation: # # https://docs.scrapy.org/en/latest/topics/settings.html # https://docs.scrapy.org/en/latest/topics/downloader-middleware.html # https://docs.scrapy.org/en/latest/topics/spider-middleware.html BOT_NAME = 'scrapy_demo' SPIDER_MODULES = ['scrapy_demo.spiders'] NEWSPIDER_MODULE = 'scrapy_demo.spiders' # Crawl responsibly by identifying yourself (and your website) on the user-agent #USER_AGENT = 'scrapy_demo (+http://www.yourdomain.com)' USER_AGENT = 'iphone' # Obey robots.txt rules ROBOTSTXT_OBEY = False # Configure maximum concurrent requests performed by Scrapy (default: 16) CONCURRENT_REQUESTS = 200 # Configure a delay for requests for the same website (default: 0) # See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay # See also autothrottle settings and docs #DOWNLOAD_DELAY = 3 # The download delay setting will honor only one of: CONCURRENT_REQUESTS_PER_DOMAIN = 500 CONCURRENT_REQUESTS_PER_IP = 500 # Disable cookies (enabled by default) #COOKIES_ENABLED = False # Disable Telnet Console (enabled by default) #TELNETCONSOLE_ENABLED = False # Override the default request headers: #DEFAULT_REQUEST_HEADERS = { # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', # 'Accept-Language': 'en', #} # Enable or disable spider middlewares # See https://docs.scrapy.org/en/latest/topics/spider-middleware.html #SPIDER_MIDDLEWARES = { # 'scrapy_demo.middlewares.ScrapyDemoSpiderMiddleware': 543, #} # Enable or disable downloader middlewares # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html DOWNLOADER_MIDDLEWARES = { # 'scrapy_demo.middlewares.ScrapyDemoDownloaderMiddleware': 543, 'scrapy_demo.middlewares_proxy_redis.redisProxy': 400, } # Enable or disable extensions # See https://docs.scrapy.org/en/latest/topics/extensions.html #EXTENSIONS = { # 'scrapy.extensions.telnet.TelnetConsole': None, #} # Configure item pipelines # See https://docs.scrapy.org/en/latest/topics/item-pipeline.html #ITEM_PIPELINES = { # 'scrapy_demo.pipelines.ScrapyDemoPipeline': 300, #} # Enable and configure the AutoThrottle extension (disabled by default) # See https://docs.scrapy.org/en/latest/topics/autothrottle.html #AUTOTHROTTLE_ENABLED = True # The initial download delay #AUTOTHROTTLE_START_DELAY = 5 # The maximum download delay to be set in case of high latencies #AUTOTHROTTLE_MAX_DELAY = 60 # The average number of requests Scrapy should be sending in parallel to # each remote server #AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 # Enable showing throttling stats for every response received: #AUTOTHROTTLE_DEBUG = False # Enable and configure HTTP caching (disabled by default) # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings #HTTPCACHE_ENABLED = True #HTTPCACHE_EXPIRATION_SECS = 0 #HTTPCACHE_DIR = 'httpcache' #HTTPCACHE_IGNORE_HTTP_CODES = [] #HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy_demo/spiders/__init__.py ================================================ # This package will contain the spiders of your Scrapy project # # Please refer to the documentation for information on how to create and manage # your spiders. ================================================ FILE: 2020/2-6-Spider-Speed-test/scrapy_demo/scrapy_demo/spiders/example.py ================================================ # -*- coding: utf-8 -*- ''' scrapy crawl example -s CLOSESPIDER_ITEMCOUNT=10000 统计结果 2020-02-06 20:48:55 [scrapy.extensions.logstats] INFO: Crawled 1581 pages (at 524 pages/min), scraped 1580 items (at 524 items/min) 2020-02-06 20:49:55 [scrapy.extensions.logstats] INFO: Crawled 2104 pages (at 523 pages/min), scraped 2103 items (at 523 items/min) ''' import scrapy from scrapy import Request from scrapy_demo.items import ScrapyDemoItem class ExampleSpider(scrapy.Spider): name = 'example' # allowed_domains = ['example.com'] # url='http://127.0.0.1:8080/' url='http://192.168.0.222/api' # 项目2-18-Scrapy-auto-proxy start_urls = [url] def parse(self, response): # print(response.body) it=ScrapyDemoItem() it['json']=response.body yield it yield Request(self.url,callback=self.parse,dont_filter=True) pass ================================================ FILE: 2020/2-6-Spider-Speed-test/server.go ================================================ /* 对比 Python 和 Go 语言的每秒请求数 https://www.oschina.net/translate/python-vs-go-requests-per-second curl http://127.0.0.1:8080/ 压力测试 ab -q -c 50 -n 1000 http://127.0.0.1:8080/ */ package main import ( "encoding/json" "fmt" "github.com/emicklei/go-restful" "io" "net/http" ) func main() { ws := new(restful.WebService) ws.Route(ws.GET("/").To(hello)) restful.Add(ws) fmt.Print("Server starting on port 8080\n") http.ListenAndServe(":8080", nil) } func hello(req *restful.Request, resp *restful.Response) { b, _ := json.Marshal(article) io.WriteString(resp, string(b)) } type Article struct { Name string Body string } var article = Article{"A Royal Baby", "A slow news week"} ================================================ FILE: 2020/2-6-gocolly/README.md ================================================ ## gocolly 爬虫 入门和案例 - 视频:[想要九阴真经(经验总结)吗?gocolly爬虫-入门和案例](https://www.bilibili.com/video/av86986554/) - 参考 - https://github.com/gocolly/colly - 官网 http://go-colly.org/ - 官网文档 http://go-colly.org/docs/ - 安装 - go get -u github.com/gocolly/colly/v2/... - 案例 - 解析HTML - CSS Selector - 京东-商品列表 - 异步并发请求 - colly.Async(true), - c.Wait() - 使用多个Collector解析器 - detailCollector := c.Clone() - context传参 var ctx=colly.NewContext() ctx.Put("cc", js.Cc) c.Request("GET", url, nil, ctx, header) - 使用代理 - httpbin get.go - 启动Squid代理服务器 - 分布式抓取,连接Redis - 1 ================================================ FILE: 2020/2-7-Docker-Nginx-antiClawer/README.md ================================================ # Nginx反爬虫 - 视频 [Nginx反爬虫-禁止UserAgent和IP,使用Docker和Go测试](https://www.bilibili.com/video/av87302823/) - 参考 - https://blog.csdn.net/weixin_34341117/article/details/85848963 - agent_deny.conf https://blog.csdn.net/markchiu/article/details/52512106 - Nginx 服务器之速率限制 https://cloud.tencent.com/developer/news/35222 - 图书 - [《Python 3反爬虫原理与绕过实战》](https://book.douban.com/subject/34938311/) - 启动Docker - 禁止某UserAgent - curl访问 - 限制同一个ip的访问频率 速率限制主要有2个主要指令,limit_req_zone和limit_req。 - 运行 - 启动server - go run server.go - docker run -it --rm -p 80:80 -v /path/nginx1.conf:/etc/nginx/nginx.conf:ro nginx - 测试 - curl http://192.168.0.222/api - curl -A 'iphone' http://192.168.0.222/api - 限制IP - 之前 - 速度: 9970.065281182719 item/minute , 314 0.03149427723333333 - 之后 - 速度: 2134.1611919528164 item/minute , 61 0.02858265825 - Nginx日志 - 2020/02/07 06:29:34 [error] 6#6: *422 limiting connections by zone "perip", client: 172.17.0.1, server: localhost, request: "GET /api HTTP/1.1", host: "127.0.0.1" ================================================ FILE: 2020/2-7-Docker-Nginx-antiClawer/deny_userAgent.conf ================================================ #https://blog.csdn.net/markchiu/article/details/52512106 #禁止Scrapy等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } #禁止指定UA及UA为空的访问 if ($http_user_agent ~ "WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|^$" ) { return 403; } #禁止非GET|HEAD|POST方式的抓取 if ($request_method !~ ^(GET|HEAD|POST)$) { return 403; } ================================================ FILE: 2020/2-7-Docker-Nginx-antiClawer/go_spider ================================================ [File too large to display: 13.8 MB] ================================================ FILE: 2020/2-7-Docker-Nginx-antiClawer/go_spider.go ================================================ /* @Time : 2020/2/6 15:17 @File : go_spider.go */ package main import ( "github.com/gocolly/colly" "log" "fmt" "time" ) func main() { log.Println("Start") start := time.Now() counter:=0 c:=colly.NewCollector( colly.Async(true), )//异步 c.AllowURLRevisit=true c.OnResponse(func(r *colly.Response) { fmt.Println("OnResponse Visited", r.Request.URL) fmt.Println(string(r.Body[:])) counter+=1 }) url := "http://127.0.0.1/api" for a := 0; a < 10000; a++ { //fmt.Println(a) c.Visit(url) } c.Wait() end := time.Now() dlt:=end.Sub(start) speed:=float64(counter)/dlt.Minutes() fmt.Println("速度:",speed," item/minute ,",counter,dlt.Minutes()) //速度: 149258.717455393 item/minute 995 0.0066662773 } ================================================ FILE: 2020/2-7-Docker-Nginx-antiClawer/nginx1.conf ================================================ user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { #限制同一个ip的访问频率 limit_conn_zone $binary_remote_addr zone=perip:100k; limit_conn_zone $server_name zone=perserver:100k; server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location /api{ proxy_pass http://192.168.0.222:8080/; # access_log "logs/test.log"; } #禁止Scrapy等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } #限制同一个ip的访问频率 limit_conn perip 2; limit_conn perserver 10; limit_rate 512; } } ================================================ FILE: 2020/2-7-Docker-Nginx-antiClawer/server.go ================================================ /* 对比 Python 和 Go 语言的每秒请求数 https://www.oschina.net/translate/python-vs-go-requests-per-second go run server.go curl http://127.0.0.1:8080/ 压力测试 ab -q -c 50 -n 1000 http://127.0.0.1:8080/ */ package main import ( "encoding/json" "fmt" "github.com/emicklei/go-restful" "io" "net/http" ) func main() { ws := new(restful.WebService) ws.Route(ws.GET("/").To(hello)) restful.Add(ws) fmt.Print("Server starting on port 8080\n") fmt.Println("curl http://127.0.0.1:8080/") fmt.Println("curl http://192.168.0.222:8080/") http.ListenAndServe(":8080", nil) } func hello(req *restful.Request, resp *restful.Response) { b, _ := json.Marshal(article) io.WriteString(resp, string(b)) } type Article struct { Name string Body string } var article = Article{"A Royal Baby", "A slow news week"} ================================================ FILE: 2020/2-9-Chrome插件-全文检索/README.md ================================================ # Chrome插件-全文检索 - 视频 [Chrome插件-全文检索,加强Chrome的搜索功能](https://www.bilibili.com/video/av87717829/) - 日常问题 - Chrome搜索功能太差了,历史记录+书签收藏夹, - 只能搜索标题 - 按时间搜索,按网站搜索,按标签搜索 两个 - WorldBrain https://getmemex.com/ - 文档 [WorldBrain – 全文搜索你浏览过的「所有」网页](https://www.appinn.com/worldbrain-for-chrome/) - https://github.com/lengstrom/falcon - 缺点 - 只支持英文,不支持中文,没有分词 - 安装 - Chrome 应用商店安装 - 通过源代码安装 - 看源代码 ================================================ FILE: 2020/3-1-世界语言-翻译-Siri朗读/README.md ================================================ # 3-1-世界语言-翻译-Siri朗读 - 视频 [鬼畜!把中文翻译到世界语言,然后用Siri朗读](https://www.bilibili.com/video/av92915931/) - 百度翻译api - [通用翻译API接入文档](http://api.fanyi.baidu.com/doc/21) - Python调用macOS Siri [Python Text to Speech in Macintosh](https://stackoverflow.com/questions/12758591/python-text-to-speech-in-macintosh) - 语言-发音人,映射 - https://stackoverflow.com/questions/29152617/nsspeechsynthesizer-voice-language-relations - 翻译请求限制 - 结果 ``` (.py3) localhost:3-1-世界语言-翻译-Siri朗读 play$ py macOS-siri-百度翻译-TTS.py 请输入中文:你好 早上好,你吃饭了吗? 你好 早上好,你吃饭了吗? 普通话 台湾 香港 英语 en com.apple.speech.synthesis.voice.Alex Hello, good morning. Have you eaten yet? ---------------------------------------- 俄语 ru com.apple.speech.synthesis.voice.milena Как ты поужинал? ---------------------------------------- 阿拉伯 ara com.apple.speech.synthesis.voice.tarik مرحبا صباح الخير ، هل تناولت الطعام في ؟ ---------------------------------------- 匈牙利 hu com.apple.speech.synthesis.voice.mariska Jó reggelt, ettél már valamit? ---------------------------------------- 荷兰 nl com.apple.speech.synthesis.voice.ellen Hallo, heb je al gegeten? ---------------------------------------- 希腊 el com.apple.speech.synthesis.voice.melina Γεια σας, καλημέρα, έχετε φάει ακόμα; ---------------------------------------- 丹麦 dan com.apple.speech.synthesis.voice.sara Hej, godmorgen, har du spist endnu? ---------------------------------------- 西班牙 spa com.apple.speech.synthesis.voice.Jorge ¿Buenos días. Has comido? 2020-03-01 20:58:46.947 python[17098:739108] NSSpeechSynthesizer: [NSSpeechSynthesizer setVoice:] - Voice identifier not found. ---------------------------------------- 意大利 it com.apple.speech.synthesis.voice.alice Ciao, buongiorno, hai gia'mangiato? ---------------------------------------- 韩国 kor com.apple.speech.synthesis.voice.yuna 안녕하세요. 좋은 아침 식사 하셨어요? ---------------------------------------- 德国 de com.apple.speech.synthesis.voice.anna Guten Morgen, haben Sie schon gegessen? ---------------------------------------- 波兰 pl com.apple.speech.synthesis.voice.zosia Dzień dobry, czy już jadłeś? ---------------------------------------- 葡萄牙 pt com.apple.speech.synthesis.voice.joana Bom dia, você já comeu? ---------------------------------------- 罗马尼亚 rom com.apple.speech.synthesis.voice.ioana Bună dimineaţa, aţi mâncat deja? ---------------------------------------- 斯洛伐克 slo com.apple.speech.synthesis.voice.laura Dobro jutro, ste že jedli? ---------------------------------------- 泰国 th com.apple.speech.synthesis.voice.kanya สวัสดีตอนเช้าคุณทานอาหารรึยัง ---------------------------------------- 芬兰 fin com.apple.speech.synthesis.voice.satu Hyvää huomenta, oletko jo syönyt? ---------------------------------------- 法国 fra com.apple.speech.synthesis.voice.thomas Bonjour, vous avez mangé? ---------------------------------------- 捷克 cs com.apple.speech.synthesis.voice.zuzana Dobrý den, už jste jedli? ---------------------------------------- 瑞典 swe com.apple.speech.synthesis.voice.alva God morgon, har du ätit än? ---------------------------------------- 日语 jp com.apple.speech.synthesis.voice.kyoko すみません、おはようございます。食事は済みましたか? ---------------------------------------- (.py3) localhost:3-1-世界语言-翻译-Siri朗读 play$ ``` ``` (.py3) localhost:~ play$ py /Users/play/github/Machine_Translation_Subtitles_Group/src/macOS-siri-百度翻译-TTS.py 请输入中文:国际和平,让和平白鸽自由飞翔,带去安宁温馨;让美好橄榄枝四处蔓延,编织幸福世界;让和谐旗帜随风飘扬,传递快乐心语。祝愿世界和平,永无战争! 普通话 台湾 香港 en com.apple.speech.synthesis.voice.Alex International peace, let peace dove fly freely, bring peace and warmth; let the olive branch spread everywhere, weave a happy world; let the harmonious flag fly with the wind, convey happy words. Wish the world peace and never war! ---------------------------------------- ru com.apple.speech.synthesis.voice.milena международный мир, мир белых голубей, мир, свобода летать, мир и тепло, великолепные оливковые ветви, сплетая счастливый мир, и гармоничные флаги, развевающиеся по ветру, передают радость.Пусть мир во всем мире, никогда не будет войны! ---------------------------------------- ara com.apple.speech.synthesis.voice.tarik السلام الدولي ، واسمحوا حمامة بيضاء سلمية تطير بحرية ، تأخذ راحة البال و الدفء ، واسمحوا جيدة غصين الزيتون تنتشر في جميع أنحاء العالم ، نسج السعادة ، اسمحوا الوئام راية ترفرف في مهب الريح ، تمرير سعيدالسلام في العالم ، لا حرب ---------------------------------------- hu com.apple.speech.synthesis.voice.mariska A nemzetközi béke, hadd repüljön szabadon a békegalamb, hozzon békét és meleget; az olajág terjesszen mindenfelé, alakítson boldog világot; a harmonikus zászló repüljön a széllel, adjon boldog szavakat.Kívánj békét a világnak és soha ne háborúzz! ---------------------------------------- nl com.apple.speech.synthesis.voice.ellen Internationale vrede, laat de vrede vrij vliegen, breng vrede en warmte; laat de olijftak zich overal verspreiden, weven een gelukkige wereld; laat de harmonieuze vlag met de wind vliegen, breng gelukkige woorden.Wens de wereld vrede en nooit oorlog! ---------------------------------------- el com.apple.speech.synthesis.voice.melina Διεθνής ειρήνη, ας πετάξει το περιστέρι της ειρήνης ελεύθερα, να φέρει ειρήνη και ζεστασιά, ας απλωθεί το κλαδί της ελιάς παντού, να υφαίνει έναν ευτυχισμένο κόσμο, ας πετάξει η αρμονική σημαία με τον άνεμο, να μεταφέρει χαρούμενα λόγια.Ευχήσου στον κόσμο ειρήνη και ποτέ πόλεμο! ---------------------------------------- dan com.apple.speech.synthesis.voice.sara International fred, lad fredsdue flyve frit, bringe fred og varme, lad olivengrenen sprede sig overalt, væve en lykkelig verden, lad det harmoniske flag flyve med vinden, overbringe glade ord.Ønsk verden fred og aldrig krig! ---------------------------------------- spa com.apple.speech.synthesis.voice.Jorge Paz internacional: que las palomas de la paz puedan volar libremente y llevar paz y tranquilidad; que las bellas ramas de olivo se extiendan por todas partes para tejer un mundo de felicidad; que las banderas de la armonía ondeen con el viento y transmitan la felicidad.¡Que el mundo sea pacífico y no haya guerra! 2020-03-01 16:04:16.270 python[15212:642205] NSSpeechSynthesizer: [NSSpeechSynthesizer setVoice:] - Voice identifier not found. ---------------------------------------- it com.apple.speech.synthesis.voice.alice La pace internazionale, la colomba di pace vola liberamente, porta pace e calore; che il ramo d'ulivo si diffonda ovunque, tessa un mondo felice; che la bandiera armoniosa voli con il vento, trasmetta parole felici.Auguri al mondo pace e mai guerra! ---------------------------------------- kor com.apple.speech.synthesis.voice.yuna 평화 평화, 평화 비둘기 자유 비상, 평화 평화 평화 평화 평화 평화 평화 를 데리고 안녕 훈훈한 향기 를 전달 했 다.세계 평화를 기원하고 영원히 전쟁이 없기를 기원합니다! ---------------------------------------- de com.apple.speech.synthesis.voice.anna Internationaler Frieden, lasst die Friedenstaube frei fliegen, bringt Frieden und Wärme; lasst den Olivenzweig sich überall ausbreiten, weben eine glückliche Welt; lasst die harmonische Flagge mit dem Wind wehen, überbringen glückliche Worte.Wünsch der Welt Frieden und niemals Krieg! ---------------------------------------- pl com.apple.speech.synthesis.voice.zosia Międzynarodowy pokój, niech pokój gołąb swobodnie latać, przynieść pokój i ciepło; niech gałązka oliwna rozprzestrzenia się wszędzie, spleć szczęśliwy świat; niech harmonijna flag a powiewa z wiatrem, przekazać szczęśliwe słowa.Życz światu pokoju i nigdy wojny! ---------------------------------------- pt com.apple.speech.synthesis.voice.joana Paz internacional, que a pomba Da paz VOE livremente, traga Paz e calor; que o Ramo de Oliveira se espalhe por todo o lado, tecer um Mundo feliz; que a Bandeira harmoniosa VOE com o vento, transmita Palavras felizes.Deseje Paz Ao Mundo e Nunca guerra! ---------------------------------------- rom com.apple.speech.synthesis.voice.ioana Pacea internaţională, pacea să zboare liber, să aducă pace şi căldură; să se răspândească ramura de măslin peste tot, să ţesă o lume fericită; să zboare steagul armonios cu vântul, să transmită cuvinte fericite.Doresc pacea mondială și niciodată război! ---------------------------------------- slo com.apple.speech.synthesis.voice.laura Mednarodni mir, naj mirovna golobica prosto leti, naj prinese mir in toploto; naj se oljčna veja razširi povsod, naj splete srečen svet; naj harmonična zastava plapola z vetrom, naj posreduje srečne besede.Zaželi svetu mir in nikoli vojne! ---------------------------------------- th com.apple.speech.synthesis.voice.kanya สันติภาพระหว่างประเทศให้นกพิราบสีขาวบินได้อย่างอิสระและนำความสงบสุขและความอบอุ่นให้กิ่งมะกอกที่ดีกระจายไปทั่วโลกมีความสุขให้ธงสามัคคีบินกับลมและถ่ายทอดความสุข ขอให้สันติภาพของโลกไม่มีสงคราม ---------------------------------------- fin com.apple.speech.synthesis.voice.satu Kansainvälinen rauha, syöksyköön rauha vapaasti, tuokoon rauhaa ja lämpöä, levittäköön oliivioksa kaikkialle, kutoon onnellista maailmaa, tehköön harmoninen lippu tuulen kanssa, välittäköön iloisia sanoja.Toivokaa rauhaa, älkääkä koskaan sotiko! ---------------------------------------- fra com.apple.speech.synthesis.voice.thomas La paix internationale, la liberté des colombes de la paix de voler et d 'emporter dans la paix et la douceur; la propagation des branches d' Olivier de la beauté et l 'édification d' un monde heureux; le drapeau de l 'harmonie flotte au vent et transmet des paroles de joie.Que la paix règne dans le monde, jamais la guerre! ---------------------------------------- cs com.apple.speech.synthesis.voice.zuzana Mezinárodní mír, a ť mír volně létá, ať přinese mír a teplo; ať se olivová větev rozšíří všude, tkají šťastný svět; ať harmonická vlajka vlaje s větrem, ať nesou šťastná slova.Přeji světu mír a nikdy válku! ---------------------------------------- swe com.apple.speech.synthesis.voice.alva Internationell fred, låt fredsduvan flyga fritt, ge fred och värme; låt olivkvisten sprida sig överallt, väva en lycklig värld; låt den harmoniska flaggan flyga med vinden, förmedla glada ord.Önska världen fred och aldrig krig! ---------------------------------------- jp com.apple.speech.synthesis.voice.kyoko 国際平和、平和のハトを自由に飛翔させ、安らぎと暖かさを持って行きます。美しいオリーブの枝があちこちに広がって、幸せな世界を作ります。調和の旗が風に翻り、楽しい心の言葉を伝えます。世界の平和を祈って、永遠に戦争がありません。 ---------------------------------------- (.py3) localhost:~ play$ ``` ================================================ FILE: 2020/3-1-世界语言-翻译-Siri朗读/baidu_translate_api.py ================================================ # -*- coding: utf-8 -*- # @Time : 2017/12/4 13:37 # @Author : play4fun # @File : translate_api.py # @Software: PyCharm """ translate_api.py: 语言列表 源语言语种不确定时可设置为 auto,目标语言语种不可设置为 auto。 http://api.fanyi.baidu.com/api/trans/product/apidoc """ # import httplib # import md5 from hashlib import md5 # import urllib from urllib.parse import quote, quote_plus import random import requests import json from config import baidu_appid as appid from config import baidu_secretKey as secretKey myurl = '/api/trans/vip/translate' # https://fanyi-api.baidu.com/api/trans/vip/translate q = 'He could turn off all the power to the building' fromLang = 'en' toLang = 'zh' salt = random.randint(32768, 65536) def translate(sub, froml=None, tol='zh'): q = sub if froml is None: froml = 'auto' # toLang=tol sign = appid + q + str(salt) + secretKey # m1 = md5.new() m1 = md5() m1.update(sign.encode('utf-8')) sign = m1.hexdigest() myurl = 'https://fanyi-api.baidu.com/api/trans/vip/translate' myurl = myurl + '?appid=' + appid + '&q=' + quote_plus(q) + '&from=' + froml + '&to=' + tol + '&salt=' + str(salt) + '&sign=' + sign # print(myurl) # rs = requests.get(myurl) # print(rs.text) js = json.loads(rs.text) return js['trans_result'][0]['dst'] def test(): # sub = 'Zeker, we hebben de verantwoordelijkheid om voor onze blauwe planeet te zorgen.' # rs = translate(sub, froml='nl') # 荷兰 # sub = 'She must leave the safety of her marine world' # 无法翻译多行? sub = '''The best and the worst thing about love is that it cannot be expressed in words. "\n" When you truly love someone, it may be hard to express those emotions through words. "\n" In fact, real love may make you feel weak in the knees and unable to speak. ''' # 爱的最好和最坏之处在于它不能用语言表达。当你真的爱一个人时,可能很难用言语表达这些情感。事实上,真正的爱情可能会让你感到膝盖无力,无法说话。 sub = '早上好,你吃饭了吗' rs = translate(sub, froml='zh', tol='en') # 不支持 印度 print('翻译结果:', rs) if __name__ == '__main__': test() ================================================ FILE: 2020/3-1-世界语言-翻译-Siri朗读/config.py ================================================ # -*- coding: utf-8 -*- # @File : config.py # @Software: PyCharm """ config.py: """ baidu_appid = 'xxx' baidu_secretKey = 'xxxx' ================================================ FILE: 2020/3-1-世界语言-翻译-Siri朗读/macOS-siri-百度翻译-TTS.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/3/1 14:58 # @File : macOS-siri-百度翻译-TTS.py """ macOS-siri-百度翻译-TTS.py: 你好 早上好,你吃饭了吗? 国际和平,让和平白鸽自由飞翔,带去安宁温馨;让美好橄榄枝四处蔓延,编织幸福世界;让和谐旗帜随风飘扬,传递快乐心语。祝愿世界和平,永无战争! """ import time from AppKit import NSSpeechSynthesizer from baidu_translate_api import translate nssp = NSSpeechSynthesizer ve = nssp.alloc().init() #来源 https://stackoverflow.com/questions/29152617/nsspeechsynthesizer-voice-language-relations voices = {#注释掉的语言是百度翻译API不支持的 "en": ("com.apple.speech.synthesis.voice.Alex", '英语'), # 英语 "ru": ("com.apple.speech.synthesis.voice.milena", '俄语'), # 俄语 "ara": ("com.apple.speech.synthesis.voice.tarik", '阿拉伯'), # 阿拉伯 "hu": ("com.apple.speech.synthesis.voice.mariska", '匈牙利'), # 匈牙利 "nl": ("com.apple.speech.synthesis.voice.ellen", '荷兰'), # 荷兰 "el": ("com.apple.speech.synthesis.voice.melina", '希腊'), # 希腊 "dan": ("com.apple.speech.synthesis.voice.sara", '丹麦'), # 丹麦 # "he": ("com.apple.speech.synthesis.voice.carmit",'以色列'),#以色列 希伯来语 # "id": ("com.apple.speech.synthesis.voice.damayanti",'印度尼西亚'),#印度尼西亚 "spa": ("com.apple.speech.synthesis.voice.Jorge", '西班牙'), # 西班牙 "it": ("com.apple.speech.synthesis.voice.alice", '意大利'), # 意大利 "kor": ("com.apple.speech.synthesis.voice.yuna", '韩国'), # 韩国 "de": ("com.apple.speech.synthesis.voice.anna", '德国'), # 德国 # "no": ("com.apple.speech.synthesis.voice.nora",'挪威'),#挪威 "pl": ("com.apple.speech.synthesis.voice.zosia", '波兰'), # 波兰 "pt": ("com.apple.speech.synthesis.voice.joana", '葡萄牙'), # 葡萄牙 "rom": ("com.apple.speech.synthesis.voice.ioana", '罗马尼亚'), # 罗马尼亚 "slo": ("com.apple.speech.synthesis.voice.laura", '斯洛伐克'), # 斯洛伐克,借用 斯洛文尼亚 "th": ("com.apple.speech.synthesis.voice.kanya", '泰国'), # 泰国 # "tr": ("com.apple.speech.synthesis.voice.yelda",'土耳其'),#土耳其 "fin": ("com.apple.speech.synthesis.voice.satu", '芬兰'), # 芬兰 "fra": ("com.apple.speech.synthesis.voice.thomas", '法国'), # 法国 # "hi": ("com.apple.speech.synthesis.voice.lekha",'印度'), # 印度-印地语 "cs": ("com.apple.speech.synthesis.voice.zuzana", '捷克'), # 捷克 "swe": ("com.apple.speech.synthesis.voice.alva", '瑞典'), # 瑞典 "jp": ("com.apple.speech.synthesis.voice.kyoko", '日语') # 日语 } def say(voice, text): # print(voice) # print(text) ve.setVoice_(voice) ve.startSpeakingString_(text) while not ve.isSpeaking(): # 等待发音 time.sleep(0.1) while ve.isSpeaking(): # 等待结束 time.sleep(0.1) # print('-' * 20) def main(): text = input('请输入中文:') # text = '早上好,你吃饭了吗' print(text) # sp = nssp.alloc().initWithVoice_() # sp.startSpeakingString_(text) # 普通话 print('普通话') say('com.apple.speech.synthesis.voice.ting-ting', text) # 台湾 print('台湾') say('com.apple.speech.synthesis.voice.mei-jia', text) # 香港 print('香港') say('com.apple.speech.synthesis.voice.sin-ji', text) # for for lang, (voice, country) in voices.items(): print(country, '\t', lang, '\t', voice) try: transtr = translate(text, froml='zh', tol=lang)#翻译api可能限流 except Exception as e: print('Exception',e) continue pass print(transtr) say(voice, transtr) print('-' * 40) # time.sleep(0.5) pass if __name__ == '__main__': main() ================================================ FILE: 2020/3-1-世界语言-翻译-Siri朗读/py-调用macos内置的语音听写功能.py ================================================ # coding=utf-8 #Python Text to Speech in Macintosh #https://stackoverflow.com/questions/12758591/python-text-to-speech-in-macintosh #文本到语音 TTS from AppKit import NSSpeechSynthesizer import time import sys if len(sys.argv) < 2: text = raw_input('type text to speak> ') else: text = sys.argv[1] nssp = NSSpeechSynthesizer ve = nssp.alloc().init() for voice in nssp.availableVoices(): ve.setVoice_(voice) print voice ve.startSpeakingString_(text) while not ve.isSpeaking():#等待发音 time.sleep(0.1) while ve.isSpeaking():#等待结束 time.sleep(0.1) #来源 https://stackoverflow.com/questions/29152617/nsspeechsynthesizer-voice-language-relations voices = { "en": "com.apple.speech.synthesis.voice.Alex",#英语 "ru": "com.apple.speech.synthesis.voice.milena",#俄语 "ara": "com.apple.speech.synthesis.voice.tarik",#阿拉伯 "hu": "com.apple.speech.synthesis.voice.mariska",#匈牙利 "nl": "com.apple.speech.synthesis.voice.ellen",#荷兰 "el": "com.apple.speech.synthesis.voice.melina",#希腊 "dan": "com.apple.speech.synthesis.voice.sara",#丹麦 # "he": "com.apple.speech.synthesis.voice.carmit",#以色列 希伯来语 # "id": "com.apple.speech.synthesis.voice.damayanti",#印度尼西亚 "spa": "com.apple.speech.synthesis.voice.Jorge",#西班牙 "it": "com.apple.speech.synthesis.voice.alice",#意大利 # "zh": "com.apple.speech.synthesis.voice.ting-ting",#中国 "kor": "com.apple.speech.synthesis.voice.yuna",#韩国 "de": "com.apple.speech.synthesis.voice.anna",#德国 # "no": "com.apple.speech.synthesis.voice.nora",#挪威 "pl": "com.apple.speech.synthesis.voice.zosia",#波兰 "pt": "com.apple.speech.synthesis.voice.joana",#葡萄牙 "rom": "com.apple.speech.synthesis.voice.ioana",#罗马尼亚 "slo": "com.apple.speech.synthesis.voice.laura",#斯洛伐克,借用 斯洛文尼亚 "th": "com.apple.speech.synthesis.voice.kanya",#泰国 # "tr": "com.apple.speech.synthesis.voice.yelda",#土耳其 "fin": "com.apple.speech.synthesis.voice.satu",#芬兰 "fra": "com.apple.speech.synthesis.voice.thomas",#法国 "hi": "com.apple.speech.synthesis.voice.lekha",#印度-印地语 "cs": "com.apple.speech.synthesis.voice.zuzana",#捷克 "swe": "com.apple.speech.synthesis.voice.alva",#瑞典 "jp": "com.apple.speech.synthesis.voice.kyoko"#日语 } ================================================ FILE: 2020/3-10-nonebot_Coolq_Docker/README.md ================================================ # nonebot+酷Q+Docker - 视频 - [Python编程实现【QQ 聊天机器人】nonebot+酷Q+Docker](https://www.bilibili.com/video/av95262479/) - [【QQ+拼多多】返现程序,在服务器上Docker运行](https://www.bilibili.com/video/av95478130/) - 群管理+定时发送 [nonebot和酷Q的计划任务和群消息管理](https://www.bilibili.com/video/av96010898/) - 参考 - https://github.com/richardchien/nonebot - 文档 指南 https://nonebot.cqp.moe/guide/ - 术语表 https://nonebot.cqp.moe/glossary.html - CQ 码 - CoolQ HTTP API 插件 https://cqhttp.cc/docs/4.14/#/ - 使用Docker https://cqhttp.cc/docs/4.14/#/Docker - GitHub https://github.com/richardchien/coolq-http-api - 下载 https://github.com/richardchien/coolq-http-api/releases - 酷Q 社区 https://cqp.cc/b/news - [酷Q Air / Pro 功能对比](https://cqp.cc/t/23290) - Air是免费版,不能发图片和语音 - Pro 收费,¥12/月 - 安装 - pip install nonebot - Docker ``` docker pull richardchien/cqhttp:latest mkdir coolq # 用于存储 酷Q 的程序文件 docker run -ti --name cqhttp-test \ -v $(pwd)/coolq:/home/user/coolq \ -p 9000:9000 \ -p 5700:5700 \ -e COOLQ_ACCOUNT=2262965903 \ -e CQHTTP_POST_URL=http://127.0.0.1:8080 \ -e CQHTTP_SERVE_DATA_FILES=yes \ richardchien/cqhttp:latest #之后 docker start cqhttp-test docker logs -f cqhttp-test docker stop cqhttp-test ``` 然后访问 http://<你的IP>:9000/ 进入 noVNC(默认密码 MAX8char ),登录 酷Q,即可开始使用 (插件已自动启用,配置文件也根据启动命令的环境变量自动生成了)。 一般情况下,你不太需要关注插件是如何存在于容器中的。 - 更正 Docker启动项 ``` docker run -ti --name cqhttp-test \ -v $(pwd)/coolq:/home/user/coolq \ -p 9000:9000 \ -e COOLQ_ACCOUNT=2262965903 \ -e CQHTTP_USE_WS_REVERSE=true \ -e CQHTTP_WS_REVERSE_API_URL=ws://192.168.0.222:8080/ws/api/ \ -e CQHTTP_WS_REVERSE_EVENT_URL=ws://192.168.0.222:8080/ws/event/ \ richardchien/cqhttp:latest ``` 配置文件位置 - /Users/play/CODE/QQ/kuQ/coolq/app/io.github.richardchien.coolqhttpapi/config/2262965903.ini ``` [2262965903] ws_reverse_api_url=ws://192.168.0.222:8080/ws/api/ ws_reverse_event_url=ws://192.168.0.222:8080/ws/event/ use_ws_reverse=yes ``` ================================================ FILE: 2020/3-13-macOS-lock-screen/README.md ================================================ # macOS 倒计时 自动锁屏 - 参考 - Ubuntu [A timer that automatically locks the screen to take a break away from the computer?](https://askubuntu.com/questions/696620/a-timer-that-automatically-locks-the-screen-to-take-a-break-away-from-the-comput) - [Mac下添加定时任务](https://blog.csdn.net/lgt633744/article/details/45932035) - 键盘快捷键 - Command + Control + Q - lockscreen.py 比较迅速,马上就锁屏 - suspend.py 会准备系统,退出当前账号 - 添加到.bash_profile ,在命令行可以使用lock 短命令 执行,不需要输入很长的py路径 ``` #锁屏 alias lock='python3 /Users/play/CODE/Python_Test/macOS/lockscreen.py ' alias suspend='python3 /Users/play/CODE/Python_Test/macOS/suspend.py ' ``` - 添加到crontab定时任务,晚上23:31定时锁屏 - [在MAC OS X上如何启用crontab?](https://www.cnblogs.com/pcy0/p/how-to-enable-crontab-on-osx.html) ``` crontab -e 31 23 * * * /Users/play/.py3/bin/python3 /Users/play/CODE/Python_Test/macOS/lockscreen.py 0 ``` - 检查 ``` sudo launchctl list | grep cron 15518 0 com.vix.cron cat /System/Library/LaunchDaemons/com.vix.cron.plist sudo touch /etc/crontab ``` ================================================ FILE: 2020/3-13-macOS-lock-screen/lockscreen.py ================================================ # -*- encoding: utf-8 -*- ''' @File : lockscreen.py @Time : 2020/03/13 10:15:23 @Author : play4fun @Desc : https://gist.github.com/pudquick/350ba6411df3be77d32a 很快就锁屏了 只是锁屏 ''' from time import sleep import os,sys from ctypes import CDLL def lock(): loginPF = CDLL('/System/Library/PrivateFrameworks/login.framework/Versions/Current/login') result = loginPF.SACLockScreenImmediate() print('锁屏:',result)#0 pass if __name__ == "__main__": if len(sys.argv)==2: minute=int(sys.argv[1]) else: print('lockscreen.py 分钟数') minute=35 print(f"{minute}分钟后锁屏") sleep(minute*60) lock() ================================================ FILE: 2020/3-13-macOS-lock-screen/suspend.py ================================================ # -*- encoding: utf-8 -*- ''' @File : suspend.py @Time : 2020/03/13 09:36:08 @Author : play4fun @Desc : https://www.reddit.com/r/Python/comments/2rrb29/need_a_way_to_lock_and_unlock_macbook_screen_with/ 登录窗口 退出当前账号 可以休眠 192.30.253.118 gist.github.com ''' from time import sleep import os,sys def lock(): cmd='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend' print(cmd) os.system(cmd) pass if __name__ == "__main__": if len(sys.argv)==2: minute=int(sys.argv[1]) else: print('suspend.py 分钟数') minute=45 print(f"{minute}分钟后退出会话") sleep(minute*60) lock() ================================================ FILE: 2020/3-14-DNS查询/README.md ================================================ # DNS查询 nameserver - 视频 [DNS查询nameserver,用WireShark检查DNS报文,Python编程](https://www.bilibili.com/video/av96180822/) - 参考 - [一个强大的基于 Go 的 DNS 库](https://zhengyinyong.com/post/go-dns-library/) - DNS设置 - cat /etc/resolv.conf - 打开 WireShark - 过滤 dns - DNS 报文格式 - 测试 - dig @114.114.114.114 www.free-proxy.com - Python编程 ``` import socket host='www.bilibili.com' socket.gethostbyname(host) #'120.92.113.99' ``` - 指定 nameserver - https://github.com/rthalley/dnspython/tree/master/examples ``` import dns.resolver resolver = dns.resolver.Resolver(configure=False) resolver.nameservers = ['8.8.8.8'] answer = resolver.query('amazon.com', 'A') for ans in answer.response.answer: print(ans) for rec in ans.items: print('ip ',rec) ``` - Go 编程 - [一个强大的基于 Go 的 DNS 库](https://zhengyinyong.com/post/go-dns-library/) ================================================ FILE: 2020/3-14-时间管理/README.md ================================================ # 时间管理 - 视频 [时间管理!番茄工作法,Python编程倒计时,macOS自动锁屏](https://www.bilibili.com/video/av96158601/) - [番茄工作法](https://baike.baidu.com/item/%E7%95%AA%E8%8C%84%E5%B7%A5%E4%BD%9C%E6%B3%95/6353502) - 使用番茄工作法,选择一个待完成的任务,将番茄时间设为25分钟,专注工作,中途不允许做任何与该任务无关的事, - 直到番茄时钟响起,然后在纸上画一个X短暂休息一下(5分钟就行),每4个番茄时段多休息一会儿。 - 手机App - iPhone 倒计时 - Android 循环闹钟 - Python程序 - [macOS 倒计时 自动锁屏](https://github.com/makelove/Programer_Log/tree/master/2020/3-13-macOS-lock-screen) - macOS App - [Be Focused](https://apps.apple.com/cn/app/be-focused-%E5%B7%A5%E4%BD%9C%E5%92%8C%E5%AD%A6%E4%B9%A0%E7%9A%84%E8%AE%A1%E6%97%B6%E5%99%A8/id973134470?mt=12) - 魔方倒计时,京东购买 - [码仕 定时器](https://union-click.jd.com/jdc?e=&p=AyIGZRNYEwoVA1MSWCULFAVSGlodMlZYDUUEJVtXQhRZUAscSkIBR0RJHUlSSkkFSRxUVxZPRVJaRkFKSwlQWkxYW10LVlZqUlkSXRcFEwZdKy9tA2t7F1gLd2VSVRdFXkVbbgISATsZDiIGZRtaFAMWDlYfUhcyIgdWKw17AhMGVBpSHQcbBGUbWBwEFgJWE1gWMhIDXB5bEQIXAlETXhcyFQdcKwtJUllfCk1YFAcaN2USXRcFEwZdK1glMiIHZRhrV2xHBVRLDxRQE1QAGl4QUhAAXRtfFVYVBlVMWBADElVWTmsXAxMDXA%3D%3D) ================================================ FILE: 2020/3-16-GitHub-Free/README.md ================================================ # Github 免费资源 - https://github.com/search - 视频 [大宝藏!Github免费资源!免费电子书](https://www.bilibili.com/video/av96702294/) - 搜索 关键词,只要你的关键词 恰当,就能找到,很多意想不到的东西 - 搜索 免费 - 免费 ssr - [类酸酸乳订阅源聚合](https://github.com/nulastudio/Freedom) - 免费 电子书 - [免费的计算机编程类中文书籍](https://github.com/justjavac/free-programming-books-zh_CN) - 免费 API - [统计了网上诸多的免费API,为您收集免费的接口服务,做一个api的搬运工](https://github.com/fangzesheng/free-api) - 免费 代理 - 免费 电影 - [各大网站vip视频免费观看 等 Mac版。付费电影,VIP会员剧等,去广告播放。](https://github.com/iodefog/VipVideo) - 搜索 free - 免费 英文电子书 - 免费 从入门到精通 教程 - 造轮子 [build-your-own-x](https://github.com/danistefanovic/build-your-own-x) - 免费 IP代理 - https://github.com/jiangxianli/ProxyIpLib - 验证有效 ================================================ FILE: 2020/3-16-GitHub-Free/proxy_list1.py ================================================ # -*- encoding: utf-8 -*- ''' @File : proxy_list1.py @Time : 2020/03/16 10:32:51 @Author : play4fun @Desc : ''' import requests import shelve from verify_proxy import verify from time import sleep dbp = 'proxy_list1' def main(): pList = get_proxy() # with shelve.open(dbp) as db: # # pList = db.get('pList', get_proxy()) # pList = db.get('pList', []) print('-' * 40) proxy_list = [f'{d["protocol"]}://{d["ip"]}:{d["port"]}' for d in pList] rsl = map(verify, proxy_list) rsl2 = filter(lambda x: x[0] is True, rsl) rsl3 = sorted(rsl2, key=lambda x: x[2]) print('-' * 40) print('合格代理:', len(rsl3)) print(rsl3) with shelve.open(dbp) as db: # 保存下来 db['verifyed'] = rsl3 pass def get_proxy(): pList = [] for i in range(1, 11): sleep(2)#并发限制 url = f'https://www.freeip.top/api/proxy_ips?country=%E4%B8%AD%E5%9B%BD&page={i}&order_by=validated_at&order_rule=DESC' try: rs = requests.get(url) js = rs.json() except Exception as e: print(e) continue l1 = [d for d in js['data']['data'] if d['protocol'] == 'https'] # 只需要https代理 pList += l1 # break with shelve.open(dbp) as db: db['pList'] = pList print('获取到https代理:', len(pList)) return pList if __name__ == "__main__": main() ================================================ FILE: 2020/3-16-GitHub-Free/verify_proxy.py ================================================ # -*- encoding: utf-8 -*- ''' @File : verify_proxy.py @Time : 2020/03/15 09:49:45 @Author : play4fun @Desc : https://github.com/jiangxianli/ProxyIpLib https://www.freeip.top/?page=1&protocol=https https://144.76.214.154:1080 ''' import requests from time import time def verify(proxy: str): print('-' * 20) start = time() proxies = {"http": proxy, "https": proxy} url = 'https://httpbin.org/ip' try: rs = requests.get(url, proxies=proxies, verify=True, timeout=10) except Exception as e: print(e) return False, proxy, 0 spendT = time() - start # print(rs.text) request_time = rs.elapsed.total_seconds() print('花费时间', request_time, ':', spendT) js = rs.json() print(proxy, js['origin']) if js['origin'] in proxy: print('代理工作正常', True, proxy, request_time) return True, proxy, request_time return False, proxy, 0 pass def main(): # 计算 花费的时间 # proxy='https://144.76.214.154:1080'#不支持https ,可能是蜜罐 proxy = 'https://121.237.149.238:3000' # 延迟太长 proxy = 'https://180.183.51.135:8080' # proxy = 'https://128.199.184.93:8080' # rs = verify(proxy) print(rs) if __name__ == "__main__": main() ================================================ FILE: 2020/3-16-企业微信/QYWX_APP/WXBizMsgCrypt.py ================================================ #!/usr/bin/env python #-*- encoding:utf-8 -*- """ 对企业微信发送给企业后台的消息加解密示例代码. @copyright: Copyright (c) 1998-2014 Tencent Inc. """ # ------------------------------------------------------------------------ import base64 import string import random import hashlib import time from Crypto.Cipher import AES import xml.etree.cElementTree as ET import sys import ierror class FormatException(Exception): pass def throw_exception(message, exception_class=FormatException): """my define raise exception function""" raise exception_class(message) def generateNonce(digits = 16): """ 随机生成16位字符串 @return: 16位字符串 """ rule = string.ascii_lowercase + string.digits str = random.sample(rule, digits) return "".join(str) class SHA1: """计算企业微信的消息签名接口""" def getSHA1(self, token, timestamp, nonce, encrypt): """用SHA1算法生成安全签名 @param token: 票据 @param timestamp: 时间戳 @param encrypt: 密文 @param nonce: 随机字符串 @return: 安全签名 """ try: sortlist = [token, timestamp, nonce, encrypt] sortlist.sort() sha = hashlib.sha1() sha.update("".join(sortlist).encode('utf-8')) return ierror.WXBizMsgCrypt_OK, sha.hexdigest() except Exception as e: print(e) return ierror.WXBizMsgCrypt_ComputeSignature_Error, None class XMLParse: """提供提取消息格式中的密文及生成回复消息格式的接口""" # xml消息模板 AES_TEXT_RESPONSE_TEMPLATE = ''+\ ''+\ ''+\ '%(timestamp)s'+\ ''+\ '' def extract(self, xmltext): """提取出xml数据包中的加密消息 @param xmltext: 待提取的xml字符串 @return: 提取出的加密消息字符串 """ try: xml_tree = ET.fromstring(xmltext) encrypt = xml_tree.find("Encrypt") return ierror.WXBizMsgCrypt_OK, encrypt.text except Exception as e: print(e) return ierror.WXBizMsgCrypt_ParseXml_Error,None,None def generate(self, encrypt, signature, timestamp, nonce): """生成xml消息 @param encrypt: 加密后的消息密文 @param signature: 安全签名 @param timestamp: 时间戳 @param nonce: 随机字符串 @return: 生成的xml字符串 """ resp_dict = { 'msg_encrypt' : encrypt, 'msg_signaturet': signature, 'timestamp' : timestamp, 'nonce' : nonce, } resp_xml = self.AES_TEXT_RESPONSE_TEMPLATE % resp_dict return resp_xml class ResponseMessage(): # python dict 转换成特定格式的xml,下面是一些模板 """ text_response = { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'text', 'content':'', } voice_response= { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'voice', 'media_id':'' } image_response= { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'image', 'data':[ {'media_id':''} ] } video_response= { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'video', 'media_id':'', 'title':'', 'description':'', } article_response= { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'news', 'data':[ {'title':'', 'description':'', 'pic_url':'', 'url':'', } ] } """ BASIC_RESPONSE_FIELDS = ''+\ ''+\ '%(timestamp)s'+\ '' TEXT_RESPONSE_FIELD = "" VOICE_RESPONSE_FIELD = "" IMAGE_RESPONSE_FIELD = "" VIDEO_RESPONSE_FIELD = '' ARTICLE_RESPONSE_FIELD = ''+\ '<![CDATA[%(title)s]]>'+\ ''+\ '' +\ ''+\ '' def __init__(self,data_dict): if 'timestamp' not in data_dict: data_dict['timestamp'] = str(int(time.time())) self.data = data_dict @property def xml(self): basic = self.BASIC_RESPONSE_FIELDS % self.data # text message if self.data['type'] == 'text': return '' + basic + self.TEXT_RESPONSE_FIELD % self.data + '' # image message elif self.data['type'] == 'image': tmp = '' for d in self.data['data']: tmp = tmp + self.IMAGE_RESPONSE_FIELD % d return '' + basic + '' +tmp+ '' # voice message elif self.data['type'] == 'voice': return '' + basic + self.VOICE_RESPONSE_FIELD % self.data + '' # video message elif self.data['type'] == 'video': return '' + basic + self.VIDEO_RESPONSE_FIELD % self.data + '' # news message elif self.data['type'] == 'news': tmp = '' for d in self.data['data']: tmp = tmp + self.ARTICLE_RESPONSE_FIELD % d count = ""+str(len(self.data['data']))+"" return '' + basic + count + '' +tmp+ '' else: return None class PKCS7Encoder(): """提供基于PKCS7算法的加解密接口""" block_size = 32 def encode(self, text): """ 对需要加密的明文进行填充补位 @param text: 需要进行填充补位操作的明文 @return: 补齐明文字符串 """ text_length = len(text) # 计算需要填充的位数 amount_to_pad = self.block_size - (text_length % self.block_size) if amount_to_pad == 0: amount_to_pad = self.block_size # 获得补位所用的字符 pad = chr(amount_to_pad) if type(text) == bytes: return text + amount_to_pad * amount_to_pad.to_bytes(1,'big') return text + pad * amount_to_pad def decode(self, decrypted): """删除解密后明文的补位字符 @param decrypted: 解密后的明文 @return: 删除补位字符后的明文 """ pad = decrypted[-1] if pad<1 or pad >32: pad = 0 return decrypted[:-pad] class Prpcrypt(object): """提供接收和推送给企业微信消息的加解密接口""" def __init__(self,key): #self.key = base64.b64decode(key+"=") self.key = key # 设置加解密模式为AES的CBC模式 self.mode = AES.MODE_CBC def encrypt(self,text,receiveid): """对明文进行加密 @param text: 需要加密的明文 @return: 加密得到的字符串 """ # 16位随机字符串添加到明文开头 text_bytes = text.encode('utf8') text = generateNonce().encode('utf8') + int.to_bytes(len(text_bytes),4,byteorder='big') + text_bytes + receiveid.encode('utf8') # 使用自定义的填充方式对明文进行补位填充 pkcs7 = PKCS7Encoder() text = pkcs7.encode(text) # 加密 cryptor = AES.new(self.key,self.mode,self.key[:16]) try: ciphertext = cryptor.encrypt(text) # 使用BASE64对加密后的字符串进行编码 return ierror.WXBizMsgCrypt_OK, base64.b64encode(ciphertext).decode('utf8') except Exception as e: print(e) return ierror.WXBizMsgCrypt_EncryptAES_Error,None def decrypt(self,text,receiveid): """对解密后的明文进行补位删除 @param text: 密文 @return: 删除填充补位后的明文 """ try: cryptor = AES.new(self.key,self.mode,self.key[:16]) # 使用BASE64对密文进行解码,然后AES-CBC解密 plain_text = cryptor.decrypt(base64.b64decode(text)) except Exception as e: print(e) return ierror.WXBizMsgCrypt_DecryptAES_Error,None try: #pad = plain_text[-1] # 去掉补位字符串 pkcs7 = PKCS7Encoder() plain_text = pkcs7.decode(plain_text) xml_len = int.from_bytes(plain_text[16:20],byteorder='big') xml_content = plain_text[20 : 20 + xml_len].decode('utf-8') from_receiveid = plain_text[20 + xml_len:].decode('utf-8') except Exception as e: print(e) return ierror.WXBizMsgCrypt_IllegalBuffer,None if from_receiveid != receiveid: return ierror.WXBizMsgCrypt_ValidateCorpid_Error,None return 0,xml_content class WXBizMsgCrypt(object): #构造函数 def __init__(self,sToken,sEncodingAESKey,sReceiveId): try: self.key = base64.b64decode(sEncodingAESKey+"=") assert len(self.key) == 32 except: throw_exception("[error]: EncodingAESKey unvalid !", FormatException) # return ierror.WXBizMsgCrypt_IllegalAesKey,None self.m_sToken = sToken self.m_sReceiveId = sReceiveId #验证URL #@param sMsgSignature: 签名串,对应URL参数的msg_signature #@param sTimeStamp: 时间戳,对应URL参数的timestamp #@param sNonce: 随机串,对应URL参数的nonce #@param sEchoStr: 随机串,对应URL参数的echostr #@param sReplyEchoStr: 解密之后的echostr,当return返回0时有效 #@return:成功0,失败返回对应的错误码 def VerifyURL(self, sMsgSignature, sTimeStamp, sNonce, sEchoStr): sha1 = SHA1() ret,signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, sEchoStr) if ret != 0: return ret, None if not signature == sMsgSignature: return ierror.WXBizMsgCrypt_ValidateSignature_Error, None pc = Prpcrypt(self.key) ret,sReplyEchoStr = pc.decrypt(sEchoStr,self.m_sReceiveId) return ret,sReplyEchoStr def EncryptMsg(self, sReplyMsg, sNonce, timestamp = None): #将企业回复用户的消息加密打包 #@param sReplyMsg: 企业号待回复用户的消息,xml格式的字符串 #@param sTimeStamp: 时间戳,可以自己生成,也可以用URL参数的timestamp,如为None则自动用当前时间 #@param sNonce: 随机串,可以自己生成,也可以用URL参数的nonce #sEncryptMsg: 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的xml格式的字符串, #return:成功0,sEncryptMsg,失败返回对应的错误码None pc = Prpcrypt(self.key) ret,encrypt = pc.encrypt(sReplyMsg, self.m_sReceiveId) if ret != 0: return ret,None if timestamp is None: timestamp = str(int(time.time())) # 生成安全签名 sha1 = SHA1() ret,signature = sha1.getSHA1(self.m_sToken, timestamp, sNonce, encrypt) if ret != 0: return ret,None xmlParse = XMLParse() return ret,xmlParse.generate(encrypt, signature, timestamp, sNonce) def DecryptMsg(self, sPostData, sMsgSignature, sTimeStamp, sNonce): # 检验消息的真实性,并且获取解密后的明文 # @param sMsgSignature: 签名串,对应URL参数的msg_signature # @param sTimeStamp: 时间戳,对应URL参数的timestamp # @param sNonce: 随机串,对应URL参数的nonce # @param sPostData: 密文,对应POST请求的数据 # xml_content: 解密后的原文,当return返回0时有效 # @return: 成功0,失败返回对应的错误码 # 验证安全签名 xmlParse = XMLParse() ret,encrypt = xmlParse.extract(sPostData) if ret != 0: return ret, None sha1 = SHA1() ret,signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, encrypt) if ret != 0: return ret, None if not signature == sMsgSignature: return ierror.WXBizMsgCrypt_ValidateSignature_Error, None pc = Prpcrypt(self.key) ret,xml_content = pc.decrypt(encrypt,self.m_sReceiveId) return ret,xml_content ================================================ FILE: 2020/3-16-企业微信/QYWX_APP/callback1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/3/16 15:41 # @File : callback1.py """ callback1.py: """ import time from flask import Flask, request, jsonify import xml.etree.cElementTree as ET from config import CorpID, Secret, Token, EncodingAESKey from WXBizMsgCrypt import WXBizMsgCrypt, ResponseMessage, generateNonce app = Flask(__name__) wxcpt = WXBizMsgCrypt(Token, EncodingAESKey, CorpID) @app.route('/') def hello_world(): d = {'msg': 'Hello from Flask! play for fun!'} return jsonify(d) @app.route('/weixin', methods=['GET']) def weixin(): print('/weixin') # 获取输入参数 if request.method == 'GET': try: args = request.args print(args) # print request.args.get('kw', "") sVerifyMsgSig = request.args.get('msg_signature', "") sVerifyTimeStamp = request.args.get('timestamp', "") sVerifyNonce = request.args.get('nonce', "") sVerifyEchoStr = request.args.get('echostr', "") ret, sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr) print(ret, sEchoStr) if ret != 0: print("ERR: VerifyURL ret: " + str(ret)) return "ERR: VerifyURL ret: " + str(ret) return sEchoStr except ValueError as e: print("ValueError", e) # abort(404) # 返回 404 return "NULL" return 'NULL' @app.route('/weixin', methods=['POST']) def reply(): if request.method == 'POST': data = request.data # data=b'' #测试 curl -X POST 'http://127.0.0.1:5000/weixin?msg_signature=4e411db7d0507473882bb5718438364ab5a17bec×tamp=1584351579&nonce=1584033068' print(data) encrypted_xml = data sVerifyMsgSig = request.args.get('msg_signature') sVerifyNonce = request.args.get('nonce') sVerifyTimeStamp = request.args.get('timestamp') ret, xml_content = wxcpt.DecryptMsg(encrypted_xml, sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce) if ret != 0: print("ERR: VerifyURL ret: " + str(ret)) return "ERR: VerifyURL ret: " + str(ret) # type_fields = { "text": ["ToUserName", "FromUserName", "CreateTime", "MsgType", "Content", "MsgId", "AgentID"], "image": ["ToUserName", "FromUserName", "CreateTime", "MsgType", "PicUrl", "MediaId", "MsgId", "AgentID"], "voice": ["ToUserName", "FromUserName", "CreateTime", "MsgType", "Format", "MediaId", "MsgId", "AgentID"], "video": ["ToUserName", "FromUserName", "CreateTime", "MsgType", "ThumbMediaId", "MediaId", "MsgId", "AgentID"], "location": ["ToUserName", "FromUserName", "CreateTime", "MsgType", "Location_X", "Location_Y", "Scale", "Label", "MsgId", "AgentID"], "link": ["ToUserName", "FromUserName", "CreateTime", "MsgType", "Title", "Description", "PicUrl", "MsgId", "AgentID"] } xml_tree = ET.fromstring(xml_content) type_name = xml_tree.find("MsgType").text msg = {} for nodename in type_fields[type_name]: msg[nodename] = xml_tree.find(nodename).text # 示例,原文返回 print(msg) message = msg replystr = '收到:\n' + message['Content'] resp_dict = { 'to_user': message['FromUserName'], 'from_user': message['ToUserName'], 'type': 'text', 'content': replystr, } xml_message = ResponseMessage(resp_dict).xml nonce = generateNonce() ret, returnMsg = wxcpt.EncryptMsg(xml_message, nonce) if ret != 0: print("ERR: VerifyURL ret: " + str(ret)) return "ERR: VerifyURL ret: " + str(ret) return returnMsg return 'NULL' class ResponseMessage(): # python dict 转换成特定格式的xml,下面是一些模板 """ text_response = { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'text', 'content':'', } voice_response= { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'voice', 'media_id':'' } image_response= { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'image', 'data':[ {'media_id':''} ] } video_response= { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'video', 'media_id':'', 'title':'', 'description':'', } article_response= { 'to_user':'', 'from_user':'', 'timestamp':'', 'type':'news', 'data':[ {'title':'', 'description':'', 'pic_url':'', 'url':'', } ] } """ BASIC_RESPONSE_FIELDS = '' + \ '' + \ '%(timestamp)s' + \ '' TEXT_RESPONSE_FIELD = "" VOICE_RESPONSE_FIELD = "" IMAGE_RESPONSE_FIELD = "" VIDEO_RESPONSE_FIELD = '' ARTICLE_RESPONSE_FIELD = '' + \ '<![CDATA[%(title)s]]>' + \ '' + \ '' + \ '' + \ '' def __init__(self, data_dict): if 'timestamp' not in data_dict: data_dict['timestamp'] = str(int(time.time())) self.data = data_dict @property def xml(self): basic = self.BASIC_RESPONSE_FIELDS % self.data # text message if self.data['type'] == 'text': return '' + basic + self.TEXT_RESPONSE_FIELD % self.data + '' # image message elif self.data['type'] == 'image': tmp = '' for d in self.data['data']: tmp = tmp + self.IMAGE_RESPONSE_FIELD % d return '' + basic + '' + tmp + '' # voice message elif self.data['type'] == 'voice': return '' + basic + self.VOICE_RESPONSE_FIELD % self.data + '' # video message elif self.data['type'] == 'video': return '' + basic + self.VIDEO_RESPONSE_FIELD % self.data + '' # news message elif self.data['type'] == 'news': tmp = '' for d in self.data['data']: tmp = tmp + self.ARTICLE_RESPONSE_FIELD % d count = "" + str(len(self.data['data'])) + "" return '' + basic + count + '' + tmp + '' else: return None if __name__ == '__main__': app.run(debug=True) # main() ================================================ FILE: 2020/3-16-企业微信/QYWX_APP/config.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/3/16 15:49 # @File : config.py """ config.py: """ # 企业微信>应用管理>新建 CorpID = 'wwefbaf556ae3d20639' Secret = 'fbeCSHwvc4xtCQmM8jQbgYiHBF0beW2BbuYEJhO5ULg' Token = '5gq5U7GBSOSI' EncodingAESKey = 'AiT1IIIrORt41FyHIGKnUoXPzFHAp8DmlpbAjDzdr4M' ================================================ FILE: 2020/3-16-企业微信/QYWX_APP/ierror.py ================================================ #!/usr/bin/env python # -*- coding: utf-8 -*- ######################################################################### # Author: jonyqin # Created Time: Thu 11 Sep 2014 01:53:58 PM CST # File Name: ierror.py # Description:定义错误码含义 ######################################################################### WXBizMsgCrypt_OK = 0 WXBizMsgCrypt_ValidateSignature_Error = -40001 WXBizMsgCrypt_ParseXml_Error = -40002 WXBizMsgCrypt_ComputeSignature_Error = -40003 WXBizMsgCrypt_IllegalAesKey = -40004 WXBizMsgCrypt_ValidateCorpid_Error = -40005 WXBizMsgCrypt_EncryptAES_Error = -40006 WXBizMsgCrypt_DecryptAES_Error = -40007 WXBizMsgCrypt_IllegalBuffer = -40008 WXBizMsgCrypt_EncodeBase64_Error = -40009 WXBizMsgCrypt_DecodeBase64_Error = -40010 WXBizMsgCrypt_GenReturnXml_Error = -40011 ================================================ FILE: 2020/3-16-企业微信/QYWX_APP/安装.md ================================================ pip3 install pycryptodome ================================================ FILE: 2020/3-16-企业微信/README.md ================================================ # 企业微信 Python编程 - 视频 [企业微信【群机器人】轻松上手,企业应用App接收和回复用户消息,Python编程](https://www.bilibili.com/video/av96809101/) - 群机器人 - 只能发送 - 不能接收 同事或用户的消息 - [群机器人配置说明](https://work.weixin.qq.com/api/doc/90000/90136/91770) - Python库 https://github.com/MakDon/we-work-bot - 企业应用 新建App - 文档 - [接收消息与事件](https://work.weixin.qq.com/api/doc/10514) - [企业微信接口调试工具](https://work.weixin.qq.com/api/devtools/devtool.php) - [加解密方案说明](https://work.weixin.qq.com/api/doc/90000/90139/90968) - [加解密库下载与返回码](https://work.weixin.qq.com/api/doc/90000/90138/90307) - 部署在服务器 - https://play4fun.pythonanywhere.com/ - 解密接口 python3 - https://github.com/sbzhu/weworkapi_python/tree/master/callback - Django https://github.com/neo20/BizWxCryptor ================================================ FILE: 2020/3-16-企业微信/bot1.py ================================================ # -*- encoding: utf-8 -*- ''' @File : bot1.py @Time : 2020/03/15 11:21:27 @Author : play4fun @Desc : https://github.com/MakDon/we-work-bot ''' from weworkbot import Bot as wBot def main(): url='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=2a599e1c-9ec7-4f64-ad18-cf7cdfdca8249' rs=wBot(url).set_text("hello from Python3,使用vscode编辑").send() wBot(url).set_text('markdown HTML文本,测试', type='markdown').send() print('发送成功?') pass if __name__ == "__main__": main() ================================================ FILE: 2020/3-17-Auto.js/Programer-Pay-Solution.md ================================================ # 个人开发者-支付方案 - 视频 [Auto.js+ mitmproxy个人开发者-支付方案,没有营业执照也可以向客户收款,自动监听【收款小账本】小程序](https://www.bilibili.com/video/av97288306/) - 微信支付,付款码 - 用Auto.js批量生成 付款二维码,1000个 - 发给用户 - 用户支付 - mitmproxy 监听 【收款小账本】小程序 - 收款记录 - 自定义查询 - 近24小时 - mitmproxy可以编写Python程序,自动监控网络流量 - 过滤域名 ~d httpbin - 过滤域名 ~d pay ## 最简单的方案 - 生成固定金额的付款码 - 用户下单 - 付款码发给用户 - 同时生成一个 随机字符串 ,3位 X4y - 让用户在付款时,把【随机字符串】输入【备注】 - 否则不退款 - 用户点击【已付款】按钮 - 服务器 通过mitmproxy监听【收款小账本】小程序的接口 - 更新 收款信息 - 对比【随机字符串】 - 给用户发货 ================================================ FILE: 2020/3-17-Auto.js/README.md ================================================ # Auto.js 不需要Root权限的JavaScript自动化软件 - https://github.com/hyb1996/Auto.js - 文档 https://hyb1996.github.io/AutoJs-Docs/#/ - 视频 [快速上手!Auto.js从入门到精通](https://www.bilibili.com/video/av96970457/) - 用途 - 薅羊毛 - 方便手机用户执行常用操作,签到 - 不能下载,被下架 - https://github.com/hyb1996/Auto.js/issues/500 - 微信云盘 - 链接: https://share.weiyun.com/5HWiMTR (密码:awEw) - Auto.js_V4.0.1 Beta.apk - 安装后 - 无障碍服务 - 悬浮窗 - 连接电脑 VSCode - VSCode 插件 - https://github.com/hyb1996/Auto.js-VSCode-Extension - 手机连接电脑,远程开发 - 案例-教程 - https://github.com/hyb1996/Auto.js/tree/master/app/src/main/assets/sample - svn export https://github.com/hyb1996/Auto.js/trunk//app/src/main/assets/sample - 参考 - [基于Auto.js的辅助工具项目 (蚂蚁森林) ](https://github.com/SuperMonster003/Auto.js_Projects/tree/Ant_Forest) - [Auto.js脚本:蚂蚁森林收能量 星星球 京东金融签到 微信运动点赞等](https://github.com/e1399579/autojs) - [[微信][支付宝]扫码支付 NO ROOT](https://www.autojs.org/topic/3117/%E5%BE%AE%E4%BF%A1-%E6%94%AF%E4%BB%98%E5%AE%9D-%E6%89%AB%E7%A0%81%E6%94%AF%E4%BB%98-no-root) - [常用移动应用 Packagename 和 URL Scheme](https://www.zybuluo.com/jean/note/286981) - [auto.js的使用以及薅羊毛插件示例](https://zhuanlan.zhihu.com/p/72319859) - [Auto.js使用教程合辑](https://www.autojs.org/topic/2998/auto-js%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E5%90%88%E8%BE%91) ================================================ FILE: 2020/3-17-Auto.js/微信/微信-收款码-输入金额-备注.js ================================================ auto(); //微信Android版本:7.0.10 //验证成功 //日志输出 function tLog(msg) { toast(msg); console.log(msg) } //进入【收款码】页面 toast("输入金额"); //点击成功 setScreenMetrics(1080, 2340);//屏幕截图,便能看到分辨率 click(322,1110);//控件的边界 bounds = (306,1102,458,1154) id("dm").findOne().setText("21.58") //不成功 //添加收钱备注 id("b2e").findOne().click()//太快了 sleep(3000) tLog("添加收钱备注 waitFor"); id("cdb").waitFor() var input1=id("cdb").findOne() input1.click()//先点击再输入 sleep(2000) toast('先点击再输入') input1.setText("f5j2fr89HIWfx")//不行 sleep(3000) id("b49").findOne().click()//确定,返回 //点击,确定 sleep(3000) id("b2f").findOne().click() toast("点击,确定"); sleep(3000) //保存收款码 // bounds = (622,1227,812,1279) click(700,1230); //监听toast日志 ================================================ FILE: 2020/3-17-Auto.js/微信/微信-收款码-输入金额-捕捉toast.js ================================================ auto(); //微信Android版本:7.0.10 //验证成功 //监听toast日志 //11:58:40.480/D: // Toast内容: 图片已保存至/storage/emulated/999/tencent/MicroMsg/WeiXin/mm_facetoface_collect_qrcode_1584503919894.png 文件夹 // 来自: 微信 // 包名: com.tencent.mm var price = "349.78" events.observeToast(); events.onToast(function (toast) { var pkg = toast.getPackageName(); var txt = toast.getText() log("Toast内容: " + txt + " 来自: " + getAppName(pkg) + " 包名: " + pkg); if (pkg === 'com.tencent.mm') { //正则 var reg = new RegExp('\/storage\/emulated\/999\/tencent\/MicroMsg\/WeiXin\/mm_facetoface_collect_qrcode_(\\d+).png'); var fp = txt.match(reg)[0] log(fp) //ls /storage/emulated/999 // ls: /storage/emulated/999: Permission denied var new_fp = '/sdcard/Download/wechat-pay-qr/' + price + '.png' //文件重命名 // sleep(1000) files.copy(fp, new_fp);//可以复制,不能move //只有最后一个文件被复制,为什么? log('文件重命名:' + new_fp) } }); //进入【收款码】页面 // className("android.widget.TextView").text("二维码收款").findOne().click() //不行 function create(price) { toast("输入金额"); //点击成功 setScreenMetrics(1080, 2340);//屏幕截图,便能看到分辨率 click(322, 1110);//控件的边界 bounds = (306,1102,458,1154) id("dm").findOne().setText(price) //点击,确定 id("b2f").findOne().click() toast("点击,确定"); sleep(3000) //保存收款码 // bounds = (622,1227,812,1279) click(700, 1230); sleep(3000) //消除金额 toast('消除金额') // id("b30").findOne().click()//不行 // id("list").findOne().children().forEach(child => { // var target = child.findOne(id("b30")); // target.click(); // }); // bounds = (306,1227,458,1279) click(400, 1240) sleep(1000) // back() } for (i = 4512; i < 4516; i++) { price=''+i/100 log('价格:',price); create(price) sleep(2000) } ================================================ FILE: 2020/3-17-Auto.js/微信/微信-收款码-输入金额.js ================================================ //微信Android版本:7.0.10 //验证成功 //进入【收款码】页面 toast("输入金额"); //点击成功 setScreenMetrics(1080, 2340);//屏幕截图,便能看到分辨率 click(322,1110);//控件的边界 bounds = (306,1102,458,1154) id("dm").findOne().setText("13.98") //点击,确定 id("b2f").findOne().click() toast("点击,确定"); sleep(3000) //保存收款码 // bounds = (622,1227,812,1279) click(700,1230); //监听toast日志 ================================================ FILE: 2020/3-17-Auto.js/微信/微信1.js ================================================ toast("启动App"); //启动微信 launch("com.tencent.mm"); ================================================ FILE: 2020/3-17-Auto.js/微信/收款码.js ================================================ //进入【收款码】页面 toast("付款"); //设置金额 // id("list").findOne().children().forEach(child => { // var target = child.findOne(id("b2n")); // target.click();//不行 // }); var getM = text("设置金额"); if (getM.exists()) { toast("找到 收钱 text"); }else{ toast("找不到 收钱 text"); } sleep(1000) if (!getM.findOnce().click()){ toast("点击失败?"); }else{ toast("点击成功");//不生效 } //点击成功 setScreenMetrics(1080, 2340); click(322,1110);//控件的边界 bounds = (306,1102,458,1154) ================================================ FILE: 2020/3-17-Auto.js/打开QQ聊天.js ================================================ //https://hyb1996.github.io/AutoJs-Docs/#/app //先运行Auto.js var qq = "2262965903"; app.startActivity({ action: "android.intent.action.VIEW", data:"mqq://im/chat?chat_type=wpa&version=1&src_type=web&uin=" + qq, packageName: "com.tencent.mobileqq", }); // 打字,发送 // ui.input.setText('73.57') id("input").findOne().setText('晚上好啊,晚上好啊,晚上好啊1111') toast("输入 文本");// id("fun_btn").findOne().click()//发送 //OK 搞定 ================================================ FILE: 2020/3-18-Docker-PHP-dataoke/PHP/README.md ================================================ - 本地测试 ## 修改hosts ``` vi /etc/hosts 127.0.0.1 youhui.dark.net.cn ``` - 参考 php:fmp - https://www.runoob.com/docker/docker-install-php.html ## Docker https://hub.docker.com/_/php?tab=description 下载 docker pull php:5.6-fpm ## 大淘客cms https://www.dataoke.com/pmc/basic.html 下载index.php文件并上传到您自己的服务器 CMS:高效转链PID 用户在cms购买时使用该PID为您转链 更新授权 docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php php phpinfo.php 需要Nginx来配合 ## 启动PHP OK docker run --name myphp-fpm -v "$PWD"/nginx/www:/www php:5.6-fpm ## 启动nginx ``` docker run -p 80:80 -it --rm \ -v "$PWD"/nginx/www:/usr/share/nginx/html:ro \ -v "$PWD"/nginx/conf/conf.d:/etc/nginx/conf.d:ro \ --link myphp-fpm:php \ nginx ``` ## 浏览器打开 - http://youhui.dark.net.cn/ - demo网站 http://www.yangchun.so/ ================================================ FILE: 2020/3-18-Docker-PHP-dataoke/PHP/nginx/conf/conf.d/php.conf ================================================ server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; } } ================================================ FILE: 2020/3-18-Docker-PHP-dataoke/PHP/nginx/www/index.html ================================================ hello 测试一下

hi 测试一下

测试一下
测试一下,测试一下,测试一下
================================================ FILE: 2020/3-18-Docker-PHP-dataoke/PHP/nginx/www/index.php ================================================ strtotime('-1 day')) { $is_host_data = true; } } if ($is_host_data == false) { $host_data = array( 'http://cms1.dataoke.com' => 0, 'http://cms2.dataoke.com' => 0, 'http://cmsserver1.dataoke.com' => 0, 'http://cmsserver2.dataoke.com' => 0, ); @file_put_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . '/dtk.data', @json_encode(array('host'=>$host_data,'time'=>time()))); } } catch (Exception $e) { } $test_env = strrpos(@$_SERVER['HTTP_USER_AGENT'], 'test') === false ? false : true; $requestMethod = strtoupper(@$_SERVER["REQUEST_METHOD"]); $requestUrl = @$_SERVER["REQUEST_URI"]; if ($test_env) { ini_set("display_errors", "On"); error_reporting(E_ALL | E_STRICT); }else{ @ini_set("display_errors", "Off"); } $css_static = @date('Y-m-d'); $html_500=<<

咦?出错啦,请稍后再试~

点击刷新

html; //debug if ($test_env && isset($_GET['debug']) && $_GET['debug'] == 'php') { header("Content-type: text/html; charset=utf-8"); echo 'cms 版本:' . $proxyVersion . '
'; echo 'php 版本:' . PHP_VERSION . '
'; if (function_exists('curl_init')) { echo 'curl 已经开启 ' . '
'; } else { echo 'curl 未开启,请先开启curl扩展,否则无法运行,请联系您的空间或者服务器提供商' . '
'; } if (function_exists('mb_substr')) { echo 'mbstring 已经开启 ' . '
'; } else { echo 'mbstring 未开启,请先开启mbstring扩展,否则无法运行' . '
'; } $test_dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cache'; $test_file = $test_dir . '/test.txt'; if (!is_dir($test_dir)) { @mkdir($test_dir); } @file_put_contents($test_file, 'test'); if (file_exists($test_file)) { echo 'cache:有效
'; } else { echo 'cache 无效,请设置读写修改权限' . '
'; } if(function_exists('gethostbyname')){ echo $host.' --CDN 节点 ---'.gethostbyname(str_replace('http://','',$host)).'
'; echo 'www.dataoke.com --CDN 节点 ---'.gethostbyname("www.dataoke.com"); } exit; } if ($test_env && isset($_GET['debug']) && $_GET['debug'] == 'fast') { var_dump($host_data);exit; } $cache = new CacheHelper(); if (isset($_REQUEST['clean'])) { $cache->clean(); header("Content-type: text/html; charset=utf-8"); echo '已清除缓存'; exit; } if (mt_rand(0, $autoCleanCache) == 1) { $cache->clean(); } $key = md5($requestUrl . CacheHelper::isMobile().CacheHelper::isHttps() . CacheHelper::isIPad() . CacheHelper::isIPhone() . CacheHelper::isMicroMessenger().CacheHelper::isWeibo().CacheHelper::isSpider()); if ($requestMethod == 'GET') { if (!$test_env) { $cacheData = $cache->Get($key); if ($cacheData !== false && !empty($cacheData)) { @header('Dtk-Cache-Check:2'); echo $cacheData; exit; } } } $documentUrl = @$_SERVER["PHP_SELF"]; if (empty($documentUrl)) { $documentUrl = @$_SERVER["SCRIPT_NAME"]; } if (empty($documentUrl)) { $documentUrl = @$_SERVER["DOCUMENT_URI"]; } if (empty($documentUrl)) { $documentUrl = $requestUrl; $str_pos = strpos($requestUrl, '?'); if ($str_pos !== false) { $documentUrl = substr($requestUrl, 0, $str_pos); } } if(empty($documentUrl)){ $documentUrl='/index.php'; } if (!function_exists('gzdecode')) { if (file_exists('gzinflate')) { function gzdecode($data) { return @gzinflate(substr($data, 10, -8)); } } } $httpHelper = new HttpHelper($appId, $appKey, $proxyVersion, $documentUrl); $httpHelper->host_data = $host_data; if ($is_host_data) { $fast_host = $httpHelper->getFastUrl(); if (!empty($fast_host)) { $host = $fast_host; } } $html = $httpHelper->getHtml($host, $requestUrl, $requestMethod == 'POST' ? @$_POST : array(), $requestMethod); if(function_exists('gzdecode')){ if(!empty($html)){ $new_html = @gzdecode($html); if(!empty($new_html)){ $html = $new_html; } } } if (strpos($html, 'OR--server error') !== false) { $html = ''; } if ($requestMethod == 'GET' && $httpHelper->httpCode == 200 && !empty($html) && !$test_env) { $cache_check = !empty($_COOKIE['cache_check']) ? $_COOKIE['cache_check'] : null; $expire = empty($cache_check) ? 60 : 600; @header('Dtk-Cache-Check-time:'.$expire); $cache->Set($key, $html, $expire); } if (!empty($html)) { echo $html; }else{ $duration = 3600+time(); @setcookie('cache_check', 1, $duration, '/'); echo $html_500; } exit; class HttpHelper { protected $appId; protected $key; protected $documentUrl; protected $proxyVersion; protected $upgradeUrl = "http://www.dataoke.com/pmc/upgrade.html"; public $host_data = array(); public $httpCode = 200; public function __construct($appId, $key, $proxyVersion, $documentUrl) { $this->appId = $appId; $this->key = $key; $this->documentUrl = $documentUrl; $this->proxyVersion = $proxyVersion; } /** * @return int|string */ public function getFastUrl() { $host_data = $this->host_data; if (!empty($host_data['host'])) { $temp_v = ''; $temp_k = ''; $first = 0; foreach ($host_data['host'] as $k => $v) { if ($first > 0) { if ($v <= $temp_v) { $temp_v = $v; $temp_k = $k; } } else { $temp_v = $v; $temp_k = $k; } $first++; } return $temp_k; } } /**域名转换ip * @param $host * @return bool */ public function hostToIp($host){ $ip = false; $host_data = $this->host_data; if (!empty($host_data['ip'][$host]) && !empty($host_data['ip_time'][$host]) && $host_data['ip_time'][$host] > time()) { $ip = $host_data['ip'][$host]; } else { $ip = $this->getIp($host); if (!empty($ip)) { $host_data['ip'][$host] = $ip; $host_data['ip_time'][$host] = time() + 600; $this->host_data = $host_data; @file_put_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . '/dtk.data', @json_encode($host_data)); } } return $ip; } /**获取ip * @param $host * @return bool */ public function getIp($host,$re_try = false){ $output = ''; global $test_env; try{ $host = str_replace('http://','',$host); if (strlen($host) != (strpos($host, '.com') + 4)) { $host = substr($host, 0, strpos($host, '.com') + 4); } if($re_try){ $url = 'http://39.106.70.132:80/d?dn=' . $host; $header[] = 'Host: dighttpd.dataoke.com'; }else{ $url = 'http://crab.qingcdn.com/d?dn='.$host; } $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPGET, TRUE); curl_setopt($ch, CURLOPT_URL, $url); if(!empty($header)){ curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } $output = curl_exec($ch); $output = json_decode($output,true); }catch (Exception $e){ if ($test_env){ var_dump($e->getMessage()); } } if ($test_env && isset($_GET['debug']) && $_GET['debug'] == 'getip') { var_dump($output); var_dump($url); } return !empty($output['data'][$host]['ips']) ? $output['data'][$host]['ips'] : ($re_try? false: $this->getIp($host,true) ); } /** * @param $url * @param $requestUrl * @param array $param * @param string $method * @param bool $isAjax * @param string $cookie * @param string $refer * @param null $userAgent * @param bool $checkNewVersion * @return string */ public function getHtml($url, $requestUrl, $param = array(), $method = 'GET', $isAjax = null, $cookie = NULL, $refer = null, $userAgent = null, $checkNewVersion = true,$re_try = true) { $begin_time = @microtime(true); if (strpos($requestUrl, 'auth') !== false) { $url .= '/auth'; } if($requestUrl=='/favicon.ico'){ exit; } $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 1); empty($refer) && $refer = @$_SERVER['HTTP_REFERER']; $ua = $userAgent; empty($ua) && $ua = (!empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '-'); $curl_time = $re_try == true ? 5 : 40; curl_setopt($ch, CURLOPT_TIMEOUT, $curl_time); curl_setopt($ch, CURLOPT_USERAGENT, $ua); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $header = array( 'APPID: ' . $this->appId, 'APPKEY: ' . $this->key, 'PROXY-VERSION: ' . $this->proxyVersion, 'CMS-HOST: ' . @$_SERVER["HTTP_HOST"], 'CMS-CONNECTION: ' . (!empty($_SERVER["HTTP_CONNECTION"]) ? $_SERVER["HTTP_CONNECTION"] : '-'), 'CMS-ACCEPT-ENCODING: ' . (!empty($_SERVER["HTTP_ACCEPT_ENCODING"]) ? $_SERVER["HTTP_ACCEPT_ENCODING"] : '-'), 'DOCUMENT-URL: ' . $this->documentUrl, 'REQUEST-URL: ' . $requestUrl, ); $cdn_ip = $this->hostToIp($url); if(strpos($ua,'Baidu')!==false||strpos($ua,'spider')!==false|| $ua=='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'){ $url = 'http://cms6.dataoke.com'; $cdn_ip = false; } $origin_url = $url; if($cdn_ip!==false){ $url = str_replace('http://','',$url); $check_url_show = false; if (strpos($url, '/pmc/upgrade.html') !== false) { $check_url_show = true; $url = str_replace('/pmc/upgrade.html', '', $url); } $header[] = 'Host: ' . $url; if ($check_url_show) { $url = $cdn_ip[0] . '/pmc/upgrade.html'; } else { $url = $cdn_ip[0]; } } if(function_exists('gzdecode')){ $header[] = 'Accept-Encoding: gzip, deflate'; } //debug global $test_env; if ($test_env && isset($_GET['debug']) && $_GET['debug'] == 'header') { echo 'CMS-HOST: ' . @$_SERVER["HTTP_HOST"] . '
'; echo 'DOCUMENT-URL: ' . $this->documentUrl . '
'; echo 'REQUEST-URL: ' . $requestUrl . '
'; echo 'api-host-ip: ' . $url . '
'; echo 'api-host: ' . $origin_url . '
'; exit; } $_isAjax = false; if ($isAjax) { $_isAjax = true; } if (!$_isAjax && $isAjax === null) { $_isAjax = $this->getIsAjaxRequest(); } if ($_isAjax) { $header[] = 'X-Requested-With: XMLHttpRequest'; } $clientIp = $this->get_real_ip(); if (!empty($clientIp)) { $header[] = 'CLIENT-IP: ' . $clientIp; $header[] = 'CMS-CLIENT-IP: ' . $clientIp; $header[] = 'X-FORWARDED-FOR: ' . $clientIp; } curl_setopt($ch, CURLOPT_HTTPHEADER, $header); if (empty($cookie)) { $cookie = $_COOKIE; } if (is_array($cookie)) { $str = ''; foreach ($cookie as $k => $v) { $str .= $k . '=' . $v . '; '; } $cookie = $str; } if (!empty($cookie)) { curl_setopt($ch, CURLOPT_COOKIE, $cookie); } if (strtolower($method) == 'post') { curl_setopt($ch, CURLOPT_POST, TRUE); if ($param) { curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); } curl_setopt($ch, CURLOPT_URL, $url); } else { curl_setopt($ch, CURLOPT_HTTPGET, TRUE); if ($param) { $urlInfo = parse_url($url); $q = array(); if (isset($urlInfo['query']) && !empty($urlInfo['query'])) { parse_str($urlInfo['query'], $q); } $q = array_merge($q, $param); $cUrl = sprintf('%s://%s%s%s%s', $urlInfo['scheme'], $urlInfo['host'], isset($urlInfo['port']) ? ':' . $urlInfo['port'] : '', isset($urlInfo['path']) ? $urlInfo['path'] : '', count($q) ? '?' . http_build_query($q) : ''); curl_setopt($ch, CURLOPT_URL, $cUrl); } else { curl_setopt($ch, CURLOPT_URL, $url); } } try { $r = curl_exec($ch); // $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $curl_info = curl_getinfo($ch); $headerSize = isset($curl_info['header_size']) ? $curl_info['header_size'] : 0; $header = mb_substr($r, 0, $headerSize); $r = mb_substr($r, $headerSize); try { if (isset($curl_info['total_time'])) { $host_data = $this->host_data; if (isset($host_data['host'][$origin_url])) { if (empty($r)) { $host_data['host'][$origin_url] = $curl_info['total_time'] + 20; } else { $host_data['host'][$origin_url] = $curl_info['total_time']; } $this->host_data = $host_data; @file_put_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . '/dtk.data', json_encode($host_data)); } } } catch (Exception $e) { } $this->httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } catch (Exception $e) { return $re_try == true ? $this->getHtml($origin_url, $requestUrl, $param, $method, $isAjax, $cookie, $refer, $userAgent, $checkNewVersion, false) : ''; } unset($ch); $headers = explode("\r\n", $header); //debug if ($test_env && isset($_GET['debug']) && $_GET['debug'] == 'res') { if(function_exists('gzdecode')){ if(!empty($r)){ $r2 = @gzdecode($r); if(!empty($r2)){ $r = $r2; } } } var_dump($r); var_dump($this->httpCode); exit; } //debug if ($test_env && isset($_GET['debug']) && $_GET['debug'] == 'resheader') { var_dump($headers); exit; } if ($this->httpCode != 200) { if (function_exists('http_response_code')) { http_response_code($this->httpCode); } else { if ($this->httpCode !== 302) { $this->setHttpResponseCode($this->httpCode); } } }else{ if(empty($r)){ if (function_exists('http_response_code')) { http_response_code(500); } else { $this->setHttpResponseCode(500); } } } $expires = time() + 300; if(!empty($headers)){ foreach ($headers as $h) { $h = trim($h); if (empty($h) || preg_match('/^(HTTP|Connection|EagleId|Server|X\-Powered\-By|Date|Transfer\-Encoding|Content)/i', $h)) { continue; } if (strpos($h, 'expires:') !== false) { $temp_arr = explode(':', $h); if (!empty($temp_arr[1]) && is_numeric(trim($temp_arr[1]))) { $expires = intval(trim($temp_arr[1])); } } if (strpos($h, 'Cookie') !== false) { $h = explode(':', $h); if (!empty($h[1])) { $h = explode('=', $h[1]); if (!empty($h[0]) && !empty($h[1])) { @setcookie(trim($h[0]), trim($h[1]), $expires); } } } else { @header($h); } } } //debug if ($test_env && isset($_GET['debug']) && $_GET['debug'] == 'res1') { if(function_exists('gzdecode')){ if(!empty($r)){ $r2 = @gzdecode($r); if(!empty($r2)){ $r = $r2; } } } var_dump($r); var_dump($headers); exit; } if($re_try===false){ $Dtk_Cache_Check = 1; }else{ $Dtk_Cache_Check = 0; } $end_time = @microtime(true); try{ @header('Dtk-Cache-Check-'.$Dtk_Cache_Check.':'.($end_time-$begin_time)); }catch (Exception $e){ } if ($this->httpCode != 0 && $this->httpCode != 500 && $this->httpCode != 200 && $this->httpCode != 302) { return false; } if($this->httpCode==200 && $checkNewVersion){ foreach ($headers as $h) { if ( preg_match('/pv:\s*(?P\d+)/i', $h, $regs)) { $pv = $regs['pv']; if ($pv > $this->proxyVersion) { $this->upgrade(); } } } } return $re_try == true && empty($r) ? $this->getHtml($origin_url, $requestUrl, $param, $method, $isAjax, $cookie, $refer, $userAgent, $checkNewVersion, false) : $r; } function php_self(){ try { $php_self = substr(@$_SERVER['PHP_SELF'], strrpos(@$_SERVER['PHP_SELF'], '/') + 1); } catch (Exception $e) { $php_self = ''; } return $php_self; } protected function upgrade() { $php = $this->getHtml($this->upgradeUrl, '', array(), 'GET', false, null, null, null, false); if ($php === false || strlen($php) < 500) { return; } if (function_exists('gzdecode')) { if (!empty($php)) { $r2 = @gzdecode($php); if (!empty($r2)) { $php = $r2; } } } $php = @json_decode($php, true); if (empty($php['appid']) || empty($php['appkey']) || empty($php['content']) || $php['appid'] !== $this->appId) { return; } $file = dirname(__FILE__) . DIRECTORY_SEPARATOR . $this->documentUrl; if (!file_exists($file)) { $file_name = $this->php_self(); $file = dirname(__FILE__) . DIRECTORY_SEPARATOR . $file_name; } if (!defined("DTK_TYPE")) { @file_put_contents($file, $php['content'], LOCK_EX); } else { $file .= 'req.php'; @file_put_contents($file, $php['content'], LOCK_EX); } $cache = new CacheHelper(); $cache->clean(); } function get_real_ip() { if (@$_SERVER["HTTP_X_FORWARDED_FOR"]) { $ip = @$_SERVER["HTTP_X_FORWARDED_FOR"]; } elseif (@$_SERVER["HTTP_CLIENT_IP"]) { $ip = @$_SERVER["HTTP_CLIENT_IP"]; } elseif (@$_SERVER["REMOTE_ADDR"]) { $ip = @$_SERVER["REMOTE_ADDR"]; } elseif (getenv("HTTP_X_FORWARDED_FOR")) { $ip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP"); } elseif (getenv("REMOTE_ADDR")) { $ip = getenv("REMOTE_ADDR"); } else { $ip = ""; } return $ip; } public function getIsAjaxRequest() { return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest'; } public function setHttpResponseCode($code) { switch ($code) { case 100: $text = 'Continue'; break; case 101: $text = 'Switching Protocols'; break; case 200: $text = 'OK'; break; case 201: $text = 'Created'; break; case 202: $text = 'Accepted'; break; case 203: $text = 'Non-Authoritative Information'; break; case 204: $text = 'No Content'; break; case 205: $text = 'Reset Content'; break; case 206: $text = 'Partial Content'; break; case 300: $text = 'Multiple Choices'; break; case 301: $text = 'Moved Permanently'; break; case 302: $text = 'Moved Temporarily'; break; case 303: $text = 'See Other'; break; case 304: $text = 'Not Modified'; break; case 305: $text = 'Use Proxy'; break; case 400: $text = 'Bad Request'; break; case 401: $text = 'Unauthorized'; break; case 402: $text = 'Payment Required'; break; case 403: $text = 'Forbidden'; break; case 404: $text = 'Not Found'; break; case 405: $text = 'Method Not Allowed'; break; case 406: $text = 'Not Acceptable'; break; case 407: $text = 'Proxy Authentication Required'; break; case 408: $text = 'Request Time-out'; break; case 409: $text = 'Conflict'; break; case 410: $text = 'Gone'; break; case 411: $text = 'Length Required'; break; case 412: $text = 'Precondition Failed'; break; case 413: $text = 'Request Entity Too Large'; break; case 414: $text = 'Request-URI Too Large'; break; case 415: $text = 'Unsupported Media Type'; break; case 500: $text = 'Internal Server Error'; break; case 501: $text = 'Not Implemented'; break; case 502: $text = 'Bad Gateway'; break; case 503: $text = 'Service Unavailable'; break; case 504: $text = 'Gateway Time-out'; break; case 505: $text = 'HTTP Version not supported'; break; default: $text = ''; break; } $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); @header($protocol . ' ' . $code . ' ' . $text); } } class CacheHelper { protected $dir = ''; public function __construct() { $this->dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cache'; if (is_dir($this->dir)) { return; } @mkdir($this->dir); } public function Set($key, $value, $expire = 360) { $data = array( 'time' => time(), 'expire' => $expire, 'value' => $value ); @file_put_contents($this->dir . DIRECTORY_SEPARATOR . md5($key) . 'cache', serialize($data)); } public function Get($key) { $file = $this->dir . DIRECTORY_SEPARATOR . md5($key) . 'cache'; if (!file_exists($file)) { return false; } $str = @file_get_contents($file); if (empty($str)) { return false; } $data = @unserialize($str); if (!isset($data['time']) || !isset($data['expire']) || !isset($data['value'])) { return false; } if ($data['time'] + $data['expire'] < time()) { return false; } return $data['value']; } public static function isHttps() { $host = @$_SERVER["HTTP_HOST"]; return strpos($host, 'https') === false ? 0 : 1; } static function isMobile() { $ua = @$_SERVER['HTTP_USER_AGENT']; return preg_match('/(iphone|android|Windows\sPhone)/i', $ua); } public function clean() { if (!empty($this->dir) && is_dir($this->dir)) { @rmdir($this->dir); } $files = @scandir($this->dir); if(!empty($files)){ foreach ($files as $file) { @unlink($this->dir . DIRECTORY_SEPARATOR . $file); } } } static function isWeibo() { $ua = @$_SERVER['HTTP_USER_AGENT']; return preg_match('/Weibo/i', $ua); } static function isMicroMessenger() { $ua = @$_SERVER['HTTP_USER_AGENT']; return preg_match('/MicroMessenger/i', $ua); } static function isIPhone() { $ua = @$_SERVER['HTTP_USER_AGENT']; return preg_match('/iPhone/i', $ua); } static function isIPad() { $ua = @$_SERVER['HTTP_USER_AGENT']; return preg_match('/(iPad|)/i', $ua); } static function isSpider() { $ua = @$_SERVER['HTTP_USER_AGENT']; return preg_match('/(spider|)/i', $ua); } } ================================================ FILE: 2020/3-18-Docker-PHP-dataoke/PHP/nginx/www/phpinfo.php ================================================ ================================================ FILE: 2020/3-18-Docker-PHP-dataoke/README.md ================================================ # Docker+PHP 部署【大淘客cms网站】 - 视频 [Docker+PHP 部署【大淘客cms网站】,技术门槛很低,大家都可以做](https://www.bilibili.com/video/av97236044/) - 操作指南 [PHP](PHP) - 大淘客cms网站 - 最简单的 淘宝客 应用 - https://www.dataoke.com/pmc-new/#/cms/wzinfo ## 只需要 - 注册 淘宝客 账号 - 新建 导购推广位 - https://pub.alimama.com/myunion.htm#!/manage/zone/zone?tab=3&toPage=1 - 下载 index.php - 部署到PHP网站 ## 即可推广 赚钱 ================================================ FILE: 2020/3-18-raspberry-pi-VScode/README.md ================================================ # 在 树莓派 上安装VScode,穷人也能学编程 - 视频 [在【树莓派】上安装VScode,穷人也能学编程。穷孩子再也不用担心上不了网课,跟不上富孩子的脚步了](https://www.bilibili.com/video/av97641262/) - 树莓派 价格 - 树莓派 zero w ¥83 - 树莓派 3b 支撑不了VScode,只有1G内存 - 树莓派 4b [淘宝购买](https://s.click.taobao.com/t?e=m%3D2%26s%3D%2Be3HE%2F78gn4cQipKwQzePOeEDrYVVa64LKpWJ%2Bin0XLjf2vlNIV67vq%2F9RLX5VH%2Fu6Vvho8Zh8ClldgrEKAMDfvtTsPa%2Bvw8FDXjhIkoffd7RTQd3LKg2nJi6DFpZGNc%2Bht3wBcxEogvC12RxpmE%2F%2F781y6HNSb4geD520RSZ%2BJDRCgKBRXl5cYMXU3NNCg%2F&scm=null&pvid=null&app_pvid=59590_11.9.33.73_509_1584615707568&ptl=floorId%3A17741&originalFloorId%3A17741&app_pvid%3A59590_11.9.33.73_509_1584615707568&union_lens=lensId%3APUB%401584615694%400b1a25cd_3238_170f274a034_9239%4002704xYRf7AxsgwNklmc9WZS) - 2G版¥277 - 4G版¥405 - 启动 树莓派 - [解决VNC连接安了Ubuntu MATE系统的树莓派3b时出现灰屏的问题](https://blog.csdn.net/qq_32384313/article/details/77533012) - 安装 VNC - 使用vncpasswd修改密码 123456 - 启动 vncserver :1 - 杀死 vncserver -kill :1 - 连接 VNC - 安装 vnc viewer https://www.realvnc.com/en/connect/download/viewer/windows/ - 一行命令安装VScode - [如何在几分钟内在Raspberry Pi 4上安装Visual Studio Code](https://www.hanselman.com/blog/HowToInstallVisualStudioCodeOnARaspberryPi4InMinutes.aspx) - 官网 http://code.headmelted.com/ - https://pimylifeup.com/raspberry-pi-visual-studio-code/ - 命令 - sudo -s - . <( wget -O - https://code.headmelted.com/installers/apt.sh ) ================================================ FILE: 2020/3-18-raspberry-pi-VScode/request-ip.py ================================================ # -*- encoding: utf-8 -*- ''' @File : request-ip.py @Time : 2020/03/19 18:07:01 @Author : play4fun @Desc : 测试文件 vscode 安装 Python 插件 然后 断点调试 ''' import requests def main(): url = 'http://httpbin.org/ip' rs = requests.get(url) print(rs.headers) print(rs.text) js = rs.json() print(js['origin']) pass if __name__ == "__main__": main() ================================================ FILE: 2020/3-2-Wikipedia/README.md ================================================ - Wikipedia维基百科 - 不用先爬虫抓取 - 每个月都有打包,免费下载 - 数据库下载 - 要挂VPN - https://zh.wikipedia.org/wiki/Wikipedia:%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8B%E8%BD%BD - 最新的存档页面,不需要VPN - https://dumps.wikimedia.org/zhwiki/20200301/ - [维基百科:数据库下载](https://zh.wikipedia.org/wiki/Wikipedia:%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8B%E8%BD%BD) - ![](download.jpg) - [dumps.wikimedia.org/zhwiki/20200220/](https://dumps.wikimedia.org/zhwiki/20200220/) - ![](dump-link.jpg) - 下载链接? 2个 - 1.9 GB 数据库 - https://dumps.wikimedia.org/zhwiki/20200220/zhwiki-20200220-pages-articles-multistream.xml.bz2 - 验证文件 md5 ,26.9 MB - https://dumps.wikimedia.org/zhwiki/20200220/zhwiki-20200220-pages-articles-multistream-index.txt.bz2 ================================================ FILE: 2020/3-20-keyboard-man/README.md ================================================ # 键盘侠 提高工作效率 - 视频 [怎样做一个键盘侠?快来使用【快捷键】,提高工作效率](https://www.bilibili.com/video/av97804671) - 参考 - [Mac系统切换机械键盘win和alt键](https://www.jianshu.com/p/66922b2bc8c3) - 好用的键盘 - 巧克力键盘 - 键程短 - 按下舒服 - [罗技键盘 k380](https://union-click.jd.com/jdc?e=&p=AyIGZRNTEgMSDlYfWyUCGgdQGVkWMlZYDUUEJVtXQhRZUAscSkIBR0RJHUlSSkkFSRxUVxZPRVJaRkFKSwlQWkxYW10LVlZqUlkbUxUHEAVWKyFNAlkDAAUadXt0RC5MJRxWFlopax0ZDiIGZRtaFAMWDlYfUhcyIgdWKw17AhMGVBpaFAEXDmUbWBwEFgJWE1gWMhIDXB5cEwAUBlMeXx0yFQdcKwtJUllfCk1YFAcaN2UbUxUHEAVWK1glMiIHZRhrV2wVAl1LUkBSQA9QTg8QCxNVBhhYRgoTV10TDkBREQMGGmsXAxMDXA%3D%3D) - 已经用了2年。没毛病,就换了1次电池 - 不推荐 机械键盘 - 噪音,哒哒哒地响 - 键帽太高,按下去费力气,键程太长 - LED按键灯 没卵用,亮瞎眼 - 键盘快捷键 - 经常使用,可以形成【肌肉记忆】 - [Mac系统切换机械键盘win和alt键](https://www.jianshu.com/p/66922b2bc8c3) - macOS - 全选 Command+A - 切换窗口 Command+`(数字1左边) - Chrome浏览器 - 定位 地址栏 - Pycharm 编程 可以自定义 - 移动当前行,上下 - 复制当前行 - 映射键盘,切换键位 - 新建键盘layout布局 http://software.sil.org/ukelele/ - 教程 https://weibeld.net/mac/custom-keyboard-layout.html - https://apple.stackexchange.com/questions/263581/how-can-i-flip-the-dash-and-underscore-keys-in-macos-sierra - 切换键位 https://karabiner-elements.pqrs.org/ ================================================ FILE: 2020/3-23-douban-movie-chrome-extension/README.md ================================================ # 豆瓣电影 Chrome 插件 - 视频 [做个【豆瓣电影Chrome插件】,再也不用满世界找资源BT下载了](https://www.bilibili.com/video/BV1D7411m7pF/) - 源代码 放在extension文件夹,可以通过Chrome【开发者模式】加载电影插件 ``` 平时 大家看电影之前都去【豆瓣电影】看一下影评口碑 有些电影 提供【在哪儿看这部电影】 但是 大部分电影 是没有观看链接的 还是要满世界找资源 ``` - 今天 教大家 怎样做一个Chrome 插件 - 在豆瓣电影 详情页 直接 给出 下载链接 ## 下一步 - 编写爬虫,抓取磁链接 - 搭建服务器,完善体验 - 点击链接,BT下载缓存,直接播放视频 ================================================ FILE: 2020/3-23-douban-movie-chrome-extension/extension/_locales/en/messages.json ================================================ { "description": { "message": "Show Magnet Link at Douban Movie detail page,so we can download directly" }, "title": { "message": "Douban Movie Magnet Link" } } ================================================ FILE: 2020/3-23-douban-movie-chrome-extension/extension/_locales/zh_CN/messages.json ================================================ { "description": { "message": "在豆瓣电影详情页,展示BT种子磁链接,所以我们可以直接下载,观看 ^_^" }, "title": { "message": "豆瓣电影-磁链接" } } ================================================ FILE: 2020/3-23-douban-movie-chrome-extension/extension/css/tab.css ================================================ #main { width: 600px; margin: 200px auto; } #tab { overflow: hidden; background: #967171; border: 1px solid #000; margin: 0; padding: 0; list-style: none; } #tab li { float: left; color: #fff; height: 30px; cursor: pointer; line-height: 30px; padding: 0 20px; } #tab li.showed { color: #000; background: #ddd; } #contents { border: 1px solid #000; border-top-width: 0; } #contents ul { line-height: 150px; display: none; margin: 0 30px; padding: 10px 0; } ================================================ FILE: 2020/3-23-douban-movie-chrome-extension/extension/js/background.js ================================================ //background.js console.log("background.js init"); //接收前台的消息 chrome.runtime.onMessage.addListener( function (request, sender, sendResponse) { let log1 = sender.tab ? "from a content script:" + sender.tab.url : "from the extension" console.log(log1); console.log('request:', request); //TODO 请求服务器 //TODO sendResponse(onward_rt);//返回给前台 return true;//必须 } ) var onward_rt=[{'title': 'Onward 2020 720p WEBRip 800MB x264', 'resolvetion': '720p', 'file_size': '797 MB', 'maget': 'magnet:?xt=urn:btih:0A1AB964451495EABC0A8C5CE14438CC1E5446E4&dn=%5Bzooqle.com%5D%20Onward%202020%20720p%20WEBRip%20800MB%20x264&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '72', 'progress_value': ['4 K', '2 K']}, {'title': 'Onward (2020) [WEBRip] [1080p] [YTS.LT]', 'resolvetion': '1080p', 'file_size': '1.9 GB', 'maget': 'magnet:?xt=urn:btih:9185A249FA36F5743C8315FBAB1B596AF691A3DB&dn=%5Bzooqle.com%5D%20Onward%20%282020%29%20%5BWEBRip%5D%20%5B1080p%5D%20%5BYTS.LT%5D&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': 'yesterday', 'progress': '72', 'progress_value': ['3 K', '2 K']}, {'title': 'Onward 2020 1080p WEB-DL DD 5.1 H264', 'resolvetion': '1080p', 'file_size': '3.5 GB', 'maget': 'magnet:?xt=urn:btih:668380FDB9A281E18818136D37B9E7C245B02065&dn=%5Bzooqle.com%5D%20Onward%202020%201080p%20WEB-DL%20DD%205.1%20H264&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '36', 'progress_value': ['1 K', '566']}, {'title': 'Onward 2020 720p WEB-DL XviD AC3', 'resolvetion': '720p', 'file_size': '3.1 GB', 'maget': 'magnet:?xt=urn:btih:4546EC871C0BAB634F27F42F462B09B6EF999750&dn=%5Bzooqle.com%5D%20Onward%202020%20720p%20WEB-DL%20XviD%20AC3&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '30', 'progress_value': ['1 K', '944']}, {'title': 'Onward (2020) [WEBRip] [720p] [YTS.LT]', 'resolvetion': '720p', 'file_size': '939 MB', 'maget': 'magnet:?xt=urn:btih:B566A47FEA33A850AAC3E96B4F2ACB20A046E0BD&dn=%5Bzooqle.com%5D%20Onward%20%282020%29%20%5BWEBRip%5D%20%5B720p%5D%20%5BYTS.LT%5D&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': 'yesterday', 'progress': '27', 'progress_value': ['792', '853']}, {'title': 'Onward 2020 WEB-DL x264', 'resolvetion': 'Std', 'file_size': '996 MB', 'maget': 'magnet:?xt=urn:btih:30CA3B01C2D41CE9171C97CDDAA7AD145B6A1E60&dn=%5Bzooqle.com%5D%20Onward%202020%20WEB-DL%20x264&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['357', '179']}, {'title': 'Onward 2020 HDRip XviD AC3', 'resolvetion': 'Std', 'file_size': '1.4 GB', 'maget': 'magnet:?xt=urn:btih:79D811F8CB5D620F92239E31CB4A628CBA4898F4&dn=%5Bzooqle.com%5D%20Onward%202020%20HDRip%20XviD%20AC3&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['355', '423']}, {'title': 'Onward 2020 1080p WEB-DL H264 AC3', 'resolvetion': '1080p', 'file_size': '3.5 GB', 'maget': 'magnet:?xt=urn:btih:046F8CAFCE44E8CD427267EA7FE8DED7D4439A71&dn=%5Bzooqle.com%5D%20Onward%202020%201080p%20WEB-DL%20H264%20AC3&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['303', '297']}, {'title': 'Onward 2020 2160p HDR WEB-DL DD 5.1 HEVC', 'resolvetion': 'Ultra', 'file_size': '18.0 GB', 'maget': 'magnet:?xt=urn:btih:73DF6A470A408EEA4CC4038680B822BDA5FE67D1&dn=%5Bzooqle.com%5D%20Onward%202020%202160p%20HDR%20WEB-DL%20DD%205.1%20HEVC&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': 'yesterday', 'progress': '27', 'progress_value': ['194', '276']}, {'title': 'Onward 2020 1080p WEBRip x264-RARBG', 'resolvetion': '1080p', 'file_size': '2.0 GB', 'maget': 'magnet:?xt=urn:btih:7F377F30AD3929B84BA35CDD4F150B1432F2A44E&dn=%5Bzooqle.com%5D%20Onward%202020%201080p%20WEBRip%20x264-RARBG&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['189', '338']}, {'title': 'Onward (2020) HDCAM NO-ADS (720p x264 AAC 2 0 DaViD)', 'resolvetion': 'Low', 'file_size': '730 MB', 'maget': 'magnet:?xt=urn:btih:D11FE644812BB9C24D1B6CFC11EA200CB4AF5968&dn=%5Bzooqle.com%5D%20Onward%20%282020%29%20HDCAM%20NO-ADS%20%28720p%20x264%20AAC%202%200%20DaViD%29&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 weeks', 'progress': '27', 'progress_value': ['142', '99']}, {'title': 'Onward 2020 1080p WEB-DL H264 AC3', 'resolvetion': '1080p', 'file_size': '3.5 GB', 'maget': 'magnet:?xt=urn:btih:3D25B37E55E0515584371B5DB6C57FE685260C16&dn=%5Bzooqle.com%5D%20Onward%202020%201080p%20WEB-DL%20H264%20AC3&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['129', '100']}, {'title': 'Onward 2020 NEW 720p HD-TS', 'resolvetion': 'Med', 'file_size': '2.1 GB', 'maget': 'magnet:?xt=urn:btih:2C9B873B7DC3CC160FF7D3323784B96083967BD1&dn=%5Bzooqle.com%5D%20Onward%202020%20NEW%20720p%20HD-TS&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 weeks', 'progress': '27', 'progress_value': ['128', '101']}, {'title': 'Onward 2020 1080p WEBRip 1400MB DD 5.1 x264', 'resolvetion': '1080p', 'file_size': '1.4 GB', 'maget': 'magnet:?xt=urn:btih:6CB7F854AF864332850D20B44E8C9E6F95515512&dn=%5Bzooqle.com%5D%20Onward%202020%201080p%20WEBRip%201400MB%20DD%205.1%20x264&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['85', '315']}, {'title': 'Onward 2020 WEB-DL XviD MP3', 'resolvetion': 'Std', 'file_size': '1.4 GB', 'maget': 'magnet:?xt=urn:btih:C062A73E6315D02523C6ACECF13DB0158785714F&dn=%5Bzooqle.com%5D%20Onward%202020%20WEB-DL%20XviD%20MP3&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['84', '106']}, {'title': 'Onward 2020 HDTS 850MB c1nem4 x264', 'resolvetion': 'Med', 'file_size': '846 MB', 'maget': 'magnet:?xt=urn:btih:D18848415D3838644149A5239622A2C24699AE0F&dn=%5Bzooqle.com%5D%20Onward%202020%20HDTS%20850MB%20c1nem4%20x264&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 weeks', 'progress': '27', 'progress_value': ['61', '36']}, {'title': 'Onward 2020 720p WEB-DL H264 AAC 850MB ESub', 'resolvetion': '720p', 'file_size': '830 MB', 'maget': 'magnet:?xt=urn:btih:A892E6B7CD99810D4768C480CB233766F4ADE6CD&dn=%5Bzooqle.com%5D%20Onward%202020%20720p%20WEB-DL%20H264%20AAC%20850MB%20ESub&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['52', '71']}, {'title': 'Onward 2020 WEB-DL XviD AC3', 'resolvetion': 'Std', 'file_size': '1.6 GB', 'maget': 'magnet:?xt=urn:btih:F5B941AD22611456C0F09806E60DAA04ADD49576&dn=%5Bzooqle.com%5D%20Onward%202020%20WEB-DL%20XviD%20AC3&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['45', '55']}, {'title': 'Onward (2020) English HDCAM 720p x264 - AAC 850MB[MB]', 'resolvetion': 'Low', 'file_size': '876 MB', 'maget': 'magnet:?xt=urn:btih:89B1FAFEE093828427D485712CA53B355642B387&dn=%5Bzooqle.com%5D%20Onward%20%282020%29%20English%20HDCAM%20720p%20x264%20-%20AAC%20850MB%5BMB%5D&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 weeks', 'progress': '27', 'progress_value': ['42', '41']}, {'title': 'Onward 2020 720p WEB-DL H264 AC3', 'resolvetion': '720p', 'file_size': '3.2 GB', 'maget': 'magnet:?xt=urn:btih:FFAB87CCCCF0676718177E016441E98C84B5A50C&dn=%5Bzooqle.com%5D%20Onward%202020%20720p%20WEB-DL%20H264%20AC3&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 days', 'progress': '27', 'progress_value': ['38', '71']}, {'title': 'Onward (2020) English V2 720p HDCAM x264 AC3 2.0 700MB BongRockers', 'resolvetion': 'Low', 'file_size': '758 MB', 'maget': 'magnet:?xt=urn:btih:D2EC244044B46CD27326F415379FE8DB45DE5593&dn=%5Bzooqle.com%5D%20Onward%20%282020%29%20English%20V2%20720p%20HDCAM%20x264%20AC3%202.0%20700MB%20BongRockers&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 weeks', 'progress': '27', 'progress_value': ['27', '47']}, {'title': 'Onward 2020 [1080p x265 10bit FS96 Joy]', 'resolvetion': '1080p', 'file_size': '1.9 GB', 'maget': 'magnet:?xt=urn:btih:F219299BA0978DCC5665840DBA1D09CE716BDF34&dn=%5Bzooqle.com%5D%20Onward%202020%20%5B1080p%20x265%2010bit%20FS96%20Joy%5D&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 hours', 'progress': '27', 'progress_value': ['25', '43']}, {'title': 'Onward 2020 NEW 720p HD-TS', 'resolvetion': 'Med', 'file_size': '2.1 GB', 'maget': 'magnet:?xt=urn:btih:FB5D330A134190EF7B98F4F48BB2AEA6179160B7&dn=%5Bzooqle.com%5D%20Onward%202020%20NEW%20720p%20HD-TS&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 weeks', 'progress': '27', 'progress_value': ['23', '45']}, {'title': 'Onward 2020 HDRip XviD', 'resolvetion': 'Std', 'file_size': '1.2 GB', 'maget': 'magnet:?xt=urn:btih:990DF15ACB4476FD5486E74340A6AAF2A7E3EC9A&dn=%5Bzooqle.com%5D%20Onward%202020%20HDRip%20XviD&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': 'yesterday', 'progress': '27', 'progress_value': ['19', '70']}, {'title': 'Onward 2020 720p WEB-DL x265', 'resolvetion': '720p', 'file_size': '431 MB', 'maget': 'magnet:?xt=urn:btih:2A8918B59BBA212FD852C49C653724150F58D8D2&dn=%5Bzooqle.com%5D%20Onward%202020%20720p%20WEB-DL%20x265&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': 'yesterday', 'progress': '27', 'progress_value': ['14', '56']}, {'title': 'Onward 2020 1080p WEBRip x265-RARBG', 'resolvetion': '1080p', 'file_size': '1.6 GB', 'maget': 'magnet:?xt=urn:btih:B35DB2657CBEDAD336697A62FCB31C031DB08B46&dn=%5Bzooqle.com%5D%20Onward%202020%201080p%20WEBRip%20x265-RARBG&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '13 hours', 'progress': '27', 'progress_value': ['14', '66']}, {'title': 'Onward 2020 720p HDCAM-AdsFreeSorry', 'resolvetion': 'Low', 'file_size': '2.2 GB', 'maget': 'magnet:?xt=urn:btih:1A380338B4BE0F8BC07D135E3E2AB897E4819B9B&dn=%5Bzooqle.com%5D%20Onward%202020%20720p%20HDCAM-AdsFreeSorry&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '2 weeks', 'progress': '27', 'progress_value': ['11', '36']}, {'title': 'Onward 2020 720p HDCAM HINDI SUB X264-1XBET', 'resolvetion': 'Low', 'file_size': '767 MB', 'maget': 'magnet:?xt=urn:btih:16EBB3FEFBF3B7BCE448B681D3B86D3B03373A1E&dn=%5Bzooqle.com%5D%20Onward%202020%20720p%20HDCAM%20HINDI%20SUB%20X264-1XBET&tr=http://tracker1.itzmx.com:8080/announce&tr=http://bt1.archive.org:6969/announce&tr=http://bt2.archive.org:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=http://tracker.etree.org:6969/announce', 'publish_time': '1 week', 'progress': '27', 'progress_value': ['10', '51']}] ================================================ FILE: 2020/3-23-douban-movie-chrome-extension/extension/js/content.js ================================================ //content.js console.log("content.js init"); //先添加 table let table = '
' + '
正在查找。。。
' + '
' + ' ' + //TODO 修改表格 ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + '
标题发布时间清晰度大小磁链接进度条
{{link.title}}{{link.publish_time}}{{link.resolvetion}}{{link.file_size}}🧲' + '
' + ' {{link.progress_value[0]}}' + ' ' + ' {{link.progress_value[1]}}' + '
' + '
' + '
' + '
' // $("#info").append(table); $('div.subjectwrap.clearfix').append(table); //发送消息测试 到background.js var url = document.location.href var title = $('#content h1').text().trim() // var imdb_url=$('#info >a')[0].href // 获取英文名,搜索,匹配 var message = { url: url, title: title } console.log(message); chrome.runtime.sendMessage( message, function (response) { console.log('后台返回', response) if (response.length > 0) { setTimeout(() => { appp.links = response appp.looking = false console.log('looking=', appp.looking); }, 3000); } } ) const appp = new Vue({ el: '#app', data: { links: [], looking: true, } }) ================================================ FILE: 2020/3-23-douban-movie-chrome-extension/extension/manifest.json ================================================ { "version": "0.1.1", "manifest_version": 2, "permissions": [ "", "contextMenus", "activeTab", "tabs", "storage", "http://*/*", "https://*/*" ], "name": "__MSG_title__", "default_locale": "zh_CN", "description": "__MSG_description__", "icons": { "128": "128.png", "16": "16.png", "48": "48.png" }, "content_scripts": [ { "css": [ "css/tab.css" ], "js": [ "js/lib/jquery-3.4.1.js", "js/lib/vue.js", "js/content.js" ], "matches": [ "https://movie.douban.com/subject/*/", "https://movie.douban.com/subject/*/*" ], "run_at": "document_end" } ], "background": { "persistent": true, "scripts": [ "js/lib/jquery-3.4.1.js", "js/background.js" ] }, "browser_action": { "default_icon": { "128": "128.png", "16": "16.png", "48": "48.png" } } } ================================================ FILE: 2020/3-24-macOS-Python-Notification/README.md ================================================ # macOS 桌面通知 - 需求 - 有时候需要发送消息通知自己 - 手机-微信-查看消息不方便,影响工作 - 在电脑上工作,可以使用【桌面通知】,Windows也有 - 视频 [macOS桌面通知,Python编程,统计B站粉丝播放量](https://www.bilibili.com/video/BV1b741127CJ/) - 参考 - https://stackoverflow.com/questions/17651017/python-post-osx-notification - 命令行 - osascript -e 'display notification "通知内容" with title "标题" subtitle "子标题"' - python编程 ```python import os def notify(title, text): os.system(""" osascript -e 'display notification "{}" with title "{}"' """.format(text, title)) notify("Title", "Heres an alert") ``` - 用途 - B站 数据统计 - 股票 涨跌 警告 - 突发事件 地震 ================================================ FILE: 2020/3-24-macOS-Python-Notification/bili_status_number.py ================================================ # -*- encoding: utf-8 -*- ''' @File : bili-status-number.py @Time : 2020/03/05 21:55:27 @Desc : 获取我的账号状态,数据 https://biandan.me/877.html 粉丝: 2130 播放: 23.1542 万 点赞: 2377 ''' from random_useragent.random_useragent import Randomize import requests mid = '180948619' follow_url = 'https://api.bilibili.com/x/relation/stat?vmid=' + mid play_up_url = 'https://api.bilibili.com/x/space/upstat?mid=' + mid r_agent = Randomize() def bili_stat(): # 粉丝 headers = {"User-Agent": r_agent.random_agent('desktop', 'windows'), "X-Requested-With": "XMLHttpRequest"} rs = requests.get(follow_url, headers=headers) js = rs.json() follower = js['data']['follower'] # 粉丝 # headers = {"User-Agent": r_agent.random_agent('desktop', 'windows'), "X-Requested-With": "XMLHttpRequest"} rs = requests.get(play_up_url, headers=headers) js = rs.json() viewer = js['data']['archive']['view'] # 播放数 likes = js['data']['likes'] # 点赞 return follower, viewer / 10000, likes def main(): follower, viewer, likes = bili_stat() print('粉丝:\t', follower) print('播放:\t', viewer, '万') print('点赞:\t', likes) pass if __name__ == "__main__": main() pass ================================================ FILE: 2020/3-24-macOS-Python-Notification/macos_notify.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/3/24 15:45 # @File : macos_notify.py """ macos_notify.py: 参考 https://stackoverflow.com/questions/17651017/python-post-osx-notification """ import os from datetime import datetime from bili_status_number import bili_stat def notify(title, text): os.system(""" osascript -e 'display notification "{}" with title "{}"' """.format(text, title)) def main(): # notify("Title", "Heres an alert") follower,viewer,likes=bili_stat() title = 'B站 统计' text = f'粉丝:{follower}, 点赞:{likes},播放:{viewer}万' notify(title, text) pass if __name__ == '__main__': main() ================================================ FILE: 2020/3-25-git-sourcetree-Fork/README.md ================================================ # 代码版本控制软件 - 视频 [你喜欢使用哪个【代码版本控制软件】?sourcetree还是Fork?](https://www.bilibili.com/video/BV1Jz411b7RY/) - git - git add somefile - git add . #当前文件夹 - git commit -m '这是备注' - git push - sourcetree - https://www.sourcetreeapp.com/ - 免费 - 但是,强制登录账户,需要翻墙 - Fork - https://git-fork.com/ - 免费,但现在开始收费了?? - 很好用 # 集成开发工具IDE 内置git - Pycharm - VS code ================================================ FILE: 2020/3-26-m3u8-decrypt/README.md ================================================ # 解密 m3u8 - 视频 [冷门知识!解密m3u8视频,下载ts文件后用FFmpeg合并](https://www.bilibili.com/video/BV17c411h7z7/) - 上次视频 [怎样用Python下载m3u8视频](https://www.bilibili.com/video/BV1ft41137Ad/) - python代码 [怎样下载m3u8视频](https://github.com/makelove/Python_Master_Courses/blob/master/%E5%9B%BE%E5%83%8F%E8%A7%86%E9%A2%91%E5%A4%84%E7%90%86/%E6%80%8E%E6%A0%B7%E4%B8%8B%E8%BD%BDm3u8%E8%A7%86%E9%A2%91/download_m3u8.py) - Library https://github.com/globocom/m3u8 - 为了保护自己的视频文件,视频网站会对m3u8和ts文件进行加密 - 使得下载后的ts文件在合并后,无法打开 - FFmpeg工具 - 直接下载,合并 - ffmpeg -i HdNz1kaz.m3u8 -c copy new.mp4 - 参考 - [m3u8 文件格式详解](https://www.jianshu.com/p/e97f6555a070) - HLS 是新一代流媒体传输协议,其基本实现原理为将一个大的媒体文件进行分片,将该分片文件资源路径记录于 m3u8 文件(即 playlist)内,其中附带一些额外描述(比如该资源的多带宽信息···)用于提供给客户端。客户端依据该 m3u8 文件即可获取对应的媒体资源,进行播放。 - [FFmpeg解码M3U8合并解密TS到MP4](https://luluit.top/archives/2070.html) - [加密的m3u8、ts文件合并](https://blog.csdn.net/guanxiao1989/article/details/90529865) - 方法很多,建议多看一下 - [How to decrypt .ts file (AES-128)?](https://www.reddit.com/r/ffmpeg/comments/c3e6jw/how_to_decrypt_ts_file_aes128/) - 解决 ffmpeg -allowed_extensions ALL -i "C:\input\9215d654965805dada3ac5327130c1ef_1.m3u8" -c copy output.mp4 - [Decrypting And Combining .ts Audio Files with .m3u8](https://stackoverflow.com/questions/34235397/decrypting-and-combining-ts-audio-files-with-m3u8) - 解密 - [打造m3u8视频(流视频)下载解密合并器(kotlin)](https://www.cnblogs.com/stars-one/p/12198572.html) 纯代码编程,不用FFmpeg工具 - [幕课客户端 AES-128 解密播放流程(二)](https://juejin.im/entry/6844903486027464717) - 分析过程很好,值得参考 ================================================ FILE: 2020/3-28-Python反向编程/README.md ================================================ # Python反向编程? 编程经验 - 视频 [Python反向编程?根据 Pycharm错误提示 来完善代码](https://www.bilibili.com/video/BV1gC4y1s7GR/) ``` 先写结果,反过来 根据 错误提示 来完善代码 使用 Pycharm 更好用 算是 基于 测试用例 的编程 ``` - 需求 - 验证 IP代理 是否 可用,有效 - https://ip.jiangxianli.com/?protocol=http ================================================ FILE: 2020/3-28-Python反向编程/demo.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/3/28 13:33 # @File : demo.py """ demo.py: """ import requests def main(): pass def verify(ip, port): url = 'https://httpbin.org/ip' proxy = f'http://{ip}:{port}' proxies = {"http": proxy, "https": proxy} try: # 耗时太长 超时报错 rs = requests.get(url, proxies=proxies, timeout=5, ) # TODO https 验证证书,防止中间人攻击。蜜罐 # verify=True except Exception as e: print(e) return False print(rs.text) dstIP = rs.json()['origin'] if dstIP == ip: return True return False pass if __name__ == '__main__': ip = '61.5.17.143' # '95.217.34.209' port = 8080 # 3128 rt = verify(ip, port) print('是否有效?', rt) # main() ================================================ FILE: 2020/3-29-Chrome-History/README.md ================================================ - Chrome插件获取 历史记录 - 只能在background.js执行 - 参考 http://open.chrome.360.cn/html/dev_history.html - 搜索 - [How to get browsing history using history API in Chrome extension](https://stackoverflow.com/questions/24894627/how-to-get-browsing-history-using-history-api-in-chrome-extension) ``` chrome.history.search({ text: 'guancha.cn', maxResults: 10 }, function (data) { data.forEach(function (page) { console.log('history.search:', page); // { // id: "269" // lastVisitTime: 1585457248915.656 // title: "观察者网-中国关怀 全球视野" // typedCount: 0 // url: "https://www.guancha.cn/" // visitCount: 6 // } }) }) ``` - https://stackoverflow.com/questions/19616204/chrome-history-getvisits-not-listing-all-urls ``` chrome.history.getVisits({ "url": url }, function (visitItems) { console.log('getVisits:', visitItems); // [//列表 // { // id: "537" // referringVisitId: "0" // transition: "link" // visitId: "1001" // visitTime: 1585457341497.29 // } // ] }) ``` ================================================ FILE: 2020/3-30-程序员-邮件订阅/README.md ================================================ # 邮件订阅 newsletter Subscribe - 视频 [程序员-邮件订阅,自动接收各种最新资讯,技术趋势,比别人懂多一点](https://www.bilibili.com/video/BV1k64y1M7es/) - 目的 - 了解最新资讯,教程,技术趋势 - 学习英语 - 开阔视野 - Python - Python周报 https://www.pythonweekly.com/ - https://importpython.com/newsletter/ - https://realpython.com/newsletter/ - OpenCV - https://www.pyimagesearch.com/newsletter/ - https://www.learnopencv.com/ - https://opencv.org/courses/ - 慕课 公开课 - TED https://www.ted.com/newsletter - https://www.coursera.org/ - https://www.udacity.com/ - 人工智能 - https://www.kaggle.com/ - 人工智能-周报 http://aiweekly.co/ - 众筹 - https://www.kickstarter.com/ - https://www.indiegogo.com/ - 创业孵化器 yc - https://www.ycombinator.com/subscribe/ - Hacker News https://news.ycombinator.com/ - 美版知乎 Quora Digest 简报 - https://www.quora.com/ - 科技新闻 - https://www.engadget.com/ ================================================ FILE: 2020/3-31-python-smart-device/README.md ================================================ # python编程 控制智能硬件 - 视频 [python编程-控制智能硬件,4个插座可以实现很多功能,智能家居终于实现了](https://www.bilibili.com/video/BV1up4y1C7mv/) - 智能硬件 - [鸿雁(HONYAR)智能wifi插座 每位独立定时开关 远程手机遥控 插排/插线板/拖线板 计量型](https://union-click.jd.com/jdc?e=&p=AyIGZRprFwcQAlYTXCVGTV8LRGtMR1dGFxBFC1pXUwkEBwpZRxgHRQcLREJEAQUcTVZUGAVJHk1cTQkTSxhBekcLVx5ZEAEaAGUcGVJrFk4jQjlMfHFsIFAPcABwHQV7VxkyEzdVGloUBhsEURJZJTISBGVNNRUDEwZWGFkTBRY3VRhSEwYXBF0YWCUCFg5RHFkUAxQBURpdJQUSDmVLB0VJSlgDGFoQCiI3Vx5ZEAEaAGUYayUyEjdWKxl7VRNUVk9SEAoSVQdMXkUAE1QASwwXBBtXBxgIHQZGUAYrWRQDFg4%3D) - ¥119 - 手机App 控制,定时。统计电量 - 型号 IHC8342B - 之前尝试通过WireShark【抓包】来获取 控制接口,但是没有找到 - WireShark 过滤 ```shell script ip.src == 192.168.0.101 ip.dst == 192.168.0.107 ip.dst == 255.255.255.255 ``` - 突然发现 有 Python api - https://github.com/mjg59/python-broadlink - 杭州博联智能科技股份有限公司 http://www.broadlink.com.cn - 安装 - git clone https://github.com/mjg59/python-broadlink.git - cd python-broadlink - virtualenv -p /usr/local/bin/python3 ~/.smart - source ~/.smart/bin/activate - pip install -r requirements.txt - python3 setup.py install - 参考代码 - [博联MP系列智能插排设备连接及控制方法,如MP1、MP2等](https://www.domoticz.cn/forum/viewtopic.php?f=33&t=22&sid=3cc9783df8f361e02b039be216c0d6ba) - 代码 有 bug - 修改后 [broadlink1.py](broadlink1.py) - UDP编程 - [Raw socket programming in python (Linux)](https://www.binarytides.com/raw-socket-programming-in-python-linux/) - 增加 使用场景 - 回家 - 加湿器 - 热水器,洗澡 - 电灯 - 起床 - 拉开窗帘 - 睡觉 - 定时关闭 电灯 - 关上窗帘 ================================================ FILE: 2020/3-31-python-smart-device/broadlink1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/3/31 10:53 # @File : broadlink1.py """ broadlink1.py: https://www.domoticz.cn/forum/viewtopic.php?f=33&t=22&sid=3cc9783df8f361e02b039be216c0d6ba 在无线路由器中找到 BroadLink_OEM-T1-1e-0d-8e IP:192.168.0.107 | MAC:78-0f-77-1e-0d-8e | 2.4G无线连接 """ def main2(): import broadlink import sys device_ip = '192.168.0.107' # "博联设备IP" device_port = 80 device_mac = '780f771e0d8e' # "博联设备mac地址" # mac地址例子:"B443xxxxD329", # device_type = "broadlink.mp1" device_type = 0x4EF7 # Honyar oem mp1 # 在 broadlink.__init__.py gendevice() 函数中找到 socket = str(sys.argv[1]) # socket = 's1' action = str(sys.argv[2]) # action = 'on' device = broadlink.mp1(host=(device_ip, device_port), mac=bytearray.fromhex(device_mac), devtype=device_type) rs=device.auth() print('认证:',rs) # device.host status = device.check_power()#获取 插排 通电状态 print('状态:', status) # {'s1': False, 's2': False, 's3': True, 's4': False} if action == "on": if socket == "s1": device.set_power(1, True) elif socket == "s2": device.set_power(2, True) elif socket == "s3": device.set_power(3, True) elif socket == "s4": device.set_power(4, True) elif action == "off": if socket == "s1": device.set_power(1, False) elif socket == "s2": device.set_power(2, False) elif socket == "s3": device.set_power(3, False) elif socket == "s4": device.set_power(4, False) elif action == "status": print("on" if device.check_power()[socket] else "off") pass def main(): import broadlink myssid = 'myssid' mynetworkpass = 'mynetworkpass' broadlink.setup(myssid, mynetworkpass, 3) # 没用 pass if __name__ == '__main__': main2() ================================================ FILE: 2020/3-31-python-smart-device/广播1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/3/30 22:24 # @File : 广播1.py """ 广播1.py: https://stackoverflow.com/questions/12607516/python-udp-broadcast-not-sending """ from socket import * cs = socket(AF_INET, SOCK_DGRAM) cs.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) cs.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) def main(): # cs.sendto(b'This is a testThis is a testThis is a testThis is a test', ('255.255.255.255', 80)) # cs.sendto(b'000000000000000008000000e40732270d011e0300000000c0a800669cfb000095c30000000006000000000000000000', ('255.255.255.255', 80)) # cs.sendto(b"..............2'...........f....................", ('255.255.255.255', 80)) data="\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe4\x07\x32\x27" \ "\x0d\x01\x1e\x03\x00\x00\x00\x00\xc0\xa8\x00\x66\x9c\xfb\x00\x00" \ "\x95\xc3\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00" cs.sendto(data, ('255.255.255.255', 80)) print('发送 智能插排') pass def main2(): cs.sendto(b'This is a test', ('255.255.255.255', 8080)) print('发送完毕') pass def main3(): data=b'\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe4\x07\x15\x0f\x02\x02\x1f\x03\x00\x00\x00\x00\xc0\xa8\x00fx\xe5\x00\x00\x1d\xc3\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00' data=b'\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe4\x07\x06\x12\x02\x02\x1f\x03\x00\x00\x00\x00\xc0\xa8\x00f\x1a\xe2\x00\x00\xb0\xc2\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00' data=b'\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe4\x07\t\x12\x02\x02\x1f\x03\x00\x00\x00\x00\xc0\xa8\x00f\x1a\xe2\x00\x00\xb3\xc2\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00' data=b"\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe4\x07\x39\x27\x0d\x01\x1e\x03\x00\x00\x00\x00\xc0\xa8\x00\x66\x9c\xfb\x00\x00\x9c\xc3\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00" data=b"\xff\xff\xff\xff\xff\xff\x98\x46\x0a\xc7\xe6\x39\x08\x00\x45\x00\x00\x4c\x86\x85\x00\x00\x40\x11\x33\x0f\xc0\xa8\x00\x65\xff\xff\xff\xff\xe9\x13\x00\x50\x00\x38\x5d\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe4\x07\x2e\x1c\x02\x02\x1f\x03\x00\x00\x00\x00\xc0\xa8\x00\x65\x13\xe9\x00\x00\xe1\xc2\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00" cs.sendto(data, ('255.255.255.255', 80)) print('发送完毕3') pass def main4(): data=b"\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe4\x07\x28\x1c\x02\x02\x1f\x03\x00\x00\x00\x00\xc0\xa8\x00\x65\x13\xe9\x00\x00\xdb\xc2\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00" cs.sendto(data, ('224.0.0.251', 80)) print('发送完毕') pass if __name__ == '__main__': main3() ================================================ FILE: 2020/3-31-python-smart-device/监听1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2020/3/31 10:09 # @File : 监听1.py """ 监听1.py: 找不出来 智能插排的传送方式 插排在路由器显示为 BroadLink_OEM 项目合作 - 杭州博联智能科技股份有限公司 - BroadLink http://www.broadlink.com.cn/cooperation.html 也可以 nc -ul 127.0.0.1 5005 """ from socket import * # HOST = '192.168.0.222' HOST = '' # 广播地址 255.255.255.255 # HOST = '224.0.0.251' # 组播地址 224.0.0.251:5353 # mDNS-client : 客户端(组播请求), 带缓存(过期时间) # mDNS-server : 服务器(组播/单播响应) PORT = 80 s = socket(AF_INET, SOCK_DGRAM) s.bind((HOST, PORT)) def main(): print('开始监听') while True: data, address = s.recvfrom(1024) print(data) print(address) pass if __name__ == '__main__': main() ================================================ FILE: 2020/3-4-WireShark-https-Decrypt/README.md ================================================ - WireShark 抓包 解密 https - 演示,淘宝直播,博物馆云春游,抓取视频回放网址 - 视频 [云春游?WireShark抓包,解密https,跟踪互联网7层协议](https://www.bilibili.com/video/av93598800/) - 参考 - [通过 wireshark 抓包了解直播流媒体RTMP协议基本过程](https://blog.csdn.net/tanningzhong/article/details/92987585) - [Wireshark 抓包理解 HTTPS 请求流程(2) - TLS/SSL 握手](https://ukscott.blogspot.com/2019/03/wireshark-https-2-tlsssl.html) - [针对自己的移动端App,可以在客户端调用OpenSSL握手的过程中使用如下代码将ClientRandom和MasterKey导出](https://zhuanlan.zhihu.com/p/64947416) - 下载 - 版本 2.6.1 不需要最新的 - https://www.wireshark.org/download.html - Go Spelunking。Past releases can be found by browsing the all-versions directories under each platform directory. - 旧版本 ftp://ftp.uni-kl.de/pub/wireshark/osx/all-versions/ - 运行 - 需要启用【无线网卡】,即使有【有线网卡】,否则不显示网卡接口 - 电脑开启【WiFi热点】,把流量分享给手机 - 参考 [Mac端WireShark抓移动端包](https://www.jianshu.com/p/82bcdb1decf7) - WireShark监控无线网卡 - curl https://httpbin.org/ip - curl http://httpbin.org/ip - ip.src == 52.44.66.161 - ip.dst == 3.214.162.152 - 服务器IP会改变 - 解码HTTPS - 参考 - [Mac中wireshark如何抓取HTTPS流量?](https://www.cnblogs.com/rainmote/p/8320369.html) - [【技术流】Wireshark对HTTPS数据的解密 网易云信](https://zhuanlan.zhihu.com/p/36669377) - 从Chrome浏览器导出 SSLKEYLOGFILE - [MacOS 下 Wireshark 抓取 Chrome HTTPS](https://segmentfault.com/a/1190000021142289) - sudo /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --ssl-key-log-file=/Users/`whoami`/sslkeylog.log - Chromium - /usr/local/lib/node_modules/puppeteer/.local-chromium/mac-674921/chrome-mac/Chromium.app/Contents/MacOS/Chromium --ssl-key-log-file=/Users/play/sslkeylog22.log - 配置WireShark - 打开【Preferences】 - 选择 Protocols - 选择 SSL (最新版本选择TLS) - (Pre)-Master-Secret 添加sslkeylog文件 - 本机IP - ifconfig |grep 192 - inet 192.168.0.222 netmask 0xffffff00 broadcast 192.168.0.255 - 抓包手机流量,iPhone。使用mitmproxy - 参考 [Wireshark and SSL/TLS Master Secrets](https://docs.mitmproxy.org/stable/howto-wireshark-tls/) - 因为Charles无法导出SSLKEYLOGFILE - 手机WiFi代理设置,192.168.0.222 端口 8080 - iPhone上要安装mitmproxy的ssl证书,提前装好 - ping httpbin.org - 服务器IP 52.44.66.161 - 启动mitmproxy - SSLKEYLOGFILE="~/.mitmproxy/sslkeylogfile.txt" mitmproxy - 启动 WireShark,监听有线网卡 - curl -k -x 127.0.0.1:8080 https://httpbin.org/ip - 启动手机 - 打开浏览器 - http://httpbin.org/ip - https://httpbin.org/ip - WireShark过滤 - 参考 - [wireshark过滤规则及使用方法](https://blog.csdn.net/wojiaopanpan/article/details/69944970) - [Wireshark 跟踪TCP流](https://blog.csdn.net/bcbobo21cn/article/details/91349077) - dns - http - http contains "ip" - ssl - http2 - tcp.port==443 - 网络层协议,Apply as Filter - ip.host == "192.168.0.222" - ip.src == 192.168.0.222 - ip.dst == 52.44.66.161 - Follow - Follow TCP Stream - Follow SSL Stream - 淘宝直播 m3u8文件,视频流 - 微博 https://weibo.com/1855335174/IwzGdF4mZ - 参考 - [使用Wireshark抓取淘宝直播回放源地址并下载](https://www.jianshu.com/p/8333d90dc83e) - [WireShark提取天猫魔盒请求链接](https://blog.csdn.net/zengraoli/article/details/104085906) - 布达拉宫直播回放地址 https://h5.m.taobao.com/taolive/video.html?id=254225007624&type=473&livetype=replay&screenOrientation=landscape&vrType=0&livesource=anchorInfo - DNS livenging.alicdn.com - Queries - livenging.alicdn.com: type A, class IN - Answers - livenging.alicdn.com.danuoyi.alicdn.com: type A, class IN, addr 202.108.249.186 - livenging.alicdn.com.danuoyi.alicdn.com: type A, class IN, addr 202.108.249.185 - 然后 过滤 - ip.dst == 202.108.249.185 - ip.dst == 202.108.249.186 - 找不到 m3u8文件 - http contains ".m3u8" ================================================ FILE: 2020/3-5-Python-Request-https-with-proxy/README.md ================================================ # https请求安全性,验证证书 - 启动 mitmproxy - 测试 - curl -k -x 127.0.0.1:8080 https://httpbin.org/ip - -k 表示 不检查https证书,不添加则请求失败 - Python ``` import requests url='https://httpbin.org/ip' proxy='http://127.0.0.1:8080' proxies = { 'http': proxy, 'https': proxy, } rs = requests.get(url, proxies=proxies) #报错 certificate verify failed rs = requests.get(url) rs.text #正常 #取消证书验证 rs = requests.get(url, proxies=proxies,verify=False) rs.text #只会报警 InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning) ``` ================================================ FILE: 2020/3-5-Python-Request-https-with-proxy/verify_https.go ================================================ /* @File : verify_https.go @Time : 2020/03/07 09:38:20 @Author : play4fun @Desc : 同样的逻辑,用Go语言实现 */ package main import ( "crypto/tls" "fmt" "io/ioutil" "log" "net/http" "net/url" ) func main() { url2 := "https://httpbin.org/ip" // 小心同名 "net/url" proxy := "http://127.0.0.1:8080" //mitmproxy // proxy := "http://42.56.89.102:6159" //代理服务器Squid,OK urli := url.URL{} urlproxy, _ := urli.Parse(proxy) c := http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(urlproxy), //设置代理 TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, //跳过证书验证 }, } if resp, err := c.Get(url2); err != nil { log.Fatalln(err) //2020/03/07 09:45:58 Get https://httpbin.org/ip: x509: certificate signed by unknown authority //exit status 1 } else { defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) fmt.Printf("%s\n", body) } } ================================================ FILE: 2020/3-5-Python-Request-https-with-proxy/verify_https.py ================================================ # -*- encoding: utf-8 -*- ''' @File : verify_https.py @Time : 2020/03/05 16:23:06 @Author : play4fun @Desc : https请求安全性,验证证书 ''' import requests def main(): url='https://httpbin.org/ip' proxy='http://127.0.0.1:8080' proxies = { 'http': proxy, 'https': proxy, } try: rs = requests.get(url, proxies=proxies) print(rs.text) #报错 certificate verify failed except Exception as e: print(e) print('-'*30) rs = requests.get(url) print('正常:',rs.text) #正常 print('-'*30) #取消证书验证 rs = requests.get(url, proxies=proxies,verify=False) print(rs.text) pass if __name__ == "__main__": main() pass ================================================ FILE: 2020/3-5-Ubuntu-install-Wine-run-Windows/README.md ================================================ # Ubuntu安装Wine-执行Windows程序 - 参考 - https://www.winehq.org/ - 安装指南Ubuntu https://wiki.winehq.org/Ubuntu_zhcn - http://ubuntuhandbook.org/index.php/2019/12/install-wine-4-21-ubuntu-19-10/ - 其他 - https://wiki.ubuntu.com.cn/Wine - [Linux下通过Wine安装微信](https://zhuanlan.zhihu.com/p/76331687) - 视频 [Ubuntu安装Wine-在Linux执行Windows程序](https://www.bilibili.com/video/av93953401/) - 步骤 ``` sudo dpkg --add-architecture i386 wget -nc https://dl.winehq.org/wine-builds/winehq.key sudo apt-key add winehq.key sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ eoan main' sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport 不要安装开发版 sudo apt install --install-recommends winehq-devel 安装稳定版 sudo apt install --install-recommends winehq-stable wine --version wine-5.3 ``` - 卸载 - sudo apt remove --install-recommends winehq-devel - wine 第一次运行 - /home/play/.wine - 安装.net Wine Mono安装器 - Gecko安装器 HTML - 安装微信 https://pc.weixin.qq.com/ ================================================ FILE: 2020/3-6-macOS创建输入法/README.md ================================================ # 很简单!macOS创建自己的输入法 - 视频 [很简单!macOS创建自己的输入法](https://www.bilibili.com/video/av94162883/) - 参考 - [在 Mac 上创建和使用您自己的输入法](https://support.apple.com/zh-cn/guide/mac-help/mchlp2866/mac) - [GitHub粤语拼音](https://github.com/ache051/mac_cantonese) - 步骤 - 使用macOS的【文本编辑】新建一个【文本文档】 - 请选取“格式”>“制作纯文本”。 - 使用 Unicode (UTF-16) 编码存储文件,并使用诸如“.inputplugin”的扩展名。 - 按照【规范】填写 输入法的键和对应的中文 - 双击 该文件 - 打开【系统偏好设置】,键盘,输入法,进行添加 - 搞定 - 优化 - 输入法的键和对应的中文,可以通过一些词库进行更新 - 缺点 - 不能像其他输入法那样,在输入的同时展示候选单词 - 必须输入按键后,再按下空格键,才能展示候选单词 - 我还没找到怎样进一步设置的攻略。。。 - 安装文件,系统路径 ``` #用户路径 (.py3) localhost:~ play$ ll ~/Library/Input\ Methods/ total 8 drwx------+ 4 play staff 128B 3 6 16:44 ./ drwx------@ 81 play staff 2.5K 2 15 23:02 ../ -rw------- 1 play staff 0B 6 12 2019 .localized -rw-r--r--@ 1 play staff 456B 3 6 16:42 bili_utf16.inputplugin #系统路径 (.py3) localhost:~ play$ ll /Library/Input\ Methods/ total 0 drwxr-xr-x 3 root wheel 96B 3 6 16:11 ./ drwxr-xr-x 68 root wheel 2.1K 3 3 21:15 ../ drwxrwxr-x 3 root staff 96B 11 6 12:31 SogouInput.app/ #搜狗输入法 (.py3) localhost:~ play$ ll /Library/Input\ Methods/SogouInput.app/Contents/ total 4120 drwxrwxr-x 19 play staff 608B 3 6 09:50 ./ drwxrwxr-x 3 root staff 96B 11 6 12:31 ../ drwxrwxr-x 4 play staff 128B 11 6 12:17 Frameworks/ -rwxrwxr-- 1 play staff 3.6K 3 6 2022 Info.plist* drwxrwxr-x 3 play staff 96B 11 6 12:17 MacOS/ -rwxrwxr-- 1 play staff 8B 3 6 2022 PkgInfo* drwxrwxr-x 173 play staff 5.4K 11 6 12:17 Resources/ drwxrwxr-x 3 play staff 96B 11 6 12:17 SGAssistPanel.app/ drwxrwxr-x 3 play staff 96B 11 6 12:17 SGEmojiPanelTool.app/ drwxrwxr-x 3 play staff 96B 11 6 12:17 SGInputStatPanel.app/ drwxrwxr-x 3 play staff 96B 11 6 12:17 SGPicFaceTool.app/ -rwxrwxr-- 1 play staff 137K 3 6 2022 SogouHelper* drwxrwxr-x 3 play staff 96B 11 6 12:17 SogouPreference.app/ -rwxrwxr-- 1 play staff 132K 3 6 2022 SogouProcessInfo* -rwxrwxr-- 1 play staff 1.5M 3 6 2022 SogouServices* drwxrwxr-x 3 play staff 96B 11 6 12:17 SogouTaskManager.app/ -rwxrwxr-- 1 play staff 199K 3 6 2022 SogouXdelta* drwxrwxr-x 3 play staff 96B 11 6 12:17 _CodeSignature/ -rw-r--r-- 1 play staff 643B 3 6 09:50 updateOrder.plist ``` ================================================ FILE: 2020/3-7-web-proxy/README.md ================================================ # Python编程获取【在线网页代理】地址 - 视频 [先收藏!!Python编程获取【在线网页代理】的重定向地址](https://www.bilibili.com/video/av94486958/) - 在线ping服务 https://pingtool.org/ ## 在线网页代理 - https://www.free-proxy.com/ - https://weboproxy.com/ - 更好用 ## 测试地址 - BBC 行星地球2 - https://www.bbc.co.uk/programmes/p02544td - https://www.bbc.co.uk/programmes/b006mywy/episodes/guide - Reddit是个社交新闻站点,口号:提前于新闻发声,来自互联网的声音 - https://www.reddit.com/r/python - https://www.reddit.com/r/java ## 修改/etc/hosts ``` 192.99.70.154 weboproxy.com 192.99.70.154 ca.weboproxy.com 148.72.168.34 www.free-proxy.com 147.135.44.178 us3.free-proxy.com 199.127.60.210 us6.free-proxy.com ``` ================================================ FILE: 2020/3-7-web-proxy/demo1.py ================================================ # -*- encoding: utf-8 -*- ''' @File : demo1.py @Time : 2020/03/07 19:34:52 @Author : play4fun @Desc : ''' from urllib.parse import quote_plus import json import requests host='https://ca.weboproxy.com/index.php' def main(): target_url='https://www.reddit.com/r/python' # d={'url':target_url} # data=json.dumps(d) data='url='+quote_plus(target_url) print(data) rs=requests.post("https://ca.weboproxy.com/index.php", # data=data,#'url=https%3A%2F%2Fwww.reddit.com%2Fr%2Fcoronavirus', allow_redirects=False, data=data, headers={ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", # "Cache-Control": "max-age=0", "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded", # "DNT": "1", "Origin": "https://weboproxy.com", "Referer": "https://weboproxy.com/", # "Sec-Fetch-Dest": "document", # "Sec-Fetch-Mode": "navigate", # "Sec-Fetch-Site": "same-site", # "Sec-Fetch-User": "?1", # "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" }, # cookies={ # "_ga": "GA1.2.1357799465.1583580644", # "_gat_gtag_UA_139843171_1": "1", # "_gid": "GA1.2.509039750.1583580644" # }, ) print(rs.text) print('-'*40) print(rs.headers) print('-'*40) print(rs.headers['Location']) print('-'*40) print(rs.url) pass if __name__ == "__main__": main() ================================================ FILE: 2020/3-7-web-proxy/demo2.py ================================================ # -*- encoding: utf-8 -*- ''' @File : demo2.py @Time : 2020/03/07 20:32:21 @Author : play4fun @Desc : ''' import requests from urllib.parse import quote_plus def main(): url='https://www.reddit.com/r/java' quote_url=quote_plus(url) print(quote_url) rs=requests.post("https://ca.weboproxy.com/index.php", # data='url=https%3A%2F%2Fwww.reddit.com%2Fr%2Fpython', data='url='+quote_url, allow_redirects=False,#禁止重定向 headers={ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Accept-Language": "zh-CN,zh;q=0.9", "Cache-Control": "max-age=0", "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded", "Origin": "https://weboproxy.com", "Referer": "https://weboproxy.com/", # "Sec-Fetch-Dest": "document", # "Sec-Fetch-Mode": "navigate", # "Sec-Fetch-Site": "same-site", # "Sec-Fetch-User": "?1", # "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" }, cookies={}, ) print(rs.text) print('-'*40) print(rs.headers) print('-'*40) print(rs.headers['Location']) pass if __name__ == "__main__": main() ================================================ FILE: 2020/3-9-DNS-server/README.md ================================================ ## 编程实现DNS服务器 - 用来翻墙? - 视频 [编程实现DNS服务器,Python+Go。代码很简单!](https://www.bilibili.com/video/av94972898/) - 上个视频 [先收藏!!Python编程获取【在线网页代理】的重定向地址](https://www.bilibili.com/video/av94486958/) - 参考 - [How to write a DNS server in Go](https://jameshfisher.com/2017/08/04/golang-dns-server/) - 使用到的Go库 https://github.com/miekg/dns - Go DNS example https://github.com/miekg/exdns - 完整的程序 [如何在Go编程语言中编写自己的DNS代理?](https://www.smartspate.com/write-dns-proxy-go-programming-language/) - 目的是:屏蔽广告 - 代码 https://github.com/GoWebProd/goDNS - 也是使用上面的dns库 - 问题 - 黑名单找不到 https://raw.githubusercontent.com/GoWebProd/openvpn-adBlock/master/list/black.list - 使用Google DNS 8.8.8.8 在中国不能用 - Python DNS 库 - https://github.com/rthalley/dnspython - http://www.dnspython.org/ - dnspython是用于DNS的实用程序,/etc/hosts因此未使用。 - 对于简单的正向DNS查找,最好使用socket.gethostbyname() - 文章 [python3之DNS处理模块dnspython](https://blog.csdn.net/xwl145/article/details/81746497) 详细 - DNS记录类型 ``` A记录,将主机名转换成IP地址; MX记录,邮件交换记录,定义邮件服务器的域名; CNAME记录,指别名记录,实现域名间的映射; NS记录,标记区域的域名服务器及授权子域; PTR记录,反向解析,与A记录相反,将IP转换成主机名; SOA记录,SOA标记,一个起始授权区的定义。 ``` - 我写的DNS 服务地址 - https://play4fun.pythonanywhere.com/ - https://play4fun.pythonanywhere.com/dns?domain=www.free-proxy.com - 把mini_dns_server 设置为系统DNS服务器 - 实现某些网站翻墙,例如在线网站代理 - 不是所有的国外网站都能翻 - 测试 - https://weboproxy.com/ - https://www.free-proxy.com/ - 目标网站 - https://www.reddit.com/r/golang ================================================ FILE: 2020/3-9-DNS-server/dns_flask.py ================================================ # -*- encoding: utf-8 -*- ''' @File : dns_flask.py @Time : 2020/03/09 16:36:03 @Author : play4fun @Desc : ''' from flask import Flask, request, jsonify import socket app = Flask(__name__) @app.route('/', methods=['GET']) def hello_world(): d = { 'msg': '/dns?domain=xxx.xx' } return jsonify(d) pass @app.route('/dns', methods=['GET']) def dns(): domain = request.args.get('domain', "") rt = {} rt['domain'] = domain ip = '' if domain: try: ip = socket.gethostbyname(domain) except Exception as e: print(e) rt['error'] = str(e) pass rt['ip'] = ip return jsonify(rt) pass if __name__ == '__main__': app.run(debug=True) ================================================ FILE: 2020/3-9-DNS-server/mini_dns_server.go ================================================ /* @File : mini_dns_server.go @Time : 2020/03/08 20:17:26 @Author : play4fun @Desc : https://jameshfisher.com/2017/08/04/golang-dns-server/ 测试 go run mini_dns_server.go dig @127.0.0.1 www.free-proxy.com 设置为系统DNS ,运行正常 本地缓存 OK 下一步 GitHub gfw list */ package main import ( "encoding/json" "fmt" "io/ioutil" "log" "net" "net/http" "strconv" "github.com/miekg/dns" ) var domainsToAddresses map[string]string = map[string]string{ // "google.com.": "172.217.9.206", // "jameshfisher.com.": "104.198.14.52", // "www.free-proxy.com.": "148.72.168.34", // "us1.free-proxy.com.": "148.72.168.34", // "us2.free-proxy.com.": "148.72.169.80", } type handler struct{} func (this *handler) ServeDNS(w dns.ResponseWriter, r *dns.Msg) { msg := dns.Msg{} msg.SetReply(r) switch r.Question[0].Qtype { case dns.TypeA: msg.Authoritative = true domain := msg.Question[0].Name address, ok := domainsToAddresses[domain] //获取DNS if !ok { //本地没有 //查询网上 url2 := "https://play4fun.pythonanywhere.com/dns?domain=" + domain res, _ := http.Get(url2) resp, _ := ioutil.ReadAll(res.Body) // fmt.Println(resp) fmt.Printf("%s", resp) type DIP struct { Domain string IP string } var dip DIP err := json.Unmarshal(resp, &dip) if err != nil { fmt.Println("error:", err) } domainsToAddresses[domain] = dip.IP address = dip.IP } log.Println("domain:\t", domain, address, ok) //生成回复 msg.Answer = append(msg.Answer, &dns.A{ Hdr: dns.RR_Header{Name: domain, Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 60}, A: net.ParseIP(address), }) } fmt.Println("---------") w.WriteMsg(&msg) //回复 } func main() { srv := &dns.Server{Addr: ":" + strconv.Itoa(53), Net: "udp"} srv.Handler = &handler{} if err := srv.ListenAndServe(); err != nil { log.Fatalf("Failed to set udp listener %s\n", err.Error()) } // fmt.Println("---------") // c := make(chan os.Signal, 1) // signal.Notify(c, os.Interrupt, os.Kill) // s := <-c // fmt.Println("Got signal:", s) // //打印map // for domain := range domainsToAddresses { // fmt.Println(domainsToAddresses[domain], " :\t", domain) // } } ================================================ FILE: 2020/4-1-mitmproxy-抖音/README.md ================================================ # 抖音 抓包 并存到 数据库 - 视频 [mitmproxy-抖音抓包,并把短视频链接存到MongoDB数据库](https://www.bilibili.com/video/BV1ae411x78w) - 搜索接口 - https://search-lf.amemv.com/aweme/v1/general/search/single/?version_code=10.4.0&js_sdk_version=1.55.0.3&app_name=aweme&vid=70A898D5-73F9-429E-857C-41789EF2CD25&app_version=10.4.0&device_id=69337363324&channel=App%20Store&mcc_mnc=&aid=1128&screen_width=640&openudid=708a9ae21c955c1e94c739033b9a2002e4aa9153&cdid=7A55D456-9D79-46A5-B641-ACA8506D7780&os_api=18&ac=WIFI&os_version=13.4&device_platform=iphone&build_number=104012&iid=109605200207&device_type=iPod9,1&is_vcd=1&idfa=7327A25C-725B-48D7-9132-153B648500E3&client_width=320&keyword=%E5%AE%9D%E9%AA%8F730&disable_synthesis=0&sort_type=0&is_filter_search=0&count=12&mac_address=02%3A00%3A00%3A00%3A00%3A00&single_filter_aladdin=0&is_pull_refresh=0&epidemic_card_type=2&multi_mod=0&query_correct_type=1&search_id=202004011125360100080681420D933E6C&offset=92&search_source=search_sug&dynamic_type=1&publish_time=0&hot_search=0 - 关键词很重要 - mitmproxy 编写插件 - 启动 mitmweb -s addon1.py - 过滤 ~u aweme\/v1\/general\/search\/single - [使用 mitmproxy + python 做拦截代理](https://www.cnblogs.com/grandlulu/p/9525417.html) - 代码例子 https://github.com/mitmproxy/mitmproxy/tree/master/mitmproxy/addons - https://docs.mitmproxy.org/stable/addons-overview/ - 破解 抖音 协议 接口 - GitHub - 以后再研究 - 不知道行不行 [抖音协议中的加解密算法实现](https://github.com/usualwyy/aweme-algorithm) - 参考 - [Android逆向之旅—Android中分析某音短视频的数据请求加密协议(IDA动态调试SO)第一篇](http://www.520monkey.com/archives/1066) - 问题 - 难度大, - 经常改变,不稳定 - 使用别人破解的接口,要收费 - 现在抖音升级特别频繁,老版本的限制越来越多,以前的签名算法,要么已经过期,要么就不返回数据,要么就是经常封 IP,造成接口和代码要经常改动,维护代理 IP 的成本也高 - 视频要马上下载,不然过期失效 - 替代方案 - 笨方法 auto.js 自动点击,输入关键词,搜索 - 关键词很重要 - 旅游,景点 热门 - 网红 ================================================ FILE: 2020/4-10-MCN-papi酱/README.md ================================================ # 网红MCN papi酱 - 视频 [什么是MCN?papi酱成立的papitube签约了多少网红?](https://www.bilibili.com/video/BV1MA411b7YX/) - 指南 [怎样建立一个MCN](https://www.bilibili.com/video/BV1tt4y1U7kf/) Youtube视频 - 什么是MCN? - MCN(Multi-Channel Network)是舶来品,是一种多频道网络的产品形态,将PGC内容联合起来,在资本的有力支持下,保障内容的持续输出,从而最终实现商业的稳定变现。 - https://baike.baidu.com/item/MCN/3551331 - PGC 专业化生产内容 https://baike.baidu.com/item/PGC/16859378 - papi酱 - https://baike.baidu.com/item/papi%E9%85%B1/19324554 - 2015年10月,她开始利用变音器发布原创短视频内容 - 泰洋川禾集团拥有业内领先的短视频MCN机构——papi tube,由CEO杨铭和papi酱共同创立于2016年6月10日。 - https://www.mttop.cn/pages/bolggerMcn/index.html - 成立三年来,papitube签约并孵化了包括@Bigger研究所、@网不红萌叔Joey、@滇西小哥、@玲爷、@爆胎草莓粥等在内的170余位优秀短视频创作者,涵盖美食、美妆、搞笑、生活方式、生活评测、母婴、萌宠、文化等垂直领域,全网粉丝量近4亿,短视频累计播放量逾1000亿次。 - papi酱 (注册商标)https://baike.baidu.com/item/papi%E9%85%B1/22223449 - papi酱公司提供的工作,想不想天天看到网红? - 工作地点:北京市朝阳区 - 泰洋川禾 Boss直聘 - https://www.zhipin.com/gongsi/131ed72dc81dff7633V43d6-.html?ka=company-intro - 爬虫开发工程师 15-25K - 北京3-5年本科 - https://www.zhipin.com/job_detail/09ffb8df208d6bb603193N-0EVQ~.html ================================================ FILE: 2020/4-10-MCN-papi酱/analysis.py ================================================ # -*- encoding: utf-8 -*- ''' @File : analysis.py @Time : 2020/04/10 09:11:05 @Desc : ''' import requests # from scrapy.http import HtmlResponse def get网红(idx): rs = requests.get(f"https://mt.mttop.cn/miniprogram/blogger/{idx}", headers={ "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", "Connection": "keep-alive", "Content-Type": "application/json;charset=UTF-8", "DNT": "1", "Origin": "https://www.mttop.cn", "Referer": "https://www.mttop.cn/pages/bolggerMcn/index.html", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-site", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36" }, cookies={}, ) js=rs.json() count=js['data']['allPlatformFansCount'] if js['data']['allPlatformFansCount'] else 0 return count,js['data']['bloggerNickName'],js['data']['bloggerCalendarRemark'] pass def main(): url = 'https://mt.mttop.cn/miniprogram/blogger/list' rs = requests.post("https://mt.mttop.cn/miniprogram/blogger/list", data='{}', headers={ "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", "Connection": "keep-alive", "Content-Type": "application/json;charset=UTF-8", "DNT": "1", "Origin": "https://www.mttop.cn", "Referer": "https://www.mttop.cn/pages/bolggerMcn/index.html", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-site", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36" }, cookies={}, ) js = rs.json() # 签约了多少个网红 print('签约了多少个网红:', len(js['data']))#187 for d in js['data']: print(d['bloggerId'], d['bloggerNickName']) print(d['bloggerIntroduction']) print('-'*10) # 获取所有网红详情 rtl=[] for d in js['data']: print(d['bloggerId'], d['bloggerNickName']) rtl.append(get网红(d['bloggerId'])) #清理none rtl3=[] for fc,name,desc in rtl: if not fc: fc=0 rtl3.append((fc,name,desc)) #按【全网播放量】排序 rtl2=sorted(rtl,key=lambda x: x[0])#顺序 rtl2=sorted(rtl,key=lambda x: -x[0])#倒序 从大到小 for fc,name,desc in rtl2[:20]: print(fc,name,desc) print('-'*20) pass def main2(): # url='https://www.mttop.cn/pages/bolggerMcn/index.html' # rs=requests.get(url) # html=HtmlResponse(url=url,status=rs.status_code,body=rs.content) # html.xpath() pass if __name__ == "__main__": main() ================================================ FILE: 2020/4-2-今日头条-原创视频-收益/README.md ================================================ # 今日头条 制作视频 收益 - 看看别人是怎样的收益 - 视频 [看看别人的今日头条-视频收益,心动了吗?鼓励大家走【原创视频】的制作路线](https://www.bilibili.com/video/BV1at4y1m7VX/) - 视频是按照播放次数计算收益的。 - 一般来说,非粉丝观看,一万次播放是3元钱; - 如果是粉丝观看产生的播放,一万次是几百元不等。 - 现在很多原创账号,一万次粉丝的播放在600元左右。 - 今日头条的收益是按照播放量和阅读量计算的, - 图文阅读量一万=3块钱左右, - 视频一万=4块钱左右, - 只有头条号原创视频价格最高,一万播放大概20元, ### 鼓励大家走头条号原创视频的制作路线。 ``` #复制HTML html='''html''' import re pa='([\d\.]+.?)次观看' pa='([\d\.]+.?)播放' rs=re.findall(pa,html) rs2=[] for num in rs: if num[-1]=='万': rs2.append(float(num[:-1])*10000) else: rs2.append(float(num)) sm=sum(rs2) sm sm/10000*3 sm/10000*600*13.5 ``` ================================================ FILE: 2020/4-23-moviepy-GIF/README.md ================================================ # 使用moviepy制作 GIF动画 - 视频 [不需要视频剪辑软件,使用moviepy制作GIF动画,Python编程](https://www.bilibili.com/video/BV1hK4y1k7Qn/) - 步骤 - 准备图片 - 使用iPhone拍摄 - 导出图片 - 启动Docker moviepy - 启动 jupyter-lab --no-browser --ip=0.0.0.0 --allow-root - 打开浏览器 http://127.0.0.1:8888/?token=2da26d501d4b8cfae9a97543c60edd97be0422d974a2469d - Python编程,新建jupyter Notebook - 图片序列 ImageSequenceClip - 分辨率 - 帧数 - 输出GIF或mp4 ================================================ FILE: 2020/4-23-moviepy-GIF/跳绳-GIF动画.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 跳绳,图片,制作GIF动画" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pygame 1.9.6\n", "Hello from the pygame community. https://www.pygame.org/contribute.html\n" ] } ], "source": [ "from moviepy.editor import ImageSequenceClip\n", "import os" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['t1/IMG_1248.JPG',\n", " 't1/IMG_1250.JPG',\n", " 't1/IMG_1251.JPG',\n", " 't1/IMG_1252.JPG',\n", " 't1/IMG_1253.JPG',\n", " 't1/IMG_1254.JPG',\n", " 't1/IMG_1255.JPG',\n", " 't1/IMG_1256.JPG',\n", " 't1/IMG_1257.JPG',\n", " 't1/IMG_1258.JPG',\n", " 't1/IMG_1259.JPG',\n", " 't1/IMG_1260.JPG',\n", " 't1/IMG_1261.JPG',\n", " 't1/IMG_1262.JPG',\n", " 't1/IMG_1263.JPG',\n", " 't1/IMG_1264.JPG',\n", " 't1/IMG_1265.JPG',\n", " 't1/IMG_1266.JPG',\n", " 't1/IMG_1267.JPG',\n", " 't1/IMG_1268.JPG',\n", " 't1/IMG_1269.JPG',\n", " 't1/IMG_1270.JPG',\n", " 't1/IMG_1271.JPG',\n", " 't1/IMG_1272.JPG',\n", " 't1/IMG_1273.JPG',\n", " 't1/IMG_1274.JPG',\n", " 't1/IMG_1275.JPG',\n", " 't1/IMG_1276.JPG',\n", " 't1/IMG_1277.JPG']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#导入图片\n", "images=[f't1/{img}' for img in os.listdir('t1') if img.endswith('JPG')]\n", "images=sorted(images)\n", "images_list=images\n", "images_list" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "29" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(images_list)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "#把图片导入 序列\n", "clip = ImageSequenceClip(images_list, fps=25)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "t: 0%| | 0/31 [00:00\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mclips\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mclip\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mclip\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'ImageSequenceClip' and 'ImageSequenceClip'" ] } ], "source": [ "clips=clip+clip" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "clip2 = ImageSequenceClip(images_list*3, fps=30)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "t: 0%| | 0/90 [00:00>固件更新 23.01.013 - 编写代码 - 拖拉代码块 - 点击符号,转换成python代码 - 修改,上传到程小奔 - 执行,放到平地上 - 参考 - [开始使用python](http://docs.makeblock.com/codeyrocky/zh/tutorials/use-python.html) - [Python API文档](http://docs.makeblock.com/codeyrocky/zh/python-api/python-api.html) ================================================ FILE: 2020/4-23-程小奔python/检测物体.py ================================================ # generated by mBlock5 for codey & rocky # codes make you happy import codey, event, time, rocky @event.start def on_start(): codey.display.show_image("00003c7e7e3c000000003c7e7e3c0000") codey.speaker.play_melody('laugh.wav') @event.button_a_pressed def on_button_a_pressed(): codey.speaker.play_melody('hello.wav') while True: rocky.forward(50) if rocky.color_ir_sensor.is_obstacle_ahead(): codey.speaker.play_melody('wrong.wav', True) rocky.backward(50, 1, straight = True) rocky.turn_left_by_degree(90) rocky.forward(50, 2, straight = True) @event.button_b_pressed def on_button_b_pressed1(): rocky.stop() codey.speaker.play_melody('sigh.wav', True) codey.stop_all_scripts() @event.button_c_pressed def on_button_c_pressed2(): codey.display.show_image("000c18181c0c000000000c1c18180c00") codey.speaker.play_melody('hello.wav', True) codey.display.show_image("000207070f0e080000080e0f07070200") ================================================ FILE: 2020/4-29-GoPro-MAX/README.md ================================================ # GoPro MAX 全景运动相机 购买 使用 测评 - 《穷人评测》第一集 - 视频 [GoPro MAX 全景运动相机 购买 使用 测评,《穷人评测》第一集 ](https://www.bilibili.com/video/BV1mf4y1S78S/) - 参考 - 官网 https://gopro.com/zh/cn/ - 手册 https://zh.gopro.com/help/productmanuals - 软件 - iPhone安装App - GoPro - Quik - Macbook 安装 - [GoPro 播放器](https://community.gopro.com/t5/zh-cn/GoPro-25773-25918-22120/ta-p/472246?profile.language=zh-CN) - 在使用 GoPro MAX 拍摄了所有素材后,现在可以将 360 度影像转换为可供编辑和分析的精美传统视频和照片。 - 使用“调整画面”可尝试无数种视图,通过点击关键帧选择理想镜头,即刻创建视图之间电影级的转场效果。 - 然后,转换并导出传统的 .mp4 文件,通过自己喜欢的编辑程序播放或在社交媒体上分享。 - 在电脑上播放不流畅 - 升级电脑 - [Quik | 桌面版](https://gopro.com/zh/cn/shop/softwareandapp/quik-%7C-%E6%A1%8C%E9%9D%A2%E7%89%88/Quik-Desktop.html) - 使用 Quik,您可以无比轻松地存取、编辑和欣赏您的 GoPro 照片和视频。只需点击几下,即可自动导入1您的影像并制成搭配同步配乐的精彩视频 - GoPro大奖 https://gopro.com/zh/cn/awards - 拍到好作品,参赛拿奖金! - GoPro MAX 特点 - 拍摄 360度 全景相片和视频 - Max HyperSmooth 超强防抖 - 6个内置麦克风 - 坚固耐用 + 5米防水 - 一机三用 - 全景相机 - GoPro Hero 8 black 运动相机 - 自拍相机 VLog - == Insta360 ONE X运动全景相机 + DJI 大疆 Osmo Action 灵眸运动相机 - 售后,保护 - 特别注意,前后2个摄像头的镜头,划花了,不保修的! - 平时不使用的时候,用保护罩盖起来 - 一些危险场景,使用透明罩 - 购买 - 注意【价格保护】,购买后可能促销降价,例如我买了闪迪TF卡,2天后降价20元 - 京东 [GoPro MAX 全景运动相机 Vlog数码摄像机 水下潜水户外骑行滑雪直播相机 增强防抖 裸机防水](https://item.jd.com/100004982557.html) - ¥3998,免息分期24期,每月166.66元 - 墨西哥生产 - 竞品 - [Insta360 ONE X运动全景相机摄像机 5.7K高清运动防抖户外直播](https://item.jd.com/100000696258.html) - [DJI 大疆 Osmo Action 灵眸运动相机 双彩屏 超强增稳 超清画质 裸机防水 vlog摄像机](https://item.jd.com/100003394837.html) - 前后双彩屏 - 配件 - TF卡 [闪迪(SanDisk)64GB TF(MicroSD)存储卡 U3 C10 A2 V30 4K 至尊极速移动版内存卡 读速160MB/s 写速60MB/s](https://item.jd.com/2217746.html) - ¥109 - 自拍杆等配件 [SURWEO For GoPro配件hero8/7/6/5/4大疆运动相机套装小蚁相机转接配件套装 特价B](https://item.jd.com/27524547841.html) - 塑料味 - 电池,先不买 - 使用充电宝给相机充电,可以继续进行拍摄录视频 - 官方套装 - [GoPro MAX 360全景相机 原装正品双充充电器 快速充电锂电池 MAX 原装双充(含一充一电)](https://item.jd.com/62541068027.html) - 京东价 ¥548 , 比较贵 - 全解码电池,淘宝 - [劲码 gopro max电池 GoPro MAX全景运动相机360度防水防抖直播高清VLOG摄像机电池大容量非原装充电器配件](https://detail.tmall.com/item.htm?id=610674348281) - 便宜,实用,两电一充才¥209,用优惠券¥199 - [Ulanzi GM-2适用GoPro Max运动相机电池盖可充电侧边仓盖全金属兔笼GoPro Max侧盖外接vlog套装摄影支架配件](https://detail.tmall.com/item.htm?id=610151652238) - 全金属材质 不挡充电口 拆装简单 使用方便 - ¥54 - 我买了这个,可以边充电边摄影 - 不要频繁拆盖换电池,更方便 - 补光灯 - [VL49 迷你led补光灯便携小型摄影灯手机vlog视频拍摄多功能外拍灯户外直播拍照自拍手持单反相机摄像机影室灯 2000mAh大容量 持久续航 轻巧便携 多灯拼接](https://detail.tmall.com/item.htm?id=608816739769) - ¥ 79 - 防水壳 - [适用于gopro max防水壳 gopro max360全景运动相机配件水下镜头潜水保护壳 gopro max防水壳](https://item.jd.com/66602490801.html) - ¥308 - 开箱上手 - 防伪,二手东 - 扫描二维码 - [英迈电子商贸上海](http://www.trustim.cn/) - 识别码 2019045206610644 - 你所查询的数码已在2020年04月27日18时48分查询过,谨防假冒,请联系你的销售网点,谢谢使用! - 充电 - 看手册,5V1A - 使用 Supercharger,单独购买 - 使用电脑USB充电 - 充电宝 - 手机App连接 - 剪辑 - 锚点 - 调整视角 - 剪切,去掉不想要的片段 - 导出mp4,分享到社交平台,朋友圈 - 全景相片,上传 平台 - YouTube - 需要翻墙,上传流量过大! - https://720yun.com/ - 相片demo https://720yun.com/t/davks927spb - 全景视频 https://720yun.com/v2/e47z0e7tnr5 - 可以自由切换视角,默认是视频开始的方向 - 因为我上楼梯后转弯,到后面一直是显示我。 - 在这个平台,没法设置不同时间点的视角 - 直播 - [视频直播使用入门](https://community.gopro.com/t5/zh-cn/35270-39057-30452-25773-20351-29992-20837-38376/ta-p/400413?profile.language=zh-CN) - 不能使用【全景模式】,只能使用【Hero模式】 - 支持国内平台 - YouTube直播 - B站 - 选择 【直播分类】 - 使用第三方软件开播的用户点击开始直播后获取rtmp地址和推流码。 - rtmp地址: rtmp://bvc.live-send.acg.tv/live-bvc/ - 直播码: ?streamname=live_180958619_2148315&key=27db078641ff8zffa42b07a0f1bd8761 - 复制到手机 GoPro App: - rtmp://bvc.live-send.acg.tv/live-bvc/?streamname=live_180958619_2148315&key=27db078641ff8zffa42b07a0f1bd8761 - 如何使用我的手机个人热点进行视频直播? - 购买手机流量套餐 - 手机打开-个人热点 - GoPro App 连接热点 - 设置直播 ================================================ FILE: 2020/4-3-Jupiter-Notebook-插入HTML视频/README.md ================================================ ## Jupiter-Notebook-插入HTML视频 - 参考 - [How can I play a local video in my IPython notebook?](https://stackoverflow.com/questions/18019477/how-can-i-play-a-local-video-in-my-ipython-notebook) - 打开 [html_video.ipynb](html_video.ipynb) - 在命令行执行 jupyter-lab - 然后 打开 浏览器,加载 html_video.ipynb ================================================ FILE: 2020/4-3-Jupiter-Notebook-插入HTML视频/html_video.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 插入 HTML 视频\n", "- 在命令行执行 jupyter-lab\n", "- 然后 打开 浏览器,加载 html_video.ipynb" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
本地视频
\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", "
本地视频
\n", "\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", "
B站视频
\n", "" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", "
西瓜视频,不支持
\n", "" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
腾讯视频
\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", "
腾讯视频,有广告
\n", "" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
优酷视频,可以。站外播放,没有广告?
\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", "
优酷视频,可以。站外播放,没有广告?
\n", "\n", "" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: 2020/4-8-instagram/README.md ================================================ # Instagram 爬虫 - 视频 [想看漂亮小姐姐吗?Instagram爬虫,Python编程](https://www.bilibili.com/video/BV1sg4y187rh) - 参考 - GitHub - 搜索 https://github.com/search?l=Python&o=desc&q=instagram&s=stars&type=Repositories - 机器人 [Instagram Bot - Tool for automated Instagram interactions](https://github.com/timgrossmann/InstaPy) - 爬虫 [Instagram Scraper](https://github.com/rarcega/instagram-scraper) - 观察网页,api - 俄罗斯美女 https://www.instagram.com/sabinaskerova/ - 查看网页源代码,查找 _sharedData - 打开DevTool,Network面板,过滤 graphql/query - 使用 Instagram Scraper 爬虫 - 安装pip install instagram-scraper - 私人账号,必须是她的粉丝 - `instagram-scraper -u -p ` - instagram-scraper sabinaskerova --maximum 10 --proxies '{"http": "http://127.0.0.1:8118", "https": "http://127.0.0.1:8118" }' - instagram-scraper stationcdrkelly --maximum 10 - 美国宇航员 https://www.instagram.com/stationcdrkelly/ ================================================ FILE: 2020/5-4-movie-调查犯罪是我们的职业/Crime est notre affaire.subs.cn.srt ================================================ 1个 00:02:03,807 --> 00:02:07,807 总结一下:谨慎与天才 贝雷斯福德结婚了.. 2 00:02:09,327 --> 00:02:11,886 ..他们有一个女儿,.. 3 00:02:11,887 --> 00:02:14,887 ..两个可爱的孙子,.. 4 00:02:15,127 --> 00:02:18,127 ..他们会幸福地生活 从此以后。 5 00:02:18,367 --> 00:02:21,367 事情还没有结果 我期望的方式! 6 00:02:22,407 --> 00:02:25,407 非常深刻,但并非新鲜事物。 7 00:02:29,327 --> 00:02:32,327 好无聊。 我好无聊。 8 00:02:33,527 --> 00:02:36,527 我在一个深沉的黑暗穹顶中。 9 00:02:36,647 --> 00:02:39,647 你把我活埋了。 10 00:02:39,687 --> 00:02:42,086 当他们打开我的棺材时,.. 11 00:02:42,087 --> 00:02:45,087 ..他们会看到划痕 在盖子上.. 12 00:02:45,367 --> 00:02:48,246 我把手指放在哪里 到树桩上 13 00:02:48,247 --> 00:02:50,766 ..战斗出去。 -你怎么了? 14 00:02:50,767 --> 00:02:53,767 哦,什么都没有! 什么都没发生,仅此而已。 15 00:02:54,647 --> 00:02:57,647 我不能再忍受了 这种单调乏味的存在。 16 00:02:57,687 --> 00:03:00,687 我想你是 完全满足? 17 00:03:00,927 --> 00:03:02,766 贝雷斯福德上校.. 18岁 00:03:02,767 --> 00:03:05,767 ..前负责人 特勤局 19 00:03:05,847 --> 00:03:08,847 ..神秘的人, 不可能完成的任务... 20 00:03:09,367 --> 00:03:12,006 你不疼了吗 兴奋吗? 21 00:03:12,007 --> 00:03:14,886 为了浪漫的冒险? 22 00:03:14,887 --> 00:03:16,726 想象一下激动。 23 00:03:16,727 --> 00:03:20,727 ..听到敲门声, 去打开它.. 24 00:03:20,730 --> 00:03:23,287 ..看到一个死人交错进来! 25 00:03:24,607 --> 00:03:26,726 如果他死了,他不会 令人st目结舌。 26 00:03:26,727 --> 00:03:29,727 但是是的,他们总是错开 在他们死之前 27 00:03:30,447 --> 00:03:33,447 然后他们跌倒了 莫名其妙的单词,如:.. 28 00:03:34,367 --> 00:03:37,367 斑点豹子... 啊...!'' 29 00:03:38,567 --> 00:03:40,966 我不认为我喜欢死人 谁错了。 30 00:03:40,967 --> 00:03:43,967 哦,那将是在车轮上用餐! 31 00:04:02,000 --> 00:04:04,000 你在做什么 ? 32 00:04:04,500 --> 00:04:06,500 你能闻到些什么吗? 33 00:04:06,750 --> 00:04:09,000 <不,没有。 34 00:04:09,500 --> 00:04:11,500 你闻不到那种气味吗? 35 00:04:11,600 --> 00:04:13,500 <有什么气味? -不确定... 36 00:04:13,750 --> 00:04:16,500 晚年。 37 00:04:16,750 --> 00:04:19,500 <老年? -是的。老年。 38 00:04:20,047 --> 00:04:23,600 非常感谢你。 -<不-不... 39 00:04:23,727 --> 00:04:26,000 不是你,是我。 40 00:04:26,087 --> 00:04:30,087 有一段时间了,我已经老了 爬到我身上。 41 00:04:31,527 --> 00:04:33,006 我,我什么都没有。 42 00:04:33,007 --> 00:04:36,007 你什么都没有没有任何感觉。 -<完成后.. 43 00:04:36,327 --> 00:04:40,327 ..使动词“感觉”结合起来... -<但是我们不老! 44 00:04:42,607 --> 00:04:45,326 不老 ?我们不是退休人员吗? 45 00:05:03,007 --> 00:05:06,007 当您退休时,它毁了 我的生活。 46 00:05:06,327 --> 00:05:10,727 是您想休假。 -要放假-恰到好处。 47 00:05:11,207 --> 00:05:14,207 无论如何, 别理我 48 00:05:14,687 --> 00:05:16,606 乔治怎么样? 49 00:05:16,607 --> 00:05:19,607 我正在燃烧枯叶。 还要别的吗? 50 00:05:19,687 --> 00:05:21,446 没关系。 51 00:05:21,447 --> 00:05:24,947 我不相信我已经看过 你以前喜欢这样 52 00:05:25,247 --> 00:05:28,247 一直在搅拌 在我心中很长一段时间。 53 00:05:28,367 --> 00:05:31,367 为什么不买新帽子呢? -我已经有很多! 54 00:05:31,767 --> 00:05:34,206 那如果你有40点呢 55 00:05:34,207 --> 00:05:35,966 ..另一个可能会成功。 我们走吧。 56 00:05:35,967 --> 00:05:38,967 我有44个;和所有的帽子 彼此相似。 57 00:05:39,847 --> 00:05:42,847 即使有微妙之处 他们之间的差异。 58 00:05:43,527 --> 00:05:46,527 我会喜欢的东西 激动发生在我们身上。 59 00:05:47,647 --> 00:05:50,126 这对我们俩都很好。 60 00:05:50,127 --> 00:05:52,966 如果只是仙女 会出现... 61 00:07:01,967 --> 00:07:04,526 导体... 62 00:07:06,967 --> 00:07:08,166 怎么了 ? 63 00:07:08,167 --> 00:07:11,167 一个女人被勒死 在超越我们的火车上。 64 00:07:13,007 --> 00:07:14,446 我都看了 65岁 00:07:14,447 --> 00:07:17,366 完全冷静地告诉我 你看到了什么 66 00:07:17,367 --> 00:07:20,086 我睡着了... 67 00:07:20,087 --> 00:07:22,406 另一列火车超越了我们。 68 00:07:22,407 --> 00:07:25,407 我看到一个男人的后背 -勒死一个女人。 69 00:07:26,487 --> 00:07:29,487 勒死一个女人? -是的 70 00:07:30,087 --> 00:07:33,087 就像书中一样 您正在阅读 ? 71 00:07:33,247 --> 00:07:35,326 一模一样 ! 72 00:07:35,327 --> 00:07:38,126 好吧... 73 00:07:38,127 --> 00:07:42,027 鲁迪,你看到什么了吗 4:50快递有异样吗? 74 00:07:42,247 --> 00:07:43,446 没有为什么 ? 75 00:07:43,447 --> 00:07:45,126 没事,算了。 76 00:07:45,127 --> 00:07:48,127 我想知道 你打算做。 77 00:07:48,247 --> 00:07:51,246 我不是警察。 但是,如果它能让您放心,.. 78 00:07:51,247 --> 00:07:54,206 ..我会找出来 事件报告。 79 00:07:54,207 --> 00:07:56,086 有事吗 80 00:07:56,087 --> 00:07:59,087 这是犯罪! 81 00:08:17,207 --> 00:08:19,486 巴贝特姨妈! 82 00:08:19,487 --> 00:08:23,487 谨慎一点 我见证了犯罪! 83 00:08:24,367 --> 00:08:27,367 犯罪? -是的,犯罪! 84 00:08:30,727 --> 00:08:32,526 不,不,不是东西! 85 00:08:32,527 --> 00:08:34,086 没有提到尸体。 86 00:08:34,087 --> 00:08:37,086 你不相信我发明了它吗? - 当然不是 ! 87 00:08:37,087 --> 00:08:38,446 你让我感觉更好。 88 00:08:38,447 --> 00:08:40,886 那个指挥 他不相信我。 89 00:08:40,887 --> 00:08:43,686 但是我给他一个清晰的 我所看到的陈述。 90 00:08:43,687 --> 00:08:46,526 普通攻击者 会逃跑.. 91 00:08:46,527 --> 00:08:48,606 ..并离开了身体。 92 00:08:48,607 --> 00:08:51,607 因此,它是有预谋的, 或激情犯罪... 93 00:08:52,487 --> 00:08:55,487 嫉妒,愤怒-和那个男人 勒死... 94 00:08:56,927 --> 00:08:59,927 但是我看不到 他对身体做了什么。 95 00:09:00,327 --> 00:09:03,327 啊!他把它从窗户扔了。 96 00:09:06,367 --> 00:09:09,367 他把它藏在手提箱里。 97 00:09:09,447 --> 00:09:12,447 什么样的杀手四处走动 放在手提箱里的尸体? 98 00:09:13,967 --> 00:09:16,046 这将被注意到。 99 00:09:16,047 --> 00:09:17,886 再来一条路? 100 00:09:17,887 --> 00:09:20,887 就我而言 他把它从窗户扔了。 101 00:09:21,527 --> 00:09:24,527 <或尸体错开! 102 00:09:26,647 --> 00:09:28,886 你的刺客很魁梧? -<是的。 103 00:09:28,887 --> 00:09:31,486 <至少对我来说是如此。 104 00:09:31,487 --> 00:09:34,487 <足够大,主要是棕色。 105 00:09:34,687 --> 00:09:36,606 我只看到他的背影。 106 00:09:38,247 --> 00:09:40,366 和不幸的受害者一样。 啊! 107 00:09:42,127 --> 00:09:44,286 她戴着红色手套! 108 00:09:44,287 --> 00:09:47,246 <这...太可怕了。 -<你一定有.. 109 00:09:47,247 --> 00:09:50,247 ..做梦,或目击 国内纠纷 110 00:09:50,327 --> 00:09:53,327 ..比您想象的要悲惨。 111 00:09:53,687 --> 00:09:57,687 少悲惨?!这是犯罪! 我亲眼看到了它。 112 00:09:58,327 --> 00:10:00,926 <我很失望! 您的Belisaire是.. 113 00:10:00,927 --> 00:10:03,927 ..像其他人一样。 他不相信我。 114 00:10:04,887 --> 00:10:07,887 这发生在某处 超越Andelieux? 115 00:10:08,287 --> 00:10:09,446 是。 116 00:10:09,447 --> 00:10:12,947 我记得那个地方。 有一条曲线.. 117 00:10:13,087 --> 00:10:14,806 ..那使我震惊。 118 00:10:14,807 --> 00:10:17,807 我们的火车经过了 Andelieux的车站 119 00:10:18,207 --> 00:10:21,207 十分钟后。 Belisaire,您到了! 120 00:10:21,527 --> 00:10:24,527 <我需要绝对 内心的平静.. 121 00:10:24,607 --> 00:10:26,046 ..我在国外旅行期间。 122 00:10:26,047 --> 00:10:29,047 <您要去哪里狩猎, 这次 ? -在圭亚那。 123 00:10:29,407 --> 00:10:3​​2,407 Zigoeunus Thomasus 蛾。男性 124 00:10:3​​2,567 --> 00:10:3​​5,567 这是最优雅的飞蛾 在亚马逊地区... 125 00:10:57,167 --> 00:10:59,366 <为什么要熨烫苏格兰短裙? 126 00:10:59,367 --> 00:11:01,526 我在格拉斯哥的聚会。 127 00:11:01,527 --> 00:11:04,366 你知道吗, 椭圆蓟。 128 00:11:04,367 --> 00:11:06,886 你忘了我要走吗 后天? 129 00:11:06,887 --> 00:11:09,887 那你就必须全身心投入 熨烫褶皱。 130 00:11:11,487 --> 00:11:13,206 你在做什么 ? 131 00:11:13,207 --> 00:11:16,207 废话 巴贝特姨妈的“罪行”! 132 00:11:16,527 --> 00:11:19,527 你忘了 犯罪是我们的责任。 133 00:11:20,327 --> 00:11:23,327 很明显你阿姨 弄错了 134 00:11:24,087 --> 00:11:27,086 理查德专员 到处搜寻。 135 00:11:27,087 --> 00:11:30,087 火车,车站,医院, 太平间。没有身体的迹象。 136 00:11:30,767 --> 00:11:33,767 没有人报告失踪。 137 00:11:36,847 --> 00:11:38,366 超车的火车.. 138 00:11:38,367 --> 00:11:41,367 ..贝贝特一定是 4:50 139 00:11:41,687 --> 00:11:43,926 ..在Aigrefonds停下。 140 00:11:43,927 --> 00:11:46,646 然后,铁路轨道 141 00:11:46,647 --> 00:11:49,647 ..跟随县境 一段距离... 142 00:11:50,927 --> 00:11:53,927 但是之后, 实际上有一条曲线。 143 00:11:54,287 --> 00:11:55,406 然后 ? 144 00:11:55,407 --> 00:11:58,286 刺客扔了 窗外的身体。 145 00:11:58,287 --> 00:12:00,046 <坦白地说,那就是你 希望发生! 146 00:12:00,047 --> 00:12:03,047 帮凶, 隐藏在灌木丛中 147 00:12:03,367 --> 00:12:06,367 ..捆绑受害者 进入他的黑色货车。 148 00:12:06,607 --> 00:12:09,607 ..并倾倒一切 进入湖中。 149 00:12:09,847 --> 00:12:12,166 周围没有湖。 150 00:12:12,167 --> 00:12:15,167 您相信只有看到的东西, 我可怜的人。 151 00:12:15,247 --> 00:12:18,247 这就是为什么 你常常被误入歧途。 152 00:12:31,967 --> 00:12:34,967 ``我记得那个地方。 有一条曲线.. 153 00:12:35,367 --> 00:12:37,286 ''..那让我震惊 154 00:12:37,287 --> 00:12:40,287 ``我们的火车经过了 Andelieux的车站。'' 155 00:13:01,007 --> 00:13:03,486 <我相信我已经找到了。 156 00:13:03,487 --> 00:13:06,487 靠近曲线,有 酷儿属性,孤立。 157 00:13:07,727 --> 00:13:10,446 处置身体的理想选择。 158 00:13:10,447 --> 00:13:11,766 这是一种痴迷。 159 00:13:11,767 --> 00:13:14,686 我有一个直觉 巴贝特是对的。 160 00:13:14,687 --> 00:13:16,366 不要跟我谈论直觉。 161 00:13:16,367 --> 00:13:19,326 她没有想象力 发明这样的故事。 162 00:13:19,327 --> 00:13:22,327 然后也许是幻觉。 163 00:13:22,407 --> 00:13:24,606 巴贝特姨妈的脑袋还好。 164 00:13:24,607 --> 00:13:27,486 她是世界权威 在蝴蝶上。 165 00:13:27,487 --> 00:13:30,487 她没有发明它们。 她抓住了它们并命名。 166 00:13:31,367 --> 00:13:34,367 她想与 杀手,我会帮助她的。 167 00:13:34,887 --> 00:13:37,887 一个人不追杀人 像蝴蝶一样 168 00:13:38,167 --> 00:13:42,167 不,是一样的一个人困住他们 和-松散-固定他们。 169 00:13:42,847 --> 00:13:45,406 ``Shlack''!我不明白 170 00:13:45,407 --> 00:13:48,407 那是因为你不听! 171 00:13:51,087 --> 00:13:54,087 与您度过愉快的时光 椭圆蓟的朋友。 172 00:13:54,807 --> 00:13:57,807 我们不会喝水。 毫无疑问! 173 00:13:59,767 --> 00:14:02,767 再见一路平安 ! 174 00:14:25,007 --> 00:14:26,366 看苏格兰人! 175 00:14:26,367 --> 00:14:29,367 他们什么都不穿 在他们的短裙下,你知道。 176 00:14:34,487 --> 00:14:37,487 我如何做到这一点? 177 00:14:44,247 --> 00:14:45,846 我们可以帮您吗? 178 00:15:05,647 --> 00:15:07,046 你的帽子 179 00:15:50,167 --> 00:15:51,206 不知道是谁 180 00:15:51,207 --> 00:15:54,207 ..那个女孩可能是? -她可能是新来的女仆。 181 00:15:55,327 --> 00:15:57,006 ..up在“ LaValléeaux Loups”。 182 00:15:57,007 --> 00:16:00,007 他们都没有持续很长时间。 183 00:16:00,047 --> 00:16:03,047 <老人夏庞帝 看到这一点。 184 00:16:05,767 --> 00:16:07,806 <那个可怜的姑娘... 185 00:16:07,807 --> 00:16:09,886 所有的雪都在那里。 186 00:16:09,887 --> 00:16:12,887 ..她不会坐公共汽车。 187 00:16:18,887 --> 00:16:21,887 今天不会有公车。 我可以带你去哪里吗? 188 00:16:27,327 --> 00:16:29,606 你在那里真幸运! 189 00:16:29,607 --> 00:16:32,607 我相信他们会拥有所有 让我当场冻结。 190 00:16:39,727 --> 00:16:41,486 你的座位加热了吗? 191 00:16:41,487 --> 00:16:43,566 不,不,这是您感觉到的马达。 192 00:16:43,567 --> 00:16:46,126 他们都是那个地方的狗。 193 00:16:46,127 --> 00:16:48,246 像我的老板一样 夏潘捷先生。 194 00:16:48,247 --> 00:16:49,566 他是狗吗? - 一只老鼠 ! 195 00:16:49,567 --> 00:16:52,567 丰富得令人难以置信,但 你永远不会知道的,老鼠! 196 00:16:53,167 --> 00:16:56,167 总是在走廊里 等着凝视我! 197 00:16:57,847 --> 00:17:00,006 你知道,凝视着…… 198 00:17:00,007 --> 00:17:02,646 凝视,如何? 我不能告诉你 199 00:17:02,647 --> 00:17:04,326 他向我的脊椎发出寒战。 200 00:17:04,327 --> 00:17:07,327 事实是,老人夏潘捷 吓到大家了 201 00:17:08,567 --> 00:17:10,686 你在房子里做什么 这个老人呢? 202 00:17:10,687 --> 00:17:14,687 一切。洗碗碟, 打扫灰尘,购物,铺床。 203 00:17:15,307 --> 00:17:18,607 靠你自己 ? 不,有女士。克莱林 204 00:17:18,847 --> 00:17:21,446 但是这个地方很大 它真的需要一支军队。 205 00:17:21,447 --> 00:17:23,366 他一个人住吗? 206 00:17:23,367 --> 00:17:26,366 不,和他可怜的女儿 和一个园丁。 207 00:17:26,367 --> 00:17:28,086 最糟糕的是厨房。 208 00:17:28,087 --> 00:17:31,087 有点像 走出中世纪。 209 00:17:31,767 --> 00:17:33,606 你去那儿很久了吗? 210 00:17:33,607 --> 00:17:36,607 七个星期。我不想 待一会儿。 211 00:18:54,927 --> 00:18:57,927 进来吧。 我将拿来小姐。 212 00:19:04,207 --> 00:19:06,206 新的国内来了。 213 00:19:06,207 --> 00:19:09,207 <送她到我的办公室。 -很好,小姐。 214 00:19:11,727 --> 00:19:13,806 来吧,她现在见。 215 00:19:13,807 --> 00:19:16,807 您今年是第13位。 迷信? 216 00:19:42,767 --> 00:19:45,366 你好, 我是Emma Charpentier。 217 00:19:45,367 --> 00:19:47,446 你是个好厨师吗? 218 00:19:47,447 --> 00:19:50,447 你有参考吗? 不,没有 219 00:19:50,607 --> 00:19:52,286 那是很不寻常的。 220 00:19:52,287 --> 00:19:55,126 在大多数情况下, 它们没有什么价值。 221 00:19:55,127 --> 00:19:58,127 他们从不说 为什么一个人离开一个地方。 222 00:20:00,287 --> 00:20:04,287 非常真实你哪一天 喜欢休息吗? 223 00:20:04,407 --> 00:20:09,407 我很灵活。以来 我亲爱的丈夫之死... 224 00:20:10,767 --> 00:20:13,767 我的时间是我自己的。 225 00:20:13,967 --> 00:20:16,967 很好。 让我告诉你你的房间。 226 00:20:23,567 --> 00:20:25,606 我不仅需要厨房女仆。 227 00:20:25,607 --> 00:20:28,607 嗯克莱林不是每天都在这里。 228 00:20:28,767 --> 00:20:31,767 我的祖父,他建造了 屋。太棒了 229 00:20:32,447 --> 00:20:35,447 但是非常严格。 损坏是我父亲造成的。 230 00:20:35,527 --> 00:20:38,686 ..有点生气。他拒绝 让任何人修理它。 231 00:20:38,687 --> 00:20:41,687 我父亲是一个很难的人。 232 00:20:42,247 --> 00:20:45,247 他一直在关注费用, 可能会很困难 233 00:20:47,407 --> 00:20:49,126 - 我习惯于.. 234 00:20:49,127 --> 00:20:51,086 ..老年人的习惯。 235 00:20:51,087 --> 00:20:53,726 首先,事情将会是 简单。我们四个人。 236 00:20:53,727 --> 00:20:56,646 我自己,我的外nie女在度假, 她的同学,然后... 237 00:20:56,647 --> 00:20:57,486 艾玛! 238 00:20:57,587 --> 00:21:01,987 ..我的父亲。但是我的兄弟们 即将圣诞节。 239 00:21:02,207 --> 00:21:05,207 艾玛! 240 00:21:05,847 --> 00:21:08,847 这些圣诞节费用。 你想让我破产吗? 241 00:21:09,887 --> 00:21:12,366 那是谁啊 242 00:21:12,367 --> 00:21:15,367 新厨房女佣 我跟你谈过 243 00:21:15,887 --> 00:21:18,887 来来 ! 我们来看你,过来! 244 00:21:20,487 --> 00:21:24,487 你叫什么名字,小家伙? 保诚贝雷斯福德。 245 00:21:27,447 --> 00:21:29,126 她的手臂很好。 246 00:21:29,127 --> 00:21:32,127 好吧... 247 00:21:34,367 --> 00:21:37,367 记住两件事: 我讨厌浪费 248 00:21:38,607 --> 00:21:41,607 ..一个乡绅是 不一定丰富。 249 00:21:41,687 --> 00:21:44,687 我住在这里是因为我想 不是因为我有能力。 250 00:21:46,127 --> 00:21:48,606 现在,走吧 ! 不要再打扰我了。 251 00:21:48,607 --> 00:21:53,607 别忘了一个好鳕鱼 和大菱形一样好。 252 00:21:55,687 --> 00:21:58,086 对不起。 253 00:21:58,087 --> 00:22:00,046 艾玛! 254 00:22:00,047 --> 00:22:01,766 过来,艾玛! 255 00:22:01,767 --> 00:22:03,486 劳驾。 256 00:22:03,487 --> 00:22:06,487 我必须去。你的房间是 在顶部-在左侧 257 00:22:06,767 --> 00:22:08,486 钥匙在门上。 258 00:22:08,487 --> 00:22:11,487 我自己的孩子 成了我的敌人! 259 00:22:14,207 --> 00:22:17,207 <告诉那个白痴医生 最后一种药.. 260 00:22:18,647 --> 00:22:19,806 <..一点都不好! 261 00:22:19,807 --> 00:22:22,807 <您确定吗? -<当然可以! 262 00:22:59,367 --> 00:23:02,367 谁在那儿 ? 263 00:23:25,207 --> 00:23:28,207 你一定是侄女... 的Mlle。夏蓬蒂 264 00:23:28,327 --> 00:23:31,327 是的,我是Alexie Charpentier。 265 00:23:32,687 --> 00:23:35,687 而你,你是玛丽·波平斯! -啊!欢乐满人间 ! 266 00:23:36,127 --> 00:23:39,127 你不是我的女仆 为我的祖父工作。 267 00:23:39,807 --> 00:23:43,807 你不是我侄女的主意 的Mlle。夏蓬蒂 268 00:23:44,367 --> 00:23:47,367 嗯克莱林在等你 在厨房。 269 00:23:47,387 --> 00:23:49,406 那让我改变 我会在那里。 270 00:23:49,407 --> 00:23:52,086 我会等你降落。 271 00:23:52,087 --> 00:23:53,006 艾玛! 272 00:23:53,007 --> 00:23:57,007 他总是向我姨妈喊。 然而,她是唯一爱他的人。 273 00:23:57,727 --> 00:24:00,727 别人不爱他吗? -他们就像秃鹰。 274 00:24:01,327 --> 00:24:03,126 他们在等他死。 275 00:24:03,127 --> 00:24:05,846 秃are是谁? -我叔叔 276 00:24:05,847 --> 00:24:10,847 拉斐尔叔叔。他很奇怪。 一位银行家和一名赌徒。 277 00:24:11,507 --> 00:24:14,086 他和妻子一起住在里昂。 278 00:24:14,087 --> 00:24:17,046 他只喜欢钱和毒品。 279 00:24:17,047 --> 00:24:19,126 奥古斯丁叔叔住 在一个岛上。 280 00:24:19,127 --> 00:24:22,127 他放弃了雕刻 花时间打猎。 281 00:24:23,527 --> 00:24:25,926 他杀死的越多, 他越喜欢它。 282 00:24:25,927 --> 00:24:28,846 谁来照顾你? - 我的父亲。 283 00:24:28,847 --> 00:24:31,486 我妈妈死了。 一家人都考虑他。 284 00:24:31,487 --> 00:24:34,046 ..失败。他们叫他 弗雷德里克的闲逛 285 00:24:34,047 --> 00:24:36,966 但是我不在乎。 他是一位优秀的吉他手。 286 00:24:36,967 --> 00:24:37,926 就在那儿。 287 00:24:37,927 --> 00:24:40,927 还有爱德蒙叔叔, 在战争中丧生的人。 288 00:24:41,327 --> 00:24:44,327 我们快到了,来吧。 289 00:24:50,807 --> 00:24:52,886 她已经喝醉了。 290 00:24:52,887 --> 00:24:54,646 一条小路,.. 291 00:24:54,647 --> 00:24:57,647 ..Mme。克莱林? -天气照旧,有帮助。 292 00:24:58,447 --> 00:25:00,566 我一直在等你。 293 00:25:00,567 --> 00:25:02,846 我会给你看 东西在哪里。 294 00:25:02,847 --> 00:25:04,966 不会花一点时间。 295 00:25:04,967 --> 00:25:07,967 在盘ull里,有 午餐所需的一切。 296 00:25:12,127 --> 00:25:14,566 炉子烧得很好。 我点燃了 297 00:25:14,567 --> 00:25:17,206 ..今天早上。 您需要保持它的状态。 298 00:25:17,207 --> 00:25:19,526 屋子里可能会变冷。 299 00:25:19,527 --> 00:25:22,006 我煮了咖啡。 300 00:25:22,007 --> 00:25:24,006 所以,你在那里。 再见 ! 301 00:25:24,007 --> 00:25:26,326 保重,爷爷讨厌。 302 00:25:26,327 --> 00:25:30,327 ..晚饭。 午餐是中午,夫人。罂粟花。 303 00:26:16,327 --> 00:26:20,327 来吧, 不然我们会迟到的! 304 00:26:34,027 --> 00:26:36,946 <现在谁在想象事情? -<爸爸,你夸张了。 305 00:26:36,947 --> 00:26:40,526 <我知道我在说什么。 我的病,两个星期前.. 306 00:26:40,527 --> 00:26:43,206 ..你的兄弟有 与此有关。 307 00:26:43,207 --> 00:26:44,806 接下来您会提出什么建议? 308 00:26:44,807 --> 00:26:47,646 <只是消化不良。 309 00:26:47,647 --> 00:26:49,846 <现在坐下来让自己平静。 310 00:26:49,847 --> 00:26:52,326 <您和我谈论消化不良! 311 00:26:52,327 --> 00:26:55,327 甚至是您珍贵的拉加德博士 很可疑 312 00:26:56,047 --> 00:26:59,047 但是你忘记了一件事。 313 00:26:59,247 --> 00:27:02,247 失败总是死在最后。 314 00:27:09,127 --> 00:27:10,966 愚蠢的服务生不工作。 315 00:27:10,967 --> 00:27:12,486 铅的重量下降了。 316 00:27:12,487 --> 00:27:15,166 可以修理吗? -我不这么认为。 317 00:27:15,167 --> 00:27:18,167 让我们来帮助您。有 到中午只有30秒。 318 00:27:19,447 --> 00:27:22,447 嗯罂粟花, 瓦莱丽,我最好的朋友。 319 00:27:22,527 --> 00:27:25,527 着迷。 走开我会跟着 320 00:27:53,967 --> 00:27:56,967 这很好,汤。 321 00:27:59,807 --> 00:28:02,807 很好 真的很好,汤。 322 00:28:53,447 --> 00:28:56,447 ``弯曲的曲线...'' 323 00:28:56,487 --> 00:28:58,886 是啊 00:29:01,887 终于!你在哪 ? 325 00:29:02,207 --> 00:29:04,686 自己弄清楚... 326 00:29:04,687 --> 00:29:05,646 你在哪 ? 327 00:29:05,647 --> 00:29:08,647 你还没有发射自己 进入那个荒谬的奥秘。 328 00:29:09,127 --> 00:29:11,806 ..铁路谋杀案? 329 00:29:11,807 --> 00:29:15,207 我突然发现 对雪鞋的热情。 330 00:29:15,647 --> 00:29:17,526 我正在练习。 331 00:29:17,527 --> 00:29:20,527 <什么? -是的,我从来不敢承认。 332 00:29:21,487 --> 00:29:24,126 ..但是我梦dream以求... 333 00:29:24,127 --> 00:29:27,127 ..独自一人在雪中行走, 穿着雪鞋。 334 00:29:28,927 --> 00:29:30,126 你什么时候回来 ? 335 00:29:30,127 --> 00:29:32,046 我会回来的... 336 00:29:32,047 --> 00:29:34,486 我会回来的... 我不知道。 337 00:29:34,487 --> 00:29:36,526 5天内完成 是圣诞节! 338 00:29:36,527 --> 00:29:39,527 玛丽·克里斯汀和她的家人 将与我们一起度过。 339 00:29:40,647 --> 00:29:41,926 已经是圣诞节了吗? 340 00:29:41,927 --> 00:29:44,526 但是,是的 ! 每年一次。 341 00:29:44,527 --> 00:29:47,527 我怎么会忘记? 342 00:29:48,327 --> 00:29:52,327 圣诞节,另一个机会 享受孙子们! 343 00:30:34,687 --> 00:30:37,166 你们自己很开心。 344 00:30:37,167 --> 00:30:40,167 我们要去博物馆了。 - 博物馆 ? 345 00:30:40,327 --> 00:30:43,327 红房子,祖父在哪里 保留他的宝藏。 346 00:30:43,847 --> 00:30:46,526 它在那边的岩石之外。 347 00:30:46,527 --> 00:30:47,846 来吧,通过这里! 348 00:31:19,047 --> 00:31:22,047 这条路。 349 00:31:24,047 --> 00:31:27,047 <哦!这里很冷! 350 00:32:04,000 --> 00:32:07,000 记得锁起来 因为野猪。 351 00:32:23,000 --> 00:32:26,000 您不可以在这里。 这是乡绅的博物馆。 352 00:33:15,000 --> 00:33:16,500 坐!! 353 00:34:55,000 --> 00:34:57,700 *这是的应答电话 Babette Boutiti。 354 00:34:58,000 --> 00:35:00,200 *我在寻找蝴蝶 圭亚那 355 00:35:00,207 --> 00:35:02,806 *留言后 “流行”。 356 00:35:02,807 --> 00:35:03,886 * Pop! 357 00:35:03,887 --> 00:35:06,887 巴贝特姨妈 我刚发现.. 358 00:35:07,727 --> 00:35:10,686 ..身体 被勒死的女人的画像。 359 00:35:10,687 --> 00:35:13,687 ..穿着皮大衣, 一个红色的手套。 360 00:35:13,847 --> 00:35:16,086 ..在一个大石棺中。 361 00:35:16,087 --> 00:35:19,087 你在这。我会告诉 你回来的时候会更多。 362 00:35:19,487 --> 00:35:22,487 好,仅此而已。 363 00:35:40,167 --> 00:35:42,126 Belisaire! 364 00:35:42,927 --> 00:35:45,406 烂草皮! 365 00:35:47,687 --> 00:35:49,606 现在还在圣诞节吗? 366 00:36:13,967 --> 00:36:16,967 我从没见过那个女人 之前,我确定。 367 00:36:17,487 --> 00:36:20,487 你还好吗 ? 你看起来很苍白,艾玛。 368 00:36:21,687 --> 00:36:23,886 会过去的。 我很好,谢谢。 369 00:36:23,887 --> 00:36:25,966 我们到了。 现在慢慢呼吸。 370 00:36:25,967 --> 00:36:27,606 非常感谢您的到来, 弗朗索瓦 371 00:36:27,607 --> 00:36:30,086 每当你需要我的时候。 372 00:36:30,087 --> 00:36:31,886 慢慢呼吸。 373 00:36:31,887 --> 00:36:33,526 <布莱奇检查员.. 374 00:36:33,527 --> 00:36:36,326 ..拉加德博士。 - 你好。 375 00:36:36,327 --> 00:36:38,126 医生。 376 00:36:38,127 --> 00:36:40,566 太不可思议了 ! 377 00:36:40,567 --> 00:36:43,567 石棺来自 18王朝! 378 00:36:44,207 --> 00:36:47,207 我买了它 50多年前! 379 00:36:48,047 --> 00:36:50,046 现在是碎片! 380 00:36:50,047 --> 00:36:54,047 都是因为一个愚蠢的生物 决定在里面被杀! 381 00:36:54,607 --> 00:36:56,046 令人震惊。 382 00:36:58,607 --> 00:37:01,086 M. Charpentier, 回到城堡。 383 00:37:01,087 --> 00:37:03,766 给他威士忌, 我待会儿见。 384 00:37:08,047 --> 00:37:10,166 我很多老年患者 385 00:37:10,167 --> 00:37:13,167 ..播放无效 压迫他们的亲戚。 386 00:37:14,007 --> 00:37:17,006 督察 谁发现了尸体? 387 00:37:17,007 --> 00:37:19,366 新员工。 388 00:37:19,367 --> 00:37:22,046 您去了“博物馆”。 389 00:37:22,047 --> 00:37:25,047 ..然后将盖子从 石棺。 390 00:37:25,887 --> 00:37:27,006 是。 391 00:37:27,007 --> 00:37:30,007 是什么原因 ? -我在找尸体。 392 00:37:31,407 --> 00:37:34,407 身体 ?所以你知道那里 有一个吗? 393 00:37:35,687 --> 00:37:38,687 当然是。 -再说吧。 394 00:37:40,967 --> 00:37:45,967 一切始于巴贝特姨妈 在她去狩猎蝴蝶之前... 395 00:38:10,807 --> 00:38:13,807 我不能告诉你。 石死了! 396 00:38:14,047 --> 00:38:17,047 那让我... 397 00:38:19,547 --> 00:38:24,000 您希望我将其吞下吗? -您可以检查。 398 00:38:24,247 --> 00:38:27,947 我姨妈向 安德列厄铁路当局。 399 00:38:28,967 --> 00:38:30,806 请问您的名字? 400 00:38:30,907 --> 00:38:33,807 嗯贝雷斯福德。 寡妇贝雷斯福德。 401 00:38:35,847 --> 00:38:38,847 也许您与 贝雷斯福德上校? 402 00:38:39,407 --> 00:38:42,407 这是一个通用名称。 这个地区有很多。 403 00:38:43,327 --> 00:38:46,327 对不起,我想得到 回去工作。 404 00:38:47,887 --> 00:38:50,887 对不起,我应该有 公认的女士贝雷斯福德。 405 00:38:51,607 --> 00:38:54,566 但是我看到她 在很短的时间内。 406 00:38:54,567 --> 00:38:56,366 她说她在那里 练习使用雪鞋! 407 00:38:56,367 --> 00:38:58,366 我给她雪鞋 就看你! 408 00:38:58,367 --> 00:39:01,367 你说什么 - 没有。自言自语。 409 00:39:02,207 --> 00:39:06,707 她必须停止这场闹剧! -她可能对我们有帮助。 410 00:39:07,567 --> 00:39:12,567 如果你陪我,你会 必须使用其他名称。 411 00:39:13,087 --> 00:39:14,846 又为什么呢? 412 00:39:14,947 --> 00:39:16,447 为了保护她 那里发生了谋杀案。 413 00:39:16,807 --> 00:39:18,806 我忘了告诉你 414 00:39:19,207 --> 00:39:21,566 嗯审慎度过 自己当寡妇 415 00:39:22,887 --> 00:39:25,087 嗯审慎,寡妇?! 416 00:39:25,767 --> 00:39:29,367 哈哈哈! 看中她的那个想法! 417 00:39:30,047 --> 00:39:32,766 足够。 我建议我们在室内聊天。 418 00:39:33,267 --> 00:39:36,267 死亡发生在什么时候? -病理学家说2周前。 419 00:39:36,367 --> 00:39:39,367 但是,根据你阿姨的说法 她于11月28日被杀。 420 00:39:40,047 --> 00:39:44,447 ..在Morgan-Bellefond 快速列车。 421 00:39:45,007 --> 00:39:48,807 然后将尸体拖到 并隐藏在石棺中。 422 00:39:49,007 --> 00:39:52,007 但是导致杀手的原因 打开石棺? 423 00:39:53,447 --> 00:39:55,486 ``你只相信什么 你看。'' 424 00:39:55,487 --> 00:39:58,006 ``这就是为什么你是 经常误入歧途。'' 425 00:39:58,007 --> 00:40:00,046 ''动用你的想象力。'' 426 00:40:00,047 --> 00:40:03,047 没有任何证据 夏邦人参与其中。 427 00:40:04,407 --> 00:40:08,407 “除了我发现了尸体 在他们的财产上。'' 428 00:40:11,927 --> 00:40:13,326 <上校? 429 00:40:13,327 --> 00:40:16,327 上校上校 -是的...正如我所说的... 430 00:40:18,487 --> 00:40:21,487 我在听你 您对它们了解多少? 431 00:40:22,047 --> 00:40:27,047 你会遇到他们的。他们是 全部在城堡... 432 00:40:35,067 --> 00:40:38,367 恋人吵架了 不好而且你在那里! 433 00:40:39,007 --> 00:40:41,446 我会跟 布拉瓦切督察。 434 00:40:42,047 --> 00:40:43,000 -Blache, 先生 435 00:40:43,687 --> 00:40:46,687 我不会告诉布拉瓦什 我们见过这个女人。 436 00:40:47,087 --> 00:40:49,366 你们都会说相同的话。 437 00:40:49,367 --> 00:40:51,086 你确定吗,父亲? 438 00:40:51,087 --> 00:40:54,087 也许她是拉斐尔的一员 小朋友。 439 00:40:56,487 --> 00:40:59,487 那是个玩笑,那就是! 440 00:41:03,887 --> 00:41:06,887 那一定是拉加德博士。 让他进来。 441 00:41:09,607 --> 00:41:12,607 还在寻找 青春的源泉,父亲? 442 00:41:15,007 --> 00:41:17,246 不好笑,奥古斯丁。 443 00:41:17,247 --> 00:41:19,366 靠我,父亲。 444 00:41:19,367 --> 00:41:22,206 我会比所有人都持久。 445 00:41:22,207 --> 00:41:25,207 ..只是为了保护我的财产 从掠夺性的掌握。 446 00:41:30,667 --> 00:41:31,926 警察.. 447 00:41:31,927 --> 00:41:34,766 ..将很快在这里 去问你 448 00:41:34,767 --> 00:41:37,767 你最好准备 你的辩解! 449 00:41:45,607 --> 00:41:48,607 你为什么打开 石棺? 450 00:41:49,527 --> 00:41:52,527 我看到了封面 最近被解除了。 451 00:41:52,607 --> 00:41:54,926 我被好奇心克服了。 452 00:41:54,927 --> 00:41:57,927 我一直 沮丧的考古学家。 453 00:41:58,767 --> 00:42:00,966 您还能告诉我们什么? 454 00:42:00,967 --> 00:42:04,967 我当时是怎么说... 通过气味克服。 455 00:42:05,327 --> 00:42:08,327 那令人恶心的死亡气味。 456 00:42:08,407 --> 00:42:11,407 就这样。我不希望 进入细节。 457 00:42:13,927 --> 00:42:17,927 是不是很恐怖?那 可怜的女人来这里死亡。 458 00:42:18,487 --> 00:42:21,086 <算了。 我们不认识她。 459 00:42:21,087 --> 00:42:24,087 她是偶然来的。 - 你怎么知道的 ? 460 00:42:24,687 --> 00:42:27,086 如果真的是偶然的话 为什么艾玛.. 461 00:42:27,087 --> 00:42:29,766 ..这么麻烦吗? -<你为什么感到惊讶.. 462 00:42:29,767 --> 00:42:31,686 ..谋杀应 麻烦她了吗? 463 00:42:31,687 --> 00:42:33,406 他像艺术家一样思考。 464 00:42:33,407 --> 00:42:36,407 你为什么总是刺人 好像它们是动物? 465 00:42:39,807 --> 00:42:41,206 足够了 ! 466 00:42:41,207 --> 00:42:42,846 现在不是时候 争吵! 467 00:42:42,847 --> 00:42:45,847 <警方相信犯罪 于11月28日举行。 468 00:42:47,047 --> 00:42:50,047 <他们怎么这么快学到的? -<不是19世纪。 469 00:42:51,927 --> 00:42:53,726 <没什么可吹牛的。 470 00:42:53,727 --> 00:42:56,727 <28日星期五。那是 那天爱玛邀请我们来这里。 471 00:42:57,367 --> 00:43:00,367 <那又怎样呢? -<那天晚上,我们都在这里。 472 00:43:01,127 --> 00:43:03,766 <然后? -<它将引起警察的注意。 473 00:43:03,767 --> 00:43:05,846 <理论如何? 恋人的争吵? 474 00:43:05,847 --> 00:43:08,847 <不是第一次帕帕博物馆 被用作聚会场所。 475 00:43:09,207 --> 00:43:12,207 <恋人在爸爸的聚会 博物馆 ?! 476 00:43:12,527 --> 00:43:15,527 我在想象中有一个问题。 477 00:43:15,727 --> 00:43:18,727 ..就像一个内部 冬季的冰川。 478 00:43:24,927 --> 00:43:26,726 你女儿很可爱。 479 00:43:26,727 --> 00:43:29,727 她和她的朋友是 对这种罪行感到兴奋。 480 00:43:29,847 --> 00:43:31,846 这是他们的年龄。 481 00:43:31,847 --> 00:43:34,847 爸爸,检查员在这里 与另一位先生。 482 00:43:36,927 --> 00:43:39,927 我们的新员工,女士。贝雷斯福德, 最近到了。 483 00:43:41,447 --> 00:43:44,086 我想寡妇贝雷斯福德? 484 00:43:48,407 --> 00:43:51,086 对不起, 我感冒了。 485 00:43:51,087 --> 00:43:53,966 我们需要您参加 警察局。 486 00:43:55,407 --> 00:44:02,407 我的一名官员将陪伴 你,如果你足够好。 487 00:44:02,527 --> 00:44:05,727 问我,我的名字是 上校雪鞋! 488 00:44:05,807 --> 00:44:07,886 好,我们首先要.. 489 00:44:07,887 --> 00:44:09,486 ..讯问你的兄弟。 490 00:44:09,487 --> 00:44:11,086 你在浪费时间 检查员 491 00:44:11,087 --> 00:44:14,087 如果那个女人曾经留下来 在这里,我还是我父亲 492 00:44:15,567 --> 00:44:17,006 ..会认出她的。 493 00:44:17,007 --> 00:44:20,007 <一切似乎都在暗示.. 494 00:44:20,887 --> 00:44:23,887 <..那个受害者不是 从这里来。 495 00:44:24,007 --> 00:44:27,007 <她是一个陌生人。 -俄罗斯人? 496 00:44:27,527 --> 00:44:30,527 <女生,这不是 耳边的对话。 497 00:44:31,287 --> 00:44:34,287 嗯贝雷斯福德,进行 楼上的先生们。 498 00:44:35,727 --> 00:44:37,606 很好。 499 00:44:37,607 --> 00:44:39,686 我要去见父亲。 500 00:44:39,687 --> 00:44:42,687 先生们, 我会指出路的。 501 00:44:48,367 --> 00:44:50,726 所以,我死了,对吗? 502 00:44:53,807 --> 00:44:55,966 弗朗索瓦! 503 00:44:55,967 --> 00:45:02,467 你父亲身体状况很好。 谋杀使他兴奋了。 504 00:45:14,767 --> 00:45:17,767 是什么事,艾玛? 505 00:45:19,647 --> 00:45:21,286 怎么了 ? 506 00:45:21,287 --> 00:45:24,046 我认为有罪犯 在家庭中。 507 00:45:24,047 --> 00:45:26,846 为什么你这么想 ? 508 00:45:26,847 --> 00:45:29,126 因为Martina,.. 509 00:45:29,127 --> 00:45:32,127 ..我的兄弟埃德蒙的妻子, 谁该来这里的 510 00:45:32,807 --> 00:45:35,807 是的,有什么消息吗? -不,就是这样。 511 00:45:36,407 --> 00:45:39,407 警察认为 受害者来自东方。 512 00:45:40,007 --> 00:45:43,007 你以为死去的女人 可能是马丁娜? -是的 513 00:45:43,407 --> 00:45:46,407 我很害怕告诉 警察对此。 514 00:45:49,327 --> 00:45:54,327 你和兄弟们说话了吗? 不,我无法判断他们的反应。 515 00:45:56,167 --> 00:45:58,326 艾玛 我认识你。 516 00:45:58,327 --> 00:46:02,000 如果你不说恐惧 你会让自己恶心。 517 00:46:02,007 --> 00:46:05,007 那我应该去警察局吗? -是的 518 00:46:06,687 --> 00:46:08,687 先生们, 这条路。 519 00:46:08,807 --> 00:46:10,206 我可以把你的外套给我吗? 520 00:46:10,207 --> 00:46:12,326 从来没有询问。 521 00:46:12,327 --> 00:46:14,846 谢谢夫人。 -我留下。 522 00:46:14,850 --> 00:46:17,847 你将离开, 夫人。 523 00:46:17,900 --> 00:46:19,166 你臭! 524 00:46:19,167 --> 00:46:22,086 没有我,你什么都不是。 525 00:46:22,547 --> 00:46:25,047 没有 !没事! 526 00:46:34,527 --> 00:46:38,527 片刻,让我想一想。 你什么时候到达 ? 527 00:46:39,887 --> 00:46:42,887 三周前 去见我父亲 528 00:46:44,747 --> 00:46:47,247 你住这里吗? -是的,我在巴黎呆了时间。 529 00:46:47,927 --> 00:46:50,927 我在这里住了两天 在十一月底。 530 00:46:53,327 --> 00:46:57,327 <她被杀死的时候是什么? -<11月底。 531 00:47:00,687 --> 00:47:02,786 你结婚了 ? 你妻子.. 532 00:47:02,787 --> 00:47:04,786 ..不在这里吗? 533 00:47:05,687 --> 00:47:07,000 她讨厌法国的冬天。 534 00:47:07,027 --> 00:47:08,046 <你经常来这里吗? 535 00:47:08,647 --> 00:47:10,466 <不时 去见我姐姐 536 00:47:10,767 --> 00:47:14,567 上一次是什么时候? - 三个星期前。 537 00:47:14,627 --> 00:47:16,646 11月底? 538 00:47:16,847 --> 00:47:18,847 是的,11月底。 539 00:47:20,007 --> 00:47:22,507 你如何相处 你父亲 540 00:47:22,967 --> 00:47:26,267 他的孩子都没有上 和我爸。 541 00:47:26,867 --> 00:47:29,867 甚至Emma都有问题。 他真是个skin子。 542 00:47:29,947 --> 00:47:32,647 这是我祖父的错。 543 00:47:35,047 --> 00:47:36,726 为什么呢 544 00:47:37,327 --> 00:47:39,927 他讨厌爸爸,并把他的 报仇 545 00:47:40,367 --> 00:47:43,367 艾玛,我的兄弟和我分享 财产的所有权。 546 00:47:43,567 --> 00:47:46,286 他只保留权利 住这里 547 00:47:46,287 --> 00:47:50,287 他什么都不能卖,决定 任何事情,都会使他发疯! 548 00:47:52,067 --> 00:47:55,867 你经常来这里吗? -有时和我的女儿。 549 00:47:55,887 --> 00:47:59,887 <你们为什么都聚集 11月底在这里? 550 00:48:00,127 --> 00:48:02,827 没有理由。这只是 一个家庭聚会。 551 00:48:04,007 --> 00:48:05,507 每个人都讨厌彼此的地方 552 00:48:06,867 --> 00:48:10,367 警察没有进入我家 问一家之主! 553 00:48:12,247 --> 00:48:13,606 谁是这里的负责人? 554 00:48:15,007 --> 00:48:16,000 <回答我! 555 00:48:16,027 --> 00:48:18,286 <回答我! 556 00:48:20,247 --> 00:48:22,447 <您是,但我们想要 避免累你。 557 00:48:23,207 --> 00:48:24,926 拉加德博士 558 00:48:24,927 --> 00:48:26,206 ..说过... -他如果我听他的话.. 559 00:48:26,207 --> 00:48:28,126 ..我永远也不会起床。 560 00:48:29,127 --> 00:48:34,127 他签的处方 给我消化了三个星期! 561 00:48:34,247 --> 00:48:36,406 他差点.. 562 00:48:36,407 --> 00:48:37,966 ..毒死了我! 563 00:48:37,967 --> 00:48:40,967 我必须承认那是什么时候 我们还有老厨师。 564 00:48:41,487 --> 00:48:44,487 这个新的,现在在这里, 她是珍珠! 565 00:48:44,967 --> 00:48:48,967 圆润的..像泡芙! 566 00:48:49,047 --> 00:48:52,047 <像泡芙一样圆润? -嘘! 567 00:48:52,167 --> 00:48:55,867 你没注意到吗? -还没到那儿。 568 00:48:56,207 --> 00:48:57,206 好吧... 569 00:48:57,207 --> 00:48:59,406 你的假设是什么 关于这种情况? 570 00:48:59,407 --> 00:49:02,407 谈论还为时过早 关于假设,.. 571 00:49:02,927 --> 00:49:05,927 ..尤其是因为我们不 还不知道那个女人是谁 572 00:49:06,247 --> 00:49:09,247 看来是个陌生人。 573 00:49:10,887 --> 00:49:13,866 也许是我儿子的征服 奥古斯丁。 574 00:49:14,067 --> 00:49:15,526 他说他没有 认出她。 575 00:49:15,627 --> 00:49:18,126 那没什么。 这让他很紧张。 576 00:49:18,127 --> 00:49:21,127 我儿子都是胆小鬼 和骗子,.. 577 00:49:21,927 --> 00:49:24,927 ..一群秃are 等待我的死亡。 578 00:49:26,967 --> 00:49:29,967 我开始病得很重。 艾玛! 579 00:49:30,007 --> 00:49:32,006 我必须躺下。 580 00:49:36,967 --> 00:49:39,467 他没有太多的爱 为他的孩子们! 581 00:49:40,767 --> 00:49:44,367 他没有原谅他们 取消了他的继承权。 582 00:49:45,687 --> 00:49:48,687 上校 583 00:50:00,007 --> 00:50:01,607 那是什么 ? 584 00:50:26,087 --> 00:50:29,587 Belisaire, 不要白痴! 585 00:50:29,687 --> 00:50:31,486 我什么都没看见! 586 00:50:32,887 --> 00:50:34,206 来吧,打开靴子! 587 00:50:34,407 --> 00:50:37,407 我死了。死人不能 为他的寡妇打开靴子。 588 00:50:38,007 --> 00:50:40,566 我说是出于刺激 此刻,我在开玩笑。 589 00:50:41,167 --> 00:50:43,567 你说的事实使 除了开玩笑。 590 00:50:43,927 --> 00:50:46,427 好吧,我说了。现在 打开靴子! Belisaire! 591 00:50:48,227 --> 00:50:50,827 即将成为w夫 Belisaire! 592 00:50:51,747 --> 00:50:55,247 来吧 ! 哦,这不可能发生! 593 00:50:56,007 --> 00:50:57,126 Belisaire ... 594 00:50:57,127 --> 00:51:00,127 你被冒犯了,因为我曾经 对。就这么简单。 595 00:51:06,487 --> 00:51:09,487 Belisaire,够了, 让我出去。 596 00:51:15,087 --> 00:51:16,766 让我出去 ! 597 00:51:18,807 --> 00:51:19,946 发生了什么 ? 598 00:51:20,247 --> 00:51:23,447 斑豹! 599 00:51:23,887 --> 00:51:24,866 Belisaire? 600 00:51:26,367 --> 00:51:28,367 你找到了尸体 完成了你的任务 601 00:51:28,767 --> 00:51:30,766 现在,您可以回家了。 602 00:51:31,000 --> 00:51:32,726 为什么呢 603 00:51:32,727 --> 00:51:35,000 我厌倦了见我的妻子 伪装成厨房女仆! 604 00:51:35,167 --> 00:51:36,926 至于你的其他活动, 我握住我的舌头。 605 00:51:36,927 --> 00:51:39,927 总是为别人做饭, 但永远不会对我 606 00:51:40,000 --> 00:51:44,300 你忘了我的盐鸡。 -那是十年前。 607 00:51:46,000 --> 00:51:49,500 而且,最重要的是,我必须 重复-圣诞节在这里。 608 00:51:50,000 --> 00:51:53,900 孩子们想听 钟声。 609 00:51:54,000 --> 00:51:55,900 来自瑞士这边 毫无疑问。 610 00:51:56,100 --> 00:51:58,700 我想看看 验尸照片。 611 00:52:00,600 --> 00:52:03,100 这是一个舞者。 -赦免? 612 00:52:03,250 --> 00:52:05,750 受害人是一名舞者。 看她的脚。 613 00:52:06,100 --> 00:52:10,000 看看舞者是否认识到 她,但不是古典。 614 00:52:10,250 --> 00:52:12,500 为什么不古典? 615 00:52:12,750 --> 00:52:15,600 古典舞者的脚 会表现出更多的惩罚。 616 00:52:15,800 --> 00:52:19,300 令人印象深刻,福尔摩斯。 -小学,亲爱的沃森。 617 00:52:21,000 --> 00:52:23,700 现在,毫无疑问 我被解雇了。 618 00:52:23,800 --> 00:52:26,700 也不远离幻想的人 谁聚集在你周围。 619 00:52:26,800 --> 00:52:29,500 喔!你吃醋 ? 620 00:52:31,500 --> 00:52:33,000 我认为那太好了! 621 00:52:35,000 --> 00:52:37,750 现在好了, 我亲爱的贝雷斯福德上校,... 622 00:52:37,800 --> 00:52:41,000 ..虽然这很令人愉快, 我必须回到我的厨房。 623 00:52:44,000 --> 00:52:46,000 你忘记了一件事: 624 00:52:46,450 --> 00:52:50,000 找到了尸体 你处境艰难。 625 00:52:51,000 --> 00:52:54,250 你是我的第一嫌疑犯。 我必须关押你。 626 00:52:56,200 --> 00:52:58,750 我会通知您的雇主。 627 00:52:59,000 --> 00:53:00,750 拘留期间 晚上? 628 00:53:01,200 --> 00:53:03,700 是。但不在警察牢房中。 629 00:53:04,100 --> 00:53:08,100 你总是屈服于诱惑! 630 00:53:09,000 --> 00:53:11,500 尤其是在嫉妒驱使下。 631 00:53:56,200 --> 00:53:57,800 啊,你来了。 632 00:53:58,000 --> 00:54:01,400 您免于警察拘留吗? 它怎么样 ? 633 00:54:02,000 --> 00:54:06,200 很好但是我从来没有 以为我会被这样拘留。 634 00:54:08,000 --> 00:54:10,300 这是什么地方 ? -我的老作坊。 635 00:54:30,000 --> 00:54:32,500 一切还没有完成 在这里两年。 636 00:54:33,000 --> 00:54:35,000 你放弃了 只是一时兴起? 637 00:54:35,300 --> 00:54:38,500 不,我觉得有必要看 一些地中海的光芒。 638 00:54:44,000 --> 00:54:45,750 你会等我吗? 639 00:54:46,367 --> 00:54:49,367 这次是什么? 640 00:54:56,327 --> 00:54:59,327 <我必须和你谈谈。 -<你听到什么了吗? 641 00:54:59,807 --> 00:55:02,807 <我认为受害者 可能是马丁娜。 642 00:55:03,927 --> 00:55:06,927 马丁娜(Martina)? -她的电报太奇怪了。 643 00:55:07,407 --> 00:55:09,966 她已经写完了 她来了。 644 00:55:10,067 --> 00:55:13,367 我应该告诉警察。 -和他们无关。 645 00:55:15,287 --> 00:55:17,887 <我很担心。 我不知道该怎么办。 646 00:55:18,007 --> 00:55:21,007 没话说没做什么。 647 00:55:30,367 --> 00:55:32,367 有人告诉我你很喜欢 为绘画女性。 648 00:55:32,927 --> 00:55:36,927 不,我不画女人 我获得它们。 649 00:55:38,367 --> 00:55:42,367 我画的是大海。 石头,光。 650 00:55:44,047 --> 00:55:45,747 但不是人。 -不,不是人。 651 00:55:47,447 --> 00:55:49,847 他们太复杂了。 -嗯... 652 00:55:51,687 --> 00:55:54,687 我不明白为什么 像你这样的女人在这里 653 00:55:55,447 --> 00:55:57,406 你想让我说什么 ? 654 00:55:57,407 --> 00:55:59,526 什么也没说。 655 00:55:59,527 --> 00:56:01,246 这么多的偏见, 对于一个艺术家! 656 00:56:01,247 --> 00:56:04,247 你喜欢铺床吗 在厨房工作? 657 00:56:05,087 --> 00:56:07,887 足够好。烹饪 需要想象力。 658 00:56:07,888 --> 00:56:11,287 ..其余的都满足 我对订单的品味。 659 00:56:13,047 --> 00:56:16,047 我想画 你的肖像,有一天。 660 00:56:22,227 --> 00:56:26,706 她在这里 !间谍! 抓住她 ! 661 00:56:26,767 --> 00:56:28,767 一个间谍! 662 00:56:28,807 --> 00:56:31,726 把她绑在杆子上! 肮脏的间谍!快点! 663 00:56:32,407 --> 00:56:35,407 间谍! 664 00:56:56,127 --> 00:56:58,127 瞄准心脏! 665 00:56:58,727 --> 00:57:01,526 死 !死了,你这bit子! 666 00:57:02,567 --> 00:57:03,726 目标 ! 667 00:57:05,727 --> 00:57:07,446 火 ! 668 00:57:25,447 --> 00:57:27,447 谢谢你的到来。 669 00:57:31,807 --> 00:57:34,726 打扰一下,我很感动... 670 00:57:34,727 --> 00:57:38,727 因为我还没进来 自从埃德蒙德(Edmond)死后。 671 00:57:40,927 --> 00:57:44,927 他写信给我 就在他去世之前。 672 00:57:45,007 --> 00:57:48,407 他遇到了一个俄罗斯女人, 马蒂娜他们要结婚了。 673 00:57:49,807 --> 00:57:54,807 我才知道他的死 收到信后 674 00:57:54,887 --> 00:57:57,766 我不知道变成了什么 这个玛蒂娜酒。 675 00:57:57,767 --> 00:58:00,767 我只知道她的名字 我忘了她 676 00:58:02,527 --> 00:58:05,527 但是,几周前,我 收到里昂的来信。 677 00:58:06,847 --> 00:58:09,847 ..签名马丁娜·夏彭蒂埃。 678 00:58:12,447 --> 00:58:15,847 ''...我希望这封信能 不要让你难过 679 00:58:16,447 --> 00:58:19,447 ``我什至不知道埃德蒙德 告诉你我们的婚姻。 680 00:58:20,287 --> 00:58:23,287 ``他死后我找到了 写给你太难了。 681 00:58:23,927 --> 00:58:26,927 ``我重建了生活,但是 我的情况已经改变。 682 00:58:27,807 --> 00:58:30,807 ''我正在给你写信 因为我儿子 683 00:58:31,047 --> 00:58:36,347 ``他是你兄弟的孩子。 我没有办法抚养他。 684 00:58:36,567 --> 00:58:39,406 ``我花了几个星期 在法国。 685 00:58:39,407 --> 00:58:42,407 ``我们可以见面吗?我不 想让你痛苦。'' 686 00:58:44,047 --> 00:58:46,926 我非常爱埃德蒙。 687 00:58:46,927 --> 00:58:51,927 他是我最喜欢的兄弟。 然后,他有了儿子的想法... 688 00:58:52,287 --> 00:58:55,287 我邀请这个女人来我们 房子,到11月底。 689 00:58:55,727 --> 00:58:58,727 这样她可以见到家人吗? - 恩,那就对了。 690 00:58:59,167 --> 00:59:01,846 我只想要他们 去见她 691 00:59:01,847 --> 00:59:04,847 奥古斯丁没有 认真的 692 00:59:05,287 --> 00:59:07,286 拉斐尔非常怀疑。 693 00:59:07,287 --> 00:59:10,287 弗雷德里克(Frederick)是唯一的 和我一起去相信它。 694 00:59:10,527 --> 00:59:12,806 那怎么了? 695 00:59:15,007 --> 00:59:17,807 期待她的那天, 我收到电报。 696 00:59:18,007 --> 00:59:20,607 ''抱歉。问题。 必须离开...'' 697 00:59:20,767 --> 00:59:22,726 然后,仅此而已。 698 00:59:22,727 --> 00:59:25,727 所以,当你告诉我 这个女人.. 699 00:59:25,967 --> 00:59:28,926 我以为是外国人 700 00:59:28,927 --> 00:59:31,126 ..也许是她。 701 00:59:31,127 --> 00:59:33,046 从那时起, 使我着迷。 702 00:59:34,047 --> 00:59:35,946 关于陌生人,.. 703 00:59:35,947 --> 00:59:38,647 ..你怎么看的 嗯贝雷斯福德? 704 00:59:39,207 --> 00:59:40,886 审慎? 705 00:59:40,888 --> 00:59:43,887 我没有想她 你有吗 706 00:59:44,927 --> 00:59:49,927 <她是一个有效率的女人 当然是高度聪明的 707 00:59:49,947 --> 00:59:51,446 和你的兄弟们? 708 00:59:51,448 --> 00:59:53,886 你爸爸 709 00:59:54,090 --> 00:59:58,087 他们全都一心一意。 她把所有的一切都迷住了。 710 00:59:58,207 --> 01:00:01,007 天哪,我会勒死她! - 对不起 ? 711 01:00:02,607 --> 01:00:04,607 <哦,什么都没有。不要折磨 你自己我们会尽快.. 712 01:00:04,608 --> 01:00:07,287 ..解决这件事。 你跟我说话是对的。 713 01:00:16,527 --> 01:00:18,846 你会怎样做 ? 714 01:00:18,847 --> 01:00:20,606 检查行踪 三兄弟 715 01:00:20,707 --> 01:00:23,807 ..并遍历整个 房子用细齿梳子。 716 01:00:25,087 --> 01:00:27,887 我有一个想法 她可能是一个舞蹈家... 717 01:00:28,007 --> 01:00:29,886 这是我的主意,Belisaire! 718 01:00:29,887 --> 01:00:33,287 公平地说,Prudence拥有 在舞者中问的想法。 719 01:00:33,387 --> 01:00:36,206 ..找到解决方案。 720 01:00:36,307 --> 01:00:39,566 分发受害者的照片。 721 01:00:59,807 --> 01:01:04,807 跳吧!你在这里不对。 出来! 722 01:01:12,447 --> 01:01:15,446 姐姐玛格丽特·布朗! 723 01:01:17,007 --> 01:01:20,007 从情报 服务到这里! 724 01:01:28,087 --> 01:01:30,487 可以是任何人。 725 01:01:32,087 --> 01:01:35,887 您的一位舞者还没有 突然消失了吗? 726 01:01:38,247 --> 01:01:41,247 上校,这里的女孩来 随风而去 727 01:01:42,287 --> 01:01:47,287 他们之一离开了吗? 11月底左右? 728 01:01:47,587 --> 01:01:51,287 安娜·卡列宁(Anna Karenine)。 -俄罗斯人? 729 01:01:51,527 --> 01:01:54,527 是的,也许是波兰人。 这是外国军团 730 01:01:57,407 --> 01:01:59,786 安娜·卡列宁(Anna Karenine)。她离开这里 在十一月底。 731 01:02:01,247 --> 01:02:04,247 她说她想成为 与丈夫和解。 732 01:02:04,447 --> 01:02:06,986 她去见他了 在该国的某个地方。 733 01:02:07,287 --> 01:02:10,287 她和你一起工作 多久 ? 734 01:02:11,247 --> 01:02:14,247 差不多六个星期了。 只是一个普通的女孩。 735 01:02:14,747 --> 01:02:17,206 她说她要继续 和英国人一起航行。 736 01:02:17,207 --> 01:02:19,926 在任何情况下, 这只是一个故事。 737 01:02:19,927 --> 01:02:22,886 我认为她是波兰人。 738 01:02:22,890 --> 01:02:24,887 和天主教徒: 她从未错过过弥撒。 739 01:02:24,888 --> 01:02:26,806 这就是重点。 740 01:02:26,807 --> 01:02:28,566 只有波兰人仍然相信。 741 01:02:28,567 --> 01:02:30,526 她仍然是个骗子。 742 01:02:30,527 --> 01:02:31,946 我不同意 743 01:02:38,687 --> 01:02:41,687 其他警察 天想问你。 744 01:02:41,767 --> 01:02:42,996 原谅? 745 01:02:43,527 --> 01:02:45,966 他们想问问你! 746 01:02:47,527 --> 01:02:48,666 请原谅我。 747 01:02:48,767 --> 01:02:50,867 你的橙汁是 在厨房。 748 01:02:53,007 --> 01:02:55,526 你从哪里得到的女士。贝雷斯福德? 来自代理商? 749 01:02:55,527 --> 01:02:58,527 号前女佣的朋友 告诉她.. 750 01:02:58,807 --> 01:03:01,646 ..我们有一个自由的地方。 -<所以,你订婚了.. 751 01:03:01,647 --> 01:03:03,926 ..一个刚到的陌生人.. 752 01:03:03,927 --> 01:03:06,646 ..在挖尸之前! 753 01:03:06,647 --> 01:03:09,647 你为什么不停止采摘 在你姐姐身上? 754 01:03:10,527 --> 01:03:13,166 <看这里,医生, 你的脸颊很好。 755 01:03:13,167 --> 01:03:16,167 ..你是那个告诉 艾玛与警察交谈。 756 01:03:18,927 --> 01:03:22,127 别那么侮辱 -现在警察在抓我们。 757 01:03:22,147 --> 01:03:25,047 <他们认为我们有责任 因为马丁娜的失踪。 758 01:03:26,127 --> 01:03:27,806 <如果她是死去的女人... 759 01:03:27,807 --> 01:03:29,526 我去看望你父亲。 760 01:03:29,527 --> 01:03:33,827 蛋糕很好吃。 -女士贝雷斯福德烤了它。 761 01:03:34,207 --> 01:03:37,207 食谱数 我记得了! 762 01:03:37,767 --> 01:03:40,486 就像滑雪, 一个永远不会忘记的人。 763 01:03:40,487 --> 01:03:42,726 我怀疑这将有助于 推进调查。 764 01:03:43,327 --> 01:03:46,327 但是你忘记了 一件事 765 01:03:47,767 --> 01:03:50,766 哦,是吗?那是什么 ? - 我的生日。 766 01:03:50,767 --> 01:03:54,767 我不知道该怎么想 这是您第一次忘记。 767 01:03:54,847 --> 01:03:56,826 是22号吗? 768 01:03:56,827 --> 01:03:59,327 12月22日, Belisaire Beresford的出生。 769 01:03:59,927 --> 01:04:02,927 噢,天哪! 770 01:04:06,487 --> 01:04:09,487 你要陪我 到警察局警察局 771 01:04:09,667 --> 01:04:12,467 很好,先生。 我去买外套。 772 01:04:14,167 --> 01:04:18,167 有什么消息吗,雪鞋先生? -耐心,耐心。 773 01:04:19,227 --> 01:04:20,886 小家伙很迷人。 -非常 774 01:04:20,887 --> 01:04:23,387 我要制造 给他们一些错误的线索。 775 01:04:24,087 --> 01:04:26,087 我不明白 -我会留下纸条,像.. 776 01:04:26,127 --> 01:04:29,127 马丁娜,如果你想生活, 远离城堡。'' 777 01:04:31,927 --> 01:04:33,086 为什么要这么做 ? 778 01:04:33,187 --> 01:04:37,087 可怜的东西,他们鼬 周围,​​空手而归。 779 01:04:38,067 --> 01:04:38,846 一个线索会.. 780 01:04:38,847 --> 01:04:40,766 ..将他们置于危险之中。 781 01:04:41,567 --> 01:04:44,567 你确实认识一个杀人犯 也许在里面? 782 01:04:47,327 --> 01:04:51,327 先生,这是Huguette, 玛格丽特·布朗(Margaret Brown)的舞者之一。 783 01:04:51,647 --> 01:04:54,566 我已经收到了 安娜 784 01:04:54,567 --> 01:04:56,566 安娜·卡列宁(Anna Karenine)? -*来自圣巴特。 785 01:04:57,267 --> 01:04:58,766 她什么时候发布的? 786 01:04:58,867 --> 01:05:01,767 日期戳...等等... 787 01:05:01,927 --> 01:05:04,927 12月14日或17日, 这不是很清楚。 788 01:05:06,247 --> 01:05:09,547 12月17日? -*关于英国人,这是真的。 789 01:05:12,047 --> 01:05:14,446 退出Anna Karenine。 790 01:05:14,547 --> 01:05:17,047 一位舞者收到了一张卡片 来自西印度群岛的她。 791 01:05:18,327 --> 01:05:21,327 所以,我们回到 玛蒂娜(Martina Charpentier)。 792 01:05:21,687 --> 01:05:23,687 没有出现的寡妇。 793 01:05:24,047 --> 01:05:27,406 一切都指向 夏邦儿童 794 01:05:27,407 --> 01:05:30,186 ..决定不分割他们的 遗产.. 795 01:05:30,187 --> 01:05:32,726 ..与新的继承人。 796 01:05:32,727 --> 01:05:36,727 让我们找出其中的一个 从犯罪中获利最多。 797 01:05:37,327 --> 01:05:40,327 只要老汉 生活,没有人会受益。 798 01:05:42,607 --> 01:05:45,346 我想知道拉加德博士 曾经怀疑.. 799 01:05:45,547 --> 01:05:48,847 ..有人试图 杀死老人? 800 01:05:49,887 --> 01:05:52,387 他的症状与 砷中毒。 801 01:05:52,807 --> 01:05:55,207 我们知道很多人 对...感兴趣 802 01:05:55,727 --> 01:05:57,686 我们该怎么说... 803 01:05:57,687 --> 01:05:59,846 加快他的灭亡。 804 01:06:00,847 --> 01:06:03,847 嗯...但是中毒者 他失败后.. 805 01:06:04,047 --> 01:06:07,047 ..将增加剂量。 但是他没有。 806 01:06:07,327 --> 01:06:10,327 是的,那没有道理。 很好奇! 807 01:06:10,527 --> 01:06:15,527 你去过他们的医生 多久 ? 808 01:06:16,567 --> 01:06:18,567 Charpentier先生是我的第一个 我抵达后有耐心.. 809 01:06:18,967 --> 01:06:20,846 ..继我妻子去世之后。 810 01:06:34,127 --> 01:06:35,886 有什么事吗 811 01:06:36,287 --> 01:06:38,487 我是唯一一个没有 阿里比。那让我担心。 812 01:06:39,047 --> 01:06:42,047 拉斐尔有能力提供 详细的时间表。 813 01:06:43,487 --> 01:06:45,746 奥古斯丁当然是 和一个女孩。 814 01:06:46,447 --> 01:06:47,866 你为什么说“当然”? 815 01:06:48,167 --> 01:06:50,567 他是个女人 你没注意到吗? 816 01:06:51,107 --> 01:06:54,807 在他的气质之下 艺术家,他没有感情。 817 01:06:55,087 --> 01:06:59,087 除了艾玛,他不喜欢别人。 -那天你在做什么? 818 01:07:00,367 --> 01:07:03,766 我日子的流逝 没兴趣 819 01:07:03,767 --> 01:07:05,846 <有什么价值 还记得吗? 820 01:07:05,847 --> 01:07:08,526 在我看来你应该 试图记住。 821 01:07:09,527 --> 01:07:11,527 我不太喜欢回头。 822 01:07:20,207 --> 01:07:22,806 很高兴你在这里。 823 01:07:23,407 --> 01:07:26,107 你开朗,快乐。 你总是在唱歌。 824 01:07:26,807 --> 01:07:28,806 特别是当我做饭的时候。 825 01:07:29,307 --> 01:07:31,126 膳食就像植物。 826 01:07:31,427 --> 01:07:34,127 他们唱一首歌更好。 827 01:07:35,267 --> 01:07:38,267 对我来说,做饭比较 像爵士乐。 828 01:07:40,847 --> 01:07:44,847 牛肉串,你在那里 将生肉和熟肉混合在一起.. 829 01:07:44,907 --> 01:07:48,646 ..就像是张口 小号。 830 01:07:48,767 --> 01:07:51,086 沸腾的方式! 831 01:07:53,087 --> 01:07:55,787 至于牡蛎, the道者告诉我们,.. 832 01:07:55,887 --> 01:07:59,487 ..他们就像第一个 基督徒被狮子吃了.. 833 01:08:01,807 --> 01:08:03,166 ..只有一张遗嘱才行! 834 01:08:04,167 --> 01:08:07,166 你使厨房变得活跃起来。 你让我想起了我的妻子。 835 01:08:07,267 --> 01:08:10,667 她到处散布欢乐, 没被我父亲吓倒。 836 01:08:12,547 --> 01:08:14,547 其实她相处得很好 和他一起。 837 01:08:16,047 --> 01:08:17,766 但是不是吗? 838 01:08:17,767 --> 01:08:20,486 他沉迷于金钱。 839 01:08:20,487 --> 01:08:23,487 他坐在一堆金子上 不能碰它。 840 01:08:35,527 --> 01:08:37,527 神的名字!他们甚至跑 在你的脚之间。 841 01:08:40,927 --> 01:08:43,927 你喜欢打猎吗? -不,只有杀人。 842 01:08:45,327 --> 01:08:46,726 您一直在跑步。 -是的... 843 01:08:46,727 --> 01:08:48,727 你的脸颊红了 我非常喜欢那个。 844 01:08:53,527 --> 01:08:56,527 什么 ?夫人更喜欢 年长的男人,也许? 845 01:08:57,407 --> 01:09:01,407 你弟弟是 不错。劳驾。 846 01:09:18,287 --> 01:09:20,887 雪靴上校, 我们找到了一个线索。 847 01:09:23,847 --> 01:09:26,847 这证明了玛蒂娜 来这里 848 01:09:26,927 --> 01:09:29,727 证明她是女人 在石棺中,不是吗? 849 01:09:30,347 --> 01:09:32,766 这是可能的。 您在哪里找到的? 850 01:09:33,767 --> 01:09:35,767 在洗衣房里。我们穿了 手套,用于指纹。 851 01:09:36,727 --> 01:09:37,886 你做得很好。 852 01:09:38,487 --> 01:09:39,946 记住要放松手指。 853 01:09:40,087 --> 01:09:44,087 您需要按一下 手指,但不会那么痛。 854 01:09:45,247 --> 01:09:47,006 先生雪靴... 855 01:09:50,087 --> 01:09:52,046 轻轻的。 856 01:09:58,047 --> 01:10:01,047 不碰 其他手指。 857 01:10:06,047 --> 01:10:09,547 我来看你姐姐 但首先我有一个问题。 858 01:10:09,787 --> 01:10:12,606 ..问夫人。 859 01:10:12,608 --> 01:10:14,286 我在路上 860 01:10:14,287 --> 01:10:17,287 但是我们稍后再继续。 你有真正的潜力。 861 01:10:22,267 --> 01:10:24,767 看起来不要这么反对。 862 01:10:25,527 --> 01:10:28,927 我有权学习吉他,即使是一个好男人。 863 01:10:3​​3,287 --> 01:10:3​​5,887 伪造的杰作, 我给你戴顶帽子! 864 01:10:3​​6,447 --> 01:10:3​​9,447 但是情况已经 如此复杂。 865 01:10:40,287 --> 01:10:42,287 我没看过这个信封 你在哪里找到它 ? 866 01:10:44,207 --> 01:10:46,207 你没有写这个吗? - 但不是。 867 01:10:48,447 --> 01:10:50,286 我不明白 868 01:10:51,287 --> 01:10:52,766 你认得 这个信封? 869 01:10:52,767 --> 01:10:54,726 是。 这是我发的信。 870 01:10:55,727 --> 01:10:56,846 您已经找到Martina吗? 871 01:10:57,847 --> 01:10:59,847 在这里找到这个信封。 872 01:11:05,567 --> 01:11:08,567 你以为那个女人 石棺真的是..玛蒂娜? 873 01:11:10,887 --> 01:11:13,206 似乎有可能。 874 01:11:16,167 --> 01:11:18,867 好像你是 离开我们。 875 01:11:19,007 --> 01:11:20,907 你的讯问 完成了吗? 876 01:11:21,087 --> 01:11:23,966 是。暂时。 877 01:11:37,127 --> 01:11:39,486 他发现了一些东西, 那个。 878 01:11:39,487 --> 01:11:41,766 他在嗅什么 为? 879 01:11:42,367 --> 01:11:44,766 为什么向他介绍马丁娜(Martina)? 880 01:11:45,767 --> 01:11:47,406 是。洗脏的亚麻布 像那样。 881 01:11:47,407 --> 01:11:49,326 你应该感谢我 其实。 882 01:11:49,327 --> 01:11:50,566 又为什么呢? 883 01:11:50,567 --> 01:11:53,567 警察会找到它 如果没有人讲话,则很可疑。 884 01:11:53,607 --> 01:11:56,486 ..现在死去的女人似乎 真的是马丁娜。 885年 01:11:57,187 --> 01:11:58,946 现在怎么办 ? 886 01:11:59,247 --> 01:12:01,247 安装陈旧。 887 01:12:40,127 --> 01:12:42,627 我永远都不会想 它的你。 888 01:12:45,087 --> 01:12:47,787 你想毁了我吗? 889 01:12:49,247 --> 01:12:52,247 让自己放心,夏彭捷先生, 它几乎不会花你什么。 890 01:12:53,007 --> 01:12:57,007 您称什么为“无”? 命名价格!命名吧! 891 01:13:02,247 --> 01:13:04,286 真的吗 ?! 892 01:13:05,947 --> 01:13:08,206 你不是在说 软肥皂给我? 893 01:13:09,207 --> 01:13:11,766 我发誓。在十字架上 木头,铁十字架。 894 01:13:13,367 --> 01:13:15,766 喔!你是怎么做到的 ? 895 01:13:15,767 --> 01:13:17,926 你是天使,珍珠! 896 01:13:17,940 --> 01:13:18,940 童话 ! -哦! 897 01:13:19,500 --> 01:13:20,000 喔!请 ! 898 01:13:21,000 --> 01:13:23,200 你闻到大蒜的香气! 真是个女人! 899 01:13:23,700 --> 01:13:27,500 好腰!什么臀部! 真胸! 900 01:13:35,000 --> 01:13:36,600 嗯贝雷斯福德,... 901 01:13:36,650 --> 01:13:38,900 今天晚上 你会和我们一起吃饭。 902 01:13:41,000 --> 01:13:42,300 它又消失了! 903 01:13:42,800 --> 01:13:45,500 你会坐在我旁边。 904 01:13:58,000 --> 01:14:00,500 你看起来或行为不像 国内,女士贝雷斯福德。 905 01:14:02,000 --> 01:14:04,500 你是谁 ? 你从哪里来的 ? 906 01:14:05,500 --> 01:14:07,600 你发现尸体 在您抵达时 907 01:14:07,680 --> 01:14:09,700 警察抱住了我们 908 01:14:10,000 --> 01:14:12,400 <我一直在看 你亲密。 909 01:14:13,000 --> 01:14:14,400 我将继续这样做。 910 01:15:20,000 --> 01:15:21,500 但是你在那里做什么? 911 01:15:22,000 --> 01:15:23,800 我想给你一个惊喜 它出了错。 912 01:15:24,487 --> 01:15:25,726 给我一点光。 913 01:15:26,127 --> 01:15:28,127 是。稍等一会。 914 01:15:33,287 --> 01:15:35,287 我不想错过 我们的圣诞节传统。 915 01:15:35,727 --> 01:15:37,326 我伤害了你! 916 01:15:37,327 --> 01:15:39,186 香槟在哪里? 啊! 917 01:15:42,247 --> 01:15:44,447 贝雷斯福德上校! 嗯... 918 01:15:51,007 --> 01:15:53,606 有些事实不能统一起来。 919 01:15:54,407 --> 01:15:55,966 那是什么,Prudence? 920 01:15:56,167 --> 01:15:59,167 1,信封寄给 在这里找到了玛蒂娜。 921 01:16:00,187 --> 01:16:02,487 2,我们发现的玛蒂娜酒是 大约20岁。 922 01:16:03,767 --> 01:16:06,767 3,身体有 舞者的脚。 923 01:16:10,047 --> 01:16:12,647 我们的舞者在西方 印度人和她的英国人。 924 01:16:13,247 --> 01:16:15,847 我们得到了一个错误的线索, 然后我们就跑了! 925 01:16:18,167 --> 01:16:19,886 <小姐谨慎! 926 01:16:20,487 --> 01:16:22,887 是的,我要来了,我要来了! 927 01:16:30,927 --> 01:16:32,006 圣诞快乐,亲爱的。 928 01:16:32,307 --> 01:16:34,307 给予小小的拥抱 给我的。 929 01:16:35,327 --> 01:16:38,327 你愿意帮我吗? 930 01:16:39,327 --> 01:16:41,727 谢谢。 我看起来怎么样 ? 931 01:16:42,407 --> 01:16:47,407 现在,您可以像 当你进来时偷偷地 932 01:17:01,267 --> 01:17:03,867 宝石非常适合您, 我亲爱的女士。贝雷斯福德。 933 01:17:05,927 --> 01:17:07,966 亲爱的女士贝雷斯福德。 -哦,不再了! 934 01:17:14,687 --> 01:17:16,287 看起来像母亲的胸针。 935 01:17:16,467 --> 01:17:17,806 你说得对,实际上。 936 01:17:17,907 --> 01:17:19,786 它确实很像,是的。 937年 01:17:19,987 --> 01:17:20,926 我想知道 ! 938 01:17:21,527 --> 01:17:24,527 劳驾。 939 01:17:26,007 --> 01:17:29,007 劳驾。紧急情况 我必须离开你。 940 01:17:31,687 --> 01:17:33,366 真可惜,我会陪你的。 - 谢谢。 941 01:17:34,367 --> 01:17:36,746 这很好,汤。 942 01:17:37,447 --> 01:17:40,447 啊,主菜! 围裙!... 943 01:17:43,407 --> 01:17:46,407 你的手提箱准备好了吗? 还没有睡衣。 944 01:17:47,247 --> 01:17:49,246 你妈妈几点钟 明天到这里吗? 945 01:17:50,000 --> 01:17:50,700 在十点整。 946 01:17:51,407 --> 01:17:53,407 <我很高兴能去 在Sils Maria滑雪! 947 01:17:55,127 --> 01:17:56,646 <哦,真是一团糟! 948 01:17:57,647 --> 01:17:59,326 <我会想念你的,女士。罂粟花。 949 01:18:00,327 --> 01:18:02,506 <你会去那儿吗 你的假期? 950 01:18:11,447 --> 01:18:14,447 瓦莱丽(Valerie)有什么问题? - 我不知道。 951 01:18:15,727 --> 01:18:18,406 您在哪里感到难过? -在我的肚子里。 952 01:18:19,407 --> 01:18:20,907 感觉不对。 953 01:18:23,367 --> 01:18:24,767 怎么了 ? 954 01:18:25,407 --> 01:18:27,046 去躺下 955 01:18:29,047 --> 01:18:30,166 这是什么 ? 我会得到帮助。 956 01:18:30,167 --> 01:18:31,126 我病了 ! 957年 01:18:31,127 --> 01:18:34,127 躺下,我会回来的。 958 01:18:40,287 --> 01:18:41,286 嗯Charpentier .. 959 01:18:41,288 --> 01:18:41,887 ..小孩子生病了。 960 01:18:44,127 --> 01:18:45,727 你不舒服吗 没有。 961 01:18:47,807 --> 01:18:48,766 我...我会回来的 962 01:19:17,887 --> 01:19:21,887 他们都摆脱了麻烦。 我们必须确定发生了什么。 963 01:19:22,647 --> 01:19:24,647 您是唯一一个不受影响的人。 都吃了吗 964 01:19:24,687 --> 01:19:26,687 是的,除了Yule原木之外, 我从来不喜欢它。 965 01:19:26,727 --> 01:19:29,727 我没喝酒 任何香槟。 966 01:19:32,687 --> 01:19:34,406 还有什么吗? 967 01:19:34,407 --> 01:19:37,407 不,他们什么也没留下。 他们甚至吮吸骨头。 968 01:19:39,007 --> 01:19:42,007 除了蜜饯 和cap子的尸体,.. 969 01:19:43,327 --> 01:19:46,327 ..没有什么剩下。 我也洗碗了。 970 01:19:48,567 --> 01:19:52,567 天哪 ! 你认为这是砷吗? 971 01:19:53,967 --> 01:19:55,966 你怎么知道的 ? 972 01:19:55,967 --> 01:19:58,967 是的,很有机会 这是。 973 01:19:59,727 --> 01:20:03,727 杀手可能在其中 假装生病。 974 01:20:04,767 --> 01:20:08,767 你能告诉我区别吗 真正的病假之间? 975 01:20:09,887 --> 01:20:12,086 我不这样认为,不。 976 01:20:15,407 --> 01:20:18,407 我叫护士。她 应该在八点钟到这里。 977 01:20:19,447 --> 01:20:21,546 我会为 他们每个人。 978 01:20:21,547 --> 01:20:23,246 我会回来的 看看他们怎么样。 979 01:20:23,847 --> 01:20:25,446 我不在的时候 睁大你的眼睛。 980 01:20:26,447 --> 01:20:29,447 尤其是艾玛。 -是的,请指望我。 981 01:20:34,647 --> 01:20:36,647 我从来没有想过我必须 在圣诞节那天工作! 982 01:20:37,447 --> 01:20:39,566 是Mlle。艾玛 我很抱歉。 983 01:20:40,567 --> 01:20:42,867 我对夫人说贝雷斯福德那个 龙虾一文不值。 984 01:20:43,007 --> 01:20:46,007 但是她回答:“不, 龙虾很新鲜。'' 985 01:20:47,367 --> 01:20:51,367 谁能说 污染物被扔到海里。 986 01:20:53,567 --> 01:20:55,567 在任何情况下, 我不会吃的 987 01:20:57,167 --> 01:20:59,167 他们全部 本来可以。 988 01:21:14,047 --> 01:21:16,047 我是女士瓦卢瓦 瓦莱丽的母亲。 989 01:21:17,087 --> 01:21:18,726 你来找她吗? 990 01:21:18,727 --> 01:21:21,727 我不会让你的女儿 再来这里。 991 01:21:21,747 --> 01:21:24,047 嗯瓦卢瓦,我带你 到瓦莱丽。 992 01:21:25,207 --> 01:21:28,007 这房子遭受了 一顿食物中毒.. 993 01:21:28,187 --> 01:21:29,246 ..但Valerie表现不错。 994 01:21:31,247 --> 01:21:34,247 她和阿历克斯都准备好了 离开。跟着我。 995 01:21:40,127 --> 01:21:41,406 啊!我的小女孩! 996 01:21:42,407 --> 01:21:43,846 你怎么了 ? 997 01:21:46,607 --> 01:21:49,607 我必须告诉你。阿列克谢的 爸爸有一个兄弟 998 01:21:50,567 --> 01:21:53,567 ..谁死了, 和他的妻子 999 01:22:00,527 --> 01:22:02,927 让艾玛(Emma)送走护士, 她的指控会毁了我! 1000 01:22:03,087 --> 01:22:05,566 那意味着我会 照顾自己 1001 01:22:05,567 --> 01:22:08,406 我无处不在 与此同时。 1002 01:22:09,407 --> 01:22:11,046 艾玛为什么不能帮助您? 1003 01:22:12,047 --> 01:22:13,506 她被限制在床上。 1004 01:22:13,407 --> 01:22:15,126 还有其他? - 相同。 1005 01:22:15,127 --> 01:22:19,127 但是他们都做得很好。 他们正在休息。 1006 01:22:20,047 --> 01:22:22,047 那是什么 ? -一些肉汤和饼干。 1007 01:22:22,127 --> 01:22:26,127 把它拿开。我要肉。 1008 01:22:27,047 --> 01:22:29,006 医生禁止 此刻。 1009 01:22:29,007 --> 01:22:32,007 医生是个屁,我很好。 把肉给我! 1010 01:22:46,207 --> 01:22:47,646 我可以看看阿列克谢的父亲吗? 1011 01:22:48,647 --> 01:22:49,566 不幸, 他病了... 1012 01:22:49,567 --> 01:22:53,567 我女儿告诉我有关 石棺的女人。 1013 01:22:53,847 --> 01:22:55,846 我必须跟某人说话 在家庭中。 1014 01:22:56,847 --> 01:22:58,366 我会问Mlle。艾玛 1015 01:22:59,367 --> 01:23:01,367 告诉她那是关于 玛蒂娜(Martina Petrovna)。 1016 01:23:02,887 --> 01:23:04,166 马丁娜·彼得罗夫娜(Martina Petrovna)? 1017 01:23:04,167 --> 01:23:07,167 您听说过玛蒂娜吗? 1018 01:23:08,247 --> 01:23:11,247 她可能是女人 在石棺中发现。 1019 01:23:12,487 --> 01:23:15,487 那是不可能的。 - 为何如此 ? 1020 01:23:16,487 --> 01:23:18,487 因为我是Martina Petrovna。 1021 01:23:27,727 --> 01:23:30,727 我在大马士革遇到了埃德蒙。 1022 01:23:34,127 --> 01:23:38,127 我们在一起有一段时间了 但是后来分裂了。 1023 01:23:50,047 --> 01:23:52,047 我被送到贝尔格莱德。 1024 01:23:53,167 --> 01:23:56,167 在那里我遇到了瓦莱丽的父亲, 谁被张贴在那里。 1025 01:23:58,207 --> 01:23:59,207 法国人,例如埃德蒙。 1026 01:24:04,767 --> 01:24:06,467 你懂... 1027 01:24:06,807 --> 01:24:09,007 我从来没有忘记你 兄弟,还有... 1028 01:24:12,007 --> 01:24:13,426 当我得知 在寄宿学校,.. 1029 01:24:13,427 --> 01:24:15,927 我女儿已经成为 你侄女的朋友,.. 1030 01:24:18,387 --> 01:24:21,687 ..你不知道我有多少 被这个巧合感动了。 1031 01:24:23,247 --> 01:24:25,166 我什至想到写信给你。 1032 01:24:26,167 --> 01:24:29,167 然后,我对自己说: 激发过去有什么好处? 1033 01:24:31,287 --> 01:24:33,787 但是当我女儿告诉我 关于这里发现的尸体,.. 1034 01:24:33,847 --> 01:24:38,847 ..我想警告你。 - 非常感谢。 1035 01:24:41,847 --> 01:24:43,126 她是如此迷人。 1036 01:24:43,127 --> 01:24:45,206 那是谁给我写的 用她的名字吗? 1037 01:24:46,207 --> 01:24:50,207 一些骗子,然后谁支持 远离他的欺骗。 1038 01:24:53,287 --> 01:24:54,826 它是什么, 嗯贝雷斯福德? 1039 01:24:54,827 --> 01:24:57,046 是..你的兄弟奥古斯丁。 1040 01:24:57,047 --> 01:24:59,747 那奥古斯丁呢? 我以为他的状况 1041 01:25:02,687 --> 01:25:04,446 我哥哥死了.. 1042 01:25:04,447 --> 01:25:06,366 ..我读对了吗? 1043 01:25:07,367 --> 01:25:09,767 我以为他更坚强。 显然我错了。 1044 01:25:09,768 --> 01:25:11,886 你似乎并不难过。 1045 01:25:11,887 --> 01:25:13,606 死者的眼泪 不,谢谢 ! 1046 01:25:13,607 --> 01:25:17,607 你太感伤了。 你可能会变得讨厌。 1047 01:25:23,087 --> 01:25:26,087 我听到什么? 奥古斯丁已经呼吸了他的最后一口? 1048 01:25:28,287 --> 01:25:30,126 M. Charpentier, 请回到你的床上。 1049 01:25:30,127 --> 01:25:33,127 没必要, 我从来没有感觉好过。 1050 01:25:33,207 --> 01:25:36,207 那么,是真的吗? 他真的死了吗? 1051 01:25:38,727 --> 01:25:40,646 最厉害的那个 渴望继承。 1052 01:25:40,647 --> 01:25:42,846 对于艺术家来说,是如此的多! 一下来,二去! 1053 01:25:42,847 --> 01:25:44,886 你怎么能这么说呢 ? 1054 01:25:44,887 --> 01:25:47,887 你看 我将它们全部埋葬! 1055 01:25:48,487 --> 01:25:51,487 不幸永远不会孤单。 1056 01:25:51,727 --> 01:25:53,727 现在我可以说出来了 告诉你这些美女! 1057 01:25:54,727 --> 01:25:58,727 你想听吗? -不 1058 01:26:07,447 --> 01:26:09,447 这是什么 ? 你现在在抽烟吗? 1059 01:26:12,487 --> 01:26:15,487 这些人,比利时人, 他们就像狼。 1060 01:26:18,527 --> 01:26:20,527 不,不是狼, 狼。 1061 01:26:50,307 --> 01:26:52,686 很抱歉听到你的兄弟。 - 好的。 1062 01:26:52,687 --> 01:26:54,866 夫人在家吗 -她在等你。 1063 01:26:55,847 --> 01:26:58,046 <上帝! 卡门培尔奶酪和一切? 1064 01:27:00,247 --> 01:27:03,247 拉斐尔 你看起来简直可怕! 1065 01:27:03,647 --> 01:27:06,606 你...真好 出去逗自己吗? 1066 01:27:06,607 --> 01:27:09,607 绝对每个人都在 现在的毛里求斯。天哪! 1067 01:27:09,707 --> 01:27:11,786 但是你已经花了 一个月。 1068 01:27:11,787 --> 01:27:13,766 当然不是吗?一个月? -是的 1069 01:27:13,767 --> 01:27:15,767 哦,正如您所说! 天哪! 1070 01:27:27,727 --> 01:27:29,727 钱很紧, 至少目前。 1071 01:27:35,127 --> 01:27:40,127 在纽约,我迷上了 这个疯狂的女人叫Hermeline。 1072 01:27:40,927 --> 01:27:43,227 她告诉整张桌子 他们发现了.. 1073 01:27:43,237 --> 01:27:46,247 ..女人的身体 Vallée-aux-Loups,... 1074 01:27:46,257 --> 01:27:49,206 太尴尬了。 1075 01:27:49,707 --> 01:27:51,926 但这是真的。 1076 01:27:51,927 --> 01:27:54,927 真! 她是谁,这个女人? 1077 01:27:55,167 --> 01:27:57,146 来自东方的女人 显然。 1078 01:27:58,047 --> 01:27:59,046 来自东方的女人! 1079 01:27:59,147 --> 01:28:02,047 天哪! 我感觉不太好。 1080 01:28:02,347 --> 01:28:04,246 这不会让我离开床。 1081 01:28:05,647 --> 01:28:09,247 我也是。 我完全处于落后状态。 1082 01:28:17,807 --> 01:28:20,086 我差点忘了... 1083 01:28:20,087 --> 01:28:22,286 这个给你。 1084 01:28:22,287 --> 01:28:24,646 你带我回来 一个礼物 ? 1085 01:28:24,647 --> 01:28:27,647 不,今天下午到了 由Chronopost。 1086 01:28:31,847 --> 01:28:33,866 ''继续治疗 三天。 1087 01:28:33,867 --> 01:28:35,846 晚上两片 睡前。'' 1088 01:28:36,847 --> 01:28:40,547 拉加德叫我停下来。 -您一定有误会。 1089 01:28:41,807 --> 01:28:43,807 在任何情况下, 它不会对您造成任何伤害。 1090 01:28:45,247 --> 01:28:47,247 你是对的, 它不会造成任何伤害。 1091 01:29:26,527 --> 01:29:29,527 拉斐尔,天哪,我在冻结! 1092 01:29:54,767 --> 01:29:57,286 我怀疑奥古斯丁, 他死了 1093 01:29:58,287 --> 01:30:00,287 我怀疑拉斐尔 他死了 1094 01:30:00,807 --> 01:30:03,407 我不敢说我​​怀疑 弗雷德里克,这可能会杀死他。 1095 01:30:05,407 --> 01:30:07,407 至于艾玛... 1096 01:30:08,927 --> 01:30:12,806 不,让我们回到 舞者的踪迹。 1097 01:30:12,807 --> 01:30:14,086 从这种情况开始 1098 01:30:14,087 --> 01:30:16,087 ..我们专注于 玛蒂娜·夏蓬蒂尔 1099 01:30:17,407 --> 01:30:20,126 ..因为假信件 我们被展示了.. 1100 01:30:20,127 --> 01:30:22,766 ..让我们承认 头低下头。 1101 01:30:27,527 --> 01:30:30,527 我们必须找到身份 这个安娜·卡列宁(Anna Karenine)。 1102 01:30:31,407 --> 01:30:33,407 我相信那会带领我们 给杀手 1103 01:30:34,567 --> 01:30:36,567 谋杀与 夏朋蒂家族 1104 01:30:36,568 --> 01:30:40,247 ..但不妨碍 到目前为止,我们已经考虑过。 1105 01:30:40,767 --> 01:30:42,526 你不这样认为吗? 1106 01:30:43,527 --> 01:30:45,206 我什么都不懂 你说的 1107 01:30:46,207 --> 01:30:47,766 呃,好吧。我,我有一个计划。 1108 01:30:47,767 --> 01:30:50,767 是的,先生,我有一个计划。 1109 01:30:52,367 --> 01:30:53,706 但我不认为我会告诉 你是什​​么。 1110 01:30:57,567 --> 01:31:00,567 哦,那好吧。 它涉及巴贝特姨妈。 1111 01:31:02,087 --> 01:31:04,006 和巴贝特姨妈在一起? -是的,和她在一起。 1112 01:31:08,327 --> 01:31:10,606 <这是极限! 1113 01:31:10,607 --> 01:31:14,607 首先,你不相信我, 让我生气 1114 01:31:14,687 --> 01:31:16,687 现在,你要我做 令人尴尬的事情。 1115 01:31:16,688 --> 01:31:20,047 我为什么要去喝茶 和陌生人在一起,和.. 1116 01:31:20,067 --> 01:31:23,726 ..然后假装感到不适? 1117 01:31:24,727 --> 01:31:25,706 我告诉你,我不喜欢它! 1118 01:31:25,707 --> 01:31:28,886 我讨厌这种玩笑。 1119 01:31:28,887 --> 01:31:30,566 这不是关于喜剧, 但是关于谋杀 1120 01:31:30,567 --> 01:31:35,527 谨慎只要求您 按照她的指示。 1121 01:31:37,367 --> 01:31:39,367 巴贝特姨妈! 不行 1122 01:31:41,967 --> 01:31:47,967 那好吧,如果我了解了 她的指示.. 1123 01:31:47,977 --> 01:31:51,727 ..我从事愉快 与这些太太的对话... 1124 01:32:00,647 --> 01:32:02,486 突然... 1125 01:32:02,487 --> 01:32:04,487 突然, 我有一个小问题。 1126 01:32:06,007 --> 01:32:09,007 我用一些借口,呃, 我会发明一些东西.. 1127 01:32:09,087 --> 01:32:11,687 ..为了离开房间。 1128 01:32:13,847 --> 01:32:16,847 然后 ? -你回到房间。 1129 01:32:18,007 --> 01:32:20,007 我什么时候回来? -在信号。 1130 01:32:20,447 --> 01:32:23,447 啊,会有信号吗? -嗯... 1131 01:32:26,347 --> 01:32:28,647 我可以给他们看 我的Zigoeunus? 1132 01:32:32,047 --> 01:32:34,546 ''Zigoeunus Thomasus蛾, 1133 01:32:34,647 --> 01:32:38,447 ''..North Sinnamary,法文 圭亚那,2007年12月28日'' 1134 01:32:39,087 --> 01:32:41,687 是男的 美丽,不是吗? 1135 01:32:42,127 --> 01:32:44,727 这是亮点 我整个职业生涯 1136 01:32:45,327 --> 01:32:47,546 男性只活着 几个小时。 1137 01:32:47,647 --> 01:32:51,447 拥有后立即 “满足”女性,.. 1138 01:32:51,447 --> 01:32:52,826 ..他死了。 1139 01:32:55,767 --> 01:32:58,767 这就是为什么他如此稀有 而且很难捕获。 1140 01:32:58,807 --> 01:33:02,807 但是有几个 技术:纠察线,.. 1141 01:33:02,887 --> 01:33:04,886 ..之字形追逐。 1142 01:33:04,888 --> 01:33:06,566 保持。 1143 01:33:07,067 --> 01:33:10,567 他们是反复无常的生物 对香水敏感:.. 1144 01:33:10,847 --> 01:33:13,446 ..广patch香, 金银花... 1145 01:33:13,447 --> 01:33:15,486 香奈儿5号... 1146 01:33:15,487 --> 01:33:18,487 最重要的是 渔获物是给猎人的。 1147 01:33:19,407 --> 01:33:22,407 ..隐瞒他的影子。 1148 01:33:23,527 --> 01:33:25,606 但是我讲的太多了... 1149 01:33:25,607 --> 01:33:29,607 我没有告诉你什么 您拥有一个美好的家! 1150 01:33:30,707 --> 01:33:32,566 现在有事。 1151 01:33:33,567 --> 01:33:36,567 哦,真好吃! 在多士的红鱼。 1152 01:33:37,767 --> 01:33:39,726 改变饮食 在亚马逊! 1153 01:33:40,727 --> 01:33:42,246 您可能会这样说! 1154 01:33:42,247 --> 01:33:44,747 但是,这就是蚂蚁的头脑 还不错 1155 01:33:47,567 --> 01:33:50,567 他们愉快地破裂 在牙齿上。 1156 01:33:51,727 --> 01:33:53,086 而且非常经济。 1157 01:33:53,087 --> 01:33:54,246 你有食谱吗? 1158 01:33:54,247 --> 01:33:55,646 现在。 1159 01:33:56,647 --> 01:33:58,966 嗯!这个好吃。 1160 01:33:58,967 --> 01:34:01,067 您想要新鲜的空气吗? - 反之。 1161 01:34:01,167 --> 01:34:03,846 你看起来很苍白! 1162 01:34:03,847 --> 01:34:07,647 对不起。我必须原谅 我自己片刻。 1163 01:34:08,267 --> 01:34:10,886 它在哪里 ? 1164 01:34:10,887 --> 01:34:12,287 通过那里。 1165 01:34:23,207 --> 01:34:25,207 谢谢弗朗索瓦, 来。 1166 01:34:31,647 --> 01:34:33,686 你看起来好多了。 你回来了.. 1167 01:34:33,687 --> 01:34:35,966 ..您的一些颜色。 1168 01:34:42,847 --> 01:34:44,726 这是怎么了? 1169 01:34:46,727 --> 01:34:48,727 保持冷静。 -阻塞我的喉咙! 1170 01:34:50,047 --> 01:34:53,047 让我看一看。 张开嘴。 1171 01:34:54,047 --> 01:34:56,726 你冷静一下。 转向我。 1172 01:34:56,727 --> 01:34:58,366 倾斜你的头。 1173 01:35:02,967 --> 01:35:04,166 是他 ! 1174 01:35:04,167 --> 01:35:06,766 火车上的男人! 1175 01:35:07,687 --> 01:35:09,286 不,不。 别说了。 1176 01:35:09,887 --> 01:35:10,886 你没想到 1177 01:35:10,887 --> 01:35:13,387 目击者看见你 勒死那个女人。 1178 01:35:14,447 --> 01:35:17,447 我的姑姑Babette Boutiti, 见到你。 1179 01:35:18,687 --> 01:35:20,446 她在火车上。 1180 01:35:20,447 --> 01:35:22,126 ..那在你自己旁边跑。 1181 01:35:22,127 --> 01:35:24,686 突然,她看到了... 1182 01:35:35,207 --> 01:35:37,006 嗯贝雷斯福德, 我知道你去过 1183 01:35:37,007 --> 01:35:39,886 ..最近工作过度, 但现在,.. 1184 01:35:39,887 --> 01:35:41,926 ..你一定要精神错乱。 - 一点都不 ! 1185 01:35:42,927 --> 01:35:44,926 我为什么要angle死一个女人 我不知道吗? 1186 01:35:44,927 --> 01:35:47,406 不明? 1187 01:35:49,587 --> 01:35:51,587 相反,这个女人 1188 01:35:51,588 --> 01:35:53,946 ..你非常了解。 1189 01:35:54,447 --> 01:35:56,926 她是你的妻子。 1190 01:36:11,287 --> 01:36:13,587 他想嫁给你 但是他已经结婚了 1191 01:36:15,167 --> 01:36:17,667 ..致安娜·斯特拉文斯卡(Anna Stravinska) 作为安娜·卡列宁(Anna Karenine)。 1192 01:36:18,327 --> 01:36:21,327 一名舞者 谁拒绝了他离婚 1193 01:36:24,067 --> 01:36:26,086 我以为他是个ower夫。 1194 01:36:26,187 --> 01:36:28,766 我想 你是寡妇 1195 01:36:28,768 --> 01:36:31,767 不是寡妇,不是家政, 不是厨师 1196 01:36:31,769 --> 01:36:33,126 这是我最后的服务。 1197 01:36:34,127 --> 01:36:36,127 艾玛,你跟他谈过 埃德蒙? 1198 01:36:38,287 --> 01:36:40,246 那时是 他有个主意。 1199 01:36:41,247 --> 01:36:44,926 他给你写了一封信, 并签署了“马丁娜” 1200 01:36:44,927 --> 01:36:47,927 ..杀死了他的妻子,并隐藏了 石棺中的身体.. 1201 01:36:48,407 --> 01:36:51,246 ..而且,由于那封信, 我们被误入歧途,.. 1202 01:36:51,247 --> 01:36:55,247 ..身体被识别 和马丁娜一样。 1203 01:37:08,127 --> 01:37:10,127 <因此,一家人 与谋杀有牵连,.. 1204 01:37:10,167 --> 01:37:14,167 ..他准备 他的下一步。 1205 01:37:18,647 --> 01:37:20,947 <他计划杀死你所有的人 兄弟,并入罪。 1206 01:37:20,948 --> 01:37:23,826 ..剩下的那个人... 1207 01:37:23,827 --> 01:37:25,826 ..你的父亲。 1208 01:37:25,927 --> 01:37:28,877 这样你会很富有 等他嫁给你的时候 1209 01:37:28,887 --> 01:37:31,887 如果是我死了 圣诞之夜,他的计划。 1210 01:37:31,886 --> 01:37:34,127 ..会崩溃了。 但是我太坚强了。 1211 01:37:34,247 --> 01:37:36,286 他给了你一点剂量 砷。 1212 01:37:36,287 --> 01:37:40,266 足以给你 胃痛。 1213 01:37:40,967 --> 01:37:43,806 <第二天,护士, 不知道,.. 1214 01:37:43,807 --> 01:37:46,807 ..让奥古斯丁致命 剂量由医生准备。 1215 01:37:48,808 --> 01:37:51,407 那就只需要 寄给拉斐尔剂量 1216 01:37:52,527 --> 01:37:53,806 真是个混蛋! -<您应该感谢他! 1217 01:37:53,807 --> 01:37:55,086 你欠他感激之情。 1218 01:37:55,087 --> 01:37:59,086 他带给我的只是麻烦。 1219 01:37:59,087 --> 01:38:01,246 一块石棺... 1220 01:38:01,247 --> 01:38:02,966 还有其余的! 1221 01:38:02,967 --> 01:38:05,967 你,你的财富有 坦白说加倍! 1222 01:38:14,367 --> 01:38:17,367 他们爱他们的钱, 这个家庭。 1223 01:38:33,207 --> 01:38:35,526 我避免过圣诞节 跟家人在一起 ! 1224 01:38:43,647 --> 01:38:45,726 他们还在他们这里。 1225 01:38:46,727 --> 01:38:48,846 他们说他们要走了! 1226 01:38:48,847 --> 01:38:50,847 也许他们决定留下来 新年 1227 01:38:57,327 --> 01:39:00,206 现在有十个吗? 1228 01:39:00,207 --> 01:39:02,226 不,只有两个。 1229 01:39:07,287 --> 01:39:09,287 还有两个可以进入这一行? 1230 01:39:09,407 --> 01:39:12,407 巴贝特姨妈不知道 她有多幸运。 1231 01:39:13,607 --> 01:39:15,607 只是蝴蝶 住在帐篷里 1232 01:39:15,617 --> 01:39:17,626 在野外露营! 1233 01:39:45,007 --> 01:39:47,007 我干了! 1234 01:40:36,167 --> 01:40:38,167 Belisaire,醒。 1235 01:40:39,647 --> 01:40:41,886 张开你的眼睛。 1236 01:40:42,887 --> 01:40:44,887 告诉我你所看到的。 1237 01:40:46,607 --> 01:40:50,207 数百万 星。 1238 01:40:51,007 --> 01:40:53,007 您如何看待它们? 1239 01:40:54,087 --> 01:40:56,087 那有几百万 星系.. 1240 01:40:56,687 --> 01:40:59,406 以及数十亿个行星。 1241 01:41:02,407 --> 01:41:05,407 土星是狮子座的一部分。 1242 01:41:08,367 --> 01:41:11,367 时间到了 大约.. 1243 01:41:11,647 --> 01:41:13,286 ..三点一刻。 1244 01:41:15,287 --> 01:41:18,287 那应该是美好的一天 明天。 1245 01:41:21,887 --> 01:41:26,885 我看到上帝是 无所不能.. 1246 01:41:26,887 --> 01:41:29,887 ..而我们很小 在宇宙中微不足道。 1247 01:41:32,567 --> 01:41:34,567 还有你,Prudence, 你看到了什么 ? 1248 01:41:36,047 --> 01:41:39,747 我可怜的Belisaire,我明白了 你是一个适当的机智者! 1249 01:41:40,087 --> 01:41:42,087 我, 我看到我们终于有空了。 1250 01:44:05,807 --> 01:44:10,093 英文字幕 : 大卫·布雷克(2015) 1251 01:44:10,094 --> 01:44:10,095 ================================================ FILE: 2020/5-4-movie-调查犯罪是我们的职业/Crime est notre affaire.subs.eng.srt ================================================ 1 00:02:03,807 --> 00:02:07,807 To summarise: Prudence and Belisaire Beresford are married,.. 2 00:02:09,327 --> 00:02:11,886 ..they have one daughter,.. 3 00:02:11,887 --> 00:02:14,887 ..two adorable grandchildren,.. 4 00:02:15,127 --> 00:02:18,127 ..and they will live happily ever after. 5 00:02:18,367 --> 00:02:21,367 Things have not turned out the way I expected ! 6 00:02:22,407 --> 00:02:25,407 Very profound, but hardly new. 7 00:02:29,327 --> 00:02:32,327 I am bored. I am so very bored. 8 00:02:33,527 --> 00:02:36,527 I am in a deep, dark vault. 9 00:02:36,647 --> 00:02:39,647 You have buried me alive. 10 00:02:39,687 --> 00:02:42,086 When they open my coffin,.. 11 00:02:42,087 --> 00:02:45,087 ..they will see the scratches on the lid.. 12 00:02:45,367 --> 00:02:48,246 where I wore my fingers down to stumps.. 13 00:02:48,247 --> 00:02:50,766 ..fighting to get out. - What's the matter with you ? 14 00:02:50,767 --> 00:02:53,767 Oh, nothing ! Nothing happens, that's all. 15 00:02:54,647 --> 00:02:57,647 I can't take any more of this humdrum existence. 16 00:02:57,687 --> 00:03:00,687 And I suppose you are fully content ? 17 00:03:00,927 --> 00:03:02,766 Colonel Beresford,.. 18 00:03:02,767 --> 00:03:05,767 ..former head of the Secret Service,.. 19 00:03:05,847 --> 00:03:08,847 ..man of mystery, of missions impossible... 20 00:03:09,367 --> 00:03:12,006 Don't you ache anymore for excitement ? 21 00:03:12,007 --> 00:03:14,886 For romantic adventure ? 22 00:03:14,887 --> 00:03:16,726 Imagine the thrill.. 23 00:03:16,727 --> 00:03:20,727 ..of hearing a knock at the door, to go to open it.. 24 00:03:20,730 --> 00:03:23,287 ..and see a dead man stagger in ! 25 00:03:24,607 --> 00:03:26,726 If he was dead, he wouldn't be staggering. 26 00:03:26,727 --> 00:03:29,727 But yes, they always stagger before they die. 27 00:03:30,447 --> 00:03:33,447 Then they fall - uttering enigmatic words, like :.. 28 00:03:34,367 --> 00:03:37,367 ..''The Spotted Leopard... Argh... !'' 29 00:03:38,567 --> 00:03:40,966 I don't think I like dead men who stagger about. 30 00:03:40,967 --> 00:03:43,967 Oh, that'll be Meals on Wheels ! 31 00:04:02,000 --> 00:04:04,000 What are you doing ? 32 00:04:04,500 --> 00:04:06,500 Can you smell something ? 33 00:04:06,750 --> 00:04:09,000 < No, nothing. 34 00:04:09,500 --> 00:04:11,500 Can't you smell that odour ? 35 00:04:11,600 --> 00:04:13,500 < An odour - of what ? - Of... I'm not sure... 36 00:04:13,750 --> 00:04:16,500 Of old age. 37 00:04:16,750 --> 00:04:19,500 < Old age ? - Yes, exactly that. Old age. 38 00:04:20,047 --> 00:04:23,600 Thank you very much. -< No - no... 39 00:04:23,727 --> 00:04:26,000 It isn't you, it's me. 40 00:04:26,087 --> 00:04:30,087 For some time, I've felt old age creeping up on me. 41 00:04:31,527 --> 00:04:33,006 Me, I feel nothing. 42 00:04:33,007 --> 00:04:36,007 You feel nothing. One feels nothing. -< When you've quite finished.. 43 00:04:36,327 --> 00:04:40,327 ..conjugating the verb "to feel"... -< But we're not old ! 44 00:04:42,607 --> 00:04:45,326 Not old ? Aren't we pensioners ? 45 00:05:03,007 --> 00:05:06,007 When you retired, it ruined my life. 46 00:05:06,327 --> 00:05:10,727 It was you who wanted a vacation. - To take holidays - precisely. 47 00:05:11,207 --> 00:05:14,207 Anyway, don't take any notice of me. 48 00:05:14,687 --> 00:05:16,606 How are things, George ? 49 00:05:16,607 --> 00:05:19,607 I'm burning the dead leaves. Anything else? 50 00:05:19,687 --> 00:05:21,446 That's fine. 51 00:05:21,447 --> 00:05:24,947 I don't believe I've seen you like this before. 52 00:05:25,247 --> 00:05:28,247 It's been churning around in my mind for a long time. 53 00:05:28,367 --> 00:05:31,367 Why not buy a new hat ? - I already have lots ! 54 00:05:31,767 --> 00:05:34,206 So what if you have 40,.. 55 00:05:34,207 --> 00:05:35,966 ..another might do the trick. Let's go. 56 00:05:35,967 --> 00:05:38,967 I have 44; and the hats all resemble each other. 57 00:05:39,847 --> 00:05:42,847 Even though there are subtle differences between them. 58 00:05:43,527 --> 00:05:46,527 I would love something exciting to happen to us. 59 00:05:47,647 --> 00:05:50,126 It would us both good. 60 00:05:50,127 --> 00:05:52,966 If only a fairy-godmother would appear... 61 00:07:01,967 --> 00:07:04,526 Conductor... 62 00:07:06,967 --> 00:07:08,166 What is wrong ? 63 00:07:08,167 --> 00:07:11,167 A woman was being strangled in the train that overtook us. 64 00:07:13,007 --> 00:07:14,446 I saw it all. 65 00:07:14,447 --> 00:07:17,366 Tell me calmly exactly what you saw. 66 00:07:17,367 --> 00:07:20,086 I was asleep... 67 00:07:20,087 --> 00:07:22,406 The other train overtook us... 68 00:07:22,407 --> 00:07:25,407 And I saw the back of a man - strangling a woman. 69 00:07:26,487 --> 00:07:29,487 Strangling a woman ? - Yes. 70 00:07:30,087 --> 00:07:33,087 Like in the book you are reading ? 71 00:07:33,247 --> 00:07:35,326 Exactly the same ! 72 00:07:35,327 --> 00:07:38,126 Well, then... 73 00:07:38,127 --> 00:07:42,027 Rudi, did you see anything strange on the 4:50 express ? 74 00:07:42,247 --> 00:07:43,446 No, why ? 75 00:07:43,447 --> 00:07:45,126 Nothing, forget it. 76 00:07:45,127 --> 00:07:48,127 I would like to know what you intend to do. 77 00:07:48,247 --> 00:07:51,246 I am not a policeman. But, if it will reassure you,.. 78 00:07:51,247 --> 00:07:54,206 ..I will make out an incident report. 79 00:07:54,207 --> 00:07:56,086 An incident ? 80 00:07:56,087 --> 00:07:59,087 It was a crime ! 81 00:08:17,207 --> 00:08:19,486 Aunt Babette ! 82 00:08:19,487 --> 00:08:23,487 Prudence, I have been witness to a crime ! 83 00:08:24,367 --> 00:08:27,367 A crime ? - Yes, a crime ! 84 00:08:30,727 --> 00:08:32,526 No, no, not a thing ! 85 00:08:32,527 --> 00:08:34,086 No mention of a corpse. 86 00:08:34,087 --> 00:08:37,086 You don't believe I invented it ? - Of course not ! 87 00:08:37,087 --> 00:08:38,446 You make me feel better. 88 00:08:38,447 --> 00:08:40,886 That conductor, he didn't believe me. 89 00:08:40,887 --> 00:08:43,686 But I gave him a clear statement of what I saw. 90 00:08:43,687 --> 00:08:46,526 An ordinary attacker would have fled.. 91 00:08:46,527 --> 00:08:48,606 ..and left the body. 92 00:08:48,607 --> 00:08:51,607 So, it was premeditated, or a crime of passion... 93 00:08:52,487 --> 00:08:55,487 Jealousy, anger - and the man strangles... 94 00:08:56,927 --> 00:08:59,927 But I don't see what he did with the body. 95 00:09:00,327 --> 00:09:03,327 Ah ! He threw it from the window. 96 00:09:06,367 --> 00:09:09,367 He hid it in a suitcase. 97 00:09:09,447 --> 00:09:12,447 What sort of killer walks around with a body in a suitcase ? 98 00:09:13,967 --> 00:09:16,046 It would be noticed. 99 00:09:16,047 --> 00:09:17,886 One more, for the road ? 100 00:09:17,887 --> 00:09:20,887 As far as I'm concerned, he threw it from the window. 101 00:09:21,527 --> 00:09:24,527 < Or the corpse staggered off ! 102 00:09:26,647 --> 00:09:28,886 Your assassin was burly ? -< Yes. 103 00:09:28,887 --> 00:09:31,486 < At least it seemed so to me. 104 00:09:31,487 --> 00:09:34,487 < Big enough, mainly brown. 105 00:09:34,687 --> 00:09:36,606 I only saw his back. 106 00:09:38,247 --> 00:09:40,366 And the unfortunate victim, so. Argh ! 107 00:09:42,127 --> 00:09:44,286 She wore red gloves ! 108 00:09:44,287 --> 00:09:47,246 < It... was horrible. -< You must have.. 109 00:09:47,247 --> 00:09:50,247 ..dreamt it, or witnessed a domestic dispute.. 110 00:09:50,327 --> 00:09:53,327 ..less tragic than you imagined. 111 00:09:53,687 --> 00:09:57,687 Less tragic ?! It was a crime ! I saw it with my own eyes. 112 00:09:58,327 --> 00:10:00,926 < I am disappointed ! Your Belisaire is.. 113 00:10:00,927 --> 00:10:03,927 ..like the rest of them. He doesn't believe me. 114 00:10:04,887 --> 00:10:07,887 And this happened somewhere beyond Andelieux ? 115 00:10:08,287 --> 00:10:09,446 Yes. 116 00:10:09,447 --> 00:10:12,947 I remember the place. There was a curve.. 117 00:10:13,087 --> 00:10:14,806 ..that rocked me in my seat. 118 00:10:14,807 --> 00:10:17,807 And our train went through the station at Andelieux.. 119 00:10:18,207 --> 00:10:21,207 ..ten minutes later. There you are, Belisaire ! 120 00:10:21,527 --> 00:10:24,527 < I shall need absolute peace of mind.. 121 00:10:24,607 --> 00:10:26,046 ..during my trip abroad. 122 00:10:26,047 --> 00:10:29,047 < Where are you going to hunt, this time ? - In Guiana. 123 00:10:29,407 --> 00:10:32,407 The Zigoeunus Thomasus moth. The male. 124 00:10:32,567 --> 00:10:35,567 It is the most graceful moth within the Amazon region... 125 00:10:57,167 --> 00:10:59,366 < Why are you ironing your kilt ? 126 00:10:59,367 --> 00:11:01,526 For my reunion in Glasgow. 127 00:11:01,527 --> 00:11:04,366 You know, the Society of the Oval Thistle. 128 00:11:04,367 --> 00:11:06,886 Have you forgotten I'm leaving the day after tomorrow ? 129 00:11:06,887 --> 00:11:09,887 Then you must devote yourself to ironing your pleats. 130 00:11:11,487 --> 00:11:13,206 What are you doing ? 131 00:11:13,207 --> 00:11:16,207 Drop this nonsense of Aunt Babette's ''crime'' ! 132 00:11:16,527 --> 00:11:19,527 You've forgotten that crime is our business. 133 00:11:20,327 --> 00:11:23,327 It is obvious that your aunt was mistaken. 134 00:11:24,087 --> 00:11:27,086 Commissioner Richard searched everywhere. 135 00:11:27,087 --> 00:11:30,087 Trains, stations, hospitals, morgues. No sign of a body. 136 00:11:30,767 --> 00:11:33,767 No-one reported missing. 137 00:11:36,847 --> 00:11:38,366 The train that overtook.. 138 00:11:38,367 --> 00:11:41,367 ..Babette's must have been the 4:50.. 139 00:11:41,687 --> 00:11:43,926 ..that stops at Aigrefonds. 140 00:11:43,927 --> 00:11:46,646 Then, the railway track.. 141 00:11:46,647 --> 00:11:49,647 ..follows the county boundary for some distance... 142 00:11:50,927 --> 00:11:53,927 But then, there actually is a curve. 143 00:11:54,287 --> 00:11:55,406 And then ? 144 00:11:55,407 --> 00:11:58,286 The assassin threw the body out the window. 145 00:11:58,287 --> 00:12:00,046 < Frankly, that's what you want to have happened ! 146 00:12:00,047 --> 00:12:03,047 An accomplice, hidden in the thicket.. 147 00:12:03,367 --> 00:12:06,367 ..bundles the victim into his black van.. 148 00:12:06,607 --> 00:12:09,607 ..and dumps everything into the lake. 149 00:12:09,847 --> 00:12:12,166 There is no lake around there. 150 00:12:12,167 --> 00:12:15,167 You believe only what you can see, my poor man. 151 00:12:15,247 --> 00:12:18,247 That is why you are led astray so often. 152 00:12:31,967 --> 00:12:34,967 ''I remember the place. There was a curve.. 153 00:12:35,367 --> 00:12:37,286 ''..that rocked me in my seat. 154 00:12:37,287 --> 00:12:40,287 ''And our train went through the station at Andelieux.'' 155 00:13:01,007 --> 00:13:03,486 < I believe I've found it. 156 00:13:03,487 --> 00:13:06,487 Close to the curve, there is a queer property, isolated. 157 00:13:07,727 --> 00:13:10,446 Ideal for disposing of a body. 158 00:13:10,447 --> 00:13:11,766 This is an obsession. 159 00:13:11,767 --> 00:13:14,686 I have an intuition that Babette was right. 160 00:13:14,687 --> 00:13:16,366 Don't talk to me about intuition. 161 00:13:16,367 --> 00:13:19,326 She doesn't have the imagination to invent such a story. 162 00:13:19,327 --> 00:13:22,327 Then perhaps it was a hallucination. 163 00:13:22,407 --> 00:13:24,606 Aunt Babette is alright in the head. 164 00:13:24,607 --> 00:13:27,486 She is a world authority on butterflies. 165 00:13:27,487 --> 00:13:30,487 She doesn't invent them. She catches them, and names them. 166 00:13:31,367 --> 00:13:34,367 She wants to do the same with the killer, and I will help her. 167 00:13:34,887 --> 00:13:37,887 One doesn't hunt a killer like a butterfly. 168 00:13:38,167 --> 00:13:42,167 No. It's the same. One traps them and - shlack - one pins them. 169 00:13:42,847 --> 00:13:45,406 ''Shlack'' ! I don't understand. 170 00:13:45,407 --> 00:13:48,407 That's because you don't listen ! 171 00:13:51,087 --> 00:13:54,087 Have a good time with your friends of the Oval Thistle. 172 00:13:54,807 --> 00:13:57,807 We won't be drinking water. Have no doubt ! 173 00:13:59,767 --> 00:14:02,767 Bye. Have a safe trip ! 174 00:14:25,007 --> 00:14:26,366 Look at the Scotsman ! 175 00:14:26,367 --> 00:14:29,367 They don't wear anything under their kilts, you know. 176 00:14:34,487 --> 00:14:37,487 How did I manage to do this ? 177 00:14:44,247 --> 00:14:45,846 Can we help you ? 178 00:15:05,647 --> 00:15:07,046 Your hat. 179 00:15:50,167 --> 00:15:51,206 I wonder who.. 180 00:15:51,207 --> 00:15:54,207 ..that girl might be ? - She could be the new maid.. 181 00:15:55,327 --> 00:15:57,006 ..up at ''La Vallée aux Loups''. 182 00:15:57,007 --> 00:16:00,007 None of them last very long. 183 00:16:00,047 --> 00:16:03,047 < Old Man Charpentier sees to that. 184 00:16:05,767 --> 00:16:07,806 < That poor girl... 185 00:16:07,807 --> 00:16:09,886 With all the snow out there.. 186 00:16:09,887 --> 00:16:12,887 ..she won't be catching a bus. 187 00:16:18,887 --> 00:16:21,887 There won't be a bus today. Can I take you somewhere ? 188 00:16:27,327 --> 00:16:29,606 What luck you were there ! 189 00:16:29,607 --> 00:16:32,607 I am sure they would have all left me to freeze on the spot. 190 00:16:39,727 --> 00:16:41,486 Your seats are heated ? 191 00:16:41,487 --> 00:16:43,566 No-no, it's the motor you feel. 192 00:16:43,567 --> 00:16:46,126 They are all dogs in that place. 193 00:16:46,127 --> 00:16:48,246 Like my employer, M. Charpentier. 194 00:16:48,247 --> 00:16:49,566 He's a dog ? - A rat ! 195 00:16:49,567 --> 00:16:52,567 Rich beyond belief, but you'd never know it, the rat ! 196 00:16:53,167 --> 00:16:56,167 Always in the corridors, waiting to stare at me ! 197 00:16:57,847 --> 00:17:00,006 You know, staring... 198 00:17:00,007 --> 00:17:02,646 Staring, how ? I can't tell you. 199 00:17:02,647 --> 00:17:04,326 He sends shivers down my spine. 200 00:17:04,327 --> 00:17:07,327 Fact is, Old Man Charpentier frightens everyone. 201 00:17:08,567 --> 00:17:10,686 What do you do in the house of this old man ? 202 00:17:10,687 --> 00:17:14,687 Everything. Washing-up, dusting, shopping, making beds. 203 00:17:15,307 --> 00:17:18,607 All by yourself ? No, there is Mme. Clairin. 204 00:17:18,847 --> 00:17:21,446 But the place is so large, it really needs an army. 205 00:17:21,447 --> 00:17:23,366 Does he live there alone ? 206 00:17:23,367 --> 00:17:26,366 No, with his poor daughter and a gardener. 207 00:17:26,367 --> 00:17:28,086 The worst thing is the kitchen. 208 00:17:28,087 --> 00:17:31,087 It's like something out of the Middle Ages. 209 00:17:31,767 --> 00:17:33,606 You've been there a long time ? 210 00:17:33,607 --> 00:17:36,607 Seven weeks. I don't want to stay a moment longer. 211 00:18:54,927 --> 00:18:57,927 Come in. I will fetch Mademoiselle. 212 00:19:04,207 --> 00:19:06,206 The new domestic is here. 213 00:19:06,207 --> 00:19:09,207 < Send her into my office. - Very well, Mademoiselle. 214 00:19:11,727 --> 00:19:13,806 Come, she will see you now. 215 00:19:13,807 --> 00:19:16,807 You are the 13th this year. Superstitious ? 216 00:19:42,767 --> 00:19:45,366 Bonjour, I am Emma Charpentier. 217 00:19:45,367 --> 00:19:47,446 You are a good cook ? 218 00:19:47,447 --> 00:19:50,447 You have references ? No, none. 219 00:19:50,607 --> 00:19:52,286 That is quite unusual. 220 00:19:52,287 --> 00:19:55,126 For the most part, they are of little value. 221 00:19:55,127 --> 00:19:58,127 They never say why one left a place. 222 00:20:00,287 --> 00:20:04,287 Very true. What day would you prefer as a rest day ? 223 00:20:04,407 --> 00:20:09,407 I am very flexible. Since the death of my dear husband... 224 00:20:10,767 --> 00:20:13,767 My time is my own. 225 00:20:13,967 --> 00:20:16,967 Very well. Let me show you your room. 226 00:20:23,567 --> 00:20:25,606 I need more than a kitchen maid. 227 00:20:25,607 --> 00:20:28,607 Mme. Clairin isn't here every day. 228 00:20:28,767 --> 00:20:31,767 My grandfather, he built the house. A fantastic man. 229 00:20:32,447 --> 00:20:35,447 But very strict. The damage was done by my father.. 230 00:20:35,527 --> 00:20:38,686 ..in a fit of anger. He refuses to let anyone repair it. 231 00:20:38,687 --> 00:20:41,687 My father is a difficult man. 232 00:20:42,247 --> 00:20:45,247 He keeps a close eye on expenses, and can be... difficult. 233 00:20:47,407 --> 00:20:49,126 - I am used to.. 234 00:20:49,127 --> 00:20:51,086 ..the habits of the elderly. 235 00:20:51,087 --> 00:20:53,726 To begin with, things will be easy. There are four of us. 236 00:20:53,727 --> 00:20:56,646 Myself, my niece on vacation, her schoolfriend, and... 237 00:20:56,647 --> 00:20:57,486 Emma ! 238 00:20:57,587 --> 00:21:01,987 ..my father. But my brothers will be arriving for Christmas. 239 00:21:02,207 --> 00:21:05,207 Emma ! 240 00:21:05,847 --> 00:21:08,847 These costings for Christmas. You wish to bankrupt me ? 241 00:21:09,887 --> 00:21:12,366 Who is that, over there ? 242 00:21:12,367 --> 00:21:15,367 The new kitchen maid I spoke to you about. 243 00:21:15,887 --> 00:21:18,887 Come, come ! Let's see you, come here ! 244 00:21:20,487 --> 00:21:24,487 What is your name, little one ? Prudence Beresford. 245 00:21:27,447 --> 00:21:29,126 She's got good arms. 246 00:21:29,127 --> 00:21:32,127 Well then... 247 00:21:34,367 --> 00:21:37,367 Remember two things : I abhor waste.. 248 00:21:38,607 --> 00:21:41,607 ..and a squire is not necessarily rich. 249 00:21:41,687 --> 00:21:44,687 I live here because I want to, not because I have the means. 250 00:21:46,127 --> 00:21:48,606 Now go ! Don't bother me further. 251 00:21:48,607 --> 00:21:53,607 Don't forget that a good cod does as well as a turbot. 252 00:21:55,687 --> 00:21:58,086 I am sorry. 253 00:21:58,087 --> 00:22:00,046 Emma ! 254 00:22:00,047 --> 00:22:01,766 Come here, Emma ! 255 00:22:01,767 --> 00:22:03,486 Excuse me. 256 00:22:03,487 --> 00:22:06,487 I must go. Your room is at the top - on the left. 257 00:22:06,767 --> 00:22:08,486 The key is in the door. 258 00:22:08,487 --> 00:22:11,487 My own children have become my enemies ! 259 00:22:14,207 --> 00:22:17,207 < Tell that idiot of a doctor that last medicine.. 260 00:22:18,647 --> 00:22:19,806 < ..is no good at all ! 261 00:22:19,807 --> 00:22:22,807 < Are you sure ? -< Of course ! 262 00:22:59,367 --> 00:23:02,367 Who is there ? 263 00:23:25,207 --> 00:23:28,207 You must be the niece... of Mlle. Charpentier. 264 00:23:28,327 --> 00:23:31,327 Yes, I am Alexie Charpentier. 265 00:23:32,687 --> 00:23:35,687 And you, you are Mary Poppins ! - Ah ! Mary Poppins ! 266 00:23:36,127 --> 00:23:39,127 You aren't my idea of a maid working for my grandfather. 267 00:23:39,807 --> 00:23:43,807 You aren't my idea of the niece of Mlle. Charpentier. 268 00:23:44,367 --> 00:23:47,367 Mme. Clairin is waiting for you in the kitchen. 269 00:23:47,387 --> 00:23:49,406 Then let me change, and I'll be right there. 270 00:23:49,407 --> 00:23:52,086 I'll wait for you on the landing. 271 00:23:52,087 --> 00:23:53,006 Emma ! 272 00:23:53,007 --> 00:23:57,007 Always he shouts after my aunt. Yet she's the only one who loves him. 273 00:23:57,727 --> 00:24:00,727 Don't the others love him ? - They are like vultures. 274 00:24:01,327 --> 00:24:03,126 They are waiting for him to die. 275 00:24:03,127 --> 00:24:05,846 Who are the vultures ? - My uncles. 276 00:24:05,847 --> 00:24:10,847 Uncle Raphael. He is weird. A banker, and a gambler. 277 00:24:11,507 --> 00:24:14,086 He lives in Lyon, with his wife. 278 00:24:14,087 --> 00:24:17,046 He likes only money and drugs. 279 00:24:17,047 --> 00:24:19,126 Uncle Augustin lives on an island. 280 00:24:19,127 --> 00:24:22,127 He has abandoned sculpting to spend his time hunting. 281 00:24:23,527 --> 00:24:25,926 The more he kills, the better he likes it. 282 00:24:25,927 --> 00:24:28,846 And who looks after you ? - My father. 283 00:24:28,847 --> 00:24:31,486 My mother is dead. The family consider him.. 284 00:24:31,487 --> 00:24:34,046 ..a failure. They call him ''Frederick the layabout'' 285 00:24:34,047 --> 00:24:36,966 But I don't care. He is a good guitarist. 286 00:24:36,967 --> 00:24:37,926 It's through there. 287 00:24:37,927 --> 00:24:40,927 And there was Uncle Edmond, who died in the War. 288 00:24:41,327 --> 00:24:44,327 We're nearly there, come along. 289 00:24:50,807 --> 00:24:52,886 She's already had a tipple. 290 00:24:52,887 --> 00:24:54,646 A little one for the road,.. 291 00:24:54,647 --> 00:24:57,647 ..Mme. Clairin ? - Weather as it is, it helps. 292 00:24:58,447 --> 00:25:00,566 I've been waiting for you. 293 00:25:00,567 --> 00:25:02,846 I'll show you where the things are. 294 00:25:02,847 --> 00:25:04,966 It won't take a moment. 295 00:25:04,967 --> 00:25:07,967 In the scullery, there is everything you need for lunch. 296 00:25:12,127 --> 00:25:14,566 The stove is burning well. I lit it.. 297 00:25:14,567 --> 00:25:17,206 ..this morning. You need to keep it stoked up. 298 00:25:17,207 --> 00:25:19,526 It can get cold in the house. 299 00:25:19,527 --> 00:25:22,006 I have made some coffee. 300 00:25:22,007 --> 00:25:24,006 So, there you are. Goodbye ! 301 00:25:24,007 --> 00:25:26,326 Take care, grandfather hates.. 302 00:25:26,327 --> 00:25:30,327 ..getting his meals late. Lunch is at noon, Mme. Poppins. 303 00:26:16,327 --> 00:26:20,327 Come on, or we'll be late ! 304 00:26:34,027 --> 00:26:36,946 < Now who's imagining things ? -< Papa, you exaggerate. 305 00:26:36,947 --> 00:26:40,526 < I know what I'm talking about. My sickness, two weeks ago,.. 306 00:26:40,527 --> 00:26:43,206 ..your brothers had something to do with that. 307 00:26:43,207 --> 00:26:44,806 What will you suggest next ? 308 00:26:44,807 --> 00:26:47,646 < It was only indigestion. 309 00:26:47,647 --> 00:26:49,846 < Now sit back and calm yourself. 310 00:26:49,847 --> 00:26:52,326 < You talk to me about indigestion ! 311 00:26:52,327 --> 00:26:55,327 Even your precious Dr. Lagarde was suspicious. 312 00:26:56,047 --> 00:26:59,047 But you forget one thing. 313 00:26:59,247 --> 00:27:02,247 Misers always die last. 314 00:27:09,127 --> 00:27:10,966 The dumb waiter doesn't work. 315 00:27:10,967 --> 00:27:12,486 The lead weights have fallen off. 316 00:27:12,487 --> 00:27:15,166 Can it be repaired ? - I don't think so. 317 00:27:15,167 --> 00:27:18,167 Let us help you. There are only 30 seconds to midday. 318 00:27:19,447 --> 00:27:22,447 Mme. Poppins, Valerie, my best friend. 319 00:27:22,527 --> 00:27:25,527 Enchanted. Away you go. I'll follow. 320 00:27:53,967 --> 00:27:56,967 This is good, the soup. 321 00:27:59,807 --> 00:28:02,807 It is good, really good, the soup. 322 00:28:53,447 --> 00:28:56,447 ''A sharp curve...'' 323 00:28:56,487 --> 00:28:58,886 Yes ? < Prudence Beresford ! 324 00:28:58,887 --> 00:29:01,887 Finally ! Where are you ? 325 00:29:02,207 --> 00:29:04,686 Figure it out for yourself... 326 00:29:04,687 --> 00:29:05,646 Where are you ? 327 00:29:05,647 --> 00:29:08,647 You haven't launched yourself into that ridiculous mystery.. 328 00:29:09,127 --> 00:29:11,806 ..of the railway murder ? 329 00:29:11,807 --> 00:29:15,207 I have discovered a sudden passion for snow-shoes. 330 00:29:15,647 --> 00:29:17,526 I am practising on them. 331 00:29:17,527 --> 00:29:20,527 < What ? - Yes, I've never dared confess,.. 332 00:29:21,487 --> 00:29:24,126 ..but I have long dreamed of... 333 00:29:24,127 --> 00:29:27,127 ..walking alone in the snow, wearing snow-shoes. 334 00:29:28,927 --> 00:29:30,126 When are you coming back ? 335 00:29:30,127 --> 00:29:32,046 I'll be back... 336 00:29:32,047 --> 00:29:34,486 I'll be back... I don't know. 337 00:29:34,487 --> 00:29:36,526 Make it within 5 days, it's Christmas ! 338 00:29:36,527 --> 00:29:39,527 Marie-Christine and her family will be spending it with us. 339 00:29:40,647 --> 00:29:41,926 Is it Christmas already ? 340 00:29:41,927 --> 00:29:44,526 But yes ! It comes round once a year. 341 00:29:44,527 --> 00:29:47,527 How could I forget ? 342 00:29:48,327 --> 00:29:52,327 Christmas, another chance to enjoy the grandchildren ! 343 00:30:34,687 --> 00:30:37,166 You are enjoying yourselves. 344 00:30:37,167 --> 00:30:40,167 We are off to the museum. - The museum ? 345 00:30:40,327 --> 00:30:43,327 The red house, where grandfather keeps his treasures. 346 00:30:43,847 --> 00:30:46,526 It's beyond the rock over there. 347 00:30:46,527 --> 00:30:47,846 Come on, it's through here ! 348 00:31:19,047 --> 00:31:22,047 This way. 349 00:31:24,047 --> 00:31:27,047 < Oh ! It's freezing in here ! 350 00:32:04,000 --> 00:32:07,000 Remember to lock up, because of the wild boar. 351 00:32:23,000 --> 00:32:26,000 You are not allowed here. This is the squire's museum. 352 00:33:15,000 --> 00:33:16,500 Sit !! 353 00:34:55,000 --> 00:34:57,700 *This is the answerphone of Babette Boutiti. 354 00:34:58,000 --> 00:35:00,200 *I am hunting butterflies in Guiana. 355 00:35:00,207 --> 00:35:02,806 *Leave your message after the ''pop''. 356 00:35:02,807 --> 00:35:03,886 *Pop ! 357 00:35:03,887 --> 00:35:06,887 Aunt Babette, I have just discovered.. 358 00:35:07,727 --> 00:35:10,686 ..the body of a strangled woman.. 359 00:35:10,687 --> 00:35:13,687 ..wearing a fur coat, with a red glove.. 360 00:35:13,847 --> 00:35:16,086 ..in a large sarcophagus. 361 00:35:16,087 --> 00:35:19,087 There you are. I will tell you more when you return. 362 00:35:19,487 --> 00:35:22,487 Good, that's all for now. 363 00:35:40,167 --> 00:35:42,126 Belisaire ! 364 00:35:42,927 --> 00:35:45,406 Rotten sod ! 365 00:35:47,687 --> 00:35:49,606 Is it still Christmas ? 366 00:36:13,967 --> 00:36:16,967 I've never seen that woman before, I'm certain. 367 00:36:17,487 --> 00:36:20,487 Are you alright ? You look very pale, Emma. 368 00:36:21,687 --> 00:36:23,886 It will pass. I'm okay, thank you. 369 00:36:23,887 --> 00:36:25,966 There we are. Now breathe slowly. 370 00:36:25,967 --> 00:36:27,606 Thank you for being here, Francois. 371 00:36:27,607 --> 00:36:30,086 Whenever you need me. 372 00:36:30,087 --> 00:36:31,886 Breathe slowly. 373 00:36:31,887 --> 00:36:33,526 < Inspector Blache,.. 374 00:36:33,527 --> 00:36:36,326 ..Dr Lagarde. - Hello. 375 00:36:36,327 --> 00:36:38,126 Doctor. 376 00:36:38,127 --> 00:36:40,566 This is unbelievable ! 377 00:36:40,567 --> 00:36:43,567 The sarcophagus is from the 18th dynasty ! 378 00:36:44,207 --> 00:36:47,207 I bought it more than 50 years ago ! 379 00:36:48,047 --> 00:36:50,046 Now it's in pieces ! 380 00:36:50,047 --> 00:36:54,047 All because a stupid creature decided to be killed inside ! 381 00:36:54,607 --> 00:36:56,046 It is appalling. 382 00:36:58,607 --> 00:37:01,086 M. Charpentier, go back to the chateau. 383 00:37:01,087 --> 00:37:03,766 Give him a whisky, I will meet with you later. 384 00:37:08,047 --> 00:37:10,166 Many of my elderly patients.. 385 00:37:10,167 --> 00:37:13,167 ..play the invalid to oppress their relatives. 386 00:37:14,007 --> 00:37:17,006 Inspector, who discovered the body ? 387 00:37:17,007 --> 00:37:19,366 The new employee. 388 00:37:19,367 --> 00:37:22,046 You went to the ''museum''.. 389 00:37:22,047 --> 00:37:25,047 ..and forced the lid off the sarcophagus. 390 00:37:25,887 --> 00:37:27,006 Yes. 391 00:37:27,007 --> 00:37:30,007 For what reason ? - I was looking for a body. 392 00:37:31,407 --> 00:37:34,407 A body ? So you knew there was one there ? 393 00:37:35,687 --> 00:37:38,687 Yes, of course. - Furthermore, I will explain. 394 00:37:40,967 --> 00:37:45,967 It all started with Aunt Babette before she left to hunt butterflies... 395 00:38:10,807 --> 00:38:13,807 I cannot tell you. Stone dead ! 396 00:38:14,047 --> 00:38:17,047 And that made me... 397 00:38:19,547 --> 00:38:24,000 You expect me to swallow that ? - You can check. 398 00:38:24,247 --> 00:38:27,947 My aunt made a statement to the railway authorities in Andelieux. 399 00:38:28,967 --> 00:38:30,806 Your name, if you please ? 400 00:38:30,907 --> 00:38:33,807 Mme. Beresford. The Widow Beresford. 401 00:38:35,847 --> 00:38:38,847 Perhaps you are related to Colonel Beresford ? 402 00:38:39,407 --> 00:38:42,407 It is a common name. There are plenty in this region. 403 00:38:43,327 --> 00:38:46,327 Excuse me, I would like to get back to work. 404 00:38:47,887 --> 00:38:50,887 I'm sorry, I should have recognised Mme. Beresford. 405 00:38:51,607 --> 00:38:54,566 But I saw her for a very short time. 406 00:38:54,567 --> 00:38:56,366 She said she was there to practise using snow-shoes ! 407 00:38:56,367 --> 00:38:58,366 I'll give her snow-shoes, just you see ! 408 00:38:58,367 --> 00:39:01,367 What'd you say ? - Nothing. Speaking to myself. 409 00:39:02,207 --> 00:39:06,707 She must stop this farce ! - She could be of help to us. 410 00:39:07,567 --> 00:39:12,567 If you accompany me, you'll have to use another name. 411 00:39:13,087 --> 00:39:14,846 And why ? 412 00:39:14,947 --> 00:39:16,447 To protect her. There has been a murder there. 413 00:39:16,807 --> 00:39:18,806 And I forgot to tell you... 414 00:39:19,207 --> 00:39:21,566 Mme. Prudence is passing herself off as a widow. 415 00:39:22,887 --> 00:39:25,087 Mme. Prudence, a widow ?! 416 00:39:25,767 --> 00:39:29,367 Ha-ha-ha ! Fancy her thinking of that one ! 417 00:39:30,047 --> 00:39:32,766 Enough. I suggest we talk indoors. 418 00:39:33,267 --> 00:39:36,267 The death happened when ? - Pathologist says 2 weeks ago. 419 00:39:36,367 --> 00:39:39,367 But, according to your aunt, she was killed on 28 November.. 420 00:39:40,047 --> 00:39:44,447 ..on the Morgan-Bellefond express train. 421 00:39:45,007 --> 00:39:48,807 Then the corpse was dragged to and hidden in the sarcophagus. 422 00:39:49,007 --> 00:39:52,007 But what led the killer to open the sarcophagus ? 423 00:39:53,447 --> 00:39:55,486 ''You believe only what you see.'' 424 00:39:55,487 --> 00:39:58,006 ''That is why you are led astray so often.'' 425 00:39:58,007 --> 00:40:00,046 ''Use your imagination.'' 426 00:40:00,047 --> 00:40:03,047 There is no evidence any of the Charpentiers are involved. 427 00:40:04,407 --> 00:40:08,407 "Except that I found the body on their property.'' 428 00:40:11,927 --> 00:40:13,326 < Colonel ? 429 00:40:13,327 --> 00:40:16,327 Colonel, Colonel... - Yes... as I was saying... 430 00:40:18,487 --> 00:40:21,487 I was listening to you. What do you know about them ? 431 00:40:22,047 --> 00:40:27,047 You will meet them. They are all at the chateau... 432 00:40:35,067 --> 00:40:38,367 A lovers' quarrel turned out badly. And there you are ! 433 00:40:39,007 --> 00:40:41,446 I will speak to Inspector Blavache. 434 00:40:42,047 --> 00:40:43,000 - Blache, Monsieur. 435 00:40:43,687 --> 00:40:46,687 I will tell Blavache none of us have ever seen this woman. 436 00:40:47,087 --> 00:40:49,366 And you will all say the same. 437 00:40:49,367 --> 00:40:51,086 Are you sure, father ? 438 00:40:51,087 --> 00:40:54,087 Perhaps she was one of Raphael's little friends. 439 00:40:56,487 --> 00:40:59,487 That's some joke, that is ! 440 00:41:03,887 --> 00:41:06,887 That must be Dr Lagarde. Let him in. 441 00:41:09,607 --> 00:41:12,607 Still looking for the fountain of youth, father ? 442 00:41:15,007 --> 00:41:17,246 That isn't funny, Augustin. 443 00:41:17,247 --> 00:41:19,366 Lean on me, father. 444 00:41:19,367 --> 00:41:22,206 I will outlast all of you.. 445 00:41:22,207 --> 00:41:25,207 ..just to protect my property from your predatory grasp. 446 00:41:30,667 --> 00:41:31,926 The police.. 447 00:41:31,927 --> 00:41:34,766 ..will soon be here to interrogate you. 448 00:41:34,767 --> 00:41:37,767 You'd better prepare your alibis ! 449 00:41:45,607 --> 00:41:48,607 Why did you open the sarcophagus ? 450 00:41:49,527 --> 00:41:52,527 I saw the cover had been lifted recently. 451 00:41:52,607 --> 00:41:54,926 I was overcome with curiosity. 452 00:41:54,927 --> 00:41:57,927 I have always been a frustrated archaeologist. 453 00:41:58,767 --> 00:42:00,966 What more can you tell us ? 454 00:42:00,967 --> 00:42:04,967 I was, how shall I say,... overcome by the smell. 455 00:42:05,327 --> 00:42:08,327 That sickly smell of death. 456 00:42:08,407 --> 00:42:11,407 That's all. I don't wish to go into details. 457 00:42:13,927 --> 00:42:17,927 Isn't it horrifying ?! That poor woman coming here to die. 458 00:42:18,487 --> 00:42:21,086 < Forget it. We didn't know her. 459 00:42:21,087 --> 00:42:24,087 She came here by chance. - How do you know ? 460 00:42:24,687 --> 00:42:27,086 If it really was by chance, why is Emma.. 461 00:42:27,087 --> 00:42:29,766 ..so troubled ? -< Why are you surprised.. 462 00:42:29,767 --> 00:42:31,686 ..that a murder should trouble her ? 463 00:42:31,687 --> 00:42:33,406 He thinks like an artist. 464 00:42:33,407 --> 00:42:36,407 Why do you always prod people as if they were animals ? 465 00:42:39,807 --> 00:42:41,206 That is enough ! 466 00:42:41,207 --> 00:42:42,846 This is not the time for bickering! 467 00:42:42,847 --> 00:42:45,847 < The police believe the crime took place on 28 November. 468 00:42:47,047 --> 00:42:50,047 < How did they learn that so fast ? -< It's not the 19th Century. 469 00:42:51,927 --> 00:42:53,726 < That's not much to brag about. 470 00:42:53,727 --> 00:42:56,727 < Friday the 28th. It was the day Emma invited us here. 471 00:42:57,367 --> 00:43:00,367 < So what ? -< By that night, we were all here. 472 00:43:01,127 --> 00:43:03,766 < And ? -< It will interest the police. 473 00:43:03,767 --> 00:43:05,846 < What about the theory of a lovers' quarrel ? 474 00:43:05,847 --> 00:43:08,847 < Not the 1st time Papa's museum was used as a meeting place. 475 00:43:09,207 --> 00:43:12,207 < Lovers meeting in Papa's museum ?! 476 00:43:12,527 --> 00:43:15,527 I have a problem imagining that.. 477 00:43:15,727 --> 00:43:18,727 ..it's like the inside of a glacier during Winter. 478 00:43:24,927 --> 00:43:26,726 Your daughter is lovely. 479 00:43:26,727 --> 00:43:29,727 She, and her friend, are are excited by this crime. 480 00:43:29,847 --> 00:43:31,846 It's their age. 481 00:43:31,847 --> 00:43:34,847 Papa, the Inspector is here with another gentleman. 482 00:43:36,927 --> 00:43:39,927 Our new employee, Mme. Beresford, recently arrived. 483 00:43:41,447 --> 00:43:44,086 The Widow Beresford, I presume ? 484 00:43:48,407 --> 00:43:51,086 Pardon me, I have a terrible cold. 485 00:43:51,087 --> 00:43:53,966 We need you to attend the police station. 486 00:43:55,407 --> 00:44:02,407 One of my officers will accompany you, if you are well enough. 487 00:44:02,527 --> 00:44:05,727 Ask for me, my name is ''Colonel Snowshoe'' ! 488 00:44:05,807 --> 00:44:07,886 Good, we would first like.. 489 00:44:07,887 --> 00:44:09,486 ..to interrogate your brothers. 490 00:44:09,487 --> 00:44:11,086 You are wasting your time, Inspector. 491 00:44:11,087 --> 00:44:14,087 If that woman had ever stayed here, my father or I.. 492 00:44:15,567 --> 00:44:17,006 ..would have recognised her. 493 00:44:17,007 --> 00:44:20,007 < Everything seems to suggest.. 494 00:44:20,887 --> 00:44:23,887 <..that the victim was not from around here. 495 00:44:24,007 --> 00:44:27,007 < She was a stranger. - A Russian ? 496 00:44:27,527 --> 00:44:30,527 < Girls, this is not a conversation for your ears. 497 00:44:31,287 --> 00:44:34,287 Mme. Beresford, conduct the gentlemen upstairs. 498 00:44:35,727 --> 00:44:37,606 Very well. 499 00:44:37,607 --> 00:44:39,686 I am going to see my father. 500 00:44:39,687 --> 00:44:42,687 Gentlemen, I will show the way. 501 00:44:48,367 --> 00:44:50,726 So, I am dead, am I? 502 00:44:53,807 --> 00:44:55,966 Francois ! 503 00:44:55,967 --> 00:45:02,467 Your father is in good form. The murder has envigorated him. 504 00:45:14,767 --> 00:45:17,767 What is it, Emma ? 505 00:45:19,647 --> 00:45:21,286 What is wrong ? 506 00:45:21,287 --> 00:45:24,046 I think there is a criminal in the family. 507 00:45:24,047 --> 00:45:26,846 Why do you think that ? 508 00:45:26,847 --> 00:45:29,126 Because of Martina,.. 509 00:45:29,127 --> 00:45:32,127 ..my brother Edmond's wife, who was meant to come here. 510 00:45:32,807 --> 00:45:35,807 Ah yes, is there any news ? - No, that's just it. 511 00:45:36,407 --> 00:45:39,407 The police think that the victim comes from the East. 512 00:45:40,007 --> 00:45:43,007 And you think the dead woman might be Martina ? - Yes. 513 00:45:43,407 --> 00:45:46,407 I am frightened of telling the police about this. 514 00:45:49,327 --> 00:45:54,327 Have you spoken to your brothers ? No, I can't judge their reaction. 515 00:45:56,167 --> 00:45:58,326 Emma, I know you. 516 00:45:58,327 --> 00:46:02,000 If you don't speak of your fears, you will make yourself sick. 517 00:46:02,007 --> 00:46:05,007 Then I should go to the police ? - Yes. 518 00:46:06,687 --> 00:46:08,687 Gentlemen, this way. 519 00:46:08,807 --> 00:46:10,206 May I take your coat ? 520 00:46:10,207 --> 00:46:12,326 Never during an enquiry. 521 00:46:12,327 --> 00:46:14,846 Thank you, madam. - I shall stay. 522 00:46:14,850 --> 00:46:17,847 You will leave, madam. 523 00:46:17,900 --> 00:46:19,166 You stinker ! 524 00:46:19,167 --> 00:46:22,086 Without me, you are nothing. 525 00:46:22,547 --> 00:46:25,047 Nothing ! Nothing at all ! 526 00:46:34,527 --> 00:46:38,527 A moment, let me think. When did you arrive ? 527 00:46:39,887 --> 00:46:42,887 A little over three weeks ago to see my father. 528 00:46:44,747 --> 00:46:47,247 You live away from here ? - Yes, I spend my time in Paris. 529 00:46:47,927 --> 00:46:50,927 I stayed here for two days, at the end of November. 530 00:46:53,327 --> 00:46:57,327 < She was killed, when ? -< End of November. 531 00:47:00,687 --> 00:47:02,786 You are married ? Your wife.. 532 00:47:02,787 --> 00:47:04,786 ..is not here with you ? 533 00:47:05,687 --> 00:47:07,000 She hates Winter in France. 534 00:47:07,027 --> 00:47:08,046 < Do you come here often ? 535 00:47:08,647 --> 00:47:10,466 < From time to time, to see my sister. 536 00:47:10,767 --> 00:47:14,567 The last time, when was that ? - Three weeks ago. 537 00:47:14,627 --> 00:47:16,646 The end of November ? 538 00:47:16,847 --> 00:47:18,847 Yes, end of November. 539 00:47:20,007 --> 00:47:22,507 How do you get on with your father ? 540 00:47:22,967 --> 00:47:26,267 None of his children get on with my father. 541 00:47:26,867 --> 00:47:29,867 Even Emma has problems. He is such a skinflint. 542 00:47:29,947 --> 00:47:32,647 It was my grandfather's fault. 543 00:47:35,047 --> 00:47:36,726 Why ? 544 00:47:37,327 --> 00:47:39,927 He hated Papa, and took his revenge in his Will. 545 00:47:40,367 --> 00:47:43,367 Emma, my brothers and I share ownership of the fortune. 546 00:47:43,567 --> 00:47:46,286 He only retains the right to live here. 547 00:47:46,287 --> 00:47:50,287 He cannot sell anything, decide anything, and it drives him crazy ! 548 00:47:52,067 --> 00:47:55,867 You come here often ? - Sometimes, with my daughter. 549 00:47:55,887 --> 00:47:59,887 < Why were you all gathered here at the end of November ? 550 00:48:00,127 --> 00:48:02,827 No reason. It was just a family get-together. 551 00:48:04,007 --> 00:48:05,507 Where everyone hates each other... 552 00:48:06,867 --> 00:48:10,367 Police enter my house without asking the head of family ! 553 00:48:12,247 --> 00:48:13,606 Who is the head here ? 554 00:48:15,007 --> 00:48:16,000 < Answer me ! 555 00:48:16,027 --> 00:48:18,286 < Answer me ! 556 00:48:20,247 --> 00:48:22,447 < You are, but we wanted to avoid tiring you. 557 00:48:23,207 --> 00:48:24,926 Dr Lagarde.. 558 00:48:24,927 --> 00:48:26,206 ..said... - Him. If I listened to him,.. 559 00:48:26,207 --> 00:48:28,126 ..I would never get out of bed. 560 00:48:29,127 --> 00:48:34,127 The prescription he signed, gave me indigestion for 3 weeks ! 561 00:48:34,247 --> 00:48:36,406 He almost.. 562 00:48:36,407 --> 00:48:37,966 ..poisoned me ! 563 00:48:37,967 --> 00:48:40,967 I must admit that was when we still had the old cook. 564 00:48:41,487 --> 00:48:44,487 This new one, here now, she is a pearl ! 565 00:48:44,967 --> 00:48:48,967 Well rounded.. like an eclair ! 566 00:48:49,047 --> 00:48:52,047 < Rounded like an eclair ? - Ssh ! 567 00:48:52,167 --> 00:48:55,867 Haven't you noticed ? - I haven't got that near. 568 00:48:56,207 --> 00:48:57,206 Well, then... 569 00:48:57,207 --> 00:48:59,406 What are your assumptions about this case ? 570 00:48:59,407 --> 00:49:02,407 It's a little early to talk about assumptions,.. 571 00:49:02,927 --> 00:49:05,927 ..especially since we don't yet know who the woman was. 572 00:49:06,247 --> 00:49:09,247 A stranger, it seems. 573 00:49:10,887 --> 00:49:13,866 Perhaps a conquest of my son, Augustin. 574 00:49:14,067 --> 00:49:15,526 He says he didn't recognise her. 575 00:49:15,627 --> 00:49:18,126 That means nothing. It's got him jittery. 576 00:49:18,127 --> 00:49:21,127 My sons are all cowards, and liars,.. 577 00:49:21,927 --> 00:49:24,927 ..a bunch of vultures who are waiting for my death. 578 00:49:26,967 --> 00:49:29,967 I'm starting to feel very ill. Emma ! 579 00:49:30,007 --> 00:49:32,006 I must have a lie-down. 580 00:49:36,967 --> 00:49:39,467 He doesn't feel much love for his children ! 581 00:49:40,767 --> 00:49:44,367 He hasn't forgiven them for disinheriting him. 582 00:49:45,687 --> 00:49:48,687 Au revoir, Colonel. 583 00:50:00,007 --> 00:50:01,607 What is that ? 584 00:50:26,087 --> 00:50:29,587 Belisaire, don't be an idiot ! 585 00:50:29,687 --> 00:50:31,486 I didn't see anything ! 586 00:50:32,887 --> 00:50:34,206 Come on, open the boot ! 587 00:50:34,407 --> 00:50:37,407 I am dead. A dead man can't open boots for his widow. 588 00:50:38,007 --> 00:50:40,566 I said it on the spur of the moment, I was joking. 589 00:50:41,167 --> 00:50:43,567 The fact you said it makes it other than a joke. 590 00:50:43,927 --> 00:50:46,427 Alright, I said it. Now open the boot ! Belisaire ! 591 00:50:48,227 --> 00:50:50,827 The soon-to-be widower Belisaire ! 592 00:50:51,747 --> 00:50:55,247 Come on ! Oh, this can't be happening ! 593 00:50:56,007 --> 00:50:57,126 Belisaire... 594 00:50:57,127 --> 00:51:00,127 You are offended because I was right. It's as simple as that. 595 00:51:06,487 --> 00:51:09,487 Belisaire, enough is enough, let me out. 596 00:51:15,087 --> 00:51:16,766 Let me out ! 597 00:51:18,807 --> 00:51:19,946 What has happened ? 598 00:51:20,247 --> 00:51:23,447 The Spotted Leopard ! 599 00:51:23,887 --> 00:51:24,866 Belisaire ? 600 00:51:26,367 --> 00:51:28,367 You found the body, and completed your mission. 601 00:51:28,767 --> 00:51:30,766 Now, you can return home. 602 00:51:31,000 --> 00:51:32,726 Why ? 603 00:51:32,727 --> 00:51:35,000 I'm tired of seeing my wife disguised as a kitchen maid ! 604 00:51:35,167 --> 00:51:36,926 As to your other activities, I hold my tongue. 605 00:51:36,927 --> 00:51:39,927 Always cooking for others, but never for me. 606 00:51:40,000 --> 00:51:44,300 You forget my chicken in salt. - That was ten years ago. 607 00:51:46,000 --> 00:51:49,500 And, most important, I must repeat - Christmas is here.. 608 00:51:50,000 --> 00:51:53,900 The children want to hear the chiming of the bells. 609 00:51:54,000 --> 00:51:55,900 Comes from their Swiss side, without a doubt. 610 00:51:56,100 --> 00:51:58,700 I'd like to take a look at the autopsy photos. 611 00:52:00,600 --> 00:52:03,100 This is a dancer. - Pardon ? 612 00:52:03,250 --> 00:52:05,750 The victim was a dancer. Look at her feet. 613 00:52:06,100 --> 00:52:10,000 See if any dancers recognise her, but not classical. 614 00:52:10,250 --> 00:52:12,500 Why not classical ? 615 00:52:12,750 --> 00:52:15,600 A classical dancer's feet would show more punishment. 616 00:52:15,800 --> 00:52:19,300 Impressive, Holmes. - Elementary, my dear Watson. 617 00:52:21,000 --> 00:52:23,700 Now, there is no question of me being taken off the case. 618 00:52:23,800 --> 00:52:26,700 Nor away from the fancy men who gather round you. 619 00:52:26,800 --> 00:52:29,500 Oh ! You are jealous ? 620 00:52:31,500 --> 00:52:33,000 I think that's sweet ! 621 00:52:35,000 --> 00:52:37,750 Well, now, my dear Colonel Beresford,... 622 00:52:37,800 --> 00:52:41,000 ..while this was delightful, I must return to my kitchen. 623 00:52:44,000 --> 00:52:46,000 You forget one thing :.. 624 00:52:46,450 --> 00:52:50,000 having found the body puts you in a difficult position. 625 00:52:51,000 --> 00:52:54,250 You are my number one suspect. I must hold you in custody. 626 00:52:56,200 --> 00:52:58,750 I will notify your employer. 627 00:52:59,000 --> 00:53:00,750 In custody - throughout the night ? 628 00:53:01,200 --> 00:53:03,700 Yes. But not in a police cell. 629 00:53:04,100 --> 00:53:08,100 You always yield to temptation ! 630 00:53:09,000 --> 00:53:11,500 Especially when driven by envy. 631 00:53:56,200 --> 00:53:57,800 Ah, there you are. 632 00:53:58,000 --> 00:54:01,400 You free from police custody ? How was it ? 633 00:54:02,000 --> 00:54:06,200 It was fine. But I never thought I'd be held like that. 634 00:54:08,000 --> 00:54:10,300 What is this place ? - My old workshop. 635 00:54:30,000 --> 00:54:32,500 Nothing has been finished here for two years. 636 00:54:33,000 --> 00:54:35,000 You abandoned it just on a whim ? 637 00:54:35,300 --> 00:54:38,500 No. I felt the need to see some Mediterranean light. 638 00:54:44,000 --> 00:54:45,750 You will wait for me ? 639 00:54:46,367 --> 00:54:49,367 What is it this time ? 640 00:54:56,327 --> 00:54:59,327 < I must talk with you. -< Have you heard anything ? 641 00:54:59,807 --> 00:55:02,807 < I think that the victim might be Martina. 642 00:55:03,927 --> 00:55:06,927 Martina ? - Her telegram was so weird. 643 00:55:07,407 --> 00:55:09,966 After she'd already written that she was coming. 644 00:55:10,067 --> 00:55:13,367 I should tell the police. - It's nothing to do with them. 645 00:55:15,287 --> 00:55:17,887 < I am worried. I don't know what to do. 646 00:55:18,007 --> 00:55:21,007 Just say nothing. Do nothing. 647 00:55:30,367 --> 00:55:32,367 I was told you have a fondness for painting women. 648 00:55:32,927 --> 00:55:36,927 No. I don't paint women, I acquire them. 649 00:55:38,367 --> 00:55:42,367 It is the sea I paint. The stones, the light. 650 00:55:44,047 --> 00:55:45,747 But not people. - No, not people. 651 00:55:47,447 --> 00:55:49,847 They are too complicated. - Mm... 652 00:55:51,687 --> 00:55:54,687 I don't understand why a woman like you is here. 653 00:55:55,447 --> 00:55:57,406 What do you want me to say ? 654 00:55:57,407 --> 00:55:59,526 Say nothing at all. 655 00:55:59,527 --> 00:56:01,246 So many prejudices, for an artist ! 656 00:56:01,247 --> 00:56:04,247 Do you like making beds, working in the kitchen ? 657 00:56:05,087 --> 00:56:07,887 Well enough. Cooking requires imagination.. 658 00:56:07,888 --> 00:56:11,287 ..and the rest of it satisfies my taste for order. 659 00:56:13,047 --> 00:56:16,047 I would like to paint your portrait, one day. 660 00:56:22,227 --> 00:56:26,706 There she is ! A spy ! Grab her ! 661 00:56:26,767 --> 00:56:28,767 A SPY ! 662 00:56:28,807 --> 00:56:31,726 Tie her to the pole ! Dirty spy ! Quickly ! 663 00:56:32,407 --> 00:56:35,407 SPY ! 664 00:56:56,127 --> 00:56:58,127 Aim for the heart ! 665 00:56:58,727 --> 00:57:01,526 Die ! Die, you bitch ! 666 00:57:02,567 --> 00:57:03,726 Aim ! 667 00:57:05,727 --> 00:57:07,446 Fire ! 668 00:57:25,447 --> 00:57:27,447 Thank you for coming. 669 00:57:31,807 --> 00:57:34,726 Excuse me, I am moved... 670 00:57:34,727 --> 00:57:38,727 because I haven't entered here since the death of Edmond. 671 00:57:40,927 --> 00:57:44,927 He wrote to me, just before his death. 672 00:57:45,007 --> 00:57:48,407 He had met a Russian woman, Martina. They were getting married. 673 00:57:49,807 --> 00:57:54,807 I learnt of his death just after receiving the letter. 674 00:57:54,887 --> 00:57:57,766 I didn't know what became of this Martina. 675 00:57:57,767 --> 00:58:00,767 I only knew her first name, and I forgot about her. 676 00:58:02,527 --> 00:58:05,527 But, a few weeks ago, I received a letter from Lyon.. 677 00:58:06,847 --> 00:58:09,847 ..signed Martina Charpentier. 678 00:58:12,447 --> 00:58:15,847 ''... I hope this letter does not distress you. 679 00:58:16,447 --> 00:58:19,447 ''I don't even know if Edmond told you of our marriage. 680 00:58:20,287 --> 00:58:23,287 ''After his death, I found it too hard to write to you. 681 00:58:23,927 --> 00:58:26,927 ''I have rebuilt my life, but my situation has changed. 682 00:58:27,807 --> 00:58:30,807 ''I am writing to you because of my son. 683 00:58:31,047 --> 00:58:36,347 ''He is your brother's child. I don't have the means to raise him. 684 00:58:36,567 --> 00:58:39,406 ''I am spending a few weeks in France. 685 00:58:39,407 --> 00:58:42,407 ''May we meet up ? I don't want to cause you pain.'' 686 00:58:44,047 --> 00:58:46,926 I loved Edmond very much. 687 00:58:46,927 --> 00:58:51,927 He was my favourite brother. Then, the idea he had a son... 688 00:58:52,287 --> 00:58:55,287 I invited this woman to our house, for the end of November. 689 00:58:55,727 --> 00:58:58,727 So she could meet the family ? - Yes, that's right. 690 00:58:59,167 --> 00:59:01,846 I just wanted them all to meet her. 691 00:59:01,847 --> 00:59:04,847 Augustin didn't take the matter seriously. 692 00:59:05,287 --> 00:59:07,286 Raphael was very sceptical. 693 00:59:07,287 --> 00:59:10,287 Frederick was the only one to believe it, with me. 694 00:59:10,527 --> 00:59:12,806 Then what happened ? 695 00:59:15,007 --> 00:59:17,807 The day when she was expected, I received a telegram. 696 00:59:18,007 --> 00:59:20,607 ''Sorry. Problems. Have to leave...'' 697 00:59:20,767 --> 00:59:22,726 And then, nothing more. 698 00:59:22,727 --> 00:59:25,727 So, when you told me this woman.. 699 00:59:25,967 --> 00:59:28,926 ..was foreign, I thought.. 700 00:59:28,927 --> 00:59:31,126 ..that perhaps it was her. 701 00:59:31,127 --> 00:59:33,046 And, since then, the thought has obsessed me. 702 00:59:34,047 --> 00:59:35,946 With regard to strangers,.. 703 00:59:35,947 --> 00:59:38,647 ..what do you make of this Mme. Beresford ? 704 00:59:39,207 --> 00:59:40,886 Prudence ? 705 00:59:40,888 --> 00:59:43,887 I've not given her any thought, have you ? 706 00:59:44,927 --> 00:59:49,927 < She is an efficient woman and certainly highly intelligent. 707 00:59:49,947 --> 00:59:51,446 And your brothers ? 708 00:59:51,448 --> 00:59:53,886 Your father ? 709 00:59:54,090 --> 00:59:58,087 They are all of one mind. She has bewitched them all. 710 00:59:58,207 --> 01:00:01,007 My God, I will strangle her ! - Pardon me ? 711 01:00:02,607 --> 01:00:04,607 < Oh, nothing. Don't torment yourself. We will soon.. 712 01:00:04,608 --> 01:00:07,287 ..clear this matter up. You were right to talk to me. 713 01:00:16,527 --> 01:00:18,846 What are you going to do ? 714 01:00:18,847 --> 01:00:20,606 Check the whereabouts of the three brothers.. 715 01:00:20,707 --> 01:00:23,807 ..and go through the entire house with a fine tooth comb. 716 01:00:25,087 --> 01:00:27,887 I have an idea that she might be a dancer... 717 01:00:28,007 --> 01:00:29,886 It was my idea, Belisaire ! 718 01:00:29,887 --> 01:00:33,287 To be fair, Prudence had the idea of asking among dancers.. 719 01:00:33,387 --> 01:00:36,206 ..to find the solution. 720 01:00:36,307 --> 01:00:39,566 Distribute photos of the victim. 721 01:00:59,807 --> 01:01:04,807 Hop it ! You've no right here. Out ! 722 01:01:12,447 --> 01:01:15,446 Lieut. Margaret Brown ! 723 01:01:17,007 --> 01:01:20,007 From the intelligence service to here ! 724 01:01:28,087 --> 01:01:30,487 This could be anyone. 725 01:01:32,087 --> 01:01:35,887 One of your dancers hasn't suddenly disappeared ? 726 01:01:38,247 --> 01:01:41,247 Colonel, the girls here come and go like the wind. 727 01:01:42,287 --> 01:01:47,287 Did one of them leave... around the end of November ? 728 01:01:47,587 --> 01:01:51,287 Anna Karenine. - A Russian ? 729 01:01:51,527 --> 01:01:54,527 Yes, maybe Polish. Here, it's the Foreign Legion. 730 01:01:57,407 --> 01:01:59,786 Anna Karenine. She left here at the end of November. 731 01:02:01,247 --> 01:02:04,247 She said she wanted to be reconciled with her husband. 732 01:02:04,447 --> 01:02:06,986 She went to meet with him somewhere in the country. 733 01:02:07,287 --> 01:02:10,287 She worked with you, how long ? 734 01:02:11,247 --> 01:02:14,247 Six weeks, almost. Just an ordinary girl. 735 01:02:14,747 --> 01:02:17,206 She said she was going on a cruise with an Englishman. 736 01:02:17,207 --> 01:02:19,926 In any event, it was just a story. 737 01:02:19,927 --> 01:02:22,886 I think she was Polish. 738 01:02:22,890 --> 01:02:24,887 And Catholic : she never missed Mass. 739 01:02:24,888 --> 01:02:26,806 That's a point. 740 01:02:26,807 --> 01:02:28,566 Only the Polish still believe. 741 01:02:28,567 --> 01:02:30,526 She was still a liar. 742 01:02:30,527 --> 01:02:31,946 I don't agree. 743 01:02:38,687 --> 01:02:41,687 The policemen from the other day want to interrogate you. 744 01:02:41,767 --> 01:02:42,996 Pardon ? 745 01:02:43,527 --> 01:02:45,966 THEY WANT TO INTERROGATE YOU ! 746 01:02:47,527 --> 01:02:48,666 Please excuse me. 747 01:02:48,767 --> 01:02:50,867 Your orange juice is in the kitchen. 748 01:02:53,007 --> 01:02:55,526 Where did you get Mme. Beresford ? From an agency ? 749 01:02:55,527 --> 01:02:58,527 No. A friend of a former maid told her.. 750 01:02:58,807 --> 01:03:01,646 ..that we had a place free. -< So, you engaged.. 751 01:03:01,647 --> 01:03:03,926 ..a stranger who barely arrived.. 752 01:03:03,927 --> 01:03:06,646 ..before digging up a corpse ! 753 01:03:06,647 --> 01:03:09,647 Why don't you stop picking on your sister ? 754 01:03:10,527 --> 01:03:13,166 < Look here, medical man, you've got a fine cheek.. 755 01:03:13,167 --> 01:03:16,167 ..you're the one who told Emma to talk to the police. 756 01:03:18,927 --> 01:03:22,127 Don't be so insulting. - Now the police are holding us. 757 01:03:22,147 --> 01:03:25,047 < They think we are responsible for Martina's disappearance. 758 01:03:26,127 --> 01:03:27,806 < If she is the dead woman... 759 01:03:27,807 --> 01:03:29,526 I'm going to see your father. 760 01:03:29,527 --> 01:03:33,827 The cake was delicious. - Mme. Beresford baked it. 761 01:03:34,207 --> 01:03:37,207 The number of recipes I have remembered ! 762 01:03:37,767 --> 01:03:40,486 It's like skiing, one never forgets. 763 01:03:40,487 --> 01:03:42,726 I doubt this will help to advance the investigation. 764 01:03:43,327 --> 01:03:46,327 But you have forgotten one fundamental thing. 765 01:03:47,767 --> 01:03:50,766 Oh yes ? What's that ? - My birthday. 766 01:03:50,767 --> 01:03:54,767 I don't know what to think. It's the 1st time you've forgotten. 767 01:03:54,847 --> 01:03:56,826 Is it the 22nd ? 768 01:03:56,827 --> 01:03:59,327 The 22nd of December, the birth of Belisaire Beresford. 769 01:03:59,927 --> 01:04:02,927 Oh sweet Jesus ! 770 01:04:06,487 --> 01:04:09,487 You will have to accompany me to the police station, madam. 771 01:04:09,667 --> 01:04:12,467 Very well, monsieur. I will get my coat. 772 01:04:14,167 --> 01:04:18,167 Any news, M. Snowshoe ? - Patience, patience. 773 01:04:19,227 --> 01:04:20,886 The little ones are charming. - Very. 774 01:04:20,887 --> 01:04:23,387 I want to manufacture a few false clues for them. 775 01:04:24,087 --> 01:04:26,087 I don't understand. - I will leave a note, like.. 776 01:04:26,127 --> 01:04:29,127 ..''Martina, if you wish to live, stay away from the chateau.'' 777 01:04:31,927 --> 01:04:33,086 Why would you do that ? 778 01:04:33,187 --> 01:04:37,087 The poor things, they ferret around and remain empty-handed. 779 01:04:38,067 --> 01:04:38,846 A clue would.. 780 01:04:38,847 --> 01:04:40,766 ..place them in danger. 781 01:04:41,567 --> 01:04:44,567 You do realise a murderer is perhaps in there ? 782 01:04:47,327 --> 01:04:51,327 Monsieur, this is Huguette, one of Margaret Brown's dancers. 783 01:04:51,647 --> 01:04:54,566 I have received a card from Anna. 784 01:04:54,567 --> 01:04:56,566 Anna Karenine ? -*From Saint-Barth'. 785 01:04:57,267 --> 01:04:58,766 When did she post it ? 786 01:04:58,867 --> 01:05:01,767 The date-stamp... Wait... 787 01:05:01,927 --> 01:05:04,927 14 or 17 December, it's not very clear. 788 01:05:06,247 --> 01:05:09,547 17 December ? -*It was true about the Englishman. 789 01:05:12,047 --> 01:05:14,446 Exit Anna Karenine. 790 01:05:14,547 --> 01:05:17,047 A dancer has received a card from her in the West Indies. 791 01:05:18,327 --> 01:05:21,327 So, we come back to Martina Charpentier. 792 01:05:21,687 --> 01:05:23,687 The widow who didn't show up. 793 01:05:24,047 --> 01:05:27,406 Everything points to the Charpentier children.. 794 01:05:27,407 --> 01:05:30,186 ..deciding not to split their inheritance.. 795 01:05:30,187 --> 01:05:32,726 ..with the new heir. 796 01:05:32,727 --> 01:05:36,727 Let's find out which of them profits most from the crime. 797 01:05:37,327 --> 01:05:40,327 As long as Old Man Charpentier lives, no-one will benefit. 798 01:05:42,607 --> 01:05:45,346 I wonder if Dr. Lagarde ever suspected.. 799 01:05:45,547 --> 01:05:48,847 ..that someone attempted to kill the old man ? 800 01:05:49,887 --> 01:05:52,387 His symptoms were the same as poisoning with arsenic. 801 01:05:52,807 --> 01:05:55,207 We know that a number of people would be interested in... 802 01:05:55,727 --> 01:05:57,686 What shall we say... 803 01:05:57,687 --> 01:05:59,846 Hastening his demise. 804 01:06:00,847 --> 01:06:03,847 Mm... But the poisoner, after he had failed,.. 805 01:06:04,047 --> 01:06:07,047 ..would have increased the dose. But he didn't. 806 01:06:07,327 --> 01:06:10,327 Yes, that doesn't make sense. Curious ! 807 01:06:10,527 --> 01:06:15,527 You've been their doctor, how long ? 808 01:06:16,567 --> 01:06:18,567 M. Charpentier was my first patient after my arrival,.. 809 01:06:18,967 --> 01:06:20,846 ..following the death of my wife. 810 01:06:34,127 --> 01:06:35,886 Is something wrong ? 811 01:06:36,287 --> 01:06:38,487 I'm the only one without an alibi. That worries me. 812 01:06:39,047 --> 01:06:42,047 Raphael was able to provide a detailed timetable. 813 01:06:43,487 --> 01:06:45,746 Augustin was, of course, with a girl. 814 01:06:46,447 --> 01:06:47,866 Why do you say ''of course'' ? 815 01:06:48,167 --> 01:06:50,567 He is a womaniser, haven't you noticed ? 816 01:06:51,107 --> 01:06:54,807 Beneath his air of being an artist, he has no feelings. 817 01:06:55,087 --> 01:06:59,087 Apart from Emma, he doesn't like people. - What were you doing, that day ? 818 01:07:00,367 --> 01:07:03,766 The passage of my days don't interest me any. 819 01:07:03,767 --> 01:07:05,846 < What is there worth remembering ? 820 01:07:05,847 --> 01:07:08,526 It seems to me you should try to remember. 821 01:07:09,527 --> 01:07:11,527 I don't much like looking back. 822 01:07:20,207 --> 01:07:22,806 It is good having you here. 823 01:07:23,407 --> 01:07:26,107 You are cheerful, joyful. You are always singing. 824 01:07:26,807 --> 01:07:28,806 Especially when I am cooking. 825 01:07:29,307 --> 01:07:31,126 Meals are like plants. 826 01:07:31,427 --> 01:07:34,127 They are better with a song. 827 01:07:35,267 --> 01:07:38,267 For me, cooking is rather like jazz. 828 01:07:40,847 --> 01:07:44,847 Beef on a string, where you mix raw and cooked meat,.. 829 01:07:44,907 --> 01:07:48,646 ..is rather like mouthing a trumpet. 830 01:07:48,767 --> 01:07:51,086 The way it boils ! 831 01:07:53,087 --> 01:07:55,787 As for oysters, as the Martyr tells us,.. 832 01:07:55,887 --> 01:07:59,487 ..they are like the first Christians, eaten by lions,.. 833 01:08:01,807 --> 01:08:03,166 ..only a requiem will do ! 834 01:08:04,167 --> 01:08:07,166 You enliven the kitchen. You remind me of my wife. 835 01:08:07,267 --> 01:08:10,667 She spread joy everywhere, and was not intimidated by my father. 836 01:08:12,547 --> 01:08:14,547 In fact, she got on well with him. 837 01:08:16,047 --> 01:08:17,766 But not you ? 838 01:08:17,767 --> 01:08:20,486 He is obsessed with money. 839 01:08:20,487 --> 01:08:23,487 He is sitting on a pile of gold without being able to touch it. 840 01:08:35,527 --> 01:08:37,527 Name of God ! They even run between your feet. 841 01:08:40,927 --> 01:08:43,927 Do you enjoy hunting ? - No, only killing. 842 01:08:45,327 --> 01:08:46,726 You've been running. - Yes... 843 01:08:46,727 --> 01:08:48,727 You have red cheeks, I like that a lot. 844 01:08:53,527 --> 01:08:56,527 What ? Madam prefers older men, perhaps ? 845 01:08:57,407 --> 01:09:01,407 Your younger brothers are not bad. Excuse me. 846 01:09:18,287 --> 01:09:20,887 Colonel Snowshoe, we have found a clue. 847 01:09:23,847 --> 01:09:26,847 It is proof that Martina was coming here. 848 01:09:26,927 --> 01:09:29,727 That proves she was the woman in the sarcophagus, doesn't it ? 849 01:09:30,347 --> 01:09:32,766 It's possible. Where did you find this ? 850 01:09:33,767 --> 01:09:35,767 In the laundry room. We wore gloves, for the fingerprints. 851 01:09:36,727 --> 01:09:37,886 You have done well. 852 01:09:38,487 --> 01:09:39,946 Remember to relax your fingers. 853 01:09:40,087 --> 01:09:44,087 You need to press the tip of your finger, but not so it hurts. 854 01:09:45,247 --> 01:09:47,006 Monsieur Snowshoe... 855 01:09:50,087 --> 01:09:52,046 Softly. 856 01:09:58,047 --> 01:10:01,047 Without touching the other fingers. 857 01:10:06,047 --> 01:10:09,547 I have come to see your sister, but first I have a question.. 858 01:10:09,787 --> 01:10:12,606 ..to ask madam. 859 01:10:12,608 --> 01:10:14,286 I am in the way. 860 01:10:14,287 --> 01:10:17,287 But we'll resume later. You have real potential. 861 01:10:22,267 --> 01:10:24,767 Don't look so disapproving. 862 01:10:25,527 --> 01:10:28,927 I have the right to learn the guitar, even with a nice man. 863 01:10:33,287 --> 01:10:35,887 A masterpiece of forgery, I tip my hat to you ! 864 01:10:36,447 --> 01:10:39,447 But the situation is already complicated enough as it is. 865 01:10:40,287 --> 01:10:42,287 I have never seen this envelope, where did you find it ? 866 01:10:44,207 --> 01:10:46,207 You didn't write this ? - But, no. 867 01:10:48,447 --> 01:10:50,286 I don't understand. 868 01:10:51,287 --> 01:10:52,766 Do you recognise this envelope ? 869 01:10:52,767 --> 01:10:54,726 Yes. It's the letter that I sent. 870 01:10:55,727 --> 01:10:56,846 You have found Martina ? 871 01:10:57,847 --> 01:10:59,847 This envelope was found here. 872 01:11:05,567 --> 01:11:08,567 You think the woman in the sarcophagus really is.. Martina ? 873 01:11:10,887 --> 01:11:13,206 It seems probable. 874 01:11:16,167 --> 01:11:18,867 It looks as if you are leaving us. 875 01:11:19,007 --> 01:11:20,907 Are your interrogations finished ? 876 01:11:21,087 --> 01:11:23,966 Yes. For the moment. 877 01:11:37,127 --> 01:11:39,486 He has found out something, that one. 878 01:11:39,487 --> 01:11:41,766 What was he sniffing around for ? 879 01:11:42,367 --> 01:11:44,766 Why tell him about Martina ? 880 01:11:45,767 --> 01:11:47,406 Yes. Washing our dirty linen like that. 881 01:11:47,407 --> 01:11:49,326 You should be thanking me, actually. 882 01:11:49,327 --> 01:11:50,566 And why ? 883 01:11:50,567 --> 01:11:53,567 The police would find it suspicious if no-one spoke.. 884 01:11:53,607 --> 01:11:56,486 ..now the dead woman seems really to be Martina. 885 01:11:57,187 --> 01:11:58,946 What now ? 886 01:11:59,247 --> 01:12:01,247 The installation is antiquated. 887 01:12:40,127 --> 01:12:42,627 I would never have thought it of you. 888 01:12:45,087 --> 01:12:47,787 You are trying to ruin me ? 889 01:12:49,247 --> 01:12:52,247 Reassure yourself, M. Charpentier, it will cost you almost nothing. 890 01:12:53,007 --> 01:12:57,007 What do you call ''nothing'' ? Name the price ! Name it ! 891 01:13:02,247 --> 01:13:04,286 Is that true ?! 892 01:13:05,947 --> 01:13:08,206 You're not saying it just to soft-soap me ? 893 01:13:09,207 --> 01:13:11,766 I swear it. On a cross of wood, a cross of iron. 894 01:13:13,367 --> 01:13:15,766 Oh ! How did you do it ? 895 01:13:15,767 --> 01:13:17,926 You are an angel, a pearl ! 896 01:13:17,940 --> 01:13:18,940 A fairy ! - Oh ! 897 01:13:19,500 --> 01:13:20,000 Oh ! Please ! 898 01:13:21,000 --> 01:13:23,200 You smell of good garlic ! What a woman ! 899 01:13:23,700 --> 01:13:27,500 What a waist ! What hips ! What a chest ! 900 01:13:35,000 --> 01:13:36,600 Mme. Beresford,... 901 01:13:36,650 --> 01:13:38,900 This evening, you will dine with us. 902 01:13:41,000 --> 01:13:42,300 It's gone again ! 903 01:13:42,800 --> 01:13:45,500 You will sit next to me. 904 01:13:58,000 --> 01:14:00,500 You do not look or act like a domestic, Mme. Beresford. 905 01:14:02,000 --> 01:14:04,500 Who are you ? Where do you come from ? 906 01:14:05,500 --> 01:14:07,600 You discover a dead body on your arrival.. 907 01:14:07,680 --> 01:14:09,700 and the police hold us. 908 01:14:10,000 --> 01:14:12,400 < I have been watching you closely. 909 01:14:13,000 --> 01:14:14,400 And I will continue to do so. 910 01:15:20,000 --> 01:15:21,500 But what were you doing there ? 911 01:15:22,000 --> 01:15:23,800 I wanted to surprise you, and it went wrong. 912 01:15:24,487 --> 01:15:25,726 Give me some light. 913 01:15:26,127 --> 01:15:28,127 Yes. Wait a bit. 914 01:15:33,287 --> 01:15:35,287 I didn't want to miss our Christmas tradition. 915 01:15:35,727 --> 01:15:37,326 I have hurt you ! 916 01:15:37,327 --> 01:15:39,186 Where is it, the champagne ? Ah ! 917 01:15:42,247 --> 01:15:44,447 Colonel Beresford ! Mm... 918 01:15:51,007 --> 01:15:53,606 Some facts don't hold together. 919 01:15:54,407 --> 01:15:55,966 What's that, Prudence ? 920 01:15:56,167 --> 01:15:59,167 1, the envelope addressed to Martina was found here. 921 01:16:00,187 --> 01:16:02,487 2, the Martina we found was about 20 years old. 922 01:16:03,767 --> 01:16:06,767 And 3, the body has the feet of a dancer. 923 01:16:10,047 --> 01:16:12,647 And our dancer is in the West Indies with her Englishman. 924 01:16:13,247 --> 01:16:15,847 We were given a false clue, and we ran with it ! 925 01:16:18,167 --> 01:16:19,886 < Mademoiselle Prudence ! 926 01:16:20,487 --> 01:16:22,887 Yes, I'm coming, I'm coming ! 927 01:16:30,927 --> 01:16:32,006 Merry Christmas, my dear. 928 01:16:32,307 --> 01:16:34,307 Give big hugs to the little ones for me. 929 01:16:35,327 --> 01:16:38,327 Will you do me up ? 930 01:16:39,327 --> 01:16:41,727 Thank you. How do I look ? 931 01:16:42,407 --> 01:16:47,407 Now you can creep out as secretly as you came in. 932 01:17:01,267 --> 01:17:03,867 The jewel suits you so well, my dear Mme. Beresford. 933 01:17:05,927 --> 01:17:07,966 Dear Mme. Beresford. - Oh, not again ! 934 01:17:14,687 --> 01:17:16,287 It looks like Mother's brooch. 935 01:17:16,467 --> 01:17:17,806 You're right, actually. 936 01:17:17,907 --> 01:17:19,786 It does resemble it, yes. 937 01:17:19,987 --> 01:17:20,926 I wonder ! 938 01:17:21,527 --> 01:17:24,527 Excuse me. 939 01:17:26,007 --> 01:17:29,007 Excuse me. An urgent case, I must leave you. 940 01:17:31,687 --> 01:17:33,366 A shame, I will accompany you. - Thank you. 941 01:17:34,367 --> 01:17:36,746 This is good, the soup. 942 01:17:37,447 --> 01:17:40,447 Ah, main course ! The capon !... 943 01:17:43,407 --> 01:17:46,407 Are your suitcases ready ? Not the pyjamas yet. 944 01:17:47,247 --> 01:17:49,246 What time is your mother getting here tomorrow ? 945 01:17:50,000 --> 01:17:50,700 At ten o'clock. 946 01:17:51,407 --> 01:17:53,407 01:17:56,646 < Oh, what a mess ! 948 01:17:57,647 --> 01:17:59,326 < I will miss you, Mme. Poppins. 949 01:18:00,327 --> 01:18:02,506 < Will you go there for your holiday ? 950 01:18:11,447 --> 01:18:14,447 What is wrong, Valerie ? - I don't know. 951 01:18:15,727 --> 01:18:18,406 Where do you feel bad ? - In my stomach. 952 01:18:19,407 --> 01:18:20,907 It doesn't feel right. 953 01:18:23,367 --> 01:18:24,767 What is happening ? 954 01:18:25,407 --> 01:18:27,046 Go and lay down. 955 01:18:29,047 --> 01:18:30,166 What is this ? I will get help. 956 01:18:30,167 --> 01:18:31,126 I am sick ! 957 01:18:31,127 --> 01:18:34,127 Lay down, I'll be back. 958 01:18:40,287 --> 01:18:41,286 Mlle. Charpentier,.. 959 01:18:41,288 --> 01:18:41,887 ..the little ones are sick. 960 01:18:44,127 --> 01:18:45,727 Are you not well ? No. 961 01:18:47,807 --> 01:18:48,766 I... I'll be back. 962 01:19:17,887 --> 01:19:21,887 They are all out of trouble. We must identify what happened. 963 01:19:22,647 --> 01:19:24,647 You are the only one unaffected. Did you eat everything ? 964 01:19:24,687 --> 01:19:26,687 Yes, apart from the Yule log, I've never liked it. 965 01:19:26,727 --> 01:19:29,727 I didn't drink any of the champagne. 966 01:19:32,687 --> 01:19:34,406 Is there anything left ? 967 01:19:34,407 --> 01:19:37,407 No, they left nothing. They even sucked the bones. 968 01:19:39,007 --> 01:19:42,007 Apart from the candied fruits and the carcase of the capon,.. 969 01:19:43,327 --> 01:19:46,327 ..there is nothing left. I also washed the dishes. 970 01:19:48,567 --> 01:19:52,567 My God ! Do you think it's arsenic ? 971 01:19:53,967 --> 01:19:55,966 How do you know ? 972 01:19:55,967 --> 01:19:58,967 Yes, there's a good chance that it is. 973 01:19:59,727 --> 01:20:03,727 The killer may be among them, pretending to be sick. 974 01:20:04,767 --> 01:20:08,767 Could you tell the difference between true sickness and fake ? 975 01:20:09,887 --> 01:20:12,086 I don't think so, no. 976 01:20:15,407 --> 01:20:18,407 I'll call for a nurse. She should be here by 8 o'clock. 977 01:20:19,447 --> 01:20:21,546 I will prepare something for each of them. 978 01:20:21,547 --> 01:20:23,246 I will be back to see how they are. 979 01:20:23,847 --> 01:20:25,446 While I'm away, keep your eyes open. 980 01:20:26,447 --> 01:20:29,447 Especially on Emma. - Yes, count on me. 981 01:20:34,647 --> 01:20:36,647 I never thought I'd have to work on Christmas Day ! 982 01:20:37,447 --> 01:20:39,566 It's Mlle. Emma I feel sorry for. 983 01:20:40,567 --> 01:20:42,867 I said to Mme. Beresford that the lobsters were worthless. 984 01:20:43,007 --> 01:20:46,007 But she replied : ''No, the lobsters are very fresh.'' 985 01:20:47,367 --> 01:20:51,367 Who can say, with all the pollutants thrown in the sea. 986 01:20:53,567 --> 01:20:55,567 In any case, I wouldn't eat them. 987 01:20:57,167 --> 01:20:59,167 All of them could have been taken. 988 01:21:14,047 --> 01:21:16,047 I am Mme. Valois, the mother of Valerie. 989 01:21:17,087 --> 01:21:18,726 You've come to collect her ? 990 01:21:18,727 --> 01:21:21,727 I wouldn't let your daughter come here any more. 991 01:21:21,747 --> 01:21:24,047 Mme. Valois, I will take you to Valerie. 992 01:21:25,207 --> 01:21:28,007 The house has suffered from a bout of food poisoning.. 993 01:21:28,187 --> 01:21:29,246 ..but Valerie is doing well. 994 01:21:31,247 --> 01:21:34,247 Both she and Alexie are ready to leave. Follow me. 995 01:21:40,127 --> 01:21:41,406 Ah ! My little girl ! 996 01:21:42,407 --> 01:21:43,846 What happened to you ? 997 01:21:46,607 --> 01:21:49,607 I must tell you. Alexie's papa had a brother.. 998 01:21:50,567 --> 01:21:53,567 ..who is dead, and his wife... 999 01:22:00,527 --> 01:22:02,927 Get Emma to send the nurse away, her charges will ruin me ! 1000 01:22:03,087 --> 01:22:05,566 That would mean I would have to take care of you myself. 1001 01:22:05,567 --> 01:22:08,406 And I cannot be everywhere at the same time. 1002 01:22:09,407 --> 01:22:11,046 Why can't Emma help you ? 1003 01:22:12,047 --> 01:22:13,506 She is confined to her bed. 1004 01:22:13,407 --> 01:22:15,126 And the others ? - The same. 1005 01:22:15,127 --> 01:22:19,127 But they are all doing well. They are resting. 1006 01:22:20,047 --> 01:22:22,047 What is that ? - Some bouillon and biscuits. 1007 01:22:22,127 --> 01:22:26,127 Take it away. I want meat. 1008 01:22:27,047 --> 01:22:29,006 The doctor has forbidden that for the moment. 1009 01:22:29,007 --> 01:22:32,007 The doctor is an ass, I am well. Bring me meat ! 1010 01:22:46,207 --> 01:22:47,646 May I see Alexie's father ? 1011 01:22:48,647 --> 01:22:49,566 Unfortunately, he is sick... 1012 01:22:49,567 --> 01:22:53,567 My daughter told me about the woman in the sarcophagus. 1013 01:22:53,847 --> 01:22:55,846 I have to speak to someone in the family. 1014 01:22:56,847 --> 01:22:58,366 I will ask Mlle. Emma. 1015 01:22:59,367 --> 01:23:01,367 Tell her that it's about Martina Petrovna. 1016 01:23:02,887 --> 01:23:04,166 Martina Petrovna ? 1017 01:23:04,167 --> 01:23:07,167 You have heard of Martina ? 1018 01:23:08,247 --> 01:23:11,247 It's likely she is the woman found in the sarcophagus. 1019 01:23:12,487 --> 01:23:15,487 That just isn't possible. - How so ? 1020 01:23:16,487 --> 01:23:18,487 Because I am Martina Petrovna. 1021 01:23:27,727 --> 01:23:30,727 I met Edmond in Damascus. 1022 01:23:34,127 --> 01:23:38,127 We were together for a while, But then came the split-up. 1023 01:23:50,047 --> 01:23:52,047 I was sent to Belgrade. 1024 01:23:53,167 --> 01:23:56,167 There I met Valerie's father, who was posted down there. 1025 01:23:58,207 --> 01:23:59,207 A Frenchman, like Edmond. 1026 01:24:04,767 --> 01:24:06,467 You know... 1027 01:24:06,807 --> 01:24:09,007 I have never forgotten your brother, and... 1028 01:24:12,007 --> 01:24:13,426 When I learnt that, at boarding school,.. 1029 01:24:13,427 --> 01:24:15,927 ..my daughter had become friends with your niece,.. 1030 01:24:18,387 --> 01:24:21,687 ..you cannot know how much I was moved by this coincidence. 1031 01:24:23,247 --> 01:24:25,166 I even thought of writing to you. 1032 01:24:26,167 --> 01:24:29,167 And then, I said to myself, what good to stir up the past ? 1033 01:24:31,287 --> 01:24:33,787 But when my daughter told me about the body found here,.. 1034 01:24:33,847 --> 01:24:38,847 ..I wanted to warn you. - Thank you so much. 1035 01:24:41,847 --> 01:24:43,126 She is so charming. 1036 01:24:43,127 --> 01:24:45,206 So, who was it wrote to me using her name ? 1037 01:24:46,207 --> 01:24:50,207 Some crook, who then backed away from his deception. 1038 01:24:53,287 --> 01:24:54,826 What is it, Mme. Beresford ? 1039 01:24:54,827 --> 01:24:57,046 It is.. your brother, Augustin. 1040 01:24:57,047 --> 01:24:59,747 What about Augustin ? I thought his condition... 1041 01:25:02,687 --> 01:25:04,446 My brother is dead,.. 1042 01:25:04,447 --> 01:25:06,366 ..do I read you right ? 1043 01:25:07,367 --> 01:25:09,767 I thought he was stronger. Clearly I was wrong. 1044 01:25:09,768 --> 01:25:11,886 You don't seem very upset. 1045 01:25:11,887 --> 01:25:13,606 Tears for the dead, no thank you ! 1046 01:25:13,607 --> 01:25:17,607 You are much too sentimental. You could become irksome. 1047 01:25:23,087 --> 01:25:26,087 What's this I hear ? Augustin has breathed his last ? 1048 01:25:28,287 --> 01:25:30,126 M. Charpentier, please return to your bed. 1049 01:25:30,127 --> 01:25:33,127 No need, I have never felt better. 1050 01:25:33,207 --> 01:25:36,207 So, is it true ? Is he really dead ? 1051 01:25:38,727 --> 01:25:40,646 The one who was the most anxious to inherit. 1052 01:25:40,647 --> 01:25:42,846 So much for the artist ! One down, two to go ! 1053 01:25:42,847 --> 01:25:44,886 How can you say that ? 1054 01:25:44,887 --> 01:25:47,887 Just you see, I will bury them all ! 1055 01:25:48,487 --> 01:25:51,487 Misfortune never comes alone. 1056 01:25:51,727 --> 01:25:53,727 Now I can speak out, and tell you about these beauties ! 1057 01:25:54,727 --> 01:25:58,727 Do you want to hear ? - No. 1058 01:26:07,447 --> 01:26:09,447 What is this ? Are you smoking, now ? 1059 01:26:12,487 --> 01:26:15,487 These people, Belisaire, they are like wolves. 1060 01:26:18,527 --> 01:26:20,527 No, not wolves, jackals. 1061 01:26:50,307 --> 01:26:52,686 Sorry to hear of your brother. - Alright. 1062 01:26:52,687 --> 01:26:54,866 Madame is home ? - She is waiting for you. 1063 01:26:55,847 --> 01:26:58,046 < God ! Camembert and everything ? 1064 01:27:00,247 --> 01:27:03,247 Raphael, you look utterly dreadful ! 1065 01:27:03,647 --> 01:27:06,606 You... look resplendent. Been out amusing yourself ? 1066 01:27:06,607 --> 01:27:09,607 Absolutely everyone is in Mauritius now. God ! 1067 01:27:09,707 --> 01:27:11,786 But you've already spent a month there. 1068 01:27:11,787 --> 01:27:13,766 Surely not ? A whole month ? - Yes. 1069 01:27:13,767 --> 01:27:15,767 Oh well, as you say ! God ! 1070 01:27:27,727 --> 01:27:29,727 And money is rather tight, for the present at least. 1071 01:27:35,127 --> 01:27:40,127 In New York, I fell in with this crazy woman called Hermeline. 1072 01:27:40,927 --> 01:27:43,227 She told the entire table that they had found.. 1073 01:27:43,237 --> 01:27:46,247 ..the body of a woman at Vallée-aux-Loups,... 1074 01:27:46,257 --> 01:27:49,206 It was just so embarrassing. 1075 01:27:49,707 --> 01:27:51,926 But it is true. 1076 01:27:51,927 --> 01:27:54,927 Really! Who was she, this woman ? 1077 01:27:55,167 --> 01:27:57,146 A woman from the East, apparently. 1078 01:27:58,047 --> 01:27:59,046 A woman from the East ! 1079 01:27:59,147 --> 01:28:02,047 God ! I don't feel so good. 1080 01:28:02,347 --> 01:28:04,246 It won't keep me from my bed. 1081 01:28:05,647 --> 01:28:09,247 Me too. I am completely jet-lagged. 1082 01:28:17,807 --> 01:28:20,086 I almost forgot... 1083 01:28:20,087 --> 01:28:22,286 This is for you. 1084 01:28:22,287 --> 01:28:24,646 You have brought me back a gift ? 1085 01:28:24,647 --> 01:28:27,647 No, it arrived this afternoon by Chronopost. 1086 01:28:31,847 --> 01:28:33,866 ''Continue the treatment for three days. 1087 01:28:33,867 --> 01:28:35,846 ''Two tablets in the evening before bed.'' 1088 01:28:36,847 --> 01:28:40,547 Lagarde told me to stop. - You must have misunderstood. 1089 01:28:41,807 --> 01:28:43,807 In any case, it can't do you any harm. 1090 01:28:45,247 --> 01:28:47,247 You're right, it can't do any harm. 1091 01:29:26,527 --> 01:29:29,527 Raphael, God, I'm freezing ! 1092 01:29:54,767 --> 01:29:57,286 I suspected Augustin, and he is dead. 1093 01:29:58,287 --> 01:30:00,287 I suspected Raphael, and he is dead. 1094 01:30:00,807 --> 01:30:03,407 I dare not say I suspect Frederic, it might kill him. 1095 01:30:05,407 --> 01:30:07,407 As for Emma... 1096 01:30:08,927 --> 01:30:12,806 No, let's get back on the track of the dancer. 1097 01:30:12,807 --> 01:30:14,086 From the start of this case,.. 1098 01:30:14,087 --> 01:30:16,087 ..we concentrated on Martina Charpentier,.. 1099 01:30:17,407 --> 01:30:20,126 ..because of the faked letter we were shown,.. 1100 01:30:20,127 --> 01:30:22,766 ..let's admit it, with heads bowed in shame. 1101 01:30:27,527 --> 01:30:30,527 We must find the identity of this Anna Karenine. 1102 01:30:31,407 --> 01:30:33,407 I believe that will lead us to the killer. 1103 01:30:34,567 --> 01:30:36,567 The murder is linked to the Charpentier family.. 1104 01:30:36,568 --> 01:30:40,247 ..but not in the way we've considered so far. 1105 01:30:40,767 --> 01:30:42,526 Don't you think so ? 1106 01:30:43,527 --> 01:30:45,206 I understood nothing that you said. 1107 01:30:46,207 --> 01:30:47,766 Ah well. Me, I have a plan. 1108 01:30:47,767 --> 01:30:50,767 Yes sir, I have a plan. 1109 01:30:52,367 --> 01:30:53,706 But I don't think I'll tell you what it is. 1110 01:30:57,567 --> 01:31:00,567 Well, okay. It involves Aunt Babette. 1111 01:31:02,087 --> 01:31:04,006 With Aunt Babette ? - Yes, with her. 1112 01:31:08,327 --> 01:31:10,606 < This is the limit ! 1113 01:31:10,607 --> 01:31:14,607 First, you don't believe me, and take me for mad. 1114 01:31:14,687 --> 01:31:16,687 Now, you ask me to do something embarrassing. 1115 01:31:16,688 --> 01:31:20,047 Why should I go and take tea with strangers, and.. 1116 01:31:20,067 --> 01:31:23,726 ..then pretend to feel ill ? 1117 01:31:24,727 --> 01:31:25,706 I tell you, I don't like it ! 1118 01:31:25,707 --> 01:31:28,886 I detest this sort of joke. 1119 01:31:28,887 --> 01:31:30,566 This is not about comedy, but about murder. 1120 01:31:30,567 --> 01:31:35,527 Prudence just asks you to follow her instructions. 1121 01:31:37,367 --> 01:31:39,367 Aunt Babette ! No ! 1122 01:31:41,967 --> 01:31:47,967 Well then, if I've understood her instructions,.. 1123 01:31:47,977 --> 01:31:51,727 ..I engage in a pleasant conversation with these toffs... 1124 01:32:00,647 --> 01:32:02,486 And suddenly... 1125 01:32:02,487 --> 01:32:04,487 Suddenly, I have a small problem. 1126 01:32:06,007 --> 01:32:09,007 I use some pretext, er, I'll invent something,.. 1127 01:32:09,087 --> 01:32:11,687 ..in order to leave the room. 1128 01:32:13,847 --> 01:32:16,847 And then ? - You return to the room. 1129 01:32:18,007 --> 01:32:20,007 I return, when ? - At the signal. 1130 01:32:20,447 --> 01:32:23,447 Ah, there'll be a signal ? - Mm... 1131 01:32:26,347 --> 01:32:28,647 And I can show them my Zigoeunus ? 1132 01:32:32,047 --> 01:32:34,546 ''Zigoeunus Thomasus moth, 1133 01:32:34,647 --> 01:32:38,447 ''..North Sinnamary, French Guiana, 28 December 2007'' 1134 01:32:39,087 --> 01:32:41,687 It is a male. Beautiful, isn't he ? 1135 01:32:42,127 --> 01:32:44,727 It is the highlight of my entire career. 1136 01:32:45,327 --> 01:32:47,546 The male lives only for a few hours. 1137 01:32:47,647 --> 01:32:51,447 Immediately after having ''met'' the female,.. 1138 01:32:51,447 --> 01:32:52,826 ..he dies. 1139 01:32:55,767 --> 01:32:58,767 That is why he is so rare and difficult to capture. 1140 01:32:58,807 --> 01:33:02,807 But there are several techniques : the picket line,.. 1141 01:33:02,887 --> 01:33:04,886 ..the zigzag chase. 1142 01:33:04,888 --> 01:33:06,566 Keep it up. 1143 01:33:07,067 --> 01:33:10,567 They are capricious creatures, sensitive to fragrances :.. 1144 01:33:10,847 --> 01:33:13,446 ..the patchouli, the honeysuckle... 1145 01:33:13,447 --> 01:33:15,486 Chanel number 5... 1146 01:33:15,487 --> 01:33:18,487 The most important thing for the catch is for the hunter.. 1147 01:33:19,407 --> 01:33:22,407 ..to conceal his shadow. 1148 01:33:23,527 --> 01:33:25,606 But I am talking too much... 1149 01:33:25,607 --> 01:33:29,607 And I'm not telling you what a wonderful home you have ! 1150 01:33:30,707 --> 01:33:32,566 Something for now. 1151 01:33:33,567 --> 01:33:36,567 Oh, how delicious ! Red mullet on toast. 1152 01:33:37,767 --> 01:33:39,726 Quite a change to your diet in the Amazon ! 1153 01:33:40,727 --> 01:33:42,246 You might say so ! 1154 01:33:42,247 --> 01:33:44,747 But, that said, ants in pate are not so bad. 1155 01:33:47,567 --> 01:33:50,567 They crack pleasantly on the tooth. 1156 01:33:51,727 --> 01:33:53,086 And it's very economic. 1157 01:33:53,087 --> 01:33:54,246 Do you have the recipe ? 1158 01:33:54,247 --> 01:33:55,646 Now. 1159 01:33:56,647 --> 01:33:58,966 Mm ! This is delicious. 1160 01:33:58,967 --> 01:34:01,067 Would you like some fresh air ? - On the contrary. 1161 01:34:01,167 --> 01:34:03,846 You look very pale ! 1162 01:34:03,847 --> 01:34:07,647 I am sorry. I must excuse myself for a few moments. 1163 01:34:08,267 --> 01:34:10,886 Where is it ? 1164 01:34:10,887 --> 01:34:12,287 Through there. 1165 01:34:23,207 --> 01:34:25,207 Thank you, Francois, for coming. 1166 01:34:31,647 --> 01:34:33,686 You look much better. You have got back.. 1167 01:34:33,687 --> 01:34:35,966 ..some of your colour. 1168 01:34:42,847 --> 01:34:44,726 What is wrong here ? 1169 01:34:46,727 --> 01:34:48,727 Stay calm. - Blockage in my throat ! 1170 01:34:50,047 --> 01:34:53,047 Let me take a look. Open your mouth. 1171 01:34:54,047 --> 01:34:56,726 Calm yourself. Turn towards me. 1172 01:34:56,727 --> 01:34:58,366 Tilt your head. 1173 01:35:02,967 --> 01:35:04,166 It's him ! 1174 01:35:04,167 --> 01:35:06,766 The man on the train ! 1175 01:35:07,687 --> 01:35:09,286 No, no. Say nothing more. 1176 01:35:09,887 --> 01:35:10,886 You didn't think.. 1177 01:35:10,887 --> 01:35:13,387 ..that a witness saw you strangle that woman. 1178 01:35:14,447 --> 01:35:17,447 My aunt, Babette Boutiti, saw you. 1179 01:35:18,687 --> 01:35:20,446 She was on the train.. 1180 01:35:20,447 --> 01:35:22,126 ..that ran beside your own. 1181 01:35:22,127 --> 01:35:24,686 Suddenly, she saw... 1182 01:35:35,207 --> 01:35:37,006 Mme. Beresford, I know you have been.. 1183 01:35:37,007 --> 01:35:39,886 ..overworked recently, but now,.. 1184 01:35:39,887 --> 01:35:41,926 ..you must be delirious. - No, not at all ! 1185 01:35:42,927 --> 01:35:44,926 Why would I strangle a woman unknown to me ? 1186 01:35:44,927 --> 01:35:47,406 Unknown ? 1187 01:35:49,587 --> 01:35:51,587 This woman, on the contrary,.. 1188 01:35:51,588 --> 01:35:53,946 ..you knew very well. 1189 01:35:54,447 --> 01:35:56,926 She was your wife. 1190 01:36:11,287 --> 01:36:13,587 He wanted to marry you, but he was already married.. 1191 01:36:15,167 --> 01:36:17,667 ..to Anna Stravinska, known as Anna Karenine. 1192 01:36:18,327 --> 01:36:21,327 A dancer who refused him a divorce. 1193 01:36:24,067 --> 01:36:26,086 I thought he was a widower. 1194 01:36:26,187 --> 01:36:28,766 And I thought you were a widow. 1195 01:36:28,768 --> 01:36:31,767 Not a widow, not a domestic, not a cook. 1196 01:36:31,769 --> 01:36:33,126 And this is my last service. 1197 01:36:34,127 --> 01:36:36,127 Emma, you talked to him about Edmond ? 1198 01:36:38,287 --> 01:36:40,246 And that was when he got an idea. 1199 01:36:41,247 --> 01:36:44,926 He wrote to you a letter, and signed it ''Martina'',.. 1200 01:36:44,927 --> 01:36:47,927 ..killed his wife, and hid the body in the sarcophagus,.. 1201 01:36:48,407 --> 01:36:51,246 ..and, thanks to that letter, we were led astray,.. 1202 01:36:51,247 --> 01:36:55,247 ..and the body was identified as that of Martina. 1203 01:37:08,127 --> 01:37:10,127 < And so, the family was implicated in the murder,.. 1204 01:37:10,167 --> 01:37:14,167 ..while he prepared for his next step. 1205 01:37:18,647 --> 01:37:20,947 < He planned to kill all your brothers, and incriminate.. 1206 01:37:20,948 --> 01:37:23,826 ..the one who remained :.. 1207 01:37:23,827 --> 01:37:25,826 ..your father. 1208 01:37:25,927 --> 01:37:28,877 So that you would be very rich by the time he married you. 1209 01:37:28,887 --> 01:37:31,887 If it had been me who died on Christmas night, his plan.. 1210 01:37:31,886 --> 01:37:34,127 ..would have fallen apart. But I was too strong. 1211 01:37:34,247 --> 01:37:36,286 He gave you a small dose of arsenic. 1212 01:37:36,287 --> 01:37:40,266 Just enough to give you stomach pains. 1213 01:37:40,967 --> 01:37:43,806 < The next day, the nurse, without knowing it,.. 1214 01:37:43,807 --> 01:37:46,807 ..gave Augustin the fatal dosage prepared by the doctor. 1215 01:37:48,808 --> 01:37:51,407 Then it was only necessary to send Raphael his dosage.. 1216 01:37:52,527 --> 01:37:53,806 What a bastard ! -< You should thank him ! 1217 01:37:53,807 --> 01:37:55,086 You owe him a debt of gratitude. 1218 01:37:55,087 --> 01:37:59,086 All he brought me was trouble. 1219 01:37:59,087 --> 01:38:01,246 A sarcophagus in pieces... 1220 01:38:01,247 --> 01:38:02,966 And all the rest ! 1221 01:38:02,967 --> 01:38:05,967 You, your fortune has frankly doubled ! 1222 01:38:14,367 --> 01:38:17,367 They love their money, this family. 1223 01:38:33,207 --> 01:38:35,526 I have avoided Christmas with the family ! 1224 01:38:43,647 --> 01:38:45,726 They are they still here. 1225 01:38:46,727 --> 01:38:48,846 They said they were leaving ! 1226 01:38:48,847 --> 01:38:50,847 Perhaps they decided to stay for New Year's. 1227 01:38:57,327 --> 01:39:00,206 Are there now ten of them ? 1228 01:39:00,207 --> 01:39:02,226 No, just the two. 1229 01:39:07,287 --> 01:39:09,287 And two can make this row ? 1230 01:39:09,407 --> 01:39:12,407 Aunt Babette doesn't know how lucky she is. 1231 01:39:13,607 --> 01:39:15,607 Nothing but butterflies, while living in a tent. 1232 01:39:15,617 --> 01:39:17,626 Camping in the wild ! 1233 01:39:45,007 --> 01:39:47,007 I am parched ! 1234 01:40:36,167 --> 01:40:38,167 Belisaire, wake up. 1235 01:40:39,647 --> 01:40:41,886 Open your eyes. 1236 01:40:42,887 --> 01:40:44,887 And tell me what you see. 1237 01:40:46,607 --> 01:40:50,207 Millions and millions of stars. 1238 01:40:51,007 --> 01:40:53,007 And what do you make of them ? 1239 01:40:54,087 --> 01:40:56,087 That there are millions of galaxies.. 1240 01:40:56,687 --> 01:40:59,406 ..and billions of planets. 1241 01:41:02,407 --> 01:41:05,407 That Saturn is part of Leo. 1242 01:41:08,367 --> 01:41:11,367 That the time is approximately.. 1243 01:41:11,647 --> 01:41:13,286 ..a quarter past three. 1244 01:41:15,287 --> 01:41:18,287 That it should be a nice day tomorrow. 1245 01:41:21,887 --> 01:41:26,885 I see that God is all-powerful.. 1246 01:41:26,887 --> 01:41:29,887 ..and that we are small and insignificant in the Universe. 1247 01:41:32,567 --> 01:41:34,567 And you, Prudence, what do you see ? 1248 01:41:36,047 --> 01:41:39,747 My poor Belisaire, I see you are a proper nitwit ! 1249 01:41:40,087 --> 01:41:42,087 Me, I see that we are finally free. 1250 01:44:05,807 --> 01:44:10,093 English subtitles : David Blake (2015) 1251 01:44:10,094 --> 01:44:10,095 ================================================ FILE: 2020/5-4-movie-调查犯罪是我们的职业/README.md ================================================ # 阿加莎:调查犯罪是我们的职业-法语 - 豆瓣 [调查犯罪是我们的职业 Le crime est notre affaire (2008)](https://movie.douban.com/subject/3101742/) - 法式幽默 - 女主角,很淑女好看 - 剧情 ``` 侦探夫妇的姨妈在火车上见到对向火车上有男人正在掐死一个女人 报警没人信 女侦探调查火车旁的一个家族有问题,便潜入做厨师 期间发生很多诡异的事情,不少人中毒或被杀 最后,女侦探假装噎着,引凶手去救她 姨妈看到凶手的背影,被确认是他 ``` - 花絮 ``` 片尾,两人去露营,模仿了《福尔摩斯》的笑话 福尔摩斯和华生在山坡上搭帐篷露营! 入夜,福尔摩斯醒来,用肘部弄醒华生:华生你看!天上有什么? 华生:一弯明月! 福尔摩斯:这意味着什么? 华生思索片刻然后:嗯,月色不错,没有星星,明天应该是阴天! 福尔摩斯:笨蛋!我们的帐篷被偷了! ``` - 下载 - 搜索,国外平台 - 声音是法语,字幕却是英文 - 百度网盘,联系我。链接: https://pan.baidu.com/s/1Scygxfogu4T99naRdiAQJQ - 字幕 - 英文 https://www.opensubtitles.com/en/subtitles/le-crime-est-notre-affaire - 用【谷歌翻译】转成中文 ================================================ FILE: 2020/6-17-Bird-Sound-crawl/README.md ================================================ # 观鸟App抓包,并下载鸟声音频 - 视频 ?? - 参考 - iOS App :鸟类百科 - 康奈尔大学 鸟类观察 https://www.birds.cornell.edu/home - 鸟类资料是存放在大学的服务器上,所以国内下载缓慢 download.ams.birds.cornell.edu - 国内网站,没有音频。[鸟类_百问中文](http://www.baiven.com/q/18/218/) - 步骤 - 启动 mitmweb - 过滤域名 ~d bird.snowyevening.com | ~d download.ams.birds.cornell.edu - 手机设置WiFi代理 - 启动App,抓包 - 推荐列表 - POST http://bird.snowyevening.com:8008/api/recommendlist - {"applan":"zh-Hans","appvision":"3.2.4","page":0} - 热门列表 - POST http://bird.snowyevening.com:8008/api/hotranklist - 详情 - POST http://bird.snowyevening.com:8008/api/birddetail - { "applan": "zh-Hans", "appvision": "3.2.4", "birdId": "27016" } - 下载热门列表的鸟类,音频 - download_sound.py - TODO 下一步,把全部鸟类的声音都下载下来 - 使用代理插件,更快地听到鸟类声音,不用等很久 - mitmweb -s sound_proxy.py ================================================ FILE: 2020/6-17-Bird-Sound-crawl/data.py ================================================ # -*- coding: utf-8 -*- hotranklist={'msg': 'success', 'code': '200', 'result': [{'id': 14941, 'cnname': '山麻雀', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/85205531/', 'maindesc': '山麻雀(英文名:Russet Sparrow,学名:Passer cinnamomeus),是雀形目雀科雀属的鸟类。又名红雀、赭麻雀、黄雀、山只只。属杂食性鸟类,主要以植物性食物和昆虫为食。在中国分布比较广。因平时栖息于山地而得名。中国见于秦岭以南地区。在分布区北部山地繁殖,秋季南迁越冬。体形近似麻雀。体长约14厘米。中国鹀类中的三道眉草鹀,也常被称为“山麻雀”。', 'viewcount': 6685, 'likecount': 90}, {'id': 14127, 'cnname': '虎皮鹦鹉', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/21349071/', 'maindesc': '虎皮鹦鹉(学名:Melopsittacus undulatus,英文名:Budgerigar)是鹦鹉科虎皮鹦鹉属的鸟类,又名娇凤。属小型攀禽品种,原产于澳大利亚的内陆地区,野生的虎皮鹦鹉栖息于林缘、草地等处。结群活动。以植物种子等为食。繁殖期为6至次年1月。营巢于树洞中。每窝产卵4-8枚。孵化期为18天。性情活泼且易于驯养,在中国是大众最喜欢的宠物鸟之一,野生种群系国家二级保护动物。', 'viewcount': 5395, 'likecount': 184}, {'id': 15317, 'cnname': '家八哥', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/98174391/', 'maindesc': '家八哥(英文名:Common Myna,学名:Acridotheres tristis),是雀形目椋鸟科八哥属的鸟类。英文名直译为普通八哥。无冠羽,眼周裸露皮肤黄色。原产于印度,但如今已被引进到世界各地(美洲、澳大利亚等),主要是为了降低农作区害虫的族群数量,但由于它们要和其他种类竞争产卵的所在,又会杀害小鸟,破坏鸟蛋,以及驱逐小型哺乳动物,因此在引进的同时,也降低了当地的生物多样性。', 'viewcount': 4370, 'likecount': 52}, {'id': 15282, 'cnname': '灰椋鸟', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/98370411/', 'maindesc': '灰椋鸟(英文名:White-cheeked Starling,学名:Spodiopsar cineraceus),是雀形目椋鸟科丝光椋鸟属的鸟类。英文名直译为白颊椋鸟,俗名有杜丽雀、高粱头、管莲子、假画眉、竹雀。是适应能力非常强的鸟。因为它除喙与足呈橙红色外,全身都是灰褐色,所以叫它灰椋鸟。体长约23-25厘米,通体主要为灰褐色,头部上黑而两侧白,尾部亦白色,嘴和脚为橙色。', 'viewcount': 3978, 'likecount': 63}, {'id': 15488, 'cnname': '珠颈斑鸠', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/31595281/', 'maindesc': '珠颈斑鸠(英文名:Spotted Dove,学名:Streptopelia chinensis),是鸽形目鸠鸽科珠颈斑鸠属的鸟类。又名鸪雕、鸪鸟、中斑、花斑鸠、花脖斑鸠、珍珠鸠、斑颈鸠、珠颈鸽、斑甲。比鸽子略小,颈部有黑白色的珠花图案,脚红色,体长约30cm。单独或成对出现,它们是温驯的鸟类。斑鸠是常见留鸟,叫声为轻柔悦耳的“咕咕咕”,清晨、黄昏、白天都可以听到珠颈斑鸠的反复鸣叫。是分布在南亚、东南亚地区以及中国南方广大地区的一种常见的斑鸠。', 'viewcount': 3821, 'likecount': 146}, {'id': 13898, 'cnname': '山斑鸠', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/92553441/', 'maindesc': '山斑鸠(英文名:Oriental Turtle-Dove,学名:Streptopelia orientalis),是鸽形目鸠鸽科斑鸠属的鸟类。也叫山鸠、金背鸠、金背斑鸠、麒麟斑、麒麟鸠、雉鸠、棕背斑鸠、东方斑鸠、绿斑鸠、山鸽子、花翼、大花鸽、大花斑。上体具深色扇贝状羽缘,颈侧具黑白色条纹形成的图案,亚成鸟无此图案。包括两个亚种。山斑鸠分别分布在西伯利亚中部和中亚地区,冬天大部分种群会迁徙;成对或单独活动,与珠颈斑鸠在食性、活动区域、夜间栖息环境等方面基本相似。在中国,山斑鸠分布在北自黑龙江、新疆,南至西藏南部、海南的广大地区。', 'viewcount': 3101, 'likecount': 49}, {'id': 15286, 'cnname': '乌鸫', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/63371531/', 'maindesc': '乌鸫(英文名:Eurasian Blackbird,学名:Turdus merula),是雀形目鸫科鸫属的鸟类。原乌鸫(学名:Turdus merula,英文名: Eurasian Blackbird)分为三种:

\u3000乌鸫(Turdus merula,Eurasian Blackbird)

\u3000乌鸫(Turdus mandarinus,Chinese Blackbird)

\u3000藏鸫(Turdus maximus,Tibetan Blackbird)

乌鸫虽继承英文名称,但乌鸫仅见于新疆与青海,与乌鸫相比雄鸟的黄色眼圈更为明显,雌鸟的斑纹也有一定差异。', 'viewcount': 3092, 'likecount': 70}, {'id': 13851, 'cnname': '喜鹊', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/62259711/', 'maindesc': '喜鹊(英文名:Eurasian Magpie,学名:Pica pica),是雀形目鸦科鹊属的鸟类。据中国鸟类名录6.0,分布于新疆、西藏西部和呼伦贝尔的Pica pica更名为喜鹊。喜鹊是典型的黑白色鸟类,体形很大,羽毛大部为黑色,肩腹部为白色。喜鹊比较凶悍,不畏惧猛禽,常常驱赶进入其领地的鸟类包括猛禽,集群围攻欺负其他鸟儿。喜鹊多生活在人类聚居地区,喜食谷物、昆虫。喜鹊叫声婉转,在中国民间将喜鹊作为吉祥的象征,牛郎织女鹊桥相会的传说及画鹊兆喜的风俗在民间都颇为流行。喜鹊智商很高,根据维基百科所述,喜鹊是目前唯一通过了镜子测试(弄明白镜子里的那个像就是自己)的非哺乳动物。', 'viewcount': 2759, 'likecount': 87}, {'id': 14893, 'cnname': '白头鹎', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/99711671/', 'maindesc': '白头鹎(英文名:Light-vented Bulbul,学名:Pycnonotus sinensis),是雀形目鹎科鹎属的鸟类。俗名白头翁、白头婆,英文名直译为淡臀鹎、中国鹎。是中国南方非常常见的雀鸟,体长约19厘米,头顶黑色,眉和枕羽呈白色,双翼橄榄绿色。老鸟的枕羽更洁白,所以又叫“白头翁”,幼鸟头橄榄色。数量丰富。性活泼、不甚畏人。杂食性,既食动物性食物,也吃植物性食物,以果树的浆果和种子为主食,并时常飞入果园偷吃果实。秋冬季节,白头鹎在进入繁殖期后会聚集在树林上喧叫,常常引起人们的注意。这种群聚的现象,到春季时就消失了。', 'viewcount': 2724, 'likecount': 143}, {'id': 15275, 'cnname': '八哥', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/147526591/', 'maindesc': '八哥(英文名:Crested Myna,学名:Acridotheres cristatellus),是雀形目椋鸟科八哥属的鸟类。俗名普通八哥、鸲鹆了哥、鹦鹆、寒皋、鸜鹆、驾鸰、加令、凤头八哥。冠羽突出,全身黑色,翅有白斑,飞行时展开双翅可看到八字形的白斑。八哥是中国南方常见的鸟类。自陕西南部至长江以南各省,以及台湾和海南省均有分布。此外,八哥为雀形目椋鸟科八哥属鸟类的通称,主要分布于亚洲,中国有八哥、林八哥、白领八哥、灰背八哥、家八哥等。', 'viewcount': 2680, 'likecount': 72}, {'id': 27201, 'cnname': '小嘴乌鸦', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/128407791/', 'maindesc': '小嘴乌鸦(英文名:Carrion Crow,学名:Corvus corone),是雀形目鸦科鸦属的鸟类。上背和下体灰色,余部黑色。冠小嘴乌鸦从小嘴乌鸦(Corvus corone)中分出的种(Knos et al.,2002;Dickinson,2003)。广泛分布于欧洲,在中国分布于新疆西部。', 'viewcount': 2370, 'likecount': 22}, {'id': 27259, 'cnname': '画眉', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/135932411/', 'maindesc': '画眉(英文名:Chinese Hwamei,学名:Garrulax canorus),是雀形目噪鹛科噪鹛属的鸟类。分布于台湾。', 'viewcount': 2178, 'likecount': 53}, {'id': 15415, 'cnname': '夜鹭', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/32861471/', 'maindesc': '夜鹭(英文名:Black-crowned Night-Heron,学名:Nycticorax nycticorax),是鹈形目鹭科夜鹭属的鸟类。水鸟,又名水洼子、灰洼子、星鸦、灰洼子、苍鳽、星鳽、夜鹰(浙江)、夜鹤、夜游鹤(海南)。数量丰富,是很常见的水鸟。头顶、后颈、枕、羽冠及背部黑色,枕部具2-3根狭白色冠羽;下体白色;翅及尾羽灰色。注意夜鹭亚成鸟全身棕色,具有纵纹和点斑,和成鸟羽色差异非常大,模样相近绿鹭。', 'viewcount': 2070, 'likecount': 60}, {'id': 17850, 'cnname': '鹊鸲', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/166748771/', 'maindesc': '鹊鸲(英文名:Oriental Magpie-Robin,学名:Copsychus saularis),是雀形目鹟科鹊鸲属的鸟类。又名猪屎渣、吱渣、信鸟或四喜。分布于中国华南地区及长江以南一带。典型的黑白色鸟类。鹊鸲雄鸟上半部为黑色,在翼处有白斑,下体前黑后白,时常竖起尾巴,把尾翼扭向前方,在地上则常以弹跳方式前进。雌鸟上体灰色。鹊鸲与喜鹊相似,但体形细小得多。鹊鸲性格活泼好动,觅食时常摆尾,不分四季晨昏,在高兴时会在树枝或大厦外墙鸣唱。', 'viewcount': 2009, 'likecount': 87}, {'id': 13964, 'cnname': '麻雀', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/63038961/', 'maindesc': '麻雀(英文名:Eurasian Tree Sparrow,学名:Passer montanus),是雀形目雀科雀属的鸟类。又叫树麻雀(英文名:Tree Sparrow),俗名霍雀、瓦雀、琉雀、家雀、老家贼、只只、嘉宾、照夜、麻谷、南麻雀、禾雀、宾雀,亦叫北国鸟(个别地方方言又称呼为:家雀、户巴拉)。雌雄同色,显著特征为黑色喉部、白色脸颊上具黑斑、栗色头部。喜群居,种群生命力极强。是中国最常见、分布最广的鸟类,亚种分化极多,广布于中国全境,也广布于欧亚大陆。中国产5种麻雀,其中树麻雀就是我们通常所说的麻雀,其他种类如山麻雀、家麻雀比树麻雀少见,生活环境也有所区别。', 'viewcount': 1776, 'likecount': 64}, {'id': 13813, 'cnname': '大杜鹃', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/55599051/', 'maindesc': '大杜鹃(英文名:Common Cuckoo,学名:Cuculus canorus),是鹃形目杜鹃科杜鹃属的鸟类。俗名布谷鸟、郭公、布谷、喀咕。分布于北极圈以外的欧洲、非洲、亚洲,包括中国大陆的中国等地,多栖息于山地及平原的树上以及居民点附近。该物种的模式产地在瑞典。中国有“望帝春心托杜鹃”的神话故事。具有巢寄生的繁殖特点。叫声为两个音节“布谷”或“布谷-布谷”。', 'viewcount': 1715, 'likecount': 42}, {'id': 13899, 'cnname': '棕背伯劳', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/94956501/', 'maindesc': '棕背伯劳(英文名:Long-tailed Shrike,学名:Lanius schach),是雀形目伯劳科伯劳属的鸟类。俗称桂来姆、黄伯劳,英文名直译为长尾伯劳。棕背伯劳特征是粗黑的贯眼纹或顶冠、黑翅、尾长尾黑,上体偏灰,下体偏棕。普遍分布于我国东部沿海及南部,包括台湾、海南等省,是一种很常见的留鸟。伯劳性凶猛,嘴爪均强健有力,善于捕食昆虫、鸟类及其他动物,甚至能击杀比它自己还大的鸟,如鹧鸪之类。90年代在中国江西发现的黑伯劳,被认为是棕背伯劳的黑色型,不足以列为独立鸟种。', 'viewcount': 1644, 'likecount': 66}, {'id': 27314, 'cnname': '灰喜鹊', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/98785381/', 'maindesc': '灰喜鹊(英文名:Azure-winged Magpie,学名:Cyanopica cyanus),是雀形目鸦科灰喜鹊属的鸟类。又名山喜鹊、蓝鹊、蓝膀香鹊、长尾鹊、鸢喜鹊、长尾巴郎。顶冠黑色,两翼及尾天蓝色,余部灰色。灰喜鹊在中国分布较广泛,是常见的鸦类,体型比喜鹊小,性吵嚷,结群栖于开阔松林及阔叶林、公园甚至城镇。飞行时振翼快,作长距离的无声滑翔。在树上、地面及树干上取食,食物为果实、昆虫及动物尸体。该物种是国家三有保护鸟类,安徽省的省鸟。', 'viewcount': 1596, 'likecount': 51}, {'id': 13800, 'cnname': '白胸翡翠', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/43773481/', 'maindesc': '白胸翡翠(英文名:White-throated Kingfisher,学名:Halcyon smyrnensis),是佛法僧目翠鸟科翡翠属的鸟类。也叫白喉翡翠。嘴赤红,头颈和腹部栗色,胸部白色。是一种分布在亚洲南部和西部的翡翠。同大多数猎翠鸟一样,完全是肉食性。白胸翡翠在软石面掘洞为巢,多离水道甚远,繁殖期为4-6月。', 'viewcount': 1557, 'likecount': 16}, {'id': 14589, 'cnname': '费氏牡丹鹦鹉', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/63736361/', 'maindesc': '费氏牡丹鹦鹉费氏牡丹鹦鹉(学名:Agapornis fischeri,英文名:Fischer’s Lovebird)是鹦鹉科牡丹鹦鹉属的鸟类,又叫牡丹鹦鹉、费氏情侣鹦鹉、费氏爱情鸟。是七彩缤纷的小鹦,国内现有9个品种,为较珍贵的人工繁育鸟。常见的品种有琉璃腰牡丹鹦鹉(棕头牡丹鹦鹉)、黄领黑牡丹鹦鹉(黑头牡丹鹦鹉)、金红桃牡丹鹦鹉(桃脸黄牡丹鹦鹉)、小樱哥牡丹鹦鹉(桃脸绿牡丹鹦鹉)及蓝牡丹鹦鹉等品种。牡丹鹦鹉性情凶猛,以强欺弱,发情雌鸟更为突出,叫声大而杂,有时噪声扰人,还可向其他鸟进攻,这时若将雌鸟与雄鸟配对繁育则鸣声锐减,性情好转,所以饲养牡丹鹦鹉以成对为佳。经人工培养还有多种色系的品种:如黄、白、钴蓝、紫、灰、银、乳白及杂纹等。平均寿命约10–15年。分布于非洲中南部地区坦桑尼亚以北,维多利亚湖附近之草原,是近危物种。', 'viewcount': 1545, 'likecount': 47}]} recommendlist={'msg': 'success', 'code': '200', 'result': [{'id': 27016, 'cnname': '台湾斑翅鹛', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/59337771/', 'maindesc': '台湾斑翅鹛(英文名:Taiwan Barwing,学名:Actinodura morrisoniana),是雀形目噪鹛科斑翅鹛属的鸟类。台湾特有种。体型略大的褐色鹛。羽冠蓬松,头侧深栗,上背及腰灰,喉红栗。背中部红褐,胸橄榄褐而具浅色纵纹。腹部及臀棕褐。翼及尾具黑色横斑,尾端白色。', 'viewcount': 14, 'likecount': 0, 'rId': 0}, {'id': 27018, 'cnname': '灰头斑翅鹛', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/130835201/', 'maindesc': '灰头斑翅鹛(英文名:Streaked Barwing,学名:Actinodura souliei),是雀形目噪鹛科斑翅鹛属的鸟类。体大(22厘米)而羽冠蓬松的鹛。体羽多鳞斑。眼先及脸颊前部黑色。冠羽和耳覆羽浅灰。头侧深栗,喉红栗。上背、背、腰、腹及臀部的羽毛黑色,羽缘黄褐而成矛状纹。翼及尾栗色而带细小的黑色横斑。分布于云南、四川。', 'viewcount': 12, 'likecount': 0, 'rId': 0}, {'id': 27019, 'cnname': '纹头斑翅鹛', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/144464161/', 'maindesc': '纹头斑翅鹛(英文名:Hoary-throated Barwing,学名:Actinodura nipalensis),是雀形目噪鹛科斑翅鹛属的鸟类。中等体型(21厘米)的深褐色鹛。两翼及长尾具黑色细小横斑。与其他斑翅鹛的区别在带羽冠的头部多具皮黄色细纵纹。头侧灰色,眼圈狭窄而偏白,髭纹黑色。尾具黑色的端带。下体浅褐灰,至腹部成红棕色。', 'viewcount': 5, 'likecount': 0, 'rId': 0}, {'id': 27013, 'cnname': '长尾奇鹛', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/80071011/', 'maindesc': '长尾奇鹛(英文名:Long-tailed Sibia,学名:Heterophasia picaoides),是雀形目噪鹛科奇鹛属的鸟类。体大的灰色及白色树栖型奇鹛。尾甚长而尖。体羽暗灰。分布于尼泊尔、锡金、不丹、印度、孟加拉、缅甸、老挝、泰国、越南、马来半岛、印度尼西亚以及中国大陆的云南等地,多见于海拔915-2440米间的山脚地带以及常绿阔叶林或山坡阔叶林。该物种的模式产地在尼泊尔。', 'viewcount': 76, 'likecount': 1, 'rId': 0}, {'id': 27014, 'cnname': '灰奇鹛', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/40080841/', 'maindesc': '灰奇鹛(英文名:Gray Sibia,学名:Heterophasia gracilis),是雀形目噪鹛科奇鹛属的鸟类。顶冠及头侧深灰,脸近黑,喉及胸偏白。分布于印度、缅甸以及中国大陆的云南等地,多生活于山坡、村边的小阔叶树上、在海拔较高的地区以及常在松树的顶端活动。栖于山坡阔叶林间。结小群活动。以昆虫和植物种子为食。该物种的模式产地在印度阿萨姆邦。该物种已被列入国家林业局2000年8月1日发布的《国家保护的有益的或者有重要经济、科学研究价值的陆生野生动物名录》。', 'viewcount': 12, 'likecount': 0, 'rId': 0}, {'id': 27015, 'cnname': '褐脸雀鹛', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/94385771/', 'maindesc': '褐脸雀鹛(英文名:Brown-cheeked Fulvetta,学名:Alcippe poioicephala),是雀形目幽鹛科雀鹛属的鸟类。体大(16厘米)的褐色雀鹛。顶冠及颈背灰色,具黑色的长眉纹,下体皮黄色。与灰眶雀鹛及白眶雀鹛的区别为脸颊暖褐色,无白色眼圈且体型较大。', 'viewcount': 19, 'likecount': 0, 'rId': 0}, {'id': 27010, 'cnname': '白眉歌鸫', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/81164131/', 'maindesc': '白眉歌鸫(英文名:Redwing,学名:Turdus iliacus),是雀形目鸫科鸫属的鸟类。是原住于欧洲及亚洲的一种鸫,比相关的欧歌鸫较为细小。它们最特别的是两侧及翼底呈红色,眼睛上有奶白色斑纹,故以“白眉”为名。白眉歌鸫在中国境内比较罕见,偶有越冬鸟至新疆西北部的阿尔泰山,是土耳其的国鸟。', 'viewcount': 256, 'likecount': 4, 'rId': 0}, {'id': 27011, 'cnname': '田鸫', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/58813401/', 'maindesc': '田鸫(英文名:Fieldfare,学名:Turdus pilaris),是雀形目鸫科鸫属的鸟类。体型略大(26厘米)的鸫。灰色的头及腰部与栗褐色的背部成对比,下体白,胸及两胁满布黑色纵纹.', 'viewcount': 79, 'likecount': 2, 'rId': 0}, {'id': 27012, 'cnname': '丽色奇鹛', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/142723601/', 'maindesc': '丽色奇鹛(英文名:Beautiful Sibia,学名:Heterophasia pulchella),是雀形目噪鹛科奇鹛属的鸟类。是海拔迁徙的候鸟,分布于印度、缅甸和中国大陆。该物种的保护状况被评为无危。丽色奇鹛的平均体重约为41.0克。栖息地为亚热带或热带的湿润山地林。该物种的模式产地在印度。', 'viewcount': 28, 'likecount': 2, 'rId': 0}, {'id': 27007, 'cnname': '黑冠黄鹎', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/85684431/', 'maindesc': '黑冠黄鹎(英文名:Black-crested Bulbul,学名:Rubigula flaviventris),是雀形目鹎科鹎属的鸟类。', 'viewcount': 87, 'likecount': 3, 'rId': 0}, {'id': 27008, 'cnname': '锈腹短翅鸫', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/118184891/', 'maindesc': '锈腹短翅鸫(英文名:Rusty-bellied Shortwing,学名:Brachypteryx hyperythra),是雀形目鹟科短翅鸫属的鸟类。是体长约13厘米的短翅鸫。特征为上体蓝灰,下体深铁锈色。细小的眉纹白色(部分被掩盖),眼先黑色。雌鸟:上体橄榄褐色,下体浅铁锈色,腹中心白色。甚不惧人。栖居林下密丛。分布于印度、锡金以及中国大陆的云南等地,一般生活于地面、见于以栎树为主的常绿阔叶林以及喜在密林下木、灌木丛或竹丛间活动。', 'viewcount': 29, 'likecount': 2, 'rId': 0}, {'id': 27009, 'cnname': '白喉短翅鸫', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/79864741/', 'maindesc': '白喉短翅鸫(英文名:Lesser Shortwing,学名:Brachypteryx leucophris),是雀形目鹟科短翅鸫属的鸟类。一种体甚小而腿长的短翅鸫,约13厘米长,外形和画眉鸟相似。它是一种杂食性卵生鸟类,性羞怯。', 'viewcount': 62, 'likecount': 5, 'rId': 0}, {'id': 27004, 'cnname': '白喉冠鹎', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/142725291/', 'maindesc': '白喉冠鹎(英文名:White-throated Bulbul,学名:Alophoixus flaveolus),是雀形目鹎科冠鹎属的鸟类。体型略大(22厘米)而具羽冠的褐色鹎。白色的喉膨起,下体黄色。似白喉冠鹎但较鲜亮,上体褐色较重,腹部为鲜亮的柠檬黄色。', 'viewcount': 107, 'likecount': 3, 'rId': 0}, {'id': 27005, 'cnname': '白颊鹎', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/96056311/', 'maindesc': '白颊鹎(英文名:Himalayan Bulbul,学名:Pycnonotus leucogenys),是雀形目鹎科鹎属的鸟类。中等体型,是鹎科的一种鸣禽。分布在阿富汗、不丹、印度、塔吉克斯坦及沙特阿拉伯等地区。白颊鹎雏鸟若与人一起生活,则会变得对人类友善。是巴林的国鸟。', 'viewcount': 378, 'likecount': 12, 'rId': 0}, {'id': 27006, 'cnname': '黑头鹎', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/143687661/', 'maindesc': '黑头鹎(英文名:Black-headed Bulbul,学名:Brachypodius atriceps),是雀形目鹎科鹎属的鸟类。分布于印度、孟加拉、中南半岛、印度尼西亚、菲律宾以及中国大陆的云南等地,多见于乔木枝头。该物种的模式产地在印度尼西亚苏门答腊。', 'viewcount': 426, 'likecount': 8, 'rId': 0}, {'id': 26997, 'cnname': '白冠攀雀', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/44930351/', 'maindesc': '白冠攀雀(英文名:White-crowned Penduline-Tit,学名:Remiz coronatus),是雀形目攀雀科攀雀属的鸟类。小型鸟类。分布于中亚至中国西北及俄罗斯东南部。一般栖息于近水的苇丛和柳、桦、杨等阔叶树间。主要以昆虫为食,也吃植物的叶,花,芽,花粉和汁液。捕获猎物的方式和一般的山雀相同。冬季结群,通常比其他攀雀更喜栖于树上。', 'viewcount': 54, 'likecount': 5, 'rId': 0}, {'id': 26998, 'cnname': '金冠树八哥', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/89715231/', 'maindesc': '金冠树八哥(英文名:Golden-crested Myna,学名:Ampeliceps coronatus),是雀形目椋鸟科金冠树八哥属的鸟类。分布于印度、缅甸、泰国以及中国大陆的云南、广东等地。该物种的模式产地在缅甸德林达依省。', 'viewcount': 136, 'likecount': 2, 'rId': 0}, {'id': 27000, 'cnname': '黄眉林雀', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/44576741/', 'maindesc': '黄眉林雀(英文名:Yellow-browed Tit,学名:Sylviparus modestus),是雀形目山雀科黄眉林雀属的鸟类。体小(10厘米)而异型的山雀。外形似柳莺或啄花鸟。体羽大致橄榄色,羽冠短,狭窄的黄色眼圈,浅黄色短眉纹有时被覆盖;腿甚显粗壮。与火冠雀的区别在具冠羽而腰部无浅色反差。该物种的模式产地在尼泊尔。', 'viewcount': 72, 'likecount': 3, 'rId': 0}, {'id': 26994, 'cnname': '双辫八色鸫', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/32073311/', 'maindesc': '双辫八色鸫(英文名:Eared Pitta,学名:Hydrornis phayrei),是雀形目八色鸫科蓝八色鸫属的鸟类。分布于中国西南部及东南亚。为世界濒危物种其中一种,是联合国《濒危野生动物名录》其中之一。', 'viewcount': 74, 'likecount': 3, 'rId': 0}, {'id': 26995, 'cnname': '栗头八色鸫', 'coveraddress': 'https://download.ams.birds.cornell.edu/api/v1/asset/142168811/', 'maindesc': '栗头八色鸫(英文名:Rusty-naped Pitta,学名:Hydrornis oatesi),是雀形目八色鸫科蓝八色鸫属的鸟类。体型圆胖,尾短,腿长,常在森林底层或低植被中找食无脊椎动物。叫声简单哀婉。头部栗褐色;前额、两颊、颈侧、喉至上胸渲染粉红色;上体、尾表暗绿,腰沾蓝色,上背栗褐色。下体茶黄,肛周呈棕白色。上嘴黑色,下嘴黄褐色;眼虹膜棕红或红褐色;跗蹠灰白色或角褐色。主要栖息在海拔1800米以下的热带、亚热带的常绿阔叶林中,单个或成对在林下阴湿处活动觅食,喜在夜间鸣叫。主要以昆虫为食,也兼吃种子和果实。分布于中南半岛,中国的东南沿海地区和太平洋诸岛屿。', 'viewcount': 26, 'likecount': 2, 'rId': 0}]} ================================================ FILE: 2020/6-17-Bird-Sound-crawl/download_sound.py ================================================ # -*- coding: utf-8 -*- ''' 要全部下载 ''' from urllib.request import urlretrieve import os # from data import hotranklist as soundList from data import recommendlist as soundList import requests bdurl='http://bird.snowyevening.com:8008/api/birddetail' headers={ 'Content-Type':'application/json;charset=UTF-8', 'User-Agent':'LDBird/3.2.4 (iPod touch; iOS 13.4; Scale/2.00)', } def createfiles(filepathname): try: os.makedirs(filepathname) except Exception as err: print(str(filepathname) + "已经存在!") def cbk(a,b,c): '''''回调函数 @a:已经下载的数据块 @b:数据块的大小 @c:远程文件的大小 ''' per=100.0*a*b/c if per>100: per=100 # print('%.2f%%' % per) print('\r %.2f%%' % per,end="") def main(): for it in soundList['result']:#[5:]: print(it['id']) dt={ "applan": "zh-Hans", "appvision": "3.2.4", "birdId": f"{it['id']}" } rs=requests.post(headers=headers,url=bdurl,json=dt) # print(rs.text) js=rs.json() sound=js['result']['soundList'][1]#只下载第一个音频 mp3address=sound['mp3address'] # fn=f"sounds/{mp3address.split('/')[-2]}.mp3" fn=f"sounds/{mp3address.replace('https://','').replace('http://','')}" print(fn) #如果不存在 pn='/'.join(fn.split('/')[:-1]) createfiles(pn) urlretrieve(mp3address,fn,cbk) print()#空行 print('下载完毕',mp3address) print('-'*30) # break pass if __name__ == "__main__": main() pass ================================================ FILE: 2020/6-17-Bird-Sound-crawl/sound_proxy.py ================================================ # -*- coding: utf-8 -*- """ sound_proxy.py: 执行 mitmweb -s sound_proxy.py """ from mitmproxy import ctx from mitmproxy.http import HTTPFlow from mitmproxy import http import json headers={ 'Content-Type':'audio/mpeg' } class sound: def request(self, flow: HTTPFlow): print(flow.request.host,'\t',flow.request.path) # return # 判断网址 if 'download.ams.birds.cornell.edu' in flow.request.host and 'audio' in flow.request.path:#过滤网址 #返回mp3 response fp=f'sounds/{flow.request.host}/{flow.request.path[1:]}' print('返回mp3 response',fp) with open(fp,'rb') as f: sd=f.read() #response flow.response = http.HTTPResponse.make( status_code= 200,headers=headers, content=sd, ) print('mp3文件大小',len(sd)) pass addons = [ sound() ] ================================================ FILE: 2020/6-17-EXIF-GPS/README.md ================================================ # 读取相片的EXIF,并添加GPS坐标 - 视频 - [寻找黄河源头!读取相片的EXIF信息,并添加GPS坐标](https://www.bilibili.com/video/BV1n54y1B77V/) - 软件App - 奥维互动地图 - 参考 - 微博 https://weibo.com/2612164690/FmfjLFtH3 - [长江、黄河、澜沧江源头地理位置重新认定](http://blog.sina.com.cn/s/blog_70f293fb0101b66r.html) - [gpsphoto文档](https://pypi.org/project/gpsphoto/) - 需求 - 黄河源头GPS坐标 - 看到很多视频纪录片,很多人去膜拜黄河源头国家地理标志 - 自己也想过去膜拜一下 - 可是哪些视频总是不说清楚路线图,怎样行车才能到达 - 便自己在网上搜集资料 - 步骤 - 黄河源头国家地理坐标 北纬35°01'10.4"N 东经95°59'24.2"E - 转换成小数格式 35.019564,95.990063 - 在奥维互动地图输入坐标,即可看到源头位置 - 两湖一碑,牛头碑 坐标点 东经97.492676, 34.908458 - 安装 - pip3 install gpsphoto - 在iPad上显示 - 相片App - 上划相片,显示地点 - 显示附近的相片 - 在地图App上显示 - 在【奥维互动地图】上点击,获取坐标 ================================================ FILE: 2020/6-17-EXIF-GPS/exif-gps.py ================================================ # -*- coding: utf-8 -*- from GPSPhoto import gpsphoto #读取GPS信息 photo = gpsphoto.GPSPhoto('黄河源头.jpg') photo.getGPSData() ''' {'Latitude': 35.019564, 'Longitude': 95.990063, 'Altitude': 0, 'UTC-Time': '18:58:14', 'Date': '05/31/2020'} ''' #写入GPS坐标 photo = gpsphoto.GPSPhoto('牛头碑.jpg') info = gpsphoto.GPSInfo((34.908458,97.492676)) photo.modGPSData(info, 'new_photo.jpg') #把new_photo.jpg转到iPad上查看地图 ================================================ FILE: 2020/6-22-iPad-Draw-on-Map/README.md ================================================ # iPad,在地图上绘画 - 视频 [使用iPad,在地图上绘画,自驾游路线图,路标](https://www.bilibili.com/video/BV1Mv411B7zS/) - 准备 - iPad Pencil ,最好有它 - 安装App: - MapDraw - 奥维互动地图 ### 1. MapDraw 可以直接在地图上绘画 有导出功能,右下角显示MapDraw商标 优点 地图可以放大缩小,可以跳转到别的省区 演示功能很好 问题: 只有行政地图,卫星地图很不清晰 绘画功能比较简单,图标,线条,文字都要自己画出来 绘画后撤销功能比较差,只有reset重置功能 ### 2. 奥维互动地图 不能在地图上直接绘画 有一些专业绘制地图的功能,不适用 各种地图很丰富,行政地图,卫星地图,3D地图,可以随意切换角度 调整后视角后,截图 ### 3. 绘画软件 Explain Everything 概念画板 - 3.1 概念画板 专业绘画 但没有【添加文字】【添加图标】功能 - 3.2 Explain Everything 很好用,是恰当的工具 首先导入地图截图 使用画笔功能,切换颜色,在地图画线或其他 使用文字功能,在某些地图添加备注 完成,导出图片 ================================================ FILE: 2020/7-30-PDF-decrypt/README.md ================================================ ## 解密PDF - 参考 - PyPDF2 1.26.0 https://pypi.org/project/PyPDF2/ - [深入学习Python解析并解密PDF文件内容的方法](https://www.cnblogs.com/wj-1314/p/9649837.html) - [用Python暴力破解PDF密码](https://zhuanlan.zhihu.com/p/61969807) - [github文档](https://github.com/weidylan/Office_Automation_by_Using_Python/blob/master/Exp8.Decode%20the%20password%20for%20PDFs/Example.8.Decode_the_password_for_PDFs(%E6%9A%B4%E5%8A%9B%E7%A0%B4%E8%A7%A3PDF%E5%AF%86%E7%A0%81).ipynb) - Go语言 解码PDF - [unipdf-examples](https://github.com/unidoc/unipdf-examples/blob/v3/security/pdf_unlock.go) - 运行 go run pdf_unlock.go PyPDF2-output.pdf secret go-out.pdf - 要购买证书 To get rid of the watermark - Please get a license on https://unidoc.io - 安装 - pip install PyPDF2 ================================================ FILE: 2020/7-30-PDF-decrypt/pdf_decrypt.py ================================================ # -*- encoding: utf-8 -*- ''' @File : pdf_decrypt.py @Time : 2020/07/30 16:48:24 @Author : play4fun @Desc : ''' def t1(): #读取PDF文档 import PyPDF2 PDFfile='/Users/play/Downloads/UM_HERO_CS_REVA_WEB.pdf' pdf_obj=open(PDFfile,'rb') pdf_reader=PyPDF2.PdfFileReader(pdf_obj) pdf_reader.isEncrypted#False 没有加密 def 加密(): from PyPDF2 import PdfFileWriter, PdfFileReader output = PdfFileWriter() p1=pdf_reader.getPage(2)#添加页面 output.addPage(p1) p1=pdf_reader.getPage(4) output.addPage(p1) p1=pdf_reader.getPage(6) output.addPage(p1) password = "secret" output.encrypt(password)#加密 outputStream = open("PyPDF2-output.pdf", "wb") output.write(outputStream)#写入新文档 outputStream.close() pass def 解密(): from PyPDF2 import PdfFileReader am = open("PyPDF2-output.pdf", "rb") rd1 = PdfFileReader(am, strict=False) rd1.isEncrypted #True ter = PdfFileWriter() #新建 rs=rd1.decrypt('secret')#解密 rs# 1 ter.appendPagesFromReader(rd1) ter.write(open('decrypted_filename.pdf', 'wb')) pass if __name__ == "__main__": main() ================================================ FILE: 2020/7-30-PDF-decrypt/pdf_unlock.go ================================================ /* * Unlocks PDF files, tries to decrypt encrypted documents with the given password, * if that fails it tries an empty password as best effort. * * Run as: go run pdf_unlock.go input.pdf output.pdf */ package main import ( "fmt" "os" pdf "github.com/unidoc/unipdf/v3/model" ) func main() { if len(os.Args) < 4 { fmt.Printf("Usage: go run pdf_unlock.go input.pdf output.pdf\n") os.Exit(1) } inputPath := os.Args[1] password := os.Args[2] outputPath := os.Args[3] err := unlockPdf(inputPath, outputPath, password) if err != nil { fmt.Printf("Error: %v\n", err) os.Exit(1) } fmt.Printf("Complete, see output file: %s\n", outputPath) } func unlockPdf(inputPath string, outputPath string, password string) error { pdfWriter := pdf.NewPdfWriter() f, err := os.Open(inputPath) if err != nil { return err } defer f.Close() pdfReader, err := pdf.NewPdfReader(f) if err != nil { return err } isEncrypted, err := pdfReader.IsEncrypted() if err != nil { return err } // Try decrypting both with given password and an empty one if that fails. if isEncrypted { auth, err := pdfReader.Decrypt([]byte(password)) if err != nil { return err } if !auth { return fmt.Errorf("Wrong password") } } numPages, err := pdfReader.GetNumPages() if err != nil { return err } for i := 0; i < numPages; i++ { pageNum := i + 1 page, err := pdfReader.GetPage(pageNum) if err != nil { return err } err = pdfWriter.AddPage(page) if err != nil { return err } } fWrite, err := os.Create(outputPath) if err != nil { return err } defer fWrite.Close() err = pdfWriter.Write(fWrite) if err != nil { return err } return nil } ================================================ FILE: 2021/1-19-macOS-Window-On-Top/README.md ================================================ ## 如何让你的窗口“AlwaysOnTop” 总是置顶 - 视频 [【经验】macos窗口置顶 AfloatX 2021](https://www.bilibili.com/video/BV12t4y1z7Vi/) - 参考 - [【Mac效率】如何让你的窗口“AlwaysOnTop”](https://www.jianshu.com/p/2563250da71d) - Afloat过期,5年没更新 https://github.com/rwu823/afloat - 对新系统无效 - 要关闭SIP - https://apple.stackexchange.com/questions/327541/always-on-top-window-on-macos - AfloatX(用于Catalina):https://github.com/jslegendre/AfloatX - MacForge 是macOS的开源插件管理器。它使您可以发现,安装和管理插件,以改善macOS的用户体验,而无需手动克隆/构建或复制文件。 https://github.com/MacEnhance/MacForge - 要关闭SIP - 下载 https://www.macenhance.com/macforge - 其他方法 - 购买一个大屏显示器,屏幕空间大,放下更多窗口 - 2个显示器一起工作 - 最好是21:9宽屏 ================================================ FILE: 2021/1-24-desert-forest-destroyed/README.md ================================================ ## 敦煌阳关国营林场,万亩沙漠防护林被毁 - 自制视频 ? - B站 该视频内容涉及不适宜内容,不予审核通过。 - 申诉,回复:您好 小伙伴 这边帮您核实了 您的稿件内容整体导向不良不适宜进行展示哦 - 今日头条 - [【挖掘】敦煌阳关国营林场,万亩沙漠防护林被毁](https://www.ixigua.com/6921180907504140803) - 能看到吗? - 我的账号 [全境旅行](https://www.ixigua.com/home/1789618645372350) - 百度网盘 - 链接: https://pan.baidu.com/s/1aHd0l0LW-ZtQTQHH8EZTbQ 提取码: h3xx 复制这段内容后打开百度网盘手机App,操作更方便哦 - 结论 - 从媒体报道来看,阳关林场被毁一个重要原因是当地为了种植葡萄,这暴露了以牺牲生态环境为代价换取一时经济发展的短视行为。 - 由此而言,牢固树立“绿水青山就是金山银山”的生态文明理念,也是当地亟需补上的一堂课。 - 官方报道 - [敦煌防沙林场被毁已于2020年12月16日开庭](https://www.bilibili.com/video/BV1M5411J7Z3/) - 新华社 [“剃光头”式砍伐触目惊心!万亩沙漠防护林被毁,敦煌防沙最后屏障几近消失](https://www.bilibili.com/video/BV1wv411s7tC) - 澎湃新闻 直播 [“剃光头式砍伐”直击敦煌国营林场万亩沙漠防护林被破坏现场](https://www.bilibili.com/video/BV1Ff4y1C7Vm) - [央视网搜索](https://search.cctv.com) - 搜索关键词,按时间排序,最新发布 - 阳关林场 - 敦煌 - 沙漠防护林 - 阳关 葡萄 - [人民网评:万亩沙漠防护林被毁,必须一查到底!](https://news.cctv.com/2021/01/22/ARTIaycK6cdqNq9Lo1pHBnrf210122.shtml) - [“下乡财神”常永义:一个农大教授的葡萄情结](http://sannong.cntv.cn/2015/09/23/ARTI1442994355480236.shtml) - [《中国影像方志》 第366集 甘肃敦煌篇](https://tv.cctv.com/2019/10/07/VIDE3q9t8QzHPKmMeda7Pmp3191007.shtml) - [CCTV-2财经频道 生财有道节目,敦煌红地球葡萄](https://tv.cctv.com/2018/11/30/VIDEnCgxOcREUMx85Xhcs8S0181130.shtml) - 来源:央视网2018年11月30日 19:23 - [《生财有道》 20171106 咱们家乡有特产(秋收系列)——西出阳关看丰收 葡萄又甜又赚钱](https://tv.cctv.com/2017/11/06/VIDEgcnbefPLX51CH1XvsBa6171106.shtml) - 来源:央视网2017年11月06日 21:34 ================================================ FILE: 2021/1-27-server-psutil/README.md ================================================ ## 监控服务器,并向钉钉报警 - 视频 [【编程】监控服务器,并向钉钉报警,Python psutil DingtalkChatbot crontab](https://www.bilibili.com/video/BV1Yv411s73w/) - 推荐图书 - [Python自动化运维:技术与最佳实践](https://union-click.jd.com/jdc?e=&p=AyIGZRhfHQARDlMTWRUyEgZUGF8RAxQBVRNZHQIiQwpDBUoyS0IQWhkeHAxBFQQAQB1AWQkFGk1dRFkRdQtUWgxxAV4pVEBkRAtfGhtASEM7Qw4ZAhMGVh9fFAQUB10ZUxUVRUQLR1dHQ1AQAlgFSQ5ARhcrW09SVno0YBN3QBFVBxM7EUVVDlRGKxkOIgZlG1oUAxYOVh9SFzIiB1IrGnsCEwNSGF0UAyIGZRtcFQIbD1AfXRIAEg5lHFscMkJbBVADSlQRBlATayUyETdlK1slASJFO09aQgRCAgZLCBBQGgIGTw9GB0dUXR1fF1YVB1QTXBILIgVUGl8c) - [Python自动化运维快速入门](https://union-click.jd.com/jdc?e=&p=AyIGZRhYFQcQBFQTWRMyEgZUGFwUBxYCVRhTEAsiQwpDBUoyS0IQWhkeHAxBFQQAQB1AWQkFGk1dRFkRdQtUWgxxAV4pVEBkRAtfGhtASEM7Qw4ZAhMGVhxaEAYXB1YTXhwVRUQLR1dHQ1AQAlgFSQ5ARhcrIRBBSVojXQR1XRVPCEEuD39xbApBKxkOIgZlG1oUAxYOVh9SFzIiB1IrGnsCEwVRE1McByIGZRtcFQIbD1AcWhUAGwdlHFscMkJbBVADSlQRBlATayUyETdlK1slASJFO09aQgRCAgZLCBBQGgIGTw9GB0dUXR1fF1YVB1QTXBILIgVUGl8c) - psutil https://pypi.org/project/psutil/ - 安装 - pip install psutil - 硬盘 - disk = psutil.disk_usage('/') - 内存 - mem = psutil.virtual_memory() - CPU - cpup = psutil.cpu_percent(interval=10) - IP - psutil.net_if_addrs() - 钉钉 https://github.com/zhuifengshen/DingtalkChatbot - 新建 群聊 - 新建 机器人 - webhook - https://oapi.dingtalk.com/robot/send?access_token=xx - 密钥 可以重置 - xx - api - 服务器部署 - 多台服务器,部署麻烦 - Python跨平台打包 pyinstaller - 使用 docker - golang 语言 - 安装Python3 - CentOS - yum install python36u-pip - Ubuntu - apt-get install python3.6 - pip install virtualenv - 找出python3的位置 - which python3 - /usr/bin/python3.6 - 虚拟环境 - virtualenv -p /usr/bin/python3.6 ~/py36 - 激活虚拟环境 source ~/py36/bin/activate - 安装 lib - pip install psutil - pip install DingtalkChatbot - 测试 - which python3 - /home/work/py36/bin/python3 /home/work/python/server_report.py - crontab 定时执行 [一文精通 crontab从入门到出坑](https://zhuanlan.zhihu.com/p/58719487) - crontab -e - 每隔20分钟执行 - */20 * * * * /home/work/py36/bin/python3 /home/work/python/server_report.py - 早上9.00固定发送钉钉消息 - * 9 * * * /home/work/py36/bin/python3 /home/work/python/server_report.py ================================================ FILE: 2021/1-27-server-psutil/server_report.py ================================================ # -*- coding: utf-8 -*- # @Time : 2021/1/27 10:33 # @File : t1.py """ t1.py: """ import psutil def cpu_percent(): rt = '' # psutil.net_if_addrs() d = psutil.net_if_addrs() ip = '' for itf, l in d.items(): # print(itf) for x in l: print(x,x.netmask) # print(x.netmask) # if x.netmask=='255.255.255.0':#网段掩码 # print('\t',x.address) if x.address.startswith('192.'): # TODO 修改ip print('\tIP:', x.address) ip = x.address break # if isinstance(): # mem = psutil.virtual_memory() if mem.percent >= 70: rt += f'内存-百分比:{mem.percent}\n' # psutil.net_if_stats() disk = psutil.disk_usage('/') if disk.percent >= 70: rt += f'硬盘-百分比:{disk.percent}\n' # cpu_count=psutil.cpu_count() # for i in range(cpc): # print(f'CPU {i} : {psutil.cpu_percent(i)}') # s1 = f'CPU 10秒统计: {psutil.cpu_percent(interval=10)}' # print(s1) # s2 = f'{cpu_count}个CPU 10秒统计 : {psutil.cpu_percent(interval=10, percpu=True)}' # print(s2) cpup = psutil.cpu_percent(interval=10) if cpup >= 10: rt += f'CPU 10秒统计:{cpup}\n' # rt = f'''服务器 {ip} # 硬盘-百分比:{disk} # 内存-百分比:{mem.percent} # {s1} # {s2} # # ''' if rt != '': rt = f'统计:\n服务器 {ip}\n' + rt return rt pass def main(): from dingtalkchatbot.chatbot import DingtalkChatbot # WebHook地址 webhook ='https://oapi.dingtalk.com/robot/send?access_token=xx' secret ='xx' # 初始化机器人小丁 xiaoding = DingtalkChatbot(webhook, secret=secret) # 方式二:勾选“加签”选项时使用(v1.5以上新功能) # Text消息@所有人 msg = cpu_percent() if msg == '': print('服务器正常,不发消息') return # msg = '统计:\n' + cpu print(msg) rs = xiaoding.send_text(msg=msg, is_at_all=False, at_dingtalk_ids=['xx']) # TODO @某人 print('发送完毕', rs) pass if __name__ == '__main__': main() # cpu_percent() ================================================ FILE: 2021/1-31-scapy-graph-svg/Graphviz/dot/test.dot ================================================ digraph G { rankdir=LR; a -> b; b -> c; subgraph x{ rank=same; b->d; } subgraph y{ //rank = same; d->e; } subgraph z{ rank=same; c->e; } } ================================================ FILE: 2021/1-31-scapy-graph-svg/Graphviz/生成动态路由轨迹图.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 生成动态路由轨迹图\n", "\n", "图书\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from scapy.all import traceroute" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# target=['cn.bing.com','bing.com']\n", "target=['www.apple.com.cn',]\n", "dport = [80,443] #扫描的端口列表" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Begin emission:\n", "Finished sending 60 packets.\n", "\n", "Received 62 packets, got 60 answers, remaining 0 packets\n", " 115.152.251.162:tcp443 115.152.251.162:tcp80 \n", "1 172.17.0.1 11 172.17.0.1 11 \n", "2 115.152.251.162 SA 115.152.251.162 SA \n", "3 115.152.251.162 SA 115.152.251.162 SA \n", "4 115.152.251.162 SA 115.152.251.162 SA \n", "5 115.152.251.162 SA 115.152.251.162 SA \n", "6 115.152.251.162 SA 115.152.251.162 SA \n", "7 115.152.251.162 SA 115.152.251.162 SA \n", "8 115.152.251.162 SA 115.152.251.162 SA \n", "9 115.152.251.162 SA 115.152.251.162 SA \n", "10 115.152.251.162 SA 115.152.251.162 SA \n", "11 115.152.251.162 SA 115.152.251.162 SA \n", "12 115.152.251.162 SA 115.152.251.162 SA \n", "13 115.152.251.162 SA 115.152.251.162 SA \n", "14 115.152.251.162 SA 115.152.251.162 SA \n", "15 115.152.251.162 SA 115.152.251.162 SA \n", "16 115.152.251.162 SA 115.152.251.162 SA \n", "17 115.152.251.162 SA 115.152.251.162 SA \n", "18 115.152.251.162 SA 115.152.251.162 SA \n", "19 115.152.251.162 SA 115.152.251.162 SA \n", "20 115.152.251.162 SA 115.152.251.162 SA \n", "21 115.152.251.162 SA 115.152.251.162 SA \n", "22 115.152.251.162 SA 115.152.251.162 SA \n", "23 115.152.251.162 SA 115.152.251.162 SA \n", "24 115.152.251.162 SA 115.152.251.162 SA \n", "25 115.152.251.162 SA 115.152.251.162 SA \n", "26 115.152.251.162 SA 115.152.251.162 SA \n", "27 115.152.251.162 SA 115.152.251.162 SA \n", "28 115.152.251.162 SA 115.152.251.162 SA \n", "29 115.152.251.162 SA 115.152.251.162 SA \n", "30 115.152.251.162 SA 115.152.251.162 SA \n" ] } ], "source": [ "res,unans = traceroute(target,dport=dport,retry=-2) #启动路由跟踪 " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "res.graph(target=\"> test-app4.svg\") #生成svg矢量图形" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0mtraceroute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mdport\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m80\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mminttl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mmaxttl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m30\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msport\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0mRandShort\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0ml4\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfilter\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m\n", "Instant TCP traceroute\n", "\n", ":param target: hostnames or IP addresses\n", ":param dport: TCP destination port (default is 80)\n", ":param minttl: minimum TTL (default is 1)\n", ":param maxttl: maximum TTL (default is 30)\n", ":param sport: TCP source port (default is random)\n", ":param l4: use a Scapy packet instead of TCP\n", ":param filter: BPF filter applied to received packets\n", ":param timeout: time to wait for answers (default is 2s)\n", ":param verbose: detailed output\n", ":return: an TracerouteResult, and a list of unanswered packets\n", "\u001b[0;31mFile:\u001b[0m /usr/local/lib/python3.7/dist-packages/scapy/layers/inet.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "traceroute?" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unans" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "plot() missing 1 required positional argument: 'f'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mres\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: plot() missing 1 required positional argument: 'f'" ] } ], "source": [ "res.plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: 2021/1-31-scapy-graph-svg/README.md ================================================ # scapy生成动态路由轨迹图 - 视频 [【编程】scapy生成动态路由轨迹图 Python docker Ubuntu graphviz](https://www.bilibili.com/video/BV15r4y1K7wj/) - [Python自动化运维:技术与最佳实践](https://union-click.jd.com/jdc?e=&p=AyIGZRhfHQARDlMTWRUyEgZUGF8RAxQBVRNZHQIiQwpDBUoyS0IQWhkeHAxBFQQAQB1AWQkFGk1dRFkRdQtUWgxxAV4pVEBkRAtfGhtASEM7Qw4ZAhMGVh9fFAQUB10ZUxUVRUQLR1dHQ1AQAlgFSQ5ARhcrW09SVno0YBN3QBFVBxM7EUVVDlRGKxkOIgZlG1oUAxYOVh9SFzIiB1IrGnsCEwNSGF0UAyIGZRtcFQIbD1AfXRIAEg5lHFscMkJbBVADSlQRBlATayUyETdlK1slASJFO09aQgRCAgZLCBBQGgIGTw9GB0dUXR1fF1YVB1QTXBILIgVUGl8c) - 第3章 3.3 - 步骤 - 启动docker - https://hub.docker.com/r/play4fun/moviepy_chinese_font - 更新apt源,sources.list - 安装 - apt-get install graphviz - pip3 install scapy - 代码 - [DOT + graphviz 轻松画图](https://www.cnblogs.com/alenoscar/p/6064737.html) - [ubuntu下安装Graphviz](https://blog.csdn.net/caiandyong/article/details/44408831) ================================================ FILE: 2021/1-4-bilibili_api/README.md ================================================ ## bilibili_api - 视频 [【编程】哔哩哔哩的各种API,Python](https://www.bilibili.com/video/BV1Q64y1Z7LD/) ## 获取最新代码 - git clone -b develop https://github.com/Passkou/bilibili_api.git - cd bilibili_api/ - python setup.py install - pip - https://pypi.org/project/bilibili-api/ - 要先更新Python到3.8以上 - pip install bilibili-api==3.1.6 - 不是最新代码 - 文档 - 快速开始 https://github.com/Passkou/bilibili_api#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B - 网页搜索 https://github.com/Passkou/bilibili_api/blob/develop/docs/%E6%A8%A1%E5%9D%97/bilibili_api.md#web_search - 新增上传视频接口 https://github.com/Passkou/bilibili_api/issues/45 ================================================ FILE: 2021/1-5-github-markdown-html/README.md ================================================ ## 把repo仓库的Markdown转成HTML - 视频 ? - 上个视频 [【编程】Github API 的使用-PyGithub](https://www.bilibili.com/video/BV1fh411Z777/) - markdown - 不错 https://www.devdungeon.com/content/convert-markdown-html-python - [Python下将Markdown转为HTML](https://www.jianshu.com/p/0eff6cba1b7f) - [Python Markdown Extensions](https://www.dj-bauer.de/python-markdown-extensions-en.html) ``` import markdown markdown.markdownFromFile( input='input.md', output='output.html', encoding='utf8', ) ``` ================================================ FILE: 2021/1-5-github-markdown-html/repo_markdown_html1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2021/1/5 00:20 # @File : repo_markdown_html1.py """ repo_markdown_html1.py: """ from github import Github from pprint import pprint from config import token import codecs, markdown g = Github(token) def main(): repo = g.get_repo("makelove/Programer_Log") for content in repo.get_contents(''): print('-' * 4, content.name) if content.name.endswith('.md'): # break html = markdown.markdown(content.decoded_content.decode()) # 创建文件夹 fp22 = 'repo_html/' + content.name + '.html' with codecs.open(fp22, mode="wb", encoding="utf-8") as output_file: output_file.write(html) print('markdown html', fp22) pass pass if __name__ == '__main__': main() ================================================ FILE: 2021/2-23-great-code/README.md ================================================ ## 怎样 编写出 高质量代码 ? - 视频 [【编程】怎样 编写Python【高质量代码】?推荐2本图书](https://www.bilibili.com/video/BV1Jb4y1R7C7/) - 我的建议 - 添加注释 笔记 - 合理规划 代码结构 - 函数 - 模块,类 - 数据结构 - 优雅的代码 - 看别人是怎么写代码的 - 看下面2本 图书 - 图书 - [《编写高质量代码:改善Python程序的91个建议》](https://union-click.jd.com/jdc?e=&p=AyIGZRprFQIbA1McXB0yVlgNRQQlW1dCFFlQCxxKQgFHRE5XDVULR0UVAhsDUxxcHR1LQglGaxFRbFEnfCxDYWlfBnAwFFxVdxRmHWUOHjdUK1sUAxMDXBhfHAAiN1Uca0NsEgZUGloUBxMDVitaJQIVB1AaXxcHGwFTHVglBRIOZUsHRUlKWAMYWhAKIjdlGGslMhI3VisZewIWUgcZXUBSQgMHSV4TVkJUVh1aRwEUVVdMDBJQRlUBK1kUAxYO) - [《Effective Python:编写高质量Python代码的59个有效方法》](https://union-click.jd.com/jdc?e=&p=AyIGZRtSFAcRAVQZWBUyEgZUGFsdBRMHUBxdHQAiQwpDBUoyS0IQWhkeHAxfEE8HCllHGAdFBwsCEwZWG1MSAxICUh1TFx1LQglGa1VnEm49XzlPYFcEAxkwZl5FXTVHBmUOHjdUK1sUAxMDXBhfHAAiN1Uca1RsEgZUGV0SBRQ3VCtbEgIXBlEZXxcCFgFTK1wVCyJXCUsQTV1EBFQeUyUyIgRlK2sVMhE3F3VbEVdABVNOC0UGQFVQHQ9FUREBVElYE1AQUAIcCUFQRjdXGloRCw%3D%3D) ================================================ FILE: 2021/2-24-movie-cut/README.md ================================================ ## 剪映 App的使用体验 - 视频 [【经验】剪映 App的使用体验,怎样剪辑视频?](https://www.bilibili.com/video/BV18r4y1N7Ye/) - 官网 - https://lv.ulikecam.com/ - 支持多平台 - iOS iPhone手机 - Android 安卓 - macOS 苹果电脑系统 - Windows - 文本 - 添加字幕,经常用 - 识别字幕,识别视频里的对话 - 支持英文 - 识别歌词 - 素材库 - 导入 黑白场,用来分割片段,添加字幕 - 音频 - 导入mp3,在软件自带的素材库找不到 - 使用 音效素材,收音不理想 - 剪辑理念 - 看一遍所有的素材,打上备注 - 构思一个大概方案 - 哪些主题,段落 - 使用哪些素材 - 就像【写作文】一样 - 导入素材进行剪辑 - 剪取合适的片段,去掉不合格的片段 - 插入黑白场,区分段落 - 打上字幕,帮助自己理清思路 - 音频 - 一般保留原声 - 收音不好,使用其他音效代替 - 加入音乐 - 检查 - 导出 - 一般是1080p 30帧 - 如果导出效果变差 - 提高到 2k 60帧 - 提醒 观众 点赞关注收藏 - 片头 - 片尾 - 拍摄设备 - GoPro Max 全景相机 - 摩托车骑行log,挂在头盔下巴 - 红米Note 7 Pro 手机 - 手持,随手拍,双手持稳定一点 - 大疆无人机,航拍 - 佳能70D单反,远距离拍摄 - 镜头伸缩,构图 - 对焦,从模糊到清晰 ================================================ FILE: 2021/2-28-GitHub-short-link/README.md ================================================ ## 使用【GitHub Page】制作【短链接平台】 - 视频 - [【编程】使用【GitHub Page】制作 【短链接服务】,免费!Python](https://www.bilibili.com/video/BV1Tf4y147HD/) - [【编程】GitHub Pages免费图床,淘宝客,淘口令二维码,Python](https://www.bilibili.com/video/BV1iV411v7oL/) - 免费 - 唯一的成本是域名,每年要续费 - 域名的长度要尽可能地短,例如t.cn - 减少短链接长度 - 我的网站链接 - 重定向 - https://dark.net.cn/sl/t1.htm - 二维码 - https://dark.net.cn/qr/tk3.png - 参考 - [Create a new file in the repository](https://pygithub.readthedocs.io/en/latest/examples/Repository.html#create-a-new-file-in-the-repository) - [HTML页面跳转(重定向)的五种方法](https://blog.csdn.net/guoshenglong11/article/details/22306721) - [HTML 5 meta 标签](https://www.w3school.com.cn/html5/html5_meta.asp) - 运行代码 https://www.w3school.com.cn/tiy/t.asp?f=html_redirect - 现有的平台 - 都不能用了 - 2019年的文章 [有哪些靠谱的短链接服务?主流大平台短链接优劣对比分析](https://blog.csdn.net/daiwoyigebing/article/details/103280941) - 唯一好用的是微博短链接t.cn - 之前的api都关闭了,不能使用。 - 有人破解了,可以购买 - 登录微博,发条微博,找出里面的短链接 - 模拟浏览器操作 - 怎样赚钱? - 在跳转之前,显示淘宝广告,自己的转链 - https://dark.net.cn/sl/redirect.htm - 免费图床 - 读入文件,然后使用repo.create_file上传 - 淘宝客,淘口令二维码 - 使用 [qrcode](https://github.com/lincolnloop/python-qrcode),再传到byteIO ```python with open(entry, 'rb') as input_file: data = input_file.read() if entry.endswith('.png'): data = base64.b64encode(data) ``` ================================================ FILE: 2021/2-28-GitHub-short-link/push_qrcode1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2021/3/1 12:17 # @File : push_qrcode1.py """ push_qrcode1.py: """ import base64 import qrcode from github import Github from config import token g = Github(token) # repo = g.get_repo("MartinHeinz/python-project-blueprint") repo = g.get_repo("makelove/makelove.github.io") def QRCode(text): qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=2, ) # data = '8👈¥V0RPcyl5PTI¥ https://m.tb.cn/h.4lGcAwM 兔笼全景外壳gopro max配件gopromax麦克风拓展固定支架冷靴边框' # text='¥V0RPcyl5PTI¥兔笼全景外壳gopro max配件gopromax麦克风拓展固定支架冷靴边框' qr.add_data(text) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") # img.save('tkl-标题.png') # data = img.get_image() import io img_byte_arr = io.BytesIO() img.save(img_byte_arr, format='PNG') data = img_byte_arr.getvalue() return data def main(text, path=None): data = QRCode(text) # content = base64.b64encode(data)#不需要 # path = "qr/tk2.png" # TODO 存储起来,与原始URL映射 # rs = repo.create_file(path=path, message="tkl", content=data, branch="master") if path is None: path = "qr/tk3.png" # TODO 存储起来,与原始URL映射 rs = repo.create_file(path=path, message="test", content=data, branch="master") else: contents = repo.get_contents(path) rs = repo.update_file(contents.path, message="update_file", content=data, sha=contents.sha, branch="master") print('结果:', rs)#{'commit': Commit(sha="6821ebd50c434a2061b34b2904d56135a5809838"), 'content': ContentFile(path="qr/tk2.png")} turl = 'https://dark.net.cn/' + path # https://dark.net.cn/qr/tk2.png print('目标URL:', turl) pass if __name__ == '__main__': text = '¥V0RPcyl5PTI¥兔笼全景外壳gopro max配件gopromax麦克风拓展固定支架冷靴边框' text = '啊GGHCcyrdkcR哈罗德 RODE VideoMic NTG麦克风相机枪式锂电手机录音麦笔记本话筒' # main(text) # text = '¥uZCLcyr1dhz¥高钙乳酪棒 儿童零食芝士棒健康营养120g' text = '9👈,RpUacyrUwru信 正品INTEX探险者二人充气船两人充气艇橡皮划艇2人冲锋独木舟加厚' path = "qr/tk3.png" main(text,path) ================================================ FILE: 2021/2-28-GitHub-short-link/short_link1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2021/2/28 16:29 # @File : short_link1.py """ short_link1.py: 效果 https://dark.net.cn/sl/redirect.htm https://dark.net.cn/sl/t1.htm """ import sys import base64 from github import Github from config import token g = Github(token) # repo = g.get_repo("MartinHeinz/python-project-blueprint") repo = g.get_repo("makelove/makelove.github.io") def main(url, path=None): # git # content = f''' # # ''' #添加广告 content = f''' ''' if path is None: path = "sl/t1.htm" # TODO 存储起来,与原始URL映射 rs = repo.create_file(path=path, message="test", content=content, branch="master") else: contents = repo.get_contents(path) rs = repo.update_file(contents.path, message="update_file", content=content, sha=contents.sha, branch="master") print('结果:', rs) turl = 'https://dark.net.cn/' + path print('目标URL:', turl) # rs['commit'].sha # cmt=repo.get_commit(rs['commit'].sha) # sha = data["pull_request"]["head"]["sha"] # repo.get_commit(sha=sha).create_status( # state="pending", # target_url="https://FooCI.com", # description="FooCI is building", # context="ci/FooCI" # ) pass if __name__ == '__main__': # url=sys.argv[1] url = 'https://m.tb.cn/h.4lGcAwM' # 60天 # 长连接 # main(url) # url = 'https://m.tb.cn/h.4P4mv6C?sm=2cc4c6' path = "sl/t1.htm" # TODO 存储起来,与原始URL映射 main(url, path) ================================================ FILE: 2021/3-13-chrome-book/README.md ================================================ ## Chrome扩展开发 - 视频 [【编程】轻松上手Chrome扩展开发,JavaScript json CSS](https://www.bilibili.com/video/BV1w5411P75n/) - 建议 - 大家要研究技术的时候,建议先去看图书 - 因为图书集中了作者的所有经验,而网上的文章都是碎片化的,不完整 - 看图书可以一览全景,图书汇集了所有的经验,取自己需要的 - 图书 - 《Chrome扩展及应用开发》https://book.douban.com/subject/25980975/ - 代码 https://github.com/sneezry/chrome_extensions_and_apps_programming - 修改后的代码仓库 https://github.com/makelove/bookChromeExtensions - 《Programming Chrome Apps》 英文 - http://product.dangdang.com/1460304694.html - 参考 - ch5 网络请求 - [Chrome Extension 的 webRequest模块的解读](https://www.cnblogs.com/devcjq/articles/4232029.html) ================================================ FILE: 2021/3-15-wallpaper/README.md ================================================ ## 跨平台,设置桌面壁纸墙纸 - 视频 [【编程】跨平台,设置桌面壁纸,Python,Go语言。win10,macOS](https://www.bilibili.com/video/BV1Ph411X7z9/) - 语言 - Python win10 dll - Go 生成可执行文件,跨平台 - 参考 - 必应壁纸 - https://cn.bing.com/ - [五行Python代码自动换你的电脑桌面壁纸(内附源码和exe)](https://cloud.tencent.com/developer/article/1661753) - [SystemParametersInfo参数](https://blog.csdn.net/theplayerwuliang/article/details/6049934) - Go - 使用的库 https://github.com/reujab/wallpaper ================================================ FILE: 2021/3-15-wallpaper/壁纸/README.MD ================================================ - golang 设置 墙纸 win10 - https://blog.csdn.net/singleyellow/article/details/83714790 - https://blog.csdn.net/CodyGuo/article/details/73013557 - Windows 下执行wp2.exe 每次将会更换墙纸 - 编译 - go build -v -o wp_macos wp2.go - CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -v -o wp_win10.exe wp2.go ================================================ FILE: 2021/3-15-wallpaper/壁纸/goWP.go ================================================ // https://blog.csdn.net/singleyellow/article/details/83714790 // 不是go语言 #include #include int main() { // 壁纸格式给jpg也行,不像有些地方说的非要是bmp DWORD l_dwReturn=SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, "C:\\Users\\work\\Downloads\\wp1.jpg" , SPIF_UPDATEINIFILE); DWORD l_dwError=GetLastError(); return 0; } ================================================ FILE: 2021/3-15-wallpaper/壁纸/wp1.go ================================================ //简单测试 package main import ( "fmt" "github.com/reujab/wallpaper" ) func main() { background, err := wallpaper.Get() if err != nil { panic(err) } fmt.Println("当前Current wallpaper:", background) // wallpaper.SetFromFile("/Users/play/Downloads/桂林旅游GuiLin819/IMG_20200819_130920.jpg")//本地图片 //wallpaper.SetFromURL("https://cn.bing.com/th?id=OHR.Comma_ZH-CN3584865247_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp")//网络图片 OK wallpaper.SetFromURL("https://api.ixiaowai.cn/gqapi/gqapi.php")//OK fmt.Println("设置完毕") } ================================================ FILE: 2021/3-15-wallpaper/壁纸/wp1.py ================================================ # -*- coding:utf-8 -*- ''' # @FileName :wp1.py # @Time :2021/3/4 10:27 # @Author :play4fun # https://cloud.tencent.com/developer/article/1661753 五行Python代码自动换你的电脑桌面壁纸(内附源码和exe) https://blog.csdn.net/theplayerwuliang/article/details/6049934 设置桌面背景墙纸,SystemParametersInfo(20, True, 图片路径, 1) 具体文档 https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfow API 返回json https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1 努沙杜瓦海岸与防波堤,印度尼西亚巴厘岛 (© Dkart/Getty Images) 返回XML https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1 图片地址 https://cn.bing.com/th?id=OHR.Comma_ZH-CN3584865247_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp ''' import requests import ctypes import os def main(): path = os.getcwd() print(path) # return # ctypes.windll.user32.SystemParametersInfoW(20, 0, r'C:\Users\work\Downloads\th.jfif' # , 0) # 设置桌面,可以 url = 'https://area.sinaapp.com/bingImg/' rs = requests.get(url) print('壁纸地址:', rs.url) fp = f'{path}/bingImg.jpg' with open(fp, 'wb') as f: f.write(rs.content) ctypes.windll.user32.SystemParametersInfoW(20, 0, fp, 0) pass if __name__ == "__main__": main() ================================================ FILE: 2021/3-15-wallpaper/壁纸/wp2.go ================================================ // 数种动漫和风景壁纸随机API,你值得拥有! // https://cloud.tencent.com/developer/article/1617028 package main import ( "fmt" "log" "github.com/levigross/grequests" "github.com/reujab/wallpaper" ) func getWp() string { //获取壁纸图片地址 ro := &grequests.RequestOptions{ // Params: map[string]string{"Hello": "Goodbye"}, RedirectLimit: -1, InsecureSkipVerify: true, } resp, err := grequests.Get("https://api.ixiaowai.cn/gqapi/gqapi.php", ro) if err != nil { log.Fatalln("Unable to make request: ", err) } url := resp.Header["Location"][0] return url } func main() { background, err := wallpaper.Get() if err != nil { panic(err) } fmt.Println("当前Current wallpaper:", background) url := getWp() fmt.Println("墙纸:", url) wallpaper.SetFromURL(url) //OK fmt.Println("设置完毕") } ================================================ FILE: 2021/3-17-VMagicMirror/README.md ================================================ ## 怎样制作自己的虚拟偶像 - 视频 [【轻松搞定】怎样制作自己的虚拟偶像?VMagicMirror,开源免费!](https://www.bilibili.com/video/BV1BZ4y1w7iw/) - 修改/etc/hosts ``` 185.199.111.153 malaybaku.github.io 104.18.31.199 accounts.pixiv.net 104.18.31.199 oauth.secure.pixiv.net ``` - 参考 - 官网 https://malaybaku.github.io/VMagicMirror/en/index - GitHub源代码 https://github.com/malaybaku/VMagicMirror - 下载 https://malaybaku.github.io/VMagicMirror/en/download - BOOTH 网站需要注册 - 解压到硬盘,点击VMagicMirror.exe运行 - 2个窗口,不要关闭 - 使用 https://malaybaku.github.io/VMagicMirror/en/get_started - 设置语言为英文 - 在VRoid Hub中使用模型,需要验证签约 - 拿到一个授权代码,输入 - 在模型窗口选择模型,下载 - 嘴唇与麦克风同步 LipSync口型同步 - 一开始正常,后来就不同步了,奇怪! - 摄像头,头部跟踪 - 手部追踪 ??要买Leap Motion - 言语到运动 Word To Motion 控制面部表情的功能 - 使用键盘的数字键,切换不同表情动作 - PPT幻灯片演示 - 选中Presentation-like hand移动VRM的右手,就好像他/她正在演示中一样。 - 窗口透明 - 默认是绿幕 - 外部跟踪器 Ex.Tracker - 文档 https://malaybaku.github.io/VMagicMirror/en/docs/external_tracker - 支持Face ID的iPhone App : iFacialMocap - 直播 https://malaybaku.github.io/VMagicMirror/en/tips/virtual_camera - 安装OBS Studio - 创建一个新来源,选择Game Capture游戏捕获 - 选择Mode到Capture Specific Window。 - 单击右侧的Window,然后选择[VMagicMirror.exe]: VMagicMirror。 - 检查Allow Transparancy。 - 调整位置,缩放 ================================================ FILE: 2021/3-19-Chrome-tabs/README.md ================================================ ## Chrome标签组功能 - 视频 [【编程】Chrome标签组,把后台打开的页面合并一组](https://www.bilibili.com/video/BV1g64y1D7yE/) - 需求 - 把后台打开的页面合并一组 - 平时经常搜索一些东西 - 习惯打开多个网页,再慢慢看 - 参考 - API文档 - [chrome.tabs](https://developer.chrome.com/docs/extensions/reference/tabs/) - [chrome.tabGroups](https://developer.chrome.com/docs/extensions/reference/tabGroups/) - 代码 - https://github.com/SibiAkkash/TabGroups-shortcuts ================================================ FILE: 2021/3-19-Chrome-tabs/TabGroups-shortcuts/README.md ================================================ # TabGroups-shortcuts Keyboard shortcuts for tabGroups in Chrome - 源代码 https://github.com/SibiAkkash/TabGroups-shortcuts - 在它的基础上,添加功能 - 按住Ctrl键打开后台链接,标签自动分组 ================================================ FILE: 2021/3-19-Chrome-tabs/TabGroups-shortcuts/background.js ================================================ const CREATE_NEW_GROUP = "create_new_group_with_current_tab"; const ADD_TO_GROUP = "add_to_group"; chrome.runtime.onInstalled.addListener(() => console.log("installed extension") ); chrome.commands.onCommand.addListener((command) => { if (command === CREATE_NEW_GROUP) { createNewGroup(); } else if (command === ADD_TO_GROUP) { addToGroup(); } }); const createNewGroup = () => { console.log("creating new group..."); chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { console.log(tabs); const { id } = tabs[0]; // create new group and add current tab to it chrome.tabs.group({ tabIds: id }, (groupId) => console.log(`tab was added to group: ${groupId}`) ); }); }; const addToGroup = () => { console.log("get groups"); // get all tab groups chrome.tabGroups.query((queryInfo = {}), (groups) => { console.log(groups); }); }; // "_execute_action": { // "suggested_key": { // "default": "Ctrl+Q", // "mac": "MacCtrl+Q" // }, // "description": "Opens hello.html" // }, // new chrome.tabs.onCreated.addListener(function (tab) { console.log('新建:', tab); // pendingUrl: "chrome://newtab/" if (tab.pendingUrl != "chrome://newtab/") {//在后台打开,按Ctrl键点击链接 ////新建组后,再打开第二个标签 chrome.tabs.get(tab.openerTabId, function (tab2) { if (tab2.groupId == -1) {//如果上个标签没有加入组 chrome.tabs.group({ tabIds: tab.openerTabId }, (groupId) => { console.log(`新建组,tab was added to group: ${groupId}`)//TODO 怎样获取groupId }); //把新标签 加到 新组里 chrome.tabs.get(tab.openerTabId, function (tab2) { chrome.tabs.group({ tabIds: tab.id, groupId: tab2.groupId }, (groupId) => console.log(`后台打开的tab${tab.id} was added to group: ${groupId}`) ); }) } }); } }) chrome.tabs.onActivated.addListener(function (activeInfo) { console.log('活跃Active:', activeInfo); console.log('Tab ' + activeInfo.tabId + ' in window ' + activeInfo.windowId + ' is active Now.'); }) ================================================ FILE: 2021/3-19-Chrome-tabs/TabGroups-shortcuts/hello.html ================================================ Hello exf ================================================ FILE: 2021/3-19-Chrome-tabs/TabGroups-shortcuts/manifest.json ================================================ { "name": "Tabgroups-shortcuts", "version": "1.0", "manifest_version": 3, "action": { "default_popup": "hello.html", "default-icon": { "16": "/images/get_started16.png", "32": "/images/get_started32.png", "48": "/images/get_started48.png", "128": "/images/get_started128.png" } }, "permissions": [ "activeTab", "tabs", "tabGroups" ], "commands": { "create_new_group_with_current_tab": { "suggested_key": { "default": "Ctrl+Y", "mac": "MacCtrl+Y" }, "description": "test command" }, "add_to_group": { "suggested_key": { "default": "Ctrl+B", "mac": "MacCtrl+B" }, "description": "adds active tab to existing group" } }, "background": { "service_worker": "background.js" } } ================================================ FILE: 2021/3-21-subtitle-rejust/README.md ================================================ ## srt字幕调整,延时32秒 - 参考 - https://github.com/cdown/srt - 好用 - 文档 http://srt.readthedocs.org/en/latest/api.html - 步骤 - 下载电影《扎克·施奈德版正义联盟(Zack Snyder's Justice League) (2021)》 https://github.com/makelove/Programer_Log/issues/5 - 从字幕网站下载字幕,发现字幕版本不对应。字幕提前了32秒 - 电影自带英文字幕,使用FFmpeg把字幕剥离 sub1.srt - ffmpeg.exe -i 'Zack.Snyders.Justice.League.2021.REPACK.720p.HDRip.1200MB.x264-GalaxyRG.mkv' -map 0:s:0 sub1.srt - 对比中文字幕和英文字幕,同一句话的时间,确定相差了多长时间 - 编写python代码,jl1.py ================================================ FILE: 2021/3-21-subtitle-rejust/cn2.srt ================================================ 1 00:00:18,030 --> 00:00:21,540 时代华纳旗下 2 00:00:24,140 --> 00:00:33,640 ACCESS 集团 3 00:01:27,640 --> 00:01:31,640 华纳兄弟影业 出品 4 00:01:33,640 --> 00:01:37,740 联合出品 及 沙丘娱乐 ACCESS集团 5 00:02:17,540 --> 00:02:21,640 亚特拉斯娱乐 / STONE QUARRY 出品 6 00:02:24,740 --> 00:02:28,680 扎克·施奈德 影业 7 00:02:35,810 --> 00:02:39,830 扎克·施奈德版 正义联盟 8 00:06:13,080 --> 00:06:14,590 向女王警示 9 00:09:00,430 --> 00:09:04,710 第一章 10 00:09:02,010 --> 00:09:04,710 “别指望了,蝙蝠侠” 11 00:09:05,260 --> 00:09:08,130 布鲁斯·韦恩 12 00:09:08,300 --> 00:09:09,930 布鲁斯·韦恩 13 00:09:11,420 --> 00:09:14,190 直升机因暴风雨已六天无法降落 14 00:09:14,590 --> 00:09:15,480 他是从哪来的 15 00:09:15,850 --> 00:09:17,480 他说他爬山过来的 16 00:09:17,890 --> 00:09:18,980 不可能 17 00:09:27,950 --> 00:09:29,360 有话快说 18 00:09:30,700 --> 00:09:35,200 有个陌生人从大海来到这村庄 19 00:09:35,370 --> 00:09:38,120 在村民饥寒交迫的严冬到来 20 00:09:38,290 --> 00:09:40,500 并带来渔获 21 00:09:40,670 --> 00:09:42,290 他乘着大潮而来 22 00:09:42,460 --> 00:09:43,710 昨晚的大潮 23 00:09:50,260 --> 00:09:52,550 你也亲眼看见 24 00:09:52,720 --> 00:09:54,470 渔港结冰 25 00:09:54,640 --> 00:09:56,640 四个月没有船只进港 26 00:09:57,810 --> 00:10:01,850 这个陌生人不是乘船而来 27 00:10:08,820 --> 00:10:12,450 来自远方的敌人即将来袭 28 00:10:13,740 --> 00:10:15,410 我需要战士 29 00:10:15,580 --> 00:10:19,120 对付这个陌生人 还有像他的其他人 30 00:10:19,290 --> 00:10:22,790 我要成立一个捍卫地球的联盟 31 00:10:23,710 --> 00:10:26,630 我必须见到这个人 32 00:10:27,800 --> 00:10:30,090 如果真有这个人 33 00:10:30,260 --> 00:10:32,340 他会把你的话传给他 34 00:10:32,510 --> 00:10:33,720 五千美元 35 00:10:33,890 --> 00:10:38,350 我给你两万五 让我和他说话 到外面说去 36 00:10:50,690 --> 00:10:55,070 这只狗竟敢把我们当成小孩子 37 00:10:55,910 --> 00:10:59,540 什么来自大海的神奇人物 38 00:10:59,700 --> 00:11:02,410 我们很穷 但并不蠢 39 00:11:02,710 --> 00:11:04,420 滚出去 40 00:11:05,540 --> 00:11:06,790 抱歉 41 00:11:07,210 --> 00:11:08,750 办不到 42 00:11:09,000 --> 00:11:11,130 我们说完话我就走 43 00:11:15,930 --> 00:11:17,350 他叫你"滚出去" 44 00:11:18,120 --> 00:11:20,330 办不到 45 00:11:36,370 --> 00:11:38,240 亚瑟·库瑞 46 00:11:38,410 --> 00:11:41,160 也被称为大海保护者 47 00:11:41,870 --> 00:11:43,500 海王 48 00:11:49,210 --> 00:11:50,920 让我搞清楚 49 00:11:51,090 --> 00:11:54,590 你打扮成蝙蝠真正的蝙蝠 50 00:11:54,760 --> 00:11:56,430 我在哥谭市打拼了20年 51 00:11:56,590 --> 00:11:58,430 那个鸟地方 52 00:11:58,600 --> 00:12:00,390 决战时刻 我们会需要你 53 00:12:00,560 --> 00:12:02,310 -别指望了 蝙蝠侠 -为什么 54 00:12:03,230 --> 00:12:05,060 我不喜欢你跑来挖我的隐私 55 00:12:05,230 --> 00:12:07,770 干涉我的生活 我只想独自一个人 56 00:12:07,940 --> 00:12:08,940 所以你才这么做 57 00:12:09,110 --> 00:12:11,190 在这鸟不生蛋的地方帮助这些人 58 00:12:11,360 --> 00:12:14,820 我读过你的故事 你以为没人知道你的善行 59 00:12:14,990 --> 00:12:16,450 你会加入我们 60 00:12:16,610 --> 00:12:18,320 "强者是孤独的" 61 00:12:18,490 --> 00:12:19,740 没听过这句话吗 62 00:12:20,200 --> 00:12:21,580 你听过超人吗 63 00:12:21,740 --> 00:12:23,290 他和我并肩作战时死去 64 00:12:24,660 --> 00:12:26,040 这正是我的意思 65 00:12:26,210 --> 00:12:29,630 他相信团结力量大 这是我们欠他的 66 00:12:30,250 --> 00:12:32,500 我谁也不欠 67 00:12:40,180 --> 00:12:42,060 打扮成一只蝙蝠 68 00:12:42,930 --> 00:12:44,770 你疯了 布鲁斯·韦恩 69 00:14:13,310 --> 00:14:14,520 过去 小灰 70 00:14:31,330 --> 00:14:36,340 克拉克·乔瑟夫·肯特 71 00:14:46,320 --> 00:14:50,730 法拍屋出售 72 00:15:10,450 --> 00:15:13,500 天啊 韦恩少爷 这里好冷 73 00:15:13,670 --> 00:15:18,000 也许我们可以赶上下一波牙买加的大潮 74 00:15:18,170 --> 00:15:20,420 也许斐济一 两个超人类 75 00:15:20,590 --> 00:15:22,220 哥斯达黎加天气也不错 76 00:15:22,380 --> 00:15:23,800 我找到他了 77 00:15:26,680 --> 00:15:28,140 他拒绝了 78 00:15:29,140 --> 00:15:31,230 你连一个新兵都没招到 79 00:15:33,690 --> 00:15:36,440 也许一个成天窝在洞穴的人 80 00:15:36,610 --> 00:15:40,110 不适合当招募者 81 00:15:59,800 --> 00:16:01,550 十块钱 82 00:16:21,860 --> 00:16:25,740 星球日报 每日报导星球事务 83 00:16:29,330 --> 00:16:30,740 曼哈顿银行诚征建筑师 84 00:16:31,500 --> 00:16:34,120 大都会警局 85 00:16:39,750 --> 00:16:40,710 早安 莱恩小姐 86 00:16:40,880 --> 00:16:42,170 你好 杰瑞 87 00:16:45,090 --> 00:16:46,340 你每天都来 对吧 88 00:16:47,800 --> 00:16:49,760 我喜欢这里 89 00:18:35,580 --> 00:18:36,580 站住 90 00:18:38,080 --> 00:18:39,080 快上 91 00:18:49,840 --> 00:18:51,260 快走 快走 92 00:18:57,560 --> 00:18:59,640 -别开枪 -快走 93 00:19:00,310 --> 00:19:01,810 给我过去 94 00:19:15,990 --> 00:19:17,950 让他们靠墙站好 95 00:19:18,120 --> 00:19:19,660 叫他们闭嘴 96 00:19:21,000 --> 00:19:23,290 -安静 -闭嘴 97 00:19:23,460 --> 00:19:24,830 叫他们闭嘴 98 00:19:27,960 --> 00:19:30,460 我们很快就会发表声明 99 00:19:30,630 --> 00:19:32,470 在那之前 谁敢乱来 100 00:19:32,630 --> 00:19:34,590 就会害死一大堆小孩 101 00:19:49,650 --> 00:19:51,190 要射杀他吗 102 00:19:51,360 --> 00:19:52,950 别开枪 103 00:19:54,530 --> 00:19:55,570 里面有小孩 104 00:19:57,530 --> 00:19:59,280 他不是虚张声势 长官 105 00:19:59,450 --> 00:20:01,660 圣布丽姬中学今天有校外教学 106 00:20:25,690 --> 00:20:26,520 安静 107 00:20:26,690 --> 00:20:27,560 闭嘴 108 00:20:32,650 --> 00:20:34,950 让现代世界崩塌 109 00:20:35,110 --> 00:20:36,660 回到黑暗时代 110 00:20:42,080 --> 00:20:43,160 闭嘴 111 00:20:45,120 --> 00:20:47,790 我叫你们闭嘴 112 00:21:01,970 --> 00:21:03,640 你是谁 113 00:21:03,810 --> 00:21:06,640 真言套索会迫使你说实话 114 00:21:07,390 --> 00:21:08,940 你们是什么人 115 00:21:09,560 --> 00:21:12,570 我们是一群反动恐怖份子 116 00:21:12,730 --> 00:21:14,360 要让欧洲倒退到… 117 00:21:14,530 --> 00:21:16,780 -一千年前 -无聊 为何挟持人质 118 00:21:16,950 --> 00:21:18,530 我们没有任何要求 119 00:21:18,700 --> 00:21:20,200 只是在动手之前拖延警察 120 00:21:20,450 --> 00:21:21,780 你们想做什么 121 00:21:22,530 --> 00:21:26,120 你太迟了 已经开始倒数计时 122 00:21:26,290 --> 00:21:29,750 再过几分钟 四个街区… 123 00:21:30,880 --> 00:21:33,090 全世界都会看到 124 00:23:13,690 --> 00:23:14,520 不 125 00:23:14,690 --> 00:23:16,730 就像屠宰场里的羔羊 126 00:24:06,110 --> 00:24:07,200 我不敢相信 127 00:24:07,740 --> 00:24:08,660 相信吧 128 00:24:44,320 --> 00:24:47,070 大家没事吧你没事吧 129 00:24:47,320 --> 00:24:49,320 很好 没事了 130 00:24:49,660 --> 00:24:51,740 没事了 你们可以站起来了 131 00:24:51,910 --> 00:24:53,000 一切都没事 132 00:24:53,370 --> 00:24:54,790 结束了 你还好吧 133 00:24:55,330 --> 00:24:57,460 -没事吧 -很好 134 00:25:03,130 --> 00:25:04,420 你没事吧 公主 135 00:25:07,890 --> 00:25:09,680 我有一天能像你一样吗 136 00:25:11,850 --> 00:25:14,430 你想成为什么样的人都可以 137 00:25:16,350 --> 00:25:18,730 来吧 走吧 138 00:26:01,520 --> 00:26:02,730 今天有任何变化吗 139 00:26:02,900 --> 00:26:04,360 没有 女王 140 00:26:06,070 --> 00:26:07,690 母盒苏醒了 141 00:26:08,150 --> 00:26:10,030 但什么也没发生 142 00:26:11,240 --> 00:26:13,280 它从始纪元… 143 00:26:13,450 --> 00:26:15,410 就沉睡了数千年 144 00:26:15,580 --> 00:26:16,910 现在为何苏醒 145 00:26:24,800 --> 00:26:27,970 这是它出现裂缝后第一次静下来 146 00:26:28,130 --> 00:26:30,800 也许它又继续沉睡 147 00:26:34,890 --> 00:26:36,600 邪恶永不沉睡 148 00:26:37,520 --> 00:26:38,930 只会伺机而待 149 00:26:40,940 --> 00:26:42,900 有什么要来了 150 00:26:48,150 --> 00:26:49,650 准备迎敌 151 00:27:15,140 --> 00:27:17,510 亚马逊女战士 各就各位 152 00:27:17,890 --> 00:27:19,180 预备 153 00:27:44,420 --> 00:27:46,420 守护者 154 00:27:48,090 --> 00:27:52,340 他们无法保护十万个世界 155 00:27:52,840 --> 00:27:54,340 永远都会失败 156 00:27:56,300 --> 00:28:00,970 我是来让你们见识伟大的黑暗 157 00:28:01,140 --> 00:28:04,060 我将沉浸在你们的恐惧中 158 00:28:05,560 --> 00:28:08,020 天堂岛的女儿 159 00:28:09,360 --> 00:28:10,940 让他看到你们的恐惧 160 00:28:11,110 --> 00:28:13,530 我们无畏无惧 161 00:28:32,800 --> 00:28:34,420 召集军团 162 00:28:35,340 --> 00:28:36,510 跟她去 163 00:28:36,680 --> 00:28:37,800 你必须封住山洞 164 00:28:37,970 --> 00:28:38,800 快去 165 00:28:39,260 --> 00:28:40,390 菲莉普斯 166 00:29:07,120 --> 00:29:08,210 不 167 00:29:29,310 --> 00:29:30,480 伊琵欧妮 168 00:29:32,400 --> 00:29:34,490 让我们光荣战死 这是对的 169 00:29:37,450 --> 00:29:38,780 封住大门 170 00:29:44,040 --> 00:29:46,660 拿起大锤 171 00:29:58,880 --> 00:30:00,680 快封住它 172 00:31:35,400 --> 00:31:37,070 用生命守护它 173 00:31:37,230 --> 00:31:39,030 -遵命 我的女王 -让它保持移动 174 00:34:25,070 --> 00:34:26,610 拿到了 快走 175 00:34:49,510 --> 00:34:53,720 高贵的女王 你为何抗拒 176 00:34:56,770 --> 00:34:58,520 你救不了她 177 00:34:58,680 --> 00:35:01,140 你救不了任何人 178 00:35:04,650 --> 00:35:08,070 伟大的黑暗即将降临 179 00:35:08,860 --> 00:35:10,200 亚马逊女战士 180 00:35:20,790 --> 00:35:23,460 是的 我们会找到其他的 181 00:35:25,340 --> 00:35:26,670 拉弓 182 00:35:30,010 --> 00:35:31,510 放箭 183 00:36:29,230 --> 00:36:31,320 他回到了他的宇宙 184 00:36:31,490 --> 00:36:32,320 不 185 00:36:34,910 --> 00:36:37,280 他去了人类的世界 186 00:36:37,450 --> 00:36:39,580 寻找另外两个母盒 187 00:36:40,790 --> 00:36:43,120 我们必须点燃古老的警示烽火 188 00:36:44,000 --> 00:36:47,460 烽火五千年未曾燃烧 189 00:36:47,630 --> 00:36:49,170 人类不会知道它的意义 190 00:36:50,000 --> 00:36:51,380 人类不会知道 191 00:36:53,130 --> 00:36:54,550 她会知道 192 00:37:00,210 --> 00:37:05,490 第二章 193 00:37:02,850 --> 00:37:05,490 英雄时代 194 00:37:25,290 --> 00:37:27,920 这里是有毒的 195 00:37:28,080 --> 00:37:29,790 很好 196 00:37:50,730 --> 00:37:51,940 去吧 197 00:37:52,110 --> 00:37:54,110 跟着母盒的气味 198 00:37:54,280 --> 00:37:55,820 找到另外两个 199 00:37:55,990 --> 00:37:59,870 一旦找到它们 就能形成三位一体 200 00:38:00,030 --> 00:38:02,780 这个世界将加入其他世界 201 00:38:04,700 --> 00:38:06,710 他会很高兴 202 00:38:06,870 --> 00:38:09,790 再次看到我的价值 203 00:38:14,380 --> 00:38:16,970 有酒类专卖店那小鬼的消息吗 204 00:38:17,130 --> 00:38:18,550 可能有 205 00:38:19,340 --> 00:38:20,510 "可能有" 206 00:38:21,720 --> 00:38:24,260 每听一次这句话 207 00:38:24,430 --> 00:38:27,060 就会让我更受不了你 208 00:38:30,020 --> 00:38:32,730 脸部辨识可能找到匹配 209 00:38:32,900 --> 00:38:34,730 搞消失的那小子 210 00:38:35,360 --> 00:38:40,070 中城的巴里·艾伦先生 211 00:38:40,240 --> 00:38:43,160 也许又是误判 你得给我多点时间 212 00:38:43,330 --> 00:38:45,540 -才能确认 -我们没有时间了 213 00:38:47,250 --> 00:38:49,000 韦恩少爷 214 00:38:49,160 --> 00:38:52,670 你一直在拼命地创建这个团队 215 00:38:52,840 --> 00:38:54,670 但却找不到任何队友 216 00:38:54,840 --> 00:38:56,960 我找到一个 是两个 包括戴安娜 217 00:38:57,130 --> 00:39:01,090 就因为莱克斯·卢瑟说 地球会受到攻击 218 00:39:01,260 --> 00:39:03,260 这跟莱克斯·卢瑟无关 219 00:39:03,430 --> 00:39:04,640 这跟他有关 220 00:39:04,930 --> 00:39:08,230 我在他的坟上向他承诺 221 00:39:09,100 --> 00:39:12,230 我花了很多时间试图造成分裂 222 00:39:12,400 --> 00:39:15,190 现在必须团结一心才能拯救地球 223 00:39:15,980 --> 00:39:18,570 卢瑟的警告已经过了一段时间 224 00:39:18,820 --> 00:39:21,950 没有攻击 没有野蛮人冲进大门 225 00:39:23,200 --> 00:39:25,830 也许这些野蛮人不走大门 226 00:39:26,700 --> 00:39:28,370 也许他们已经来了 227 00:39:32,370 --> 00:39:34,130 继续找 还有什么线索 228 00:40:13,120 --> 00:40:14,670 实验室是你的了 霍华德 229 00:40:14,830 --> 00:40:16,420 11点半 230 00:40:16,590 --> 00:40:17,920 今晚很早嘛 塞拉斯 231 00:40:18,090 --> 00:40:20,170 是啊 我提早下班 232 00:40:20,840 --> 00:40:21,970 替我向你家人问好 233 00:40:57,330 --> 00:40:58,920 搞什么… 234 00:41:02,840 --> 00:41:04,010 天啊 235 00:42:17,250 --> 00:42:19,080 阿提密斯之箭 236 00:42:20,170 --> 00:42:22,710 它将射到人类世界 237 00:42:32,350 --> 00:42:33,640 天空火炬 238 00:42:33,810 --> 00:42:35,350 英雄烽火 239 00:42:35,520 --> 00:42:37,230 驱散黑暗 240 00:42:37,390 --> 00:42:40,650 如昔日一般熊熊燃烧 241 00:42:42,230 --> 00:42:45,690 让她看到历史曙光出现之前的黑暗 242 00:42:46,190 --> 00:42:49,780 警告我女儿战争已经来临 243 00:42:51,160 --> 00:42:52,870 并且保护她 244 00:43:17,600 --> 00:43:19,890 回到我身边 戴安娜 245 00:43:58,520 --> 00:44:01,140 你这周末做什么了 戴安娜 246 00:44:01,480 --> 00:44:03,810 没做什么特别的 247 00:44:04,810 --> 00:44:06,900 你每次都这么说 248 00:44:07,520 --> 00:44:10,030 没办法 我的生活很无趣 249 00:44:10,190 --> 00:44:13,660 你一走出去就好像消失一样 250 00:44:18,540 --> 00:44:19,540 又来了 251 00:44:19,700 --> 00:44:21,580 -什么事 -又怎么了 252 00:44:21,960 --> 00:44:25,080 预算缩减 盗墓者 253 00:44:25,250 --> 00:44:27,750 现在又加了一条"纵火者" 254 00:44:29,630 --> 00:44:32,260 记者在克里特岛连线报导 255 00:44:32,420 --> 00:44:36,970 我身后的大篝火熊熊燃烧 256 00:44:37,140 --> 00:44:39,260 大火燃烧了一整晚 257 00:44:39,430 --> 00:44:43,230 现在已经是早上 我们至少在八公里以外 258 00:44:43,390 --> 00:44:46,730 但还是能看到它在燃烧 259 00:44:46,900 --> 00:44:49,940 当地居民和政府当局都感到诧异 260 00:44:50,110 --> 00:44:54,610 这座历史遗迹亚马逊神殿居然起火 261 00:44:54,780 --> 00:44:56,280 -当地居民和政府当局… -敌人入侵 262 00:44:56,450 --> 00:44:58,740 …不知道火势起因 263 00:45:07,880 --> 00:45:08,920 瑞恩 264 00:45:09,090 --> 00:45:10,460 -你好 博士 -那个… 265 00:45:10,630 --> 00:45:12,460 电子激光没有损坏 266 00:45:12,760 --> 00:45:14,800 -塞拉斯·斯通博士 -是的 267 00:45:14,970 --> 00:45:16,050 -蔡瑞恩 -是的 268 00:45:17,510 --> 00:45:19,260 这是谁干的 他们有没有偷走什么 269 00:45:19,430 --> 00:45:21,470 -他们偷走了一切 -那个呢 270 00:45:21,640 --> 00:45:24,060 那没被偷走 对吧 斯通博士 271 00:45:25,020 --> 00:45:27,350 对 那之前就被移走了 272 00:45:27,940 --> 00:45:31,780 6-1-9-8-2号物件 国防部档案馆 273 00:45:32,820 --> 00:45:33,740 那是什么 274 00:45:34,150 --> 00:45:35,070 我也不知道 275 00:45:35,240 --> 00:45:36,160 你不知道 276 00:45:36,320 --> 00:45:38,570 没错 所以我才在研究它 277 00:45:38,740 --> 00:45:40,240 你是什么官阶 278 00:45:40,660 --> 00:45:42,660 瑞恩 麻烦你了 279 00:45:42,830 --> 00:45:44,160 -没问题 -谢了 280 00:45:44,330 --> 00:45:45,160 平民 281 00:45:45,500 --> 00:45:48,210 星辰实验室是私人承包商 我们为国防部工作 282 00:45:48,380 --> 00:45:50,960 为他们提供异常科学的建议 283 00:45:51,500 --> 00:45:52,340 "异常科学" 284 00:45:53,010 --> 00:45:54,840 外星科技 285 00:46:01,930 --> 00:46:04,020 比如说 286 00:46:04,180 --> 00:46:05,730 超人飞船 287 00:46:14,230 --> 00:46:16,950 昨晚有八个人没离开实验室 288 00:46:17,320 --> 00:46:20,370 清洁工 警卫和几名研究科学家 289 00:46:20,820 --> 00:46:21,740 他们被绑架了 290 00:46:23,120 --> 00:46:24,120 你确定 291 00:46:24,290 --> 00:46:26,830 有位目击证人 他逃过一劫 292 00:46:27,000 --> 00:46:30,130 他正在隔离区协助绘制嫌犯肖像画 293 00:46:33,130 --> 00:46:37,470 知道那会是谁或是什么东西吗 294 00:46:57,610 --> 00:46:59,660 母盒在这里不安全 295 00:47:02,160 --> 00:47:03,620 维克多 296 00:47:03,830 --> 00:47:06,080 他们闯进实验室找它 297 00:47:06,250 --> 00:47:10,670 有些人被某种怪物抓走 298 00:47:13,420 --> 00:47:15,380 你对怪物很了解… 299 00:47:16,000 --> 00:47:17,420 对吧 300 00:47:23,800 --> 00:47:25,930 尤其是怎么制造它们 301 00:50:26,530 --> 00:50:30,160 求救…求救… 302 00:50:30,950 --> 00:50:34,040 船身受损 我快沉下去了 303 00:50:40,380 --> 00:50:42,340 求救 304 00:50:42,540 --> 00:50:44,590 有人吗 305 00:51:24,920 --> 00:51:26,260 威士忌 306 00:51:35,350 --> 00:51:37,930 下次叫他要敬畏暴风雨 307 00:51:47,280 --> 00:51:48,110 他请客 308 00:54:16,340 --> 00:54:18,430 本应是国王的男人 309 00:54:18,590 --> 00:54:21,760 人类父亲和海洋女王的儿子 310 00:54:22,640 --> 00:54:24,390 我浪费了多少时间 311 00:54:24,560 --> 00:54:27,600 试图遵守我向你母亲做的承诺 312 00:54:29,730 --> 00:54:30,940 说完了吗 老头 313 00:54:31,110 --> 00:54:33,570 虽然你居无定所 314 00:54:33,730 --> 00:54:36,490 但还是一直回来这里 315 00:54:38,450 --> 00:54:40,410 我喜欢这里 很安静 316 00:54:40,570 --> 00:54:42,370 这是你继承的王国 317 00:54:42,530 --> 00:54:44,660 你应当是亚特兰蒂斯国王 318 00:54:45,790 --> 00:54:46,910 我们的同胞受苦受难 319 00:54:47,080 --> 00:54:49,040 你的同胞 320 00:54:49,210 --> 00:54:52,750 一个卑鄙残忍 迷信无知的种族 321 00:54:52,920 --> 00:54:54,130 地表有什么不同吗 322 00:54:55,210 --> 00:54:57,260 没人说我是地表之王 323 00:54:58,340 --> 00:55:00,050 你想要什么 维科 324 00:55:00,640 --> 00:55:03,510 要塞附近的守卫不断消失不见 325 00:55:03,680 --> 00:55:05,100 来自天上的掠夺者 326 00:55:05,270 --> 00:55:06,480 去跟欧姆国王说啊 327 00:55:06,640 --> 00:55:08,060 -你弟弟 -表弟 328 00:55:08,230 --> 00:55:11,230 他想煽动和陆地人类的战争 329 00:55:11,610 --> 00:55:13,020 他说谎 330 00:55:14,480 --> 00:55:18,490 掠夺者来自黑暗之境 他们在寻找它 331 00:55:19,320 --> 00:55:22,660 我们守护的母盒并不安全 332 00:55:23,660 --> 00:55:27,660 前往亚特兰蒂斯要塞 保护母盒 333 00:55:28,660 --> 00:55:29,870 时候到了 334 00:55:32,000 --> 00:55:34,000 把你母亲的三叉戟拿去 335 00:55:45,180 --> 00:55:48,850 你不能永远弃世界而不顾 亚瑟 336 00:55:49,770 --> 00:55:52,860 不管是地表或海底 337 00:56:21,970 --> 00:56:23,550 狄萨德 338 00:56:23,720 --> 00:56:27,680 狄萨德 我呼叫你 339 00:56:36,730 --> 00:56:40,900 荒原狼 你开始征服这世界了吗 340 00:56:42,030 --> 00:56:44,410 这个世界是分裂的 341 00:56:45,200 --> 00:56:46,700 他们是原始物种 342 00:56:46,870 --> 00:56:49,200 未进化并与彼此战争 343 00:56:49,370 --> 00:56:52,210 歧见太深无法团结一心 344 00:56:52,370 --> 00:56:56,630 必须像其他的世界一样 剥夺他们的自由意志 345 00:56:56,790 --> 00:57:00,920 并以服膺他的光荣信念… 346 00:57:01,090 --> 00:57:02,800 获得赦免 347 00:57:03,590 --> 00:57:05,510 母盒呢 348 00:57:06,090 --> 00:57:09,010 我找到其中一个 349 00:57:09,180 --> 00:57:11,640 苏醒后呼唤我的那一个 350 00:57:11,810 --> 00:57:13,310 另外两个仍然沉睡 351 00:57:13,480 --> 00:57:17,310 但天启魔感应到它们 352 00:57:17,480 --> 00:57:18,940 它们飞来飞去 353 00:57:19,110 --> 00:57:22,690 到处搜索 并抓走带有母盒气味的囚犯 354 00:57:22,860 --> 00:57:27,780 我则以他之名创建一座要塞 355 00:57:28,330 --> 00:57:30,200 很好 356 00:57:31,290 --> 00:57:33,960 强大的荒原狼 357 00:57:35,460 --> 00:57:39,840 你本来可以与伟大的他平起平坐 358 00:57:41,760 --> 00:57:46,340 但却因自大而被放逐 359 00:57:47,510 --> 00:57:48,890 狄萨德 360 00:57:49,970 --> 00:57:52,350 我跪倒在你面前 361 00:57:53,100 --> 00:57:54,890 让我向他求情 362 00:57:55,060 --> 00:57:56,980 当我以他之名夺下这世界 363 00:57:57,150 --> 00:57:59,940 能否请他让我回家 364 00:58:00,110 --> 00:58:02,530 你背叛了他 365 00:58:03,940 --> 00:58:05,450 你自己的家人 366 00:58:05,610 --> 00:58:07,820 我看到我犯的错误 367 00:58:07,990 --> 00:58:10,580 我屠杀企图争夺他王位的人 368 00:58:10,740 --> 00:58:15,870 你还欠他五万个世界 369 00:58:16,960 --> 00:58:18,790 当你还清了债 370 00:58:19,250 --> 00:58:21,500 他就会聆听你的恳求 371 00:58:24,420 --> 00:58:27,470 母盒将被寻获并合而为一 372 00:58:28,430 --> 00:58:30,550 这里没有保护者 373 00:58:30,720 --> 00:58:34,140 没有绿光战警 没有氪星人 374 00:58:34,310 --> 00:58:37,940 这世界将会像其他的一样沦陷 375 00:58:38,980 --> 00:58:40,730 为了达克赛德 376 00:58:43,940 --> 00:58:46,150 为了达克赛德 377 00:59:07,420 --> 00:59:11,010 我花了几百万元安装保全系统 378 00:59:11,180 --> 00:59:12,470 钱花得很值得 379 00:59:12,970 --> 00:59:15,350 我几乎花了一分钟才解除 380 00:59:16,890 --> 00:59:18,230 你好 381 00:59:20,060 --> 00:59:20,900 新玩具 382 00:59:21,810 --> 00:59:23,980 原型军队运输机 383 00:59:26,280 --> 00:59:29,320 我曾相识的一个人会很想开开看 384 00:59:29,950 --> 00:59:32,910 韦恩航天最顶尖的人才 都无法让它飞起来 385 00:59:33,990 --> 00:59:35,580 但是你能 386 00:59:35,740 --> 00:59:37,410 我别无选择 387 00:59:37,580 --> 00:59:40,330 我需要更远的航程和更大的货舱 388 00:59:40,500 --> 00:59:42,080 我认为一场攻击即将来袭 389 00:59:42,500 --> 00:59:44,250 你错了 布鲁斯 390 00:59:45,050 --> 00:59:47,010 它已经来袭了 391 00:59:47,800 --> 00:59:52,340 据我所知 他们来自另一个宇宙 392 00:59:52,510 --> 00:59:54,850 为一个黑暗力量效忠 393 00:59:55,010 --> 00:59:56,720 一个古老的力量 394 00:59:56,890 --> 00:59:58,310 他们想要什么 395 00:59:59,140 --> 01:00:01,480 入侵地球 征服世界 396 01:00:02,600 --> 01:00:06,860 他们很久以前曾经来过 397 01:00:11,990 --> 01:00:14,410 一支庞大的舰队出现在天空 398 01:00:14,580 --> 01:00:17,200 消灭所有胆敢反抗的势力 399 01:00:17,370 --> 01:00:21,460 入侵者的首领是达克赛德 400 01:00:21,620 --> 01:00:25,880 这名字在每个宇宙都受到诅咒和畏惧 401 01:00:26,750 --> 01:00:30,590 地球的守护者 和达克赛德展开一场大战 402 01:00:30,760 --> 01:00:33,260 旧神族 人类 403 01:00:33,840 --> 01:00:36,970 被迫迁至海底之前的亚特兰蒂斯族 404 01:00:39,310 --> 01:00:43,270 遭背叛及被困禁之前的亚马逊族 405 01:00:43,440 --> 01:00:45,810 以及来自星空的守护者 406 01:00:45,980 --> 01:00:49,570 他们的历史教导他们 不能相信彼此 407 01:00:49,740 --> 01:00:51,900 不能奢望创建联盟 408 01:00:52,070 --> 01:00:54,070 而是各自奋战 409 01:01:43,120 --> 01:01:45,830 当达克赛德在地球发动战争 410 01:01:46,000 --> 01:01:47,420 他发现一个秘密 411 01:01:47,580 --> 01:01:51,340 隐藏在无垠太空的一股力量 412 01:01:51,510 --> 01:01:53,010 他召唤暗黑秘士 413 01:01:53,170 --> 01:01:56,300 他们崇拜并控制三个物体 414 01:01:56,470 --> 01:01:57,510 母盒 415 01:01:57,850 --> 01:01:59,260 等等 416 01:01:59,430 --> 01:02:00,430 "母盒" 417 01:02:00,600 --> 01:02:03,140 坚不可摧 活生生的机器 418 01:02:03,850 --> 01:02:08,770 使用先进无比的科技打造 看起来简直就像巫术 419 01:02:08,940 --> 01:02:11,570 若要征服世界 三个母盒必须同步化 420 01:02:11,730 --> 01:02:14,990 合而为一后形成三位一体 421 01:02:15,150 --> 01:02:18,200 三位一体以烈火净化星球 422 01:02:18,370 --> 01:02:21,950 将它转换成另一个敌人世界 423 01:02:22,120 --> 01:02:25,620 幸存者都成为达克赛德的仆役 424 01:02:25,790 --> 01:02:28,710 活着 但毫无生机 425 01:02:28,920 --> 01:02:30,250 天启魔 426 01:02:31,460 --> 01:02:33,550 亚马逊女战士 427 01:02:39,430 --> 01:02:41,140 冲啊 428 01:03:10,460 --> 01:03:12,960 但在三位一体同步化之前 429 01:03:13,130 --> 01:03:16,510 地球的守护者组成统一阵线展开反击 430 01:03:17,090 --> 01:03:20,090 亚马逊人和亚特兰蒂斯人并肩作战 431 01:03:20,260 --> 01:03:24,770 宙斯及他儿子阿瑞斯 和来自星空的守护者联手出击 432 01:03:25,770 --> 01:03:30,440 一群黄金时代英雄为了捍卫地球 同心协力捍卫了地球的生命 433 01:05:27,100 --> 01:05:29,890 他们做到其他世界做不到的事 434 01:05:30,060 --> 01:05:32,230 将敌人送回星空 435 01:05:34,770 --> 01:05:38,020 三个母盒从未合而为一 436 01:05:38,610 --> 01:05:41,780 也从未形成三位一体 437 01:05:41,940 --> 01:05:44,150 但在敌人撤退之时 438 01:05:44,780 --> 01:05:47,910 母盒被留在地球 439 01:05:48,080 --> 01:05:51,790 它们的力量变弱 就像失去主人的恶犬 440 01:05:53,620 --> 01:05:55,210 开始沉睡 441 01:05:55,370 --> 01:05:57,840 等待他们的回归 442 01:05:58,000 --> 01:06:00,340 母盒从敌人的视野中消失 443 01:06:00,500 --> 01:06:03,670 隐匿在一兆个世界之中 444 01:06:20,570 --> 01:06:23,740 地球的守护者立下誓言 445 01:06:24,110 --> 01:06:27,360 人类 亚特兰蒂斯族及亚马逊族 446 01:06:27,530 --> 01:06:31,410 根据他们文化的惯例及仪式 447 01:06:31,580 --> 01:06:35,080 各自封存并守卫 其中一个沉睡的母盒 448 01:06:35,250 --> 01:06:39,710 以防母盒日后再次苏醒 向天启星发出信号 449 01:06:39,880 --> 01:06:41,630 呼唤敌人回来并企图征服 450 01:06:41,800 --> 01:06:45,590 达克赛德唯一落败而逃的世界 451 01:08:01,540 --> 01:08:04,210 有什么唤醒了我的族人守卫的母盒 452 01:08:04,920 --> 01:08:06,960 它向暗黑之处呼唤 453 01:08:07,130 --> 01:08:09,550 引来达克赛德手下的一名征服者 454 01:08:10,470 --> 01:08:12,340 敌人已经来袭 455 01:08:12,850 --> 01:08:14,510 如果是真的 他在哪里 456 01:08:14,680 --> 01:08:16,770 他会到处寻找另外两个母盒 457 01:08:16,930 --> 01:08:19,890 得到三个母盒并准备好之前 他仍在藏匿 458 01:08:20,060 --> 01:08:23,900 我们必须准备迎敌 你 我和其他人 459 01:08:24,650 --> 01:08:27,480 他们说英雄时代不会再来临 460 01:08:27,650 --> 01:08:28,900 会来的 461 01:08:29,240 --> 01:08:30,950 必须的 462 01:08:32,700 --> 01:08:36,200 其他人 他们在哪里 463 01:08:41,290 --> 01:08:46,550 第三章 464 01:08:42,930 --> 01:08:46,550 挚爱的母亲,挚爱的儿子 465 01:08:48,260 --> 01:08:50,130 冷藏配送 466 01:08:50,130 --> 01:08:53,840 中城 467 01:08:53,840 --> 01:08:57,470 前方减速 468 01:08:58,220 --> 01:09:00,890 我迟到了吗 我大迟到了 469 01:09:00,260 --> 01:09:02,060 中城狗狗托儿所 470 01:09:02,230 --> 01:09:03,350 你好啊 小家伙 471 01:09:04,190 --> 01:09:05,020 不行 472 01:09:06,110 --> 01:09:07,690 好吧 晚点见 473 01:09:08,570 --> 01:09:10,490 真是拍谢 474 01:09:10,900 --> 01:09:12,150 我迟到了 475 01:09:17,660 --> 01:09:18,700 -你是… -我… 476 01:09:18,870 --> 01:09:21,120 抱歉我大迟到了 不是故意的 477 01:09:21,290 --> 01:09:22,790 我是我 我来了 很抱歉迟到了 478 01:09:22,960 --> 01:09:25,130 因为公车没来 后来来了 479 01:09:25,290 --> 01:09:27,590 不过有个阿婆一直在找硬币 480 01:09:27,750 --> 01:09:28,880 五分 一分 五分 一分 481 01:09:29,050 --> 01:09:30,800 真是够了 让阿婆上车吧 482 01:09:30,960 --> 01:09:31,970 她都107岁了 483 01:09:32,130 --> 01:09:33,800 不会再活多久了 484 01:09:33,970 --> 01:09:35,010 履历 485 01:09:35,640 --> 01:09:36,470 履历 486 01:09:39,720 --> 01:09:40,810 拜托 487 01:09:44,140 --> 01:09:45,230 拜托 488 01:09:45,400 --> 01:09:46,940 那是法文来着 489 01:09:47,110 --> 01:09:50,150 "履历"是过去分词… 490 01:09:55,990 --> 01:09:57,070 这可不妙 491 01:09:57,530 --> 01:10:00,740 我的口袋有什么 "有只吃纸的怪物" 492 01:10:09,630 --> 01:10:12,710 拜托 我们应该是朋友啊 493 01:10:19,300 --> 01:10:20,310 好了 494 01:10:29,310 --> 01:10:31,730 中城大学 我念刑事司法系 495 01:10:31,900 --> 01:10:34,150 你说你有遛狗的经验 496 01:13:14,610 --> 01:13:16,650 天啊 希望大家都没事 497 01:13:16,820 --> 01:13:21,530 瞧 照顾狗狗遇到事情 我一定会随身携带肉类零食 498 01:13:21,700 --> 01:13:22,950 能让狗狗安静下来 499 01:13:23,110 --> 01:13:24,990 你永远不知道会发生什么事 500 01:13:25,160 --> 01:13:26,870 我是说 天啊 501 01:13:27,030 --> 01:13:29,580 是不是星期一开工吗 502 01:14:07,910 --> 01:14:10,580 你一定靠近过母盒 503 01:14:11,790 --> 01:14:13,790 身上有它的气味 504 01:14:14,370 --> 01:14:15,620 它在哪里 505 01:14:16,040 --> 01:14:18,920 亚特兰蒂斯族的儿女绝不会告诉你 506 01:14:34,520 --> 01:14:37,350 我们的族人看守了母盒数千年 507 01:14:43,530 --> 01:14:46,160 我不会背叛自己的族人 508 01:14:57,710 --> 01:15:00,210 你已经背叛了 509 01:16:00,560 --> 01:16:02,770 这是在地球最深的海沟拍到的 510 01:16:03,360 --> 01:16:05,440 他一定是亚特兰蒂斯人 511 01:16:05,610 --> 01:16:06,740 能够呼吸海水 512 01:16:06,900 --> 01:16:08,570 我跟他说话时他呼吸空气 513 01:16:08,740 --> 01:16:10,530 那他就是混血儿 514 01:16:10,700 --> 01:16:12,570 他说他会和我们一起作战 515 01:16:12,740 --> 01:16:14,080 或多或少吧 516 01:16:15,450 --> 01:16:17,540 或多还是或少 517 01:16:17,960 --> 01:16:18,960 大概是或少吧 518 01:16:19,120 --> 01:16:20,920 -他说不 -没错 519 01:16:21,670 --> 01:16:23,090 亚特兰蒂斯人很难搞 520 01:16:24,000 --> 01:16:26,760 我的族人曾和他们打仗 521 01:16:27,880 --> 01:16:29,970 我不确定我们能相信他 522 01:16:30,130 --> 01:16:31,180 戴安娜 如果我们要合作 523 01:16:31,340 --> 01:16:33,680 你就得打开心房 接受我们不能… 524 01:16:33,850 --> 01:16:34,720 你知道的 525 01:16:34,890 --> 01:16:36,560 -抱歉 没关系 -对不起 我的错 526 01:16:36,720 --> 01:16:37,770 没关系 527 01:16:37,930 --> 01:16:39,180 -让我们… -难免的 528 01:16:39,350 --> 01:16:40,230 所以… 529 01:16:40,390 --> 01:16:42,440 这是第三个人 530 01:16:42,600 --> 01:16:45,020 消失了1/30秒 531 01:16:45,190 --> 01:16:46,690 一格的影片 看到吗 532 01:16:46,860 --> 01:16:49,490 中城的巴里·艾伦 533 01:16:49,650 --> 01:16:50,490 你去找他 534 01:16:50,650 --> 01:16:52,360 我去找第四个人 535 01:16:52,530 --> 01:16:55,660 有机与生化机械电子身体器官 536 01:16:58,200 --> 01:17:00,210 他是个钢骨生化人 537 01:17:18,350 --> 01:17:19,180 斯通 538 01:17:19,350 --> 01:17:21,310 -预备 -就位 539 01:17:22,350 --> 01:17:24,770 大声尖叫 540 01:17:36,830 --> 01:17:37,830 3 541 01:17:38,200 --> 01:17:39,750 80 542 01:17:40,830 --> 01:17:42,920 预备…上吧 543 01:17:56,180 --> 01:17:58,430 你儿子也许是美式足球校队队长 544 01:17:58,600 --> 01:18:01,600 也是个天才 斯通太太 545 01:18:01,770 --> 01:18:03,850 斯通博士 546 01:18:06,400 --> 01:18:08,400 但不代表他能骇入校方系统 547 01:18:08,570 --> 01:18:10,400 窜改他同学的成绩 548 01:18:11,360 --> 01:18:14,700 莎拉一家人今年失去了房子 549 01:18:15,280 --> 01:18:17,700 那孩子怎么可能及格 550 01:18:19,280 --> 01:18:22,330 维克多是出于好心才会帮助她 551 01:18:22,500 --> 01:18:24,540 你又做了什么来帮助她 552 01:18:39,470 --> 01:18:42,400 哥谭市 威斯康星州 553 01:19:48,670 --> 01:19:51,590 -你爸… -妈 别说了 554 01:19:53,170 --> 01:19:55,920 他得在实验室加班 555 01:19:56,090 --> 01:19:59,130 他天天都加班 556 01:20:01,720 --> 01:20:02,720 他很想来的 557 01:20:03,260 --> 01:20:04,890 你老是这么说 558 01:20:05,350 --> 01:20:06,930 妈 别再替他找借口了 559 01:20:07,100 --> 01:20:10,060 你跟他一样忙 但还是会挪出时间 560 01:20:10,600 --> 01:20:13,190 他只是不会表达 但是… 561 01:20:13,860 --> 01:20:15,690 我知道他以你为傲 562 01:20:16,240 --> 01:20:18,200 我们都是 维克多 563 01:20:22,200 --> 01:20:25,290 以你现在的成就 564 01:20:25,450 --> 01:20:28,210 我等不及想看到未来的你 565 01:20:33,540 --> 01:20:35,250 斯通博士 很遗憾 566 01:20:36,340 --> 01:20:38,130 你太太没能活下来 567 01:20:39,800 --> 01:20:41,890 你儿子恐怕也不会 568 01:20:56,070 --> 01:20:57,730 我不会让你死 569 01:21:00,700 --> 01:21:02,240 我绝不容许 570 01:21:08,540 --> 01:21:10,290 我绝不容许 571 01:21:13,750 --> 01:21:14,750 维克多 572 01:21:16,130 --> 01:21:18,880 维克多 你不必窝在这里 573 01:21:19,720 --> 01:21:22,470 你还有大好的人生 574 01:21:23,140 --> 01:21:26,510 你妈会希望你拥有那样的人生 575 01:21:29,060 --> 01:21:30,600 如果你当时在的话… 576 01:21:31,980 --> 01:21:33,850 妈就还会活着 577 01:21:36,690 --> 01:21:38,610 好吧 听着 578 01:21:39,990 --> 01:21:44,030 你不必给我第二次机会 但是要给自己再一次机会 579 01:21:46,070 --> 01:21:49,120 如果你不想看着我 580 01:21:50,830 --> 01:21:52,460 那就试着听我说 581 01:22:21,190 --> 01:22:23,200 你现在的能力 维克多 582 01:22:24,030 --> 01:22:27,570 超强力量只是冰山一角 583 01:22:27,740 --> 01:22:30,290 你拥有无穷潜力 584 01:23:00,360 --> 01:23:05,240 在一和零的数位世界 你是绝对的霸主 585 01:23:05,400 --> 01:23:07,990 没有防火墙能阻止你 586 01:23:08,160 --> 01:23:10,450 没有你破解不了的密码 587 01:23:10,620 --> 01:23:13,370 一切都任你摆布 588 01:23:13,540 --> 01:23:15,910 从电厂电网到电信设备 589 01:23:16,080 --> 01:23:18,130 每个人的生活都受到 590 01:23:18,290 --> 01:23:21,250 复杂的数位网络操控支配 591 01:23:21,420 --> 01:23:25,510 你却能轻而易举掌控它 592 01:23:35,850 --> 01:23:40,360 全世界的命运掌握在你手中 593 01:23:48,160 --> 01:23:53,200 你只要动个念头 就能发射所有的核弹 594 01:24:04,000 --> 01:24:07,170 全球复杂的金融体系 595 01:24:07,340 --> 01:24:11,800 对你来说就像玩具一样能轻易玩弄 596 01:24:45,840 --> 01:24:49,590 问题是…不 挑战是… 597 01:24:50,470 --> 01:24:52,930 不去这么做 598 01:24:53,800 --> 01:24:55,680 不去滥用这能力 599 01:24:55,850 --> 01:24:57,850 不去监视每个人 600 01:24:59,890 --> 01:25:02,190 这个重责大任的沉重负担 601 01:25:02,350 --> 01:25:05,650 将塑造你成为什么样的人 602 01:25:37,260 --> 01:25:38,350 许个愿 603 01:25:39,600 --> 01:25:40,640 再吹一次 604 01:25:41,600 --> 01:25:43,980 很好 像外婆挥手问好 605 01:25:44,150 --> 01:25:45,310 你好 外婆 606 01:26:38,670 --> 01:26:41,040 余额不足 607 01:26:41,200 --> 01:26:44,960 恭喜 您赢得十万美元奖金 608 01:26:45,540 --> 01:26:46,710 什么 609 01:26:48,710 --> 01:26:50,340 天啊 天啊 610 01:26:51,590 --> 01:26:52,970 我的天啊 611 01:26:53,130 --> 01:26:54,880 天啊 天啊 612 01:27:00,220 --> 01:27:01,600 维克多 613 01:27:03,230 --> 01:27:06,600 这是我身为一名科学家 做出来的推断 614 01:27:07,770 --> 01:27:09,940 也是我一直以来跟你说话的方式 615 01:27:10,650 --> 01:27:11,650 现在… 616 01:27:14,030 --> 01:27:17,700 让我说出内心话 不是身为一个科学家 617 01:27:18,240 --> 01:27:19,450 而是身为一个父亲 618 01:27:34,050 --> 01:27:34,920 喂 619 01:27:36,180 --> 01:27:37,720 喂 你 620 01:27:53,690 --> 01:27:56,530 因为你没有发挥潜力 621 01:27:57,200 --> 01:28:00,240 一直在原地打转 622 01:28:00,410 --> 01:28:02,580 你打三份没出路的工 623 01:28:02,740 --> 01:28:05,370 还要打第四份工 你哪来的时间 624 01:28:05,540 --> 01:28:06,660 我会挪出时间 625 01:28:06,830 --> 01:28:07,960 -只要再打一份工 -巴里 626 01:28:08,120 --> 01:28:09,750 -就能自己付学费 -你不能 627 01:28:09,920 --> 01:28:12,630 -我说到做到 -别再折磨自己了 628 01:28:12,790 --> 01:28:14,460 我不想再谈这件事 629 01:28:14,630 --> 01:28:15,710 拜托 我们有十分钟 630 01:28:15,880 --> 01:28:16,800 这全是为了付… 631 01:28:16,970 --> 01:28:18,760 -刑事司法系的学费 -对啊 632 01:28:18,930 --> 01:28:19,930 为了什么 633 01:28:20,090 --> 01:28:23,310 那还用问 我正在跟我爸讲话 634 01:28:23,470 --> 01:28:26,270 他因为杀死我妈坐牢 其实是被冤枉的 635 01:28:26,430 --> 01:28:28,390 我怎么会对刑事司法感兴趣 636 01:28:28,560 --> 01:28:30,100 我不记得了 637 01:28:30,270 --> 01:28:31,190 真是的 638 01:28:31,360 --> 01:28:33,900 我注定要选择走这条路 爸 639 01:28:34,900 --> 01:28:35,980 把手给我 儿子 640 01:28:42,280 --> 01:28:44,830 我要你听好 巴里 641 01:28:44,990 --> 01:28:48,500 我要你听好 我是认真的 642 01:28:54,460 --> 01:28:56,340 我要你放弃那一切 643 01:28:59,340 --> 01:29:02,390 我也要你别再来看我 644 01:29:04,760 --> 01:29:07,770 我拖累了你的人生 645 01:29:13,190 --> 01:29:14,310 好吧 646 01:29:15,230 --> 01:29:18,360 别再跟我这么说 647 01:29:18,780 --> 01:29:20,030 求求你 648 01:29:20,200 --> 01:29:23,320 你知道对我来说怎样才是最好吗 649 01:29:23,490 --> 01:29:28,290 我儿子不白白浪费生命 650 01:29:29,710 --> 01:29:32,880 你想做什么都行 你聪明绝顶 651 01:29:35,420 --> 01:29:38,210 你是精英中的精英 652 01:29:40,050 --> 01:29:44,760 我不能坐在这儿 看着你在中城盲目地奔走 653 01:29:44,930 --> 01:29:46,680 就为了一个… 654 01:29:46,850 --> 01:29:50,020 哪儿都不能去的老头子 655 01:29:50,180 --> 01:29:51,520 -爸 并不是这样 -时间到了 656 01:29:51,690 --> 01:29:52,690 并不是这样 657 01:29:52,850 --> 01:29:54,350 走吧 艾伦 艾伦 658 01:29:54,520 --> 01:29:56,190 我要你创造自己的未来 659 01:29:56,360 --> 01:29:58,030 别活在过去 创造自己的未来 660 01:29:58,190 --> 01:29:59,820 开门 661 01:29:59,990 --> 01:30:00,820 棒呆了 662 01:30:04,990 --> 01:30:07,120 "别活在过去 创造自己的未来" 663 01:30:07,280 --> 01:30:08,830 可以了 开门 664 01:31:01,510 --> 01:31:04,170 巴里·艾伦 我是布鲁斯·韦恩 665 01:31:05,010 --> 01:31:08,970 你这么说似乎可以解释 为什么有个陌生人闯进我家 666 01:31:09,140 --> 01:31:11,930 摸黑坐在我第二喜欢的椅子 667 01:31:14,020 --> 01:31:15,810 请你解释一下 668 01:31:19,940 --> 01:31:22,650 这家伙长得跟我一模一样 669 01:31:22,820 --> 01:31:25,530 但绝对不是我 670 01:31:26,660 --> 01:31:28,530 这个人…我不认识 671 01:31:28,700 --> 01:31:30,530 披头散发的嬉皮 672 01:31:30,700 --> 01:31:33,450 很帅的一个犹太青年 673 01:31:35,000 --> 01:31:36,960 谁喝牛奶啊 我才不喝牛奶 674 01:31:37,750 --> 01:31:39,290 我知道你有超能力 675 01:31:39,460 --> 01:31:41,300 只是不知道是什么 676 01:31:41,710 --> 01:31:42,710 我的专长包括 677 01:31:42,880 --> 01:31:45,630 拉中提琴 网页设计 678 01:31:45,800 --> 01:31:48,590 我也擅长手语 大猩猩手语 679 01:31:48,760 --> 01:31:52,100 硅胶石英砂材料 680 01:31:52,510 --> 01:31:54,600 耐磨耐热 681 01:31:54,770 --> 01:31:56,640 是啊 我是冰舞竞技选手 682 01:31:56,810 --> 01:32:00,400 这是用来避免 航天飞机重返大气层燃烧的材料 683 01:32:00,560 --> 01:32:03,070 冰舞的竞争真的很激烈 684 01:32:04,440 --> 01:32:08,530 我不知道你是谁 不管你找的是谁 685 01:32:08,700 --> 01:32:09,700 都不是我 686 01:32:51,530 --> 01:32:53,120 你是蝙蝠侠 687 01:32:53,530 --> 01:32:55,290 所以你很快 688 01:32:56,580 --> 01:32:58,120 这么说感觉太平凡了 689 01:32:58,290 --> 01:33:00,040 我在组织一个团队 690 01:33:00,210 --> 01:33:02,290 寻找拥有特殊能力的人 691 01:33:02,460 --> 01:33:03,960 我相信敌人即将来袭 692 01:33:04,130 --> 01:33:06,210 你不用多说 我参一脚 693 01:33:07,260 --> 01:33:08,340 真的吗 694 01:33:08,720 --> 01:33:09,760 就这么简单 695 01:33:09,930 --> 01:33:11,050 是啊 696 01:33:13,010 --> 01:33:15,100 我需要朋友 697 01:33:15,600 --> 01:33:18,560 太好了 698 01:33:19,100 --> 01:33:20,850 我能留着吗 699 01:33:21,480 --> 01:33:25,070 那就像是一层三次元现实 似乎能够操控时空 700 01:33:25,230 --> 01:33:26,440 我称之为神速力 701 01:33:26,610 --> 01:33:28,440 害我燃烧大量的卡路里 702 01:33:28,610 --> 01:33:31,240 所以我是零食的黑洞 703 01:33:31,410 --> 01:33:33,240 我是"零"洞 704 01:33:34,120 --> 01:33:36,950 这个特殊战斗团队有几个人 705 01:33:37,120 --> 01:33:39,040 -三个 包括你 -三个 706 01:33:39,200 --> 01:33:41,080 对抗什么 707 01:33:41,960 --> 01:33:43,420 上飞机再告诉你 708 01:33:44,040 --> 01:33:45,250 飞机 709 01:33:45,920 --> 01:33:47,670 你的超能力是什么来着 710 01:33:47,840 --> 01:33:49,550 我超有钱 711 01:34:12,650 --> 01:34:14,450 普林斯小姐 让我来 712 01:34:14,620 --> 01:34:16,620 没关系 我自己来 713 01:34:17,910 --> 01:34:19,290 你想要喝吗 714 01:34:19,450 --> 01:34:20,750 不 谢了 715 01:34:22,120 --> 01:34:24,120 你得先倒水进去 716 01:34:24,830 --> 01:34:27,840 -当然了 -才不会把茶叶烫熟 717 01:34:30,760 --> 01:34:32,300 -很好 -太好了 718 01:34:32,470 --> 01:34:34,430 茶叶应该够多了 719 01:34:34,590 --> 01:34:35,970 好吧 720 01:34:37,100 --> 01:34:38,600 你确定不来一杯 721 01:34:38,760 --> 01:34:42,020 不 谢了 你得再让茶叶浸泡一下 722 01:34:42,770 --> 01:34:45,560 我会的 一定会 723 01:34:46,980 --> 01:34:48,070 你在打造什么 724 01:34:48,230 --> 01:34:49,570 这是一只手套 725 01:34:50,150 --> 01:34:53,780 布满高分子太阳能奈米电池 726 01:34:54,450 --> 01:34:56,160 来 让我秀给你看 727 01:34:56,660 --> 01:34:59,660 这是从氪星侦察舰上借来的 728 01:35:01,250 --> 01:35:02,700 也许你应该… 729 01:35:02,870 --> 01:35:05,330 -挪过去一点 谢谢 -没问题 730 01:35:12,880 --> 01:35:15,340 现在看看效果如何 731 01:35:15,880 --> 01:35:17,260 好了 732 01:35:17,930 --> 01:35:19,560 还不错喔 733 01:35:19,720 --> 01:35:22,140 捕捉并消散能量的手套 734 01:35:22,310 --> 01:35:23,810 这是韦恩少爷的点子 735 01:35:24,100 --> 01:35:26,350 也许你也应该打造一条套索 736 01:35:26,520 --> 01:35:28,270 当然是黑色的罗 737 01:35:36,110 --> 01:35:39,070 好吧 维克多斯通 738 01:35:39,150 --> 01:35:43,540 搜寻维克多·斯通 739 01:35:55,340 --> 01:35:57,340 有点不对劲 740 01:36:01,590 --> 01:36:03,270 在这里见面 现在 741 01:36:09,150 --> 01:36:11,570 看来你有个约会 普林斯小姐 742 01:37:08,620 --> 01:37:11,710 你为什么找我 戴安娜 743 01:37:11,880 --> 01:37:13,130 你知道我是谁 744 01:37:13,290 --> 01:37:15,630 我知道的远远超乎你想像 745 01:37:15,800 --> 01:37:18,380 那也许你已经知道我需要你的帮助 746 01:37:19,050 --> 01:37:20,050 全世界都需要 747 01:37:21,430 --> 01:37:23,140 去他的全世界 748 01:37:24,760 --> 01:37:27,140 你很显然经历了很多 749 01:37:28,390 --> 01:37:30,890 我完全无法想像 750 01:37:31,600 --> 01:37:34,980 但不管你发生什么事 现在都拥有超能力 751 01:37:35,230 --> 01:37:36,940 超能力 752 01:37:37,110 --> 01:37:39,280 这看起来像是超能力吗 753 01:37:39,440 --> 01:37:40,610 我们需要你 维克多 754 01:37:41,280 --> 01:37:42,870 也许你也需要我们 755 01:37:43,030 --> 01:37:44,700 我不需要任何人 756 01:37:46,910 --> 01:37:47,950 不再需要了 757 01:37:48,120 --> 01:37:50,620 我以前也一直这么告诉自己 758 01:37:57,460 --> 01:38:00,170 我曾经失去一个深爱的人 759 01:38:03,050 --> 01:38:07,850 把自己封闭起来 760 01:38:09,480 --> 01:38:12,190 但我得学会再次敞开心房 761 01:38:14,900 --> 01:38:18,320 老实说 我仍在努力中 762 01:38:18,480 --> 01:38:21,700 既然你要求见我 763 01:38:22,570 --> 01:38:25,320 你也在努力 764 01:38:52,100 --> 01:38:57,440 挚爱的儿子 维克多·斯通 1994-2015 765 01:38:54,850 --> 01:38:57,440 挚爱的母亲 爱莲诺·斯通 1973-2015 766 01:39:37,020 --> 01:39:40,690 超人飞船上的金属样本被你说中了 767 01:39:40,860 --> 01:39:43,990 我们用电子激光向它轰射X光 768 01:39:44,400 --> 01:39:45,860 看看发生了什么事 769 01:39:54,870 --> 01:39:56,790 克氏350万度 770 01:39:56,960 --> 01:39:59,920 金属的内核变得过热 771 01:40:00,090 --> 01:40:02,420 形成又热又密的物质 772 01:40:05,720 --> 01:40:08,510 这是地球上最火热的东西 773 01:40:08,680 --> 01:40:10,600 跟我对毕业舞会舞伴说的话一样 774 01:40:10,970 --> 01:40:12,510 但她还是甩了我 775 01:40:12,970 --> 01:40:13,890 是啊 776 01:40:18,060 --> 01:40:18,900 喂 博士 777 01:40:19,230 --> 01:40:23,690 你认为蝙蝠侠和犯罪调查部 找的东西有关联吗 778 01:40:24,740 --> 01:40:27,860 6-1-9-8-2号物件 779 01:40:29,030 --> 01:40:30,120 不 780 01:40:31,120 --> 01:40:32,330 我不这么认为 781 01:41:07,150 --> 01:41:09,240 维克多 782 01:41:26,380 --> 01:41:28,300 好了 走吧 783 01:41:29,630 --> 01:41:31,140 -高登局长 -来吧 784 01:41:32,180 --> 01:41:33,100 给你的留言 785 01:41:37,810 --> 01:41:40,390 不用看也知道今天是满月 786 01:41:40,560 --> 01:41:43,400 哥谭市一半的疯子都出来了 787 01:41:43,560 --> 01:41:45,730 他们都说看到怪物飞过港口 788 01:41:45,900 --> 01:41:49,650 你是对的 老妈 金牌警校军 念牙医学院有什么不好 789 01:41:52,740 --> 01:41:55,030 "遭到飞行吸血鬼攻击" 790 01:41:56,030 --> 01:41:59,000 "看起来像是一口尖牙的巨大蝙蝠" 791 01:41:59,160 --> 01:42:00,960 有一个相关的线索 792 01:42:01,120 --> 01:42:04,710 实验室绑架案的嫌犯肖像素描 793 01:42:04,880 --> 01:42:07,420 -看起来像… -我知道像什么 794 01:42:08,630 --> 01:42:11,090 拜托 你觉得他在这里打击犯罪20年 795 01:42:11,260 --> 01:42:13,930 然后跑去大都会绑架八个人 796 01:42:14,970 --> 01:42:16,050 我今晚会找他谈谈 797 01:42:16,220 --> 01:42:17,760 怎么找他 798 01:42:17,930 --> 01:42:19,390 你说呢 799 01:42:37,660 --> 01:42:38,870 塞拉斯 800 01:42:46,630 --> 01:42:48,800 -天啊 -钢骨在哪里 801 01:42:48,960 --> 01:42:50,130 他叫维克多 802 01:42:50,920 --> 01:42:53,680 我们见过面 说过话 803 01:42:54,640 --> 01:42:56,050 给他点时间 804 01:42:56,850 --> 01:42:58,810 你一定是巴里 我是戴安娜 805 01:42:58,970 --> 01:43:02,730 你好 巴里 我是戴安娜 那不太对 好极了 806 01:43:02,890 --> 01:43:03,890 就只有我们 807 01:43:04,060 --> 01:43:05,020 没错 就只有我们 808 01:43:06,360 --> 01:43:09,400 酷啊 那是蝙蝠信号 那是在… 809 01:43:09,570 --> 01:43:11,650 抱歉 那是在呼叫你 810 01:43:11,820 --> 01:43:13,030 意思是我们得出动了 811 01:43:13,200 --> 01:43:16,240 -对 是这意思没错 -酷毙了 812 01:44:14,340 --> 01:44:17,800 湄拉指挥官 我告诉海王 外围守卫被掳走 813 01:44:18,010 --> 01:44:19,550 他不会派出援兵 814 01:44:19,720 --> 01:44:22,350 他说所有的士兵 都必须前往叛军地区支持 815 01:44:22,510 --> 01:44:25,230 他不但残忍而且短视 816 01:44:26,940 --> 01:44:28,520 好吧 带着剩下的人马 817 01:44:28,690 --> 01:44:30,860 在母盒周围形成方阵 818 01:46:10,290 --> 01:46:12,330 你逃不了的 819 01:46:13,080 --> 01:46:15,040 我并不想逃 820 01:48:17,620 --> 01:48:19,500 维科跟我说你会来 821 01:48:20,000 --> 01:48:22,710 备受爱戴的亚特兰娜女王的长子 822 01:48:25,340 --> 01:48:26,630 等一下 823 01:48:28,640 --> 01:48:29,720 拜托了 824 01:48:33,310 --> 01:48:34,640 我认识她 825 01:48:36,940 --> 01:48:38,520 你至少认识她 826 01:48:39,400 --> 01:48:40,980 我父母死于战争 827 01:48:42,900 --> 01:48:44,110 她收容了我 828 01:48:44,490 --> 01:48:45,740 还真是个圣人 829 01:48:46,450 --> 01:48:48,570 你胆敢讽刺亚特兰娜女王 830 01:48:48,740 --> 01:48:51,370 你的女王把我丢在我父亲家门口 831 01:48:51,530 --> 01:48:53,120 从此把我忘得一干二净 832 01:48:53,290 --> 01:48:55,500 你母亲是为了救你才离开 833 01:48:56,620 --> 01:48:59,080 你无法想像她有多心痛 834 01:49:00,670 --> 01:49:02,710 她也付出惨痛代价 835 01:49:03,960 --> 01:49:06,130 但你现在不是脆弱的小孩 836 01:49:08,550 --> 01:49:10,140 那本是她的责任 837 01:49:10,300 --> 01:49:13,470 跟着那怪物到陆地 然后阻止他 838 01:49:14,060 --> 01:49:15,140 现在 839 01:49:16,430 --> 01:49:17,770 是你的责任 840 01:50:22,120 --> 01:50:23,580 太好了 841 01:50:46,520 --> 01:50:47,900 荒原狼 842 01:50:48,070 --> 01:50:49,990 告诉我你知道了什么 843 01:50:50,150 --> 01:50:52,780 找到两个苏醒的母盒 844 01:50:52,950 --> 01:50:55,910 结合两个母盒的力量 845 01:50:56,070 --> 01:50:59,080 我完成了要塞的防御系统 846 01:50:59,240 --> 01:51:01,660 第三个母盒在哪里 847 01:51:01,830 --> 01:51:05,960 天启魔感应到它 正在寻找它 848 01:51:06,130 --> 01:51:07,130 它们抓来了囚犯 849 01:51:07,290 --> 01:51:09,380 他们带有它的气味 850 01:51:10,130 --> 01:51:11,170 去吧 851 01:51:12,010 --> 01:51:13,930 去审问囚犯 852 01:51:14,720 --> 01:51:16,600 找到第三个母盒 853 01:51:18,140 --> 01:51:20,310 他们会乖乖告诉我 854 01:51:21,560 --> 01:51:24,060 不然我就来硬的 855 01:51:29,730 --> 01:51:34,950 第四章 856 01:51:31,330 --> 01:51:34,950 “改造机器” 857 01:52:07,400 --> 01:52:08,980 你们有多少人 858 01:52:09,820 --> 01:52:10,940 还不够多 859 01:52:13,030 --> 01:52:15,280 哥谭市各地有数十名目击者 860 01:52:15,450 --> 01:52:18,160 他们的描述符合大都会绑架案的嫌犯 861 01:52:18,740 --> 01:52:19,780 天启魔 862 01:52:20,410 --> 01:52:21,660 好吧 863 01:52:21,830 --> 01:52:24,160 天启魔一定闻到母盒的气味 864 01:52:24,410 --> 01:52:25,410 在实验室的那个 865 01:52:25,580 --> 01:52:27,920 它们把人抓走 拷问母盒下落 866 01:52:28,080 --> 01:52:29,790 -那八个人可能还活着 -九个人 867 01:52:32,340 --> 01:52:34,840 星辰实验室的主任今晚被绑走 868 01:52:40,050 --> 01:52:42,600 好吧 另一个科学家 869 01:52:42,760 --> 01:52:44,060 我们要怎么找到他 870 01:52:44,220 --> 01:52:45,890 附近一定有它们的巢穴 871 01:52:46,060 --> 01:52:50,150 我在大都会和哥谭市地图上做记号 872 01:52:50,310 --> 01:52:52,440 看不出任何模式 873 01:52:52,610 --> 01:52:53,900 地图上的路线没有交集 874 01:52:54,070 --> 01:52:55,400 在陆地上没有 875 01:52:56,110 --> 01:52:58,160 这是在两座城市之间的史崔克岛 876 01:52:58,320 --> 01:53:00,740 这些是通风口 全都通往1929年 877 01:53:00,910 --> 01:53:03,290 废弃的大都会工程隧道 878 01:53:03,450 --> 01:53:05,040 巢穴可能在那里 879 01:53:06,370 --> 01:53:07,750 他要跟我们一起去吗 880 01:53:07,920 --> 01:53:09,250 因为你的车子坐不下 881 01:53:09,790 --> 01:53:11,210 我有更大的玩意儿 882 01:53:12,540 --> 01:53:14,170 你真的觉得… 883 01:53:15,510 --> 01:53:19,050 他们就这样闪人了吗 884 01:53:20,260 --> 01:53:21,600 太没礼貌了 885 01:53:56,630 --> 01:54:00,130 星辰实验室 886 01:54:00,300 --> 01:54:02,390 很接近了 887 01:54:02,550 --> 01:54:04,560 敌人的气味 888 01:54:05,260 --> 01:54:06,430 虚无 889 01:54:07,020 --> 01:54:08,560 黑暗 890 01:54:09,310 --> 01:54:10,270 死亡 891 01:54:10,690 --> 01:54:12,940 -我们在哪里 阿尔弗雷德 -史崔克岛 892 01:54:13,110 --> 01:54:17,650 你们应该就在隧道通风塔的正下方 893 01:54:18,240 --> 01:54:21,660 往左看 应该有一道阶梯通往机械室 894 01:54:21,860 --> 01:54:24,410 红外线热影像显示有一群人 895 01:54:24,580 --> 01:54:25,490 就是那里 896 01:54:25,870 --> 01:54:26,870 走吧 897 01:54:40,880 --> 01:54:41,720 好吧 898 01:54:41,930 --> 01:54:43,800 有任何计划吗 899 01:54:45,350 --> 01:54:46,640 你们两个 900 01:54:46,810 --> 01:54:47,970 别单打独斗 901 01:54:48,770 --> 01:54:50,020 我们要联手出击 902 01:54:58,980 --> 01:55:00,820 我听说过你 903 01:55:02,610 --> 01:55:03,780 没想到你是真的 904 01:55:04,240 --> 01:55:05,780 有用的时候我就是真的 905 01:55:16,040 --> 01:55:20,170 我受够了你们的沉默 快告诉我 母盒在哪里 906 01:55:26,970 --> 01:55:29,180 求求你 我们有家人 907 01:55:29,350 --> 01:55:31,430 那你们就有弱点 908 01:55:31,600 --> 01:55:33,060 荒原狼 909 01:55:33,230 --> 01:55:37,400 好吧 我猜…那就是坏蛋 910 01:55:37,560 --> 01:55:38,610 猜对了 911 01:55:39,150 --> 01:55:42,610 我现在真的超想念超人 912 01:55:42,780 --> 01:55:44,950 绕到另一边 913 01:55:45,110 --> 01:55:47,120 把它们团团围住展开突袭 914 01:55:51,660 --> 01:55:53,250 你接近过一个母盒 915 01:55:53,710 --> 01:55:55,420 身上有它的气味 916 01:55:55,580 --> 01:55:57,040 我不知道你在说什么 917 01:55:57,210 --> 01:55:59,040 -它在哪里 -放过他 918 01:55:59,210 --> 01:56:01,460 他不知道 919 01:56:05,050 --> 01:56:06,840 等等 求求你 920 01:56:12,020 --> 01:56:15,140 你也带着气味 但是更强烈 921 01:56:15,520 --> 01:56:17,650 我死也不会告诉你 922 01:56:17,810 --> 01:56:19,650 不告诉我就会死 923 01:56:20,070 --> 01:56:21,070 不 924 01:56:30,410 --> 01:56:31,450 维克多 925 01:56:31,620 --> 01:56:32,910 杀了他们 926 01:56:37,370 --> 01:56:38,540 亚马逊女战士 927 01:56:38,960 --> 01:56:41,460 但不像你的姐妹 928 01:56:41,630 --> 01:56:42,880 你更强大 929 01:57:13,830 --> 01:57:15,450 亚马逊女战士 930 01:57:18,500 --> 01:57:19,880 住手 931 01:57:20,250 --> 01:57:22,460 这一个是我的 932 01:57:24,420 --> 01:57:26,840 我不属于任何人 933 01:57:40,850 --> 01:57:42,900 大伙儿 这不是联手出击 934 01:57:49,910 --> 01:57:51,070 把这些人救出去 935 01:57:51,240 --> 01:57:52,910 我会让这些怪物跟着我 936 01:58:03,340 --> 01:58:04,750 大伙儿 快啊 937 01:58:13,510 --> 01:58:15,010 再快一点 938 01:58:17,390 --> 01:58:18,770 -没事吧 -没事 939 01:58:18,930 --> 01:58:21,350 我会搞定 动作快点 940 01:58:23,400 --> 01:58:24,400 这里 941 01:59:00,730 --> 01:59:02,140 能量正在消散 942 01:59:02,310 --> 01:59:03,810 我的手套很有用 943 01:59:05,060 --> 01:59:07,360 晚点再庆祝 阿尔弗雷德 我需要夜蝠战机 944 01:59:07,520 --> 01:59:09,150 我以为你不会开口 945 01:59:09,740 --> 01:59:11,860 马上赶去 启动遥控模式 946 01:59:42,020 --> 01:59:43,020 谢了 阿尔弗雷德 947 01:59:43,190 --> 01:59:44,600 不客气 948 02:00:07,330 --> 02:00:08,290 惨了 949 02:00:16,300 --> 02:00:17,760 他们安全了 回去隧道 950 02:00:17,930 --> 02:00:21,010 隧道 好 外星人 坏蛋 耍剑的女士 951 02:00:32,820 --> 02:00:34,190 轮到我 952 02:01:56,570 --> 02:01:58,070 系统全面故障 953 02:01:58,240 --> 02:02:00,660 你没事吧 韦恩少爷 954 02:02:00,820 --> 02:02:01,820 你没事吧 955 02:02:12,540 --> 02:02:16,050 你身上流着旧神族的血液 956 02:02:30,520 --> 02:02:31,350 你没事吧 957 02:02:33,360 --> 02:02:34,980 我不确定你会来 958 02:02:36,020 --> 02:02:37,320 你是我父亲 959 02:02:40,820 --> 02:02:41,820 快去吧 960 02:02:55,460 --> 02:02:56,460 不要 961 02:03:41,970 --> 02:03:44,300 放轻松 阿尔弗雷德 我来接手 962 02:03:46,510 --> 02:03:47,720 我认识你吗 963 02:04:18,630 --> 02:04:19,880 我们在哪里的下面 964 02:04:20,630 --> 02:04:21,920 哥谭港 965 02:05:00,630 --> 02:05:01,920 那是谁 966 02:05:27,240 --> 02:05:28,410 快点 967 02:05:33,540 --> 02:05:34,750 戴安娜 快上来 968 02:06:36,640 --> 02:06:38,140 是什么 969 02:06:45,940 --> 02:06:47,360 让我看 970 02:07:26,520 --> 02:07:28,150 它在这里 971 02:07:28,900 --> 02:07:31,860 在这个世界 972 02:08:05,770 --> 02:08:08,730 你可能感染了外星微生物 必须接受隔离 973 02:08:08,900 --> 02:08:10,570 美国政府的规定要求… 974 02:08:10,730 --> 02:08:13,530 我知道规定 是我写的 975 02:08:18,080 --> 02:08:19,410 它召唤了他 976 02:08:19,580 --> 02:08:21,120 母盒 977 02:08:21,290 --> 02:08:22,660 他抢走的那个 978 02:08:23,000 --> 02:08:26,040 他有两个了 他从亚特兰蒂斯抢走母盒 979 02:08:26,210 --> 02:08:28,500 现在只需要人类遗失的母盒 980 02:08:28,670 --> 02:08:29,840 他可能已经拿到手了 981 02:08:33,510 --> 02:08:34,930 他没有拿到手 982 02:08:38,140 --> 02:08:39,300 在我这里 983 02:08:49,860 --> 02:08:51,940 你完成征服行动了吗 984 02:08:52,110 --> 02:08:53,360 还没有 狄萨德 985 02:08:53,530 --> 02:08:55,780 那你为何召唤我 986 02:08:55,950 --> 02:08:57,610 我带来消息 987 02:08:57,780 --> 02:09:00,700 强大的达克赛德登上王位之前 988 02:09:00,870 --> 02:09:05,370 他在全宇宙搜寻终极武器 989 02:09:06,000 --> 02:09:08,170 反生命方程序 990 02:09:08,330 --> 02:09:13,010 掌控多重宇宙中 所有生命与自由意志的关键 991 02:09:13,170 --> 02:09:16,180 他发现它被藏在一个原始星球上 但在他还没… 992 02:09:16,340 --> 02:09:19,220 大家都知道你背叛了他 993 02:09:19,390 --> 02:09:21,890 我找到了那个原始星球 994 02:09:22,060 --> 02:09:24,100 胆敢反击的世界 995 02:09:24,270 --> 02:09:26,140 就是地球 996 02:09:26,310 --> 02:09:28,520 反生命方程序被刻在… 997 02:09:28,690 --> 02:09:32,570 这个世界的地表 998 02:09:36,240 --> 02:09:37,650 你确定 999 02:09:37,820 --> 02:09:38,860 我看到了 1000 02:09:39,030 --> 02:09:42,450 我亲眼看到了 1001 02:10:25,790 --> 02:10:27,370 主人 1002 02:10:28,910 --> 02:10:32,460 荒原狼 1003 02:10:33,130 --> 02:10:36,210 主人 我只是你谦卑的仆人 1004 02:10:37,210 --> 02:10:40,050 你真的找到它了 1005 02:10:40,220 --> 02:10:42,390 是的 霸主 1006 02:10:43,140 --> 02:10:46,100 失落的世界就是地球 1007 02:10:46,270 --> 02:10:49,270 反生命方程序就在这里 1008 02:10:50,600 --> 02:10:53,940 你若想寻求救赎 那就找到第三个母盒 1009 02:10:54,110 --> 02:10:57,070 合而为一形成三位一体 当这世界化为焦土 1010 02:10:57,230 --> 02:11:00,450 我就会来拿我的大奖 1011 02:11:01,410 --> 02:11:03,620 你会来地球 1012 02:11:04,660 --> 02:11:08,910 我已经把十万个世界化为尘土 1013 02:11:09,080 --> 02:11:10,580 寻找反生命方程序 1014 02:11:10,750 --> 02:11:13,960 寻找抢走我荣耀之人 1015 02:11:14,130 --> 02:11:19,880 我将踏着他们的骨骸 沐浴在反生命方程序的荣光中 1016 02:11:20,050 --> 02:11:22,760 所有的生命 1017 02:11:22,930 --> 02:11:26,430 都将是我的 1018 02:11:29,810 --> 02:11:33,730 一定会的 主人 1019 02:11:37,940 --> 02:11:39,610 酷爆了 1020 02:11:39,780 --> 02:11:42,320 从外面看 这只是一栋废弃建筑物 1021 02:11:46,070 --> 02:11:47,830 它想要飞行 1022 02:11:49,040 --> 02:11:50,910 你和机器说话 1023 02:11:51,210 --> 02:11:53,210 我和人工智能说话 1024 02:11:53,370 --> 02:11:56,250 这个说她因为软体问题不能飞 1025 02:11:56,420 --> 02:11:58,380 不过我很快就能修好 1026 02:12:08,140 --> 02:12:10,350 我的数据流中有个黑点 1027 02:12:10,680 --> 02:12:12,940 我能感应到另外两个母盒 1028 02:12:13,100 --> 02:12:14,940 我知道它们苏醒了 1029 02:12:15,100 --> 02:12:16,610 但是看不见它们在哪里 1030 02:12:16,770 --> 02:12:18,770 知道敌方基地在哪里才能攻击 1031 02:12:18,940 --> 02:12:21,190 就算我们知道 1032 02:12:21,360 --> 02:12:24,200 也没有比荒原狼更强大的生物 1033 02:12:26,410 --> 02:12:27,780 也许有一个 1034 02:12:28,160 --> 02:12:29,540 超人 1035 02:12:30,450 --> 02:12:34,500 只要第三个母盒在沉睡 他们就看不到它 只能感应到它 1036 02:12:34,670 --> 02:12:36,710 我们得不断移动才不会被发现 1037 02:12:36,880 --> 02:12:40,050 不 这只是延缓失败的策略 不是获胜的战略 1038 02:12:40,670 --> 02:12:42,670 难道火焰喷射器不流行了吗 1039 02:12:43,550 --> 02:12:44,630 为何不直接烧毁它 1040 02:12:44,800 --> 02:12:46,890 烈火也无法摧毁母盒 1041 02:12:47,050 --> 02:12:48,800 它们是一种未知的物质 1042 02:12:48,970 --> 02:12:52,430 喜欢热能 会吸收它 保存在它们的核心 1043 02:12:52,600 --> 02:12:54,730 你很了解这些盒子嘛 1044 02:12:55,310 --> 02:12:56,560 非常可疑 1045 02:12:56,730 --> 02:12:58,440 你在哪里找到母盒 1046 02:12:59,400 --> 02:13:00,820 你在怀疑我吗 1047 02:13:01,110 --> 02:13:02,610 我就是怀疑你 1048 02:13:03,190 --> 02:13:05,070 我们怎么知道你不是他们的奸细 1049 02:13:06,950 --> 02:13:08,620 说来话长 1050 02:13:09,070 --> 02:13:10,990 你赶着要去哪儿吗 1051 02:13:18,380 --> 02:13:22,210 纳粹在二战结束前找到母盒 1052 02:13:22,380 --> 02:13:25,420 它被埋在一座义大利修道院底下 1053 02:13:25,590 --> 02:13:27,970 被送去给希特勒的路上 遭到盟军拦截 1054 02:13:28,140 --> 02:13:30,350 1944年被带回了美国 1055 02:13:30,930 --> 02:13:34,480 6-1-9-8-2号未知物件 1056 02:13:35,350 --> 02:13:38,810 它被丢在五角大厦档案室七十年 1057 02:13:39,350 --> 02:13:42,570 直到国防部开始研究超人飞船 1058 02:13:44,110 --> 02:13:47,610 星辰实验室的一位研究员 发现超人飞船和… 1059 02:13:48,910 --> 02:13:50,450 6-1-9-8-2号物件有关联 1060 02:13:51,330 --> 02:13:54,160 他了解到它们都是外星科技 1061 02:13:54,830 --> 02:13:56,410 不同的文明 1062 02:13:57,000 --> 02:13:59,120 类似的属性 1063 02:14:00,460 --> 02:14:03,210 虽然母盒已经沉睡了几千年 1064 02:14:03,880 --> 02:14:06,720 那位研究员想出 一个可以唤醒它的理论 1065 02:14:07,340 --> 02:14:09,090 也真的唤醒了它 1066 02:14:11,550 --> 02:14:12,390 后来… 1067 02:14:14,520 --> 02:14:16,430 我出了车祸 本来应该死去 1068 02:14:17,770 --> 02:14:20,980 但是出于绝望或是疯狂 1069 02:14:21,150 --> 02:14:23,480 那位研究员驾驭了母盒的力量 1070 02:14:39,670 --> 02:14:41,750 释放了一种他无法… 1071 02:14:41,920 --> 02:14:44,590 完全理解的外星科技 1072 02:14:44,750 --> 02:14:47,130 他利用那股力量让我活下来 1073 02:14:50,720 --> 02:14:52,300 活着… 1074 02:14:52,850 --> 02:14:54,810 但变成了这样 1075 02:14:57,600 --> 02:14:59,890 母盒继续沉睡 1076 02:15:00,810 --> 02:15:02,480 他也没有物归原处 1077 02:15:05,110 --> 02:15:07,150 那位研究员就是塞拉斯·斯通 1078 02:15:08,860 --> 02:15:10,530 我的父亲 1079 02:15:13,820 --> 02:15:15,490 等等 1080 02:15:15,660 --> 02:15:19,040 你父亲用一个母盒救了你一命 1081 02:15:19,200 --> 02:15:21,420 它们不是变态杀人机器吗 1082 02:15:21,580 --> 02:15:23,960 它们是改造机器 1083 02:15:24,130 --> 02:15:26,800 母盒没有救人或杀人… 1084 02:15:27,210 --> 02:15:29,300 活着或死亡的概念 1085 02:15:29,460 --> 02:15:31,720 它们按照主人的意愿重新排列物质 1086 02:15:31,880 --> 02:15:33,470 使其再生 恢复原状 1087 02:15:33,640 --> 02:15:35,050 恢复原状 1088 02:15:35,220 --> 02:15:38,640 母盒拥有恢复粒子相互作用的力量 1089 02:15:38,810 --> 02:15:41,890 你是说任何物质的粒子 都不能被创造或毁灭 1090 02:15:42,060 --> 02:15:44,060 它们的相互作用只会转变 1091 02:15:44,230 --> 02:15:46,980 烧掉一栋房子 粒子仍然存在 1092 02:15:47,150 --> 02:15:49,610 房子的粒子变成灰烬的粒子 1093 02:15:49,780 --> 02:15:53,820 任何人只要有火柴 都能把一栋房子化成灰烬 1094 02:15:55,870 --> 02:15:57,620 但是一个母盒 1095 02:15:57,780 --> 02:16:00,000 能够把灰烬变回一栋房子 1096 02:16:06,000 --> 02:16:08,500 我知道我们都在想同样的事 1097 02:16:09,960 --> 02:16:12,470 谁要说我才不说 1098 02:16:39,740 --> 02:16:40,830 谁啊 1099 02:16:41,540 --> 02:16:42,750 玛莎 1100 02:17:01,100 --> 02:17:06,100 我去了星球日报 终于拿回克拉克的东西 1101 02:17:07,600 --> 02:17:10,900 不知道为什么 现在无处可放 1102 02:17:13,690 --> 02:17:15,320 我失去了农场 1103 02:17:16,950 --> 02:17:19,070 我迟缴房贷好一阵子了 1104 02:17:20,450 --> 02:17:24,330 老实说 那房子我一个人住太大了 1105 02:17:24,870 --> 02:17:27,670 你知道我随时都欢迎你来住 1106 02:17:27,830 --> 02:17:29,790 只要你需要的话 1107 02:17:31,000 --> 02:17:33,630 谢谢你 露易丝 你真好心 1108 02:17:35,300 --> 02:17:37,380 但我找到一个小地方 我一个人住刚好 1109 02:17:37,550 --> 02:17:39,010 就在餐馆旁边 1110 02:17:39,640 --> 02:17:41,010 我不是来求助的 1111 02:17:42,180 --> 02:17:44,060 我来是因为… 1112 02:17:44,890 --> 02:17:47,310 我见到派瑞先生 他跟我说… 1113 02:17:48,770 --> 02:17:51,690 克拉克死后你就没去上班了 1114 02:17:56,490 --> 02:17:58,110 我办不到 1115 02:18:05,000 --> 02:18:07,330 全世界都在哀悼 1116 02:18:08,960 --> 02:18:11,380 为了一个象征悲伤 1117 02:18:11,540 --> 02:18:15,340 我走到哪儿都看到那个"S" 1118 02:18:16,470 --> 02:18:18,470 也听到人们在说什么 1119 02:18:18,630 --> 02:18:20,470 好像他们都认识他 1120 02:18:21,680 --> 02:18:23,930 但是他们不认识克拉克 1121 02:18:25,470 --> 02:18:27,810 我不能拦住他们 1122 02:18:27,980 --> 02:18:29,350 看着他们跟他们说 1123 02:18:29,520 --> 02:18:32,270 我为我儿子感到多么骄傲 1124 02:18:34,270 --> 02:18:36,780 只有你知道 1125 02:18:36,940 --> 02:18:39,360 也只有你能体会 1126 02:18:40,700 --> 02:18:43,660 悲伤加上秘密的负担 1127 02:18:46,830 --> 02:18:50,120 我大老远跑来是因为我想… 1128 02:18:50,290 --> 02:18:52,290 因为我想来见你 1129 02:18:53,540 --> 02:18:55,500 告诉你 1130 02:18:55,670 --> 02:18:57,510 我能体会 1131 02:18:59,470 --> 02:19:00,510 我… 1132 02:19:01,800 --> 02:19:05,350 永远都不会像爱你儿子那样爱任何人 1133 02:19:09,100 --> 02:19:11,100 我也很想念他 1134 02:19:12,270 --> 02:19:14,480 我好想他啊 1135 02:19:21,200 --> 02:19:22,870 我也是 亲爱的 1136 02:19:27,450 --> 02:19:32,330 玛莎 你有任何需要我都会帮忙 1137 02:19:35,920 --> 02:19:38,510 你可以帮我一个忙 亲爱的 1138 02:19:40,920 --> 02:19:43,180 继续过活吧 1139 02:20:23,180 --> 02:20:26,010 这世界也需要你 露易丝 1140 02:20:29,810 --> 02:20:30,970 他人都死了 1141 02:20:31,310 --> 02:20:33,060 母盒让维克多死而复生 1142 02:20:33,230 --> 02:20:34,770 维克多并没有死 1143 02:20:34,940 --> 02:20:36,690 生命不是一就是零 1144 02:20:36,860 --> 02:20:39,780 不是生就是死 不能两者都是 1145 02:20:39,940 --> 02:20:41,610 你能操作母盒吗 维克多 1146 02:20:41,780 --> 02:20:42,650 当然了 1147 02:20:43,070 --> 02:20:45,490 但我们不够了解氪星生物学 1148 02:20:45,660 --> 02:20:47,490 谁知道会发生什么事 1149 02:20:49,830 --> 02:20:50,950 好吧 不过… 1150 02:20:51,120 --> 02:20:54,750 我们总得试试 对吧 我们得试试看 1151 02:20:55,370 --> 02:20:56,460 还有什么好顾忌的 1152 02:20:56,630 --> 02:20:59,170 必须唤醒母盒才能尝试 1153 02:20:59,340 --> 02:21:00,800 它一旦苏醒 1154 02:21:00,960 --> 02:21:03,340 敌人就会看到 然后闯进来 1155 02:21:03,510 --> 02:21:06,050 完成三位一体 世界末日来临 1156 02:21:06,220 --> 02:21:08,600 我们会把整个地球… 1157 02:21:08,760 --> 02:21:10,600 拱手让给想灭绝人类的外星人 这真是好消息 1158 02:21:10,760 --> 02:21:13,390 就算超人能回来 1159 02:21:13,560 --> 02:21:15,440 谁敢说他就能打败他们 1160 02:21:15,600 --> 02:21:17,480 母盒这么说 1161 02:21:17,770 --> 02:21:21,020 维克多的父亲 一年多前启动一个母盒 1162 02:21:21,190 --> 02:21:22,940 当时超人还活着 1163 02:21:23,110 --> 02:21:26,530 它没召唤荒原狼 没有母盒召唤他 直到… 1164 02:21:26,700 --> 02:21:28,780 直到超人死后 1165 02:21:28,950 --> 02:21:31,370 直到超人死后 1166 02:21:31,540 --> 02:21:34,080 -因为他们怕他 -没错 1167 02:21:34,660 --> 02:21:36,460 他们怕他 1168 02:21:39,380 --> 02:21:41,170 这是唯一的办法 1169 02:21:42,840 --> 02:21:46,590 这团队有六个人 不是五个人 没有他就没有我们 1170 02:21:56,650 --> 02:22:01,790 第五章 1171 02:21:58,180 --> 02:22:01,790 国王人马 1172 02:22:02,980 --> 02:22:04,940 又完成了一项遗愿清单任务 1173 02:22:05,110 --> 02:22:08,910 把超人从坟墓里挖出来 搞定 1174 02:22:09,320 --> 02:22:10,780 克拉克·乔瑟夫·肯特 1175 02:22:10,950 --> 02:22:13,370 你知道我们能在一奈秒内搞定 对吧 1176 02:22:14,080 --> 02:22:15,450 没错 1177 02:22:23,000 --> 02:22:24,630 他是我的偶像 1178 02:22:27,260 --> 02:22:28,470 好吧 1179 02:22:32,100 --> 02:22:35,140 亚马逊人和亚特兰蒂斯人并肩作战 1180 02:22:35,310 --> 02:22:36,560 半亚特兰蒂斯人 1181 02:22:38,440 --> 02:22:41,190 我们的族人有几千年没说过话了 1182 02:22:41,860 --> 02:22:44,730 不知道 我和我的族人不亲 1183 02:22:45,940 --> 02:22:48,650 我跟亚马逊人一样讨厌亚特兰蒂斯人 1184 02:22:48,820 --> 02:22:50,860 互相仇恨真的很没必要 1185 02:22:53,990 --> 02:22:55,330 是啊 1186 02:22:56,620 --> 02:22:58,210 不 谢了 1187 02:23:02,750 --> 02:23:05,710 我父亲告诉我亚特兰蒂斯有句老话 1188 02:23:07,460 --> 02:23:09,760 "只要从黑暗中拿回什么 1189 02:23:09,930 --> 02:23:12,550 "-就一定要… -就一定要付出代价" 1190 02:23:14,810 --> 02:23:16,390 我们也会这么说 1191 02:23:19,020 --> 02:23:20,350 真没想到 1192 02:23:20,850 --> 02:23:22,730 神奇女侠 1193 02:23:24,270 --> 02:23:28,070 你觉得怎样 她会不会喜欢一个小鲜肉 1194 02:23:28,440 --> 02:23:31,030 她都五千岁了 巴里 1195 02:23:32,910 --> 02:23:34,740 每个男人都是小鲜肉 1196 02:23:36,740 --> 02:23:37,580 天啊 1197 02:23:39,330 --> 02:23:41,040 真是的 1198 02:23:44,380 --> 02:23:46,000 该死 1199 02:23:47,380 --> 02:23:48,380 运气怎么样 1200 02:23:48,550 --> 02:23:49,630 如果你说的"运气"是指… 1201 02:23:49,800 --> 02:23:52,890 "今天能不能让它飞起来的运气" 1202 02:23:53,050 --> 02:23:55,050 那就没有 1203 02:23:55,930 --> 02:23:57,470 没关系 1204 02:23:57,640 --> 02:23:59,350 无所谓 我们只要把尸体 1205 02:23:59,520 --> 02:24:01,770 放进氪星飞船 它基本上是一台有机电脑 1206 02:24:01,940 --> 02:24:03,940 可以直接和母盒讲话 1207 02:24:04,100 --> 02:24:06,570 什么 就像它跟莱克斯·卢瑟讲话 1208 02:24:06,730 --> 02:24:07,770 差不多吧 1209 02:24:07,940 --> 02:24:11,780 还会出什么差错 1210 02:24:18,410 --> 02:24:19,910 韦恩少爷 1211 02:24:22,000 --> 02:24:23,210 你成功了 1212 02:24:23,580 --> 02:24:26,880 你组成了团队 一起打这场仗 1213 02:24:27,170 --> 02:24:29,380 你实现了承诺 1214 02:24:30,460 --> 02:24:33,880 但是想让超人死而复生 我是说… 1215 02:24:34,510 --> 02:24:36,350 你的罪恶感超过了理性 1216 02:24:37,550 --> 02:24:39,680 再多的国王人马都办不到 1217 02:24:39,850 --> 02:24:42,940 阿尔弗雷德 我这次完全凭靠信念 1218 02:24:43,100 --> 02:24:44,940 而不是理性 1219 02:24:45,730 --> 02:24:49,940 但如果你开始玩弄这个母盒 1220 02:24:50,110 --> 02:24:52,190 可能会是一切的终结 1221 02:24:52,360 --> 02:24:54,240 你怎么知道你的团队够强大 1222 02:24:55,490 --> 02:24:57,830 制伏不了冲过来的公牛 1223 02:24:57,990 --> 02:24:59,700 就不要挥舞红色披风 1224 02:24:59,870 --> 02:25:01,450 是这个红色披风就可以 1225 02:25:01,620 --> 02:25:03,790 红色披风会冲回去 1226 02:25:18,510 --> 02:25:19,680 好吧 1227 02:25:26,650 --> 02:25:29,020 你是对的 斯通博士 检验报告是阴性 1228 02:25:29,190 --> 02:25:30,820 大家都没事 包括你在内 1229 02:25:30,980 --> 02:25:33,570 但为了安全起见 我们扫遍了整间实验室 1230 02:25:33,740 --> 02:25:35,490 谢谢你 汤玛斯 所以我可以走了吗 1231 02:25:35,650 --> 02:25:36,490 当然了 1232 02:25:40,490 --> 02:25:41,790 -谢了 -大家听好 1233 02:25:41,950 --> 02:25:44,410 你们都没事了 收拾你们的东西 1234 02:25:44,580 --> 02:25:46,120 如果需要更多医疗照顾… 1235 02:25:46,290 --> 02:25:49,960 亚瑟 我问你 哪个比较低调 选项"A" 1236 02:25:50,130 --> 02:25:51,380 -绝对不是"A" -好吧 1237 02:25:51,550 --> 02:25:54,670 或是…"B" 1238 02:25:56,300 --> 02:25:57,550 我再看看选项"A" 1239 02:26:03,180 --> 02:26:06,310 好了 该换装了 1240 02:26:08,440 --> 02:26:10,400 我一直都穿着 1241 02:26:37,720 --> 02:26:38,550 识别证 1242 02:26:38,800 --> 02:26:39,970 识别证 1243 02:26:43,140 --> 02:26:44,260 遵命 1244 02:26:46,600 --> 02:26:47,810 "遵命" 1245 02:26:49,770 --> 02:26:51,900 星辰实验室人事档案 1246 02:27:03,860 --> 02:27:05,490 卫斯理·罗伊 宪兵 允许通行 1247 02:27:11,040 --> 02:27:12,380 可以了 1248 02:27:12,540 --> 02:27:14,630 "可以" 可以了 1249 02:27:21,590 --> 02:27:22,680 博士 1250 02:27:22,850 --> 02:27:24,050 他们放你出来了 1251 02:27:24,220 --> 02:27:25,510 是啊 他们终于肯听我讲道理 1252 02:27:25,680 --> 02:27:27,930 现在让我们看看电子激光 1253 02:27:28,100 --> 02:27:29,100 有什么进展 1254 02:27:29,270 --> 02:27:31,600 我们有了真正的进展 让我给你看 1255 02:27:46,700 --> 02:27:49,200 维克多 清空这地方 1256 02:27:49,540 --> 02:27:50,790 没问题 1257 02:27:55,000 --> 02:27:57,130 红色警戒 受到污染 1258 02:27:56,530 --> 02:27:58,460 生化威胁 1259 02:27:58,630 --> 02:28:01,090 全体人员立刻疏散 1260 02:28:02,130 --> 02:28:03,300 生化威胁红色警戒 1261 02:28:03,470 --> 02:28:05,850 感应器侦测到外星微生物 1262 02:28:06,010 --> 02:28:08,640 外星微生物不可能 1263 02:28:08,810 --> 02:28:09,810 一定是虚惊一场 1264 02:28:09,980 --> 02:28:12,350 各位 关闭实验室 尽快离开 1265 02:28:12,520 --> 02:28:13,560 -刚刚才扫过一遍 -走吧 1266 02:28:13,730 --> 02:28:15,900 -一定有人误触警报 -走吧 博士 1267 02:28:16,060 --> 02:28:17,650 -想想看 -全员撤离 1268 02:28:17,820 --> 02:28:20,070 听好 等等 该死 1269 02:28:20,240 --> 02:28:22,990 保持冷静 前往最近出口 1270 02:28:29,450 --> 02:28:31,160 注意 全体人员 1271 02:28:31,330 --> 02:28:34,120 快点 大家都出去 快点 1272 02:28:34,290 --> 02:28:35,920 快走 快啊 1273 02:28:36,080 --> 02:28:37,590 大家都出去 快点 1274 02:28:55,980 --> 02:28:57,950 生化威胁 1275 02:28:57,950 --> 02:28:58,520 安全 1276 02:28:58,610 --> 02:28:59,610 搞定 1277 02:28:59,780 --> 02:29:00,610 搞定了 1278 02:29:00,980 --> 02:29:03,650 这是塞拉斯·斯通博士 收到吗 1279 02:29:03,820 --> 02:29:06,280 -请说 -这是假警报 1280 02:29:06,450 --> 02:29:09,620 有人骇入系统 我们得… 1281 02:29:18,960 --> 02:29:20,380 维克多 1282 02:29:22,130 --> 02:29:24,300 斯通博士 你在吗 我没收到 1283 02:29:25,340 --> 02:29:26,340 我搞错了 1284 02:29:26,510 --> 02:29:27,720 警报是真的 1285 02:29:27,890 --> 02:29:29,470 大家都出去 任何人 我重复 1286 02:29:29,640 --> 02:29:32,390 没有我的允许 任何人都不准回来 1287 02:29:32,560 --> 02:29:33,810 收到了 1288 02:29:44,070 --> 02:29:45,490 大家都出来 1289 02:29:45,820 --> 02:29:46,820 快点 快点 1290 02:29:51,240 --> 02:29:52,620 -大家都安全出来了 -应该吧 1291 02:29:52,790 --> 02:29:53,620 -每一个人 -对 1292 02:30:26,950 --> 02:30:28,200 这里 1293 02:30:38,790 --> 02:30:40,750 它知道他来了 1294 02:30:42,630 --> 02:30:43,920 超紧张的 1295 02:30:48,380 --> 02:30:50,260 太惊人了 1296 02:30:51,090 --> 02:30:52,300 太疯狂了 1297 02:30:52,470 --> 02:30:54,350 什么 现在才说疯狂 1298 02:30:54,520 --> 02:30:56,890 你们这群疯子最好知道自己在干嘛 1299 02:32:04,250 --> 02:32:08,260 露易丝·莱恩 星球日报记者 1300 02:32:12,630 --> 02:32:16,050 验孕棒 1301 02:33:22,870 --> 02:33:24,710 系统即将上线 1302 02:33:28,250 --> 02:33:31,880 欢迎 维克多 您想接手掌控吗 1303 02:33:32,050 --> 02:33:32,880 我进去了 1304 02:33:42,310 --> 02:33:44,520 这艘飞船说母盒有敌意 1305 02:33:44,690 --> 02:33:46,350 我可以取消安全协定 1306 02:33:46,520 --> 02:33:48,150 但是没时间修复卢瑟对主电容器 1307 02:33:48,310 --> 02:33:50,610 造成的所有的电力损害 1308 02:33:50,770 --> 02:33:51,940 说白话 1309 02:33:52,110 --> 02:33:54,150 电流不够 无法唤醒母盒 1310 02:33:55,110 --> 02:33:56,530 我可能有办法 1311 02:33:58,870 --> 02:34:00,780 我也许可以启动它 1312 02:34:00,950 --> 02:34:01,990 我不喜欢打破这规则 1313 02:34:02,160 --> 02:34:04,080 但是当我接近光速 我… 1314 02:34:04,250 --> 02:34:05,750 听着 时间会发生疯狂的事 1315 02:34:05,910 --> 02:34:08,500 但要是我成功了 就能制造巨大的电力 1316 02:34:08,670 --> 02:34:10,420 我可以往回跑 只要距离够远 1317 02:34:10,590 --> 02:34:12,750 就能传导大量电流 1318 02:34:12,920 --> 02:34:15,260 也许可以唤醒母盒 如果… 1319 02:34:15,670 --> 02:34:17,260 还是要这么做的话 1320 02:34:17,430 --> 02:34:18,840 没错 开始吧 1321 02:34:23,680 --> 02:34:24,890 你好 莱恩小姐 1322 02:34:25,060 --> 02:34:25,890 早安 1323 02:34:26,060 --> 02:34:27,310 我以为你不会来了 1324 02:34:28,600 --> 02:34:29,940 最后一次 1325 02:34:32,480 --> 02:34:34,070 封锁线 请勿跨越 1326 02:34:47,080 --> 02:34:50,460 我看到发动机 这一定是终点线 1327 02:34:50,960 --> 02:34:52,040 我就位了 1328 02:34:54,920 --> 02:34:57,010 准备开始投放程序 1329 02:34:57,470 --> 02:34:59,090 母盒准备好了 1330 02:35:18,610 --> 02:35:20,450 这艘飞船在求我不要唤醒母盒 1331 02:35:20,610 --> 02:35:22,410 -这是无法逆转的程序 -它很害怕 1332 02:35:22,570 --> 02:35:23,660 它知道荒原狼会来找它 1333 02:35:23,830 --> 02:35:25,580 我们知道了 继续吧 1334 02:35:25,910 --> 02:35:28,370 我强烈建议不要启动 1335 02:35:28,540 --> 02:35:30,080 巴里 我要开始倒数了 1336 02:35:30,250 --> 02:35:31,960 这是无法逆转的程序 1337 02:35:32,210 --> 02:35:33,170 -五 -五 1338 02:35:33,250 --> 02:35:34,090 五 1339 02:35:34,250 --> 02:35:35,380 -天启星有敌意 -馊主意 1340 02:35:35,550 --> 02:35:36,510 并不是 继续吧 1341 02:35:36,800 --> 02:35:37,630 四 1342 02:35:37,800 --> 02:35:38,970 -四 -四 1343 02:35:39,130 --> 02:35:40,840 -我强烈建议不要启动 -我们得立刻中止 1344 02:35:41,010 --> 02:35:41,970 快动手 1345 02:35:42,300 --> 02:35:43,300 -三 -三 1346 02:35:43,470 --> 02:35:44,390 三 1347 02:35:44,560 --> 02:35:46,470 -二 -二 1348 02:35:46,640 --> 02:35:48,390 -二 -这是无法逆转的程序 1349 02:35:48,680 --> 02:35:49,640 -一 -一 1350 02:35:50,690 --> 02:35:53,480 -一 -这是无法逆转的程序 1351 02:37:13,900 --> 02:37:17,860 正义联盟 1352 02:37:22,400 --> 02:37:23,990 -维克多 -不 1353 02:37:25,030 --> 02:37:25,860 上 1354 02:38:56,580 --> 02:38:59,630 未来已经在现在扎根 1355 02:39:00,170 --> 02:39:01,210 快趴下 1356 02:40:17,330 --> 02:40:22,330 你若在寻找他的纪念碑 看看你周围 1357 02:40:45,310 --> 02:40:46,860 他活过来了 1358 02:41:13,880 --> 02:41:16,600 不太对劲 他在扫描我们 1359 02:41:18,720 --> 02:41:20,140 什么 1360 02:41:35,320 --> 02:41:36,160 维克多 1361 02:41:37,450 --> 02:41:38,450 维克多 1362 02:41:40,740 --> 02:41:42,290 -该死 -你在干嘛 1363 02:41:42,750 --> 02:41:44,290 是我的自动防御系统 1364 02:41:44,460 --> 02:41:45,500 它感应到危险 1365 02:41:45,670 --> 02:41:46,830 维克多 住手 1366 02:41:47,000 --> 02:41:48,840 -我无法控制 -住手 1367 02:42:01,270 --> 02:42:02,430 卡尔·艾尔 不要 1368 02:42:10,820 --> 02:42:12,780 他头脑不清楚 不知道自己是谁 1369 02:42:19,950 --> 02:42:22,580 亚瑟 我们得制伏他 1370 02:42:53,150 --> 02:42:56,780 卡尔·艾尔 最后的氪星之子 1371 02:42:57,860 --> 02:43:00,070 回想你是谁 1372 02:43:01,700 --> 02:43:03,120 告诉我你是谁 1373 02:44:37,920 --> 02:44:38,760 快逃 1374 02:44:48,180 --> 02:44:49,810 你最好闪边 1375 02:44:53,100 --> 02:44:54,100 -没事吗 -没事 1376 02:44:54,270 --> 02:44:56,730 起来 去找掩护 快去 1377 02:45:49,160 --> 02:45:51,200 别逼我这么做 1378 02:46:23,900 --> 02:46:25,030 克拉克 1379 02:46:26,110 --> 02:46:27,280 克拉克 不 1380 02:46:38,880 --> 02:46:39,840 克拉克 1381 02:46:40,250 --> 02:46:41,420 不 1382 02:46:42,250 --> 02:46:44,010 这世界需要你 1383 02:46:49,300 --> 02:46:50,220 克拉克 1384 02:46:50,600 --> 02:46:51,850 克拉克 1385 02:46:52,180 --> 02:46:53,970 别开枪 1386 02:46:55,560 --> 02:46:56,690 克拉克 1387 02:47:00,060 --> 02:47:01,440 求求你 1388 02:47:35,680 --> 02:47:36,810 求求你 1389 02:47:48,030 --> 02:47:49,200 求求你 1390 02:47:49,950 --> 02:47:51,740 走吧 1391 02:47:52,200 --> 02:47:53,200 没错 1392 02:47:54,080 --> 02:47:55,370 我们走吧 1393 02:48:27,940 --> 02:48:30,280 真是拍谢 1394 02:48:39,500 --> 02:48:40,410 找掩护 1395 02:48:40,580 --> 02:48:43,080 -他来了 -母盒 1396 02:48:43,250 --> 02:48:44,290 它在哪里 1397 02:48:55,010 --> 02:48:56,220 快点 1398 02:48:57,140 --> 02:48:58,430 快点 1399 02:49:23,960 --> 02:49:27,000 注意 实验室受到入侵 1400 02:49:27,590 --> 02:49:29,760 第四区 第三层 1401 02:49:29,920 --> 02:49:32,720 立刻执行封锁程序 1402 02:50:01,290 --> 02:50:02,870 把母盒给我 1403 02:50:16,050 --> 02:50:17,470 不 不 1404 02:50:20,010 --> 02:50:21,720 爸 等等 不要 1405 02:51:02,060 --> 02:51:04,930 末日即将开始 1406 02:51:10,690 --> 02:51:11,980 维克多 1407 02:51:14,530 --> 02:51:17,650 维克多 你没事吧 站起来 1408 02:51:23,660 --> 02:51:24,830 维克多 1409 02:51:25,950 --> 02:51:27,410 他死了 1410 02:51:27,580 --> 02:51:28,580 什么 1411 02:51:29,670 --> 02:51:30,880 我父亲 1412 02:51:32,340 --> 02:51:35,300 我没能救他 我没办法 1413 02:51:36,090 --> 02:51:37,380 天啊 1414 02:51:44,310 --> 02:51:46,390 他父亲是因我们而死 1415 02:51:46,560 --> 02:51:48,020 我就说唤醒母盒是个馊主意 1416 02:51:48,190 --> 02:51:49,770 这不是个馊主意 1417 02:51:49,940 --> 02:51:52,270 我们需要超人 现在仍然需要 1418 02:51:52,440 --> 02:51:54,730 不管是什么回来了 那不是超人 1419 02:51:54,900 --> 02:51:57,900 也许是他的躯体和超能力 但那不是他 1420 02:51:58,070 --> 02:51:59,700 那是他 1421 02:51:59,860 --> 02:52:01,990 他认得露易丝·莱恩 1422 02:52:02,370 --> 02:52:04,280 -谁 -他挚爱的女人 1423 02:52:04,660 --> 02:52:06,660 -他记得她 -才怪 1424 02:52:07,200 --> 02:52:08,960 他会去找她是因为她不怕他 1425 02:52:09,120 --> 02:52:10,540 这叫做直觉 戴安娜 1426 02:52:17,970 --> 02:52:19,800 等等 荒原狼去了哪儿 1427 02:52:19,970 --> 02:52:23,300 他回去基地组装三个母盒 1428 02:52:23,470 --> 02:52:25,560 我们不知道他的基地在哪里 或是还要多久… 1429 02:52:25,720 --> 02:52:26,560 几个小时 1430 02:52:26,720 --> 02:52:28,390 盒子一旦同步 形成三位一体 1431 02:52:28,560 --> 02:52:30,810 我们不能及时阻止他 地球就完了 1432 02:52:31,730 --> 02:52:33,400 这不像你 1433 02:52:35,940 --> 02:52:37,440 他早就知道 1434 02:52:37,730 --> 02:52:39,320 他早就知道了 1435 02:52:39,490 --> 02:52:40,900 他不是想要摧毁那个母盒 1436 02:52:41,320 --> 02:52:43,240 而是想要让它过热 1437 02:52:43,410 --> 02:52:46,080 让核心变成核反应炉以外 地球上最热的东西 1438 02:52:46,240 --> 02:52:48,290 -那么热的东西一定会… -热源影像系统 1439 02:52:48,450 --> 02:52:50,660 一定会破表 1440 02:52:50,830 --> 02:52:54,210 你父亲为了标记母盒牺牲自己 1441 02:52:54,380 --> 02:52:56,250 我们得回我的实验室使用卫星 1442 02:52:56,420 --> 02:52:58,420 扫描地球哪里有热异常 1443 02:52:58,590 --> 02:52:59,720 我已经在扫描了 1444 02:52:59,880 --> 02:53:01,880 什么 你有一颗卫星 1445 02:53:02,050 --> 02:53:03,010 我有六颗 1446 02:53:03,680 --> 02:53:04,600 是喔 1447 02:53:06,390 --> 02:53:08,390 咱们去找那个混帐东西 1448 02:53:14,190 --> 02:53:19,480 第六章 1449 02:53:15,930 --> 02:53:19,480 “更黑暗的东西” 1450 02:53:29,280 --> 02:53:32,790 法拍屋出售 1451 02:53:32,960 --> 02:53:35,040 你把我带来这里 1452 02:53:35,210 --> 02:53:36,380 你记得 1453 02:53:37,290 --> 02:53:38,920 这是我的家 1454 02:53:40,840 --> 02:53:42,050 你说话了 1455 02:53:46,090 --> 02:53:47,970 我之前没有吗 1456 02:54:21,960 --> 02:54:24,510 你母亲迟缴了房贷 1457 02:54:26,010 --> 02:54:28,010 没有告诉任何人 1458 02:54:29,680 --> 02:54:31,430 我不明白 1459 02:54:34,520 --> 02:54:36,940 她的自尊心很强 克拉克 1460 02:54:40,070 --> 02:54:41,440 穿上去 1461 02:54:56,370 --> 02:54:58,040 她很喜欢这里 1462 02:55:08,840 --> 02:55:10,470 我也是 1463 02:55:12,470 --> 02:55:13,890 我也是 1464 02:55:41,000 --> 02:55:42,630 这太酷了 1465 02:55:42,790 --> 02:55:44,300 我带了一些朋友来 1466 02:55:50,840 --> 02:55:53,430 天啊 太棒了 1467 02:55:53,600 --> 02:55:56,100 大伙儿 这是阿尔弗雷德 我替他工作 1468 02:55:56,270 --> 02:55:58,480 -阿尔弗雷德 -你好 女士 1469 02:56:04,940 --> 02:56:06,820 这里真的很酷 阿尔弗雷德 1470 02:56:09,610 --> 02:56:12,030 我去泡茶 1471 02:56:12,200 --> 02:56:13,200 太好了 1472 02:56:13,370 --> 02:56:15,200 不知道哪里有这么多杯子 1473 02:56:18,120 --> 02:56:20,960 那就是母盒 就在那里 1474 02:56:21,120 --> 02:56:22,920 显示可见光谱 1475 02:56:25,800 --> 02:56:26,630 普扎诺夫 1476 02:56:27,210 --> 02:56:30,050 离莫斯科不远的鬼城 1477 02:56:30,220 --> 02:56:32,890 三十年前发生核事故后被废弃 1478 02:56:33,050 --> 02:56:34,260 就连军队也不进去 1479 02:56:34,430 --> 02:56:35,720 是啊 辐射性一定强到 1480 02:56:35,890 --> 02:56:38,060 你的脖子会长出另一只脚 1481 02:56:38,230 --> 02:56:39,060 不再是这样了 1482 02:56:39,230 --> 02:56:41,400 他收集了辐射 用来创建他的基地 1483 02:56:41,560 --> 02:56:42,400 放大 1484 02:56:46,400 --> 02:56:47,780 他到底在盖什么 1485 02:56:47,940 --> 02:56:49,190 三位一体在里面 1486 02:56:49,360 --> 02:56:50,780 我们要从上面进攻 1487 02:56:50,950 --> 02:56:53,530 炸药无法分开母盒 1488 02:56:53,700 --> 02:56:55,530 只会强化它们的联系 1489 02:56:55,700 --> 02:56:56,830 什么 我们不能炸掉它 1490 02:56:56,990 --> 02:56:58,450 不能从外面 1491 02:57:00,040 --> 02:57:02,420 我想插入合而为一的母盒 1492 02:57:03,130 --> 02:57:04,540 和它融为一体 1493 02:57:04,710 --> 02:57:07,250 从内部削弱它的连结 就能够再把它拆成三个 1494 02:57:07,420 --> 02:57:09,630 不行 你不知道你会面对什么 1495 02:57:09,800 --> 02:57:13,340 你得一个人融入三位一体 1496 02:57:13,510 --> 02:57:15,850 这三个母盒结合起来足以毁天灭地 1497 02:57:16,010 --> 02:57:17,430 它们存在了十亿年 1498 02:57:17,600 --> 02:57:19,730 绝对会钻进你脑袋 找到你的弱点 1499 02:57:19,890 --> 02:57:22,060 和你的恐惧 并用来摧毁你 1500 02:57:22,230 --> 02:57:24,230 只要让我进去 替我争取时间 1501 02:57:24,480 --> 02:57:25,650 你可能会死 维克多 1502 02:57:25,810 --> 02:57:28,110 我不这样做 我们都会死 1503 02:57:32,860 --> 02:57:34,620 我失去了一切 1504 02:57:40,000 --> 02:57:41,960 你不是要我使用这些超能力吗 1505 02:57:45,040 --> 02:57:46,540 我就要这么做 1506 02:57:46,710 --> 02:57:48,590 好吧 所以… 1507 02:57:49,300 --> 02:57:52,550 维克多想和末日母盒 合而为一拯救世界 1508 02:57:52,760 --> 02:57:54,930 那就让他这么做吧 1509 02:57:55,260 --> 02:57:58,060 但要让他这么做就得攻击基地 1510 02:57:58,220 --> 02:58:00,430 深入地狱向魔鬼与他的军团… 1511 02:58:00,600 --> 02:58:01,640 正式开战 1512 02:58:01,810 --> 02:58:04,060 这家伙在他摧毁的星球上 1513 02:58:04,230 --> 02:58:08,190 大概打过成千上万个超级英雄 对吧 1514 02:58:08,360 --> 02:58:09,860 我们得假设他都赢了 1515 02:58:10,030 --> 02:58:13,150 我才不管他在多少个地狱 打过多少恶魔 1516 02:58:13,320 --> 02:58:16,820 他没打过我们 团结一致的我们 1517 02:59:07,290 --> 02:59:08,920 我猜你说"愿意" 1518 02:59:09,540 --> 02:59:10,380 什么 1519 02:59:13,840 --> 02:59:15,090 那只婚戒 1520 02:59:18,800 --> 02:59:20,350 你真的回来了 1521 02:59:53,840 --> 02:59:56,050 我得到第二次机会 1522 02:59:58,340 --> 03:00:00,800 绝对不会白白浪费 1523 03:00:59,070 --> 03:01:00,240 真的是你吗 1524 03:01:00,400 --> 03:01:02,110 真的是我 妈 1525 03:01:20,130 --> 03:01:22,180 听好 妈 1526 03:01:23,760 --> 03:01:25,800 他们让我回来一定有原因 1527 03:01:27,560 --> 03:01:29,100 我得知道为什么 1528 03:01:49,240 --> 03:01:50,660 维克多怎么样 1529 03:01:55,040 --> 03:01:57,790 你也知道 他想独处一下 1530 03:01:59,380 --> 03:02:02,550 我们要求一个刚失去父亲的孩子… 1531 03:02:02,720 --> 03:02:05,510 对抗全宇宙最强大的机器 1532 03:02:07,350 --> 03:02:08,850 这不公平 1533 03:02:10,600 --> 03:02:12,230 我以为你不在乎 1534 03:02:13,640 --> 03:02:15,150 我从来没这么说过 1535 03:02:28,080 --> 03:02:29,490 怎么了 1536 03:02:33,410 --> 03:02:38,420 我做过一个梦 不晓得 几乎就像一种预感 1537 03:02:39,380 --> 03:02:42,170 那是世界末日 1538 03:02:42,340 --> 03:02:45,180 巴里·艾伦就在这里 1539 03:02:45,340 --> 03:02:49,220 他跟我说 "露易丝·莱恩才是关键" 1540 03:02:51,890 --> 03:02:55,100 对超人来说…她是 1541 03:02:56,150 --> 03:02:57,770 每个人都有心爱的人 1542 03:02:58,400 --> 03:03:00,270 我想不只是这样 1543 03:03:01,150 --> 03:03:03,030 这是更黑暗的东西 1544 03:03:07,200 --> 03:03:08,200 韦恩少爷 1545 03:03:08,370 --> 03:03:09,870 韦恩少爷 1546 03:03:10,700 --> 03:03:12,370 你得来看看 1547 03:03:35,640 --> 03:03:37,350 你修好了 1548 03:03:37,520 --> 03:03:39,230 它想要飞行 1549 03:03:40,480 --> 03:03:41,820 飞行是它的本能 1550 03:03:41,980 --> 03:03:43,280 也是你的 1551 03:03:50,070 --> 03:03:52,030 他会来的 阿尔弗雷德 我知道 1552 03:03:52,200 --> 03:03:53,830 你为何这么肯定 1553 03:03:54,580 --> 03:03:57,160 信念 阿尔弗雷德 信念 1554 03:04:19,270 --> 03:04:20,850 终于 1555 03:04:22,690 --> 03:04:25,400 准备迎接他的到来 1556 03:04:27,240 --> 03:04:31,370 我即将得到救赎 1557 03:04:39,250 --> 03:04:40,710 合而为一 1558 03:04:45,880 --> 03:04:48,380 同步化 1559 03:05:32,720 --> 03:05:35,640 卫星显示他打造了一个防御圆顶 1560 03:05:35,800 --> 03:05:36,970 这是个设计缺陷 1561 03:05:37,140 --> 03:05:39,390 把塔台射倒 圆顶就会崩垮 1562 03:05:39,560 --> 03:05:41,560 敌人不会料到我们正面攻击 1563 03:05:41,730 --> 03:05:45,230 是啊 因为他没想到 有人会这么疯狂 1564 03:05:46,230 --> 03:05:47,520 布鲁斯是对的 1565 03:05:47,690 --> 03:05:49,280 我们必须摧毁防御圆顶 1566 03:05:49,440 --> 03:05:51,740 在它们同步化之前找到母盒 1567 03:05:51,900 --> 03:05:53,610 要是圆顶没被摧毁呢 1568 03:05:53,780 --> 03:05:54,780 它一定会被摧毁 1569 03:05:54,950 --> 03:05:56,580 维克多一旦融入三位一体 1570 03:05:57,080 --> 03:06:00,330 有巴里的协助 他就能突破母盒的防御 1571 03:06:00,500 --> 03:06:01,960 提醒我 我该怎么做 1572 03:06:02,120 --> 03:06:03,750 用爱的力量 1573 03:06:03,920 --> 03:06:06,540 -巴里 -我得造成能量大爆发 1574 03:06:06,710 --> 03:06:07,710 很好 1575 03:06:07,880 --> 03:06:09,760 你得比以前跑得更快 1576 03:06:09,920 --> 03:06:12,470 才能产生这么大的电流 1577 03:06:12,630 --> 03:06:14,640 然后直接碰触维克多的身体 1578 03:06:14,970 --> 03:06:17,850 那股能量应该能让他进入母盒 1579 03:06:18,010 --> 03:06:19,890 维克多 之后就靠你了 1580 03:06:20,060 --> 03:06:22,810 在它同步化之前把它扯开 1581 03:06:24,390 --> 03:06:26,520 我们终于有了计划 1582 03:06:27,060 --> 03:06:28,770 我们有了计划 1583 03:06:44,120 --> 03:06:46,170 艾尔之家的标记代表希望 1584 03:06:46,330 --> 03:06:48,500 这希望包含了一个基本的信念 1585 03:06:48,670 --> 03:06:52,380 那就是每个人都有行善的潜力 1586 03:06:52,550 --> 03:06:53,380 克拉克 1587 03:06:53,550 --> 03:06:54,840 那就是你能带给他们的 1588 03:06:55,010 --> 03:06:56,970 你被送来这里是有原因的 1589 03:06:57,140 --> 03:07:01,010 你将给地球的人类 一个努力达到的理想 1590 03:07:01,680 --> 03:07:03,520 就算你必须穷尽一生 1591 03:07:03,680 --> 03:07:07,440 也得尽全力找到你来这里的原因 1592 03:07:07,600 --> 03:07:10,230 他们会犯错 也会失败 1593 03:07:10,400 --> 03:07:11,730 但你必须做出选择 1594 03:07:12,530 --> 03:07:14,950 他们将与你一起迎向阳光 1595 03:07:15,110 --> 03:07:19,070 你必须选择是否要 骄傲地站在全人类面前 1596 03:07:19,240 --> 03:07:22,410 你将帮助他们完成奇迹 1597 03:07:39,550 --> 03:07:44,060 氪星所有的希望和梦想 都寄托在你身上 1598 03:07:44,220 --> 03:07:46,480 我真为你感到骄傲 儿子 1599 03:07:47,810 --> 03:07:49,860 你母亲和我都很爱你 1600 03:07:50,520 --> 03:07:54,070 你母亲和我都知道你会改变世界 1601 03:07:55,360 --> 03:07:57,200 你的心受到考验 1602 03:07:58,490 --> 03:08:00,450 我知道这很难 克拉克 1603 03:08:01,200 --> 03:08:04,120 但你给了他们的世界一个希望 1604 03:08:04,290 --> 03:08:06,960 你必须让他们看到你是谁 1605 03:08:07,660 --> 03:08:09,370 爱他们吧 卡尔·艾尔 1606 03:08:10,000 --> 03:08:12,130 就像我们爱你一样 1607 03:08:14,590 --> 03:08:15,710 飞吧 儿子 1608 03:08:16,760 --> 03:08:17,970 是时候了 1609 03:09:21,740 --> 03:09:24,870 我要把塔台射倒 破坏力场圆顶 1610 03:09:25,030 --> 03:09:26,160 不管你们看到什么 1611 03:09:27,490 --> 03:09:29,450 都要按照计划 1612 03:09:31,330 --> 03:09:33,250 这就是我把你们聚在一起的原因 1613 03:10:13,330 --> 03:10:15,080 布鲁斯 撤退 你不会成功的 1614 03:10:18,880 --> 03:10:20,920 只要敲大声一点 1615 03:10:45,910 --> 03:10:47,490 杀了他 1616 03:10:47,660 --> 03:10:50,410 快去捍卫三位一体 1617 03:10:55,710 --> 03:10:56,630 惨了 1618 03:11:16,940 --> 03:11:17,860 塔台倒了 1619 03:11:19,480 --> 03:11:20,900 收到吗 1620 03:11:21,530 --> 03:11:22,650 收到了 1621 03:11:23,740 --> 03:11:25,110 你没事吗 1622 03:11:26,360 --> 03:11:28,950 布鲁斯 1623 03:11:29,240 --> 03:11:30,120 快去反应炉 1624 03:11:30,280 --> 03:11:32,790 我会尽量把这些怪物引开来 1625 03:11:32,950 --> 03:11:33,790 那是什么意思 1626 03:11:36,790 --> 03:11:38,790 别担心我 快去找到母盒 1627 03:11:41,460 --> 03:11:42,630 它们来了 1628 03:11:43,010 --> 03:11:43,920 布鲁斯 1629 03:11:46,840 --> 03:11:48,140 失去讯号 1630 03:11:49,850 --> 03:11:51,100 上吧 1631 03:12:30,010 --> 03:12:31,850 跟我来呀 你们这群臭虫 1632 03:13:51,800 --> 03:13:52,970 严重受损 1633 03:14:32,970 --> 03:14:34,220 你真的发疯了 1634 03:15:01,120 --> 03:15:02,250 不客气 1635 03:15:02,410 --> 03:15:03,710 厉害 兄弟 1636 03:16:36,800 --> 03:16:38,430 放心 我们能搞定 1637 03:16:38,590 --> 03:16:39,970 你去做该做的事 1638 03:17:35,770 --> 03:17:37,280 我猜你就是阿尔弗雷德 1639 03:17:39,150 --> 03:17:40,450 肯特少爷 1640 03:17:42,490 --> 03:17:43,990 他说你会来 1641 03:17:45,700 --> 03:17:49,120 希望你没有来得太晚 1642 03:17:59,970 --> 03:18:01,050 喂 1643 03:18:10,350 --> 03:18:11,690 记得我吗 1644 03:18:14,230 --> 03:18:15,650 第二回合 1645 03:18:16,360 --> 03:18:17,520 好啊 1646 03:18:39,050 --> 03:18:40,420 上吧 1647 03:18:41,380 --> 03:18:43,680 告诉我 亚马逊女战士 1648 03:18:43,840 --> 03:18:47,140 你为何抛弃自己的姐妹 1649 03:18:48,060 --> 03:18:50,470 跑来跟这些卑微的生物 1650 03:18:50,640 --> 03:18:53,940 混在一起 1651 03:18:54,140 --> 03:18:56,980 你没能赶去保护她们被我屠杀 1652 03:18:57,230 --> 03:18:59,440 可悲的是 你本来可以的 1653 03:19:40,230 --> 03:19:41,940 巴里 我就位了 1654 03:20:00,710 --> 03:20:03,420 好 我来产生电流 1655 03:20:04,050 --> 03:20:05,130 你来倒数 1656 03:20:06,300 --> 03:20:07,550 等我倒数到一 1657 03:20:08,220 --> 03:20:10,180 三 二… 1658 03:20:13,350 --> 03:20:14,730 放开我 1659 03:20:15,230 --> 03:20:16,560 维克多 1660 03:20:52,640 --> 03:20:54,180 维克多 1661 03:20:58,020 --> 03:21:00,520 我看着你的小岛燃烧 1662 03:21:00,690 --> 03:21:04,150 你的姐妹哀求我饶她们一命 1663 03:21:04,320 --> 03:21:06,570 你母亲也一样 1664 03:21:06,940 --> 03:21:07,950 骗子 1665 03:21:33,680 --> 03:21:35,680 我撑不住了 1666 03:21:36,560 --> 03:21:37,560 维克多 1667 03:21:59,790 --> 03:22:02,000 维克多 我撑不住了 1668 03:22:08,670 --> 03:22:10,920 为了达克赛德 1669 03:22:14,890 --> 03:22:17,260 没什么用 1670 03:23:01,770 --> 03:23:02,890 好吧 1671 03:23:03,060 --> 03:23:04,650 卡尔·艾尔 1672 03:23:43,180 --> 03:23:45,390 巴里 我连上了母盒 1673 03:23:45,560 --> 03:23:47,520 我需要电流才能进去 1674 03:24:09,590 --> 03:24:10,590 巴里 1675 03:24:11,500 --> 03:24:13,170 巴里 你没事吧 1676 03:24:14,800 --> 03:24:15,630 巴里 1677 03:24:15,800 --> 03:24:19,390 我没力了 我得喘口气 1678 03:24:36,490 --> 03:24:39,320 巴里 你在哪里 它快要同步化了 1679 03:24:39,570 --> 03:24:41,330 好吧 好吧 1680 03:24:42,160 --> 03:24:44,330 喔买尬 快点愈合 巴里 1681 03:24:44,500 --> 03:24:46,160 愈合啊 1682 03:25:12,020 --> 03:25:13,570 巴里 1683 03:25:26,500 --> 03:25:28,210 太迟了 1684 03:25:29,540 --> 03:25:30,960 噢 不 1685 03:25:35,170 --> 03:25:36,840 他来了 1686 03:26:06,330 --> 03:26:07,160 好吧 1687 03:26:07,330 --> 03:26:09,910 我得超越光速 跑得比光速更快 1688 03:26:10,080 --> 03:26:13,330 你得打破规则 巴里 现在就得这么做 1689 03:26:26,390 --> 03:26:28,100 爸… 1690 03:26:31,940 --> 03:26:34,270 不管发生什么事 我都要你知道 1691 03:26:36,980 --> 03:26:38,980 你儿子也是一个英雄 爸 1692 03:26:42,200 --> 03:26:44,110 精英中的精英 1693 03:27:39,550 --> 03:27:42,090 创造自己的未来 1694 03:27:48,550 --> 03:27:50,510 也创造自己的过去 1695 03:27:55,100 --> 03:27:58,650 一切都没事了 1696 03:28:28,640 --> 03:28:30,350 斯通 哥谭市立大学 1697 03:28:35,020 --> 03:28:37,600 哥谭市 1698 03:28:45,690 --> 03:28:47,860 我们一直在等着你 维克多 1699 03:28:48,990 --> 03:28:51,070 我破碎的儿子 1700 03:28:53,490 --> 03:28:55,500 你不会再孤单了 1701 03:28:55,660 --> 03:28:57,330 我们会再全家团圆 1702 03:29:05,170 --> 03:29:07,260 我们可以像以前一样 1703 03:29:11,600 --> 03:29:13,720 让你恢复原状 1704 03:29:25,570 --> 03:29:27,320 我并没有破碎 1705 03:29:37,040 --> 03:29:38,910 我也并不孤单 1706 03:29:55,720 --> 03:29:56,720 超人 1707 03:31:27,400 --> 03:31:29,360 我跟你说过 1708 03:31:30,940 --> 03:31:33,570 荒原狼会失败 1709 03:31:34,530 --> 03:31:38,200 没错 你是说过 1710 03:31:38,870 --> 03:31:43,370 我的主人 母盒被摧毁了 1711 03:31:44,250 --> 03:31:48,000 你要怎么得到你的大奖 1712 03:31:48,250 --> 03:31:51,670 找到了反生命方程序 狄萨德 1713 03:31:51,840 --> 03:31:56,510 我们会不择手段得到它 1714 03:31:59,680 --> 03:32:01,180 准备出动舰队 1715 03:32:02,100 --> 03:32:04,520 我们要用老方法 1716 03:34:07,080 --> 03:34:12,270 后记 1717 03:34:08,690 --> 03:34:12,270 再为人父 1718 03:34:28,870 --> 03:34:31,000 这又是你父亲 1719 03:34:38,300 --> 03:34:42,630 现在 让我说出内心话 不是身为一个科学家 1720 03:34:42,800 --> 03:34:44,470 而是身为一个父亲 1721 03:34:45,680 --> 03:34:47,720 让我再为人父 1722 03:34:50,270 --> 03:34:53,690 我把你带到这世界 又把你带回来 1723 03:34:53,850 --> 03:34:57,480 你无法想像我有多为你感到骄傲 1724 03:34:58,030 --> 03:34:59,690 一直都是如此 1725 03:35:01,820 --> 03:35:06,700 我浪费了这么多年没有陪你 也犯了太多错没有改过 1726 03:35:09,160 --> 03:35:11,040 一切都会崩裂 维克多 1727 03:35:11,620 --> 03:35:13,870 一切都会改变 1728 03:35:24,550 --> 03:35:26,640 我得去见我父亲 1729 03:36:02,210 --> 03:36:04,050 这世界伤痕累累 1730 03:36:04,220 --> 03:36:05,300 支离破碎 1731 03:36:05,470 --> 03:36:07,260 无法改变 1732 03:36:08,050 --> 03:36:11,140 飞船是你的了 小子 你是老大 1733 03:36:13,430 --> 03:36:16,600 "蔡瑞恩 纳米科技总监" 1734 03:36:16,770 --> 03:36:18,270 那是你的专长 1735 03:36:18,940 --> 03:36:20,360 没错 1736 03:36:20,940 --> 03:36:22,530 那是我的专长 1737 03:36:27,570 --> 03:36:32,910 但世界不能在过去修复 只有在未来才能 1738 03:36:34,790 --> 03:36:38,670 未来与现在 1739 03:36:38,830 --> 03:36:41,800 至少要有30 45公尺 1740 03:36:42,380 --> 03:36:43,710 至少 1741 03:36:44,840 --> 03:36:46,470 一张大圆桌 1742 03:36:46,630 --> 03:36:48,800 六张椅子 就在那里 1743 03:36:49,930 --> 03:36:51,560 但还能坐更多人 1744 03:36:53,970 --> 03:36:55,600 还能坐更多人 1745 03:36:56,600 --> 03:36:58,350 老天保佑我们 1746 03:37:00,150 --> 03:37:02,150 现在就是你 1747 03:37:05,860 --> 03:37:07,240 什么 1748 03:37:07,400 --> 03:37:10,200 这是刑事实验室最烂的工作 1749 03:37:10,370 --> 03:37:12,740 不过我入门了 1750 03:37:12,910 --> 03:37:14,500 这是"真正"的工作 1751 03:37:15,290 --> 03:37:16,410 "真正的" 1752 03:37:20,630 --> 03:37:22,670 你入门了 1753 03:37:25,010 --> 03:37:26,130 大家不都是这么说吗 1754 03:37:26,300 --> 03:37:28,220 你入门了 1755 03:37:28,380 --> 03:37:30,680 是啊 大家都是这么说 1756 03:37:30,840 --> 03:37:32,260 他入门了 1757 03:37:32,550 --> 03:37:35,020 -那是我的乖儿子 -噢 天啊 1758 03:37:35,220 --> 03:37:36,560 我什么都没教他 1759 03:37:36,730 --> 03:37:38,770 -爸 你会再被喷辣椒水 -好样的 1760 03:37:42,270 --> 03:37:43,980 你的前途无量 1761 03:37:46,110 --> 03:37:47,360 谢了 爸 1762 03:37:47,740 --> 03:37:48,570 现在 1763 03:37:48,740 --> 03:37:51,820 现在是你崛起的时刻 维克多 1764 03:37:52,120 --> 03:37:55,080 光是说声"谢谢你"并不够 1765 03:37:55,240 --> 03:37:58,620 我只是弥补一个错误而已 1766 03:38:09,050 --> 03:38:11,510 你怎么向银行把房子要回来的 1767 03:38:11,970 --> 03:38:13,970 我买下了银行 1768 03:38:16,390 --> 03:38:18,680 对了 恭喜了 1769 03:38:19,020 --> 03:38:20,950 坚持下去 勇往直前 1770 03:38:20,600 --> 03:38:21,900 挚爱的父亲 塞拉斯·斯通 1969-2017 1771 03:38:20,950 --> 03:38:24,440 当一个我未曾当过的英雄 1772 03:38:26,280 --> 03:38:28,570 在勇士之中占有一席之地 1773 03:38:28,740 --> 03:38:33,660 从前 现在与未来 1774 03:39:06,320 --> 03:39:09,230 你该挺身而出了 1775 03:39:12,990 --> 03:39:14,490 勇敢奋战 1776 03:39:17,120 --> 03:39:18,540 努力发掘 1777 03:39:23,290 --> 03:39:25,380 愈合与爱 1778 03:39:28,960 --> 03:39:30,010 赢得胜利 1779 03:39:56,620 --> 03:39:58,200 关键时刻… 1780 03:39:58,490 --> 03:39:59,870 就是现在 1781 03:40:09,040 --> 03:40:10,300 准备好了吗 1782 03:40:10,460 --> 03:40:11,760 来吧 史蒂芬 1783 03:40:15,380 --> 03:40:16,680 继续走吧 1784 03:40:18,600 --> 03:40:19,720 走吧 1785 03:40:21,520 --> 03:40:23,270 来吧 卢瑟 走吧 1786 03:40:26,940 --> 03:40:28,060 卢瑟 1787 03:40:33,070 --> 03:40:34,070 打开二号牢房 卡尔 1788 03:40:43,250 --> 03:40:44,540 卢瑟 1789 03:40:49,590 --> 03:40:52,800 别闹了 卢瑟 不然我要进去教训你 1790 03:41:20,190 --> 03:41:22,410 阿卡姆 哥谭市 1791 03:41:27,480 --> 03:41:30,130 阿卡姆精神病院 1792 03:42:22,050 --> 03:42:23,350 他来了 1793 03:42:24,100 --> 03:42:25,350 欢迎上船 1794 03:42:25,510 --> 03:42:27,310 来一杯顶级香槟 1795 03:42:27,470 --> 03:42:29,350 我只是在庆祝神的回归 1796 03:42:29,520 --> 03:42:31,810 从地底回到天空 1797 03:42:32,190 --> 03:42:34,440 听说你脑筋秀逗了 1798 03:42:35,110 --> 03:42:36,320 本来是 谢谢你 1799 03:42:36,480 --> 03:42:40,780 直到阿卡汉的良医 让我的头脑再度清晰 1800 03:42:40,950 --> 03:42:44,240 你自愿免费干掉蝙蝠侠 1801 03:42:44,410 --> 03:42:45,910 为什么这么好心 1802 03:42:46,660 --> 03:42:47,740 这是私人恩怨 1803 03:42:48,410 --> 03:42:51,210 让我猜 以眼还眼 1804 03:42:53,290 --> 03:42:55,000 你说你有我要的东西 1805 03:42:55,170 --> 03:42:56,590 你最好别浪费我的时间 1806 03:42:57,000 --> 03:43:00,670 我哪敢惹你呀 威尔森先生 1807 03:43:00,840 --> 03:43:04,430 我有更重要的事要做 所以得好好活着 1808 03:43:05,390 --> 03:43:08,850 但如果你想找到蝙蝠侠 1809 03:43:09,020 --> 03:43:12,100 有件事可以帮你大忙 1810 03:43:13,440 --> 03:43:17,570 他的名字是布鲁斯·韦恩 1811 03:43:21,650 --> 03:43:23,200 现在想一想 1812 03:43:25,530 --> 03:43:27,450 这件事的确值得庆祝 1813 03:43:28,580 --> 03:43:30,000 好样的 1814 03:44:34,310 --> 03:44:35,520 安全 1815 03:44:41,020 --> 03:44:42,530 还有多远 1816 03:44:43,780 --> 03:44:44,990 就快到了 1817 03:44:47,240 --> 03:44:48,780 我们得快点 1818 03:44:48,950 --> 03:44:50,450 不能在外面待太久 1819 03:44:50,620 --> 03:44:52,240 他会来找我们 1820 03:44:55,210 --> 03:44:56,830 让他来 1821 03:44:57,330 --> 03:44:58,960 让那个混蛋来吧 1822 03:45:00,420 --> 03:45:04,210 他杀了亚瑟 我要一刀捅死他 1823 03:45:05,010 --> 03:45:06,930 我要让他付出代价 1824 03:45:08,640 --> 03:45:10,930 我知道你的感受 湄拉 1825 03:45:11,430 --> 03:45:13,930 你一点都不知道 1826 03:45:14,430 --> 03:45:18,560 但我们得按照计划才有机会成功 1827 03:45:26,490 --> 03:45:29,910 你曾经爱过谁 1828 03:45:44,050 --> 03:45:47,220 你错了 小美人鱼 1829 03:45:50,970 --> 03:45:54,390 他很了解失去挚爱的感受 1830 03:45:56,350 --> 03:45:58,600 就像是… 1831 03:45:59,940 --> 03:46:01,310 一个父亲 1832 03:46:02,770 --> 03:46:04,110 和一个母亲 1833 03:46:05,110 --> 03:46:08,150 你说下一句话前最好小心一点 1834 03:46:09,820 --> 03:46:11,820 或是一个养子 1835 03:46:15,580 --> 03:46:17,200 对不对… 1836 03:46:18,750 --> 03:46:20,210 蝙蝠侠 1837 03:46:23,460 --> 03:46:26,670 也许那只臭美人鱼是对的 1838 03:46:28,510 --> 03:46:32,800 你对死亡麻木之前 还有多少人会死在你怀里 1839 03:46:34,390 --> 03:46:36,270 你说话一点都不小心 1840 03:46:37,520 --> 03:46:40,640 你还要看着多少死人的眼睛 1841 03:46:41,350 --> 03:46:43,730 才会彻底心死 1842 03:46:44,270 --> 03:46:47,940 我已经心死了很久 1843 03:46:48,110 --> 03:46:50,030 但就连我也有忍耐极限 1844 03:46:50,200 --> 03:46:51,910 你敢跨过那极限 我发誓会… 1845 03:46:52,070 --> 03:46:54,370 你会怎样 布鲁斯杀了我 1846 03:46:55,080 --> 03:46:56,870 你不会杀我 1847 03:46:57,740 --> 03:46:59,710 我是你最好的朋友 1848 03:47:00,210 --> 03:47:04,250 而且 谁会摸你的蛋蛋 1849 03:47:06,250 --> 03:47:07,630 反正呢 1850 03:47:08,920 --> 03:47:10,470 你需要我 1851 03:47:11,510 --> 03:47:13,010 你… 1852 03:47:13,550 --> 03:47:19,180 让她死以后造成的这个世界 需要我帮你恢复原状 1853 03:47:21,770 --> 03:47:23,020 可怜的露易丝 1854 03:47:23,810 --> 03:47:26,610 她受尽了折磨 1855 03:47:32,490 --> 03:47:33,950 我常常在想 1856 03:47:34,910 --> 03:47:39,040 你在多少个平行时空毁灭世界 老实说… 1857 03:47:40,200 --> 03:47:44,370 都是因为你没种让自己死 1858 03:47:48,960 --> 03:47:52,760 所以我还是一样比你更成熟 1859 03:47:56,600 --> 03:47:58,060 停战吧 1860 03:47:58,890 --> 03:48:00,180 布鲁斯 1861 03:48:02,940 --> 03:48:07,020 只要你有这张牌 我们就停战 1862 03:48:10,070 --> 03:48:13,280 但你只要把它撕成一半 我就很乐意跟你谈谈 1863 03:48:13,450 --> 03:48:16,450 你为什么要派那个神奇小子 1864 03:48:18,200 --> 03:48:20,040 去做一个男人的工作 1865 03:48:23,460 --> 03:48:25,250 真的很好笑 1866 03:48:25,420 --> 03:48:28,460 你竟然敢说有多少人死在我怀里 1867 03:48:28,630 --> 03:48:30,340 当我把哈莉·奎茵抱在怀里 1868 03:48:30,500 --> 03:48:32,970 她满身是血 奄奄一息时 1869 03:48:33,130 --> 03:48:36,680 她用最后一口气哀求我 1870 03:48:36,840 --> 03:48:39,100 当我杀你的时候 1871 03:48:39,260 --> 03:48:42,680 别搞错 我一定会他妈的杀了你 1872 03:48:42,850 --> 03:48:44,690 她要我慢慢来 1873 03:48:45,890 --> 03:48:47,860 我会信守这个承诺 1874 03:49:19,640 --> 03:49:21,220 你真会演戏 1875 03:49:25,520 --> 03:49:27,100 差点就唬住我了 1876 03:49:46,580 --> 03:49:47,660 我们要躲在哪里 1877 03:49:47,830 --> 03:49:50,080 他永远不会料到的地方 1878 03:49:50,540 --> 03:49:53,460 还是觉得带着他是个好主意吗 1879 03:49:54,550 --> 03:49:56,090 你觉得呢 1880 03:50:02,180 --> 03:50:03,180 他找到我们了 1881 03:51:32,350 --> 03:51:33,810 我能帮你吗 1882 03:51:35,190 --> 03:51:38,690 你一定知道达克赛德不会放过地球 1883 03:51:38,860 --> 03:51:41,860 反生命方程序就在这里 1884 03:51:42,030 --> 03:51:44,820 我们得赶在他之前找到它 1885 03:51:44,990 --> 03:51:46,700 决战时刻即将到来 1886 03:51:46,990 --> 03:51:48,740 我是来帮忙的 1887 03:51:48,910 --> 03:51:51,160 抱歉 你是哪位 1888 03:51:51,330 --> 03:51:56,420 我有很多名字和很多形体 就像你一样… 1889 03:51:57,040 --> 03:51:59,670 我发现自己要对这世界负责 1890 03:51:59,840 --> 03:52:02,300 我也该为它而战了 1891 03:52:05,840 --> 03:52:07,970 我们是需要帮助 1892 03:52:08,180 --> 03:52:11,390 所以很高兴你来了 1893 03:52:12,640 --> 03:52:14,810 我没想过会看到地球的守护者 1894 03:52:14,980 --> 03:52:17,150 会团结一致 并肩作战 1895 03:52:18,150 --> 03:52:20,530 没有你就不会发生 布鲁斯 1896 03:52:21,990 --> 03:52:24,360 你父母会为你感到骄傲 1897 03:52:25,740 --> 03:52:26,910 希望如此 1898 03:52:32,960 --> 03:52:35,920 我会保持联系 1899 03:52:36,960 --> 03:52:41,000 对了 有些人叫我… 1900 03:52:41,170 --> 03:52:43,470 火星猎人 1901 03:52:51,180 --> 03:52:53,520 我猜我会再见到你 1902 03:53:23,960 --> 03:53:30,060 献给秋 ================================================ FILE: 2021/3-21-subtitle-rejust/jl1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2021/3/21 13:01 # @File : jl1.py """ jl1.py: 正义联盟 """ import srt from datetime import timedelta # fp='/Users/play/Downloads/简体.srt' fp = '/Users/play/Downloads/cn2.srt' # 转换格式 UTF-8编码 fp3 = '/Users/play/Downloads/调整后.srt' with open(fp) as f: txt = f.read() # with open(fp,'rb') as f:#注意文件格式,Little-endian UTF-16 Unicode text, with CRLF line terminators # txt=f.read() subtitle_generator = srt.parse(txt) subtitles = list(subtitle_generator) print(subtitles[10]) subs = [] for sub in subtitles: # 延时30秒 sub.start = sub.start + timedelta(seconds=32) sub.end = sub.end + timedelta(seconds=32) subs.append(sub) ft = srt.compose(subs, reindex=False) # 问题 https://github.com/cdown/srt/issues/62 print(ft[:20]) with open(fp3, 'wb') as f: f.write(ft.encode()) # f.write(srt.compose(subs).encode()) print(fp3) def main(): pass if __name__ == '__main__': main() ================================================ FILE: 2021/3-21-subtitle-rejust/从网站下载的简体.srt ================================================ 1 00:00:18,030 --> 00:00:21,540 时代华纳旗下 2 00:00:24,140 --> 00:00:33,640 ACCESS 集团 3 00:01:27,640 --> 00:01:31,640 华纳兄弟影业 出品 4 00:01:33,640 --> 00:01:37,740 联合出品 及 沙丘娱乐 ACCESS集团 5 00:02:17,540 --> 00:02:21,640 亚特拉斯娱乐 / STONE QUARRY 出品 6 00:02:24,740 --> 00:02:28,680 扎克·施奈德 影业 7 00:02:35,810 --> 00:02:39,830 扎克·施奈德版 正义联盟 8 00:06:13,080 --> 00:06:14,590 向女王警示 9 00:09:00,430 --> 00:09:04,710 第一章 10 00:09:02,010 --> 00:09:04,710 “别指望了,蝙蝠侠” 11 00:09:05,260 --> 00:09:08,130 布鲁斯·韦恩 12 00:09:08,300 --> 00:09:09,930 布鲁斯·韦恩 13 00:09:11,420 --> 00:09:14,190 直升机因暴风雨已六天无法降落 14 00:09:14,590 --> 00:09:15,480 他是从哪来的 15 00:09:15,850 --> 00:09:17,480 他说他爬山过来的 16 00:09:17,890 --> 00:09:18,980 不可能 17 00:09:27,950 --> 00:09:29,360 有话快说 18 00:09:30,700 --> 00:09:35,200 有个陌生人从大海来到这村庄 19 00:09:35,370 --> 00:09:38,120 在村民饥寒交迫的严冬到来 20 00:09:38,290 --> 00:09:40,500 并带来渔获 21 00:09:40,670 --> 00:09:42,290 他乘着大潮而来 22 00:09:42,460 --> 00:09:43,710 昨晚的大潮 23 00:09:50,260 --> 00:09:52,550 你也亲眼看见 24 00:09:52,720 --> 00:09:54,470 渔港结冰 25 00:09:54,640 --> 00:09:56,640 四个月没有船只进港 26 00:09:57,810 --> 00:10:01,850 这个陌生人不是乘船而来 27 00:10:08,820 --> 00:10:12,450 来自远方的敌人即将来袭 28 00:10:13,740 --> 00:10:15,410 我需要战士 29 00:10:15,580 --> 00:10:19,120 对付这个陌生人 还有像他的其他人 30 00:10:19,290 --> 00:10:22,790 我要成立一个捍卫地球的联盟 31 00:10:23,710 --> 00:10:26,630 我必须见到这个人 32 00:10:27,800 --> 00:10:30,090 如果真有这个人 33 00:10:30,260 --> 00:10:32,340 他会把你的话传给他 34 00:10:32,510 --> 00:10:33,720 五千美元 35 00:10:33,890 --> 00:10:38,350 我给你两万五 让我和他说话 到外面说去 36 00:10:50,690 --> 00:10:55,070 这只狗竟敢把我们当成小孩子 37 00:10:55,910 --> 00:10:59,540 什么来自大海的神奇人物 38 00:10:59,700 --> 00:11:02,410 我们很穷 但并不蠢 39 00:11:02,710 --> 00:11:04,420 滚出去 40 00:11:05,540 --> 00:11:06,790 抱歉 41 00:11:07,210 --> 00:11:08,750 办不到 42 00:11:09,000 --> 00:11:11,130 我们说完话我就走 43 00:11:15,930 --> 00:11:17,350 他叫你"滚出去" 44 00:11:18,120 --> 00:11:20,330 办不到 45 00:11:36,370 --> 00:11:38,240 亚瑟·库瑞 46 00:11:38,410 --> 00:11:41,160 也被称为大海保护者 47 00:11:41,870 --> 00:11:43,500 海王 48 00:11:49,210 --> 00:11:50,920 让我搞清楚 49 00:11:51,090 --> 00:11:54,590 你打扮成蝙蝠真正的蝙蝠 50 00:11:54,760 --> 00:11:56,430 我在哥谭市打拼了20年 51 00:11:56,590 --> 00:11:58,430 那个鸟地方 52 00:11:58,600 --> 00:12:00,390 决战时刻 我们会需要你 53 00:12:00,560 --> 00:12:02,310 -别指望了 蝙蝠侠 -为什么 54 00:12:03,230 --> 00:12:05,060 我不喜欢你跑来挖我的隐私 55 00:12:05,230 --> 00:12:07,770 干涉我的生活 我只想独自一个人 56 00:12:07,940 --> 00:12:08,940 所以你才这么做 57 00:12:09,110 --> 00:12:11,190 在这鸟不生蛋的地方帮助这些人 58 00:12:11,360 --> 00:12:14,820 我读过你的故事 你以为没人知道你的善行 59 00:12:14,990 --> 00:12:16,450 你会加入我们 60 00:12:16,610 --> 00:12:18,320 "强者是孤独的" 61 00:12:18,490 --> 00:12:19,740 没听过这句话吗 62 00:12:20,200 --> 00:12:21,580 你听过超人吗 63 00:12:21,740 --> 00:12:23,290 他和我并肩作战时死去 64 00:12:24,660 --> 00:12:26,040 这正是我的意思 65 00:12:26,210 --> 00:12:29,630 他相信团结力量大 这是我们欠他的 66 00:12:30,250 --> 00:12:32,500 我谁也不欠 67 00:12:40,180 --> 00:12:42,060 打扮成一只蝙蝠 68 00:12:42,930 --> 00:12:44,770 你疯了 布鲁斯·韦恩 69 00:14:13,310 --> 00:14:14,520 过去 小灰 70 00:14:31,330 --> 00:14:36,340 克拉克·乔瑟夫·肯特 71 00:14:46,320 --> 00:14:50,730 法拍屋出售 72 00:15:10,450 --> 00:15:13,500 天啊 韦恩少爷 这里好冷 73 00:15:13,670 --> 00:15:18,000 也许我们可以赶上下一波牙买加的大潮 74 00:15:18,170 --> 00:15:20,420 也许斐济一 两个超人类 75 00:15:20,590 --> 00:15:22,220 哥斯达黎加天气也不错 76 00:15:22,380 --> 00:15:23,800 我找到他了 77 00:15:26,680 --> 00:15:28,140 他拒绝了 78 00:15:29,140 --> 00:15:31,230 你连一个新兵都没招到 79 00:15:33,690 --> 00:15:36,440 也许一个成天窝在洞穴的人 80 00:15:36,610 --> 00:15:40,110 不适合当招募者 81 00:15:59,800 --> 00:16:01,550 十块钱 82 00:16:21,860 --> 00:16:25,740 星球日报 每日报导星球事务 83 00:16:29,330 --> 00:16:30,740 曼哈顿银行诚征建筑师 84 00:16:31,500 --> 00:16:34,120 大都会警局 85 00:16:39,750 --> 00:16:40,710 早安 莱恩小姐 86 00:16:40,880 --> 00:16:42,170 你好 杰瑞 87 00:16:45,090 --> 00:16:46,340 你每天都来 对吧 88 00:16:47,800 --> 00:16:49,760 我喜欢这里 89 00:18:35,580 --> 00:18:36,580 站住 90 00:18:38,080 --> 00:18:39,080 快上 91 00:18:49,840 --> 00:18:51,260 快走 快走 92 00:18:57,560 --> 00:18:59,640 -别开枪 -快走 93 00:19:00,310 --> 00:19:01,810 给我过去 94 00:19:15,990 --> 00:19:17,950 让他们靠墙站好 95 00:19:18,120 --> 00:19:19,660 叫他们闭嘴 96 00:19:21,000 --> 00:19:23,290 -安静 -闭嘴 97 00:19:23,460 --> 00:19:24,830 叫他们闭嘴 98 00:19:27,960 --> 00:19:30,460 我们很快就会发表声明 99 00:19:30,630 --> 00:19:32,470 在那之前 谁敢乱来 100 00:19:32,630 --> 00:19:34,590 就会害死一大堆小孩 101 00:19:49,650 --> 00:19:51,190 要射杀他吗 102 00:19:51,360 --> 00:19:52,950 别开枪 103 00:19:54,530 --> 00:19:55,570 里面有小孩 104 00:19:57,530 --> 00:19:59,280 他不是虚张声势 长官 105 00:19:59,450 --> 00:20:01,660 圣布丽姬中学今天有校外教学 106 00:20:25,690 --> 00:20:26,520 安静 107 00:20:26,690 --> 00:20:27,560 闭嘴 108 00:20:32,650 --> 00:20:34,950 让现代世界崩塌 109 00:20:35,110 --> 00:20:36,660 回到黑暗时代 110 00:20:42,080 --> 00:20:43,160 闭嘴 111 00:20:45,120 --> 00:20:47,790 我叫你们闭嘴 112 00:21:01,970 --> 00:21:03,640 你是谁 113 00:21:03,810 --> 00:21:06,640 真言套索会迫使你说实话 114 00:21:07,390 --> 00:21:08,940 你们是什么人 115 00:21:09,560 --> 00:21:12,570 我们是一群反动恐怖份子 116 00:21:12,730 --> 00:21:14,360 要让欧洲倒退到… 117 00:21:14,530 --> 00:21:16,780 -一千年前 -无聊 为何挟持人质 118 00:21:16,950 --> 00:21:18,530 我们没有任何要求 119 00:21:18,700 --> 00:21:20,200 只是在动手之前拖延警察 120 00:21:20,450 --> 00:21:21,780 你们想做什么 121 00:21:22,530 --> 00:21:26,120 你太迟了 已经开始倒数计时 122 00:21:26,290 --> 00:21:29,750 再过几分钟 四个街区… 123 00:21:30,880 --> 00:21:33,090 全世界都会看到 124 00:23:13,690 --> 00:23:14,520 不 125 00:23:14,690 --> 00:23:16,730 就像屠宰场里的羔羊 126 00:24:06,110 --> 00:24:07,200 我不敢相信 127 00:24:07,740 --> 00:24:08,660 相信吧 128 00:24:44,320 --> 00:24:47,070 大家没事吧你没事吧 129 00:24:47,320 --> 00:24:49,320 很好 没事了 130 00:24:49,660 --> 00:24:51,740 没事了 你们可以站起来了 131 00:24:51,910 --> 00:24:53,000 一切都没事 132 00:24:53,370 --> 00:24:54,790 结束了 你还好吧 133 00:24:55,330 --> 00:24:57,460 -没事吧 -很好 134 00:25:03,130 --> 00:25:04,420 你没事吧 公主 135 00:25:07,890 --> 00:25:09,680 我有一天能像你一样吗 136 00:25:11,850 --> 00:25:14,430 你想成为什么样的人都可以 137 00:25:16,350 --> 00:25:18,730 来吧 走吧 138 00:26:01,520 --> 00:26:02,730 今天有任何变化吗 139 00:26:02,900 --> 00:26:04,360 没有 女王 140 00:26:06,070 --> 00:26:07,690 母盒苏醒了 141 00:26:08,150 --> 00:26:10,030 但什么也没发生 142 00:26:11,240 --> 00:26:13,280 它从始纪元… 143 00:26:13,450 --> 00:26:15,410 就沉睡了数千年 144 00:26:15,580 --> 00:26:16,910 现在为何苏醒 145 00:26:24,800 --> 00:26:27,970 这是它出现裂缝后第一次静下来 146 00:26:28,130 --> 00:26:30,800 也许它又继续沉睡 147 00:26:34,890 --> 00:26:36,600 邪恶永不沉睡 148 00:26:37,520 --> 00:26:38,930 只会伺机而待 149 00:26:40,940 --> 00:26:42,900 有什么要来了 150 00:26:48,150 --> 00:26:49,650 准备迎敌 151 00:27:15,140 --> 00:27:17,510 亚马逊女战士 各就各位 152 00:27:17,890 --> 00:27:19,180 预备 153 00:27:44,420 --> 00:27:46,420 守护者 154 00:27:48,090 --> 00:27:52,340 他们无法保护十万个世界 155 00:27:52,840 --> 00:27:54,340 永远都会失败 156 00:27:56,300 --> 00:28:00,970 我是来让你们见识伟大的黑暗 157 00:28:01,140 --> 00:28:04,060 我将沉浸在你们的恐惧中 158 00:28:05,560 --> 00:28:08,020 天堂岛的女儿 159 00:28:09,360 --> 00:28:10,940 让他看到你们的恐惧 160 00:28:11,110 --> 00:28:13,530 我们无畏无惧 161 00:28:32,800 --> 00:28:34,420 召集军团 162 00:28:35,340 --> 00:28:36,510 跟她去 163 00:28:36,680 --> 00:28:37,800 你必须封住山洞 164 00:28:37,970 --> 00:28:38,800 快去 165 00:28:39,260 --> 00:28:40,390 菲莉普斯 166 00:29:07,120 --> 00:29:08,210 不 167 00:29:29,310 --> 00:29:30,480 伊琵欧妮 168 00:29:32,400 --> 00:29:34,490 让我们光荣战死 这是对的 169 00:29:37,450 --> 00:29:38,780 封住大门 170 00:29:44,040 --> 00:29:46,660 拿起大锤 171 00:29:58,880 --> 00:30:00,680 快封住它 172 00:31:35,400 --> 00:31:37,070 用生命守护它 173 00:31:37,230 --> 00:31:39,030 -遵命 我的女王 -让它保持移动 174 00:34:25,070 --> 00:34:26,610 拿到了 快走 175 00:34:49,510 --> 00:34:53,720 高贵的女王 你为何抗拒 176 00:34:56,770 --> 00:34:58,520 你救不了她 177 00:34:58,680 --> 00:35:01,140 你救不了任何人 178 00:35:04,650 --> 00:35:08,070 伟大的黑暗即将降临 179 00:35:08,860 --> 00:35:10,200 亚马逊女战士 180 00:35:20,790 --> 00:35:23,460 是的 我们会找到其他的 181 00:35:25,340 --> 00:35:26,670 拉弓 182 00:35:30,010 --> 00:35:31,510 放箭 183 00:36:29,230 --> 00:36:31,320 他回到了他的宇宙 184 00:36:31,490 --> 00:36:32,320 不 185 00:36:34,910 --> 00:36:37,280 他去了人类的世界 186 00:36:37,450 --> 00:36:39,580 寻找另外两个母盒 187 00:36:40,790 --> 00:36:43,120 我们必须点燃古老的警示烽火 188 00:36:44,000 --> 00:36:47,460 烽火五千年未曾燃烧 189 00:36:47,630 --> 00:36:49,170 人类不会知道它的意义 190 00:36:50,000 --> 00:36:51,380 人类不会知道 191 00:36:53,130 --> 00:36:54,550 她会知道 192 00:37:00,210 --> 00:37:05,490 第二章 193 00:37:02,850 --> 00:37:05,490 英雄时代 194 00:37:25,290 --> 00:37:27,920 这里是有毒的 195 00:37:28,080 --> 00:37:29,790 很好 196 00:37:50,730 --> 00:37:51,940 去吧 197 00:37:52,110 --> 00:37:54,110 跟着母盒的气味 198 00:37:54,280 --> 00:37:55,820 找到另外两个 199 00:37:55,990 --> 00:37:59,870 一旦找到它们 就能形成三位一体 200 00:38:00,030 --> 00:38:02,780 这个世界将加入其他世界 201 00:38:04,700 --> 00:38:06,710 他会很高兴 202 00:38:06,870 --> 00:38:09,790 再次看到我的价值 203 00:38:14,380 --> 00:38:16,970 有酒类专卖店那小鬼的消息吗 204 00:38:17,130 --> 00:38:18,550 可能有 205 00:38:19,340 --> 00:38:20,510 "可能有" 206 00:38:21,720 --> 00:38:24,260 每听一次这句话 207 00:38:24,430 --> 00:38:27,060 就会让我更受不了你 208 00:38:30,020 --> 00:38:32,730 脸部辨识可能找到匹配 209 00:38:32,900 --> 00:38:34,730 搞消失的那小子 210 00:38:35,360 --> 00:38:40,070 中城的巴里·艾伦先生 211 00:38:40,240 --> 00:38:43,160 也许又是误判 你得给我多点时间 212 00:38:43,330 --> 00:38:45,540 -才能确认 -我们没有时间了 213 00:38:47,250 --> 00:38:49,000 韦恩少爷 214 00:38:49,160 --> 00:38:52,670 你一直在拼命地创建这个团队 215 00:38:52,840 --> 00:38:54,670 但却找不到任何队友 216 00:38:54,840 --> 00:38:56,960 我找到一个 是两个 包括戴安娜 217 00:38:57,130 --> 00:39:01,090 就因为莱克斯·卢瑟说 地球会受到攻击 218 00:39:01,260 --> 00:39:03,260 这跟莱克斯·卢瑟无关 219 00:39:03,430 --> 00:39:04,640 这跟他有关 220 00:39:04,930 --> 00:39:08,230 我在他的坟上向他承诺 221 00:39:09,100 --> 00:39:12,230 我花了很多时间试图造成分裂 222 00:39:12,400 --> 00:39:15,190 现在必须团结一心才能拯救地球 223 00:39:15,980 --> 00:39:18,570 卢瑟的警告已经过了一段时间 224 00:39:18,820 --> 00:39:21,950 没有攻击 没有野蛮人冲进大门 225 00:39:23,200 --> 00:39:25,830 也许这些野蛮人不走大门 226 00:39:26,700 --> 00:39:28,370 也许他们已经来了 227 00:39:32,370 --> 00:39:34,130 继续找 还有什么线索 228 00:40:13,120 --> 00:40:14,670 实验室是你的了 霍华德 229 00:40:14,830 --> 00:40:16,420 11点半 230 00:40:16,590 --> 00:40:17,920 今晚很早嘛 塞拉斯 231 00:40:18,090 --> 00:40:20,170 是啊 我提早下班 232 00:40:20,840 --> 00:40:21,970 替我向你家人问好 233 00:40:57,330 --> 00:40:58,920 搞什么… 234 00:41:02,840 --> 00:41:04,010 天啊 235 00:42:17,250 --> 00:42:19,080 阿提密斯之箭 236 00:42:20,170 --> 00:42:22,710 它将射到人类世界 237 00:42:32,350 --> 00:42:33,640 天空火炬 238 00:42:33,810 --> 00:42:35,350 英雄烽火 239 00:42:35,520 --> 00:42:37,230 驱散黑暗 240 00:42:37,390 --> 00:42:40,650 如昔日一般熊熊燃烧 241 00:42:42,230 --> 00:42:45,690 让她看到历史曙光出现之前的黑暗 242 00:42:46,190 --> 00:42:49,780 警告我女儿战争已经来临 243 00:42:51,160 --> 00:42:52,870 并且保护她 244 00:43:17,600 --> 00:43:19,890 回到我身边 戴安娜 245 00:43:58,520 --> 00:44:01,140 你这周末做什么了 戴安娜 246 00:44:01,480 --> 00:44:03,810 没做什么特别的 247 00:44:04,810 --> 00:44:06,900 你每次都这么说 248 00:44:07,520 --> 00:44:10,030 没办法 我的生活很无趣 249 00:44:10,190 --> 00:44:13,660 你一走出去就好像消失一样 250 00:44:18,540 --> 00:44:19,540 又来了 251 00:44:19,700 --> 00:44:21,580 -什么事 -又怎么了 252 00:44:21,960 --> 00:44:25,080 预算缩减 盗墓者 253 00:44:25,250 --> 00:44:27,750 现在又加了一条"纵火者" 254 00:44:29,630 --> 00:44:32,260 记者在克里特岛连线报导 255 00:44:32,420 --> 00:44:36,970 我身后的大篝火熊熊燃烧 256 00:44:37,140 --> 00:44:39,260 大火燃烧了一整晚 257 00:44:39,430 --> 00:44:43,230 现在已经是早上 我们至少在八公里以外 258 00:44:43,390 --> 00:44:46,730 但还是能看到它在燃烧 259 00:44:46,900 --> 00:44:49,940 当地居民和政府当局都感到诧异 260 00:44:50,110 --> 00:44:54,610 这座历史遗迹亚马逊神殿居然起火 261 00:44:54,780 --> 00:44:56,280 -当地居民和政府当局… -敌人入侵 262 00:44:56,450 --> 00:44:58,740 …不知道火势起因 263 00:45:07,880 --> 00:45:08,920 瑞恩 264 00:45:09,090 --> 00:45:10,460 -你好 博士 -那个… 265 00:45:10,630 --> 00:45:12,460 电子激光没有损坏 266 00:45:12,760 --> 00:45:14,800 -塞拉斯·斯通博士 -是的 267 00:45:14,970 --> 00:45:16,050 -蔡瑞恩 -是的 268 00:45:17,510 --> 00:45:19,260 这是谁干的 他们有没有偷走什么 269 00:45:19,430 --> 00:45:21,470 -他们偷走了一切 -那个呢 270 00:45:21,640 --> 00:45:24,060 那没被偷走 对吧 斯通博士 271 00:45:25,020 --> 00:45:27,350 对 那之前就被移走了 272 00:45:27,940 --> 00:45:31,780 6-1-9-8-2号物件 国防部档案馆 273 00:45:32,820 --> 00:45:33,740 那是什么 274 00:45:34,150 --> 00:45:35,070 我也不知道 275 00:45:35,240 --> 00:45:36,160 你不知道 276 00:45:36,320 --> 00:45:38,570 没错 所以我才在研究它 277 00:45:38,740 --> 00:45:40,240 你是什么官阶 278 00:45:40,660 --> 00:45:42,660 瑞恩 麻烦你了 279 00:45:42,830 --> 00:45:44,160 -没问题 -谢了 280 00:45:44,330 --> 00:45:45,160 平民 281 00:45:45,500 --> 00:45:48,210 星辰实验室是私人承包商 我们为国防部工作 282 00:45:48,380 --> 00:45:50,960 为他们提供异常科学的建议 283 00:45:51,500 --> 00:45:52,340 "异常科学" 284 00:45:53,010 --> 00:45:54,840 外星科技 285 00:46:01,930 --> 00:46:04,020 比如说 286 00:46:04,180 --> 00:46:05,730 超人飞船 287 00:46:14,230 --> 00:46:16,950 昨晚有八个人没离开实验室 288 00:46:17,320 --> 00:46:20,370 清洁工 警卫和几名研究科学家 289 00:46:20,820 --> 00:46:21,740 他们被绑架了 290 00:46:23,120 --> 00:46:24,120 你确定 291 00:46:24,290 --> 00:46:26,830 有位目击证人 他逃过一劫 292 00:46:27,000 --> 00:46:30,130 他正在隔离区协助绘制嫌犯肖像画 293 00:46:33,130 --> 00:46:37,470 知道那会是谁或是什么东西吗 294 00:46:57,610 --> 00:46:59,660 母盒在这里不安全 295 00:47:02,160 --> 00:47:03,620 维克多 296 00:47:03,830 --> 00:47:06,080 他们闯进实验室找它 297 00:47:06,250 --> 00:47:10,670 有些人被某种怪物抓走 298 00:47:13,420 --> 00:47:15,380 你对怪物很了解… 299 00:47:16,000 --> 00:47:17,420 对吧 300 00:47:23,800 --> 00:47:25,930 尤其是怎么制造它们 301 00:50:26,530 --> 00:50:30,160 求救…求救… 302 00:50:30,950 --> 00:50:34,040 船身受损 我快沉下去了 303 00:50:40,380 --> 00:50:42,340 求救 304 00:50:42,540 --> 00:50:44,590 有人吗 305 00:51:24,920 --> 00:51:26,260 威士忌 306 00:51:35,350 --> 00:51:37,930 下次叫他要敬畏暴风雨 307 00:51:47,280 --> 00:51:48,110 他请客 308 00:54:16,340 --> 00:54:18,430 本应是国王的男人 309 00:54:18,590 --> 00:54:21,760 人类父亲和海洋女王的儿子 310 00:54:22,640 --> 00:54:24,390 我浪费了多少时间 311 00:54:24,560 --> 00:54:27,600 试图遵守我向你母亲做的承诺 312 00:54:29,730 --> 00:54:30,940 说完了吗 老头 313 00:54:31,110 --> 00:54:33,570 虽然你居无定所 314 00:54:33,730 --> 00:54:36,490 但还是一直回来这里 315 00:54:38,450 --> 00:54:40,410 我喜欢这里 很安静 316 00:54:40,570 --> 00:54:42,370 这是你继承的王国 317 00:54:42,530 --> 00:54:44,660 你应当是亚特兰蒂斯国王 318 00:54:45,790 --> 00:54:46,910 我们的同胞受苦受难 319 00:54:47,080 --> 00:54:49,040 你的同胞 320 00:54:49,210 --> 00:54:52,750 一个卑鄙残忍 迷信无知的种族 321 00:54:52,920 --> 00:54:54,130 地表有什么不同吗 322 00:54:55,210 --> 00:54:57,260 没人说我是地表之王 323 00:54:58,340 --> 00:55:00,050 你想要什么 维科 324 00:55:00,640 --> 00:55:03,510 要塞附近的守卫不断消失不见 325 00:55:03,680 --> 00:55:05,100 来自天上的掠夺者 326 00:55:05,270 --> 00:55:06,480 去跟欧姆国王说啊 327 00:55:06,640 --> 00:55:08,060 -你弟弟 -表弟 328 00:55:08,230 --> 00:55:11,230 他想煽动和陆地人类的战争 329 00:55:11,610 --> 00:55:13,020 他说谎 330 00:55:14,480 --> 00:55:18,490 掠夺者来自黑暗之境 他们在寻找它 331 00:55:19,320 --> 00:55:22,660 我们守护的母盒并不安全 332 00:55:23,660 --> 00:55:27,660 前往亚特兰蒂斯要塞 保护母盒 333 00:55:28,660 --> 00:55:29,870 时候到了 334 00:55:32,000 --> 00:55:34,000 把你母亲的三叉戟拿去 335 00:55:45,180 --> 00:55:48,850 你不能永远弃世界而不顾 亚瑟 336 00:55:49,770 --> 00:55:52,860 不管是地表或海底 337 00:56:21,970 --> 00:56:23,550 狄萨德 338 00:56:23,720 --> 00:56:27,680 狄萨德 我呼叫你 339 00:56:36,730 --> 00:56:40,900 荒原狼 你开始征服这世界了吗 340 00:56:42,030 --> 00:56:44,410 这个世界是分裂的 341 00:56:45,200 --> 00:56:46,700 他们是原始物种 342 00:56:46,870 --> 00:56:49,200 未进化并与彼此战争 343 00:56:49,370 --> 00:56:52,210 歧见太深无法团结一心 344 00:56:52,370 --> 00:56:56,630 必须像其他的世界一样 剥夺他们的自由意志 345 00:56:56,790 --> 00:57:00,920 并以服膺他的光荣信念… 346 00:57:01,090 --> 00:57:02,800 获得赦免 347 00:57:03,590 --> 00:57:05,510 母盒呢 348 00:57:06,090 --> 00:57:09,010 我找到其中一个 349 00:57:09,180 --> 00:57:11,640 苏醒后呼唤我的那一个 350 00:57:11,810 --> 00:57:13,310 另外两个仍然沉睡 351 00:57:13,480 --> 00:57:17,310 但天启魔感应到它们 352 00:57:17,480 --> 00:57:18,940 它们飞来飞去 353 00:57:19,110 --> 00:57:22,690 到处搜索 并抓走带有母盒气味的囚犯 354 00:57:22,860 --> 00:57:27,780 我则以他之名创建一座要塞 355 00:57:28,330 --> 00:57:30,200 很好 356 00:57:31,290 --> 00:57:33,960 强大的荒原狼 357 00:57:35,460 --> 00:57:39,840 你本来可以与伟大的他平起平坐 358 00:57:41,760 --> 00:57:46,340 但却因自大而被放逐 359 00:57:47,510 --> 00:57:48,890 狄萨德 360 00:57:49,970 --> 00:57:52,350 我跪倒在你面前 361 00:57:53,100 --> 00:57:54,890 让我向他求情 362 00:57:55,060 --> 00:57:56,980 当我以他之名夺下这世界 363 00:57:57,150 --> 00:57:59,940 能否请他让我回家 364 00:58:00,110 --> 00:58:02,530 你背叛了他 365 00:58:03,940 --> 00:58:05,450 你自己的家人 366 00:58:05,610 --> 00:58:07,820 我看到我犯的错误 367 00:58:07,990 --> 00:58:10,580 我屠杀企图争夺他王位的人 368 00:58:10,740 --> 00:58:15,870 你还欠他五万个世界 369 00:58:16,960 --> 00:58:18,790 当你还清了债 370 00:58:19,250 --> 00:58:21,500 他就会聆听你的恳求 371 00:58:24,420 --> 00:58:27,470 母盒将被寻获并合而为一 372 00:58:28,430 --> 00:58:30,550 这里没有保护者 373 00:58:30,720 --> 00:58:34,140 没有绿光战警 没有氪星人 374 00:58:34,310 --> 00:58:37,940 这世界将会像其他的一样沦陷 375 00:58:38,980 --> 00:58:40,730 为了达克赛德 376 00:58:43,940 --> 00:58:46,150 为了达克赛德 377 00:59:07,420 --> 00:59:11,010 我花了几百万元安装保全系统 378 00:59:11,180 --> 00:59:12,470 钱花得很值得 379 00:59:12,970 --> 00:59:15,350 我几乎花了一分钟才解除 380 00:59:16,890 --> 00:59:18,230 你好 381 00:59:20,060 --> 00:59:20,900 新玩具 382 00:59:21,810 --> 00:59:23,980 原型军队运输机 383 00:59:26,280 --> 00:59:29,320 我曾相识的一个人会很想开开看 384 00:59:29,950 --> 00:59:32,910 韦恩航天最顶尖的人才 都无法让它飞起来 385 00:59:33,990 --> 00:59:35,580 但是你能 386 00:59:35,740 --> 00:59:37,410 我别无选择 387 00:59:37,580 --> 00:59:40,330 我需要更远的航程和更大的货舱 388 00:59:40,500 --> 00:59:42,080 我认为一场攻击即将来袭 389 00:59:42,500 --> 00:59:44,250 你错了 布鲁斯 390 00:59:45,050 --> 00:59:47,010 它已经来袭了 391 00:59:47,800 --> 00:59:52,340 据我所知 他们来自另一个宇宙 392 00:59:52,510 --> 00:59:54,850 为一个黑暗力量效忠 393 00:59:55,010 --> 00:59:56,720 一个古老的力量 394 00:59:56,890 --> 00:59:58,310 他们想要什么 395 00:59:59,140 --> 01:00:01,480 入侵地球 征服世界 396 01:00:02,600 --> 01:00:06,860 他们很久以前曾经来过 397 01:00:11,990 --> 01:00:14,410 一支庞大的舰队出现在天空 398 01:00:14,580 --> 01:00:17,200 消灭所有胆敢反抗的势力 399 01:00:17,370 --> 01:00:21,460 入侵者的首领是达克赛德 400 01:00:21,620 --> 01:00:25,880 这名字在每个宇宙都受到诅咒和畏惧 401 01:00:26,750 --> 01:00:30,590 地球的守护者 和达克赛德展开一场大战 402 01:00:30,760 --> 01:00:33,260 旧神族 人类 403 01:00:33,840 --> 01:00:36,970 被迫迁至海底之前的亚特兰蒂斯族 404 01:00:39,310 --> 01:00:43,270 遭背叛及被困禁之前的亚马逊族 405 01:00:43,440 --> 01:00:45,810 以及来自星空的守护者 406 01:00:45,980 --> 01:00:49,570 他们的历史教导他们 不能相信彼此 407 01:00:49,740 --> 01:00:51,900 不能奢望创建联盟 408 01:00:52,070 --> 01:00:54,070 而是各自奋战 409 01:01:43,120 --> 01:01:45,830 当达克赛德在地球发动战争 410 01:01:46,000 --> 01:01:47,420 他发现一个秘密 411 01:01:47,580 --> 01:01:51,340 隐藏在无垠太空的一股力量 412 01:01:51,510 --> 01:01:53,010 他召唤暗黑秘士 413 01:01:53,170 --> 01:01:56,300 他们崇拜并控制三个物体 414 01:01:56,470 --> 01:01:57,510 母盒 415 01:01:57,850 --> 01:01:59,260 等等 416 01:01:59,430 --> 01:02:00,430 "母盒" 417 01:02:00,600 --> 01:02:03,140 坚不可摧 活生生的机器 418 01:02:03,850 --> 01:02:08,770 使用先进无比的科技打造 看起来简直就像巫术 419 01:02:08,940 --> 01:02:11,570 若要征服世界 三个母盒必须同步化 420 01:02:11,730 --> 01:02:14,990 合而为一后形成三位一体 421 01:02:15,150 --> 01:02:18,200 三位一体以烈火净化星球 422 01:02:18,370 --> 01:02:21,950 将它转换成另一个敌人世界 423 01:02:22,120 --> 01:02:25,620 幸存者都成为达克赛德的仆役 424 01:02:25,790 --> 01:02:28,710 活着 但毫无生机 425 01:02:28,920 --> 01:02:30,250 天启魔 426 01:02:31,460 --> 01:02:33,550 亚马逊女战士 427 01:02:39,430 --> 01:02:41,140 冲啊 428 01:03:10,460 --> 01:03:12,960 但在三位一体同步化之前 429 01:03:13,130 --> 01:03:16,510 地球的守护者组成统一阵线展开反击 430 01:03:17,090 --> 01:03:20,090 亚马逊人和亚特兰蒂斯人并肩作战 431 01:03:20,260 --> 01:03:24,770 宙斯及他儿子阿瑞斯 和来自星空的守护者联手出击 432 01:03:25,770 --> 01:03:30,440 一群黄金时代英雄为了捍卫地球 同心协力捍卫了地球的生命 433 01:05:27,100 --> 01:05:29,890 他们做到其他世界做不到的事 434 01:05:30,060 --> 01:05:32,230 将敌人送回星空 435 01:05:34,770 --> 01:05:38,020 三个母盒从未合而为一 436 01:05:38,610 --> 01:05:41,780 也从未形成三位一体 437 01:05:41,940 --> 01:05:44,150 但在敌人撤退之时 438 01:05:44,780 --> 01:05:47,910 母盒被留在地球 439 01:05:48,080 --> 01:05:51,790 它们的力量变弱 就像失去主人的恶犬 440 01:05:53,620 --> 01:05:55,210 开始沉睡 441 01:05:55,370 --> 01:05:57,840 等待他们的回归 442 01:05:58,000 --> 01:06:00,340 母盒从敌人的视野中消失 443 01:06:00,500 --> 01:06:03,670 隐匿在一兆个世界之中 444 01:06:20,570 --> 01:06:23,740 地球的守护者立下誓言 445 01:06:24,110 --> 01:06:27,360 人类 亚特兰蒂斯族及亚马逊族 446 01:06:27,530 --> 01:06:31,410 根据他们文化的惯例及仪式 447 01:06:31,580 --> 01:06:35,080 各自封存并守卫 其中一个沉睡的母盒 448 01:06:35,250 --> 01:06:39,710 以防母盒日后再次苏醒 向天启星发出信号 449 01:06:39,880 --> 01:06:41,630 呼唤敌人回来并企图征服 450 01:06:41,800 --> 01:06:45,590 达克赛德唯一落败而逃的世界 451 01:08:01,540 --> 01:08:04,210 有什么唤醒了我的族人守卫的母盒 452 01:08:04,920 --> 01:08:06,960 它向暗黑之处呼唤 453 01:08:07,130 --> 01:08:09,550 引来达克赛德手下的一名征服者 454 01:08:10,470 --> 01:08:12,340 敌人已经来袭 455 01:08:12,850 --> 01:08:14,510 如果是真的 他在哪里 456 01:08:14,680 --> 01:08:16,770 他会到处寻找另外两个母盒 457 01:08:16,930 --> 01:08:19,890 得到三个母盒并准备好之前 他仍在藏匿 458 01:08:20,060 --> 01:08:23,900 我们必须准备迎敌 你 我和其他人 459 01:08:24,650 --> 01:08:27,480 他们说英雄时代不会再来临 460 01:08:27,650 --> 01:08:28,900 会来的 461 01:08:29,240 --> 01:08:30,950 必须的 462 01:08:32,700 --> 01:08:36,200 其他人 他们在哪里 463 01:08:41,290 --> 01:08:46,550 第三章 464 01:08:42,930 --> 01:08:46,550 挚爱的母亲,挚爱的儿子 465 01:08:48,260 --> 01:08:50,130 冷藏配送 466 01:08:50,130 --> 01:08:53,840 中城 467 01:08:53,840 --> 01:08:57,470 前方减速 468 01:08:58,220 --> 01:09:00,890 我迟到了吗 我大迟到了 469 01:09:00,260 --> 01:09:02,060 中城狗狗托儿所 470 01:09:02,230 --> 01:09:03,350 你好啊 小家伙 471 01:09:04,190 --> 01:09:05,020 不行 472 01:09:06,110 --> 01:09:07,690 好吧 晚点见 473 01:09:08,570 --> 01:09:10,490 真是拍谢 474 01:09:10,900 --> 01:09:12,150 我迟到了 475 01:09:17,660 --> 01:09:18,700 -你是… -我… 476 01:09:18,870 --> 01:09:21,120 抱歉我大迟到了 不是故意的 477 01:09:21,290 --> 01:09:22,790 我是我 我来了 很抱歉迟到了 478 01:09:22,960 --> 01:09:25,130 因为公车没来 后来来了 479 01:09:25,290 --> 01:09:27,590 不过有个阿婆一直在找硬币 480 01:09:27,750 --> 01:09:28,880 五分 一分 五分 一分 481 01:09:29,050 --> 01:09:30,800 真是够了 让阿婆上车吧 482 01:09:30,960 --> 01:09:31,970 她都107岁了 483 01:09:32,130 --> 01:09:33,800 不会再活多久了 484 01:09:33,970 --> 01:09:35,010 履历 485 01:09:35,640 --> 01:09:36,470 履历 486 01:09:39,720 --> 01:09:40,810 拜托 487 01:09:44,140 --> 01:09:45,230 拜托 488 01:09:45,400 --> 01:09:46,940 那是法文来着 489 01:09:47,110 --> 01:09:50,150 "履历"是过去分词… 490 01:09:55,990 --> 01:09:57,070 这可不妙 491 01:09:57,530 --> 01:10:00,740 我的口袋有什么 "有只吃纸的怪物" 492 01:10:09,630 --> 01:10:12,710 拜托 我们应该是朋友啊 493 01:10:19,300 --> 01:10:20,310 好了 494 01:10:29,310 --> 01:10:31,730 中城大学 我念刑事司法系 495 01:10:31,900 --> 01:10:34,150 你说你有遛狗的经验 496 01:13:14,610 --> 01:13:16,650 天啊 希望大家都没事 497 01:13:16,820 --> 01:13:21,530 瞧 照顾狗狗遇到事情 我一定会随身携带肉类零食 498 01:13:21,700 --> 01:13:22,950 能让狗狗安静下来 499 01:13:23,110 --> 01:13:24,990 你永远不知道会发生什么事 500 01:13:25,160 --> 01:13:26,870 我是说 天啊 501 01:13:27,030 --> 01:13:29,580 是不是星期一开工吗 502 01:14:07,910 --> 01:14:10,580 你一定靠近过母盒 503 01:14:11,790 --> 01:14:13,790 身上有它的气味 504 01:14:14,370 --> 01:14:15,620 它在哪里 505 01:14:16,040 --> 01:14:18,920 亚特兰蒂斯族的儿女绝不会告诉你 506 01:14:34,520 --> 01:14:37,350 我们的族人看守了母盒数千年 507 01:14:43,530 --> 01:14:46,160 我不会背叛自己的族人 508 01:14:57,710 --> 01:15:00,210 你已经背叛了 509 01:16:00,560 --> 01:16:02,770 这是在地球最深的海沟拍到的 510 01:16:03,360 --> 01:16:05,440 他一定是亚特兰蒂斯人 511 01:16:05,610 --> 01:16:06,740 能够呼吸海水 512 01:16:06,900 --> 01:16:08,570 我跟他说话时他呼吸空气 513 01:16:08,740 --> 01:16:10,530 那他就是混血儿 514 01:16:10,700 --> 01:16:12,570 他说他会和我们一起作战 515 01:16:12,740 --> 01:16:14,080 或多或少吧 516 01:16:15,450 --> 01:16:17,540 或多还是或少 517 01:16:17,960 --> 01:16:18,960 大概是或少吧 518 01:16:19,120 --> 01:16:20,920 -他说不 -没错 519 01:16:21,670 --> 01:16:23,090 亚特兰蒂斯人很难搞 520 01:16:24,000 --> 01:16:26,760 我的族人曾和他们打仗 521 01:16:27,880 --> 01:16:29,970 我不确定我们能相信他 522 01:16:30,130 --> 01:16:31,180 戴安娜 如果我们要合作 523 01:16:31,340 --> 01:16:33,680 你就得打开心房 接受我们不能… 524 01:16:33,850 --> 01:16:34,720 你知道的 525 01:16:34,890 --> 01:16:36,560 -抱歉 没关系 -对不起 我的错 526 01:16:36,720 --> 01:16:37,770 没关系 527 01:16:37,930 --> 01:16:39,180 -让我们… -难免的 528 01:16:39,350 --> 01:16:40,230 所以… 529 01:16:40,390 --> 01:16:42,440 这是第三个人 530 01:16:42,600 --> 01:16:45,020 消失了1/30秒 531 01:16:45,190 --> 01:16:46,690 一格的影片 看到吗 532 01:16:46,860 --> 01:16:49,490 中城的巴里·艾伦 533 01:16:49,650 --> 01:16:50,490 你去找他 534 01:16:50,650 --> 01:16:52,360 我去找第四个人 535 01:16:52,530 --> 01:16:55,660 有机与生化机械电子身体器官 536 01:16:58,200 --> 01:17:00,210 他是个钢骨生化人 537 01:17:18,350 --> 01:17:19,180 斯通 538 01:17:19,350 --> 01:17:21,310 -预备 -就位 539 01:17:22,350 --> 01:17:24,770 大声尖叫 540 01:17:36,830 --> 01:17:37,830 3 541 01:17:38,200 --> 01:17:39,750 80 542 01:17:40,830 --> 01:17:42,920 预备…上吧 543 01:17:56,180 --> 01:17:58,430 你儿子也许是美式足球校队队长 544 01:17:58,600 --> 01:18:01,600 也是个天才 斯通太太 545 01:18:01,770 --> 01:18:03,850 斯通博士 546 01:18:06,400 --> 01:18:08,400 但不代表他能骇入校方系统 547 01:18:08,570 --> 01:18:10,400 窜改他同学的成绩 548 01:18:11,360 --> 01:18:14,700 莎拉一家人今年失去了房子 549 01:18:15,280 --> 01:18:17,700 那孩子怎么可能及格 550 01:18:19,280 --> 01:18:22,330 维克多是出于好心才会帮助她 551 01:18:22,500 --> 01:18:24,540 你又做了什么来帮助她 552 01:18:39,470 --> 01:18:42,400 哥谭市 威斯康星州 553 01:19:48,670 --> 01:19:51,590 -你爸… -妈 别说了 554 01:19:53,170 --> 01:19:55,920 他得在实验室加班 555 01:19:56,090 --> 01:19:59,130 他天天都加班 556 01:20:01,720 --> 01:20:02,720 他很想来的 557 01:20:03,260 --> 01:20:04,890 你老是这么说 558 01:20:05,350 --> 01:20:06,930 妈 别再替他找借口了 559 01:20:07,100 --> 01:20:10,060 你跟他一样忙 但还是会挪出时间 560 01:20:10,600 --> 01:20:13,190 他只是不会表达 但是… 561 01:20:13,860 --> 01:20:15,690 我知道他以你为傲 562 01:20:16,240 --> 01:20:18,200 我们都是 维克多 563 01:20:22,200 --> 01:20:25,290 以你现在的成就 564 01:20:25,450 --> 01:20:28,210 我等不及想看到未来的你 565 01:20:33,540 --> 01:20:35,250 斯通博士 很遗憾 566 01:20:36,340 --> 01:20:38,130 你太太没能活下来 567 01:20:39,800 --> 01:20:41,890 你儿子恐怕也不会 568 01:20:56,070 --> 01:20:57,730 我不会让你死 569 01:21:00,700 --> 01:21:02,240 我绝不容许 570 01:21:08,540 --> 01:21:10,290 我绝不容许 571 01:21:13,750 --> 01:21:14,750 维克多 572 01:21:16,130 --> 01:21:18,880 维克多 你不必窝在这里 573 01:21:19,720 --> 01:21:22,470 你还有大好的人生 574 01:21:23,140 --> 01:21:26,510 你妈会希望你拥有那样的人生 575 01:21:29,060 --> 01:21:30,600 如果你当时在的话… 576 01:21:31,980 --> 01:21:33,850 妈就还会活着 577 01:21:36,690 --> 01:21:38,610 好吧 听着 578 01:21:39,990 --> 01:21:44,030 你不必给我第二次机会 但是要给自己再一次机会 579 01:21:46,070 --> 01:21:49,120 如果你不想看着我 580 01:21:50,830 --> 01:21:52,460 那就试着听我说 581 01:22:21,190 --> 01:22:23,200 你现在的能力 维克多 582 01:22:24,030 --> 01:22:27,570 超强力量只是冰山一角 583 01:22:27,740 --> 01:22:30,290 你拥有无穷潜力 584 01:23:00,360 --> 01:23:05,240 在一和零的数位世界 你是绝对的霸主 585 01:23:05,400 --> 01:23:07,990 没有防火墙能阻止你 586 01:23:08,160 --> 01:23:10,450 没有你破解不了的密码 587 01:23:10,620 --> 01:23:13,370 一切都任你摆布 588 01:23:13,540 --> 01:23:15,910 从电厂电网到电信设备 589 01:23:16,080 --> 01:23:18,130 每个人的生活都受到 590 01:23:18,290 --> 01:23:21,250 复杂的数位网络操控支配 591 01:23:21,420 --> 01:23:25,510 你却能轻而易举掌控它 592 01:23:35,850 --> 01:23:40,360 全世界的命运掌握在你手中 593 01:23:48,160 --> 01:23:53,200 你只要动个念头 就能发射所有的核弹 594 01:24:04,000 --> 01:24:07,170 全球复杂的金融体系 595 01:24:07,340 --> 01:24:11,800 对你来说就像玩具一样能轻易玩弄 596 01:24:45,840 --> 01:24:49,590 问题是…不 挑战是… 597 01:24:50,470 --> 01:24:52,930 不去这么做 598 01:24:53,800 --> 01:24:55,680 不去滥用这能力 599 01:24:55,850 --> 01:24:57,850 不去监视每个人 600 01:24:59,890 --> 01:25:02,190 这个重责大任的沉重负担 601 01:25:02,350 --> 01:25:05,650 将塑造你成为什么样的人 602 01:25:37,260 --> 01:25:38,350 许个愿 603 01:25:39,600 --> 01:25:40,640 再吹一次 604 01:25:41,600 --> 01:25:43,980 很好 像外婆挥手问好 605 01:25:44,150 --> 01:25:45,310 你好 外婆 606 01:26:38,670 --> 01:26:41,040 余额不足 607 01:26:41,200 --> 01:26:44,960 恭喜 您赢得十万美元奖金 608 01:26:45,540 --> 01:26:46,710 什么 609 01:26:48,710 --> 01:26:50,340 天啊 天啊 610 01:26:51,590 --> 01:26:52,970 我的天啊 611 01:26:53,130 --> 01:26:54,880 天啊 天啊 612 01:27:00,220 --> 01:27:01,600 维克多 613 01:27:03,230 --> 01:27:06,600 这是我身为一名科学家 做出来的推断 614 01:27:07,770 --> 01:27:09,940 也是我一直以来跟你说话的方式 615 01:27:10,650 --> 01:27:11,650 现在… 616 01:27:14,030 --> 01:27:17,700 让我说出内心话 不是身为一个科学家 617 01:27:18,240 --> 01:27:19,450 而是身为一个父亲 618 01:27:34,050 --> 01:27:34,920 喂 619 01:27:36,180 --> 01:27:37,720 喂 你 620 01:27:53,690 --> 01:27:56,530 因为你没有发挥潜力 621 01:27:57,200 --> 01:28:00,240 一直在原地打转 622 01:28:00,410 --> 01:28:02,580 你打三份没出路的工 623 01:28:02,740 --> 01:28:05,370 还要打第四份工 你哪来的时间 624 01:28:05,540 --> 01:28:06,660 我会挪出时间 625 01:28:06,830 --> 01:28:07,960 -只要再打一份工 -巴里 626 01:28:08,120 --> 01:28:09,750 -就能自己付学费 -你不能 627 01:28:09,920 --> 01:28:12,630 -我说到做到 -别再折磨自己了 628 01:28:12,790 --> 01:28:14,460 我不想再谈这件事 629 01:28:14,630 --> 01:28:15,710 拜托 我们有十分钟 630 01:28:15,880 --> 01:28:16,800 这全是为了付… 631 01:28:16,970 --> 01:28:18,760 -刑事司法系的学费 -对啊 632 01:28:18,930 --> 01:28:19,930 为了什么 633 01:28:20,090 --> 01:28:23,310 那还用问 我正在跟我爸讲话 634 01:28:23,470 --> 01:28:26,270 他因为杀死我妈坐牢 其实是被冤枉的 635 01:28:26,430 --> 01:28:28,390 我怎么会对刑事司法感兴趣 636 01:28:28,560 --> 01:28:30,100 我不记得了 637 01:28:30,270 --> 01:28:31,190 真是的 638 01:28:31,360 --> 01:28:33,900 我注定要选择走这条路 爸 639 01:28:34,900 --> 01:28:35,980 把手给我 儿子 640 01:28:42,280 --> 01:28:44,830 我要你听好 巴里 641 01:28:44,990 --> 01:28:48,500 我要你听好 我是认真的 642 01:28:54,460 --> 01:28:56,340 我要你放弃那一切 643 01:28:59,340 --> 01:29:02,390 我也要你别再来看我 644 01:29:04,760 --> 01:29:07,770 我拖累了你的人生 645 01:29:13,190 --> 01:29:14,310 好吧 646 01:29:15,230 --> 01:29:18,360 别再跟我这么说 647 01:29:18,780 --> 01:29:20,030 求求你 648 01:29:20,200 --> 01:29:23,320 你知道对我来说怎样才是最好吗 649 01:29:23,490 --> 01:29:28,290 我儿子不白白浪费生命 650 01:29:29,710 --> 01:29:32,880 你想做什么都行 你聪明绝顶 651 01:29:35,420 --> 01:29:38,210 你是精英中的精英 652 01:29:40,050 --> 01:29:44,760 我不能坐在这儿 看着你在中城盲目地奔走 653 01:29:44,930 --> 01:29:46,680 就为了一个… 654 01:29:46,850 --> 01:29:50,020 哪儿都不能去的老头子 655 01:29:50,180 --> 01:29:51,520 -爸 并不是这样 -时间到了 656 01:29:51,690 --> 01:29:52,690 并不是这样 657 01:29:52,850 --> 01:29:54,350 走吧 艾伦 艾伦 658 01:29:54,520 --> 01:29:56,190 我要你创造自己的未来 659 01:29:56,360 --> 01:29:58,030 别活在过去 创造自己的未来 660 01:29:58,190 --> 01:29:59,820 开门 661 01:29:59,990 --> 01:30:00,820 棒呆了 662 01:30:04,990 --> 01:30:07,120 "别活在过去 创造自己的未来" 663 01:30:07,280 --> 01:30:08,830 可以了 开门 664 01:31:01,510 --> 01:31:04,170 巴里·艾伦 我是布鲁斯·韦恩 665 01:31:05,010 --> 01:31:08,970 你这么说似乎可以解释 为什么有个陌生人闯进我家 666 01:31:09,140 --> 01:31:11,930 摸黑坐在我第二喜欢的椅子 667 01:31:14,020 --> 01:31:15,810 请你解释一下 668 01:31:19,940 --> 01:31:22,650 这家伙长得跟我一模一样 669 01:31:22,820 --> 01:31:25,530 但绝对不是我 670 01:31:26,660 --> 01:31:28,530 这个人…我不认识 671 01:31:28,700 --> 01:31:30,530 披头散发的嬉皮 672 01:31:30,700 --> 01:31:33,450 很帅的一个犹太青年 673 01:31:35,000 --> 01:31:36,960 谁喝牛奶啊 我才不喝牛奶 674 01:31:37,750 --> 01:31:39,290 我知道你有超能力 675 01:31:39,460 --> 01:31:41,300 只是不知道是什么 676 01:31:41,710 --> 01:31:42,710 我的专长包括 677 01:31:42,880 --> 01:31:45,630 拉中提琴 网页设计 678 01:31:45,800 --> 01:31:48,590 我也擅长手语 大猩猩手语 679 01:31:48,760 --> 01:31:52,100 硅胶石英砂材料 680 01:31:52,510 --> 01:31:54,600 耐磨耐热 681 01:31:54,770 --> 01:31:56,640 是啊 我是冰舞竞技选手 682 01:31:56,810 --> 01:32:00,400 这是用来避免 航天飞机重返大气层燃烧的材料 683 01:32:00,560 --> 01:32:03,070 冰舞的竞争真的很激烈 684 01:32:04,440 --> 01:32:08,530 我不知道你是谁 不管你找的是谁 685 01:32:08,700 --> 01:32:09,700 都不是我 686 01:32:51,530 --> 01:32:53,120 你是蝙蝠侠 687 01:32:53,530 --> 01:32:55,290 所以你很快 688 01:32:56,580 --> 01:32:58,120 这么说感觉太平凡了 689 01:32:58,290 --> 01:33:00,040 我在组织一个团队 690 01:33:00,210 --> 01:33:02,290 寻找拥有特殊能力的人 691 01:33:02,460 --> 01:33:03,960 我相信敌人即将来袭 692 01:33:04,130 --> 01:33:06,210 你不用多说 我参一脚 693 01:33:07,260 --> 01:33:08,340 真的吗 694 01:33:08,720 --> 01:33:09,760 就这么简单 695 01:33:09,930 --> 01:33:11,050 是啊 696 01:33:13,010 --> 01:33:15,100 我需要朋友 697 01:33:15,600 --> 01:33:18,560 太好了 698 01:33:19,100 --> 01:33:20,850 我能留着吗 699 01:33:21,480 --> 01:33:25,070 那就像是一层三次元现实 似乎能够操控时空 700 01:33:25,230 --> 01:33:26,440 我称之为神速力 701 01:33:26,610 --> 01:33:28,440 害我燃烧大量的卡路里 702 01:33:28,610 --> 01:33:31,240 所以我是零食的黑洞 703 01:33:31,410 --> 01:33:33,240 我是"零"洞 704 01:33:34,120 --> 01:33:36,950 这个特殊战斗团队有几个人 705 01:33:37,120 --> 01:33:39,040 -三个 包括你 -三个 706 01:33:39,200 --> 01:33:41,080 对抗什么 707 01:33:41,960 --> 01:33:43,420 上飞机再告诉你 708 01:33:44,040 --> 01:33:45,250 飞机 709 01:33:45,920 --> 01:33:47,670 你的超能力是什么来着 710 01:33:47,840 --> 01:33:49,550 我超有钱 711 01:34:12,650 --> 01:34:14,450 普林斯小姐 让我来 712 01:34:14,620 --> 01:34:16,620 没关系 我自己来 713 01:34:17,910 --> 01:34:19,290 你想要喝吗 714 01:34:19,450 --> 01:34:20,750 不 谢了 715 01:34:22,120 --> 01:34:24,120 你得先倒水进去 716 01:34:24,830 --> 01:34:27,840 -当然了 -才不会把茶叶烫熟 717 01:34:30,760 --> 01:34:32,300 -很好 -太好了 718 01:34:32,470 --> 01:34:34,430 茶叶应该够多了 719 01:34:34,590 --> 01:34:35,970 好吧 720 01:34:37,100 --> 01:34:38,600 你确定不来一杯 721 01:34:38,760 --> 01:34:42,020 不 谢了 你得再让茶叶浸泡一下 722 01:34:42,770 --> 01:34:45,560 我会的 一定会 723 01:34:46,980 --> 01:34:48,070 你在打造什么 724 01:34:48,230 --> 01:34:49,570 这是一只手套 725 01:34:50,150 --> 01:34:53,780 布满高分子太阳能奈米电池 726 01:34:54,450 --> 01:34:56,160 来 让我秀给你看 727 01:34:56,660 --> 01:34:59,660 这是从氪星侦察舰上借来的 728 01:35:01,250 --> 01:35:02,700 也许你应该… 729 01:35:02,870 --> 01:35:05,330 -挪过去一点 谢谢 -没问题 730 01:35:12,880 --> 01:35:15,340 现在看看效果如何 731 01:35:15,880 --> 01:35:17,260 好了 732 01:35:17,930 --> 01:35:19,560 还不错喔 733 01:35:19,720 --> 01:35:22,140 捕捉并消散能量的手套 734 01:35:22,310 --> 01:35:23,810 这是韦恩少爷的点子 735 01:35:24,100 --> 01:35:26,350 也许你也应该打造一条套索 736 01:35:26,520 --> 01:35:28,270 当然是黑色的罗 737 01:35:36,110 --> 01:35:39,070 好吧 维克多斯通 738 01:35:39,150 --> 01:35:43,540 搜寻维克多·斯通 739 01:35:55,340 --> 01:35:57,340 有点不对劲 740 01:36:01,590 --> 01:36:03,270 在这里见面 现在 741 01:36:09,150 --> 01:36:11,570 看来你有个约会 普林斯小姐 742 01:37:08,620 --> 01:37:11,710 你为什么找我 戴安娜 743 01:37:11,880 --> 01:37:13,130 你知道我是谁 744 01:37:13,290 --> 01:37:15,630 我知道的远远超乎你想像 745 01:37:15,800 --> 01:37:18,380 那也许你已经知道我需要你的帮助 746 01:37:19,050 --> 01:37:20,050 全世界都需要 747 01:37:21,430 --> 01:37:23,140 去他的全世界 748 01:37:24,760 --> 01:37:27,140 你很显然经历了很多 749 01:37:28,390 --> 01:37:30,890 我完全无法想像 750 01:37:31,600 --> 01:37:34,980 但不管你发生什么事 现在都拥有超能力 751 01:37:35,230 --> 01:37:36,940 超能力 752 01:37:37,110 --> 01:37:39,280 这看起来像是超能力吗 753 01:37:39,440 --> 01:37:40,610 我们需要你 维克多 754 01:37:41,280 --> 01:37:42,870 也许你也需要我们 755 01:37:43,030 --> 01:37:44,700 我不需要任何人 756 01:37:46,910 --> 01:37:47,950 不再需要了 757 01:37:48,120 --> 01:37:50,620 我以前也一直这么告诉自己 758 01:37:57,460 --> 01:38:00,170 我曾经失去一个深爱的人 759 01:38:03,050 --> 01:38:07,850 把自己封闭起来 760 01:38:09,480 --> 01:38:12,190 但我得学会再次敞开心房 761 01:38:14,900 --> 01:38:18,320 老实说 我仍在努力中 762 01:38:18,480 --> 01:38:21,700 既然你要求见我 763 01:38:22,570 --> 01:38:25,320 你也在努力 764 01:38:52,100 --> 01:38:57,440 挚爱的儿子 维克多·斯通 1994-2015 765 01:38:54,850 --> 01:38:57,440 挚爱的母亲 爱莲诺·斯通 1973-2015 766 01:39:37,020 --> 01:39:40,690 超人飞船上的金属样本被你说中了 767 01:39:40,860 --> 01:39:43,990 我们用电子激光向它轰射X光 768 01:39:44,400 --> 01:39:45,860 看看发生了什么事 769 01:39:54,870 --> 01:39:56,790 克氏350万度 770 01:39:56,960 --> 01:39:59,920 金属的内核变得过热 771 01:40:00,090 --> 01:40:02,420 形成又热又密的物质 772 01:40:05,720 --> 01:40:08,510 这是地球上最火热的东西 773 01:40:08,680 --> 01:40:10,600 跟我对毕业舞会舞伴说的话一样 774 01:40:10,970 --> 01:40:12,510 但她还是甩了我 775 01:40:12,970 --> 01:40:13,890 是啊 776 01:40:18,060 --> 01:40:18,900 喂 博士 777 01:40:19,230 --> 01:40:23,690 你认为蝙蝠侠和犯罪调查部 找的东西有关联吗 778 01:40:24,740 --> 01:40:27,860 6-1-9-8-2号物件 779 01:40:29,030 --> 01:40:30,120 不 780 01:40:31,120 --> 01:40:32,330 我不这么认为 781 01:41:07,150 --> 01:41:09,240 维克多 782 01:41:26,380 --> 01:41:28,300 好了 走吧 783 01:41:29,630 --> 01:41:31,140 -高登局长 -来吧 784 01:41:32,180 --> 01:41:33,100 给你的留言 785 01:41:37,810 --> 01:41:40,390 不用看也知道今天是满月 786 01:41:40,560 --> 01:41:43,400 哥谭市一半的疯子都出来了 787 01:41:43,560 --> 01:41:45,730 他们都说看到怪物飞过港口 788 01:41:45,900 --> 01:41:49,650 你是对的 老妈 金牌警校军 念牙医学院有什么不好 789 01:41:52,740 --> 01:41:55,030 "遭到飞行吸血鬼攻击" 790 01:41:56,030 --> 01:41:59,000 "看起来像是一口尖牙的巨大蝙蝠" 791 01:41:59,160 --> 01:42:00,960 有一个相关的线索 792 01:42:01,120 --> 01:42:04,710 实验室绑架案的嫌犯肖像素描 793 01:42:04,880 --> 01:42:07,420 -看起来像… -我知道像什么 794 01:42:08,630 --> 01:42:11,090 拜托 你觉得他在这里打击犯罪20年 795 01:42:11,260 --> 01:42:13,930 然后跑去大都会绑架八个人 796 01:42:14,970 --> 01:42:16,050 我今晚会找他谈谈 797 01:42:16,220 --> 01:42:17,760 怎么找他 798 01:42:17,930 --> 01:42:19,390 你说呢 799 01:42:37,660 --> 01:42:38,870 塞拉斯 800 01:42:46,630 --> 01:42:48,800 -天啊 -钢骨在哪里 801 01:42:48,960 --> 01:42:50,130 他叫维克多 802 01:42:50,920 --> 01:42:53,680 我们见过面 说过话 803 01:42:54,640 --> 01:42:56,050 给他点时间 804 01:42:56,850 --> 01:42:58,810 你一定是巴里 我是戴安娜 805 01:42:58,970 --> 01:43:02,730 你好 巴里 我是戴安娜 那不太对 好极了 806 01:43:02,890 --> 01:43:03,890 就只有我们 807 01:43:04,060 --> 01:43:05,020 没错 就只有我们 808 01:43:06,360 --> 01:43:09,400 酷啊 那是蝙蝠信号 那是在… 809 01:43:09,570 --> 01:43:11,650 抱歉 那是在呼叫你 810 01:43:11,820 --> 01:43:13,030 意思是我们得出动了 811 01:43:13,200 --> 01:43:16,240 -对 是这意思没错 -酷毙了 812 01:44:14,340 --> 01:44:17,800 湄拉指挥官 我告诉海王 外围守卫被掳走 813 01:44:18,010 --> 01:44:19,550 他不会派出援兵 814 01:44:19,720 --> 01:44:22,350 他说所有的士兵 都必须前往叛军地区支持 815 01:44:22,510 --> 01:44:25,230 他不但残忍而且短视 816 01:44:26,940 --> 01:44:28,520 好吧 带着剩下的人马 817 01:44:28,690 --> 01:44:30,860 在母盒周围形成方阵 818 01:46:10,290 --> 01:46:12,330 你逃不了的 819 01:46:13,080 --> 01:46:15,040 我并不想逃 820 01:48:17,620 --> 01:48:19,500 维科跟我说你会来 821 01:48:20,000 --> 01:48:22,710 备受爱戴的亚特兰娜女王的长子 822 01:48:25,340 --> 01:48:26,630 等一下 823 01:48:28,640 --> 01:48:29,720 拜托了 824 01:48:33,310 --> 01:48:34,640 我认识她 825 01:48:36,940 --> 01:48:38,520 你至少认识她 826 01:48:39,400 --> 01:48:40,980 我父母死于战争 827 01:48:42,900 --> 01:48:44,110 她收容了我 828 01:48:44,490 --> 01:48:45,740 还真是个圣人 829 01:48:46,450 --> 01:48:48,570 你胆敢讽刺亚特兰娜女王 830 01:48:48,740 --> 01:48:51,370 你的女王把我丢在我父亲家门口 831 01:48:51,530 --> 01:48:53,120 从此把我忘得一干二净 832 01:48:53,290 --> 01:48:55,500 你母亲是为了救你才离开 833 01:48:56,620 --> 01:48:59,080 你无法想像她有多心痛 834 01:49:00,670 --> 01:49:02,710 她也付出惨痛代价 835 01:49:03,960 --> 01:49:06,130 但你现在不是脆弱的小孩 836 01:49:08,550 --> 01:49:10,140 那本是她的责任 837 01:49:10,300 --> 01:49:13,470 跟着那怪物到陆地 然后阻止他 838 01:49:14,060 --> 01:49:15,140 现在 839 01:49:16,430 --> 01:49:17,770 是你的责任 840 01:50:22,120 --> 01:50:23,580 太好了 841 01:50:46,520 --> 01:50:47,900 荒原狼 842 01:50:48,070 --> 01:50:49,990 告诉我你知道了什么 843 01:50:50,150 --> 01:50:52,780 找到两个苏醒的母盒 844 01:50:52,950 --> 01:50:55,910 结合两个母盒的力量 845 01:50:56,070 --> 01:50:59,080 我完成了要塞的防御系统 846 01:50:59,240 --> 01:51:01,660 第三个母盒在哪里 847 01:51:01,830 --> 01:51:05,960 天启魔感应到它 正在寻找它 848 01:51:06,130 --> 01:51:07,130 它们抓来了囚犯 849 01:51:07,290 --> 01:51:09,380 他们带有它的气味 850 01:51:10,130 --> 01:51:11,170 去吧 851 01:51:12,010 --> 01:51:13,930 去审问囚犯 852 01:51:14,720 --> 01:51:16,600 找到第三个母盒 853 01:51:18,140 --> 01:51:20,310 他们会乖乖告诉我 854 01:51:21,560 --> 01:51:24,060 不然我就来硬的 855 01:51:29,730 --> 01:51:34,950 第四章 856 01:51:31,330 --> 01:51:34,950 “改造机器” 857 01:52:07,400 --> 01:52:08,980 你们有多少人 858 01:52:09,820 --> 01:52:10,940 还不够多 859 01:52:13,030 --> 01:52:15,280 哥谭市各地有数十名目击者 860 01:52:15,450 --> 01:52:18,160 他们的描述符合大都会绑架案的嫌犯 861 01:52:18,740 --> 01:52:19,780 天启魔 862 01:52:20,410 --> 01:52:21,660 好吧 863 01:52:21,830 --> 01:52:24,160 天启魔一定闻到母盒的气味 864 01:52:24,410 --> 01:52:25,410 在实验室的那个 865 01:52:25,580 --> 01:52:27,920 它们把人抓走 拷问母盒下落 866 01:52:28,080 --> 01:52:29,790 -那八个人可能还活着 -九个人 867 01:52:32,340 --> 01:52:34,840 星辰实验室的主任今晚被绑走 868 01:52:40,050 --> 01:52:42,600 好吧 另一个科学家 869 01:52:42,760 --> 01:52:44,060 我们要怎么找到他 870 01:52:44,220 --> 01:52:45,890 附近一定有它们的巢穴 871 01:52:46,060 --> 01:52:50,150 我在大都会和哥谭市地图上做记号 872 01:52:50,310 --> 01:52:52,440 看不出任何模式 873 01:52:52,610 --> 01:52:53,900 地图上的路线没有交集 874 01:52:54,070 --> 01:52:55,400 在陆地上没有 875 01:52:56,110 --> 01:52:58,160 这是在两座城市之间的史崔克岛 876 01:52:58,320 --> 01:53:00,740 这些是通风口 全都通往1929年 877 01:53:00,910 --> 01:53:03,290 废弃的大都会工程隧道 878 01:53:03,450 --> 01:53:05,040 巢穴可能在那里 879 01:53:06,370 --> 01:53:07,750 他要跟我们一起去吗 880 01:53:07,920 --> 01:53:09,250 因为你的车子坐不下 881 01:53:09,790 --> 01:53:11,210 我有更大的玩意儿 882 01:53:12,540 --> 01:53:14,170 你真的觉得… 883 01:53:15,510 --> 01:53:19,050 他们就这样闪人了吗 884 01:53:20,260 --> 01:53:21,600 太没礼貌了 885 01:53:56,630 --> 01:54:00,130 星辰实验室 886 01:54:00,300 --> 01:54:02,390 很接近了 887 01:54:02,550 --> 01:54:04,560 敌人的气味 888 01:54:05,260 --> 01:54:06,430 虚无 889 01:54:07,020 --> 01:54:08,560 黑暗 890 01:54:09,310 --> 01:54:10,270 死亡 891 01:54:10,690 --> 01:54:12,940 -我们在哪里 阿尔弗雷德 -史崔克岛 892 01:54:13,110 --> 01:54:17,650 你们应该就在隧道通风塔的正下方 893 01:54:18,240 --> 01:54:21,660 往左看 应该有一道阶梯通往机械室 894 01:54:21,860 --> 01:54:24,410 红外线热影像显示有一群人 895 01:54:24,580 --> 01:54:25,490 就是那里 896 01:54:25,870 --> 01:54:26,870 走吧 897 01:54:40,880 --> 01:54:41,720 好吧 898 01:54:41,930 --> 01:54:43,800 有任何计划吗 899 01:54:45,350 --> 01:54:46,640 你们两个 900 01:54:46,810 --> 01:54:47,970 别单打独斗 901 01:54:48,770 --> 01:54:50,020 我们要联手出击 902 01:54:58,980 --> 01:55:00,820 我听说过你 903 01:55:02,610 --> 01:55:03,780 没想到你是真的 904 01:55:04,240 --> 01:55:05,780 有用的时候我就是真的 905 01:55:16,040 --> 01:55:20,170 我受够了你们的沉默 快告诉我 母盒在哪里 906 01:55:26,970 --> 01:55:29,180 求求你 我们有家人 907 01:55:29,350 --> 01:55:31,430 那你们就有弱点 908 01:55:31,600 --> 01:55:33,060 荒原狼 909 01:55:33,230 --> 01:55:37,400 好吧 我猜…那就是坏蛋 910 01:55:37,560 --> 01:55:38,610 猜对了 911 01:55:39,150 --> 01:55:42,610 我现在真的超想念超人 912 01:55:42,780 --> 01:55:44,950 绕到另一边 913 01:55:45,110 --> 01:55:47,120 把它们团团围住展开突袭 914 01:55:51,660 --> 01:55:53,250 你接近过一个母盒 915 01:55:53,710 --> 01:55:55,420 身上有它的气味 916 01:55:55,580 --> 01:55:57,040 我不知道你在说什么 917 01:55:57,210 --> 01:55:59,040 -它在哪里 -放过他 918 01:55:59,210 --> 01:56:01,460 他不知道 919 01:56:05,050 --> 01:56:06,840 等等 求求你 920 01:56:12,020 --> 01:56:15,140 你也带着气味 但是更强烈 921 01:56:15,520 --> 01:56:17,650 我死也不会告诉你 922 01:56:17,810 --> 01:56:19,650 不告诉我就会死 923 01:56:20,070 --> 01:56:21,070 不 924 01:56:30,410 --> 01:56:31,450 维克多 925 01:56:31,620 --> 01:56:32,910 杀了他们 926 01:56:37,370 --> 01:56:38,540 亚马逊女战士 927 01:56:38,960 --> 01:56:41,460 但不像你的姐妹 928 01:56:41,630 --> 01:56:42,880 你更强大 929 01:57:13,830 --> 01:57:15,450 亚马逊女战士 930 01:57:18,500 --> 01:57:19,880 住手 931 01:57:20,250 --> 01:57:22,460 这一个是我的 932 01:57:24,420 --> 01:57:26,840 我不属于任何人 933 01:57:40,850 --> 01:57:42,900 大伙儿 这不是联手出击 934 01:57:49,910 --> 01:57:51,070 把这些人救出去 935 01:57:51,240 --> 01:57:52,910 我会让这些怪物跟着我 936 01:58:03,340 --> 01:58:04,750 大伙儿 快啊 937 01:58:13,510 --> 01:58:15,010 再快一点 938 01:58:17,390 --> 01:58:18,770 -没事吧 -没事 939 01:58:18,930 --> 01:58:21,350 我会搞定 动作快点 940 01:58:23,400 --> 01:58:24,400 这里 941 01:59:00,730 --> 01:59:02,140 能量正在消散 942 01:59:02,310 --> 01:59:03,810 我的手套很有用 943 01:59:05,060 --> 01:59:07,360 晚点再庆祝 阿尔弗雷德 我需要夜蝠战机 944 01:59:07,520 --> 01:59:09,150 我以为你不会开口 945 01:59:09,740 --> 01:59:11,860 马上赶去 启动遥控模式 946 01:59:42,020 --> 01:59:43,020 谢了 阿尔弗雷德 947 01:59:43,190 --> 01:59:44,600 不客气 948 02:00:07,330 --> 02:00:08,290 惨了 949 02:00:16,300 --> 02:00:17,760 他们安全了 回去隧道 950 02:00:17,930 --> 02:00:21,010 隧道 好 外星人 坏蛋 耍剑的女士 951 02:00:32,820 --> 02:00:34,190 轮到我 952 02:01:56,570 --> 02:01:58,070 系统全面故障 953 02:01:58,240 --> 02:02:00,660 你没事吧 韦恩少爷 954 02:02:00,820 --> 02:02:01,820 你没事吧 955 02:02:12,540 --> 02:02:16,050 你身上流着旧神族的血液 956 02:02:30,520 --> 02:02:31,350 你没事吧 957 02:02:33,360 --> 02:02:34,980 我不确定你会来 958 02:02:36,020 --> 02:02:37,320 你是我父亲 959 02:02:40,820 --> 02:02:41,820 快去吧 960 02:02:55,460 --> 02:02:56,460 不要 961 02:03:41,970 --> 02:03:44,300 放轻松 阿尔弗雷德 我来接手 962 02:03:46,510 --> 02:03:47,720 我认识你吗 963 02:04:18,630 --> 02:04:19,880 我们在哪里的下面 964 02:04:20,630 --> 02:04:21,920 哥谭港 965 02:05:00,630 --> 02:05:01,920 那是谁 966 02:05:27,240 --> 02:05:28,410 快点 967 02:05:33,540 --> 02:05:34,750 戴安娜 快上来 968 02:06:36,640 --> 02:06:38,140 是什么 969 02:06:45,940 --> 02:06:47,360 让我看 970 02:07:26,520 --> 02:07:28,150 它在这里 971 02:07:28,900 --> 02:07:31,860 在这个世界 972 02:08:05,770 --> 02:08:08,730 你可能感染了外星微生物 必须接受隔离 973 02:08:08,900 --> 02:08:10,570 美国政府的规定要求… 974 02:08:10,730 --> 02:08:13,530 我知道规定 是我写的 975 02:08:18,080 --> 02:08:19,410 它召唤了他 976 02:08:19,580 --> 02:08:21,120 母盒 977 02:08:21,290 --> 02:08:22,660 他抢走的那个 978 02:08:23,000 --> 02:08:26,040 他有两个了 他从亚特兰蒂斯抢走母盒 979 02:08:26,210 --> 02:08:28,500 现在只需要人类遗失的母盒 980 02:08:28,670 --> 02:08:29,840 他可能已经拿到手了 981 02:08:33,510 --> 02:08:34,930 他没有拿到手 982 02:08:38,140 --> 02:08:39,300 在我这里 983 02:08:49,860 --> 02:08:51,940 你完成征服行动了吗 984 02:08:52,110 --> 02:08:53,360 还没有 狄萨德 985 02:08:53,530 --> 02:08:55,780 那你为何召唤我 986 02:08:55,950 --> 02:08:57,610 我带来消息 987 02:08:57,780 --> 02:09:00,700 强大的达克赛德登上王位之前 988 02:09:00,870 --> 02:09:05,370 他在全宇宙搜寻终极武器 989 02:09:06,000 --> 02:09:08,170 反生命方程序 990 02:09:08,330 --> 02:09:13,010 掌控多重宇宙中 所有生命与自由意志的关键 991 02:09:13,170 --> 02:09:16,180 他发现它被藏在一个原始星球上 但在他还没… 992 02:09:16,340 --> 02:09:19,220 大家都知道你背叛了他 993 02:09:19,390 --> 02:09:21,890 我找到了那个原始星球 994 02:09:22,060 --> 02:09:24,100 胆敢反击的世界 995 02:09:24,270 --> 02:09:26,140 就是地球 996 02:09:26,310 --> 02:09:28,520 反生命方程序被刻在… 997 02:09:28,690 --> 02:09:32,570 这个世界的地表 998 02:09:36,240 --> 02:09:37,650 你确定 999 02:09:37,820 --> 02:09:38,860 我看到了 1000 02:09:39,030 --> 02:09:42,450 我亲眼看到了 1001 02:10:25,790 --> 02:10:27,370 主人 1002 02:10:28,910 --> 02:10:32,460 荒原狼 1003 02:10:33,130 --> 02:10:36,210 主人 我只是你谦卑的仆人 1004 02:10:37,210 --> 02:10:40,050 你真的找到它了 1005 02:10:40,220 --> 02:10:42,390 是的 霸主 1006 02:10:43,140 --> 02:10:46,100 失落的世界就是地球 1007 02:10:46,270 --> 02:10:49,270 反生命方程序就在这里 1008 02:10:50,600 --> 02:10:53,940 你若想寻求救赎 那就找到第三个母盒 1009 02:10:54,110 --> 02:10:57,070 合而为一形成三位一体 当这世界化为焦土 1010 02:10:57,230 --> 02:11:00,450 我就会来拿我的大奖 1011 02:11:01,410 --> 02:11:03,620 你会来地球 1012 02:11:04,660 --> 02:11:08,910 我已经把十万个世界化为尘土 1013 02:11:09,080 --> 02:11:10,580 寻找反生命方程序 1014 02:11:10,750 --> 02:11:13,960 寻找抢走我荣耀之人 1015 02:11:14,130 --> 02:11:19,880 我将踏着他们的骨骸 沐浴在反生命方程序的荣光中 1016 02:11:20,050 --> 02:11:22,760 所有的生命 1017 02:11:22,930 --> 02:11:26,430 都将是我的 1018 02:11:29,810 --> 02:11:33,730 一定会的 主人 1019 02:11:37,940 --> 02:11:39,610 酷爆了 1020 02:11:39,780 --> 02:11:42,320 从外面看 这只是一栋废弃建筑物 1021 02:11:46,070 --> 02:11:47,830 它想要飞行 1022 02:11:49,040 --> 02:11:50,910 你和机器说话 1023 02:11:51,210 --> 02:11:53,210 我和人工智能说话 1024 02:11:53,370 --> 02:11:56,250 这个说她因为软体问题不能飞 1025 02:11:56,420 --> 02:11:58,380 不过我很快就能修好 1026 02:12:08,140 --> 02:12:10,350 我的数据流中有个黑点 1027 02:12:10,680 --> 02:12:12,940 我能感应到另外两个母盒 1028 02:12:13,100 --> 02:12:14,940 我知道它们苏醒了 1029 02:12:15,100 --> 02:12:16,610 但是看不见它们在哪里 1030 02:12:16,770 --> 02:12:18,770 知道敌方基地在哪里才能攻击 1031 02:12:18,940 --> 02:12:21,190 就算我们知道 1032 02:12:21,360 --> 02:12:24,200 也没有比荒原狼更强大的生物 1033 02:12:26,410 --> 02:12:27,780 也许有一个 1034 02:12:28,160 --> 02:12:29,540 超人 1035 02:12:30,450 --> 02:12:34,500 只要第三个母盒在沉睡 他们就看不到它 只能感应到它 1036 02:12:34,670 --> 02:12:36,710 我们得不断移动才不会被发现 1037 02:12:36,880 --> 02:12:40,050 不 这只是延缓失败的策略 不是获胜的战略 1038 02:12:40,670 --> 02:12:42,670 难道火焰喷射器不流行了吗 1039 02:12:43,550 --> 02:12:44,630 为何不直接烧毁它 1040 02:12:44,800 --> 02:12:46,890 烈火也无法摧毁母盒 1041 02:12:47,050 --> 02:12:48,800 它们是一种未知的物质 1042 02:12:48,970 --> 02:12:52,430 喜欢热能 会吸收它 保存在它们的核心 1043 02:12:52,600 --> 02:12:54,730 你很了解这些盒子嘛 1044 02:12:55,310 --> 02:12:56,560 非常可疑 1045 02:12:56,730 --> 02:12:58,440 你在哪里找到母盒 1046 02:12:59,400 --> 02:13:00,820 你在怀疑我吗 1047 02:13:01,110 --> 02:13:02,610 我就是怀疑你 1048 02:13:03,190 --> 02:13:05,070 我们怎么知道你不是他们的奸细 1049 02:13:06,950 --> 02:13:08,620 说来话长 1050 02:13:09,070 --> 02:13:10,990 你赶着要去哪儿吗 1051 02:13:18,380 --> 02:13:22,210 纳粹在二战结束前找到母盒 1052 02:13:22,380 --> 02:13:25,420 它被埋在一座义大利修道院底下 1053 02:13:25,590 --> 02:13:27,970 被送去给希特勒的路上 遭到盟军拦截 1054 02:13:28,140 --> 02:13:30,350 1944年被带回了美国 1055 02:13:30,930 --> 02:13:34,480 6-1-9-8-2号未知物件 1056 02:13:35,350 --> 02:13:38,810 它被丢在五角大厦档案室七十年 1057 02:13:39,350 --> 02:13:42,570 直到国防部开始研究超人飞船 1058 02:13:44,110 --> 02:13:47,610 星辰实验室的一位研究员 发现超人飞船和… 1059 02:13:48,910 --> 02:13:50,450 6-1-9-8-2号物件有关联 1060 02:13:51,330 --> 02:13:54,160 他了解到它们都是外星科技 1061 02:13:54,830 --> 02:13:56,410 不同的文明 1062 02:13:57,000 --> 02:13:59,120 类似的属性 1063 02:14:00,460 --> 02:14:03,210 虽然母盒已经沉睡了几千年 1064 02:14:03,880 --> 02:14:06,720 那位研究员想出 一个可以唤醒它的理论 1065 02:14:07,340 --> 02:14:09,090 也真的唤醒了它 1066 02:14:11,550 --> 02:14:12,390 后来… 1067 02:14:14,520 --> 02:14:16,430 我出了车祸 本来应该死去 1068 02:14:17,770 --> 02:14:20,980 但是出于绝望或是疯狂 1069 02:14:21,150 --> 02:14:23,480 那位研究员驾驭了母盒的力量 1070 02:14:39,670 --> 02:14:41,750 释放了一种他无法… 1071 02:14:41,920 --> 02:14:44,590 完全理解的外星科技 1072 02:14:44,750 --> 02:14:47,130 他利用那股力量让我活下来 1073 02:14:50,720 --> 02:14:52,300 活着… 1074 02:14:52,850 --> 02:14:54,810 但变成了这样 1075 02:14:57,600 --> 02:14:59,890 母盒继续沉睡 1076 02:15:00,810 --> 02:15:02,480 他也没有物归原处 1077 02:15:05,110 --> 02:15:07,150 那位研究员就是塞拉斯·斯通 1078 02:15:08,860 --> 02:15:10,530 我的父亲 1079 02:15:13,820 --> 02:15:15,490 等等 1080 02:15:15,660 --> 02:15:19,040 你父亲用一个母盒救了你一命 1081 02:15:19,200 --> 02:15:21,420 它们不是变态杀人机器吗 1082 02:15:21,580 --> 02:15:23,960 它们是改造机器 1083 02:15:24,130 --> 02:15:26,800 母盒没有救人或杀人… 1084 02:15:27,210 --> 02:15:29,300 活着或死亡的概念 1085 02:15:29,460 --> 02:15:31,720 它们按照主人的意愿重新排列物质 1086 02:15:31,880 --> 02:15:33,470 使其再生 恢复原状 1087 02:15:33,640 --> 02:15:35,050 恢复原状 1088 02:15:35,220 --> 02:15:38,640 母盒拥有恢复粒子相互作用的力量 1089 02:15:38,810 --> 02:15:41,890 你是说任何物质的粒子 都不能被创造或毁灭 1090 02:15:42,060 --> 02:15:44,060 它们的相互作用只会转变 1091 02:15:44,230 --> 02:15:46,980 烧掉一栋房子 粒子仍然存在 1092 02:15:47,150 --> 02:15:49,610 房子的粒子变成灰烬的粒子 1093 02:15:49,780 --> 02:15:53,820 任何人只要有火柴 都能把一栋房子化成灰烬 1094 02:15:55,870 --> 02:15:57,620 但是一个母盒 1095 02:15:57,780 --> 02:16:00,000 能够把灰烬变回一栋房子 1096 02:16:06,000 --> 02:16:08,500 我知道我们都在想同样的事 1097 02:16:09,960 --> 02:16:12,470 谁要说我才不说 1098 02:16:39,740 --> 02:16:40,830 谁啊 1099 02:16:41,540 --> 02:16:42,750 玛莎 1100 02:17:01,100 --> 02:17:06,100 我去了星球日报 终于拿回克拉克的东西 1101 02:17:07,600 --> 02:17:10,900 不知道为什么 现在无处可放 1102 02:17:13,690 --> 02:17:15,320 我失去了农场 1103 02:17:16,950 --> 02:17:19,070 我迟缴房贷好一阵子了 1104 02:17:20,450 --> 02:17:24,330 老实说 那房子我一个人住太大了 1105 02:17:24,870 --> 02:17:27,670 你知道我随时都欢迎你来住 1106 02:17:27,830 --> 02:17:29,790 只要你需要的话 1107 02:17:31,000 --> 02:17:33,630 谢谢你 露易丝 你真好心 1108 02:17:35,300 --> 02:17:37,380 但我找到一个小地方 我一个人住刚好 1109 02:17:37,550 --> 02:17:39,010 就在餐馆旁边 1110 02:17:39,640 --> 02:17:41,010 我不是来求助的 1111 02:17:42,180 --> 02:17:44,060 我来是因为… 1112 02:17:44,890 --> 02:17:47,310 我见到派瑞先生 他跟我说… 1113 02:17:48,770 --> 02:17:51,690 克拉克死后你就没去上班了 1114 02:17:56,490 --> 02:17:58,110 我办不到 1115 02:18:05,000 --> 02:18:07,330 全世界都在哀悼 1116 02:18:08,960 --> 02:18:11,380 为了一个象征悲伤 1117 02:18:11,540 --> 02:18:15,340 我走到哪儿都看到那个"S" 1118 02:18:16,470 --> 02:18:18,470 也听到人们在说什么 1119 02:18:18,630 --> 02:18:20,470 好像他们都认识他 1120 02:18:21,680 --> 02:18:23,930 但是他们不认识克拉克 1121 02:18:25,470 --> 02:18:27,810 我不能拦住他们 1122 02:18:27,980 --> 02:18:29,350 看着他们跟他们说 1123 02:18:29,520 --> 02:18:32,270 我为我儿子感到多么骄傲 1124 02:18:34,270 --> 02:18:36,780 只有你知道 1125 02:18:36,940 --> 02:18:39,360 也只有你能体会 1126 02:18:40,700 --> 02:18:43,660 悲伤加上秘密的负担 1127 02:18:46,830 --> 02:18:50,120 我大老远跑来是因为我想… 1128 02:18:50,290 --> 02:18:52,290 因为我想来见你 1129 02:18:53,540 --> 02:18:55,500 告诉你 1130 02:18:55,670 --> 02:18:57,510 我能体会 1131 02:18:59,470 --> 02:19:00,510 我… 1132 02:19:01,800 --> 02:19:05,350 永远都不会像爱你儿子那样爱任何人 1133 02:19:09,100 --> 02:19:11,100 我也很想念他 1134 02:19:12,270 --> 02:19:14,480 我好想他啊 1135 02:19:21,200 --> 02:19:22,870 我也是 亲爱的 1136 02:19:27,450 --> 02:19:32,330 玛莎 你有任何需要我都会帮忙 1137 02:19:35,920 --> 02:19:38,510 你可以帮我一个忙 亲爱的 1138 02:19:40,920 --> 02:19:43,180 继续过活吧 1139 02:20:23,180 --> 02:20:26,010 这世界也需要你 露易丝 1140 02:20:29,810 --> 02:20:30,970 他人都死了 1141 02:20:31,310 --> 02:20:33,060 母盒让维克多死而复生 1142 02:20:33,230 --> 02:20:34,770 维克多并没有死 1143 02:20:34,940 --> 02:20:36,690 生命不是一就是零 1144 02:20:36,860 --> 02:20:39,780 不是生就是死 不能两者都是 1145 02:20:39,940 --> 02:20:41,610 你能操作母盒吗 维克多 1146 02:20:41,780 --> 02:20:42,650 当然了 1147 02:20:43,070 --> 02:20:45,490 但我们不够了解氪星生物学 1148 02:20:45,660 --> 02:20:47,490 谁知道会发生什么事 1149 02:20:49,830 --> 02:20:50,950 好吧 不过… 1150 02:20:51,120 --> 02:20:54,750 我们总得试试 对吧 我们得试试看 1151 02:20:55,370 --> 02:20:56,460 还有什么好顾忌的 1152 02:20:56,630 --> 02:20:59,170 必须唤醒母盒才能尝试 1153 02:20:59,340 --> 02:21:00,800 它一旦苏醒 1154 02:21:00,960 --> 02:21:03,340 敌人就会看到 然后闯进来 1155 02:21:03,510 --> 02:21:06,050 完成三位一体 世界末日来临 1156 02:21:06,220 --> 02:21:08,600 我们会把整个地球… 1157 02:21:08,760 --> 02:21:10,600 拱手让给想灭绝人类的外星人 这真是好消息 1158 02:21:10,760 --> 02:21:13,390 就算超人能回来 1159 02:21:13,560 --> 02:21:15,440 谁敢说他就能打败他们 1160 02:21:15,600 --> 02:21:17,480 母盒这么说 1161 02:21:17,770 --> 02:21:21,020 维克多的父亲 一年多前启动一个母盒 1162 02:21:21,190 --> 02:21:22,940 当时超人还活着 1163 02:21:23,110 --> 02:21:26,530 它没召唤荒原狼 没有母盒召唤他 直到… 1164 02:21:26,700 --> 02:21:28,780 直到超人死后 1165 02:21:28,950 --> 02:21:31,370 直到超人死后 1166 02:21:31,540 --> 02:21:34,080 -因为他们怕他 -没错 1167 02:21:34,660 --> 02:21:36,460 他们怕他 1168 02:21:39,380 --> 02:21:41,170 这是唯一的办法 1169 02:21:42,840 --> 02:21:46,590 这团队有六个人 不是五个人 没有他就没有我们 1170 02:21:56,650 --> 02:22:01,790 第五章 1171 02:21:58,180 --> 02:22:01,790 国王人马 1172 02:22:02,980 --> 02:22:04,940 又完成了一项遗愿清单任务 1173 02:22:05,110 --> 02:22:08,910 把超人从坟墓里挖出来 搞定 1174 02:22:09,320 --> 02:22:10,780 克拉克·乔瑟夫·肯特 1175 02:22:10,950 --> 02:22:13,370 你知道我们能在一奈秒内搞定 对吧 1176 02:22:14,080 --> 02:22:15,450 没错 1177 02:22:23,000 --> 02:22:24,630 他是我的偶像 1178 02:22:27,260 --> 02:22:28,470 好吧 1179 02:22:32,100 --> 02:22:35,140 亚马逊人和亚特兰蒂斯人并肩作战 1180 02:22:35,310 --> 02:22:36,560 半亚特兰蒂斯人 1181 02:22:38,440 --> 02:22:41,190 我们的族人有几千年没说过话了 1182 02:22:41,860 --> 02:22:44,730 不知道 我和我的族人不亲 1183 02:22:45,940 --> 02:22:48,650 我跟亚马逊人一样讨厌亚特兰蒂斯人 1184 02:22:48,820 --> 02:22:50,860 互相仇恨真的很没必要 1185 02:22:53,990 --> 02:22:55,330 是啊 1186 02:22:56,620 --> 02:22:58,210 不 谢了 1187 02:23:02,750 --> 02:23:05,710 我父亲告诉我亚特兰蒂斯有句老话 1188 02:23:07,460 --> 02:23:09,760 "只要从黑暗中拿回什么 1189 02:23:09,930 --> 02:23:12,550 "-就一定要… -就一定要付出代价" 1190 02:23:14,810 --> 02:23:16,390 我们也会这么说 1191 02:23:19,020 --> 02:23:20,350 真没想到 1192 02:23:20,850 --> 02:23:22,730 神奇女侠 1193 02:23:24,270 --> 02:23:28,070 你觉得怎样 她会不会喜欢一个小鲜肉 1194 02:23:28,440 --> 02:23:31,030 她都五千岁了 巴里 1195 02:23:32,910 --> 02:23:34,740 每个男人都是小鲜肉 1196 02:23:36,740 --> 02:23:37,580 天啊 1197 02:23:39,330 --> 02:23:41,040 真是的 1198 02:23:44,380 --> 02:23:46,000 该死 1199 02:23:47,380 --> 02:23:48,380 运气怎么样 1200 02:23:48,550 --> 02:23:49,630 如果你说的"运气"是指… 1201 02:23:49,800 --> 02:23:52,890 "今天能不能让它飞起来的运气" 1202 02:23:53,050 --> 02:23:55,050 那就没有 1203 02:23:55,930 --> 02:23:57,470 没关系 1204 02:23:57,640 --> 02:23:59,350 无所谓 我们只要把尸体 1205 02:23:59,520 --> 02:24:01,770 放进氪星飞船 它基本上是一台有机电脑 1206 02:24:01,940 --> 02:24:03,940 可以直接和母盒讲话 1207 02:24:04,100 --> 02:24:06,570 什么 就像它跟莱克斯·卢瑟讲话 1208 02:24:06,730 --> 02:24:07,770 差不多吧 1209 02:24:07,940 --> 02:24:11,780 还会出什么差错 1210 02:24:18,410 --> 02:24:19,910 韦恩少爷 1211 02:24:22,000 --> 02:24:23,210 你成功了 1212 02:24:23,580 --> 02:24:26,880 你组成了团队 一起打这场仗 1213 02:24:27,170 --> 02:24:29,380 你实现了承诺 1214 02:24:30,460 --> 02:24:33,880 但是想让超人死而复生 我是说… 1215 02:24:34,510 --> 02:24:36,350 你的罪恶感超过了理性 1216 02:24:37,550 --> 02:24:39,680 再多的国王人马都办不到 1217 02:24:39,850 --> 02:24:42,940 阿尔弗雷德 我这次完全凭靠信念 1218 02:24:43,100 --> 02:24:44,940 而不是理性 1219 02:24:45,730 --> 02:24:49,940 但如果你开始玩弄这个母盒 1220 02:24:50,110 --> 02:24:52,190 可能会是一切的终结 1221 02:24:52,360 --> 02:24:54,240 你怎么知道你的团队够强大 1222 02:24:55,490 --> 02:24:57,830 制伏不了冲过来的公牛 1223 02:24:57,990 --> 02:24:59,700 就不要挥舞红色披风 1224 02:24:59,870 --> 02:25:01,450 是这个红色披风就可以 1225 02:25:01,620 --> 02:25:03,790 红色披风会冲回去 1226 02:25:18,510 --> 02:25:19,680 好吧 1227 02:25:26,650 --> 02:25:29,020 你是对的 斯通博士 检验报告是阴性 1228 02:25:29,190 --> 02:25:30,820 大家都没事 包括你在内 1229 02:25:30,980 --> 02:25:33,570 但为了安全起见 我们扫遍了整间实验室 1230 02:25:33,740 --> 02:25:35,490 谢谢你 汤玛斯 所以我可以走了吗 1231 02:25:35,650 --> 02:25:36,490 当然了 1232 02:25:40,490 --> 02:25:41,790 -谢了 -大家听好 1233 02:25:41,950 --> 02:25:44,410 你们都没事了 收拾你们的东西 1234 02:25:44,580 --> 02:25:46,120 如果需要更多医疗照顾… 1235 02:25:46,290 --> 02:25:49,960 亚瑟 我问你 哪个比较低调 选项"A" 1236 02:25:50,130 --> 02:25:51,380 -绝对不是"A" -好吧 1237 02:25:51,550 --> 02:25:54,670 或是…"B" 1238 02:25:56,300 --> 02:25:57,550 我再看看选项"A" 1239 02:26:03,180 --> 02:26:06,310 好了 该换装了 1240 02:26:08,440 --> 02:26:10,400 我一直都穿着 1241 02:26:37,720 --> 02:26:38,550 识别证 1242 02:26:38,800 --> 02:26:39,970 识别证 1243 02:26:43,140 --> 02:26:44,260 遵命 1244 02:26:46,600 --> 02:26:47,810 "遵命" 1245 02:26:49,770 --> 02:26:51,900 星辰实验室人事档案 1246 02:27:03,860 --> 02:27:05,490 卫斯理·罗伊 宪兵 允许通行 1247 02:27:11,040 --> 02:27:12,380 可以了 1248 02:27:12,540 --> 02:27:14,630 "可以" 可以了 1249 02:27:21,590 --> 02:27:22,680 博士 1250 02:27:22,850 --> 02:27:24,050 他们放你出来了 1251 02:27:24,220 --> 02:27:25,510 是啊 他们终于肯听我讲道理 1252 02:27:25,680 --> 02:27:27,930 现在让我们看看电子激光 1253 02:27:28,100 --> 02:27:29,100 有什么进展 1254 02:27:29,270 --> 02:27:31,600 我们有了真正的进展 让我给你看 1255 02:27:46,700 --> 02:27:49,200 维克多 清空这地方 1256 02:27:49,540 --> 02:27:50,790 没问题 1257 02:27:55,000 --> 02:27:57,130 红色警戒 受到污染 1258 02:27:56,530 --> 02:27:58,460 生化威胁 1259 02:27:58,630 --> 02:28:01,090 全体人员立刻疏散 1260 02:28:02,130 --> 02:28:03,300 生化威胁红色警戒 1261 02:28:03,470 --> 02:28:05,850 感应器侦测到外星微生物 1262 02:28:06,010 --> 02:28:08,640 外星微生物不可能 1263 02:28:08,810 --> 02:28:09,810 一定是虚惊一场 1264 02:28:09,980 --> 02:28:12,350 各位 关闭实验室 尽快离开 1265 02:28:12,520 --> 02:28:13,560 -刚刚才扫过一遍 -走吧 1266 02:28:13,730 --> 02:28:15,900 -一定有人误触警报 -走吧 博士 1267 02:28:16,060 --> 02:28:17,650 -想想看 -全员撤离 1268 02:28:17,820 --> 02:28:20,070 听好 等等 该死 1269 02:28:20,240 --> 02:28:22,990 保持冷静 前往最近出口 1270 02:28:29,450 --> 02:28:31,160 注意 全体人员 1271 02:28:31,330 --> 02:28:34,120 快点 大家都出去 快点 1272 02:28:34,290 --> 02:28:35,920 快走 快啊 1273 02:28:36,080 --> 02:28:37,590 大家都出去 快点 1274 02:28:55,980 --> 02:28:57,950 生化威胁 1275 02:28:57,950 --> 02:28:58,520 安全 1276 02:28:58,610 --> 02:28:59,610 搞定 1277 02:28:59,780 --> 02:29:00,610 搞定了 1278 02:29:00,980 --> 02:29:03,650 这是塞拉斯·斯通博士 收到吗 1279 02:29:03,820 --> 02:29:06,280 -请说 -这是假警报 1280 02:29:06,450 --> 02:29:09,620 有人骇入系统 我们得… 1281 02:29:18,960 --> 02:29:20,380 维克多 1282 02:29:22,130 --> 02:29:24,300 斯通博士 你在吗 我没收到 1283 02:29:25,340 --> 02:29:26,340 我搞错了 1284 02:29:26,510 --> 02:29:27,720 警报是真的 1285 02:29:27,890 --> 02:29:29,470 大家都出去 任何人 我重复 1286 02:29:29,640 --> 02:29:32,390 没有我的允许 任何人都不准回来 1287 02:29:32,560 --> 02:29:33,810 收到了 1288 02:29:44,070 --> 02:29:45,490 大家都出来 1289 02:29:45,820 --> 02:29:46,820 快点 快点 1290 02:29:51,240 --> 02:29:52,620 -大家都安全出来了 -应该吧 1291 02:29:52,790 --> 02:29:53,620 -每一个人 -对 1292 02:30:26,950 --> 02:30:28,200 这里 1293 02:30:38,790 --> 02:30:40,750 它知道他来了 1294 02:30:42,630 --> 02:30:43,920 超紧张的 1295 02:30:48,380 --> 02:30:50,260 太惊人了 1296 02:30:51,090 --> 02:30:52,300 太疯狂了 1297 02:30:52,470 --> 02:30:54,350 什么 现在才说疯狂 1298 02:30:54,520 --> 02:30:56,890 你们这群疯子最好知道自己在干嘛 1299 02:32:04,250 --> 02:32:08,260 露易丝·莱恩 星球日报记者 1300 02:32:12,630 --> 02:32:16,050 验孕棒 1301 02:33:22,870 --> 02:33:24,710 系统即将上线 1302 02:33:28,250 --> 02:33:31,880 欢迎 维克多 您想接手掌控吗 1303 02:33:32,050 --> 02:33:32,880 我进去了 1304 02:33:42,310 --> 02:33:44,520 这艘飞船说母盒有敌意 1305 02:33:44,690 --> 02:33:46,350 我可以取消安全协定 1306 02:33:46,520 --> 02:33:48,150 但是没时间修复卢瑟对主电容器 1307 02:33:48,310 --> 02:33:50,610 造成的所有的电力损害 1308 02:33:50,770 --> 02:33:51,940 说白话 1309 02:33:52,110 --> 02:33:54,150 电流不够 无法唤醒母盒 1310 02:33:55,110 --> 02:33:56,530 我可能有办法 1311 02:33:58,870 --> 02:34:00,780 我也许可以启动它 1312 02:34:00,950 --> 02:34:01,990 我不喜欢打破这规则 1313 02:34:02,160 --> 02:34:04,080 但是当我接近光速 我… 1314 02:34:04,250 --> 02:34:05,750 听着 时间会发生疯狂的事 1315 02:34:05,910 --> 02:34:08,500 但要是我成功了 就能制造巨大的电力 1316 02:34:08,670 --> 02:34:10,420 我可以往回跑 只要距离够远 1317 02:34:10,590 --> 02:34:12,750 就能传导大量电流 1318 02:34:12,920 --> 02:34:15,260 也许可以唤醒母盒 如果… 1319 02:34:15,670 --> 02:34:17,260 还是要这么做的话 1320 02:34:17,430 --> 02:34:18,840 没错 开始吧 1321 02:34:23,680 --> 02:34:24,890 你好 莱恩小姐 1322 02:34:25,060 --> 02:34:25,890 早安 1323 02:34:26,060 --> 02:34:27,310 我以为你不会来了 1324 02:34:28,600 --> 02:34:29,940 最后一次 1325 02:34:32,480 --> 02:34:34,070 封锁线 请勿跨越 1326 02:34:47,080 --> 02:34:50,460 我看到发动机 这一定是终点线 1327 02:34:50,960 --> 02:34:52,040 我就位了 1328 02:34:54,920 --> 02:34:57,010 准备开始投放程序 1329 02:34:57,470 --> 02:34:59,090 母盒准备好了 1330 02:35:18,610 --> 02:35:20,450 这艘飞船在求我不要唤醒母盒 1331 02:35:20,610 --> 02:35:22,410 -这是无法逆转的程序 -它很害怕 1332 02:35:22,570 --> 02:35:23,660 它知道荒原狼会来找它 1333 02:35:23,830 --> 02:35:25,580 我们知道了 继续吧 1334 02:35:25,910 --> 02:35:28,370 我强烈建议不要启动 1335 02:35:28,540 --> 02:35:30,080 巴里 我要开始倒数了 1336 02:35:30,250 --> 02:35:31,960 这是无法逆转的程序 1337 02:35:32,210 --> 02:35:33,170 -五 -五 1338 02:35:33,250 --> 02:35:34,090 五 1339 02:35:34,250 --> 02:35:35,380 -天启星有敌意 -馊主意 1340 02:35:35,550 --> 02:35:36,510 并不是 继续吧 1341 02:35:36,800 --> 02:35:37,630 四 1342 02:35:37,800 --> 02:35:38,970 -四 -四 1343 02:35:39,130 --> 02:35:40,840 -我强烈建议不要启动 -我们得立刻中止 1344 02:35:41,010 --> 02:35:41,970 快动手 1345 02:35:42,300 --> 02:35:43,300 -三 -三 1346 02:35:43,470 --> 02:35:44,390 三 1347 02:35:44,560 --> 02:35:46,470 -二 -二 1348 02:35:46,640 --> 02:35:48,390 -二 -这是无法逆转的程序 1349 02:35:48,680 --> 02:35:49,640 -一 -一 1350 02:35:50,690 --> 02:35:53,480 -一 -这是无法逆转的程序 1351 02:37:13,900 --> 02:37:17,860 正义联盟 1352 02:37:22,400 --> 02:37:23,990 -维克多 -不 1353 02:37:25,030 --> 02:37:25,860 上 1354 02:38:56,580 --> 02:38:59,630 未来已经在现在扎根 1355 02:39:00,170 --> 02:39:01,210 快趴下 1356 02:40:17,330 --> 02:40:22,330 你若在寻找他的纪念碑 看看你周围 1357 02:40:45,310 --> 02:40:46,860 他活过来了 1358 02:41:13,880 --> 02:41:16,600 不太对劲 他在扫描我们 1359 02:41:18,720 --> 02:41:20,140 什么 1360 02:41:35,320 --> 02:41:36,160 维克多 1361 02:41:37,450 --> 02:41:38,450 维克多 1362 02:41:40,740 --> 02:41:42,290 -该死 -你在干嘛 1363 02:41:42,750 --> 02:41:44,290 是我的自动防御系统 1364 02:41:44,460 --> 02:41:45,500 它感应到危险 1365 02:41:45,670 --> 02:41:46,830 维克多 住手 1366 02:41:47,000 --> 02:41:48,840 -我无法控制 -住手 1367 02:42:01,270 --> 02:42:02,430 卡尔·艾尔 不要 1368 02:42:10,820 --> 02:42:12,780 他头脑不清楚 不知道自己是谁 1369 02:42:19,950 --> 02:42:22,580 亚瑟 我们得制伏他 1370 02:42:53,150 --> 02:42:56,780 卡尔·艾尔 最后的氪星之子 1371 02:42:57,860 --> 02:43:00,070 回想你是谁 1372 02:43:01,700 --> 02:43:03,120 告诉我你是谁 1373 02:44:37,920 --> 02:44:38,760 快逃 1374 02:44:48,180 --> 02:44:49,810 你最好闪边 1375 02:44:53,100 --> 02:44:54,100 -没事吗 -没事 1376 02:44:54,270 --> 02:44:56,730 起来 去找掩护 快去 1377 02:45:49,160 --> 02:45:51,200 别逼我这么做 1378 02:46:23,900 --> 02:46:25,030 克拉克 1379 02:46:26,110 --> 02:46:27,280 克拉克 不 1380 02:46:38,880 --> 02:46:39,840 克拉克 1381 02:46:40,250 --> 02:46:41,420 不 1382 02:46:42,250 --> 02:46:44,010 这世界需要你 1383 02:46:49,300 --> 02:46:50,220 克拉克 1384 02:46:50,600 --> 02:46:51,850 克拉克 1385 02:46:52,180 --> 02:46:53,970 别开枪 1386 02:46:55,560 --> 02:46:56,690 克拉克 1387 02:47:00,060 --> 02:47:01,440 求求你 1388 02:47:35,680 --> 02:47:36,810 求求你 1389 02:47:48,030 --> 02:47:49,200 求求你 1390 02:47:49,950 --> 02:47:51,740 走吧 1391 02:47:52,200 --> 02:47:53,200 没错 1392 02:47:54,080 --> 02:47:55,370 我们走吧 1393 02:48:27,940 --> 02:48:30,280 真是拍谢 1394 02:48:39,500 --> 02:48:40,410 找掩护 1395 02:48:40,580 --> 02:48:43,080 -他来了 -母盒 1396 02:48:43,250 --> 02:48:44,290 它在哪里 1397 02:48:55,010 --> 02:48:56,220 快点 1398 02:48:57,140 --> 02:48:58,430 快点 1399 02:49:23,960 --> 02:49:27,000 注意 实验室受到入侵 1400 02:49:27,590 --> 02:49:29,760 第四区 第三层 1401 02:49:29,920 --> 02:49:32,720 立刻执行封锁程序 1402 02:50:01,290 --> 02:50:02,870 把母盒给我 1403 02:50:16,050 --> 02:50:17,470 不 不 1404 02:50:20,010 --> 02:50:21,720 爸 等等 不要 1405 02:51:02,060 --> 02:51:04,930 末日即将开始 1406 02:51:10,690 --> 02:51:11,980 维克多 1407 02:51:14,530 --> 02:51:17,650 维克多 你没事吧 站起来 1408 02:51:23,660 --> 02:51:24,830 维克多 1409 02:51:25,950 --> 02:51:27,410 他死了 1410 02:51:27,580 --> 02:51:28,580 什么 1411 02:51:29,670 --> 02:51:30,880 我父亲 1412 02:51:32,340 --> 02:51:35,300 我没能救他 我没办法 1413 02:51:36,090 --> 02:51:37,380 天啊 1414 02:51:44,310 --> 02:51:46,390 他父亲是因我们而死 1415 02:51:46,560 --> 02:51:48,020 我就说唤醒母盒是个馊主意 1416 02:51:48,190 --> 02:51:49,770 这不是个馊主意 1417 02:51:49,940 --> 02:51:52,270 我们需要超人 现在仍然需要 1418 02:51:52,440 --> 02:51:54,730 不管是什么回来了 那不是超人 1419 02:51:54,900 --> 02:51:57,900 也许是他的躯体和超能力 但那不是他 1420 02:51:58,070 --> 02:51:59,700 那是他 1421 02:51:59,860 --> 02:52:01,990 他认得露易丝·莱恩 1422 02:52:02,370 --> 02:52:04,280 -谁 -他挚爱的女人 1423 02:52:04,660 --> 02:52:06,660 -他记得她 -才怪 1424 02:52:07,200 --> 02:52:08,960 他会去找她是因为她不怕他 1425 02:52:09,120 --> 02:52:10,540 这叫做直觉 戴安娜 1426 02:52:17,970 --> 02:52:19,800 等等 荒原狼去了哪儿 1427 02:52:19,970 --> 02:52:23,300 他回去基地组装三个母盒 1428 02:52:23,470 --> 02:52:25,560 我们不知道他的基地在哪里 或是还要多久… 1429 02:52:25,720 --> 02:52:26,560 几个小时 1430 02:52:26,720 --> 02:52:28,390 盒子一旦同步 形成三位一体 1431 02:52:28,560 --> 02:52:30,810 我们不能及时阻止他 地球就完了 1432 02:52:31,730 --> 02:52:33,400 这不像你 1433 02:52:35,940 --> 02:52:37,440 他早就知道 1434 02:52:37,730 --> 02:52:39,320 他早就知道了 1435 02:52:39,490 --> 02:52:40,900 他不是想要摧毁那个母盒 1436 02:52:41,320 --> 02:52:43,240 而是想要让它过热 1437 02:52:43,410 --> 02:52:46,080 让核心变成核反应炉以外 地球上最热的东西 1438 02:52:46,240 --> 02:52:48,290 -那么热的东西一定会… -热源影像系统 1439 02:52:48,450 --> 02:52:50,660 一定会破表 1440 02:52:50,830 --> 02:52:54,210 你父亲为了标记母盒牺牲自己 1441 02:52:54,380 --> 02:52:56,250 我们得回我的实验室使用卫星 1442 02:52:56,420 --> 02:52:58,420 扫描地球哪里有热异常 1443 02:52:58,590 --> 02:52:59,720 我已经在扫描了 1444 02:52:59,880 --> 02:53:01,880 什么 你有一颗卫星 1445 02:53:02,050 --> 02:53:03,010 我有六颗 1446 02:53:03,680 --> 02:53:04,600 是喔 1447 02:53:06,390 --> 02:53:08,390 咱们去找那个混帐东西 1448 02:53:14,190 --> 02:53:19,480 第六章 1449 02:53:15,930 --> 02:53:19,480 “更黑暗的东西” 1450 02:53:29,280 --> 02:53:32,790 法拍屋出售 1451 02:53:32,960 --> 02:53:35,040 你把我带来这里 1452 02:53:35,210 --> 02:53:36,380 你记得 1453 02:53:37,290 --> 02:53:38,920 这是我的家 1454 02:53:40,840 --> 02:53:42,050 你说话了 1455 02:53:46,090 --> 02:53:47,970 我之前没有吗 1456 02:54:21,960 --> 02:54:24,510 你母亲迟缴了房贷 1457 02:54:26,010 --> 02:54:28,010 没有告诉任何人 1458 02:54:29,680 --> 02:54:31,430 我不明白 1459 02:54:34,520 --> 02:54:36,940 她的自尊心很强 克拉克 1460 02:54:40,070 --> 02:54:41,440 穿上去 1461 02:54:56,370 --> 02:54:58,040 她很喜欢这里 1462 02:55:08,840 --> 02:55:10,470 我也是 1463 02:55:12,470 --> 02:55:13,890 我也是 1464 02:55:41,000 --> 02:55:42,630 这太酷了 1465 02:55:42,790 --> 02:55:44,300 我带了一些朋友来 1466 02:55:50,840 --> 02:55:53,430 天啊 太棒了 1467 02:55:53,600 --> 02:55:56,100 大伙儿 这是阿尔弗雷德 我替他工作 1468 02:55:56,270 --> 02:55:58,480 -阿尔弗雷德 -你好 女士 1469 02:56:04,940 --> 02:56:06,820 这里真的很酷 阿尔弗雷德 1470 02:56:09,610 --> 02:56:12,030 我去泡茶 1471 02:56:12,200 --> 02:56:13,200 太好了 1472 02:56:13,370 --> 02:56:15,200 不知道哪里有这么多杯子 1473 02:56:18,120 --> 02:56:20,960 那就是母盒 就在那里 1474 02:56:21,120 --> 02:56:22,920 显示可见光谱 1475 02:56:25,800 --> 02:56:26,630 普扎诺夫 1476 02:56:27,210 --> 02:56:30,050 离莫斯科不远的鬼城 1477 02:56:30,220 --> 02:56:32,890 三十年前发生核事故后被废弃 1478 02:56:33,050 --> 02:56:34,260 就连军队也不进去 1479 02:56:34,430 --> 02:56:35,720 是啊 辐射性一定强到 1480 02:56:35,890 --> 02:56:38,060 你的脖子会长出另一只脚 1481 02:56:38,230 --> 02:56:39,060 不再是这样了 1482 02:56:39,230 --> 02:56:41,400 他收集了辐射 用来创建他的基地 1483 02:56:41,560 --> 02:56:42,400 放大 1484 02:56:46,400 --> 02:56:47,780 他到底在盖什么 1485 02:56:47,940 --> 02:56:49,190 三位一体在里面 1486 02:56:49,360 --> 02:56:50,780 我们要从上面进攻 1487 02:56:50,950 --> 02:56:53,530 炸药无法分开母盒 1488 02:56:53,700 --> 02:56:55,530 只会强化它们的联系 1489 02:56:55,700 --> 02:56:56,830 什么 我们不能炸掉它 1490 02:56:56,990 --> 02:56:58,450 不能从外面 1491 02:57:00,040 --> 02:57:02,420 我想插入合而为一的母盒 1492 02:57:03,130 --> 02:57:04,540 和它融为一体 1493 02:57:04,710 --> 02:57:07,250 从内部削弱它的连结 就能够再把它拆成三个 1494 02:57:07,420 --> 02:57:09,630 不行 你不知道你会面对什么 1495 02:57:09,800 --> 02:57:13,340 你得一个人融入三位一体 1496 02:57:13,510 --> 02:57:15,850 这三个母盒结合起来足以毁天灭地 1497 02:57:16,010 --> 02:57:17,430 它们存在了十亿年 1498 02:57:17,600 --> 02:57:19,730 绝对会钻进你脑袋 找到你的弱点 1499 02:57:19,890 --> 02:57:22,060 和你的恐惧 并用来摧毁你 1500 02:57:22,230 --> 02:57:24,230 只要让我进去 替我争取时间 1501 02:57:24,480 --> 02:57:25,650 你可能会死 维克多 1502 02:57:25,810 --> 02:57:28,110 我不这样做 我们都会死 1503 02:57:32,860 --> 02:57:34,620 我失去了一切 1504 02:57:40,000 --> 02:57:41,960 你不是要我使用这些超能力吗 1505 02:57:45,040 --> 02:57:46,540 我就要这么做 1506 02:57:46,710 --> 02:57:48,590 好吧 所以… 1507 02:57:49,300 --> 02:57:52,550 维克多想和末日母盒 合而为一拯救世界 1508 02:57:52,760 --> 02:57:54,930 那就让他这么做吧 1509 02:57:55,260 --> 02:57:58,060 但要让他这么做就得攻击基地 1510 02:57:58,220 --> 02:58:00,430 深入地狱向魔鬼与他的军团… 1511 02:58:00,600 --> 02:58:01,640 正式开战 1512 02:58:01,810 --> 02:58:04,060 这家伙在他摧毁的星球上 1513 02:58:04,230 --> 02:58:08,190 大概打过成千上万个超级英雄 对吧 1514 02:58:08,360 --> 02:58:09,860 我们得假设他都赢了 1515 02:58:10,030 --> 02:58:13,150 我才不管他在多少个地狱 打过多少恶魔 1516 02:58:13,320 --> 02:58:16,820 他没打过我们 团结一致的我们 1517 02:59:07,290 --> 02:59:08,920 我猜你说"愿意" 1518 02:59:09,540 --> 02:59:10,380 什么 1519 02:59:13,840 --> 02:59:15,090 那只婚戒 1520 02:59:18,800 --> 02:59:20,350 你真的回来了 1521 02:59:53,840 --> 02:59:56,050 我得到第二次机会 1522 02:59:58,340 --> 03:00:00,800 绝对不会白白浪费 1523 03:00:59,070 --> 03:01:00,240 真的是你吗 1524 03:01:00,400 --> 03:01:02,110 真的是我 妈 1525 03:01:20,130 --> 03:01:22,180 听好 妈 1526 03:01:23,760 --> 03:01:25,800 他们让我回来一定有原因 1527 03:01:27,560 --> 03:01:29,100 我得知道为什么 1528 03:01:49,240 --> 03:01:50,660 维克多怎么样 1529 03:01:55,040 --> 03:01:57,790 你也知道 他想独处一下 1530 03:01:59,380 --> 03:02:02,550 我们要求一个刚失去父亲的孩子… 1531 03:02:02,720 --> 03:02:05,510 对抗全宇宙最强大的机器 1532 03:02:07,350 --> 03:02:08,850 这不公平 1533 03:02:10,600 --> 03:02:12,230 我以为你不在乎 1534 03:02:13,640 --> 03:02:15,150 我从来没这么说过 1535 03:02:28,080 --> 03:02:29,490 怎么了 1536 03:02:33,410 --> 03:02:38,420 我做过一个梦 不晓得 几乎就像一种预感 1537 03:02:39,380 --> 03:02:42,170 那是世界末日 1538 03:02:42,340 --> 03:02:45,180 巴里·艾伦就在这里 1539 03:02:45,340 --> 03:02:49,220 他跟我说 "露易丝·莱恩才是关键" 1540 03:02:51,890 --> 03:02:55,100 对超人来说…她是 1541 03:02:56,150 --> 03:02:57,770 每个人都有心爱的人 1542 03:02:58,400 --> 03:03:00,270 我想不只是这样 1543 03:03:01,150 --> 03:03:03,030 这是更黑暗的东西 1544 03:03:07,200 --> 03:03:08,200 韦恩少爷 1545 03:03:08,370 --> 03:03:09,870 韦恩少爷 1546 03:03:10,700 --> 03:03:12,370 你得来看看 1547 03:03:35,640 --> 03:03:37,350 你修好了 1548 03:03:37,520 --> 03:03:39,230 它想要飞行 1549 03:03:40,480 --> 03:03:41,820 飞行是它的本能 1550 03:03:41,980 --> 03:03:43,280 也是你的 1551 03:03:50,070 --> 03:03:52,030 他会来的 阿尔弗雷德 我知道 1552 03:03:52,200 --> 03:03:53,830 你为何这么肯定 1553 03:03:54,580 --> 03:03:57,160 信念 阿尔弗雷德 信念 1554 03:04:19,270 --> 03:04:20,850 终于 1555 03:04:22,690 --> 03:04:25,400 准备迎接他的到来 1556 03:04:27,240 --> 03:04:31,370 我即将得到救赎 1557 03:04:39,250 --> 03:04:40,710 合而为一 1558 03:04:45,880 --> 03:04:48,380 同步化 1559 03:05:32,720 --> 03:05:35,640 卫星显示他打造了一个防御圆顶 1560 03:05:35,800 --> 03:05:36,970 这是个设计缺陷 1561 03:05:37,140 --> 03:05:39,390 把塔台射倒 圆顶就会崩垮 1562 03:05:39,560 --> 03:05:41,560 敌人不会料到我们正面攻击 1563 03:05:41,730 --> 03:05:45,230 是啊 因为他没想到 有人会这么疯狂 1564 03:05:46,230 --> 03:05:47,520 布鲁斯是对的 1565 03:05:47,690 --> 03:05:49,280 我们必须摧毁防御圆顶 1566 03:05:49,440 --> 03:05:51,740 在它们同步化之前找到母盒 1567 03:05:51,900 --> 03:05:53,610 要是圆顶没被摧毁呢 1568 03:05:53,780 --> 03:05:54,780 它一定会被摧毁 1569 03:05:54,950 --> 03:05:56,580 维克多一旦融入三位一体 1570 03:05:57,080 --> 03:06:00,330 有巴里的协助 他就能突破母盒的防御 1571 03:06:00,500 --> 03:06:01,960 提醒我 我该怎么做 1572 03:06:02,120 --> 03:06:03,750 用爱的力量 1573 03:06:03,920 --> 03:06:06,540 -巴里 -我得造成能量大爆发 1574 03:06:06,710 --> 03:06:07,710 很好 1575 03:06:07,880 --> 03:06:09,760 你得比以前跑得更快 1576 03:06:09,920 --> 03:06:12,470 才能产生这么大的电流 1577 03:06:12,630 --> 03:06:14,640 然后直接碰触维克多的身体 1578 03:06:14,970 --> 03:06:17,850 那股能量应该能让他进入母盒 1579 03:06:18,010 --> 03:06:19,890 维克多 之后就靠你了 1580 03:06:20,060 --> 03:06:22,810 在它同步化之前把它扯开 1581 03:06:24,390 --> 03:06:26,520 我们终于有了计划 1582 03:06:27,060 --> 03:06:28,770 我们有了计划 1583 03:06:44,120 --> 03:06:46,170 艾尔之家的标记代表希望 1584 03:06:46,330 --> 03:06:48,500 这希望包含了一个基本的信念 1585 03:06:48,670 --> 03:06:52,380 那就是每个人都有行善的潜力 1586 03:06:52,550 --> 03:06:53,380 克拉克 1587 03:06:53,550 --> 03:06:54,840 那就是你能带给他们的 1588 03:06:55,010 --> 03:06:56,970 你被送来这里是有原因的 1589 03:06:57,140 --> 03:07:01,010 你将给地球的人类 一个努力达到的理想 1590 03:07:01,680 --> 03:07:03,520 就算你必须穷尽一生 1591 03:07:03,680 --> 03:07:07,440 也得尽全力找到你来这里的原因 1592 03:07:07,600 --> 03:07:10,230 他们会犯错 也会失败 1593 03:07:10,400 --> 03:07:11,730 但你必须做出选择 1594 03:07:12,530 --> 03:07:14,950 他们将与你一起迎向阳光 1595 03:07:15,110 --> 03:07:19,070 你必须选择是否要 骄傲地站在全人类面前 1596 03:07:19,240 --> 03:07:22,410 你将帮助他们完成奇迹 1597 03:07:39,550 --> 03:07:44,060 氪星所有的希望和梦想 都寄托在你身上 1598 03:07:44,220 --> 03:07:46,480 我真为你感到骄傲 儿子 1599 03:07:47,810 --> 03:07:49,860 你母亲和我都很爱你 1600 03:07:50,520 --> 03:07:54,070 你母亲和我都知道你会改变世界 1601 03:07:55,360 --> 03:07:57,200 你的心受到考验 1602 03:07:58,490 --> 03:08:00,450 我知道这很难 克拉克 1603 03:08:01,200 --> 03:08:04,120 但你给了他们的世界一个希望 1604 03:08:04,290 --> 03:08:06,960 你必须让他们看到你是谁 1605 03:08:07,660 --> 03:08:09,370 爱他们吧 卡尔·艾尔 1606 03:08:10,000 --> 03:08:12,130 就像我们爱你一样 1607 03:08:14,590 --> 03:08:15,710 飞吧 儿子 1608 03:08:16,760 --> 03:08:17,970 是时候了 1609 03:09:21,740 --> 03:09:24,870 我要把塔台射倒 破坏力场圆顶 1610 03:09:25,030 --> 03:09:26,160 不管你们看到什么 1611 03:09:27,490 --> 03:09:29,450 都要按照计划 1612 03:09:31,330 --> 03:09:33,250 这就是我把你们聚在一起的原因 1613 03:10:13,330 --> 03:10:15,080 布鲁斯 撤退 你不会成功的 1614 03:10:18,880 --> 03:10:20,920 只要敲大声一点 1615 03:10:45,910 --> 03:10:47,490 杀了他 1616 03:10:47,660 --> 03:10:50,410 快去捍卫三位一体 1617 03:10:55,710 --> 03:10:56,630 惨了 1618 03:11:16,940 --> 03:11:17,860 塔台倒了 1619 03:11:19,480 --> 03:11:20,900 收到吗 1620 03:11:21,530 --> 03:11:22,650 收到了 1621 03:11:23,740 --> 03:11:25,110 你没事吗 1622 03:11:26,360 --> 03:11:28,950 布鲁斯 1623 03:11:29,240 --> 03:11:30,120 快去反应炉 1624 03:11:30,280 --> 03:11:32,790 我会尽量把这些怪物引开来 1625 03:11:32,950 --> 03:11:33,790 那是什么意思 1626 03:11:36,790 --> 03:11:38,790 别担心我 快去找到母盒 1627 03:11:41,460 --> 03:11:42,630 它们来了 1628 03:11:43,010 --> 03:11:43,920 布鲁斯 1629 03:11:46,840 --> 03:11:48,140 失去讯号 1630 03:11:49,850 --> 03:11:51,100 上吧 1631 03:12:30,010 --> 03:12:31,850 跟我来呀 你们这群臭虫 1632 03:13:51,800 --> 03:13:52,970 严重受损 1633 03:14:32,970 --> 03:14:34,220 你真的发疯了 1634 03:15:01,120 --> 03:15:02,250 不客气 1635 03:15:02,410 --> 03:15:03,710 厉害 兄弟 1636 03:16:36,800 --> 03:16:38,430 放心 我们能搞定 1637 03:16:38,590 --> 03:16:39,970 你去做该做的事 1638 03:17:35,770 --> 03:17:37,280 我猜你就是阿尔弗雷德 1639 03:17:39,150 --> 03:17:40,450 肯特少爷 1640 03:17:42,490 --> 03:17:43,990 他说你会来 1641 03:17:45,700 --> 03:17:49,120 希望你没有来得太晚 1642 03:17:59,970 --> 03:18:01,050 喂 1643 03:18:10,350 --> 03:18:11,690 记得我吗 1644 03:18:14,230 --> 03:18:15,650 第二回合 1645 03:18:16,360 --> 03:18:17,520 好啊 1646 03:18:39,050 --> 03:18:40,420 上吧 1647 03:18:41,380 --> 03:18:43,680 告诉我 亚马逊女战士 1648 03:18:43,840 --> 03:18:47,140 你为何抛弃自己的姐妹 1649 03:18:48,060 --> 03:18:50,470 跑来跟这些卑微的生物 1650 03:18:50,640 --> 03:18:53,940 混在一起 1651 03:18:54,140 --> 03:18:56,980 你没能赶去保护她们被我屠杀 1652 03:18:57,230 --> 03:18:59,440 可悲的是 你本来可以的 1653 03:19:40,230 --> 03:19:41,940 巴里 我就位了 1654 03:20:00,710 --> 03:20:03,420 好 我来产生电流 1655 03:20:04,050 --> 03:20:05,130 你来倒数 1656 03:20:06,300 --> 03:20:07,550 等我倒数到一 1657 03:20:08,220 --> 03:20:10,180 三 二… 1658 03:20:13,350 --> 03:20:14,730 放开我 1659 03:20:15,230 --> 03:20:16,560 维克多 1660 03:20:52,640 --> 03:20:54,180 维克多 1661 03:20:58,020 --> 03:21:00,520 我看着你的小岛燃烧 1662 03:21:00,690 --> 03:21:04,150 你的姐妹哀求我饶她们一命 1663 03:21:04,320 --> 03:21:06,570 你母亲也一样 1664 03:21:06,940 --> 03:21:07,950 骗子 1665 03:21:33,680 --> 03:21:35,680 我撑不住了 1666 03:21:36,560 --> 03:21:37,560 维克多 1667 03:21:59,790 --> 03:22:02,000 维克多 我撑不住了 1668 03:22:08,670 --> 03:22:10,920 为了达克赛德 1669 03:22:14,890 --> 03:22:17,260 没什么用 1670 03:23:01,770 --> 03:23:02,890 好吧 1671 03:23:03,060 --> 03:23:04,650 卡尔·艾尔 1672 03:23:43,180 --> 03:23:45,390 巴里 我连上了母盒 1673 03:23:45,560 --> 03:23:47,520 我需要电流才能进去 1674 03:24:09,590 --> 03:24:10,590 巴里 1675 03:24:11,500 --> 03:24:13,170 巴里 你没事吧 1676 03:24:14,800 --> 03:24:15,630 巴里 1677 03:24:15,800 --> 03:24:19,390 我没力了 我得喘口气 1678 03:24:36,490 --> 03:24:39,320 巴里 你在哪里 它快要同步化了 1679 03:24:39,570 --> 03:24:41,330 好吧 好吧 1680 03:24:42,160 --> 03:24:44,330 喔买尬 快点愈合 巴里 1681 03:24:44,500 --> 03:24:46,160 愈合啊 1682 03:25:12,020 --> 03:25:13,570 巴里 1683 03:25:26,500 --> 03:25:28,210 太迟了 1684 03:25:29,540 --> 03:25:30,960 噢 不 1685 03:25:35,170 --> 03:25:36,840 他来了 1686 03:26:06,330 --> 03:26:07,160 好吧 1687 03:26:07,330 --> 03:26:09,910 我得超越光速 跑得比光速更快 1688 03:26:10,080 --> 03:26:13,330 你得打破规则 巴里 现在就得这么做 1689 03:26:26,390 --> 03:26:28,100 爸… 1690 03:26:31,940 --> 03:26:34,270 不管发生什么事 我都要你知道 1691 03:26:36,980 --> 03:26:38,980 你儿子也是一个英雄 爸 1692 03:26:42,200 --> 03:26:44,110 精英中的精英 1693 03:27:39,550 --> 03:27:42,090 创造自己的未来 1694 03:27:48,550 --> 03:27:50,510 也创造自己的过去 1695 03:27:55,100 --> 03:27:58,650 一切都没事了 1696 03:28:28,640 --> 03:28:30,350 斯通 哥谭市立大学 1697 03:28:35,020 --> 03:28:37,600 哥谭市 1698 03:28:45,690 --> 03:28:47,860 我们一直在等着你 维克多 1699 03:28:48,990 --> 03:28:51,070 我破碎的儿子 1700 03:28:53,490 --> 03:28:55,500 你不会再孤单了 1701 03:28:55,660 --> 03:28:57,330 我们会再全家团圆 1702 03:29:05,170 --> 03:29:07,260 我们可以像以前一样 1703 03:29:11,600 --> 03:29:13,720 让你恢复原状 1704 03:29:25,570 --> 03:29:27,320 我并没有破碎 1705 03:29:37,040 --> 03:29:38,910 我也并不孤单 1706 03:29:55,720 --> 03:29:56,720 超人 1707 03:31:27,400 --> 03:31:29,360 我跟你说过 1708 03:31:30,940 --> 03:31:33,570 荒原狼会失败 1709 03:31:34,530 --> 03:31:38,200 没错 你是说过 1710 03:31:38,870 --> 03:31:43,370 我的主人 母盒被摧毁了 1711 03:31:44,250 --> 03:31:48,000 你要怎么得到你的大奖 1712 03:31:48,250 --> 03:31:51,670 找到了反生命方程序 狄萨德 1713 03:31:51,840 --> 03:31:56,510 我们会不择手段得到它 1714 03:31:59,680 --> 03:32:01,180 准备出动舰队 1715 03:32:02,100 --> 03:32:04,520 我们要用老方法 1716 03:34:07,080 --> 03:34:12,270 后记 1717 03:34:08,690 --> 03:34:12,270 再为人父 1718 03:34:28,870 --> 03:34:31,000 这又是你父亲 1719 03:34:38,300 --> 03:34:42,630 现在 让我说出内心话 不是身为一个科学家 1720 03:34:42,800 --> 03:34:44,470 而是身为一个父亲 1721 03:34:45,680 --> 03:34:47,720 让我再为人父 1722 03:34:50,270 --> 03:34:53,690 我把你带到这世界 又把你带回来 1723 03:34:53,850 --> 03:34:57,480 你无法想像我有多为你感到骄傲 1724 03:34:58,030 --> 03:34:59,690 一直都是如此 1725 03:35:01,820 --> 03:35:06,700 我浪费了这么多年没有陪你 也犯了太多错没有改过 1726 03:35:09,160 --> 03:35:11,040 一切都会崩裂 维克多 1727 03:35:11,620 --> 03:35:13,870 一切都会改变 1728 03:35:24,550 --> 03:35:26,640 我得去见我父亲 1729 03:36:02,210 --> 03:36:04,050 这世界伤痕累累 1730 03:36:04,220 --> 03:36:05,300 支离破碎 1731 03:36:05,470 --> 03:36:07,260 无法改变 1732 03:36:08,050 --> 03:36:11,140 飞船是你的了 小子 你是老大 1733 03:36:13,430 --> 03:36:16,600 "蔡瑞恩 纳米科技总监" 1734 03:36:16,770 --> 03:36:18,270 那是你的专长 1735 03:36:18,940 --> 03:36:20,360 没错 1736 03:36:20,940 --> 03:36:22,530 那是我的专长 1737 03:36:27,570 --> 03:36:32,910 但世界不能在过去修复 只有在未来才能 1738 03:36:34,790 --> 03:36:38,670 未来与现在 1739 03:36:38,830 --> 03:36:41,800 至少要有30 45公尺 1740 03:36:42,380 --> 03:36:43,710 至少 1741 03:36:44,840 --> 03:36:46,470 一张大圆桌 1742 03:36:46,630 --> 03:36:48,800 六张椅子 就在那里 1743 03:36:49,930 --> 03:36:51,560 但还能坐更多人 1744 03:36:53,970 --> 03:36:55,600 还能坐更多人 1745 03:36:56,600 --> 03:36:58,350 老天保佑我们 1746 03:37:00,150 --> 03:37:02,150 现在就是你 1747 03:37:05,860 --> 03:37:07,240 什么 1748 03:37:07,400 --> 03:37:10,200 这是刑事实验室最烂的工作 1749 03:37:10,370 --> 03:37:12,740 不过我入门了 1750 03:37:12,910 --> 03:37:14,500 这是"真正"的工作 1751 03:37:15,290 --> 03:37:16,410 "真正的" 1752 03:37:20,630 --> 03:37:22,670 你入门了 1753 03:37:25,010 --> 03:37:26,130 大家不都是这么说吗 1754 03:37:26,300 --> 03:37:28,220 你入门了 1755 03:37:28,380 --> 03:37:30,680 是啊 大家都是这么说 1756 03:37:30,840 --> 03:37:32,260 他入门了 1757 03:37:32,550 --> 03:37:35,020 -那是我的乖儿子 -噢 天啊 1758 03:37:35,220 --> 03:37:36,560 我什么都没教他 1759 03:37:36,730 --> 03:37:38,770 -爸 你会再被喷辣椒水 -好样的 1760 03:37:42,270 --> 03:37:43,980 你的前途无量 1761 03:37:46,110 --> 03:37:47,360 谢了 爸 1762 03:37:47,740 --> 03:37:48,570 现在 1763 03:37:48,740 --> 03:37:51,820 现在是你崛起的时刻 维克多 1764 03:37:52,120 --> 03:37:55,080 光是说声"谢谢你"并不够 1765 03:37:55,240 --> 03:37:58,620 我只是弥补一个错误而已 1766 03:38:09,050 --> 03:38:11,510 你怎么向银行把房子要回来的 1767 03:38:11,970 --> 03:38:13,970 我买下了银行 1768 03:38:16,390 --> 03:38:18,680 对了 恭喜了 1769 03:38:19,020 --> 03:38:20,950 坚持下去 勇往直前 1770 03:38:20,600 --> 03:38:21,900 挚爱的父亲 塞拉斯·斯通 1969-2017 1771 03:38:20,950 --> 03:38:24,440 当一个我未曾当过的英雄 1772 03:38:26,280 --> 03:38:28,570 在勇士之中占有一席之地 1773 03:38:28,740 --> 03:38:33,660 从前 现在与未来 1774 03:39:06,320 --> 03:39:09,230 你该挺身而出了 1775 03:39:12,990 --> 03:39:14,490 勇敢奋战 1776 03:39:17,120 --> 03:39:18,540 努力发掘 1777 03:39:23,290 --> 03:39:25,380 愈合与爱 1778 03:39:28,960 --> 03:39:30,010 赢得胜利 1779 03:39:56,620 --> 03:39:58,200 关键时刻… 1780 03:39:58,490 --> 03:39:59,870 就是现在 1781 03:40:09,040 --> 03:40:10,300 准备好了吗 1782 03:40:10,460 --> 03:40:11,760 来吧 史蒂芬 1783 03:40:15,380 --> 03:40:16,680 继续走吧 1784 03:40:18,600 --> 03:40:19,720 走吧 1785 03:40:21,520 --> 03:40:23,270 来吧 卢瑟 走吧 1786 03:40:26,940 --> 03:40:28,060 卢瑟 1787 03:40:33,070 --> 03:40:34,070 打开二号牢房 卡尔 1788 03:40:43,250 --> 03:40:44,540 卢瑟 1789 03:40:49,590 --> 03:40:52,800 别闹了 卢瑟 不然我要进去教训你 1790 03:41:20,190 --> 03:41:22,410 阿卡姆 哥谭市 1791 03:41:27,480 --> 03:41:30,130 阿卡姆精神病院 1792 03:42:22,050 --> 03:42:23,350 他来了 1793 03:42:24,100 --> 03:42:25,350 欢迎上船 1794 03:42:25,510 --> 03:42:27,310 来一杯顶级香槟 1795 03:42:27,470 --> 03:42:29,350 我只是在庆祝神的回归 1796 03:42:29,520 --> 03:42:31,810 从地底回到天空 1797 03:42:32,190 --> 03:42:34,440 听说你脑筋秀逗了 1798 03:42:35,110 --> 03:42:36,320 本来是 谢谢你 1799 03:42:36,480 --> 03:42:40,780 直到阿卡汉的良医 让我的头脑再度清晰 1800 03:42:40,950 --> 03:42:44,240 你自愿免费干掉蝙蝠侠 1801 03:42:44,410 --> 03:42:45,910 为什么这么好心 1802 03:42:46,660 --> 03:42:47,740 这是私人恩怨 1803 03:42:48,410 --> 03:42:51,210 让我猜 以眼还眼 1804 03:42:53,290 --> 03:42:55,000 你说你有我要的东西 1805 03:42:55,170 --> 03:42:56,590 你最好别浪费我的时间 1806 03:42:57,000 --> 03:43:00,670 我哪敢惹你呀 威尔森先生 1807 03:43:00,840 --> 03:43:04,430 我有更重要的事要做 所以得好好活着 1808 03:43:05,390 --> 03:43:08,850 但如果你想找到蝙蝠侠 1809 03:43:09,020 --> 03:43:12,100 有件事可以帮你大忙 1810 03:43:13,440 --> 03:43:17,570 他的名字是布鲁斯·韦恩 1811 03:43:21,650 --> 03:43:23,200 现在想一想 1812 03:43:25,530 --> 03:43:27,450 这件事的确值得庆祝 1813 03:43:28,580 --> 03:43:30,000 好样的 1814 03:44:34,310 --> 03:44:35,520 安全 1815 03:44:41,020 --> 03:44:42,530 还有多远 1816 03:44:43,780 --> 03:44:44,990 就快到了 1817 03:44:47,240 --> 03:44:48,780 我们得快点 1818 03:44:48,950 --> 03:44:50,450 不能在外面待太久 1819 03:44:50,620 --> 03:44:52,240 他会来找我们 1820 03:44:55,210 --> 03:44:56,830 让他来 1821 03:44:57,330 --> 03:44:58,960 让那个混蛋来吧 1822 03:45:00,420 --> 03:45:04,210 他杀了亚瑟 我要一刀捅死他 1823 03:45:05,010 --> 03:45:06,930 我要让他付出代价 1824 03:45:08,640 --> 03:45:10,930 我知道你的感受 湄拉 1825 03:45:11,430 --> 03:45:13,930 你一点都不知道 1826 03:45:14,430 --> 03:45:18,560 但我们得按照计划才有机会成功 1827 03:45:26,490 --> 03:45:29,910 你曾经爱过谁 1828 03:45:44,050 --> 03:45:47,220 你错了 小美人鱼 1829 03:45:50,970 --> 03:45:54,390 他很了解失去挚爱的感受 1830 03:45:56,350 --> 03:45:58,600 就像是… 1831 03:45:59,940 --> 03:46:01,310 一个父亲 1832 03:46:02,770 --> 03:46:04,110 和一个母亲 1833 03:46:05,110 --> 03:46:08,150 你说下一句话前最好小心一点 1834 03:46:09,820 --> 03:46:11,820 或是一个养子 1835 03:46:15,580 --> 03:46:17,200 对不对… 1836 03:46:18,750 --> 03:46:20,210 蝙蝠侠 1837 03:46:23,460 --> 03:46:26,670 也许那只臭美人鱼是对的 1838 03:46:28,510 --> 03:46:32,800 你对死亡麻木之前 还有多少人会死在你怀里 1839 03:46:34,390 --> 03:46:36,270 你说话一点都不小心 1840 03:46:37,520 --> 03:46:40,640 你还要看着多少死人的眼睛 1841 03:46:41,350 --> 03:46:43,730 才会彻底心死 1842 03:46:44,270 --> 03:46:47,940 我已经心死了很久 1843 03:46:48,110 --> 03:46:50,030 但就连我也有忍耐极限 1844 03:46:50,200 --> 03:46:51,910 你敢跨过那极限 我发誓会… 1845 03:46:52,070 --> 03:46:54,370 你会怎样 布鲁斯杀了我 1846 03:46:55,080 --> 03:46:56,870 你不会杀我 1847 03:46:57,740 --> 03:46:59,710 我是你最好的朋友 1848 03:47:00,210 --> 03:47:04,250 而且 谁会摸你的蛋蛋 1849 03:47:06,250 --> 03:47:07,630 反正呢 1850 03:47:08,920 --> 03:47:10,470 你需要我 1851 03:47:11,510 --> 03:47:13,010 你… 1852 03:47:13,550 --> 03:47:19,180 让她死以后造成的这个世界 需要我帮你恢复原状 1853 03:47:21,770 --> 03:47:23,020 可怜的露易丝 1854 03:47:23,810 --> 03:47:26,610 她受尽了折磨 1855 03:47:32,490 --> 03:47:33,950 我常常在想 1856 03:47:34,910 --> 03:47:39,040 你在多少个平行时空毁灭世界 老实说… 1857 03:47:40,200 --> 03:47:44,370 都是因为你没种让自己死 1858 03:47:48,960 --> 03:47:52,760 所以我还是一样比你更成熟 1859 03:47:56,600 --> 03:47:58,060 停战吧 1860 03:47:58,890 --> 03:48:00,180 布鲁斯 1861 03:48:02,940 --> 03:48:07,020 只要你有这张牌 我们就停战 1862 03:48:10,070 --> 03:48:13,280 但你只要把它撕成一半 我就很乐意跟你谈谈 1863 03:48:13,450 --> 03:48:16,450 你为什么要派那个神奇小子 1864 03:48:18,200 --> 03:48:20,040 去做一个男人的工作 1865 03:48:23,460 --> 03:48:25,250 真的很好笑 1866 03:48:25,420 --> 03:48:28,460 你竟然敢说有多少人死在我怀里 1867 03:48:28,630 --> 03:48:30,340 当我把哈莉·奎茵抱在怀里 1868 03:48:30,500 --> 03:48:32,970 她满身是血 奄奄一息时 1869 03:48:33,130 --> 03:48:36,680 她用最后一口气哀求我 1870 03:48:36,840 --> 03:48:39,100 当我杀你的时候 1871 03:48:39,260 --> 03:48:42,680 别搞错 我一定会他妈的杀了你 1872 03:48:42,850 --> 03:48:44,690 她要我慢慢来 1873 03:48:45,890 --> 03:48:47,860 我会信守这个承诺 1874 03:49:19,640 --> 03:49:21,220 你真会演戏 1875 03:49:25,520 --> 03:49:27,100 差点就唬住我了 1876 03:49:46,580 --> 03:49:47,660 我们要躲在哪里 1877 03:49:47,830 --> 03:49:50,080 他永远不会料到的地方 1878 03:49:50,540 --> 03:49:53,460 还是觉得带着他是个好主意吗 1879 03:49:54,550 --> 03:49:56,090 你觉得呢 1880 03:50:02,180 --> 03:50:03,180 他找到我们了 1881 03:51:32,350 --> 03:51:33,810 我能帮你吗 1882 03:51:35,190 --> 03:51:38,690 你一定知道达克赛德不会放过地球 1883 03:51:38,860 --> 03:51:41,860 反生命方程序就在这里 1884 03:51:42,030 --> 03:51:44,820 我们得赶在他之前找到它 1885 03:51:44,990 --> 03:51:46,700 决战时刻即将到来 1886 03:51:46,990 --> 03:51:48,740 我是来帮忙的 1887 03:51:48,910 --> 03:51:51,160 抱歉 你是哪位 1888 03:51:51,330 --> 03:51:56,420 我有很多名字和很多形体 就像你一样… 1889 03:51:57,040 --> 03:51:59,670 我发现自己要对这世界负责 1890 03:51:59,840 --> 03:52:02,300 我也该为它而战了 1891 03:52:05,840 --> 03:52:07,970 我们是需要帮助 1892 03:52:08,180 --> 03:52:11,390 所以很高兴你来了 1893 03:52:12,640 --> 03:52:14,810 我没想过会看到地球的守护者 1894 03:52:14,980 --> 03:52:17,150 会团结一致 并肩作战 1895 03:52:18,150 --> 03:52:20,530 没有你就不会发生 布鲁斯 1896 03:52:21,990 --> 03:52:24,360 你父母会为你感到骄傲 1897 03:52:25,740 --> 03:52:26,910 希望如此 1898 03:52:32,960 --> 03:52:35,920 我会保持联系 1899 03:52:36,960 --> 03:52:41,000 对了 有些人叫我… 1900 03:52:41,170 --> 03:52:43,470 火星猎人 1901 03:52:51,180 --> 03:52:53,520 我猜我会再见到你 1902 03:53:23,960 --> 03:53:30,060 献给秋 ================================================ FILE: 2021/3-21-subtitle-rejust/从视频分离的字幕.srt ================================================ 1 00:00:00,046 --> 00:00:04,424 But before you see Justice League I wanted to say 2 00:00:04,425 --> 00:00:09,054 a huge thank you to all of the fans that made this possible. 3 00:00:09,055 --> 00:00:13,225 Your amazing and generous support for AFSP, 4 00:00:13,226 --> 00:00:18,480 ...your incredible passion for this vision that you're about 5 00:00:18,481 --> 00:00:20,984 to get a chance to see and that you made happen. 6 00:00:21,109 --> 00:00:26,697 So on behalf of myself and Debbie, thank you so much 7 00:00:26,698 --> 00:00:30,326 and check it out, it's streaming now. 8 00:06:45,076 --> 00:06:46,702 Alert the queen. 9 00:07:06,472 --> 00:07:07,682 Hyah! 10 00:09:37,289 --> 00:09:40,251 Bruce Vayne. 11 00:09:40,334 --> 00:09:42,002 Bruce Wayne. 12 00:09:59,812 --> 00:10:01,355 Talk. 13 00:10:02,648 --> 00:10:04,275 I believe there is a stranger. 14 00:10:04,358 --> 00:10:07,069 Comes to this village from the sea. 15 00:10:07,153 --> 00:10:10,239 He comes in the winter when the people are hungry. 16 00:10:10,322 --> 00:10:12,533 He brings fish. 17 00:10:12,658 --> 00:10:14,368 He comes on the king tide. 18 00:10:14,493 --> 00:10:15,578 That was last night. 19 00:10:22,126 --> 00:10:24,587 You have eyes, so see. 20 00:10:24,628 --> 00:10:26,297 Icebergs in the harbor. 21 00:10:26,422 --> 00:10:29,425 It's four months since the last ship got through. 22 00:10:29,508 --> 00:10:33,971 Well, this stranger doesn't come by ship. 23 00:10:40,519 --> 00:10:44,440 There are enemies coming from far away. 24 00:10:45,649 --> 00:10:47,276 I need warriors. 25 00:10:47,318 --> 00:10:51,030 This stranger, others like him. 26 00:10:51,155 --> 00:10:55,367 I'm building an alliance to defend ourselves. 27 00:10:55,493 --> 00:10:58,788 It's very important that I see this man. 28 00:10:59,747 --> 00:11:01,957 If this stranger exists, 29 00:11:02,082 --> 00:11:04,376 he'll give him your message. 30 00:11:04,502 --> 00:11:05,711 $5,000 American. 31 00:11:05,836 --> 00:11:07,463 Look, I'll give you $25,000 32 00:11:07,505 --> 00:11:10,674 to talk to this man right now, outside. 33 00:11:22,436 --> 00:11:27,691 How dare this dog speak to us like children. 34 00:11:27,858 --> 00:11:31,529 Ooh, magical man from the sea. 35 00:11:31,695 --> 00:11:34,573 We are poor, not stupid. 36 00:11:34,698 --> 00:11:36,408 Get out. 37 00:11:37,576 --> 00:11:38,994 I'm sorry. 38 00:11:39,036 --> 00:11:40,829 Can't do that. 39 00:11:40,913 --> 00:11:43,207 I'll leave after we've spoken. 40 00:11:47,878 --> 00:11:49,338 He said, "Get out." 41 00:12:08,399 --> 00:12:10,150 Arthur Curry. 42 00:12:10,276 --> 00:12:13,237 Also known as Protector of the Oceans. 43 00:12:13,821 --> 00:12:15,489 The Aquaman. 44 00:12:21,078 --> 00:12:22,705 So, let me get this straight. 45 00:12:22,746 --> 00:12:26,584 You do it dressed like a bat? Like an actual bat? 46 00:12:26,750 --> 00:12:28,502 Worked for 20 years in Gotham. 47 00:12:28,627 --> 00:12:30,254 Oh, that shithole. 48 00:12:30,421 --> 00:12:32,256 When the fight comes, we'll need you. 49 00:12:32,381 --> 00:12:34,800 - Don't count on it, Batman. - Why not? 50 00:12:34,925 --> 00:12:37,011 'Cause I don't like you coming here, digging into my business 51 00:12:37,136 --> 00:12:39,763 and getting into my life. I want to be left alone. 52 00:12:39,889 --> 00:12:41,473 Is that why you do this? 53 00:12:41,599 --> 00:12:43,100 Why you help these people out here in the middle of nowhere? 54 00:12:43,225 --> 00:12:44,435 I've read the stories. 55 00:12:44,560 --> 00:12:46,812 Your good deeds you think no one sees. 56 00:12:46,937 --> 00:12:48,314 You'll join us. 57 00:12:48,439 --> 00:12:50,441 "Strong man is strongest alone." 58 00:12:50,524 --> 00:12:51,984 You ever heard that? 59 00:12:52,109 --> 00:12:53,569 You ever hear of Superman? 60 00:12:53,694 --> 00:12:55,321 He died fighting next to me. 61 00:12:56,614 --> 00:12:57,948 My point exactly. 62 00:12:58,115 --> 00:13:00,409 He believed we were stronger together. 63 00:13:00,492 --> 00:13:02,036 We owe it to him. 64 00:13:02,161 --> 00:13:04,496 I don't owe anyone anything. 65 00:13:12,046 --> 00:13:14,798 Dressed like a bat. 66 00:13:14,882 --> 00:13:16,925 You're out of your mind, Bruce Wayne. 67 00:14:45,222 --> 00:14:46,557 Move over, Dusty. 68 00:15:42,321 --> 00:15:45,407 My God, Master Wayne, but this is cold. 69 00:15:45,449 --> 00:15:49,995 Maybe we can catch the next king tide in Jamaica? 70 00:15:50,120 --> 00:15:52,331 Might be a metahuman or two in Fiji. 71 00:15:52,456 --> 00:15:54,124 Costa Rica's nice. 72 00:15:54,291 --> 00:15:55,793 I found him. 73 00:15:58,712 --> 00:16:00,798 He said no. 74 00:16:00,881 --> 00:16:03,300 So the draft stands at naught for two? 75 00:16:05,511 --> 00:16:08,305 Maybe a man who broods in a cave for a living 76 00:16:08,472 --> 00:16:12,184 isn't cut out to be a recruiter. Hmm? 77 00:16:31,829 --> 00:16:33,539 That's $10, please. 78 00:16:38,210 --> 00:16:42,881 Let us go now 79 00:16:43,006 --> 00:16:50,139 My darling companion 80 00:16:57,020 --> 00:17:01,358 Set out for the 81 00:17:02,693 --> 00:17:09,700 Distant skies... 82 00:17:11,785 --> 00:17:12,786 Good morning, Miss Lane. 83 00:17:12,911 --> 00:17:14,288 Jerry, hi. 84 00:17:15,038 --> 00:17:16,957 Wow. 85 00:17:17,082 --> 00:17:18,417 You don't miss a day, do you? 86 00:17:19,835 --> 00:17:21,712 Like it here. 87 00:17:27,467 --> 00:17:34,600 They told us our gods would outlive us 88 00:17:34,725 --> 00:17:40,772 They told us our dreams would outlive us 89 00:17:43,108 --> 00:17:49,573 They told us our gods would outlive us 90 00:17:50,949 --> 00:17:56,914 But they lied 91 00:19:07,234 --> 00:19:08,318 Excuse me. 92 00:19:09,611 --> 00:19:10,988 Move! 93 00:19:21,665 --> 00:19:23,375 Move it! Move it! 94 00:19:29,423 --> 00:19:32,134 - No, mate, don't shoot! - Move, move! 95 00:19:32,217 --> 00:19:33,844 Get the fuck over there! 96 00:19:35,846 --> 00:19:37,472 Move! All of ya! 97 00:19:47,816 --> 00:19:49,985 Line them up along the wall. 98 00:19:50,068 --> 00:19:52,696 Keep them quiet. 99 00:19:52,821 --> 00:19:55,282 - Keep quiet! - Shut up! Shut up! 100 00:19:55,407 --> 00:19:56,867 Shut them up too! 101 00:19:59,745 --> 00:20:02,414 We'll be making a statement shortly. 102 00:20:02,539 --> 00:20:04,416 Until then, if I see any movement, 103 00:20:04,541 --> 00:20:06,668 you'll have a lot of dead kids on your hands. 104 00:20:21,558 --> 00:20:23,185 Should I take him? 105 00:20:23,268 --> 00:20:24,936 Hold your fire. 106 00:20:26,396 --> 00:20:27,606 They've got kids in there. 107 00:20:29,441 --> 00:20:31,276 Yeah, he's not bluffing, chief. 108 00:20:31,401 --> 00:20:33,695 St. Brigid's had a school trip today. 109 00:20:57,636 --> 00:20:59,429 Quiet! Shut up! 110 00:21:04,518 --> 00:21:06,978 Down with the modern world. 111 00:21:07,104 --> 00:21:08,688 Back to the Dark Ages. 112 00:21:14,111 --> 00:21:15,070 Quiet! 113 00:21:16,947 --> 00:21:19,783 I said shut your fucking mouth. 114 00:21:32,754 --> 00:21:35,590 Who are you? 115 00:21:35,632 --> 00:21:38,677 The Lasso of Hestia compels you to reveal the truth. 116 00:21:39,302 --> 00:21:41,179 Now, who are you? 117 00:21:41,304 --> 00:21:44,516 We're a small group of reactionary terrorists 118 00:21:44,641 --> 00:21:46,101 who wanna turn back the clock in Europe 119 00:21:46,226 --> 00:21:48,645 - a thousand years. - Boring. Why the hostages? 120 00:21:48,812 --> 00:21:50,313 We have no demands. 121 00:21:50,397 --> 00:21:52,315 We're just stalling the police while we do it. 122 00:21:52,399 --> 00:21:53,859 While you do what? 123 00:21:53,984 --> 00:21:57,988 You're too late. The countdown's already begun. 124 00:21:58,071 --> 00:22:01,616 In a few minutes, four city blocks... 125 00:22:02,909 --> 00:22:05,996 ...while the world watches. 126 00:23:45,595 --> 00:23:46,763 No! 127 00:23:46,888 --> 00:23:48,807 Like lambs to the slaughter. 128 00:24:37,397 --> 00:24:39,482 I don't believe it. 129 00:24:39,607 --> 00:24:40,775 Believe it. 130 00:25:16,102 --> 00:25:19,230 Is everyone all right? Are you okay? 131 00:25:19,356 --> 00:25:21,316 Good. It's okay. 132 00:25:21,358 --> 00:25:23,693 It's okay. It's over. You can stand up. 133 00:25:23,818 --> 00:25:25,028 It's all good. 134 00:25:25,195 --> 00:25:27,238 It's over now. Are you okay? 135 00:25:27,364 --> 00:25:29,407 You okay? Good. 136 00:25:34,996 --> 00:25:36,373 Are you okay, princess? 137 00:25:39,751 --> 00:25:41,753 Can I be like you someday? 138 00:25:43,755 --> 00:25:46,383 You can be anything you want to be. 139 00:25:48,385 --> 00:25:50,804 Come on. Let's go. 140 00:26:33,513 --> 00:26:34,722 Any changes today? 141 00:26:34,764 --> 00:26:36,349 No, my Queen. 142 00:26:37,976 --> 00:26:39,894 The Mother Box has awoken, 143 00:26:39,978 --> 00:26:42,981 yet nothing has happened. 144 00:26:43,106 --> 00:26:45,358 It has slept for thousands of years 145 00:26:45,483 --> 00:26:47,444 since the First Age. 146 00:26:47,569 --> 00:26:48,945 Why did it wake at all? 147 00:26:56,536 --> 00:26:58,580 This is the first time it's gone quiet 148 00:26:58,663 --> 00:26:59,914 since the crack appeared. 149 00:26:59,956 --> 00:27:02,876 Maybe it's going back to sleep. 150 00:27:06,838 --> 00:27:08,757 Evil does not sleep. 151 00:27:09,507 --> 00:27:11,468 It waits. 152 00:27:12,844 --> 00:27:14,971 Something is coming. 153 00:27:20,018 --> 00:27:21,519 Prepare for battle! 154 00:27:47,378 --> 00:27:49,714 Amazons, on your marks! 155 00:27:49,839 --> 00:27:51,216 Ready! 156 00:28:16,449 --> 00:28:18,409 Defenders. 157 00:28:19,994 --> 00:28:24,666 They have failed 100,000 worlds. 158 00:28:24,749 --> 00:28:26,334 They always fail. 159 00:28:28,169 --> 00:28:32,924 I've come to enlighten you to the great darkness. 160 00:28:33,049 --> 00:28:36,094 I will bathe in your fear. 161 00:28:37,595 --> 00:28:40,098 Daughters of Themyscira, 162 00:28:41,224 --> 00:28:42,850 show him your fear! 163 00:28:42,976 --> 00:28:45,478 We have no fear! 164 00:29:04,789 --> 00:29:06,416 Gather the legions! 165 00:29:07,417 --> 00:29:08,543 Go with her! 166 00:29:08,626 --> 00:29:09,919 You must seal the cage! 167 00:29:10,086 --> 00:29:12,380 - Go! - Phillipus! 168 00:29:38,990 --> 00:29:40,283 No! 169 00:29:52,795 --> 00:29:54,005 Behind you! 170 00:29:57,800 --> 00:29:59,177 Ahhh! 171 00:30:01,387 --> 00:30:02,472 Epione. 172 00:30:04,265 --> 00:30:06,476 Honor us. It's right. 173 00:30:09,479 --> 00:30:10,688 Seal it. 174 00:30:15,985 --> 00:30:18,613 Ready the hammers! 175 00:30:30,875 --> 00:30:32,961 Seal it now! 176 00:32:07,305 --> 00:32:08,848 Guard it with your life. 177 00:32:08,973 --> 00:32:10,933 - Yes, my Queen. - Keep it moving. 178 00:32:11,017 --> 00:32:12,477 Hyah! Hyah! 179 00:33:35,601 --> 00:33:37,603 Hyah! 180 00:34:57,058 --> 00:34:58,643 Got it! Go! 181 00:34:59,769 --> 00:35:01,062 Hyah! 182 00:35:21,374 --> 00:35:25,711 Oh, noble Queen. Why do you fight? 183 00:35:28,631 --> 00:35:30,466 You can't save her. 184 00:35:30,549 --> 00:35:33,302 You can't save any of them. 185 00:35:36,472 --> 00:35:40,601 The great darkness begins. 186 00:35:40,643 --> 00:35:42,436 Amazons! 187 00:35:52,655 --> 00:35:55,491 Yes, we will find the others. 188 00:35:57,285 --> 00:35:59,829 Draw! 189 00:36:01,998 --> 00:36:03,332 Loose! 190 00:37:01,223 --> 00:37:03,184 He's gone back to his universe. 191 00:37:03,267 --> 00:37:04,435 No. 192 00:37:06,771 --> 00:37:09,273 He's gone to the lands of men 193 00:37:09,398 --> 00:37:12,568 to find the other two boxes. 194 00:37:12,651 --> 00:37:15,738 We have to light the ancient warning fire. 195 00:37:15,821 --> 00:37:19,408 The fire has not burned for 5,000 years. 196 00:37:19,533 --> 00:37:21,077 Men won't know what it means. 197 00:37:21,994 --> 00:37:23,496 Men won't. 198 00:37:25,122 --> 00:37:26,624 She will. 199 00:37:57,279 --> 00:37:59,949 It's toxic. 200 00:38:00,116 --> 00:38:01,826 That's good. 201 00:38:22,805 --> 00:38:23,764 Go! 202 00:38:23,889 --> 00:38:26,142 Follow the scent of the Mother Boxes. 203 00:38:26,267 --> 00:38:27,726 Find the missing two. 204 00:38:27,852 --> 00:38:31,772 Once they are found, The Unity will be formed. 205 00:38:31,856 --> 00:38:34,817 This world will join the others. 206 00:38:36,569 --> 00:38:38,654 He will be pleased. 207 00:38:38,737 --> 00:38:41,824 He will see my worth again. 208 00:38:44,410 --> 00:38:46,036 Hey. 209 00:38:46,162 --> 00:38:49,039 Anything on that kid from the liquor store? 210 00:38:49,165 --> 00:38:50,666 Possibly. 211 00:38:51,333 --> 00:38:53,502 "Possibly." 212 00:38:53,627 --> 00:38:56,046 If I had a dollar for every "possibly." 213 00:38:56,172 --> 00:38:59,049 Yeah, it would make you even more insufferable. 214 00:39:01,886 --> 00:39:04,680 Facial scan might have got a hit on him, 215 00:39:04,763 --> 00:39:07,016 our disappearing man. 216 00:39:07,141 --> 00:39:11,896 One Mr. Barry Allen from Central City. 217 00:39:12,021 --> 00:39:13,522 Might be another false positive, 218 00:39:13,647 --> 00:39:14,982 you'll have to give me a little time 219 00:39:15,065 --> 00:39:17,651 - to confirm. - We don't have any more time. 220 00:39:19,195 --> 00:39:20,821 Master Wayne, 221 00:39:20,946 --> 00:39:23,407 you've been working as if there's no tomorrow 222 00:39:23,532 --> 00:39:24,617 to build this team 223 00:39:24,742 --> 00:39:26,619 of people you can't even find. 224 00:39:26,744 --> 00:39:28,871 I found one. I found two, including Diana. 225 00:39:28,954 --> 00:39:30,998 Just because Lex Luthor says 226 00:39:31,081 --> 00:39:32,958 the planet's in danger of attack? 227 00:39:33,083 --> 00:39:35,252 This has nothing to do with Lex Luthor. 228 00:39:35,377 --> 00:39:36,712 It has to do with him. 229 00:39:36,795 --> 00:39:40,841 I made a promise to him on his grave. 230 00:39:40,925 --> 00:39:44,053 I spent a lot of time trying to divide us. 231 00:39:44,178 --> 00:39:47,723 I need to bring us together and make this right. 232 00:39:47,848 --> 00:39:50,559 Well, it's been some time since Luthor's warning. 233 00:39:50,726 --> 00:39:54,897 No attacks. No barbarians at the gate. 234 00:39:55,022 --> 00:39:58,526 Maybe these barbarians don't use a gate. 235 00:39:58,609 --> 00:40:00,277 Maybe they're already here. 236 00:40:04,156 --> 00:40:06,075 Keep looking. What else do you have? 237 00:40:44,989 --> 00:40:46,573 Lab's all yours, Howard. 238 00:40:46,699 --> 00:40:48,450 11:30. 239 00:40:48,534 --> 00:40:50,035 Early night for you, Silas. 240 00:40:50,160 --> 00:40:52,621 Yes, early night. 241 00:40:52,746 --> 00:40:53,956 Tell your family I said hello. 242 00:41:29,366 --> 00:41:30,993 What the... 243 00:41:34,705 --> 00:41:35,831 Jesus. 244 00:42:49,113 --> 00:42:51,907 The Arrow of Artemis. 245 00:42:52,032 --> 00:42:54,785 It will reach the lands of men. 246 00:43:04,336 --> 00:43:05,587 Sky torch, 247 00:43:05,754 --> 00:43:07,423 hero beacon, 248 00:43:07,506 --> 00:43:09,049 scatter the darkness. 249 00:43:09,174 --> 00:43:12,761 Burn as you burned in days before. 250 00:43:14,096 --> 00:43:17,933 Show her the darkness before the daylight of history. 251 00:43:18,058 --> 00:43:21,895 Warn my daughter that war has come 252 00:43:23,230 --> 00:43:24,940 and protect her. 253 00:43:49,548 --> 00:43:51,967 Return to me, Diana. 254 00:44:30,339 --> 00:44:31,861 What did you do 255 00:44:31,862 --> 00:44:33,383 this weekend, Diana? 256 00:44:33,509 --> 00:44:35,469 Nothing very interesting. 257 00:44:35,594 --> 00:44:38,263 That's all you ever tell us. 258 00:44:38,388 --> 00:44:41,767 What can I do? I'm not that exciting. 259 00:44:41,892 --> 00:44:46,063 You might as well disappear when you walk out of here. 260 00:44:50,567 --> 00:44:51,568 Again? 261 00:44:51,693 --> 00:44:53,779 - What is it? - Now what? 262 00:44:53,904 --> 00:44:57,032 Budget cuts, tomb raiders. 263 00:44:57,115 --> 00:44:59,868 Now add to the list "arson." 264 00:45:01,411 --> 00:45:03,163 Yes, good morning 265 00:45:03,288 --> 00:45:04,748 From the isle of Crete. 266 00:45:04,873 --> 00:45:06,375 As you can see behind me, 267 00:45:06,458 --> 00:45:08,710 an enormous bonfire is burning. 268 00:45:08,836 --> 00:45:11,171 This fire has been burning through the night. 269 00:45:11,255 --> 00:45:12,589 We're now into the morning 270 00:45:12,714 --> 00:45:15,092 and we are at least five miles away. 271 00:45:15,217 --> 00:45:18,512 And we can still see it burning as we speak. 272 00:45:18,595 --> 00:45:21,890 This has baffled locals and government authorities alike 273 00:45:22,015 --> 00:45:23,850 here at this historical site 274 00:45:23,934 --> 00:45:26,395 of the so-called shrine of the Amazons. 275 00:45:26,562 --> 00:45:28,355 Now, locals and government officials are baffled as to 276 00:45:28,438 --> 00:45:30,857 - what may have caused this. - Invasion. 277 00:45:39,783 --> 00:45:40,909 Ryan. 278 00:45:41,034 --> 00:45:42,286 - Hiya, Doc. - Is the... 279 00:45:42,411 --> 00:45:44,413 No damage to the electron-laser. 280 00:45:44,538 --> 00:45:46,790 - Uh, Dr. Silas Stone? - Yeah. 281 00:45:46,915 --> 00:45:48,750 - Ryan Choi? - That's us. 282 00:45:48,876 --> 00:45:51,086 Um, who did this? Did they steal anything? 283 00:45:51,211 --> 00:45:52,713 They took whatever was in here. 284 00:45:52,754 --> 00:45:56,842 That? Oh, that wasn't stolen. Was it, Dr. Stone? 285 00:45:56,967 --> 00:45:59,595 No. That was misplaced a while ago. 286 00:45:59,678 --> 00:46:03,724 Object 6-1-9-8-2. Department of Defense Archives. 287 00:46:03,765 --> 00:46:05,934 - Mmm-hmm. - What was it? 288 00:46:06,059 --> 00:46:07,019 I don't know. 289 00:46:07,144 --> 00:46:08,437 You don't know? 290 00:46:08,604 --> 00:46:10,606 I don't know, which was why I was studying it. 291 00:46:10,731 --> 00:46:12,357 What's your rank, Doctor? 292 00:46:12,482 --> 00:46:14,651 Ryan, would you, uh, do the honors? 293 00:46:14,776 --> 00:46:16,278 - Sure. Okay. - Thanks. 294 00:46:16,403 --> 00:46:18,906 Civilian. STARLABS is a private contractor. 295 00:46:18,989 --> 00:46:20,115 We work for the DoD. 296 00:46:20,240 --> 00:46:23,076 We advise them on xeno-science. 297 00:46:23,160 --> 00:46:24,828 "Xeno-science"? 298 00:46:24,953 --> 00:46:26,955 Alien technology. 299 00:46:33,879 --> 00:46:35,923 For example, 300 00:46:36,048 --> 00:46:37,674 the Superman ship. 301 00:46:46,016 --> 00:46:47,309 Eight people 302 00:46:47,392 --> 00:46:49,102 never signed out of the lab last night, Doctor. 303 00:46:49,144 --> 00:46:50,354 Cleaning staff, guards, 304 00:46:50,479 --> 00:46:52,648 a few of your research scientists. 305 00:46:52,731 --> 00:46:53,690 They were abducted. 306 00:46:54,983 --> 00:46:56,109 Are you sure? 307 00:46:56,234 --> 00:46:58,612 Witness saw it all. He escaped. 308 00:46:58,695 --> 00:47:02,199 He's here in quarantine now, working on an ID sketch. 309 00:47:05,035 --> 00:47:09,498 Any idea who or what that might be? 310 00:47:29,434 --> 00:47:31,603 The box isn't safe here. 311 00:47:34,064 --> 00:47:35,524 Victor, 312 00:47:35,607 --> 00:47:37,818 they came looking for it at the lab. 313 00:47:37,901 --> 00:47:42,656 People were taken by some kind of monster or something. 314 00:47:45,283 --> 00:47:47,369 You know a lot about monsters, 315 00:47:47,953 --> 00:47:49,454 don't you? 316 00:47:55,752 --> 00:47:58,547 Especially how to make 'em. 317 00:50:58,393 --> 00:51:02,272 Mayday! Mayday, mayday! 318 00:51:03,773 --> 00:51:07,235 My hull is breached. I'm going down. 319 00:51:12,282 --> 00:51:14,326 Mayday! 320 00:51:14,451 --> 00:51:16,620 Is there anybody out there? 321 00:51:21,917 --> 00:51:22,959 Ahh! 322 00:51:56,952 --> 00:51:58,119 Whiskey. 323 00:52:07,087 --> 00:52:09,881 Tell him to respect the storm next time. 324 00:52:19,099 --> 00:52:20,267 It's on him. 325 00:52:42,497 --> 00:52:46,042 The starry heavens above me 326 00:52:48,753 --> 00:52:52,048 The mortal law within 327 00:52:55,301 --> 00:52:58,388 So the world appears 328 00:53:01,141 --> 00:53:04,686 Through this mist of tears 329 00:53:07,439 --> 00:53:10,400 There is a kingdom 330 00:53:10,525 --> 00:53:13,486 There is a king 331 00:53:13,570 --> 00:53:16,239 And he lives without 332 00:53:16,364 --> 00:53:19,367 And he lives within 333 00:53:19,492 --> 00:53:22,537 There is a kingdom 334 00:53:22,662 --> 00:53:25,582 There is a king 335 00:53:25,707 --> 00:53:28,668 There is a king 336 00:53:28,752 --> 00:53:32,047 And he is everything 337 00:54:48,331 --> 00:54:50,208 King who would be man. 338 00:54:50,333 --> 00:54:53,795 Son of a human father and Queen of the Seas. 339 00:54:54,546 --> 00:54:56,131 All the time I've wasted 340 00:54:56,297 --> 00:54:59,676 trying to keep the promise I made to your mother. 341 00:55:01,636 --> 00:55:02,971 Are you finished, old man? 342 00:55:03,054 --> 00:55:05,473 You never sleep in the same place twice, 343 00:55:05,640 --> 00:55:08,560 yet you keep coming back here. 344 00:55:10,395 --> 00:55:12,355 I like it. It's quiet. 345 00:55:12,480 --> 00:55:14,357 It's your inheritance. 346 00:55:14,482 --> 00:55:16,693 You're the rightful king of Atlantis. 347 00:55:17,694 --> 00:55:18,987 Our people suffer. 348 00:55:19,112 --> 00:55:20,905 Your people. 349 00:55:21,030 --> 00:55:24,659 A brutal, petty, superstitious race. 350 00:55:24,784 --> 00:55:26,953 Is the surface any different? 351 00:55:27,036 --> 00:55:29,205 Nobody calls me King of the Surface. 352 00:55:30,331 --> 00:55:32,459 What do you want, Vulko? 353 00:55:32,542 --> 00:55:33,793 Guards near the stronghold 354 00:55:33,835 --> 00:55:35,503 have been disappearing. 355 00:55:35,587 --> 00:55:37,130 Snatchers from above. 356 00:55:37,213 --> 00:55:38,464 Talk to King Orm. 357 00:55:38,548 --> 00:55:39,966 - Your brother? - Half-brother. 358 00:55:40,049 --> 00:55:43,428 He's trying to fan the flames of war with the surface. 359 00:55:43,553 --> 00:55:46,139 He lies. 360 00:55:46,222 --> 00:55:48,475 The snatchers have come from the dark place. 361 00:55:48,558 --> 00:55:51,019 They're looking for it. 362 00:55:51,102 --> 00:55:55,482 The Mother Box our people guard is not safe. 363 00:55:55,565 --> 00:55:58,067 Go to the stronghold of Atlantis. 364 00:55:58,193 --> 00:55:59,694 Protect the box. 365 00:56:00,570 --> 00:56:01,863 The time has come. 366 00:56:03,865 --> 00:56:05,992 Take up your mother's trident. 367 00:56:17,003 --> 00:56:20,882 You can't turn your back on the world forever, Arthur. 368 00:56:21,674 --> 00:56:24,677 Above or below. 369 00:56:53,831 --> 00:56:55,542 DeSaad. 370 00:56:55,583 --> 00:56:59,754 DeSaad! I call to thee. 371 00:57:08,596 --> 00:57:13,768 Steppenwolf, have you begun the conquest? 372 00:57:13,893 --> 00:57:16,938 This world is divided. 373 00:57:17,021 --> 00:57:18,606 They are a primitive species. 374 00:57:18,773 --> 00:57:21,234 Unevolved and at war with one another. 375 00:57:21,317 --> 00:57:24,070 Too separate to be one. 376 00:57:24,112 --> 00:57:26,614 Their free will must be ripped from them, 377 00:57:26,698 --> 00:57:28,616 like the other worlds. 378 00:57:28,700 --> 00:57:32,996 Given absolution in one glorious belief, 379 00:57:33,121 --> 00:57:34,872 to serve him. 380 00:57:35,498 --> 00:57:37,792 The Mother Boxes? 381 00:57:37,959 --> 00:57:40,920 I have found one of the three. 382 00:57:41,004 --> 00:57:43,589 The one that woke and called to me. 383 00:57:43,673 --> 00:57:45,133 The other two still sleep, 384 00:57:45,258 --> 00:57:49,345 but the parademons feel their presence. 385 00:57:49,470 --> 00:57:50,930 They fly, 386 00:57:51,014 --> 00:57:54,434 they search, they take prisoners who carry the scent, 387 00:57:54,517 --> 00:57:59,814 while I build a stronghold in the name of his glory. 388 00:58:00,315 --> 00:58:02,191 Yes. 389 00:58:03,318 --> 00:58:07,155 Mighty Steppenwolf, 390 00:58:07,238 --> 00:58:11,909 who might have sat here by the side of the great one. 391 00:58:13,703 --> 00:58:18,291 But undone by his self-pride. 392 00:58:19,500 --> 00:58:20,960 DeSaad... 393 00:58:21,878 --> 00:58:24,839 I fall before you. 394 00:58:24,964 --> 00:58:26,841 Let me make a plea to him 395 00:58:26,924 --> 00:58:28,843 that I may come home 396 00:58:29,010 --> 00:58:32,055 after I take this world in his name. 397 00:58:32,180 --> 00:58:34,682 You betrayed him. 398 00:58:35,850 --> 00:58:37,477 Your own family. 399 00:58:37,560 --> 00:58:39,771 I saw my mistake. 400 00:58:39,896 --> 00:58:42,357 I slaughtered those who sought his throne. 401 00:58:42,482 --> 00:58:47,904 You still owe the great one 50,000 more worlds. 402 00:58:48,863 --> 00:58:50,990 He will hear your plea 403 00:58:51,032 --> 00:58:53,409 when you pay your debt. 404 00:58:56,245 --> 00:58:59,415 The Mother Boxes will be found and united. 405 00:59:00,416 --> 00:59:02,502 No protectors here. 406 00:59:02,627 --> 00:59:06,005 No Lanterns, no Kryptonian. 407 00:59:06,089 --> 00:59:10,009 This world will fall, like all the others. 408 00:59:10,885 --> 00:59:12,845 For Darkseid. 409 00:59:15,848 --> 00:59:18,184 For Darkseid. 410 00:59:39,247 --> 00:59:41,165 You know, I paid millions of dollars 411 00:59:41,290 --> 00:59:42,917 for this building's security. 412 00:59:43,042 --> 00:59:44,752 You got your money's worth. 413 00:59:44,877 --> 00:59:47,338 Took me almost a minute to disable it. 414 00:59:48,798 --> 00:59:50,216 Hi there. 415 00:59:51,801 --> 00:59:52,969 A new toy? 416 00:59:53,761 --> 00:59:56,013 Prototype troop carrier. 417 00:59:57,598 --> 00:59:59,058 I once knew a man 418 00:59:59,100 --> 01:00:01,727 who would have loved to fly it. 419 01:00:01,811 --> 01:00:03,604 The best minds at Wayne Aerospace 420 01:00:03,771 --> 01:00:04,981 couldn't make it fly. 421 01:00:05,898 --> 01:00:07,567 But you can? 422 01:00:07,650 --> 01:00:09,277 I have no choice. 423 01:00:09,360 --> 01:00:12,196 I need more range and I need more cargo. 424 01:00:12,321 --> 01:00:14,407 I think there's an attack coming. 425 01:00:14,490 --> 01:00:16,284 Not coming, Bruce. 426 01:00:16,951 --> 01:00:19,620 It's already here. 427 01:00:19,745 --> 01:00:21,414 From what I've learned, 428 01:00:21,456 --> 01:00:24,417 they are things from another universe. 429 01:00:24,459 --> 01:00:26,794 They serve a dark power. 430 01:00:26,919 --> 01:00:28,713 An old power. 431 01:00:28,838 --> 01:00:30,131 What do they want? 432 01:00:30,214 --> 01:00:34,302 To invade. To conquer. 433 01:00:34,385 --> 01:00:38,931 They came here once before, long ago. 434 01:00:43,895 --> 01:00:46,272 A great armada appeared in the sky, 435 01:00:46,355 --> 01:00:48,858 laying waste to all who opposed it. 436 01:00:48,983 --> 01:00:53,321 The leader of the invaders was a being called Darkseid. 437 01:00:53,404 --> 01:00:58,409 A name cursed and feared in every universe. 438 01:00:58,534 --> 01:01:02,622 Darkseid was met in battle by Earth's defenders. 439 01:01:02,663 --> 01:01:05,458 The old gods, men... 440 01:01:05,541 --> 01:01:09,003 Atlanteans before their descent into the sea... 441 01:01:11,172 --> 01:01:15,176 Amazons before their betrayal and enslavement 442 01:01:15,259 --> 01:01:17,803 and guardians from the stars. 443 01:01:17,887 --> 01:01:19,805 - Their histories - had taught them 444 01:01:19,889 --> 01:01:21,599 Not to trust each other, 445 01:01:21,724 --> 01:01:23,810 not to hope for an alliance. 446 01:01:23,935 --> 01:01:26,145 To fight apart. 447 01:02:14,777 --> 01:02:17,822 As Darkseid waged war on Earth, 448 01:02:17,947 --> 01:02:19,282 he found a secret there. 449 01:02:19,407 --> 01:02:23,202 A power hidden in the infinity of space. 450 01:02:23,286 --> 01:02:24,787 He called forth mystics 451 01:02:24,912 --> 01:02:28,207 who worshipped and controlled three objects... 452 01:02:28,291 --> 01:02:29,709 the Mother Boxes. 453 01:02:29,792 --> 01:02:31,377 Wait, wait, wait. 454 01:02:31,460 --> 01:02:32,253 "Mother Boxes"? 455 01:02:32,420 --> 01:02:35,506 Indestructible living machines, 456 01:02:35,631 --> 01:02:38,467 made from a science so advanced, 457 01:02:38,593 --> 01:02:40,595 it looks like sorcery. 458 01:02:40,678 --> 01:02:42,055 To conquer, three boxes 459 01:02:42,056 --> 01:02:43,431 have to synchronize 460 01:02:43,514 --> 01:02:46,726 and join together into The Unity. 461 01:02:46,809 --> 01:02:49,937 The Unity cleanses a planet with fire, 462 01:02:50,021 --> 01:02:53,733 transforming it into a copy of the enemy's world. 463 01:02:53,816 --> 01:02:57,653 All who live become servants of Darkseid. 464 01:02:57,778 --> 01:03:00,740 Alive but drained of life. 465 01:03:00,823 --> 01:03:02,325 Parademons. 466 01:03:03,367 --> 01:03:05,536 Amazons! 467 01:03:11,459 --> 01:03:13,002 With me! 468 01:03:42,323 --> 01:03:44,950 But before The Unity could synchronize, 469 01:03:45,034 --> 01:03:46,994 the defenders of Earth attacked 470 01:03:47,161 --> 01:03:48,871 and fought as one. 471 01:03:48,996 --> 01:03:52,041 Amazons alongside Atlanteans. 472 01:03:52,166 --> 01:03:53,668 Zeus and his son Ares 473 01:03:53,793 --> 01:03:57,463 alongside the guardians from the sky. 474 01:03:57,546 --> 01:04:00,800 A golden Age of Heroes fighting together 475 01:04:00,925 --> 01:04:02,468 to defend life on Earth. 476 01:05:58,834 --> 01:06:01,670 They did what no world had ever done. 477 01:06:01,796 --> 01:06:04,131 Sent the enemies back into the stars. 478 01:06:06,550 --> 01:06:10,304 The three Mother Boxes never synchronized. 479 01:06:10,471 --> 01:06:12,140 -The Unity never came to pass. 480 01:06:13,933 --> 01:06:16,477 But, in their retreat, 481 01:06:16,602 --> 01:06:19,688 the boxes were left behind on Earth. 482 01:06:19,814 --> 01:06:23,776 They grew weak. Dogs without masters 483 01:06:25,653 --> 01:06:27,154 falling asleep, 484 01:06:27,279 --> 01:06:29,657 awaiting their return. 485 01:06:29,782 --> 01:06:32,284 Fading from the view of the enemy, 486 01:06:32,326 --> 01:06:35,663 anonymous among a trillion worlds. 487 01:06:52,429 --> 01:06:55,975 The defenders of Earth made a vow. 488 01:06:56,016 --> 01:06:59,311 Men, Atlanteans, and Amazons. 489 01:06:59,353 --> 01:07:01,230 Each would enshrine and guard 490 01:07:01,355 --> 01:07:03,149 one of the three sleeping Mother Boxes 491 01:07:03,232 --> 01:07:07,027 according to the rites and rituals of their culture 492 01:07:07,194 --> 01:07:09,697 in case a box should ever wake again 493 01:07:09,864 --> 01:07:11,740 to call out to the planet Apokolips 494 01:07:11,866 --> 01:07:13,534 to return and conquer 495 01:07:13,617 --> 01:07:17,621 the only world Darkseid had ever lost. 496 01:08:33,447 --> 01:08:36,575 Something woke the box my people guard. 497 01:08:36,700 --> 01:08:38,744 It called out to the dark place... 498 01:08:38,869 --> 01:08:41,580 to one of Darkseid's conquerors. 499 01:08:42,331 --> 01:08:44,583 The enemy is here. 500 01:08:44,667 --> 01:08:46,418 If he's here, where is he? 501 01:08:46,502 --> 01:08:48,629 He'll be searching for the other two boxes. 502 01:08:48,754 --> 01:08:51,757 Hiding until he has all three. Until he's ready. 503 01:08:51,840 --> 01:08:56,220 Then we have to be ready. You, me, the others. 504 01:08:56,345 --> 01:08:59,431 They said the Age of Heroes would never come again. 505 01:08:59,473 --> 01:09:01,100 No, it will. 506 01:09:01,183 --> 01:09:02,935 It has to. 507 01:09:04,561 --> 01:09:08,315 The others. Where are they? 508 01:09:30,212 --> 01:09:31,171 Am I late? 509 01:09:31,338 --> 01:09:33,841 No, I'm so late. I'm very late. 510 01:09:33,924 --> 01:09:35,426 Oh, hey, buddy. Hey. 511 01:09:35,551 --> 01:09:37,302 Oh. No. 512 01:09:37,386 --> 01:09:40,347 Okay, bye. Okay. 513 01:09:40,472 --> 01:09:42,850 I'm so sorry. 514 01:09:42,933 --> 01:09:44,310 I'm late. 515 01:09:49,565 --> 01:09:50,983 - Are you, uh... - I'm... 516 01:09:51,066 --> 01:09:52,943 I'm so sorry I'm so late. I didn't mean to be so late. 517 01:09:53,068 --> 01:09:54,653 I'm me and I'm here and I'm so sorry I'm late. 518 01:09:54,737 --> 01:09:56,030 Essentially, the bus didn't come, 519 01:09:56,196 --> 01:09:57,323 then the bus did come, 520 01:09:57,406 --> 01:09:58,365 but then there was this old woman 521 01:09:58,490 --> 01:09:59,658 counting change for the fare, 522 01:09:59,742 --> 01:10:01,076 like, nickel, penny, nickel, penny. 523 01:10:01,201 --> 01:10:02,870 Like, jeez Louise, let this woman on the bus. 524 01:10:02,995 --> 01:10:04,121 She's 107 years old, 525 01:10:04,288 --> 01:10:05,831 these are some of her last few moments of life. 526 01:10:05,956 --> 01:10:07,249 Resume. 527 01:10:07,374 --> 01:10:08,375 Resume. 528 01:10:11,545 --> 01:10:13,547 Come on. 529 01:10:16,091 --> 01:10:17,176 Come on. 530 01:10:17,301 --> 01:10:18,844 From the French, of course. 531 01:10:18,886 --> 01:10:22,056 "Resume," I believe, is a past participle of... 532 01:10:27,478 --> 01:10:29,146 Uh, wow. That's no good. 533 01:10:29,271 --> 01:10:30,898 It's like, what lives in my pocket, right? 534 01:10:31,023 --> 01:10:33,859 "Paper monster hungry." Uh... 535 01:10:41,867 --> 01:10:44,745 Come on. Supposed to be friends now. 536 01:10:50,834 --> 01:10:52,419 Yes. 537 01:11:01,095 --> 01:11:03,597 Central City College, I'm a criminal justice major. 538 01:11:03,764 --> 01:11:04,973 You said you had experience 539 01:11:05,099 --> 01:11:06,100 walking dogs. 540 01:11:55,482 --> 01:11:58,110 Long afloat 541 01:11:58,986 --> 01:12:02,698 On shipless oceans 542 01:12:03,991 --> 01:12:12,166 I did all my best to smile 543 01:12:12,249 --> 01:12:18,881 'Til your singing eyes and fingers 544 01:12:19,840 --> 01:12:25,929 Drew me loving to your isle 545 01:12:27,848 --> 01:12:34,771 Did I dream you dreamed about me? 546 01:12:34,897 --> 01:12:42,070 Were you here when I was forced out? 547 01:12:42,196 --> 01:12:48,827 Now my foolish boat is leaning 548 01:12:48,911 --> 01:12:56,043 Broken lovelorn on your rocks 549 01:12:57,836 --> 01:13:04,051 Here I am Here I am 550 01:13:05,928 --> 01:13:13,060 Waiting to hold you 551 01:13:46,552 --> 01:13:48,595 Oh, gosh, I hope everyone's okay. 552 01:13:48,720 --> 01:13:51,390 See, in times of crisis, for dog work, 553 01:13:51,473 --> 01:13:53,475 I always bring a meat snack. 554 01:13:53,600 --> 01:13:55,310 'Cause it makes them feel calm. 555 01:13:55,435 --> 01:13:57,229 'Cause you never know what's going to happen in this city. 556 01:13:57,312 --> 01:13:58,772 I mean, oh, my gosh. 557 01:13:58,897 --> 01:14:01,692 Right? I start on Monday? 558 01:14:39,813 --> 01:14:42,649 You have been near a Mother Box. 559 01:14:43,692 --> 01:14:46,278 The scent is on you. 560 01:14:46,320 --> 01:14:47,779 Where is it? 561 01:14:47,863 --> 01:14:51,491 No son or daughter of Atlantis will ever tell you. 562 01:15:06,298 --> 01:15:07,966 Our people have guarded the Mother Box 563 01:15:08,050 --> 01:15:09,343 for thousands of years. 564 01:15:15,265 --> 01:15:18,185 I will never betray my own people. 565 01:15:29,655 --> 01:15:32,199 You already have. 566 01:16:32,342 --> 01:16:33,802 This was taken in 567 01:16:33,803 --> 01:16:35,262 the deepest trench on Earth. 568 01:16:35,387 --> 01:16:37,472 He must be an Atlantean. 569 01:16:37,597 --> 01:16:38,974 A water-breather. 570 01:16:39,099 --> 01:16:40,600 He was breathing air when I talked to him. 571 01:16:40,684 --> 01:16:42,561 Mixed-blood, then. 572 01:16:42,644 --> 01:16:44,563 He said he'll fight with us? 573 01:16:44,646 --> 01:16:46,106 More or less. 574 01:16:47,441 --> 01:16:49,776 More more or more less? 575 01:16:49,860 --> 01:16:50,902 Probably more less. 576 01:16:50,986 --> 01:16:53,071 - He said no? - He said no. 577 01:16:53,155 --> 01:16:55,782 Atlanteans can be tricky. 578 01:16:55,907 --> 01:16:58,827 My people went to war with them once. 579 01:16:59,828 --> 01:17:01,788 I'm not sure we can trust him. 580 01:17:01,913 --> 01:17:03,039 Diana, if we're gonna do this, 581 01:17:03,165 --> 01:17:04,166 you're gonna need to be open 582 01:17:04,291 --> 01:17:05,625 to more things that we didn't... 583 01:17:05,792 --> 01:17:06,960 you know... 584 01:17:07,043 --> 01:17:08,336 - I'm sorry. That's okay. - Sorry. My fault. 585 01:17:08,462 --> 01:17:09,754 Don't worry about it. 586 01:17:09,796 --> 01:17:11,047 - Let's... - It happens. 587 01:17:11,173 --> 01:17:12,591 So... 588 01:17:12,632 --> 01:17:14,301 This is the third person. 589 01:17:14,384 --> 01:17:16,970 Disappears for 1/30 of a second here. 590 01:17:17,053 --> 01:17:18,680 One frame of video, see? 591 01:17:18,805 --> 01:17:21,475 Barry Allen. Central City. 592 01:17:21,558 --> 01:17:22,517 Go to him. 593 01:17:22,642 --> 01:17:24,186 I'll work on number four. 594 01:17:24,311 --> 01:17:27,606 Organic and biomechatronic body parts. 595 01:17:30,025 --> 01:17:32,235 He's a cyborg. 596 01:17:51,171 --> 01:17:53,340 - Ready! - Break! 597 01:18:08,730 --> 01:18:10,190 Three... 598 01:18:10,273 --> 01:18:11,858 eighty... 599 01:18:12,776 --> 01:18:15,028 set... go! 600 01:18:27,874 --> 01:18:30,252 Your son may be captain of the football team 601 01:18:30,377 --> 01:18:33,630 and a certified genius, Mrs. Stone... 602 01:18:33,755 --> 01:18:35,924 Dr. Stone. 603 01:18:38,218 --> 01:18:40,220 ...but that doesn't mean he can hack into our system 604 01:18:40,387 --> 01:18:43,098 to change his friend's grades. 605 01:18:43,223 --> 01:18:47,060 Sarah's family lost their house this year. 606 01:18:47,143 --> 01:18:49,855 How could that child pass her classes? 607 01:18:51,147 --> 01:18:54,234 Victor helped her 'cause he's got a good heart. 608 01:18:54,317 --> 01:18:56,486 What did you do to help her? 609 01:20:20,487 --> 01:20:23,573 - Your father... - Mom, Mom, don't. 610 01:20:25,075 --> 01:20:27,869 He got held up at the lab. 611 01:20:27,994 --> 01:20:31,206 Okay. He always does. 612 01:20:33,708 --> 01:20:35,001 He wanted to be here. 613 01:20:35,168 --> 01:20:37,128 You always say that. 614 01:20:37,212 --> 01:20:38,797 Ma, you gotta stop making excuses for him. 615 01:20:38,838 --> 01:20:41,675 You're just as busy as he is, but you still make the time. 616 01:20:41,841 --> 01:20:45,720 He just has difficulty showing it, but... 617 01:20:45,845 --> 01:20:48,014 I know he's proud of you. 618 01:20:48,139 --> 01:20:50,725 We both are, Victor. 619 01:20:50,850 --> 01:20:54,020 Hey, hey, hey. 620 01:20:54,104 --> 01:20:57,190 With everything I know you can do today, 621 01:20:57,315 --> 01:21:00,068 I can't wait to see what you're gonna be tomorrow. 622 01:21:05,365 --> 01:21:07,283 - Dr. Stone, - I'm sorry, 623 01:21:08,201 --> 01:21:10,203 Your wife didn't survive. 624 01:21:11,538 --> 01:21:14,040 I'm afraid your son won't either. 625 01:21:27,971 --> 01:21:29,681 I won't let you die. 626 01:21:32,726 --> 01:21:34,310 I won't allow it. 627 01:21:40,567 --> 01:21:42,360 I won't allow it. 628 01:21:45,780 --> 01:21:46,740 Victor. 629 01:21:48,074 --> 01:21:51,411 Victor, you're not stuck in here. 630 01:21:51,536 --> 01:21:54,706 You still have a life ahead of you. 631 01:21:54,831 --> 01:21:58,543 Your mother would have wanted you to live that life. 632 01:22:00,962 --> 01:22:02,589 If you were there, 633 01:22:03,923 --> 01:22:05,800 Mom would still be alive. 634 01:22:08,720 --> 01:22:10,597 All right, look, 635 01:22:11,765 --> 01:22:14,267 you don't have to give me a second chance, 636 01:22:14,350 --> 01:22:16,144 but give yourself one. 637 01:22:17,979 --> 01:22:21,232 If you can't stand looking at me, 638 01:22:22,776 --> 01:22:24,486 try listening. 639 01:22:54,267 --> 01:22:55,642 What you can do now, Victor. 640 01:22:55,809 --> 01:22:59,479 Your physical strength is just the tip of the iceberg. 641 01:22:59,562 --> 01:23:02,357 The tip of the tip. 642 01:23:32,053 --> 01:23:34,347 In the world of ones and zeroes, 643 01:23:34,430 --> 01:23:37,141 you are the absolute master. 644 01:23:37,267 --> 01:23:40,019 No firewall can stop you. 645 01:23:40,103 --> 01:23:42,355 No encryption can defy you. 646 01:23:42,480 --> 01:23:45,066 We're all at your mercy, Vic. 647 01:23:45,191 --> 01:23:47,735 From our power grids to our telecommunications, 648 01:23:47,861 --> 01:23:49,904 everyone's lives are controlled 649 01:23:50,029 --> 01:23:51,531 and dominated 650 01:23:51,532 --> 01:23:53,032 by complex digital networks 651 01:23:53,116 --> 01:23:57,537 that will bend without effort to your will. 652 01:24:07,672 --> 01:24:09,340 The fate of the world 653 01:24:09,424 --> 01:24:12,427 will literally rest in your hands. 654 01:24:20,101 --> 01:24:22,228 Its entire nuclear arsenal, 655 01:24:22,312 --> 01:24:25,315 you could launch with a thought. 656 01:24:35,783 --> 01:24:37,368 The world's monetary systems 657 01:24:37,452 --> 01:24:38,953 and its complex interactions 658 01:24:39,078 --> 01:24:42,040 will seem as easy to manipulate for you 659 01:24:42,123 --> 01:24:43,791 as a child's plaything. 660 01:25:17,659 --> 01:25:21,621 The question... No, the challenge 661 01:25:22,372 --> 01:25:25,500 won't be doing it. 662 01:25:25,625 --> 01:25:27,752 It will be not doing. 663 01:25:27,835 --> 01:25:29,837 Not seeing. 664 01:25:31,714 --> 01:25:33,967 It is the burden of this responsibility 665 01:25:34,092 --> 01:25:37,679 that will define you and who you choose to be. 666 01:26:09,168 --> 01:26:10,253 Now, make a wish. 667 01:26:11,504 --> 01:26:13,381 One more time. 668 01:26:13,506 --> 01:26:16,009 Good job. Wave to Grandma! 669 01:26:16,134 --> 01:26:17,427 Hi, Grandma! 670 01:27:17,403 --> 01:27:18,696 What? 671 01:27:20,615 --> 01:27:22,450 Oh, my God! Oh, my God! 672 01:27:23,493 --> 01:27:25,036 Oh, my God. 673 01:27:25,078 --> 01:27:26,871 Oh, my God. Oh, my God! 674 01:27:32,168 --> 01:27:34,879 Victor... 675 01:27:34,962 --> 01:27:39,550 Victor, these are the words and deductions of a scientist. 676 01:27:39,592 --> 01:27:41,928 That's how I've been speaking to you. 677 01:27:42,553 --> 01:27:45,556 Now, 678 01:27:45,640 --> 01:27:50,103 let me speak to you from my heart, not as a scientist, 679 01:27:50,228 --> 01:27:51,562 as a father. 680 01:28:05,868 --> 01:28:06,953 Hey. 681 01:28:08,162 --> 01:28:09,747 Hey, you! 682 01:28:25,388 --> 01:28:27,140 Because you are 683 01:28:27,141 --> 01:28:28,891 holding yourself back. 684 01:28:29,016 --> 01:28:32,061 You're going in circles, man. 685 01:28:32,186 --> 01:28:34,522 Holding down three dead-end jobs, 686 01:28:34,647 --> 01:28:35,773 going on four. 687 01:28:35,857 --> 01:28:37,316 Where do you even find the time? 688 01:28:37,483 --> 01:28:38,651 I make the time. 689 01:28:38,776 --> 01:28:40,069 - I just need one more gig... - Barry. 690 01:28:40,194 --> 01:28:41,154 ...then I'm gonna pay for my own tuition. 691 01:28:41,237 --> 01:28:42,280 You can't. 692 01:28:42,405 --> 01:28:43,698 Like I always said I would. 693 01:28:43,823 --> 01:28:45,158 You cannot keep doing this to yourself. 694 01:28:45,324 --> 01:28:46,951 Okay. I really don't wanna talk about this again. 695 01:28:47,034 --> 01:28:48,453 - Please, we have 10 minutes. - And this is all to pay 696 01:28:48,536 --> 01:28:49,745 for a criminal justice degree, huh? 697 01:28:49,871 --> 01:28:50,872 Yeah. 698 01:28:50,997 --> 01:28:52,039 For what? 699 01:28:52,165 --> 01:28:55,084 Huh, let's see. As I talk to my father, 700 01:28:55,209 --> 01:28:56,836 who's still in prison for the murder 701 01:28:56,919 --> 01:28:58,337 of my mother, which he didn't commit. 702 01:28:58,463 --> 01:29:00,381 Yeah, how did I get interested in criminal justice? 703 01:29:00,506 --> 01:29:02,133 I can't remember. 704 01:29:02,216 --> 01:29:03,509 Oh, boy. 705 01:29:03,593 --> 01:29:05,928 This path has clearly chosen me, Dad. 706 01:29:06,762 --> 01:29:08,014 Give me your hand, man. 707 01:29:13,352 --> 01:29:16,689 I want you to listen to me, Barry. 708 01:29:16,856 --> 01:29:20,610 I want you to listen to me, because I mean this. 709 01:29:26,365 --> 01:29:28,493 I want you to give all that up. 710 01:29:31,120 --> 01:29:34,498 And I want you to stop coming to see me. 711 01:29:36,667 --> 01:29:39,837 I am a drag on your life. 712 01:29:45,218 --> 01:29:46,886 Okay. Um... 713 01:29:47,053 --> 01:29:50,515 Please don't ever say that to me again. 714 01:29:50,640 --> 01:29:51,849 Please. 715 01:29:51,974 --> 01:29:53,517 Hey, you know what criminal justice 716 01:29:53,601 --> 01:29:55,353 would be for me? 717 01:29:55,436 --> 01:30:00,233 My son not wasting his life. 718 01:30:01,567 --> 01:30:03,402 You can be whatever you wanna be. 719 01:30:03,486 --> 01:30:04,904 You're brilliant, man. 720 01:30:07,406 --> 01:30:10,201 Absolute best of the best. 721 01:30:11,702 --> 01:30:16,707 I can't sit here and watch you run in place in Central City 722 01:30:16,791 --> 01:30:18,626 for some old dude 723 01:30:18,751 --> 01:30:21,921 who's not going anywhere. 724 01:30:22,004 --> 01:30:23,464 - Dad, that's not true. - It's time. 725 01:30:23,589 --> 01:30:24,799 That's not true. 726 01:30:24,924 --> 01:30:26,384 Let's go, Allen. Allen! 727 01:30:26,467 --> 01:30:28,052 I want you to make your own future. 728 01:30:28,094 --> 01:30:30,096 You're living in the past. Make your own future. 729 01:30:30,221 --> 01:30:31,556 Open gate. 730 01:30:31,639 --> 01:30:33,140 Great. 731 01:30:36,644 --> 01:30:38,938 "You're living in the past. Make your own future, Barry." 732 01:30:39,105 --> 01:30:40,648 Clear. Close the gate. 733 01:31:33,492 --> 01:31:36,787 Barry Allen. Bruce Wayne. 734 01:31:36,871 --> 01:31:38,372 You said that like it explains 735 01:31:38,497 --> 01:31:40,833 why there's a total stranger in my place 736 01:31:41,000 --> 01:31:44,086 sitting in the dark, in my second favorite chair. 737 01:31:45,880 --> 01:31:47,882 Tell me about this. 738 01:31:51,844 --> 01:31:54,638 This is a person who looks exactly like me, 739 01:31:54,722 --> 01:31:57,683 but who is definitely not me. 740 01:31:58,601 --> 01:32:00,478 Somebody... I don't know. 741 01:32:00,603 --> 01:32:02,480 Hippie, long hair. 742 01:32:02,605 --> 01:32:05,399 Very attractive Jewish boy. 743 01:32:06,901 --> 01:32:09,570 Who drinks milk, I don't drink milk. 744 01:32:09,695 --> 01:32:11,155 I know you have abilities. 745 01:32:11,197 --> 01:32:13,491 I just don't know what they are. 746 01:32:13,616 --> 01:32:14,659 My special skills 747 01:32:14,742 --> 01:32:17,411 include viola, web design, 748 01:32:17,536 --> 01:32:20,373 fluent in sign language, gorilla sign language. 749 01:32:20,498 --> 01:32:24,210 Silica-based sand quartz fabric. 750 01:32:24,293 --> 01:32:26,545 Abrasion resistant, heat resistant. 751 01:32:26,712 --> 01:32:28,589 Uh, yeah, I do competitive ice dancing. 752 01:32:28,714 --> 01:32:30,341 It's what they use on the space shuttle 753 01:32:30,466 --> 01:32:32,176 to prevent it from burning up on re-entry. 754 01:32:32,301 --> 01:32:35,054 I do very competitive ice dancing. 755 01:32:36,263 --> 01:32:38,182 Look, man. I don't know who you are, 756 01:32:38,265 --> 01:32:40,559 but whoever you're looking for, 757 01:32:40,643 --> 01:32:41,811 it's not me. 758 01:33:23,477 --> 01:33:25,396 You're the Batman? 759 01:33:25,479 --> 01:33:28,274 So, you're fast. 760 01:33:28,357 --> 01:33:30,025 That feels like an oversimplification. 761 01:33:30,151 --> 01:33:31,944 I'm putting together a team. 762 01:33:32,069 --> 01:33:34,113 People with special abilities. 763 01:33:34,280 --> 01:33:35,906 You see, I believe enemies are coming. 764 01:33:35,948 --> 01:33:38,200 Stop right there. I'm in. 765 01:33:39,285 --> 01:33:40,578 You are? 766 01:33:40,661 --> 01:33:41,745 Just like that? 767 01:33:41,829 --> 01:33:43,122 Yeah. 768 01:33:44,915 --> 01:33:47,460 I need friends. 769 01:33:47,585 --> 01:33:50,838 Great. Great. 770 01:33:50,963 --> 01:33:53,174 Can I keep this? 771 01:33:53,299 --> 01:33:55,134 It's like this layer of dimensional reality, 772 01:33:55,217 --> 01:33:56,927 and it seems to manipulate space-time. 773 01:33:57,052 --> 01:33:58,471 I call it the Speed Force. 774 01:33:58,596 --> 01:34:00,306 Causes me to burn a tremendous amount of calories 775 01:34:00,389 --> 01:34:03,267 so I am just a black hole of snacks. 776 01:34:03,392 --> 01:34:05,853 I am a snack hole. 777 01:34:05,978 --> 01:34:08,856 How many people are on this special fight team? 778 01:34:08,981 --> 01:34:10,941 - Three, including you. - Three? 779 01:34:11,025 --> 01:34:13,778 Against what? 780 01:34:13,861 --> 01:34:15,404 I'll tell you on the plane. 781 01:34:15,946 --> 01:34:17,740 Plane? 782 01:34:17,865 --> 01:34:19,617 What are your superpowers again? 783 01:34:19,742 --> 01:34:21,494 I'm rich. 784 01:34:44,350 --> 01:34:46,310 Oh, Miss Prince, let me do that. 785 01:34:46,393 --> 01:34:49,355 No, that's okay. I can do it myself. 786 01:34:49,522 --> 01:34:51,315 Would you like to have some? 787 01:34:51,440 --> 01:34:52,858 Uh, no, thank you. 788 01:34:54,026 --> 01:34:56,487 If you put the water in first. 789 01:34:56,529 --> 01:34:59,949 - Of course. - So we don't scald the tea. 790 01:35:02,743 --> 01:35:04,161 - Yes. - Great. 791 01:35:04,245 --> 01:35:06,497 No, that's probably enough tea. 792 01:35:06,580 --> 01:35:08,874 All right. 793 01:35:08,999 --> 01:35:10,376 Are you sure you don't wanna have some? 794 01:35:10,543 --> 01:35:14,588 I won't, thank you. And then leave it to mash. 795 01:35:14,713 --> 01:35:17,716 I will. I will, definitely will. 796 01:35:17,800 --> 01:35:20,010 Uh... What are you working on? 797 01:35:20,094 --> 01:35:21,929 It's a gauntlet 798 01:35:22,054 --> 01:35:25,850 lined with specialized polymer solar cells. 799 01:35:25,933 --> 01:35:28,352 - Wow. - Here, let me show you. 800 01:35:28,394 --> 01:35:31,605 We borrowed this from the Kryptonian scout ship. 801 01:35:33,107 --> 01:35:34,525 Oh, maybe you should, uh... 802 01:35:34,608 --> 01:35:36,235 a fraction. Thank you, thank you. 803 01:35:36,318 --> 01:35:37,361 Of course. 804 01:35:42,533 --> 01:35:44,118 Ah. 805 01:35:44,243 --> 01:35:47,246 Ah, now, let's see how that did. 806 01:35:47,329 --> 01:35:49,748 Ha! Yes. 807 01:35:49,873 --> 01:35:51,417 Not to be sneezed at. 808 01:35:51,500 --> 01:35:54,044 A gauntlet that captures and dissipates energy. 809 01:35:54,128 --> 01:35:55,921 It's Master Wayne's idea. 810 01:35:56,005 --> 01:35:58,257 Maybe you should work on a lasso, too? 811 01:35:58,340 --> 01:36:01,218 - In black, of course. - Oh. 812 01:36:07,975 --> 01:36:11,145 All right. Victor Stone. 813 01:36:27,202 --> 01:36:29,663 Something is not working. 814 01:36:29,788 --> 01:36:31,457 Mmm. 815 01:36:41,050 --> 01:36:43,510 Looks like you have a date, Miss Prince. 816 01:37:40,401 --> 01:37:43,737 Why are you looking for me, Diana? 817 01:37:43,862 --> 01:37:45,155 You know who I am. 818 01:37:45,239 --> 01:37:47,491 I know more than you can possibly imagine. 819 01:37:47,574 --> 01:37:50,828 Then maybe you already know I need your help. 820 01:37:50,953 --> 01:37:52,162 The world does. 821 01:37:53,247 --> 01:37:55,207 Fuck the world. 822 01:37:56,583 --> 01:37:59,211 You've obviously been through a great deal. 823 01:38:00,254 --> 01:38:03,340 I can't begin to imagine what. 824 01:38:03,382 --> 01:38:07,011 But whatever happened to you, you have gifts now. 825 01:38:07,094 --> 01:38:08,929 Gifts? 826 01:38:09,054 --> 01:38:11,223 What part of this looks like a gift to you? 827 01:38:11,306 --> 01:38:13,058 We need you, Victor. 828 01:38:13,183 --> 01:38:14,893 And maybe you need us. 829 01:38:14,977 --> 01:38:16,687 I don't need anyone. 830 01:38:18,897 --> 01:38:20,065 Not anymore. 831 01:38:20,149 --> 01:38:22,609 I told myself the same for a long time. 832 01:38:29,283 --> 01:38:32,244 I lost someone I loved once. 833 01:38:34,997 --> 01:38:39,752 I shut myself off from everyone. 834 01:38:41,336 --> 01:38:44,256 But I had to learn to open back up again. 835 01:38:46,675 --> 01:38:50,262 The truth is, I'm still working on it. 836 01:38:50,345 --> 01:38:54,308 And if you asked to meet me... 837 01:38:54,433 --> 01:38:57,352 you're working on it, too. 838 01:40:08,757 --> 01:40:10,968 You were right about the metal sample 839 01:40:11,009 --> 01:40:12,553 from the Superman ship. 840 01:40:12,678 --> 01:40:16,140 When we bombard it with X-rays from the electron-laser, 841 01:40:16,265 --> 01:40:17,850 look what happens. 842 01:40:26,900 --> 01:40:28,652 3.5 million kelvin. 843 01:40:28,694 --> 01:40:31,947 The inner core of the metal becomes superheated. 844 01:40:32,072 --> 01:40:34,491 Hot, dense matter. 845 01:40:37,578 --> 01:40:40,414 You're looking at the hottest thing on Earth. 846 01:40:40,539 --> 01:40:42,875 Exact words I said to my prom date. 847 01:40:42,958 --> 01:40:44,585 She dumped me anyway. 848 01:40:44,710 --> 01:40:45,836 Yeah. 849 01:40:50,048 --> 01:40:51,174 Hey, Doc, 850 01:40:51,258 --> 01:40:52,843 do you think Batman is connected 851 01:40:52,885 --> 01:40:55,679 to the object the CID is looking for? 852 01:40:56,597 --> 01:40:59,850 You know, 6-1-9-8-2? 853 01:41:01,018 --> 01:41:02,227 No... 854 01:41:03,061 --> 01:41:04,396 I don't. 855 01:41:39,139 --> 01:41:41,350 Oh, Victor. 856 01:41:58,325 --> 01:42:00,410 All right! Let's go! 857 01:42:01,495 --> 01:42:02,829 Commissioner Gordon? 858 01:42:02,955 --> 01:42:03,997 Come on! 859 01:42:04,122 --> 01:42:05,290 Your messages. 860 01:42:05,415 --> 01:42:06,875 Hey, hey! 861 01:42:09,628 --> 01:42:12,130 Don't have to see the sky to know it's a full moon. 862 01:42:12,256 --> 01:42:15,342 Half of Gotham's reality-challenged community showed up. 863 01:42:15,467 --> 01:42:17,636 Say they saw flying monsters by the harbor. 864 01:42:17,719 --> 01:42:19,721 You were right, Ma. Police Academy. 865 01:42:19,846 --> 01:42:21,682 What's wrong with dental school? 866 01:42:24,601 --> 01:42:27,688 "Attacked by a flying vampire." 867 01:42:27,813 --> 01:42:31,024 "Looked like a giant bat with huge fangs." 868 01:42:31,149 --> 01:42:32,818 On a possibly related note, 869 01:42:32,901 --> 01:42:35,320 sketch of the suspect in the abductions 870 01:42:35,445 --> 01:42:36,947 at the lab across the harbor. 871 01:42:37,030 --> 01:42:40,158 - Looks like... - I know what it looks like, Crispus. 872 01:42:40,325 --> 01:42:42,911 Come on, you think he fights criminals for 20 years here 873 01:42:43,036 --> 01:42:45,914 and then he goes to Metropolis and kidnaps eight people? 874 01:42:46,999 --> 01:42:48,083 I'll talk to him tonight. 875 01:42:48,208 --> 01:42:49,793 How, Jim? 876 01:42:49,918 --> 01:42:51,503 How do you think? 877 01:43:09,563 --> 01:43:10,981 Silas? 878 01:43:11,106 --> 01:43:12,315 Hey, hey. 879 01:43:12,399 --> 01:43:13,859 Hey, hey! 880 01:43:18,321 --> 01:43:20,866 - Oh, my goodness. - Where's the cyborg? 881 01:43:20,991 --> 01:43:22,034 His name is Victor. 882 01:43:22,951 --> 01:43:25,704 We met, spoke. 883 01:43:26,538 --> 01:43:28,540 Give him time. 884 01:43:28,707 --> 01:43:30,709 You must be Barry. I'm Diana. 885 01:43:30,792 --> 01:43:34,588 Hi, Barry. I'm Diana. That's not right. Great. 886 01:43:34,713 --> 01:43:37,049 - So, this is us. - Yeah, this is us. 887 01:43:37,174 --> 01:43:38,508 Oh! 888 01:43:38,592 --> 01:43:41,386 Awesome! It's the Bat-Signal. That's your... 889 01:43:41,470 --> 01:43:43,555 - Oh, sorry. - That's your signal. 890 01:43:43,680 --> 01:43:45,140 That means we have to go now. 891 01:43:45,265 --> 01:43:48,977 - Yeah, that's what that means. - It's so cool. 892 01:44:46,118 --> 01:44:47,869 Commander Mera, I told the king 893 01:44:47,994 --> 01:44:49,746 the perimeter guards were taken. 894 01:44:49,830 --> 01:44:51,373 He won't send reinforcements. 895 01:44:51,498 --> 01:44:54,084 He says all the reserves are needed in the rebel regions. 896 01:44:54,209 --> 01:44:58,672 He's as shortsighted as he is cruel. 897 01:44:58,797 --> 01:45:00,465 All right, take what men we have left 898 01:45:00,590 --> 01:45:02,300 and form a phalanx around the Mother Box. 899 01:46:42,234 --> 01:46:44,236 You can't escape. 900 01:46:45,111 --> 01:46:47,072 I'm not trying to. 901 01:48:49,402 --> 01:48:51,738 Vulko told me you would come. 902 01:48:51,863 --> 01:48:54,783 The firstborn of beloved Queen Atlanna. 903 01:48:57,369 --> 01:48:58,703 Wait. 904 01:49:00,580 --> 01:49:01,790 Please. 905 01:49:05,335 --> 01:49:06,753 I knew her. 906 01:49:08,797 --> 01:49:11,091 Well, that makes one of us. 907 01:49:11,216 --> 01:49:13,051 My parents died in the wars. 908 01:49:14,761 --> 01:49:16,346 She took me in. 909 01:49:16,429 --> 01:49:18,098 What a saint. 910 01:49:18,223 --> 01:49:20,350 You dare speak of Queen Atlanna that way? 911 01:49:20,433 --> 01:49:23,186 Your queen left me on my father's doorstep 912 01:49:23,269 --> 01:49:25,021 and never gave me another thought. 913 01:49:25,063 --> 01:49:28,274 Your mother left you to save your life. 914 01:49:28,400 --> 01:49:31,111 You cannot imagine how it hurt her. 915 01:49:32,570 --> 01:49:34,781 What it cost her. 916 01:49:35,824 --> 01:49:38,159 But you're not a defenseless child now. 917 01:49:40,328 --> 01:49:42,038 It would have been her responsibility 918 01:49:42,080 --> 01:49:45,417 to follow that monster to the surface and stop him. 919 01:49:46,084 --> 01:49:47,168 Now, 920 01:49:48,461 --> 01:49:49,879 it's yours. 921 01:50:54,152 --> 01:50:55,487 Yes. 922 01:51:18,551 --> 01:51:19,802 Steppenwolf, 923 01:51:19,928 --> 01:51:21,888 tell me what you've learned. 924 01:51:22,013 --> 01:51:24,516 Two boxes found and awake. 925 01:51:24,682 --> 01:51:27,685 With the combined power of the two Mother Boxes, 926 01:51:27,769 --> 01:51:31,022 I've been able to finish the stronghold's defenses. 927 01:51:31,105 --> 01:51:33,650 Where is the third Mother Box? 928 01:51:33,733 --> 01:51:36,152 The parademons sense its presence 929 01:51:36,194 --> 01:51:37,904 and search for the third. 930 01:51:38,029 --> 01:51:39,030 They have taken prisoners 931 01:51:39,155 --> 01:51:41,366 who carry its scent. 932 01:51:42,200 --> 01:51:43,827 Go. 933 01:51:43,910 --> 01:51:46,037 Interrogate the prisoners. 934 01:51:46,704 --> 01:51:48,540 Find the third. 935 01:51:50,041 --> 01:51:52,335 They will tell me what they know, 936 01:51:53,378 --> 01:51:56,130 or I will rip it from them. 937 01:52:39,257 --> 01:52:41,050 How many of you are there? 938 01:52:41,801 --> 01:52:43,052 Not enough. 939 01:52:44,762 --> 01:52:47,181 Dozens of witnesses all over Gotham. 940 01:52:47,307 --> 01:52:48,683 Description matches the suspect 941 01:52:48,808 --> 01:52:50,602 in the Metropolis abductions. 942 01:52:50,727 --> 01:52:51,895 Parademons. 943 01:52:52,437 --> 01:52:53,771 Okay. 944 01:52:53,938 --> 01:52:56,149 The demons must have caught the scent of a Mother Box. 945 01:52:56,274 --> 01:52:57,650 At the lab. 946 01:52:57,775 --> 01:52:59,903 They carried people away to find out what they know. 947 01:52:59,986 --> 01:53:01,070 So the eight may still be alive. 948 01:53:01,112 --> 01:53:02,113 Nine. 949 01:53:02,238 --> 01:53:04,115 Oh. 950 01:53:04,198 --> 01:53:06,951 The head of STARLABS was taken tonight. 951 01:53:11,956 --> 01:53:14,626 Wow, okay. So, another scientist. 952 01:53:14,751 --> 01:53:16,002 So, how do we find him? 953 01:53:16,127 --> 01:53:17,670 There must be a nest nearby. 954 01:53:17,795 --> 01:53:22,091 I plotted all the sightings in Metropolis, Gotham. 955 01:53:22,175 --> 01:53:24,302 No discernable pattern I can see. 956 01:53:24,427 --> 01:53:25,887 The lines on the map don't converge. 957 01:53:26,012 --> 01:53:27,305 On land. 958 01:53:27,430 --> 01:53:28,848 These lead back to Stryker's Island, 959 01:53:28,973 --> 01:53:30,099 between the two cities. 960 01:53:30,183 --> 01:53:31,267 These are air vents. 961 01:53:31,392 --> 01:53:32,852 They all lead down to the tunnel 962 01:53:32,977 --> 01:53:35,146 to a Metropolis project that was abandoned in '29. 963 01:53:35,313 --> 01:53:37,482 The nest could be there. 964 01:53:37,607 --> 01:53:39,567 Uh, is he coming with us now, 965 01:53:39,692 --> 01:53:41,653 because we're not all gonna fit in your car. 966 01:53:41,778 --> 01:53:43,237 I have something bigger. 967 01:53:44,364 --> 01:53:47,241 Do you really think that... 968 01:53:47,367 --> 01:53:50,954 Oh, wow, they just... They really just vanish, huh? 969 01:53:50,995 --> 01:53:53,581 Oh. That's rude. 970 01:54:32,203 --> 01:54:34,247 We're close. 971 01:54:34,372 --> 01:54:36,541 The scent of the enemy. 972 01:54:37,166 --> 01:54:38,418 Of absence. 973 01:54:38,918 --> 01:54:40,545 Darkness. 974 01:54:41,170 --> 01:54:42,547 Death. 975 01:54:42,714 --> 01:54:43,756 Where are we, Alfred? 976 01:54:43,881 --> 01:54:45,049 Stryker's Island. 977 01:54:45,133 --> 01:54:47,176 You should be directly under 978 01:54:47,260 --> 01:54:50,054 the venting tower for the tunnel. 979 01:54:50,138 --> 01:54:51,514 Now look to your left, 980 01:54:51,597 --> 01:54:53,558 you'll see a staircase to the machine room. 981 01:54:53,641 --> 01:54:56,227 Thermal scan shows a cluster of people there. 982 01:54:56,352 --> 01:54:57,687 That's it. 983 01:54:57,812 --> 01:54:59,188 Let's go. 984 01:55:12,994 --> 01:55:15,747 Right. Is there... Is there a plan? 985 01:55:17,248 --> 01:55:18,499 Either of you? 986 01:55:18,624 --> 01:55:20,668 Don't engage alone. 987 01:55:20,793 --> 01:55:22,086 We do this together. 988 01:55:30,970 --> 01:55:32,764 I heard about you. 989 01:55:34,474 --> 01:55:36,058 Didn't think you were real. 990 01:55:36,142 --> 01:55:37,727 I'm real when it's useful. 991 01:55:47,820 --> 01:55:49,572 I grow tired of your silence. 992 01:55:49,697 --> 01:55:52,074 Now tell me, where is the Mother Box? 993 01:55:58,956 --> 01:56:01,125 Please. We have families. 994 01:56:01,250 --> 01:56:03,503 Then you have weakness. 995 01:56:03,628 --> 01:56:05,004 Steppenwolf. 996 01:56:05,129 --> 01:56:09,467 Okay, I'm guessing that's the bad guy. 997 01:56:09,634 --> 01:56:10,802 Good guess. 998 01:56:10,927 --> 01:56:14,680 I'm really, really missing Superman right now. 999 01:56:14,806 --> 01:56:16,766 Circle to the other side. 1000 01:56:16,849 --> 01:56:19,227 We'll surround them and surprise him. 1001 01:56:23,523 --> 01:56:25,650 You have been near a Mother Box. 1002 01:56:25,733 --> 01:56:27,318 The scent is on you. 1003 01:56:27,443 --> 01:56:28,986 I don't know what you're talking about. 1004 01:56:29,153 --> 01:56:30,988 - Where is it? - Leave him alone! 1005 01:56:31,155 --> 01:56:33,491 He... He doesn't know. 1006 01:56:37,036 --> 01:56:38,830 Wait, please, please! 1007 01:56:44,252 --> 01:56:47,296 You carry the scent, too. But stronger. 1008 01:56:47,380 --> 01:56:49,674 I will die before I tell you. 1009 01:56:49,841 --> 01:56:51,884 You'll die if you don't. 1010 01:56:52,009 --> 01:56:53,177 No! 1011 01:57:02,270 --> 01:57:03,354 Victor. 1012 01:57:03,479 --> 01:57:04,856 Kill them both. 1013 01:57:08,359 --> 01:57:10,820 Ah, Amazon. 1014 01:57:10,903 --> 01:57:13,573 But not like your sisters. 1015 01:57:13,698 --> 01:57:14,824 Stronger. 1016 01:57:45,855 --> 01:57:48,190 Amazon. 1017 01:57:50,568 --> 01:57:52,069 Hold! 1018 01:57:52,195 --> 01:57:54,488 This one will be mine. 1019 01:57:56,324 --> 01:57:58,826 I belong to no one. 1020 01:58:12,632 --> 01:58:14,842 Guys, this is not together. 1021 01:58:21,682 --> 01:58:23,100 Help get those people out of here. 1022 01:58:23,226 --> 01:58:25,394 I'll make sure these things follow me. 1023 01:58:35,279 --> 01:58:36,781 Everybody, move! 1024 01:58:45,414 --> 01:58:46,958 A little quicker. 1025 01:58:49,293 --> 01:58:50,586 - Are you good? - Yeah. 1026 01:58:50,711 --> 01:58:53,464 I've got this. Keep moving. 1027 01:58:55,299 --> 01:58:56,258 This way. 1028 01:59:32,586 --> 01:59:34,171 The energy is dissipating. 1029 01:59:34,255 --> 01:59:36,757 My gauntlet worked! 1030 01:59:36,882 --> 01:59:39,343 Celebrate later, Alfred. I need the Nightcrawler. 1031 01:59:39,427 --> 01:59:41,512 Thought you'd never ask. 1032 01:59:41,595 --> 01:59:43,848 Crawler's on the way. Initiating remote mode. 1033 02:00:14,045 --> 02:00:15,004 Thank you, Alfred. 1034 02:00:15,129 --> 02:00:16,380 Don't mention it. 1035 02:00:39,236 --> 02:00:40,404 No! 1036 02:00:43,949 --> 02:00:44,950 Whew. 1037 02:00:48,079 --> 02:00:49,663 They're safe. Get back to the tunnel. 1038 02:00:49,789 --> 02:00:53,125 Tunnel. Right. Aliens, bad guy, sword lady. 1039 02:01:04,887 --> 02:01:06,097 My turn. 1040 02:02:28,262 --> 02:02:29,930 Catastrophic failure of all systems. 1041 02:02:30,055 --> 02:02:32,600 Are you all right, Master Wayne? 1042 02:02:32,725 --> 02:02:33,851 Are you all right? 1043 02:02:44,236 --> 02:02:48,032 You have the blood of the old gods in you. 1044 02:03:02,296 --> 02:03:03,506 You okay? 1045 02:03:04,006 --> 02:03:05,216 Mm. 1046 02:03:05,341 --> 02:03:07,009 Wasn't sure you'd come. 1047 02:03:08,052 --> 02:03:09,261 You're my father. 1048 02:03:12,890 --> 02:03:13,891 Go. 1049 02:03:27,404 --> 02:03:28,572 No! 1050 02:04:13,826 --> 02:04:16,287 Relax, Alfred. I'll take it from here. 1051 02:04:17,788 --> 02:04:19,790 Uh, do I know you? 1052 02:04:50,571 --> 02:04:51,905 What are we under, right now? 1053 02:04:52,573 --> 02:04:53,949 Gotham Harbor. 1054 02:05:32,571 --> 02:05:33,947 Who is that? 1055 02:05:59,223 --> 02:06:00,391 Come on. 1056 02:06:05,521 --> 02:06:06,814 Diana, get on! 1057 02:07:08,625 --> 02:07:10,169 What is it? 1058 02:07:17,801 --> 02:07:19,344 Show me. 1059 02:07:58,550 --> 02:08:00,177 It is here. 1060 02:08:00,844 --> 02:08:03,972 On this world. 1061 02:08:37,714 --> 02:08:39,007 Sir, you're gonna be in quarantine 1062 02:08:39,132 --> 02:08:40,509 for possible alien microbes. 1063 02:08:40,592 --> 02:08:42,386 U.S. government protocols require that... 1064 02:08:42,511 --> 02:08:45,514 I know the requirements. I wrote them. 1065 02:08:49,977 --> 02:08:51,478 It called to him. 1066 02:08:51,603 --> 02:08:53,021 The Mother Box. 1067 02:08:53,105 --> 02:08:54,606 The one he already has. 1068 02:08:54,731 --> 02:08:57,943 He has two. He took the Mother Box from Atlantis. 1069 02:08:58,068 --> 02:09:00,571 All he needs now is the lost Box of Men. 1070 02:09:00,654 --> 02:09:01,947 If he doesn't already have it. 1071 02:09:05,492 --> 02:09:07,035 He doesn't have it. 1072 02:09:10,038 --> 02:09:11,331 I do. 1073 02:09:21,758 --> 02:09:23,886 Have you finished the conquest? 1074 02:09:23,969 --> 02:09:25,220 Not yet, DeSaad. 1075 02:09:25,304 --> 02:09:27,764 Then why do you summon me? 1076 02:09:27,890 --> 02:09:29,391 I bring news. 1077 02:09:29,516 --> 02:09:32,519 Before mighty Darkseid came to the throne, 1078 02:09:32,644 --> 02:09:37,816 he searched the universe for the ultimate weapon. 1079 02:09:37,941 --> 02:09:40,068 The Anti-Life Equation. 1080 02:09:40,152 --> 02:09:42,237 The key to controlling all life 1081 02:09:42,279 --> 02:09:44,781 and all will throughout the multiverse. 1082 02:09:44,865 --> 02:09:48,118 He found it hidden on a primitive planet, but before... 1083 02:09:48,201 --> 02:09:51,079 The story of the defiance is well-known. 1084 02:09:51,204 --> 02:09:53,874 I have found the primitive planet. 1085 02:09:53,999 --> 02:09:56,001 The world that fought back. 1086 02:09:56,126 --> 02:09:58,086 It is Earth. 1087 02:09:58,128 --> 02:10:00,380 The Anti-Life Equation is carved 1088 02:10:00,505 --> 02:10:04,551 into the surface of this very world. 1089 02:10:08,138 --> 02:10:09,681 Are you certain? 1090 02:10:09,806 --> 02:10:10,849 I have seen it. 1091 02:10:10,974 --> 02:10:14,186 I have looked with my own eyes. 1092 02:10:15,937 --> 02:10:16,939 Anti-Life. 1093 02:10:57,729 --> 02:10:59,398 My lord. 1094 02:11:00,857 --> 02:11:04,736 Oh, Steppenwolf. 1095 02:11:04,861 --> 02:11:09,032 My lord, I am but your humble servant. 1096 02:11:09,116 --> 02:11:11,994 Can it be true that you have found it? 1097 02:11:12,077 --> 02:11:14,913 I have, great one. 1098 02:11:15,038 --> 02:11:17,999 The lost world is Earth. 1099 02:11:18,125 --> 02:11:22,337 Anti-Life is here. 1100 02:11:22,379 --> 02:11:25,716 If it is redemption you seek, find the third box, 1101 02:11:25,841 --> 02:11:29,011 synchronize The Unity, and when this world is scorched, 1102 02:11:29,094 --> 02:11:32,472 I will come for my great prize. 1103 02:11:33,223 --> 02:11:36,393 You will come to Earth? 1104 02:11:36,476 --> 02:11:40,897 I have turned 100,000 worlds to dust 1105 02:11:41,022 --> 02:11:42,441 looking for Anti-Life. 1106 02:11:42,566 --> 02:11:45,944 Looking for those who robbed me of my glory. 1107 02:11:46,069 --> 02:11:49,239 I will stride across their bones 1108 02:11:49,322 --> 02:11:51,908 and bask in the glow of Anti-Life. 1109 02:11:51,992 --> 02:11:54,786 And all of existence 1110 02:11:54,911 --> 02:11:58,206 shall be mine. 1111 02:12:01,752 --> 02:12:05,714 It shall be so, my master. 1112 02:12:09,926 --> 02:12:11,553 So cool. 1113 02:12:11,636 --> 02:12:14,598 From the outside, it looks like this building was abandoned. 1114 02:12:18,018 --> 02:12:19,770 It wants to fly. 1115 02:12:20,979 --> 02:12:22,981 You talk to machines? 1116 02:12:23,106 --> 02:12:25,150 I speak to intelligence. 1117 02:12:25,275 --> 02:12:26,443 This one's saying she can't fly 1118 02:12:26,526 --> 02:12:28,153 because of a software issue, 1119 02:12:28,278 --> 02:12:30,405 but I could fix it with a little time. 1120 02:12:39,873 --> 02:12:42,417 There's a dark spot in my data stream. 1121 02:12:42,501 --> 02:12:44,961 I could feel the other two boxes. 1122 02:12:45,045 --> 02:12:46,922 I know they're awake, 1123 02:12:47,005 --> 02:12:48,548 but I can't see where they are. 1124 02:12:48,673 --> 02:12:50,801 Well, we can't attack unless we know where the base is. 1125 02:12:50,926 --> 02:12:52,969 Even if we knew, 1126 02:12:53,053 --> 02:12:56,306 I've never seen a being as strong as Steppenwolf. 1127 02:12:58,308 --> 02:12:59,684 Maybe one. 1128 02:12:59,810 --> 02:13:02,229 Hmm, Superman. 1129 02:13:02,354 --> 02:13:04,022 As long as the third box is asleep, 1130 02:13:04,147 --> 02:13:06,399 they can't see it, only sense it. 1131 02:13:06,525 --> 02:13:08,777 We need to keep moving so they can't catch up. 1132 02:13:08,860 --> 02:13:10,278 No. That's just a strategy 1133 02:13:10,403 --> 02:13:12,364 to lose more slowly, not to win. 1134 02:13:12,489 --> 02:13:15,325 Remind me, are flamethrowers not a thing? 1135 02:13:15,408 --> 02:13:16,493 Why don't we just destroy it? 1136 02:13:16,618 --> 02:13:18,703 Fire doesn't destroy the boxes. 1137 02:13:18,829 --> 02:13:20,747 They're an unknown form of matter. 1138 02:13:20,872 --> 02:13:22,123 Oh, they love heat. 1139 02:13:22,165 --> 02:13:24,334 They absorb it, hold it in their cores. 1140 02:13:24,459 --> 02:13:27,128 Well, you know a lot about these boxes. 1141 02:13:27,170 --> 02:13:28,463 Makes you think. 1142 02:13:28,547 --> 02:13:31,174 Where'd you find the box, Victor? 1143 02:13:31,299 --> 02:13:32,968 Are you trying to say something? 1144 02:13:33,051 --> 02:13:34,803 Oh, I'm saying it. 1145 02:13:34,886 --> 02:13:37,180 How do we know you're not working for them? 1146 02:13:38,890 --> 02:13:40,934 It's a long story. 1147 02:13:41,059 --> 02:13:42,894 You got somewhere else to be? 1148 02:13:50,277 --> 02:13:51,736 The Nazis found the box 1149 02:13:51,862 --> 02:13:54,197 at the end of the Second World War, 1150 02:13:54,281 --> 02:13:57,367 buried under an Italian monastery. 1151 02:13:57,450 --> 02:13:59,786 The Allies intercepted it on its way to Hitler. 1152 02:13:59,911 --> 02:14:02,831 They brought it back to the States in '44. 1153 02:14:02,873 --> 02:14:07,168 Unknown object 6-1-9-8-2. 1154 02:14:07,210 --> 02:14:09,087 It collected dust in the Pentagon archives 1155 02:14:09,212 --> 02:14:10,964 for 70 years 1156 02:14:11,089 --> 02:14:14,593 till DoD began to study the Superman ship. 1157 02:14:15,886 --> 02:14:18,388 A researcher at STARLABS made a connection 1158 02:14:18,471 --> 02:14:19,639 between the ship... 1159 02:14:20,891 --> 02:14:22,893 and 6-1-9-8-2. 1160 02:14:23,059 --> 02:14:26,730 He understood they were both alien technologies. 1161 02:14:26,855 --> 02:14:28,899 Different civilizations, 1162 02:14:28,982 --> 02:14:32,027 similar properties. 1163 02:14:32,110 --> 02:14:35,530 And though the box had slept for thousands of years, 1164 02:14:35,655 --> 02:14:39,117 the researcher formulated a theory on how to awaken it. 1165 02:14:39,242 --> 02:14:41,244 And so did. 1166 02:14:43,288 --> 02:14:44,456 Then... 1167 02:14:46,416 --> 02:14:49,461 I had an accident that should've killed me. 1168 02:14:49,586 --> 02:14:52,797 But in an act of desperation or madness, 1169 02:14:52,923 --> 02:14:55,508 the researcher harnessed the power of the Mother Box. 1170 02:15:11,483 --> 02:15:13,568 He unleashed an alien technology 1171 02:15:13,693 --> 02:15:16,488 he didn't fully understand. 1172 02:15:16,613 --> 02:15:19,282 He used that power to keep me alive. 1173 02:15:22,786 --> 02:15:24,579 Alive... 1174 02:15:24,621 --> 02:15:26,790 but turned into this. 1175 02:15:29,459 --> 02:15:31,878 The box went back to sleep 1176 02:15:32,629 --> 02:15:34,547 and he never returned it. 1177 02:15:36,883 --> 02:15:39,302 That researcher was Silas Stone. 1178 02:15:40,887 --> 02:15:42,555 My father. 1179 02:15:45,809 --> 02:15:47,435 Wait, 1180 02:15:47,519 --> 02:15:50,814 your father saved your life with one of these things? 1181 02:15:50,981 --> 02:15:53,316 Aren't they psycho murder machines? 1182 02:15:53,483 --> 02:15:55,777 They're change machines. 1183 02:15:55,860 --> 02:15:59,030 The boxes don't think in terms of healing or killing, 1184 02:15:59,155 --> 02:16:01,074 alive or dead. 1185 02:16:01,199 --> 02:16:03,618 They rearrange matter at the will of their masters, 1186 02:16:03,660 --> 02:16:05,412 regenerate, reinstate. 1187 02:16:05,537 --> 02:16:06,955 Reinstate? 1188 02:16:07,080 --> 02:16:08,498 A box has the power 1189 02:16:08,581 --> 02:16:10,500 to reinstate anterior particle relationships. 1190 02:16:10,667 --> 02:16:12,502 So, you mean in the way that particles of matter 1191 02:16:12,627 --> 02:16:13,753 can't be created or destroyed, 1192 02:16:13,878 --> 02:16:15,880 their relations just transform. 1193 02:16:16,006 --> 02:16:18,842 Burn down a house, the particles still exist. 1194 02:16:18,925 --> 02:16:21,511 Particles of house become particles of smoke. 1195 02:16:21,636 --> 02:16:25,849 Anybody with a match can turn a house to smoke. 1196 02:16:27,726 --> 02:16:29,477 But a Mother Box... 1197 02:16:29,602 --> 02:16:31,980 ...turns smoke back into a house. 1198 02:16:37,819 --> 02:16:40,572 I know we're all thinking the same thing right now. 1199 02:16:41,740 --> 02:16:44,534 Who's gonna say it? I'm not gonna say it. 1200 02:17:11,561 --> 02:17:12,854 Who is it? 1201 02:17:13,438 --> 02:17:14,731 Martha. 1202 02:17:19,402 --> 02:17:20,737 Hi. 1203 02:17:22,489 --> 02:17:23,948 Hi. 1204 02:17:32,916 --> 02:17:34,501 I went to the Daily Planet 1205 02:17:34,626 --> 02:17:38,088 to finally pick up Clark's things. 1206 02:17:39,506 --> 02:17:42,926 I don't know why, nowhere to put them now. 1207 02:17:45,595 --> 02:17:47,430 I lost the farm. 1208 02:17:48,765 --> 02:17:51,017 I'd been behind on the payments for a while. 1209 02:17:52,352 --> 02:17:53,728 Truth is, the house is too big 1210 02:17:53,853 --> 02:17:56,564 for me to live in by myself anyway. 1211 02:17:56,689 --> 02:17:59,609 Well, you know you're welcome to stay here any time 1212 02:17:59,692 --> 02:18:01,820 for as long as you need. 1213 02:18:02,779 --> 02:18:05,698 Thank you, Lois. That's very kind. 1214 02:18:07,075 --> 02:18:09,369 But I've found a little place that suits me just fine, 1215 02:18:09,494 --> 02:18:11,454 right by the diner. 1216 02:18:11,538 --> 02:18:12,956 I'm not here for help. 1217 02:18:14,124 --> 02:18:16,626 I'm here because 1218 02:18:16,751 --> 02:18:19,462 when I saw Mr. Perry, he told me that 1219 02:18:20,672 --> 02:18:23,758 you haven't been to work since Clark died. 1220 02:18:28,430 --> 02:18:30,098 I can't. 1221 02:18:36,855 --> 02:18:39,524 The whole world is mourning. 1222 02:18:40,817 --> 02:18:43,111 Grieving over a symbol. 1223 02:18:43,236 --> 02:18:47,490 Everywhere I go, everywhere I look, I see that "S." 1224 02:18:48,408 --> 02:18:50,451 I hear what people say. 1225 02:18:50,535 --> 02:18:52,537 They talk like they knew him. 1226 02:18:53,538 --> 02:18:55,957 But they didn't know Clark. 1227 02:18:57,417 --> 02:18:59,711 And I can't stop them 1228 02:18:59,836 --> 02:19:04,215 and look at them and tell them how proud I am of my son. 1229 02:19:06,259 --> 02:19:08,678 You're the only one who knows. 1230 02:19:08,803 --> 02:19:11,514 Who feels what I do. 1231 02:19:12,557 --> 02:19:15,727 Burdened by a secret on top of grief. 1232 02:19:18,688 --> 02:19:22,192 I came all this way because I wanted... 1233 02:19:22,275 --> 02:19:24,235 because I wanted to see you. 1234 02:19:25,487 --> 02:19:27,488 Tell you... 1235 02:19:27,530 --> 02:19:29,616 I understand. 1236 02:19:31,367 --> 02:19:33,328 I... 1237 02:19:33,453 --> 02:19:37,498 will never love anybody the way that I love your son. 1238 02:19:41,127 --> 02:19:43,087 And I just miss him. 1239 02:19:44,255 --> 02:19:46,674 I miss him so much. 1240 02:19:53,223 --> 02:19:54,891 So do I, sweetheart. 1241 02:19:59,354 --> 02:20:04,234 Martha, you know if there's anything you need, I'm here. 1242 02:20:07,737 --> 02:20:10,615 There is something you can do for me, honey. 1243 02:20:12,784 --> 02:20:15,161 Come back to the living. 1244 02:20:54,951 --> 02:20:58,037 The world needs you, too, Lois. 1245 02:21:01,666 --> 02:21:03,001 The dead are dead. 1246 02:21:03,126 --> 02:21:05,128 The box brought Victor back. 1247 02:21:05,253 --> 02:21:06,713 Victor wasn't dead. 1248 02:21:06,838 --> 02:21:08,631 Life is either one or zero. 1249 02:21:08,756 --> 02:21:11,718 It's to be or not to be. Not both. 1250 02:21:11,843 --> 02:21:13,469 Can you operate this box, Victor? 1251 02:21:13,594 --> 02:21:14,887 Of course. 1252 02:21:15,013 --> 02:21:17,307 But we don't know enough about Kryptonian biology. 1253 02:21:17,390 --> 02:21:19,642 There's no telling what's gonna happen. 1254 02:21:21,227 --> 02:21:22,812 Okay, but... 1255 02:21:22,979 --> 02:21:27,275 I mean, we have to try. Don't we? We have to try. 1256 02:21:27,317 --> 02:21:28,610 What do we have to lose? 1257 02:21:28,735 --> 02:21:31,195 We cannot try unless we activate the box. 1258 02:21:31,321 --> 02:21:32,739 As soon as it wakes up... 1259 02:21:32,864 --> 02:21:35,325 ...the enemy sees it, comes, 1260 02:21:35,491 --> 02:21:37,952 activates The Unity. The end. 1261 02:21:38,036 --> 02:21:40,371 So, what we have to lose is the entire planet 1262 02:21:40,496 --> 02:21:42,665 to a bunch of genocidal aliens. That's good to know. 1263 02:21:42,790 --> 02:21:45,168 Even if Superman could return, 1264 02:21:45,335 --> 02:21:47,462 who's to say that he could defeat them? 1265 02:21:47,545 --> 02:21:49,547 The Mother Box did. 1266 02:21:49,672 --> 02:21:51,841 Victor's father activated a Mother Box 1267 02:21:51,966 --> 02:21:54,802 more than a year ago when Superman was still alive. 1268 02:21:54,927 --> 02:21:56,846 Didn't call out to Steppenwolf. 1269 02:21:56,929 --> 02:21:58,514 None of the boxes did. Not until... 1270 02:21:58,639 --> 02:22:00,683 Not until Superman died. 1271 02:22:00,850 --> 02:22:03,144 Not until Superman died. 1272 02:22:03,269 --> 02:22:05,229 It's like they were afraid of him? 1273 02:22:05,355 --> 02:22:08,358 Yes, they were afraid of him. 1274 02:22:11,402 --> 02:22:13,196 This is the only way. 1275 02:22:14,530 --> 02:22:18,701 There are six, not five. There is no us without him. 1276 02:22:34,884 --> 02:22:36,886 Cross this one off the bucket list. 1277 02:22:36,969 --> 02:22:40,973 Exhume Superman from the grave. Check. 1278 02:22:42,642 --> 02:22:45,353 You know we could do this in a nanosecond, right? 1279 02:22:46,104 --> 02:22:47,397 We could. 1280 02:22:54,904 --> 02:22:56,739 He was my hero. 1281 02:22:59,283 --> 02:23:00,410 All right. 1282 02:23:03,955 --> 02:23:07,208 An Amazon working with an Atlantean. 1283 02:23:07,291 --> 02:23:08,459 Half-Atlantean. 1284 02:23:10,253 --> 02:23:13,464 How many thousands of years since our people spoke? 1285 02:23:13,589 --> 02:23:17,719 I don't know. I'm not exactly close to mine. 1286 02:23:17,802 --> 02:23:20,638 I hate Atlanteans as much as you Amazons do. 1287 02:23:20,763 --> 02:23:22,932 Hate is useless. 1288 02:23:26,102 --> 02:23:27,270 Yep. 1289 02:23:28,604 --> 02:23:30,231 No, thank you. 1290 02:23:34,652 --> 02:23:35,778 You know, my father told me 1291 02:23:35,903 --> 02:23:37,822 there's a saying in Atlantis... 1292 02:23:39,282 --> 02:23:41,576 "None are taken back from the darkness. 1293 02:23:41,659 --> 02:23:42,869 "Not without..." 1294 02:23:42,994 --> 02:23:44,495 "Not without giving one up in return." 1295 02:23:46,747 --> 02:23:48,332 We say the same thing. 1296 02:23:50,918 --> 02:23:52,670 How about that? 1297 02:23:52,795 --> 02:23:54,839 Wonder Woman. 1298 02:23:55,965 --> 02:23:57,258 What do you think, man? 1299 02:23:57,341 --> 02:24:00,136 You think she'd ever go for a younger guy? 1300 02:24:00,261 --> 02:24:03,097 She's 5,000 years old, Barry. 1301 02:24:04,807 --> 02:24:06,851 Every guy's a younger guy. 1302 02:24:08,644 --> 02:24:09,729 Jesus. 1303 02:24:11,314 --> 02:24:13,107 Oh, Christ. 1304 02:24:15,359 --> 02:24:18,070 Oh, bloody... 1305 02:24:19,363 --> 02:24:20,448 Any luck? 1306 02:24:20,490 --> 02:24:21,866 If by "luck" you mean 1307 02:24:21,991 --> 02:24:24,785 "chance in hell we'll get it flying today," 1308 02:24:24,911 --> 02:24:27,121 then, no. No luck. 1309 02:24:27,872 --> 02:24:29,332 It's okay. 1310 02:24:29,415 --> 02:24:31,375 It doesn't matter. We're just gonna take the body 1311 02:24:31,501 --> 02:24:32,627 to the Kryptonian ship. 1312 02:24:32,752 --> 02:24:34,003 It's basically an organic computer. 1313 02:24:34,128 --> 02:24:35,838 It can talk directly to the Mother Box. 1314 02:24:36,005 --> 02:24:38,591 What? The way it talked to Lex Luthor? 1315 02:24:38,716 --> 02:24:39,967 Something like that. 1316 02:24:40,092 --> 02:24:43,888 Huh. What could possibly go wrong? 1317 02:24:50,394 --> 02:24:52,021 Master Wayne... 1318 02:24:53,898 --> 02:24:55,274 you did it! 1319 02:24:55,399 --> 02:24:58,945 You put the team together to fight this war. 1320 02:24:59,070 --> 02:25:02,156 You've fulfilled your promise. 1321 02:25:02,240 --> 02:25:06,160 But to try to do that... I mean... 1322 02:25:06,285 --> 02:25:09,205 your guilt's overcome your reason. 1323 02:25:09,372 --> 02:25:11,499 Not all the king's horses nor all the king's men... 1324 02:25:11,541 --> 02:25:14,877 Alfred, for once, I'm operating strictly on faith, 1325 02:25:15,002 --> 02:25:17,380 not on reason. 1326 02:25:17,505 --> 02:25:21,843 But if you start playing with this little box of tricks, 1327 02:25:21,968 --> 02:25:24,095 I mean, it could be the end of everything. 1328 02:25:24,220 --> 02:25:27,181 How do you know your team's strong enough? 1329 02:25:27,265 --> 02:25:29,809 If you can't bring down the charging bull, 1330 02:25:29,934 --> 02:25:31,727 then don't wave the red cape at it. 1331 02:25:31,811 --> 02:25:33,521 You do when it's this red cape. 1332 02:25:33,604 --> 02:25:35,898 This red cape charges back. 1333 02:25:50,538 --> 02:25:51,622 Okay. 1334 02:25:58,462 --> 02:26:00,965 You were right, Dr. Stone. The tests came back negative. 1335 02:26:01,090 --> 02:26:02,592 Everyone's clear, including you. 1336 02:26:02,758 --> 02:26:05,428 Just to be on the safe side, we swept the entire facility. 1337 02:26:05,511 --> 02:26:07,430 Well, thank you, Thomas. That means I'm free to go? 1338 02:26:07,513 --> 02:26:08,472 Absolutely. 1339 02:26:12,310 --> 02:26:13,561 - Thanks. - Listen up, everyone. 1340 02:26:13,644 --> 02:26:16,272 You're all clear. So, gather your things. 1341 02:26:16,397 --> 02:26:17,940 If you need more medical attention... 1342 02:26:18,024 --> 02:26:21,944 Arthur, yes, your opinion. Less preposterous. Option "A"? 1343 02:26:22,028 --> 02:26:23,446 - Definitely not "A." - Okay. 1344 02:26:23,571 --> 02:26:26,616 Or... "B"? 1345 02:26:28,159 --> 02:26:29,535 Let me see "A" again? 1346 02:26:35,041 --> 02:26:38,336 Right. We should get dressed. 1347 02:26:40,296 --> 02:26:42,423 I'm always dressed. 1348 02:27:09,575 --> 02:27:10,660 ID? 1349 02:27:10,785 --> 02:27:12,078 ID. 1350 02:27:15,039 --> 02:27:16,332 Aye, aye. 1351 02:27:18,584 --> 02:27:19,960 "Aye, aye"? 1352 02:27:42,984 --> 02:27:44,235 Okay. 1353 02:27:44,360 --> 02:27:46,570 "Okay"? Oh, gee, okay! 1354 02:27:53,619 --> 02:27:54,537 Doc! 1355 02:27:54,620 --> 02:27:56,080 They let you out of quarantine. 1356 02:27:56,205 --> 02:27:57,623 Yeah, I finally got them to listen to reason. 1357 02:27:57,748 --> 02:27:59,875 Now, let's take a look and see what progress we've made 1358 02:28:00,001 --> 02:28:01,293 with the electron-laser. 1359 02:28:01,419 --> 02:28:03,546 We've made some real progress. Let me show you. 1360 02:28:18,519 --> 02:28:21,480 Victor, clear this place out. 1361 02:28:21,605 --> 02:28:22,940 Done. 1362 02:28:26,736 --> 02:28:29,447 Code Red. Contamination breach. 1363 02:28:29,572 --> 02:28:32,783 All personnel evacuate immediately. 1364 02:28:32,908 --> 02:28:35,202 Bio red five. 1365 02:28:35,286 --> 02:28:37,663 The sensor's picking up a microbe of alien origin. 1366 02:28:37,788 --> 02:28:40,708 A microbe of alien origin? That doesn't make any sense. 1367 02:28:40,791 --> 02:28:42,042 It's gotta be a false alarm. 1368 02:28:42,168 --> 02:28:44,211 All right, people, shut it down. Let's go. 1369 02:28:44,253 --> 02:28:45,629 - Ryan, we just had it swept. - We have to go, Doc. 1370 02:28:45,755 --> 02:28:47,089 Think about it. It's gotta be a false alarm. 1371 02:28:47,214 --> 02:28:48,549 - Let's go, Doc. - Think about it. 1372 02:28:48,632 --> 02:28:49,717 Full base evacuation! Everyone out! 1373 02:28:49,759 --> 02:28:51,844 Look, wait! Wait! Shit! 1374 02:28:51,969 --> 02:28:54,930 Remain calm and proceed to the nearest exit. 1375 02:29:01,312 --> 02:29:03,105 Attention, all personnel. 1376 02:29:03,230 --> 02:29:06,108 Go! Go! Everybody out! Come on! Move! 1377 02:29:06,192 --> 02:29:07,943 Move! Come on! Go, go! 1378 02:29:08,027 --> 02:29:09,612 Everybody out! Go! 1379 02:29:29,799 --> 02:29:32,593 Yes! Gotcha! 1380 02:29:32,718 --> 02:29:35,513 Post Commander, this is Dr. Silas Stone, do you read? 1381 02:29:35,638 --> 02:29:38,015 - Go ahead, Dr. Stone. - This is a false alarm. 1382 02:29:38,140 --> 02:29:40,935 Someone has hacked into the system. We must alert... 1383 02:29:50,903 --> 02:29:52,404 Victor. 1384 02:29:53,864 --> 02:29:56,367 Dr. Stone, you there? I don't copy. 1385 02:29:57,201 --> 02:29:58,285 I was mistaken. 1386 02:29:58,369 --> 02:29:59,578 The alarm's legit. 1387 02:29:59,703 --> 02:30:01,372 Everybody out. And nobody, I repeat, 1388 02:30:01,497 --> 02:30:04,291 nobody comes back inside without my say-so. 1389 02:30:04,375 --> 02:30:05,751 Roger that, sir. 1390 02:30:15,845 --> 02:30:17,513 Get the civilians out! 1391 02:30:17,638 --> 02:30:18,806 Let's go! Let's go! 1392 02:30:23,185 --> 02:30:24,353 - Everybody got out okay? - I think so. 1393 02:30:24,478 --> 02:30:25,646 - Everybody? - Yes. 1394 02:30:58,929 --> 02:31:00,306 This way. 1395 02:31:10,816 --> 02:31:13,569 It knows he's here. 1396 02:31:13,736 --> 02:31:15,863 Ooh, that's intense. 1397 02:31:20,242 --> 02:31:22,369 This is amazing. 1398 02:31:23,078 --> 02:31:24,246 This is crazy. 1399 02:31:24,371 --> 02:31:26,290 Oh, what? Now it's crazy? 1400 02:31:26,415 --> 02:31:28,876 You two lunatics better know what you're doing. 1401 02:33:54,730 --> 02:33:56,732 Systems coming online. 1402 02:33:59,485 --> 02:34:01,779 Welcome, Victor. 1403 02:34:01,904 --> 02:34:03,822 Would you like to assume command? 1404 02:34:03,947 --> 02:34:04,907 I'm in. 1405 02:34:14,083 --> 02:34:16,418 The ship says the Mother Box is hostile. 1406 02:34:16,585 --> 02:34:18,128 I can override the security protocols, 1407 02:34:18,253 --> 02:34:19,963 but there's no time to repair all the electrical damage 1408 02:34:20,089 --> 02:34:21,465 that Luthor's power surges caused 1409 02:34:21,590 --> 02:34:22,716 to the primary capacitors. 1410 02:34:22,800 --> 02:34:23,759 English. 1411 02:34:23,926 --> 02:34:26,428 There's not enough charge to wake the box. 1412 02:34:26,553 --> 02:34:28,597 I might be able to do it. 1413 02:34:30,724 --> 02:34:32,684 I mean, I might be able to jump-start it. 1414 02:34:32,810 --> 02:34:34,061 I don't like to break this rule, 1415 02:34:34,144 --> 02:34:35,938 but when I approach the speed of light, I... 1416 02:34:36,021 --> 02:34:37,606 Look, crazy things happen to time, 1417 02:34:37,773 --> 02:34:40,275 but if I do it, I create massive electrical power. 1418 02:34:40,359 --> 02:34:42,152 I could backtrack, if I can get enough distance, 1419 02:34:42,277 --> 02:34:44,613 I can conduct a significant electrical current. 1420 02:34:44,780 --> 02:34:47,449 I might be able to wake the box, if that's... 1421 02:34:47,574 --> 02:34:49,243 still what we want? 1422 02:34:49,326 --> 02:34:50,828 It is. Do it. 1423 02:34:55,582 --> 02:34:56,917 Hey, Miss Lane. 1424 02:34:57,000 --> 02:34:57,793 Morning. 1425 02:34:57,960 --> 02:34:59,461 I didn't think you were coming. 1426 02:35:00,379 --> 02:35:01,964 One last time. 1427 02:35:18,897 --> 02:35:22,651 I see engines, so this must be the end of the line. So I'm... 1428 02:35:22,818 --> 02:35:23,986 I'm in position. 1429 02:35:26,738 --> 02:35:29,324 - Ready to initiate - drop sequence. 1430 02:35:29,408 --> 02:35:31,034 The Mother Box is ready. 1431 02:35:50,220 --> 02:35:52,139 The ship's begging me not to wake the box. 1432 02:35:52,222 --> 02:35:54,141 - This action - is irreversible. 1433 02:35:54,224 --> 02:35:55,559 It's afraid. It knows Steppenwolf will come for it. 1434 02:35:55,684 --> 02:35:57,478 We know that already. Continue. 1435 02:35:57,561 --> 02:36:00,189 I strongly advise against activation. 1436 02:36:00,272 --> 02:36:01,940 Barry, I'm initiating the countdown. 1437 02:36:02,065 --> 02:36:03,692 - This action - is irreversible. 1438 02:36:03,859 --> 02:36:04,985 - Five... - Five... 1439 02:36:05,068 --> 02:36:06,487 - Five... - Apokoliptian technology 1440 02:36:06,570 --> 02:36:07,613 - is hostile. - This is a bad idea. 1441 02:36:07,738 --> 02:36:08,447 No, it isn't. Keep going. 1442 02:36:08,572 --> 02:36:09,531 Four... 1443 02:36:09,698 --> 02:36:11,158 - Four... - Four... 1444 02:36:11,283 --> 02:36:12,701 I strongly advise against activation. 1445 02:36:12,826 --> 02:36:14,036 - We need to abort, now. - Just do it. 1446 02:36:14,203 --> 02:36:15,329 - Three... - Three... 1447 02:36:15,412 --> 02:36:16,413 Three... 1448 02:36:16,538 --> 02:36:18,248 - Two... - Two... 1449 02:36:18,373 --> 02:36:20,292 - Two... - This course is irreversible. 1450 02:36:20,417 --> 02:36:21,710 - One. - One. 1451 02:36:22,544 --> 02:36:23,962 One. 1452 02:36:24,087 --> 02:36:25,380 - This action - is irreversible. 1453 02:37:54,386 --> 02:37:55,971 - Victor? - No. 1454 02:37:56,972 --> 02:37:57,931 Go? 1455 02:39:28,438 --> 02:39:31,191 - The future - has taken root in the present. 1456 02:39:31,316 --> 02:39:33,193 Get down! 1457 02:41:17,380 --> 02:41:18,965 He's back. 1458 02:41:45,617 --> 02:41:48,537 Something's wrong. He's scanning us. 1459 02:41:50,705 --> 02:41:52,165 What? 1460 02:42:07,055 --> 02:42:08,223 Victor? 1461 02:42:09,432 --> 02:42:10,433 Victor? 1462 02:42:12,727 --> 02:42:14,604 - Shit. - What are you doing? 1463 02:42:14,729 --> 02:42:16,356 It's my auto-defense system. 1464 02:42:16,439 --> 02:42:17,566 It senses danger. 1465 02:42:17,649 --> 02:42:18,900 Victor, no! Victor! 1466 02:42:19,025 --> 02:42:20,944 - I can't control it. - Don't! 1467 02:42:33,123 --> 02:42:34,416 Kal-El, no! 1468 02:42:42,591 --> 02:42:44,885 He's confused. He doesn't know who he is. 1469 02:42:51,891 --> 02:42:54,561 Arthur, we need to restrain him. 1470 02:43:25,008 --> 02:43:28,928 Kal-El, the last Son of Krypton... 1471 02:43:29,846 --> 02:43:32,140 remember who you are. 1472 02:43:33,683 --> 02:43:34,934 Tell me who you... 1473 02:45:09,904 --> 02:45:13,074 Let's go! 1474 02:45:20,081 --> 02:45:21,541 You should probably move. 1475 02:45:25,044 --> 02:45:26,212 - You all right? - Yeah. 1476 02:45:26,296 --> 02:45:29,090 Get up. Take cover back there. Go. 1477 02:46:21,059 --> 02:46:23,269 Please don't make me do this. 1478 02:46:55,844 --> 02:46:57,178 Clark. 1479 02:46:58,054 --> 02:46:59,347 Clark, no. 1480 02:47:10,859 --> 02:47:12,068 Clark. 1481 02:47:12,193 --> 02:47:14,028 No. 1482 02:47:14,195 --> 02:47:15,905 This world needs you. 1483 02:47:21,160 --> 02:47:22,495 Clark. 1484 02:47:22,620 --> 02:47:23,705 Clark. 1485 02:47:23,788 --> 02:47:25,874 Whoa! Hold your fire! Hold your fire! 1486 02:47:27,375 --> 02:47:28,668 Clark. 1487 02:47:32,046 --> 02:47:33,506 Please. 1488 02:48:07,749 --> 02:48:08,791 Please. 1489 02:48:19,969 --> 02:48:21,262 Please. 1490 02:48:21,930 --> 02:48:24,057 Just go. 1491 02:48:24,140 --> 02:48:25,308 Yeah. 1492 02:48:26,017 --> 02:48:27,435 Let's go. 1493 02:48:59,968 --> 02:49:02,136 I'm so sorry. 1494 02:49:11,354 --> 02:49:12,438 Take cover! 1495 02:49:12,480 --> 02:49:15,108 - He's coming. - The Mother Box. 1496 02:49:15,149 --> 02:49:16,401 Where is it? 1497 02:49:26,953 --> 02:49:28,288 Come on. 1498 02:49:29,038 --> 02:49:30,873 Come on. 1499 02:49:55,565 --> 02:49:59,318 Attention, security breach detected. 1500 02:49:59,444 --> 02:50:01,654 Sector Four, Level Three. 1501 02:50:01,738 --> 02:50:04,741 Implement lockdown procedures immediately. 1502 02:50:33,227 --> 02:50:34,854 Give me the Mother Box. 1503 02:50:48,076 --> 02:50:49,577 No, no, no. 1504 02:50:52,038 --> 02:50:53,748 Dad, wait! Don't! 1505 02:51:34,038 --> 02:51:36,958 So begins the end. 1506 02:51:42,547 --> 02:51:43,965 Victor? 1507 02:51:46,259 --> 02:51:49,720 Vic... Whoa, Victor. Are you okay, man? Come on. 1508 02:51:55,518 --> 02:51:56,853 Victor? 1509 02:51:58,020 --> 02:51:59,397 He's dead. 1510 02:51:59,522 --> 02:52:00,648 What? 1511 02:52:01,566 --> 02:52:02,900 My father. 1512 02:52:04,318 --> 02:52:07,780 I didn't save him. I couldn't. 1513 02:52:07,864 --> 02:52:09,490 Oh, my God. 1514 02:52:16,080 --> 02:52:18,124 His father's dead 'cause of us. 1515 02:52:18,249 --> 02:52:20,042 I told you waking that box was a bad idea. 1516 02:52:20,168 --> 02:52:21,627 It wasn't a bad idea. 1517 02:52:21,752 --> 02:52:24,088 We needed Superman. We still do. 1518 02:52:24,213 --> 02:52:26,674 Well, whatever returned, it isn't Superman. 1519 02:52:26,757 --> 02:52:30,011 His body and powers, maybe. But it ain't him. 1520 02:52:30,094 --> 02:52:31,637 It is him. 1521 02:52:31,679 --> 02:52:34,182 He recognized Lois Lane. 1522 02:52:34,348 --> 02:52:36,476 - Who? - The woman he loves. 1523 02:52:36,559 --> 02:52:38,853 - He remembers her. - Nah. 1524 02:52:39,020 --> 02:52:40,855 He went to her 'cause she wasn't afraid of him. 1525 02:52:40,938 --> 02:52:42,648 It's called instinct, Diana. 1526 02:52:49,822 --> 02:52:51,699 Wait, where did Steppenwolf go? 1527 02:52:51,824 --> 02:52:53,451 He's gone back to his base 1528 02:52:53,576 --> 02:52:55,119 to assemble the three boxes. 1529 02:52:55,244 --> 02:52:56,704 And we don't know where his base is. 1530 02:52:56,871 --> 02:52:58,539 - Or how long until... - Hours. 1531 02:52:58,623 --> 02:53:00,208 The boxes synchronize, Unity forms, 1532 02:53:00,291 --> 02:53:03,544 we don't get there in time to stop it, the planet dies. 1533 02:53:03,628 --> 02:53:05,838 This is not your... 1534 02:53:08,007 --> 02:53:09,508 He knew. 1535 02:53:09,592 --> 02:53:11,135 He knew, he knew, he knew. 1536 02:53:11,260 --> 02:53:13,221 He wasn't trying to destroy the box... 1537 02:53:13,304 --> 02:53:15,264 he was trying to superheat it. 1538 02:53:15,389 --> 02:53:16,641 He made the core the hottest thing 1539 02:53:16,766 --> 02:53:17,892 on Earth outside of a nuclear reactor. 1540 02:53:18,017 --> 02:53:19,018 Now, anything that hot would have to... 1541 02:53:19,101 --> 02:53:20,311 Blink off the charts 1542 02:53:20,436 --> 02:53:22,563 on a thermal imaging system. 1543 02:53:22,730 --> 02:53:26,025 Your father sacrificed himself to mark that box. 1544 02:53:26,108 --> 02:53:28,069 We have to get back to my lab and use the satellite 1545 02:53:28,194 --> 02:53:30,363 to scan the Earth for thermal anomalies. 1546 02:53:30,488 --> 02:53:31,864 I'm already on it. 1547 02:53:31,948 --> 02:53:33,950 I'm sorry. You have a satellite? 1548 02:53:34,075 --> 02:53:35,368 I have six. 1549 02:53:35,451 --> 02:53:36,702 Right. 1550 02:53:38,120 --> 02:53:40,540 Let's go find the son of a bitch. 1551 02:54:04,814 --> 02:54:07,066 You brought us here. 1552 02:54:07,191 --> 02:54:08,317 You remembered. 1553 02:54:09,277 --> 02:54:10,945 This is home. 1554 02:54:12,697 --> 02:54:14,073 You spoke. 1555 02:54:18,119 --> 02:54:19,996 Did I not before? 1556 02:54:53,863 --> 02:54:56,657 Your mother got behind on the payments. 1557 02:54:57,867 --> 02:55:00,036 She never told anyone. 1558 02:55:01,579 --> 02:55:03,372 I don't understand. 1559 02:55:06,500 --> 02:55:09,003 She's a proud woman, Clark. 1560 02:55:12,131 --> 02:55:13,382 Here. 1561 02:55:28,397 --> 02:55:30,066 She loved it here. 1562 02:55:40,743 --> 02:55:42,411 So did I. 1563 02:55:44,413 --> 02:55:45,956 So did I. 1564 02:56:11,524 --> 02:56:12,775 Wow! 1565 02:56:12,900 --> 02:56:14,568 This is awesome. 1566 02:56:14,735 --> 02:56:16,278 Brought some friends. 1567 02:56:22,785 --> 02:56:25,246 Oh, gosh, yes! Yes! 1568 02:56:25,371 --> 02:56:27,998 Everyone, this is Alfred. I work for him. 1569 02:56:28,124 --> 02:56:30,418 - Alfred. - Good day, ma'am. 1570 02:56:31,710 --> 02:56:33,879 Oh... 1571 02:56:36,841 --> 02:56:38,926 It's badass, Alfred. 1572 02:56:41,595 --> 02:56:44,140 Well, I'll put on the tea. 1573 02:56:44,265 --> 02:56:45,391 Great. 1574 02:56:45,516 --> 02:56:47,226 I don't know where we're gonna find the cups. 1575 02:56:49,937 --> 02:56:52,898 There's the Mother Box, right there. 1576 02:56:52,940 --> 02:56:54,984 Go to visible spectrum. 1577 02:56:56,819 --> 02:56:58,946 Pozharnov. 1578 02:56:59,071 --> 02:57:01,949 Ghost city not far from Moscow. 1579 02:57:02,074 --> 02:57:03,325 It's been abandoned since 1580 02:57:03,451 --> 02:57:04,827 the nuclear accident there 30 years ago. 1581 02:57:04,952 --> 02:57:06,245 Not even the army goes in. 1582 02:57:06,328 --> 02:57:07,746 Right, it's probably so radioactive 1583 02:57:07,872 --> 02:57:09,915 that you grow an extra foot outta your neck. 1584 02:57:09,957 --> 02:57:11,375 Not anymore. 1585 02:57:11,500 --> 02:57:13,252 He's harvested the radiation to build his base. 1586 02:57:13,335 --> 02:57:14,378 Zoom. 1587 02:57:18,215 --> 02:57:19,758 What the hell is he building? 1588 02:57:19,842 --> 02:57:21,302 The Unity's in there. 1589 02:57:21,385 --> 02:57:22,762 We'll attack from above. 1590 02:57:22,845 --> 02:57:25,556 Explosives won't separate the boxes, 1591 02:57:25,681 --> 02:57:27,308 only strengthen their bond. 1592 02:57:27,475 --> 02:57:28,809 What? So we can't blow it up? 1593 02:57:28,893 --> 02:57:30,436 Not from the outside. 1594 02:57:31,937 --> 02:57:34,857 I want to plug into The Unity, one-on-one. 1595 02:57:34,982 --> 02:57:36,358 Fuse with it. 1596 02:57:36,484 --> 02:57:37,818 Weaken its bond from the inside 1597 02:57:37,985 --> 02:57:39,236 so we can break it back into three. 1598 02:57:39,361 --> 02:57:41,447 No, you don't know what you'd be up against. 1599 02:57:41,489 --> 02:57:45,201 You'd have to stream into The Unity by yourself. 1600 02:57:45,326 --> 02:57:47,828 These boxes together are world destroyers. 1601 02:57:47,912 --> 02:57:49,288 A billion years old. 1602 02:57:49,371 --> 02:57:51,457 They'll get inside you and find your weaknesses 1603 02:57:51,582 --> 02:57:54,001 and your fears, and use them to destroy you. 1604 02:57:54,084 --> 02:57:56,337 Just get me in and get me time. 1605 02:57:56,504 --> 02:57:57,630 You could die, Victor. 1606 02:57:57,713 --> 02:58:00,174 If I don't, we all die. Period. 1607 02:58:04,762 --> 02:58:06,555 I got nothing left. 1608 02:58:11,852 --> 02:58:14,021 You wanted me to use these gifts, right? 1609 02:58:16,941 --> 02:58:18,526 That's what I'm gonna do. 1610 02:58:18,692 --> 02:58:21,028 Okay. So... 1611 02:58:21,153 --> 02:58:22,821 if Victor wants to try to save the world 1612 02:58:22,863 --> 02:58:24,406 by fusing with the doom boxes, 1613 02:58:24,532 --> 02:58:27,034 I say we put him in the doom boxes. 1614 02:58:27,117 --> 02:58:29,995 But getting him in means attacking that base. 1615 02:58:30,037 --> 02:58:32,498 Fighting the devil and his army 1616 02:58:32,581 --> 02:58:33,833 in hell. 1617 02:58:33,958 --> 02:58:36,001 I mean, this guy's probably fought 1618 02:58:36,085 --> 02:58:38,337 hundreds of thousands of other superbeings 1619 02:58:38,420 --> 02:58:40,089 on the other planets he's destroyed, right? 1620 02:58:40,214 --> 02:58:41,841 And we have to assume he's won. 1621 02:58:41,882 --> 02:58:43,634 I don't care how many demons he's fought 1622 02:58:43,759 --> 02:58:45,052 in how many hells... 1623 02:58:45,177 --> 02:58:48,889 he's never fought us. Not us united. 1624 02:59:39,148 --> 02:59:40,816 Take that as a "yes." 1625 02:59:40,941 --> 02:59:42,401 What? 1626 02:59:45,821 --> 02:59:47,114 The ring. 1627 02:59:50,784 --> 02:59:52,369 You're really back. 1628 03:00:25,819 --> 03:00:28,155 I have a second chance, Lo. 1629 03:00:30,199 --> 03:00:32,951 And I am not gonna waste it. 1630 03:01:30,968 --> 03:01:32,177 Are you really you? 1631 03:01:32,261 --> 03:01:34,680 I'm really me, Ma. 1632 03:01:52,072 --> 03:01:54,241 Listen, Ma. 1633 03:01:55,576 --> 03:01:57,745 They wanted me back for a reason. 1634 03:01:59,413 --> 03:02:01,206 I need to find out why. 1635 03:02:21,143 --> 03:02:22,644 How's Victor doing? 1636 03:02:26,940 --> 03:02:29,777 You know, wanted to be by himself. 1637 03:02:31,278 --> 03:02:34,406 We're asking a kid who just lost his father 1638 03:02:34,490 --> 03:02:36,075 to go up against the most powerful machines 1639 03:02:36,158 --> 03:02:37,534 in the universe. 1640 03:02:39,244 --> 03:02:40,788 It's not fair. 1641 03:02:42,456 --> 03:02:44,291 I thought you didn't care? 1642 03:02:45,667 --> 03:02:47,252 I never said that. 1643 03:03:00,015 --> 03:03:01,517 What is it? 1644 03:03:03,143 --> 03:03:05,187 Uh... 1645 03:03:05,312 --> 03:03:08,398 I had a dream, like, I don't know, 1646 03:03:08,524 --> 03:03:11,110 almost like a premonition. 1647 03:03:11,235 --> 03:03:14,112 It was the end of the world 1648 03:03:14,196 --> 03:03:17,115 and Barry Allen was right here 1649 03:03:17,199 --> 03:03:21,328 and he said to me, "Lois Lane is the key." 1650 03:03:23,872 --> 03:03:27,209 She is... to Superman. 1651 03:03:28,085 --> 03:03:30,129 Every heart has one. 1652 03:03:30,254 --> 03:03:32,339 I think it's something more. 1653 03:03:33,048 --> 03:03:35,175 Something darker. 1654 03:03:39,138 --> 03:03:40,139 Master Wayne. 1655 03:03:40,222 --> 03:03:42,391 Master Wayne! 1656 03:03:42,516 --> 03:03:44,434 You need to see this. 1657 03:04:07,708 --> 03:04:09,293 You fixed it. 1658 03:04:09,418 --> 03:04:11,336 It wanted to fly. 1659 03:04:12,379 --> 03:04:13,881 Flight is its nature. 1660 03:04:13,964 --> 03:04:15,382 Yours, too. 1661 03:04:21,847 --> 03:04:24,016 He'll be here, Alfred, I know it. 1662 03:04:24,099 --> 03:04:26,351 What makes you so sure? 1663 03:04:26,393 --> 03:04:29,271 Faith, Alfred. Faith. 1664 03:04:51,210 --> 03:04:52,836 At last. 1665 03:04:54,546 --> 03:04:57,466 Prepare for his arrival. 1666 03:04:59,176 --> 03:05:03,430 My redemption is nigh. 1667 03:05:11,146 --> 03:05:12,731 Unite. 1668 03:05:17,903 --> 03:05:20,447 Synchronize. 1669 03:06:04,533 --> 03:06:05,993 The satellites revealed 1670 03:06:06,076 --> 03:06:07,494 he's created a defensive dome. 1671 03:06:07,661 --> 03:06:08,870 It's a design flaw. 1672 03:06:08,996 --> 03:06:11,164 Take out the tower, the dome will fall. 1673 03:06:11,248 --> 03:06:13,458 The enemy never anticipated a frontal assault. 1674 03:06:13,542 --> 03:06:15,127 Right, probably 'cause he didn't think 1675 03:06:15,210 --> 03:06:17,337 anyone would be that nuts. 1676 03:06:18,171 --> 03:06:19,464 Bruce is right. 1677 03:06:19,506 --> 03:06:21,008 We've got to destroy the defensive dome 1678 03:06:21,174 --> 03:06:23,635 so we can reach The Unity before it synchronizes. 1679 03:06:23,719 --> 03:06:25,512 What if the dome's not destroyed? 1680 03:06:25,637 --> 03:06:27,014 It'll be destroyed. 1681 03:06:27,097 --> 03:06:28,974 Once Victor is linked with The Unity 1682 03:06:29,057 --> 03:06:30,309 with Barry's help, 1683 03:06:30,434 --> 03:06:32,310 he'll break through The Unity's defenses. 1684 03:06:32,394 --> 03:06:34,021 Remind me, how's that again? 1685 03:06:34,104 --> 03:06:35,522 Uh, with the power of love. 1686 03:06:35,689 --> 03:06:38,650 - Barry. - With a catastrophic energy surge. 1687 03:06:38,734 --> 03:06:39,985 Good. 1688 03:06:40,152 --> 03:06:41,862 You'll have to run faster than you've ever attempted 1689 03:06:41,945 --> 03:06:44,364 to generate a charge of that size. 1690 03:06:44,531 --> 03:06:46,700 And then you make physical contact with Victor. 1691 03:06:46,783 --> 03:06:49,661 That force should propel him inside The Unity. 1692 03:06:49,786 --> 03:06:51,747 And, Victor, it's all up to you. 1693 03:06:51,872 --> 03:06:55,083 Take it apart from the inside before it synchronizes. 1694 03:06:55,208 --> 03:06:58,920 Whew. We actually finally have a plan. 1695 03:06:59,046 --> 03:07:00,797 We have a plan. 1696 03:07:15,896 --> 03:07:17,981 The symbol of the house of El means hope. 1697 03:07:18,106 --> 03:07:20,233 Embodied within that hope is the fundamental belief 1698 03:07:20,359 --> 03:07:22,361 in the potential of every 1699 03:07:22,362 --> 03:07:24,362 person to be a force for good. 1700 03:07:24,446 --> 03:07:25,864 Clark... 1701 03:07:25,947 --> 03:07:27,574 That's what you can bring them. 1702 03:07:27,699 --> 03:07:29,076 ...you were sent here for a reason. 1703 03:07:29,242 --> 03:07:30,827 You will give the people of Earth 1704 03:07:30,952 --> 03:07:32,996 an ideal to strive towards. 1705 03:07:33,121 --> 03:07:34,247 And even if it takes you 1706 03:07:34,414 --> 03:07:36,041 the rest of your life, 1707 03:07:36,124 --> 03:07:37,668 you owe it to yourself to 1708 03:07:37,669 --> 03:07:39,211 find out what that reason is. 1709 03:07:39,294 --> 03:07:42,047 They will stumble, they will fall. 1710 03:07:42,130 --> 03:07:44,091 - You're gonna - have to make a choice. 1711 03:07:44,257 --> 03:07:46,760 - They will join you - in the sun, Kal. 1712 03:07:46,927 --> 03:07:48,762 A choice of whether to stand proud 1713 03:07:48,929 --> 03:07:50,889 in front of the human race or not. 1714 03:07:50,972 --> 03:07:54,518 You will help them accomplish wonders. 1715 03:08:11,284 --> 03:08:15,914 All the hopes and dreams of Krypton live in you now. 1716 03:08:15,956 --> 03:08:19,584 I'm so proud of you, son. 1717 03:08:19,626 --> 03:08:22,337 Your mother and I loved you. 1718 03:08:22,462 --> 03:08:23,797 Your mother and I knew 1719 03:08:23,880 --> 03:08:26,049 you would change the world. 1720 03:08:27,342 --> 03:08:30,095 Your heart was tested. 1721 03:08:30,178 --> 03:08:32,889 I know it's been hard, Clark. 1722 03:08:33,014 --> 03:08:35,976 But you gave hope to their world. 1723 03:08:36,059 --> 03:08:39,437 You need to show them who you are. 1724 03:08:39,521 --> 03:08:41,690 Love them, Kal. 1725 03:08:41,815 --> 03:08:44,109 The way we loved you. 1726 03:08:46,528 --> 03:08:47,779 Fly, son. 1727 03:08:48,655 --> 03:08:49,990 It's time. 1728 03:09:53,637 --> 03:09:54,930 I'm gonna take out that tower 1729 03:09:55,055 --> 03:09:56,973 and knock down that shield dome. 1730 03:09:57,098 --> 03:09:58,141 Whatever you see, 1731 03:09:59,434 --> 03:10:01,561 stick to the plan. 1732 03:10:03,063 --> 03:10:05,232 It's why I brought you together. 1733 03:10:45,105 --> 03:10:47,107 Bruce, pull back. You're not gonna make it. 1734 03:10:49,985 --> 03:10:52,946 Just have to knock a little louder. 1735 03:11:18,013 --> 03:11:19,472 Kill him! 1736 03:11:19,597 --> 03:11:22,350 Get to the carriage. Defend The Unity. 1737 03:11:27,314 --> 03:11:28,606 Oh, shit. 1738 03:11:48,543 --> 03:11:49,919 The tower's down. 1739 03:11:51,463 --> 03:11:53,381 Do you read me? 1740 03:11:53,506 --> 03:11:54,758 Uh, yeah, loud and clear. 1741 03:11:55,675 --> 03:11:57,135 Are you okay? 1742 03:11:58,345 --> 03:12:01,181 Bruce? Bruce? 1743 03:12:01,264 --> 03:12:02,140 Get to the reactor. 1744 03:12:02,223 --> 03:12:03,725 I'll lure as many of these monsters 1745 03:12:03,850 --> 03:12:05,852 - away from you as I can. - What does that mean? 1746 03:12:08,730 --> 03:12:10,690 Don't worry about me. Get to The Unity. 1747 03:12:13,443 --> 03:12:14,527 They're here. 1748 03:12:14,611 --> 03:12:15,862 Bruce? 1749 03:12:18,698 --> 03:12:20,158 Comm went dead. 1750 03:12:21,743 --> 03:12:23,119 Let's go. 1751 03:13:01,908 --> 03:13:03,910 Come on, follow me, you damn insects. 1752 03:14:23,531 --> 03:14:25,033 Critical damage. 1753 03:15:04,906 --> 03:15:06,241 You really are outta your mind. 1754 03:15:33,017 --> 03:15:34,352 You're welcome. 1755 03:15:34,435 --> 03:15:35,979 My man. 1756 03:17:08,738 --> 03:17:10,490 Yeah, we got this. 1757 03:17:10,615 --> 03:17:11,824 You go do your thing. 1758 03:18:07,755 --> 03:18:09,340 I'm assuming you're Alfred. 1759 03:18:11,092 --> 03:18:12,468 Master Kent. 1760 03:18:14,303 --> 03:18:16,097 He said you'd come. 1761 03:18:17,473 --> 03:18:21,227 Now, let's hope you're not too late. 1762 03:18:31,946 --> 03:18:34,323 Hey! 1763 03:18:42,248 --> 03:18:43,666 Remember me? 1764 03:18:46,127 --> 03:18:47,628 Round two? 1765 03:18:48,254 --> 03:18:49,547 Hell yeah. 1766 03:19:10,985 --> 03:19:12,445 Shall we? 1767 03:19:13,279 --> 03:19:15,531 Tell me, Amazon, 1768 03:19:15,656 --> 03:19:19,702 why did you abandon your own sisters 1769 03:19:19,827 --> 03:19:22,413 only to cast your lot with these creatures 1770 03:19:22,497 --> 03:19:25,958 clinging to their puny lives? 1771 03:19:26,084 --> 03:19:29,045 You weren't there to protect them from me. 1772 03:19:29,170 --> 03:19:31,088 And, sadly, you could have. 1773 03:20:12,171 --> 03:20:13,881 Barry, I'm in position. 1774 03:20:32,567 --> 03:20:35,903 Okay. I built the charge. 1775 03:20:36,028 --> 03:20:36,988 You call it. 1776 03:20:38,197 --> 03:20:40,032 Barry, on one. 1777 03:20:40,157 --> 03:20:42,368 Three, two... 1778 03:20:45,246 --> 03:20:46,998 Get the hell off me! 1779 03:20:47,123 --> 03:20:48,583 Victor! 1780 03:21:24,660 --> 03:21:26,287 Victor! 1781 03:21:29,999 --> 03:21:32,376 I watched your island burn, 1782 03:21:32,501 --> 03:21:36,088 your sisters begging for their lives. 1783 03:21:36,255 --> 03:21:38,841 As did your mother. 1784 03:21:38,966 --> 03:21:39,926 Liar. 1785 03:22:05,534 --> 03:22:07,703 I can't maintain this! 1786 03:22:08,454 --> 03:22:09,622 Victor! 1787 03:22:31,644 --> 03:22:33,980 Victor, I can't hold this! 1788 03:22:40,486 --> 03:22:42,905 For Darkseid. 1789 03:22:46,909 --> 03:22:49,370 Not impressed. 1790 03:23:33,789 --> 03:23:34,957 All right. 1791 03:23:35,082 --> 03:23:36,709 Kal-El. 1792 03:24:14,955 --> 03:24:17,374 Barry, I'm connected to The Unity. 1793 03:24:17,416 --> 03:24:19,585 I need the charge to get inside. 1794 03:24:41,440 --> 03:24:42,650 Barry? 1795 03:24:43,442 --> 03:24:45,236 Barry, are you okay? 1796 03:24:46,654 --> 03:24:47,738 Barry! 1797 03:24:47,863 --> 03:24:49,031 I got the wind knocked out of me. 1798 03:24:49,156 --> 03:24:51,909 Need a few seconds, that's all! 1799 03:25:08,801 --> 03:25:11,345 Barry, where are you? It's almost synchronized! 1800 03:25:11,470 --> 03:25:13,472 Okay, okay. 1801 03:25:13,597 --> 03:25:16,308 Oh, my God. Gotta heal, Barry. 1802 03:25:16,434 --> 03:25:18,144 Heal. Heal. 1803 03:25:44,003 --> 03:25:45,671 Barry! 1804 03:25:58,434 --> 03:26:00,186 It's too late. 1805 03:26:01,437 --> 03:26:02,980 Oh, no. 1806 03:26:07,193 --> 03:26:08,861 He's here! 1807 03:26:38,265 --> 03:26:39,516 Okay. 1808 03:26:39,642 --> 03:26:40,684 Just gotta go faster than the speed of light. 1809 03:26:40,768 --> 03:26:41,852 Far beyond the speed of light. 1810 03:26:41,894 --> 03:26:43,062 You gotta break the rule, Barry, 1811 03:26:43,229 --> 03:26:45,272 and you gotta do it now. 1812 03:26:58,369 --> 03:27:00,079 Dad... 1813 03:27:03,791 --> 03:27:06,252 whatever happens, I want you to know 1814 03:27:08,837 --> 03:27:11,006 your kid was one of them, Dad. 1815 03:27:13,968 --> 03:27:16,095 One of the best of the best. 1816 03:28:11,525 --> 03:28:14,111 Make your own future. 1817 03:28:20,534 --> 03:28:22,661 Make your own past. 1818 03:28:26,915 --> 03:28:30,753 It's all right now. 1819 03:29:17,591 --> 03:29:19,927 We've been waiting for you, Victor. 1820 03:29:20,886 --> 03:29:23,097 My broken boy. 1821 03:29:25,265 --> 03:29:27,518 You don't have to be alone anymore. 1822 03:29:27,559 --> 03:29:29,311 We'll be together again. 1823 03:29:36,985 --> 03:29:39,238 We can put it back, Vic. 1824 03:29:43,575 --> 03:29:45,828 Make you whole again. 1825 03:29:57,548 --> 03:29:59,299 I'm not broken. 1826 03:30:08,934 --> 03:30:10,978 And I'm not alone. 1827 03:30:27,661 --> 03:30:28,829 Superman! 1828 03:31:59,419 --> 03:32:01,380 I told you 1829 03:32:02,881 --> 03:32:05,551 Steppenwolf would fail. 1830 03:32:06,552 --> 03:32:10,222 Yes. Yes, you did. 1831 03:32:10,806 --> 03:32:12,099 My master, 1832 03:32:12,224 --> 03:32:16,019 now that the Mother Boxes have been destroyed, 1833 03:32:16,061 --> 03:32:20,023 how will you retrieve your great prize? 1834 03:32:20,107 --> 03:32:23,443 Anti-Life is found, DeSaad. 1835 03:32:23,569 --> 03:32:28,490 And we will stop at nothing to possess it. 1836 03:32:31,618 --> 03:32:33,245 Ready the armada. 1837 03:32:33,996 --> 03:32:36,498 We will use the old ways. 1838 03:35:00,600 --> 03:35:03,103 Your father twice over. 1839 03:35:10,193 --> 03:35:12,738 Now, let me speak to you from my heart, 1840 03:35:12,821 --> 03:35:14,698 not as a scientist, 1841 03:35:14,740 --> 03:35:16,324 as a father. 1842 03:35:16,450 --> 03:35:19,703 Your father twice over. 1843 03:35:21,955 --> 03:35:25,542 I brought you into the world and back to it. 1844 03:35:25,625 --> 03:35:29,880 You can't imagine how proud I am of who you are. 1845 03:35:29,963 --> 03:35:31,673 Have always been. 1846 03:35:33,633 --> 03:35:35,093 So many years with you I wasted. 1847 03:35:35,177 --> 03:35:38,680 So many wrongs I've left un-righted. 1848 03:35:41,099 --> 03:35:43,310 Everything breaks, Victor. 1849 03:35:43,435 --> 03:35:45,812 Everything changes. 1850 03:35:56,406 --> 03:35:58,617 I gotta go see my father. 1851 03:36:34,152 --> 03:36:36,029 The world is hurt. 1852 03:36:36,154 --> 03:36:37,239 Broken. 1853 03:36:37,364 --> 03:36:39,699 Unexchangeable. 1854 03:36:39,825 --> 03:36:41,701 Ship's all yours now, kid. 1855 03:36:41,827 --> 03:36:43,245 You're the boss. 1856 03:36:45,330 --> 03:36:48,625 "Ryan Choi, Director of Nanotechnology." 1857 03:36:48,750 --> 03:36:50,335 That's your thing. 1858 03:36:50,919 --> 03:36:52,796 Uh, yep. 1859 03:36:52,879 --> 03:36:54,548 That's my thing. 1860 03:36:59,427 --> 03:37:03,682 But the world's not fixed in the past, 1861 03:37:03,765 --> 03:37:04,850 only the future. 1862 03:37:06,601 --> 03:37:10,480 The not yet. The now. 1863 03:37:10,605 --> 03:37:14,150 Wow. Must be 100, 150 feet. 1864 03:37:14,234 --> 03:37:15,694 Must be. 1865 03:37:16,862 --> 03:37:18,363 Big round table. 1866 03:37:18,488 --> 03:37:20,782 Six chairs, right there. 1867 03:37:21,908 --> 03:37:23,577 But room for more. 1868 03:37:25,912 --> 03:37:27,622 But room for more. 1869 03:37:28,665 --> 03:37:30,250 God help us. 1870 03:37:32,085 --> 03:37:34,254 The now is you. 1871 03:37:37,883 --> 03:37:39,175 What? 1872 03:37:39,384 --> 03:37:42,178 It's actually the worst job you can get in a crime lab. 1873 03:37:42,220 --> 03:37:44,764 But, uh, my foot's in the door. 1874 03:37:44,890 --> 03:37:46,558 This is like a "job" job? 1875 03:37:47,225 --> 03:37:48,476 "Job" job. 1876 03:37:52,063 --> 03:37:54,691 Your foot's in the door. 1877 03:37:56,985 --> 03:37:58,069 Isn't that a thing people say? 1878 03:37:58,236 --> 03:38:00,196 Your foot's in the door. 1879 03:38:00,280 --> 03:38:02,574 Yeah, that's something people say, man. 1880 03:38:02,657 --> 03:38:04,284 His foot's in the door! 1881 03:38:04,409 --> 03:38:07,078 - That's my boy, right there! - Oh, gosh. Oh, gosh. 1882 03:38:07,162 --> 03:38:08,455 Taught him nothing he knows. 1883 03:38:08,580 --> 03:38:09,706 - Yes! - Dad, you're gonna 1884 03:38:09,789 --> 03:38:10,790 get maced again. 1885 03:38:14,169 --> 03:38:16,046 No stopping you now. 1886 03:38:18,089 --> 03:38:19,299 Thanks, Dad. 1887 03:38:19,424 --> 03:38:20,675 Now. 1888 03:38:20,800 --> 03:38:23,762 Now's your time, Victor, to rise. 1889 03:38:23,887 --> 03:38:26,890 "Thank you" is not enough for what you did. 1890 03:38:26,973 --> 03:38:30,644 I just undid a mistake, that's all. 1891 03:38:40,820 --> 03:38:43,865 How did you get the house back from the bank? 1892 03:38:43,990 --> 03:38:45,951 I bought the bank. 1893 03:38:48,328 --> 03:38:50,914 Congratulations, by the way. 1894 03:38:50,997 --> 03:38:52,582 Do this. Be this. 1895 03:38:52,707 --> 03:38:57,921 The man I never was. The hero you are. 1896 03:38:57,963 --> 03:39:00,298 Take your place among the brave ones. 1897 03:39:00,382 --> 03:39:05,679 The ones that were, that are, that are yet to be. 1898 03:39:38,253 --> 03:39:41,339 It's time you stand, 1899 03:39:45,010 --> 03:39:46,553 fight, 1900 03:39:49,097 --> 03:39:50,598 discover, 1901 03:39:55,186 --> 03:39:57,480 heal, love, 1902 03:40:00,984 --> 03:40:01,985 win. 1903 03:40:28,470 --> 03:40:30,305 The time 1904 03:40:30,430 --> 03:40:31,890 is now. 1905 03:40:41,066 --> 03:40:42,275 Ready? 1906 03:40:42,400 --> 03:40:43,526 Come on, Stevens. 1907 03:40:47,280 --> 03:40:48,740 All right, let's keep it moving. 1908 03:40:50,492 --> 03:40:51,743 Keep going. 1909 03:40:53,411 --> 03:40:55,413 Come on, Luthor. Let's go. 1910 03:40:58,958 --> 03:41:00,043 Luthor. 1911 03:41:04,881 --> 03:41:06,049 Open up two, Carl, please. 1912 03:41:15,183 --> 03:41:16,601 Luthor. 1913 03:41:21,481 --> 03:41:22,899 All right, stop jerking around, Luthor, 1914 03:41:23,024 --> 03:41:24,818 or I'm gonna have to come in there. 1915 03:42:53,364 --> 03:42:55,491 Ah, there he is. 1916 03:42:56,075 --> 03:42:57,368 Welcome aboard. 1917 03:42:57,452 --> 03:42:59,120 Care for a glass of Gout de Diamants? 1918 03:42:59,245 --> 03:43:01,164 I was just celebrating God's return. 1919 03:43:01,206 --> 03:43:03,708 Out of the ground and back up into the sky. 1920 03:43:03,791 --> 03:43:06,461 I heard you were a few clowns short of a circus. 1921 03:43:06,586 --> 03:43:08,129 I was, thank you, 1922 03:43:08,254 --> 03:43:10,506 until the good doctors at Arkham helped me 1923 03:43:10,590 --> 03:43:12,717 find some much needed clarity. 1924 03:43:12,800 --> 03:43:15,136 Now, you volunteered to destroy the bat 1925 03:43:15,261 --> 03:43:16,221 free of charge. 1926 03:43:16,387 --> 03:43:18,181 Why the pro bono work? 1927 03:43:18,223 --> 03:43:20,016 It's personal. 1928 03:43:20,141 --> 03:43:23,186 Ah, let me guess, an eye for an eye? 1929 03:43:25,104 --> 03:43:26,898 You said you had something I'd want? 1930 03:43:26,981 --> 03:43:28,524 You'd better not be wasting my time. 1931 03:43:28,566 --> 03:43:30,693 Ooh. And endure your wrath, Mr. Wilson? 1932 03:43:30,777 --> 03:43:32,612 No, I wouldn't think of it. 1933 03:43:32,737 --> 03:43:33,947 Uh, I have too much to live for. 1934 03:43:34,072 --> 03:43:37,200 And more important things to do. 1935 03:43:37,325 --> 03:43:40,703 But if you want the Batman, 1936 03:43:40,828 --> 03:43:44,082 here is something that can help you. 1937 03:43:45,416 --> 03:43:49,671 His name is Bruce Wayne. 1938 03:43:52,674 --> 03:43:55,176 Hmm. On second thought, 1939 03:43:57,303 --> 03:43:59,597 we do have something to celebrate. 1940 03:44:00,473 --> 03:44:02,016 Good boy. 1941 03:45:06,331 --> 03:45:07,665 Clear. 1942 03:45:12,837 --> 03:45:14,672 How much further? 1943 03:45:15,715 --> 03:45:17,008 We're almost there. 1944 03:45:19,010 --> 03:45:20,720 Well, we need to hurry. 1945 03:45:20,845 --> 03:45:22,472 We can't be out in the open much longer. 1946 03:45:22,555 --> 03:45:24,223 He'll come for us. 1947 03:45:27,060 --> 03:45:29,187 Let him come. 1948 03:45:29,354 --> 03:45:31,022 Let the bastard come. 1949 03:45:32,190 --> 03:45:34,442 I'll stab this through his heart 1950 03:45:34,567 --> 03:45:36,736 for what he did to Arthur. 1951 03:45:36,861 --> 03:45:38,988 I want to make him pay. 1952 03:45:40,365 --> 03:45:43,326 I understand how you feel, Mera. 1953 03:45:43,409 --> 03:45:46,079 You have no idea how I feel. 1954 03:45:46,204 --> 03:45:48,039 But we have to stick to the plan 1955 03:45:48,206 --> 03:45:50,583 to have any chance to make this right. 1956 03:45:58,466 --> 03:46:01,969 Who have you ever loved? 1957 03:46:15,942 --> 03:46:19,237 Au contraire, my little fish stick. 1958 03:46:22,865 --> 03:46:24,534 He knows exactly what it's like 1959 03:46:24,575 --> 03:46:26,369 to lose someone he loves. 1960 03:46:28,329 --> 03:46:30,748 You know, like, uh, 1961 03:46:31,791 --> 03:46:33,292 a father, 1962 03:46:34,710 --> 03:46:36,879 like a mother. 1963 03:46:36,963 --> 03:46:40,174 Be very careful with the next thing you say. 1964 03:46:41,759 --> 03:46:43,928 Like an adopted son. 1965 03:46:47,557 --> 03:46:49,225 Isn't that right, 1966 03:46:50,643 --> 03:46:52,228 Batman? 1967 03:46:55,440 --> 03:46:56,774 Maybe, in a way, 1968 03:46:56,858 --> 03:46:58,776 that smelly old flounder is right. 1969 03:47:00,319 --> 03:47:03,072 Because how many can die in your arms 1970 03:47:03,156 --> 03:47:04,907 before you grow numb to death? 1971 03:47:06,409 --> 03:47:09,162 That's not very careful. 1972 03:47:09,287 --> 03:47:13,082 And how many dead eyes can you look into 1973 03:47:13,124 --> 03:47:16,002 before you die inside yourself? 1974 03:47:16,127 --> 03:47:19,839 I've been dead inside a long time, 1975 03:47:19,964 --> 03:47:21,924 but even I have a limit. 1976 03:47:22,008 --> 03:47:23,843 And if you cross that line, I swear to God, I will... 1977 03:47:23,968 --> 03:47:26,846 Before what, Bruce? Kill me? 1978 03:47:26,971 --> 03:47:28,973 You won't kill me. 1979 03:47:29,682 --> 03:47:31,767 I'm your best friend. 1980 03:47:31,851 --> 03:47:36,272 Besides, who's gonna give you a reach-around? 1981 03:47:38,316 --> 03:47:39,775 Anyway, 1982 03:47:40,860 --> 03:47:42,445 you need me. 1983 03:47:43,488 --> 03:47:45,239 You 1984 03:47:45,364 --> 03:47:48,201 need me to help you undo this world 1985 03:47:48,326 --> 03:47:51,204 you created by letting her die. 1986 03:47:53,706 --> 03:47:55,666 Poor Lois. 1987 03:47:55,750 --> 03:47:58,544 How she suffered so! 1988 03:48:04,509 --> 03:48:06,677 I often wonder 1989 03:48:06,844 --> 03:48:08,638 how many alternate timelines 1990 03:48:08,763 --> 03:48:11,098 do you destroy the world because... 1991 03:48:12,016 --> 03:48:13,643 frankly, you don't have 1992 03:48:13,768 --> 03:48:16,354 the cojones to die yourself. 1993 03:48:17,355 --> 03:48:18,898 Hmm? 1994 03:48:20,858 --> 03:48:22,026 So, as usual, 1995 03:48:22,151 --> 03:48:24,862 I'll be the bigger man. 1996 03:48:28,533 --> 03:48:30,117 A truce, 1997 03:48:30,826 --> 03:48:32,537 Bruce. 1998 03:48:34,872 --> 03:48:39,085 As long as you have this card, a truce. 1999 03:48:41,963 --> 03:48:42,964 But all you have to do 2000 03:48:43,089 --> 03:48:44,173 is tear it in half 2001 03:48:44,298 --> 03:48:45,716 and I'm happy to discuss with you 2002 03:48:45,842 --> 03:48:48,427 in any way you like, why you sent the Boy Wonder 2003 03:48:50,096 --> 03:48:52,098 to do a man's job? 2004 03:48:55,476 --> 03:48:57,144 You know, it's funny 2005 03:48:57,270 --> 03:48:58,729 that you would talk about people 2006 03:48:58,813 --> 03:49:00,314 who died in my arms 2007 03:49:00,439 --> 03:49:02,191 because when I held Harley Quinn 2008 03:49:02,275 --> 03:49:04,861 and she was bleeding and dying, 2009 03:49:04,986 --> 03:49:08,698 she begged me with her last breath 2010 03:49:08,739 --> 03:49:11,033 that when I killed you, 2011 03:49:11,117 --> 03:49:14,704 and make no mistake, I will fucking kill you... 2012 03:49:14,787 --> 03:49:16,622 that I'd do it slow. 2013 03:49:17,832 --> 03:49:19,959 I'm gonna honor that promise. 2014 03:49:50,448 --> 03:49:53,284 Oh. You're good. 2015 03:49:57,496 --> 03:49:59,165 You almost had me. 2016 03:50:18,392 --> 03:50:19,644 Where are we holing up? 2017 03:50:19,810 --> 03:50:22,271 Somewhere he'll never suspect. 2018 03:50:22,313 --> 03:50:25,274 Still think it was a good idea bringing him along? 2019 03:50:25,358 --> 03:50:28,152 What do you think? 2020 03:50:34,075 --> 03:50:35,242 He's found us. 2021 03:52:04,248 --> 03:52:06,792 Can I help you? 2022 03:52:06,917 --> 03:52:10,546 I'm sure you know Darkseid is not finished with Earth. 2023 03:52:10,588 --> 03:52:13,674 The Anti-Life Equation is here somewhere. 2024 03:52:13,799 --> 03:52:16,802 We have to find it before he does. 2025 03:52:16,927 --> 03:52:18,804 There's a war coming. 2026 03:52:18,929 --> 03:52:20,765 And I'm here to help. 2027 03:52:20,890 --> 03:52:23,100 I'm sorry, who are you again? 2028 03:52:23,225 --> 03:52:25,352 I've gone by many names 2029 03:52:25,478 --> 03:52:28,689 and taken many forms. And like you, 2030 03:52:28,814 --> 03:52:31,484 I've realized I have a stake in this world 2031 03:52:31,609 --> 03:52:34,361 and it's time I started fighting for it. 2032 03:52:34,945 --> 03:52:36,280 Oh. 2033 03:52:37,656 --> 03:52:39,950 Well, we could definitely use the help. 2034 03:52:40,117 --> 03:52:43,454 So, glad you're here. 2035 03:52:44,455 --> 03:52:45,581 You know, I never thought 2036 03:52:45,623 --> 03:52:46,832 I'd see the defenders of Earth 2037 03:52:46,957 --> 03:52:49,794 united and fighting as one. 2038 03:52:49,877 --> 03:52:52,546 It wouldn't have happened without you, Bruce. 2039 03:52:53,756 --> 03:52:56,425 Your mother and father would be proud. 2040 03:52:57,718 --> 03:52:58,844 I hope so. 2041 03:53:04,934 --> 03:53:07,853 Well, I'll be in touch. 2042 03:53:08,896 --> 03:53:12,983 Oh, and some have called me 2043 03:53:13,109 --> 03:53:15,486 the Martian Manhunter. 2044 03:53:23,077 --> 03:53:25,538 I guess I'll see you around. 2045 03:57:07,885 --> 03:57:12,681 I've heard there was a secret chord 2046 03:57:12,765 --> 03:57:17,311 That David played and it pleased the lord 2047 03:57:17,436 --> 03:57:23,025 But you don't really care for music, do you? 2048 03:57:25,652 --> 03:57:29,198 It goes like this The fourth, the fifth 2049 03:57:29,281 --> 03:57:33,243 The minor fall The major lift 2050 03:57:33,327 --> 03:57:41,210 The baffled king composing hallelujah 2051 03:57:41,293 --> 03:57:45,214 Hallelujah 2052 03:57:45,297 --> 03:57:47,508 Hallelujah 2053 03:57:48,759 --> 03:57:52,679 Hallelujah 2054 03:57:52,805 --> 03:57:58,811 Hallelujah 2055 03:58:00,521 --> 03:58:05,067 Well your faith was strong but you needed proof 2056 03:58:05,109 --> 03:58:08,654 You saw her bathing on the roof 2057 03:58:08,779 --> 03:58:11,323 Her beauty and the moonlight 2058 03:58:11,324 --> 03:58:13,867 overthrew you 2059 03:58:16,286 --> 03:58:19,790 She tied you to her kitchen chair 2060 03:58:19,957 --> 03:58:23,919 She broke your throne and she cut your hair 2061 03:58:24,002 --> 03:58:31,009 And from your lips she drew the hallelujah 2062 03:58:31,135 --> 03:58:34,096 Hallelujah 2063 03:58:35,013 --> 03:58:37,641 Hallelujah 2064 03:58:38,642 --> 03:58:42,271 Hallelujah 2065 03:58:42,354 --> 03:58:47,734 Hallelujah 2066 03:58:50,779 --> 03:58:54,992 Hey baby I've been here before 2067 03:58:55,117 --> 03:58:59,163 I've seen this room and I've walked this floor 2068 03:58:59,329 --> 03:59:04,168 I used to live alone before I knew you 2069 03:59:07,171 --> 03:59:10,841 But I've seen your flag on the marble arch 2070 03:59:10,966 --> 03:59:14,511 And love is not a victory march 2071 03:59:14,636 --> 03:59:21,894 It's a cold and it is a broken hallelujah 2072 03:59:22,561 --> 03:59:26,315 Hallelujah 2073 03:59:26,440 --> 03:59:29,067 Hallelujah 2074 03:59:30,360 --> 03:59:34,323 Hallelujah 2075 03:59:34,406 --> 03:59:40,162 Hallelujah 2076 03:59:43,415 --> 03:59:48,045 Well there was a time when you let me know 2077 03:59:48,128 --> 03:59:52,716 What's really going on below 2078 03:59:52,883 --> 03:59:58,180 Now you never show that to me, do you? 2079 04:00:01,058 --> 04:00:04,394 Remember when i moved in you 2080 04:00:04,478 --> 04:00:08,357 And the holy ghost was moving too 2081 04:00:08,398 --> 04:00:15,572 And every breath we drew was hallelujah 2082 04:00:16,406 --> 04:00:20,118 Hallelujah 2083 04:00:20,244 --> 04:00:22,746 Hallelujah 2084 04:00:24,248 --> 04:00:27,709 Hallelujah 2085 04:00:27,793 --> 04:00:34,925 Hallelujah 2086 04:00:49,773 --> 04:00:54,778 Well, maybe there is a god above 2087 04:00:57,072 --> 04:01:02,160 But all I have ever learned from love 2088 04:01:03,537 --> 04:01:06,748 Was how to shoot somebody 2089 04:01:07,791 --> 04:01:13,088 Who outdrew you 2090 04:01:13,130 --> 04:01:17,426 It's not a cry that you hear at night 2091 04:01:17,509 --> 04:01:21,847 And it is not somebody who's seen the light 2092 04:01:21,972 --> 04:01:23,807 It's a cold 2093 04:01:23,890 --> 04:01:31,273 And it is a broken hallelujah 2094 04:01:31,356 --> 04:01:34,443 Hallelujah 2095 04:01:34,526 --> 04:01:37,195 Hallelujah 2096 04:01:37,863 --> 04:01:41,450 Hallelujah 2097 04:01:41,533 --> 04:01:48,206 Hallelujah 2098 04:01:48,332 --> 04:01:50,917 Hallelujah 2099 04:01:51,043 --> 04:01:54,713 Hallelujah 2100 04:01:56,506 --> 04:01:58,759 Hallelujah 2101 04:02:00,218 --> 04:02:07,184 Hallelujah ================================================ FILE: 2021/3-21-subtitle-rejust/调整后.srt ================================================ 1 00:00:50,030 --> 00:00:53,540 时代华纳旗下 2 00:00:56,140 --> 00:01:05,640 ACCESS 集团 3 00:01:59,640 --> 00:02:03,640 华纳兄弟影业 出品 4 00:02:05,640 --> 00:02:09,740 联合出品 及 沙丘娱乐 ACCESS集团 5 00:02:49,540 --> 00:02:53,640 亚特拉斯娱乐 / STONE QUARRY 出品 6 00:02:56,740 --> 00:03:00,680 扎克·施奈德 影业 7 00:03:07,810 --> 00:03:11,830 扎克·施奈德版 正义联盟 8 00:06:45,080 --> 00:06:46,590 向女王警示 9 00:09:32,430 --> 00:09:36,710 第一章 10 00:09:34,010 --> 00:09:36,710 “别指望了,蝙蝠侠” 11 00:09:37,260 --> 00:09:40,130 布鲁斯·韦恩 12 00:09:40,300 --> 00:09:41,930 布鲁斯·韦恩 13 00:09:43,420 --> 00:09:46,190 直升机因暴风雨已六天无法降落 14 00:09:46,590 --> 00:09:47,480 他是从哪来的 15 00:09:47,850 --> 00:09:49,480 他说他爬山过来的 16 00:09:49,890 --> 00:09:50,980 不可能 17 00:09:59,950 --> 00:10:01,360 有话快说 18 00:10:02,700 --> 00:10:07,200 有个陌生人从大海来到这村庄 19 00:10:07,370 --> 00:10:10,120 在村民饥寒交迫的严冬到来 20 00:10:10,290 --> 00:10:12,500 并带来渔获 21 00:10:12,670 --> 00:10:14,290 他乘着大潮而来 22 00:10:14,460 --> 00:10:15,710 昨晚的大潮 23 00:10:22,260 --> 00:10:24,550 你也亲眼看见 24 00:10:24,720 --> 00:10:26,470 渔港结冰 25 00:10:26,640 --> 00:10:28,640 四个月没有船只进港 26 00:10:29,810 --> 00:10:33,850 这个陌生人不是乘船而来 27 00:10:40,820 --> 00:10:44,450 来自远方的敌人即将来袭 28 00:10:45,740 --> 00:10:47,410 我需要战士 29 00:10:47,580 --> 00:10:51,120 对付这个陌生人 还有像他的其他人 30 00:10:51,290 --> 00:10:54,790 我要成立一个捍卫地球的联盟 31 00:10:55,710 --> 00:10:58,630 我必须见到这个人 32 00:10:59,800 --> 00:11:02,090 如果真有这个人 33 00:11:02,260 --> 00:11:04,340 他会把你的话传给他 34 00:11:04,510 --> 00:11:05,720 五千美元 35 00:11:05,890 --> 00:11:10,350 我给你两万五 让我和他说话 到外面说去 36 00:11:22,690 --> 00:11:27,070 这只狗竟敢把我们当成小孩子 37 00:11:27,910 --> 00:11:31,540 什么来自大海的神奇人物 38 00:11:31,700 --> 00:11:34,410 我们很穷 但并不蠢 39 00:11:34,710 --> 00:11:36,420 滚出去 40 00:11:37,540 --> 00:11:38,790 抱歉 41 00:11:39,210 --> 00:11:40,750 办不到 42 00:11:41,000 --> 00:11:43,130 我们说完话我就走 43 00:11:47,930 --> 00:11:49,350 他叫你"滚出去" 44 00:11:50,120 --> 00:11:52,330 办不到 45 00:12:08,370 --> 00:12:10,240 亚瑟·库瑞 46 00:12:10,410 --> 00:12:13,160 也被称为大海保护者 47 00:12:13,870 --> 00:12:15,500 海王 48 00:12:21,210 --> 00:12:22,920 让我搞清楚 49 00:12:23,090 --> 00:12:26,590 你打扮成蝙蝠真正的蝙蝠 50 00:12:26,760 --> 00:12:28,430 我在哥谭市打拼了20年 51 00:12:28,590 --> 00:12:30,430 那个鸟地方 52 00:12:30,600 --> 00:12:32,390 决战时刻 我们会需要你 53 00:12:32,560 --> 00:12:34,310 -别指望了 蝙蝠侠 -为什么 54 00:12:35,230 --> 00:12:37,060 我不喜欢你跑来挖我的隐私 55 00:12:37,230 --> 00:12:39,770 干涉我的生活 我只想独自一个人 56 00:12:39,940 --> 00:12:40,940 所以你才这么做 57 00:12:41,110 --> 00:12:43,190 在这鸟不生蛋的地方帮助这些人 58 00:12:43,360 --> 00:12:46,820 我读过你的故事 你以为没人知道你的善行 59 00:12:46,990 --> 00:12:48,450 你会加入我们 60 00:12:48,610 --> 00:12:50,320 "强者是孤独的" 61 00:12:50,490 --> 00:12:51,740 没听过这句话吗 62 00:12:52,200 --> 00:12:53,580 你听过超人吗 63 00:12:53,740 --> 00:12:55,290 他和我并肩作战时死去 64 00:12:56,660 --> 00:12:58,040 这正是我的意思 65 00:12:58,210 --> 00:13:01,630 他相信团结力量大 这是我们欠他的 66 00:13:02,250 --> 00:13:04,500 我谁也不欠 67 00:13:12,180 --> 00:13:14,060 打扮成一只蝙蝠 68 00:13:14,930 --> 00:13:16,770 你疯了 布鲁斯·韦恩 69 00:14:45,310 --> 00:14:46,520 过去 小灰 70 00:15:03,330 --> 00:15:08,340 克拉克·乔瑟夫·肯特 71 00:15:18,320 --> 00:15:22,730 法拍屋出售 72 00:15:42,450 --> 00:15:45,500 天啊 韦恩少爷 这里好冷 73 00:15:45,670 --> 00:15:50,000 也许我们可以赶上下一波牙买加的大潮 74 00:15:50,170 --> 00:15:52,420 也许斐济一 两个超人类 75 00:15:52,590 --> 00:15:54,220 哥斯达黎加天气也不错 76 00:15:54,380 --> 00:15:55,800 我找到他了 77 00:15:58,680 --> 00:16:00,140 他拒绝了 78 00:16:01,140 --> 00:16:03,230 你连一个新兵都没招到 79 00:16:05,690 --> 00:16:08,440 也许一个成天窝在洞穴的人 80 00:16:08,610 --> 00:16:12,110 不适合当招募者 81 00:16:31,800 --> 00:16:33,550 十块钱 82 00:16:53,860 --> 00:16:57,740 星球日报 每日报导星球事务 83 00:17:01,330 --> 00:17:02,740 曼哈顿银行诚征建筑师 84 00:17:03,500 --> 00:17:06,120 大都会警局 85 00:17:11,750 --> 00:17:12,710 早安 莱恩小姐 86 00:17:12,880 --> 00:17:14,170 你好 杰瑞 87 00:17:17,090 --> 00:17:18,340 你每天都来 对吧 88 00:17:19,800 --> 00:17:21,760 我喜欢这里 89 00:19:07,580 --> 00:19:08,580 站住 90 00:19:10,080 --> 00:19:11,080 快上 91 00:19:21,840 --> 00:19:23,260 快走 快走 92 00:19:29,560 --> 00:19:31,640 -别开枪 -快走 93 00:19:32,310 --> 00:19:33,810 给我过去 94 00:19:47,990 --> 00:19:49,950 让他们靠墙站好 95 00:19:50,120 --> 00:19:51,660 叫他们闭嘴 96 00:19:53,000 --> 00:19:55,290 -安静 -闭嘴 97 00:19:55,460 --> 00:19:56,830 叫他们闭嘴 98 00:19:59,960 --> 00:20:02,460 我们很快就会发表声明 99 00:20:02,630 --> 00:20:04,470 在那之前 谁敢乱来 100 00:20:04,630 --> 00:20:06,590 就会害死一大堆小孩 101 00:20:21,650 --> 00:20:23,190 要射杀他吗 102 00:20:23,360 --> 00:20:24,950 别开枪 103 00:20:26,530 --> 00:20:27,570 里面有小孩 104 00:20:29,530 --> 00:20:31,280 他不是虚张声势 长官 105 00:20:31,450 --> 00:20:33,660 圣布丽姬中学今天有校外教学 106 00:20:57,690 --> 00:20:58,520 安静 107 00:20:58,690 --> 00:20:59,560 闭嘴 108 00:21:04,650 --> 00:21:06,950 让现代世界崩塌 109 00:21:07,110 --> 00:21:08,660 回到黑暗时代 110 00:21:14,080 --> 00:21:15,160 闭嘴 111 00:21:17,120 --> 00:21:19,790 我叫你们闭嘴 112 00:21:33,970 --> 00:21:35,640 你是谁 113 00:21:35,810 --> 00:21:38,640 真言套索会迫使你说实话 114 00:21:39,390 --> 00:21:40,940 你们是什么人 115 00:21:41,560 --> 00:21:44,570 我们是一群反动恐怖份子 116 00:21:44,730 --> 00:21:46,360 要让欧洲倒退到… 117 00:21:46,530 --> 00:21:48,780 -一千年前 -无聊 为何挟持人质 118 00:21:48,950 --> 00:21:50,530 我们没有任何要求 119 00:21:50,700 --> 00:21:52,200 只是在动手之前拖延警察 120 00:21:52,450 --> 00:21:53,780 你们想做什么 121 00:21:54,530 --> 00:21:58,120 你太迟了 已经开始倒数计时 122 00:21:58,290 --> 00:22:01,750 再过几分钟 四个街区… 123 00:22:02,880 --> 00:22:05,090 全世界都会看到 124 00:23:45,690 --> 00:23:46,520 不 125 00:23:46,690 --> 00:23:48,730 就像屠宰场里的羔羊 126 00:24:38,110 --> 00:24:39,200 我不敢相信 127 00:24:39,740 --> 00:24:40,660 相信吧 128 00:25:16,320 --> 00:25:19,070 大家没事吧你没事吧 129 00:25:19,320 --> 00:25:21,320 很好 没事了 130 00:25:21,660 --> 00:25:23,740 没事了 你们可以站起来了 131 00:25:23,910 --> 00:25:25,000 一切都没事 132 00:25:25,370 --> 00:25:26,790 结束了 你还好吧 133 00:25:27,330 --> 00:25:29,460 -没事吧 -很好 134 00:25:35,130 --> 00:25:36,420 你没事吧 公主 135 00:25:39,890 --> 00:25:41,680 我有一天能像你一样吗 136 00:25:43,850 --> 00:25:46,430 你想成为什么样的人都可以 137 00:25:48,350 --> 00:25:50,730 来吧 走吧 138 00:26:33,520 --> 00:26:34,730 今天有任何变化吗 139 00:26:34,900 --> 00:26:36,360 没有 女王 140 00:26:38,070 --> 00:26:39,690 母盒苏醒了 141 00:26:40,150 --> 00:26:42,030 但什么也没发生 142 00:26:43,240 --> 00:26:45,280 它从始纪元… 143 00:26:45,450 --> 00:26:47,410 就沉睡了数千年 144 00:26:47,580 --> 00:26:48,910 现在为何苏醒 145 00:26:56,800 --> 00:26:59,970 这是它出现裂缝后第一次静下来 146 00:27:00,130 --> 00:27:02,800 也许它又继续沉睡 147 00:27:06,890 --> 00:27:08,600 邪恶永不沉睡 148 00:27:09,520 --> 00:27:10,930 只会伺机而待 149 00:27:12,940 --> 00:27:14,900 有什么要来了 150 00:27:20,150 --> 00:27:21,650 准备迎敌 151 00:27:47,140 --> 00:27:49,510 亚马逊女战士 各就各位 152 00:27:49,890 --> 00:27:51,180 预备 153 00:28:16,420 --> 00:28:18,420 守护者 154 00:28:20,090 --> 00:28:24,340 他们无法保护十万个世界 155 00:28:24,840 --> 00:28:26,340 永远都会失败 156 00:28:28,300 --> 00:28:32,970 我是来让你们见识伟大的黑暗 157 00:28:33,140 --> 00:28:36,060 我将沉浸在你们的恐惧中 158 00:28:37,560 --> 00:28:40,020 天堂岛的女儿 159 00:28:41,360 --> 00:28:42,940 让他看到你们的恐惧 160 00:28:43,110 --> 00:28:45,530 我们无畏无惧 161 00:29:04,800 --> 00:29:06,420 召集军团 162 00:29:07,340 --> 00:29:08,510 跟她去 163 00:29:08,680 --> 00:29:09,800 你必须封住山洞 164 00:29:09,970 --> 00:29:10,800 快去 165 00:29:11,260 --> 00:29:12,390 菲莉普斯 166 00:29:39,120 --> 00:29:40,210 不 167 00:30:01,310 --> 00:30:02,480 伊琵欧妮 168 00:30:04,400 --> 00:30:06,490 让我们光荣战死 这是对的 169 00:30:09,450 --> 00:30:10,780 封住大门 170 00:30:16,040 --> 00:30:18,660 拿起大锤 171 00:30:30,880 --> 00:30:32,680 快封住它 172 00:32:07,400 --> 00:32:09,070 用生命守护它 173 00:32:09,230 --> 00:32:11,030 -遵命 我的女王 -让它保持移动 174 00:34:57,070 --> 00:34:58,610 拿到了 快走 175 00:35:21,510 --> 00:35:25,720 高贵的女王 你为何抗拒 176 00:35:28,770 --> 00:35:30,520 你救不了她 177 00:35:30,680 --> 00:35:33,140 你救不了任何人 178 00:35:36,650 --> 00:35:40,070 伟大的黑暗即将降临 179 00:35:40,860 --> 00:35:42,200 亚马逊女战士 180 00:35:52,790 --> 00:35:55,460 是的 我们会找到其他的 181 00:35:57,340 --> 00:35:58,670 拉弓 182 00:36:02,010 --> 00:36:03,510 放箭 183 00:37:01,230 --> 00:37:03,320 他回到了他的宇宙 184 00:37:03,490 --> 00:37:04,320 不 185 00:37:06,910 --> 00:37:09,280 他去了人类的世界 186 00:37:09,450 --> 00:37:11,580 寻找另外两个母盒 187 00:37:12,790 --> 00:37:15,120 我们必须点燃古老的警示烽火 188 00:37:16,000 --> 00:37:19,460 烽火五千年未曾燃烧 189 00:37:19,630 --> 00:37:21,170 人类不会知道它的意义 190 00:37:22,000 --> 00:37:23,380 人类不会知道 191 00:37:25,130 --> 00:37:26,550 她会知道 192 00:37:32,210 --> 00:37:37,490 第二章 193 00:37:34,850 --> 00:37:37,490 英雄时代 194 00:37:57,290 --> 00:37:59,920 这里是有毒的 195 00:38:00,080 --> 00:38:01,790 很好 196 00:38:22,730 --> 00:38:23,940 去吧 197 00:38:24,110 --> 00:38:26,110 跟着母盒的气味 198 00:38:26,280 --> 00:38:27,820 找到另外两个 199 00:38:27,990 --> 00:38:31,870 一旦找到它们 就能形成三位一体 200 00:38:32,030 --> 00:38:34,780 这个世界将加入其他世界 201 00:38:36,700 --> 00:38:38,710 他会很高兴 202 00:38:38,870 --> 00:38:41,790 再次看到我的价值 203 00:38:46,380 --> 00:38:48,970 有酒类专卖店那小鬼的消息吗 204 00:38:49,130 --> 00:38:50,550 可能有 205 00:38:51,340 --> 00:38:52,510 "可能有" 206 00:38:53,720 --> 00:38:56,260 每听一次这句话 207 00:38:56,430 --> 00:38:59,060 就会让我更受不了你 208 00:39:02,020 --> 00:39:04,730 脸部辨识可能找到匹配 209 00:39:04,900 --> 00:39:06,730 搞消失的那小子 210 00:39:07,360 --> 00:39:12,070 中城的巴里·艾伦先生 211 00:39:12,240 --> 00:39:15,160 也许又是误判 你得给我多点时间 212 00:39:15,330 --> 00:39:17,540 -才能确认 -我们没有时间了 213 00:39:19,250 --> 00:39:21,000 韦恩少爷 214 00:39:21,160 --> 00:39:24,670 你一直在拼命地创建这个团队 215 00:39:24,840 --> 00:39:26,670 但却找不到任何队友 216 00:39:26,840 --> 00:39:28,960 我找到一个 是两个 包括戴安娜 217 00:39:29,130 --> 00:39:33,090 就因为莱克斯·卢瑟说 地球会受到攻击 218 00:39:33,260 --> 00:39:35,260 这跟莱克斯·卢瑟无关 219 00:39:35,430 --> 00:39:36,640 这跟他有关 220 00:39:36,930 --> 00:39:40,230 我在他的坟上向他承诺 221 00:39:41,100 --> 00:39:44,230 我花了很多时间试图造成分裂 222 00:39:44,400 --> 00:39:47,190 现在必须团结一心才能拯救地球 223 00:39:47,980 --> 00:39:50,570 卢瑟的警告已经过了一段时间 224 00:39:50,820 --> 00:39:53,950 没有攻击 没有野蛮人冲进大门 225 00:39:55,200 --> 00:39:57,830 也许这些野蛮人不走大门 226 00:39:58,700 --> 00:40:00,370 也许他们已经来了 227 00:40:04,370 --> 00:40:06,130 继续找 还有什么线索 228 00:40:45,120 --> 00:40:46,670 实验室是你的了 霍华德 229 00:40:46,830 --> 00:40:48,420 11点半 230 00:40:48,590 --> 00:40:49,920 今晚很早嘛 塞拉斯 231 00:40:50,090 --> 00:40:52,170 是啊 我提早下班 232 00:40:52,840 --> 00:40:53,970 替我向你家人问好 233 00:41:29,330 --> 00:41:30,920 搞什么… 234 00:41:34,840 --> 00:41:36,010 天啊 235 00:42:49,250 --> 00:42:51,080 阿提密斯之箭 236 00:42:52,170 --> 00:42:54,710 它将射到人类世界 237 00:43:04,350 --> 00:43:05,640 天空火炬 238 00:43:05,810 --> 00:43:07,350 英雄烽火 239 00:43:07,520 --> 00:43:09,230 驱散黑暗 240 00:43:09,390 --> 00:43:12,650 如昔日一般熊熊燃烧 241 00:43:14,230 --> 00:43:17,690 让她看到历史曙光出现之前的黑暗 242 00:43:18,190 --> 00:43:21,780 警告我女儿战争已经来临 243 00:43:23,160 --> 00:43:24,870 并且保护她 244 00:43:49,600 --> 00:43:51,890 回到我身边 戴安娜 245 00:44:30,520 --> 00:44:33,140 你这周末做什么了 戴安娜 246 00:44:33,480 --> 00:44:35,810 没做什么特别的 247 00:44:36,810 --> 00:44:38,900 你每次都这么说 248 00:44:39,520 --> 00:44:42,030 没办法 我的生活很无趣 249 00:44:42,190 --> 00:44:45,660 你一走出去就好像消失一样 250 00:44:50,540 --> 00:44:51,540 又来了 251 00:44:51,700 --> 00:44:53,580 -什么事 -又怎么了 252 00:44:53,960 --> 00:44:57,080 预算缩减 盗墓者 253 00:44:57,250 --> 00:44:59,750 现在又加了一条"纵火者" 254 00:45:01,630 --> 00:45:04,260 记者在克里特岛连线报导 255 00:45:04,420 --> 00:45:08,970 我身后的大篝火熊熊燃烧 256 00:45:09,140 --> 00:45:11,260 大火燃烧了一整晚 257 00:45:11,430 --> 00:45:15,230 现在已经是早上 我们至少在八公里以外 258 00:45:15,390 --> 00:45:18,730 但还是能看到它在燃烧 259 00:45:18,900 --> 00:45:21,940 当地居民和政府当局都感到诧异 260 00:45:22,110 --> 00:45:26,610 这座历史遗迹亚马逊神殿居然起火 261 00:45:26,780 --> 00:45:28,280 -当地居民和政府当局… -敌人入侵 262 00:45:28,450 --> 00:45:30,740 …不知道火势起因 263 00:45:39,880 --> 00:45:40,920 瑞恩 264 00:45:41,090 --> 00:45:42,460 -你好 博士 -那个… 265 00:45:42,630 --> 00:45:44,460 电子激光没有损坏 266 00:45:44,760 --> 00:45:46,800 -塞拉斯·斯通博士 -是的 267 00:45:46,970 --> 00:45:48,050 -蔡瑞恩 -是的 268 00:45:49,510 --> 00:45:51,260 这是谁干的 他们有没有偷走什么 269 00:45:51,430 --> 00:45:53,470 -他们偷走了一切 -那个呢 270 00:45:53,640 --> 00:45:56,060 那没被偷走 对吧 斯通博士 271 00:45:57,020 --> 00:45:59,350 对 那之前就被移走了 272 00:45:59,940 --> 00:46:03,780 6-1-9-8-2号物件 国防部档案馆 273 00:46:04,820 --> 00:46:05,740 那是什么 274 00:46:06,150 --> 00:46:07,070 我也不知道 275 00:46:07,240 --> 00:46:08,160 你不知道 276 00:46:08,320 --> 00:46:10,570 没错 所以我才在研究它 277 00:46:10,740 --> 00:46:12,240 你是什么官阶 278 00:46:12,660 --> 00:46:14,660 瑞恩 麻烦你了 279 00:46:14,830 --> 00:46:16,160 -没问题 -谢了 280 00:46:16,330 --> 00:46:17,160 平民 281 00:46:17,500 --> 00:46:20,210 星辰实验室是私人承包商 我们为国防部工作 282 00:46:20,380 --> 00:46:22,960 为他们提供异常科学的建议 283 00:46:23,500 --> 00:46:24,340 "异常科学" 284 00:46:25,010 --> 00:46:26,840 外星科技 285 00:46:33,930 --> 00:46:36,020 比如说 286 00:46:36,180 --> 00:46:37,730 超人飞船 287 00:46:46,230 --> 00:46:48,950 昨晚有八个人没离开实验室 288 00:46:49,320 --> 00:46:52,370 清洁工 警卫和几名研究科学家 289 00:46:52,820 --> 00:46:53,740 他们被绑架了 290 00:46:55,120 --> 00:46:56,120 你确定 291 00:46:56,290 --> 00:46:58,830 有位目击证人 他逃过一劫 292 00:46:59,000 --> 00:47:02,130 他正在隔离区协助绘制嫌犯肖像画 293 00:47:05,130 --> 00:47:09,470 知道那会是谁或是什么东西吗 294 00:47:29,610 --> 00:47:31,660 母盒在这里不安全 295 00:47:34,160 --> 00:47:35,620 维克多 296 00:47:35,830 --> 00:47:38,080 他们闯进实验室找它 297 00:47:38,250 --> 00:47:42,670 有些人被某种怪物抓走 298 00:47:45,420 --> 00:47:47,380 你对怪物很了解… 299 00:47:48,000 --> 00:47:49,420 对吧 300 00:47:55,800 --> 00:47:57,930 尤其是怎么制造它们 301 00:50:58,530 --> 00:51:02,160 求救…求救… 302 00:51:02,950 --> 00:51:06,040 船身受损 我快沉下去了 303 00:51:12,380 --> 00:51:14,340 求救 304 00:51:14,540 --> 00:51:16,590 有人吗 305 00:51:56,920 --> 00:51:58,260 威士忌 306 00:52:07,350 --> 00:52:09,930 下次叫他要敬畏暴风雨 307 00:52:19,280 --> 00:52:20,110 他请客 308 00:54:48,340 --> 00:54:50,430 本应是国王的男人 309 00:54:50,590 --> 00:54:53,760 人类父亲和海洋女王的儿子 310 00:54:54,640 --> 00:54:56,390 我浪费了多少时间 311 00:54:56,560 --> 00:54:59,600 试图遵守我向你母亲做的承诺 312 00:55:01,730 --> 00:55:02,940 说完了吗 老头 313 00:55:03,110 --> 00:55:05,570 虽然你居无定所 314 00:55:05,730 --> 00:55:08,490 但还是一直回来这里 315 00:55:10,450 --> 00:55:12,410 我喜欢这里 很安静 316 00:55:12,570 --> 00:55:14,370 这是你继承的王国 317 00:55:14,530 --> 00:55:16,660 你应当是亚特兰蒂斯国王 318 00:55:17,790 --> 00:55:18,910 我们的同胞受苦受难 319 00:55:19,080 --> 00:55:21,040 你的同胞 320 00:55:21,210 --> 00:55:24,750 一个卑鄙残忍 迷信无知的种族 321 00:55:24,920 --> 00:55:26,130 地表有什么不同吗 322 00:55:27,210 --> 00:55:29,260 没人说我是地表之王 323 00:55:30,340 --> 00:55:32,050 你想要什么 维科 324 00:55:32,640 --> 00:55:35,510 要塞附近的守卫不断消失不见 325 00:55:35,680 --> 00:55:37,100 来自天上的掠夺者 326 00:55:37,270 --> 00:55:38,480 去跟欧姆国王说啊 327 00:55:38,640 --> 00:55:40,060 -你弟弟 -表弟 328 00:55:40,230 --> 00:55:43,230 他想煽动和陆地人类的战争 329 00:55:43,610 --> 00:55:45,020 他说谎 330 00:55:46,480 --> 00:55:50,490 掠夺者来自黑暗之境 他们在寻找它 331 00:55:51,320 --> 00:55:54,660 我们守护的母盒并不安全 332 00:55:55,660 --> 00:55:59,660 前往亚特兰蒂斯要塞 保护母盒 333 00:56:00,660 --> 00:56:01,870 时候到了 334 00:56:04,000 --> 00:56:06,000 把你母亲的三叉戟拿去 335 00:56:17,180 --> 00:56:20,850 你不能永远弃世界而不顾 亚瑟 336 00:56:21,770 --> 00:56:24,860 不管是地表或海底 337 00:56:53,970 --> 00:56:55,550 狄萨德 338 00:56:55,720 --> 00:56:59,680 狄萨德 我呼叫你 339 00:57:08,730 --> 00:57:12,900 荒原狼 你开始征服这世界了吗 340 00:57:14,030 --> 00:57:16,410 这个世界是分裂的 341 00:57:17,200 --> 00:57:18,700 他们是原始物种 342 00:57:18,870 --> 00:57:21,200 未进化并与彼此战争 343 00:57:21,370 --> 00:57:24,210 歧见太深无法团结一心 344 00:57:24,370 --> 00:57:28,630 必须像其他的世界一样 剥夺他们的自由意志 345 00:57:28,790 --> 00:57:32,920 并以服膺他的光荣信念… 346 00:57:33,090 --> 00:57:34,800 获得赦免 347 00:57:35,590 --> 00:57:37,510 母盒呢 348 00:57:38,090 --> 00:57:41,010 我找到其中一个 349 00:57:41,180 --> 00:57:43,640 苏醒后呼唤我的那一个 350 00:57:43,810 --> 00:57:45,310 另外两个仍然沉睡 351 00:57:45,480 --> 00:57:49,310 但天启魔感应到它们 352 00:57:49,480 --> 00:57:50,940 它们飞来飞去 353 00:57:51,110 --> 00:57:54,690 到处搜索 并抓走带有母盒气味的囚犯 354 00:57:54,860 --> 00:57:59,780 我则以他之名创建一座要塞 355 00:58:00,330 --> 00:58:02,200 很好 356 00:58:03,290 --> 00:58:05,960 强大的荒原狼 357 00:58:07,460 --> 00:58:11,840 你本来可以与伟大的他平起平坐 358 00:58:13,760 --> 00:58:18,340 但却因自大而被放逐 359 00:58:19,510 --> 00:58:20,890 狄萨德 360 00:58:21,970 --> 00:58:24,350 我跪倒在你面前 361 00:58:25,100 --> 00:58:26,890 让我向他求情 362 00:58:27,060 --> 00:58:28,980 当我以他之名夺下这世界 363 00:58:29,150 --> 00:58:31,940 能否请他让我回家 364 00:58:32,110 --> 00:58:34,530 你背叛了他 365 00:58:35,940 --> 00:58:37,450 你自己的家人 366 00:58:37,610 --> 00:58:39,820 我看到我犯的错误 367 00:58:39,990 --> 00:58:42,580 我屠杀企图争夺他王位的人 368 00:58:42,740 --> 00:58:47,870 你还欠他五万个世界 369 00:58:48,960 --> 00:58:50,790 当你还清了债 370 00:58:51,250 --> 00:58:53,500 他就会聆听你的恳求 371 00:58:56,420 --> 00:58:59,470 母盒将被寻获并合而为一 372 00:59:00,430 --> 00:59:02,550 这里没有保护者 373 00:59:02,720 --> 00:59:06,140 没有绿光战警 没有氪星人 374 00:59:06,310 --> 00:59:09,940 这世界将会像其他的一样沦陷 375 00:59:10,980 --> 00:59:12,730 为了达克赛德 376 00:59:15,940 --> 00:59:18,150 为了达克赛德 377 00:59:39,420 --> 00:59:43,010 我花了几百万元安装保全系统 378 00:59:43,180 --> 00:59:44,470 钱花得很值得 379 00:59:44,970 --> 00:59:47,350 我几乎花了一分钟才解除 380 00:59:48,890 --> 00:59:50,230 你好 381 00:59:52,060 --> 00:59:52,900 新玩具 382 00:59:53,810 --> 00:59:55,980 原型军队运输机 383 00:59:58,280 --> 01:00:01,320 我曾相识的一个人会很想开开看 384 01:00:01,950 --> 01:00:04,910 韦恩航天最顶尖的人才 都无法让它飞起来 385 01:00:05,990 --> 01:00:07,580 但是你能 386 01:00:07,740 --> 01:00:09,410 我别无选择 387 01:00:09,580 --> 01:00:12,330 我需要更远的航程和更大的货舱 388 01:00:12,500 --> 01:00:14,080 我认为一场攻击即将来袭 389 01:00:14,500 --> 01:00:16,250 你错了 布鲁斯 390 01:00:17,050 --> 01:00:19,010 它已经来袭了 391 01:00:19,800 --> 01:00:24,340 据我所知 他们来自另一个宇宙 392 01:00:24,510 --> 01:00:26,850 为一个黑暗力量效忠 393 01:00:27,010 --> 01:00:28,720 一个古老的力量 394 01:00:28,890 --> 01:00:30,310 他们想要什么 395 01:00:31,140 --> 01:00:33,480 入侵地球 征服世界 396 01:00:34,600 --> 01:00:38,860 他们很久以前曾经来过 397 01:00:43,990 --> 01:00:46,410 一支庞大的舰队出现在天空 398 01:00:46,580 --> 01:00:49,200 消灭所有胆敢反抗的势力 399 01:00:49,370 --> 01:00:53,460 入侵者的首领是达克赛德 400 01:00:53,620 --> 01:00:57,880 这名字在每个宇宙都受到诅咒和畏惧 401 01:00:58,750 --> 01:01:02,590 地球的守护者 和达克赛德展开一场大战 402 01:01:02,760 --> 01:01:05,260 旧神族 人类 403 01:01:05,840 --> 01:01:08,970 被迫迁至海底之前的亚特兰蒂斯族 404 01:01:11,310 --> 01:01:15,270 遭背叛及被困禁之前的亚马逊族 405 01:01:15,440 --> 01:01:17,810 以及来自星空的守护者 406 01:01:17,980 --> 01:01:21,570 他们的历史教导他们 不能相信彼此 407 01:01:21,740 --> 01:01:23,900 不能奢望创建联盟 408 01:01:24,070 --> 01:01:26,070 而是各自奋战 409 01:02:15,120 --> 01:02:17,830 当达克赛德在地球发动战争 410 01:02:18,000 --> 01:02:19,420 他发现一个秘密 411 01:02:19,580 --> 01:02:23,340 隐藏在无垠太空的一股力量 412 01:02:23,510 --> 01:02:25,010 他召唤暗黑秘士 413 01:02:25,170 --> 01:02:28,300 他们崇拜并控制三个物体 414 01:02:28,470 --> 01:02:29,510 母盒 415 01:02:29,850 --> 01:02:31,260 等等 416 01:02:31,430 --> 01:02:32,430 "母盒" 417 01:02:32,600 --> 01:02:35,140 坚不可摧 活生生的机器 418 01:02:35,850 --> 01:02:40,770 使用先进无比的科技打造 看起来简直就像巫术 419 01:02:40,940 --> 01:02:43,570 若要征服世界 三个母盒必须同步化 420 01:02:43,730 --> 01:02:46,990 合而为一后形成三位一体 421 01:02:47,150 --> 01:02:50,200 三位一体以烈火净化星球 422 01:02:50,370 --> 01:02:53,950 将它转换成另一个敌人世界 423 01:02:54,120 --> 01:02:57,620 幸存者都成为达克赛德的仆役 424 01:02:57,790 --> 01:03:00,710 活着 但毫无生机 425 01:03:00,920 --> 01:03:02,250 天启魔 426 01:03:03,460 --> 01:03:05,550 亚马逊女战士 427 01:03:11,430 --> 01:03:13,140 冲啊 428 01:03:42,460 --> 01:03:44,960 但在三位一体同步化之前 429 01:03:45,130 --> 01:03:48,510 地球的守护者组成统一阵线展开反击 430 01:03:49,090 --> 01:03:52,090 亚马逊人和亚特兰蒂斯人并肩作战 431 01:03:52,260 --> 01:03:56,770 宙斯及他儿子阿瑞斯 和来自星空的守护者联手出击 432 01:03:57,770 --> 01:04:02,440 一群黄金时代英雄为了捍卫地球 同心协力捍卫了地球的生命 433 01:05:59,100 --> 01:06:01,890 他们做到其他世界做不到的事 434 01:06:02,060 --> 01:06:04,230 将敌人送回星空 435 01:06:06,770 --> 01:06:10,020 三个母盒从未合而为一 436 01:06:10,610 --> 01:06:13,780 也从未形成三位一体 437 01:06:13,940 --> 01:06:16,150 但在敌人撤退之时 438 01:06:16,780 --> 01:06:19,910 母盒被留在地球 439 01:06:20,080 --> 01:06:23,790 它们的力量变弱 就像失去主人的恶犬 440 01:06:25,620 --> 01:06:27,210 开始沉睡 441 01:06:27,370 --> 01:06:29,840 等待他们的回归 442 01:06:30,000 --> 01:06:32,340 母盒从敌人的视野中消失 443 01:06:32,500 --> 01:06:35,670 隐匿在一兆个世界之中 444 01:06:52,570 --> 01:06:55,740 地球的守护者立下誓言 445 01:06:56,110 --> 01:06:59,360 人类 亚特兰蒂斯族及亚马逊族 446 01:06:59,530 --> 01:07:03,410 根据他们文化的惯例及仪式 447 01:07:03,580 --> 01:07:07,080 各自封存并守卫 其中一个沉睡的母盒 448 01:07:07,250 --> 01:07:11,710 以防母盒日后再次苏醒 向天启星发出信号 449 01:07:11,880 --> 01:07:13,630 呼唤敌人回来并企图征服 450 01:07:13,800 --> 01:07:17,590 达克赛德唯一落败而逃的世界 451 01:08:33,540 --> 01:08:36,210 有什么唤醒了我的族人守卫的母盒 452 01:08:36,920 --> 01:08:38,960 它向暗黑之处呼唤 453 01:08:39,130 --> 01:08:41,550 引来达克赛德手下的一名征服者 454 01:08:42,470 --> 01:08:44,340 敌人已经来袭 455 01:08:44,850 --> 01:08:46,510 如果是真的 他在哪里 456 01:08:46,680 --> 01:08:48,770 他会到处寻找另外两个母盒 457 01:08:48,930 --> 01:08:51,890 得到三个母盒并准备好之前 他仍在藏匿 458 01:08:52,060 --> 01:08:55,900 我们必须准备迎敌 你 我和其他人 459 01:08:56,650 --> 01:08:59,480 他们说英雄时代不会再来临 460 01:08:59,650 --> 01:09:00,900 会来的 461 01:09:01,240 --> 01:09:02,950 必须的 462 01:09:04,700 --> 01:09:08,200 其他人 他们在哪里 463 01:09:13,290 --> 01:09:18,550 第三章 464 01:09:14,930 --> 01:09:18,550 挚爱的母亲,挚爱的儿子 465 01:09:20,260 --> 01:09:22,130 冷藏配送 466 01:09:22,130 --> 01:09:25,840 中城 467 01:09:25,840 --> 01:09:29,470 前方减速 468 01:09:30,220 --> 01:09:32,890 我迟到了吗 我大迟到了 469 01:09:32,260 --> 01:09:34,060 中城狗狗托儿所 470 01:09:34,230 --> 01:09:35,350 你好啊 小家伙 471 01:09:36,190 --> 01:09:37,020 不行 472 01:09:38,110 --> 01:09:39,690 好吧 晚点见 473 01:09:40,570 --> 01:09:42,490 真是拍谢 474 01:09:42,900 --> 01:09:44,150 我迟到了 475 01:09:49,660 --> 01:09:50,700 -你是… -我… 476 01:09:50,870 --> 01:09:53,120 抱歉我大迟到了 不是故意的 477 01:09:53,290 --> 01:09:54,790 我是我 我来了 很抱歉迟到了 478 01:09:54,960 --> 01:09:57,130 因为公车没来 后来来了 479 01:09:57,290 --> 01:09:59,590 不过有个阿婆一直在找硬币 480 01:09:59,750 --> 01:10:00,880 五分 一分 五分 一分 481 01:10:01,050 --> 01:10:02,800 真是够了 让阿婆上车吧 482 01:10:02,960 --> 01:10:03,970 她都107岁了 483 01:10:04,130 --> 01:10:05,800 不会再活多久了 484 01:10:05,970 --> 01:10:07,010 履历 485 01:10:07,640 --> 01:10:08,470 履历 486 01:10:11,720 --> 01:10:12,810 拜托 487 01:10:16,140 --> 01:10:17,230 拜托 488 01:10:17,400 --> 01:10:18,940 那是法文来着 489 01:10:19,110 --> 01:10:22,150 "履历"是过去分词… 490 01:10:27,990 --> 01:10:29,070 这可不妙 491 01:10:29,530 --> 01:10:32,740 我的口袋有什么 "有只吃纸的怪物" 492 01:10:41,630 --> 01:10:44,710 拜托 我们应该是朋友啊 493 01:10:51,300 --> 01:10:52,310 好了 494 01:11:01,310 --> 01:11:03,730 中城大学 我念刑事司法系 495 01:11:03,900 --> 01:11:06,150 你说你有遛狗的经验 496 01:13:46,610 --> 01:13:48,650 天啊 希望大家都没事 497 01:13:48,820 --> 01:13:53,530 瞧 照顾狗狗遇到事情 我一定会随身携带肉类零食 498 01:13:53,700 --> 01:13:54,950 能让狗狗安静下来 499 01:13:55,110 --> 01:13:56,990 你永远不知道会发生什么事 500 01:13:57,160 --> 01:13:58,870 我是说 天啊 501 01:13:59,030 --> 01:14:01,580 是不是星期一开工吗 502 01:14:39,910 --> 01:14:42,580 你一定靠近过母盒 503 01:14:43,790 --> 01:14:45,790 身上有它的气味 504 01:14:46,370 --> 01:14:47,620 它在哪里 505 01:14:48,040 --> 01:14:50,920 亚特兰蒂斯族的儿女绝不会告诉你 506 01:15:06,520 --> 01:15:09,350 我们的族人看守了母盒数千年 507 01:15:15,530 --> 01:15:18,160 我不会背叛自己的族人 508 01:15:29,710 --> 01:15:32,210 你已经背叛了 509 01:16:32,560 --> 01:16:34,770 这是在地球最深的海沟拍到的 510 01:16:35,360 --> 01:16:37,440 他一定是亚特兰蒂斯人 511 01:16:37,610 --> 01:16:38,740 能够呼吸海水 512 01:16:38,900 --> 01:16:40,570 我跟他说话时他呼吸空气 513 01:16:40,740 --> 01:16:42,530 那他就是混血儿 514 01:16:42,700 --> 01:16:44,570 他说他会和我们一起作战 515 01:16:44,740 --> 01:16:46,080 或多或少吧 516 01:16:47,450 --> 01:16:49,540 或多还是或少 517 01:16:49,960 --> 01:16:50,960 大概是或少吧 518 01:16:51,120 --> 01:16:52,920 -他说不 -没错 519 01:16:53,670 --> 01:16:55,090 亚特兰蒂斯人很难搞 520 01:16:56,000 --> 01:16:58,760 我的族人曾和他们打仗 521 01:16:59,880 --> 01:17:01,970 我不确定我们能相信他 522 01:17:02,130 --> 01:17:03,180 戴安娜 如果我们要合作 523 01:17:03,340 --> 01:17:05,680 你就得打开心房 接受我们不能… 524 01:17:05,850 --> 01:17:06,720 你知道的 525 01:17:06,890 --> 01:17:08,560 -抱歉 没关系 -对不起 我的错 526 01:17:08,720 --> 01:17:09,770 没关系 527 01:17:09,930 --> 01:17:11,180 -让我们… -难免的 528 01:17:11,350 --> 01:17:12,230 所以… 529 01:17:12,390 --> 01:17:14,440 这是第三个人 530 01:17:14,600 --> 01:17:17,020 消失了1/30秒 531 01:17:17,190 --> 01:17:18,690 一格的影片 看到吗 532 01:17:18,860 --> 01:17:21,490 中城的巴里·艾伦 533 01:17:21,650 --> 01:17:22,490 你去找他 534 01:17:22,650 --> 01:17:24,360 我去找第四个人 535 01:17:24,530 --> 01:17:27,660 有机与生化机械电子身体器官 536 01:17:30,200 --> 01:17:32,210 他是个钢骨生化人 537 01:17:50,350 --> 01:17:51,180 斯通 538 01:17:51,350 --> 01:17:53,310 -预备 -就位 539 01:17:54,350 --> 01:17:56,770 大声尖叫 540 01:18:08,830 --> 01:18:09,830 3 541 01:18:10,200 --> 01:18:11,750 80 542 01:18:12,830 --> 01:18:14,920 预备…上吧 543 01:18:28,180 --> 01:18:30,430 你儿子也许是美式足球校队队长 544 01:18:30,600 --> 01:18:33,600 也是个天才 斯通太太 545 01:18:33,770 --> 01:18:35,850 斯通博士 546 01:18:38,400 --> 01:18:40,400 但不代表他能骇入校方系统 547 01:18:40,570 --> 01:18:42,400 窜改他同学的成绩 548 01:18:43,360 --> 01:18:46,700 莎拉一家人今年失去了房子 549 01:18:47,280 --> 01:18:49,700 那孩子怎么可能及格 550 01:18:51,280 --> 01:18:54,330 维克多是出于好心才会帮助她 551 01:18:54,500 --> 01:18:56,540 你又做了什么来帮助她 552 01:19:11,470 --> 01:19:14,400 哥谭市 威斯康星州 553 01:20:20,670 --> 01:20:23,590 -你爸… -妈 别说了 554 01:20:25,170 --> 01:20:27,920 他得在实验室加班 555 01:20:28,090 --> 01:20:31,130 他天天都加班 556 01:20:33,720 --> 01:20:34,720 他很想来的 557 01:20:35,260 --> 01:20:36,890 你老是这么说 558 01:20:37,350 --> 01:20:38,930 妈 别再替他找借口了 559 01:20:39,100 --> 01:20:42,060 你跟他一样忙 但还是会挪出时间 560 01:20:42,600 --> 01:20:45,190 他只是不会表达 但是… 561 01:20:45,860 --> 01:20:47,690 我知道他以你为傲 562 01:20:48,240 --> 01:20:50,200 我们都是 维克多 563 01:20:54,200 --> 01:20:57,290 以你现在的成就 564 01:20:57,450 --> 01:21:00,210 我等不及想看到未来的你 565 01:21:05,540 --> 01:21:07,250 斯通博士 很遗憾 566 01:21:08,340 --> 01:21:10,130 你太太没能活下来 567 01:21:11,800 --> 01:21:13,890 你儿子恐怕也不会 568 01:21:28,070 --> 01:21:29,730 我不会让你死 569 01:21:32,700 --> 01:21:34,240 我绝不容许 570 01:21:40,540 --> 01:21:42,290 我绝不容许 571 01:21:45,750 --> 01:21:46,750 维克多 572 01:21:48,130 --> 01:21:50,880 维克多 你不必窝在这里 573 01:21:51,720 --> 01:21:54,470 你还有大好的人生 574 01:21:55,140 --> 01:21:58,510 你妈会希望你拥有那样的人生 575 01:22:01,060 --> 01:22:02,600 如果你当时在的话… 576 01:22:03,980 --> 01:22:05,850 妈就还会活着 577 01:22:08,690 --> 01:22:10,610 好吧 听着 578 01:22:11,990 --> 01:22:16,030 你不必给我第二次机会 但是要给自己再一次机会 579 01:22:18,070 --> 01:22:21,120 如果你不想看着我 580 01:22:22,830 --> 01:22:24,460 那就试着听我说 581 01:22:53,190 --> 01:22:55,200 你现在的能力 维克多 582 01:22:56,030 --> 01:22:59,570 超强力量只是冰山一角 583 01:22:59,740 --> 01:23:02,290 你拥有无穷潜力 584 01:23:32,360 --> 01:23:37,240 在一和零的数位世界 你是绝对的霸主 585 01:23:37,400 --> 01:23:39,990 没有防火墙能阻止你 586 01:23:40,160 --> 01:23:42,450 没有你破解不了的密码 587 01:23:42,620 --> 01:23:45,370 一切都任你摆布 588 01:23:45,540 --> 01:23:47,910 从电厂电网到电信设备 589 01:23:48,080 --> 01:23:50,130 每个人的生活都受到 590 01:23:50,290 --> 01:23:53,250 复杂的数位网络操控支配 591 01:23:53,420 --> 01:23:57,510 你却能轻而易举掌控它 592 01:24:07,850 --> 01:24:12,360 全世界的命运掌握在你手中 593 01:24:20,160 --> 01:24:25,200 你只要动个念头 就能发射所有的核弹 594 01:24:36,000 --> 01:24:39,170 全球复杂的金融体系 595 01:24:39,340 --> 01:24:43,800 对你来说就像玩具一样能轻易玩弄 596 01:25:17,840 --> 01:25:21,590 问题是…不 挑战是… 597 01:25:22,470 --> 01:25:24,930 不去这么做 598 01:25:25,800 --> 01:25:27,680 不去滥用这能力 599 01:25:27,850 --> 01:25:29,850 不去监视每个人 600 01:25:31,890 --> 01:25:34,190 这个重责大任的沉重负担 601 01:25:34,350 --> 01:25:37,650 将塑造你成为什么样的人 602 01:26:09,260 --> 01:26:10,350 许个愿 603 01:26:11,600 --> 01:26:12,640 再吹一次 604 01:26:13,600 --> 01:26:15,980 很好 像外婆挥手问好 605 01:26:16,150 --> 01:26:17,310 你好 外婆 606 01:27:10,670 --> 01:27:13,040 余额不足 607 01:27:13,200 --> 01:27:16,960 恭喜 您赢得十万美元奖金 608 01:27:17,540 --> 01:27:18,710 什么 609 01:27:20,710 --> 01:27:22,340 天啊 天啊 610 01:27:23,590 --> 01:27:24,970 我的天啊 611 01:27:25,130 --> 01:27:26,880 天啊 天啊 612 01:27:32,220 --> 01:27:33,600 维克多 613 01:27:35,230 --> 01:27:38,600 这是我身为一名科学家 做出来的推断 614 01:27:39,770 --> 01:27:41,940 也是我一直以来跟你说话的方式 615 01:27:42,650 --> 01:27:43,650 现在… 616 01:27:46,030 --> 01:27:49,700 让我说出内心话 不是身为一个科学家 617 01:27:50,240 --> 01:27:51,450 而是身为一个父亲 618 01:28:06,050 --> 01:28:06,920 喂 619 01:28:08,180 --> 01:28:09,720 喂 你 620 01:28:25,690 --> 01:28:28,530 因为你没有发挥潜力 621 01:28:29,200 --> 01:28:32,240 一直在原地打转 622 01:28:32,410 --> 01:28:34,580 你打三份没出路的工 623 01:28:34,740 --> 01:28:37,370 还要打第四份工 你哪来的时间 624 01:28:37,540 --> 01:28:38,660 我会挪出时间 625 01:28:38,830 --> 01:28:39,960 -只要再打一份工 -巴里 626 01:28:40,120 --> 01:28:41,750 -就能自己付学费 -你不能 627 01:28:41,920 --> 01:28:44,630 -我说到做到 -别再折磨自己了 628 01:28:44,790 --> 01:28:46,460 我不想再谈这件事 629 01:28:46,630 --> 01:28:47,710 拜托 我们有十分钟 630 01:28:47,880 --> 01:28:48,800 这全是为了付… 631 01:28:48,970 --> 01:28:50,760 -刑事司法系的学费 -对啊 632 01:28:50,930 --> 01:28:51,930 为了什么 633 01:28:52,090 --> 01:28:55,310 那还用问 我正在跟我爸讲话 634 01:28:55,470 --> 01:28:58,270 他因为杀死我妈坐牢 其实是被冤枉的 635 01:28:58,430 --> 01:29:00,390 我怎么会对刑事司法感兴趣 636 01:29:00,560 --> 01:29:02,100 我不记得了 637 01:29:02,270 --> 01:29:03,190 真是的 638 01:29:03,360 --> 01:29:05,900 我注定要选择走这条路 爸 639 01:29:06,900 --> 01:29:07,980 把手给我 儿子 640 01:29:14,280 --> 01:29:16,830 我要你听好 巴里 641 01:29:16,990 --> 01:29:20,500 我要你听好 我是认真的 642 01:29:26,460 --> 01:29:28,340 我要你放弃那一切 643 01:29:31,340 --> 01:29:34,390 我也要你别再来看我 644 01:29:36,760 --> 01:29:39,770 我拖累了你的人生 645 01:29:45,190 --> 01:29:46,310 好吧 646 01:29:47,230 --> 01:29:50,360 别再跟我这么说 647 01:29:50,780 --> 01:29:52,030 求求你 648 01:29:52,200 --> 01:29:55,320 你知道对我来说怎样才是最好吗 649 01:29:55,490 --> 01:30:00,290 我儿子不白白浪费生命 650 01:30:01,710 --> 01:30:04,880 你想做什么都行 你聪明绝顶 651 01:30:07,420 --> 01:30:10,210 你是精英中的精英 652 01:30:12,050 --> 01:30:16,760 我不能坐在这儿 看着你在中城盲目地奔走 653 01:30:16,930 --> 01:30:18,680 就为了一个… 654 01:30:18,850 --> 01:30:22,020 哪儿都不能去的老头子 655 01:30:22,180 --> 01:30:23,520 -爸 并不是这样 -时间到了 656 01:30:23,690 --> 01:30:24,690 并不是这样 657 01:30:24,850 --> 01:30:26,350 走吧 艾伦 艾伦 658 01:30:26,520 --> 01:30:28,190 我要你创造自己的未来 659 01:30:28,360 --> 01:30:30,030 别活在过去 创造自己的未来 660 01:30:30,190 --> 01:30:31,820 开门 661 01:30:31,990 --> 01:30:32,820 棒呆了 662 01:30:36,990 --> 01:30:39,120 "别活在过去 创造自己的未来" 663 01:30:39,280 --> 01:30:40,830 可以了 开门 664 01:31:33,510 --> 01:31:36,170 巴里·艾伦 我是布鲁斯·韦恩 665 01:31:37,010 --> 01:31:40,970 你这么说似乎可以解释 为什么有个陌生人闯进我家 666 01:31:41,140 --> 01:31:43,930 摸黑坐在我第二喜欢的椅子 667 01:31:46,020 --> 01:31:47,810 请你解释一下 668 01:31:51,940 --> 01:31:54,650 这家伙长得跟我一模一样 669 01:31:54,820 --> 01:31:57,530 但绝对不是我 670 01:31:58,660 --> 01:32:00,530 这个人…我不认识 671 01:32:00,700 --> 01:32:02,530 披头散发的嬉皮 672 01:32:02,700 --> 01:32:05,450 很帅的一个犹太青年 673 01:32:07,000 --> 01:32:08,960 谁喝牛奶啊 我才不喝牛奶 674 01:32:09,750 --> 01:32:11,290 我知道你有超能力 675 01:32:11,460 --> 01:32:13,300 只是不知道是什么 676 01:32:13,710 --> 01:32:14,710 我的专长包括 677 01:32:14,880 --> 01:32:17,630 拉中提琴 网页设计 678 01:32:17,800 --> 01:32:20,590 我也擅长手语 大猩猩手语 679 01:32:20,760 --> 01:32:24,100 硅胶石英砂材料 680 01:32:24,510 --> 01:32:26,600 耐磨耐热 681 01:32:26,770 --> 01:32:28,640 是啊 我是冰舞竞技选手 682 01:32:28,810 --> 01:32:32,400 这是用来避免 航天飞机重返大气层燃烧的材料 683 01:32:32,560 --> 01:32:35,070 冰舞的竞争真的很激烈 684 01:32:36,440 --> 01:32:40,530 我不知道你是谁 不管你找的是谁 685 01:32:40,700 --> 01:32:41,700 都不是我 686 01:33:23,530 --> 01:33:25,120 你是蝙蝠侠 687 01:33:25,530 --> 01:33:27,290 所以你很快 688 01:33:28,580 --> 01:33:30,120 这么说感觉太平凡了 689 01:33:30,290 --> 01:33:32,040 我在组织一个团队 690 01:33:32,210 --> 01:33:34,290 寻找拥有特殊能力的人 691 01:33:34,460 --> 01:33:35,960 我相信敌人即将来袭 692 01:33:36,130 --> 01:33:38,210 你不用多说 我参一脚 693 01:33:39,260 --> 01:33:40,340 真的吗 694 01:33:40,720 --> 01:33:41,760 就这么简单 695 01:33:41,930 --> 01:33:43,050 是啊 696 01:33:45,010 --> 01:33:47,100 我需要朋友 697 01:33:47,600 --> 01:33:50,560 太好了 698 01:33:51,100 --> 01:33:52,850 我能留着吗 699 01:33:53,480 --> 01:33:57,070 那就像是一层三次元现实 似乎能够操控时空 700 01:33:57,230 --> 01:33:58,440 我称之为神速力 701 01:33:58,610 --> 01:34:00,440 害我燃烧大量的卡路里 702 01:34:00,610 --> 01:34:03,240 所以我是零食的黑洞 703 01:34:03,410 --> 01:34:05,240 我是"零"洞 704 01:34:06,120 --> 01:34:08,950 这个特殊战斗团队有几个人 705 01:34:09,120 --> 01:34:11,040 -三个 包括你 -三个 706 01:34:11,200 --> 01:34:13,080 对抗什么 707 01:34:13,960 --> 01:34:15,420 上飞机再告诉你 708 01:34:16,040 --> 01:34:17,250 飞机 709 01:34:17,920 --> 01:34:19,670 你的超能力是什么来着 710 01:34:19,840 --> 01:34:21,550 我超有钱 711 01:34:44,650 --> 01:34:46,450 普林斯小姐 让我来 712 01:34:46,620 --> 01:34:48,620 没关系 我自己来 713 01:34:49,910 --> 01:34:51,290 你想要喝吗 714 01:34:51,450 --> 01:34:52,750 不 谢了 715 01:34:54,120 --> 01:34:56,120 你得先倒水进去 716 01:34:56,830 --> 01:34:59,840 -当然了 -才不会把茶叶烫熟 717 01:35:02,760 --> 01:35:04,300 -很好 -太好了 718 01:35:04,470 --> 01:35:06,430 茶叶应该够多了 719 01:35:06,590 --> 01:35:07,970 好吧 720 01:35:09,100 --> 01:35:10,600 你确定不来一杯 721 01:35:10,760 --> 01:35:14,020 不 谢了 你得再让茶叶浸泡一下 722 01:35:14,770 --> 01:35:17,560 我会的 一定会 723 01:35:18,980 --> 01:35:20,070 你在打造什么 724 01:35:20,230 --> 01:35:21,570 这是一只手套 725 01:35:22,150 --> 01:35:25,780 布满高分子太阳能奈米电池 726 01:35:26,450 --> 01:35:28,160 来 让我秀给你看 727 01:35:28,660 --> 01:35:31,660 这是从氪星侦察舰上借来的 728 01:35:33,250 --> 01:35:34,700 也许你应该… 729 01:35:34,870 --> 01:35:37,330 -挪过去一点 谢谢 -没问题 730 01:35:44,880 --> 01:35:47,340 现在看看效果如何 731 01:35:47,880 --> 01:35:49,260 好了 732 01:35:49,930 --> 01:35:51,560 还不错喔 733 01:35:51,720 --> 01:35:54,140 捕捉并消散能量的手套 734 01:35:54,310 --> 01:35:55,810 这是韦恩少爷的点子 735 01:35:56,100 --> 01:35:58,350 也许你也应该打造一条套索 736 01:35:58,520 --> 01:36:00,270 当然是黑色的罗 737 01:36:08,110 --> 01:36:11,070 好吧 维克多斯通 738 01:36:11,150 --> 01:36:15,540 搜寻维克多·斯通 739 01:36:27,340 --> 01:36:29,340 有点不对劲 740 01:36:33,590 --> 01:36:35,270 在这里见面 现在 741 01:36:41,150 --> 01:36:43,570 看来你有个约会 普林斯小姐 742 01:37:40,620 --> 01:37:43,710 你为什么找我 戴安娜 743 01:37:43,880 --> 01:37:45,130 你知道我是谁 744 01:37:45,290 --> 01:37:47,630 我知道的远远超乎你想像 745 01:37:47,800 --> 01:37:50,380 那也许你已经知道我需要你的帮助 746 01:37:51,050 --> 01:37:52,050 全世界都需要 747 01:37:53,430 --> 01:37:55,140 去他的全世界 748 01:37:56,760 --> 01:37:59,140 你很显然经历了很多 749 01:38:00,390 --> 01:38:02,890 我完全无法想像 750 01:38:03,600 --> 01:38:06,980 但不管你发生什么事 现在都拥有超能力 751 01:38:07,230 --> 01:38:08,940 超能力 752 01:38:09,110 --> 01:38:11,280 这看起来像是超能力吗 753 01:38:11,440 --> 01:38:12,610 我们需要你 维克多 754 01:38:13,280 --> 01:38:14,870 也许你也需要我们 755 01:38:15,030 --> 01:38:16,700 我不需要任何人 756 01:38:18,910 --> 01:38:19,950 不再需要了 757 01:38:20,120 --> 01:38:22,620 我以前也一直这么告诉自己 758 01:38:29,460 --> 01:38:32,170 我曾经失去一个深爱的人 759 01:38:35,050 --> 01:38:39,850 把自己封闭起来 760 01:38:41,480 --> 01:38:44,190 但我得学会再次敞开心房 761 01:38:46,900 --> 01:38:50,320 老实说 我仍在努力中 762 01:38:50,480 --> 01:38:53,700 既然你要求见我 763 01:38:54,570 --> 01:38:57,320 你也在努力 764 01:39:24,100 --> 01:39:29,440 挚爱的儿子 维克多·斯通 1994-2015 765 01:39:26,850 --> 01:39:29,440 挚爱的母亲 爱莲诺·斯通 1973-2015 766 01:40:09,020 --> 01:40:12,690 超人飞船上的金属样本被你说中了 767 01:40:12,860 --> 01:40:15,990 我们用电子激光向它轰射X光 768 01:40:16,400 --> 01:40:17,860 看看发生了什么事 769 01:40:26,870 --> 01:40:28,790 克氏350万度 770 01:40:28,960 --> 01:40:31,920 金属的内核变得过热 771 01:40:32,090 --> 01:40:34,420 形成又热又密的物质 772 01:40:37,720 --> 01:40:40,510 这是地球上最火热的东西 773 01:40:40,680 --> 01:40:42,600 跟我对毕业舞会舞伴说的话一样 774 01:40:42,970 --> 01:40:44,510 但她还是甩了我 775 01:40:44,970 --> 01:40:45,890 是啊 776 01:40:50,060 --> 01:40:50,900 喂 博士 777 01:40:51,230 --> 01:40:55,690 你认为蝙蝠侠和犯罪调查部 找的东西有关联吗 778 01:40:56,740 --> 01:40:59,860 6-1-9-8-2号物件 779 01:41:01,030 --> 01:41:02,120 不 780 01:41:03,120 --> 01:41:04,330 我不这么认为 781 01:41:39,150 --> 01:41:41,240 维克多 782 01:41:58,380 --> 01:42:00,300 好了 走吧 783 01:42:01,630 --> 01:42:03,140 -高登局长 -来吧 784 01:42:04,180 --> 01:42:05,100 给你的留言 785 01:42:09,810 --> 01:42:12,390 不用看也知道今天是满月 786 01:42:12,560 --> 01:42:15,400 哥谭市一半的疯子都出来了 787 01:42:15,560 --> 01:42:17,730 他们都说看到怪物飞过港口 788 01:42:17,900 --> 01:42:21,650 你是对的 老妈 金牌警校军 念牙医学院有什么不好 789 01:42:24,740 --> 01:42:27,030 "遭到飞行吸血鬼攻击" 790 01:42:28,030 --> 01:42:31,000 "看起来像是一口尖牙的巨大蝙蝠" 791 01:42:31,160 --> 01:42:32,960 有一个相关的线索 792 01:42:33,120 --> 01:42:36,710 实验室绑架案的嫌犯肖像素描 793 01:42:36,880 --> 01:42:39,420 -看起来像… -我知道像什么 794 01:42:40,630 --> 01:42:43,090 拜托 你觉得他在这里打击犯罪20年 795 01:42:43,260 --> 01:42:45,930 然后跑去大都会绑架八个人 796 01:42:46,970 --> 01:42:48,050 我今晚会找他谈谈 797 01:42:48,220 --> 01:42:49,760 怎么找他 798 01:42:49,930 --> 01:42:51,390 你说呢 799 01:43:09,660 --> 01:43:10,870 塞拉斯 800 01:43:18,630 --> 01:43:20,800 -天啊 -钢骨在哪里 801 01:43:20,960 --> 01:43:22,130 他叫维克多 802 01:43:22,920 --> 01:43:25,680 我们见过面 说过话 803 01:43:26,640 --> 01:43:28,050 给他点时间 804 01:43:28,850 --> 01:43:30,810 你一定是巴里 我是戴安娜 805 01:43:30,970 --> 01:43:34,730 你好 巴里 我是戴安娜 那不太对 好极了 806 01:43:34,890 --> 01:43:35,890 就只有我们 807 01:43:36,060 --> 01:43:37,020 没错 就只有我们 808 01:43:38,360 --> 01:43:41,400 酷啊 那是蝙蝠信号 那是在… 809 01:43:41,570 --> 01:43:43,650 抱歉 那是在呼叫你 810 01:43:43,820 --> 01:43:45,030 意思是我们得出动了 811 01:43:45,200 --> 01:43:48,240 -对 是这意思没错 -酷毙了 812 01:44:46,340 --> 01:44:49,800 湄拉指挥官 我告诉海王 外围守卫被掳走 813 01:44:50,010 --> 01:44:51,550 他不会派出援兵 814 01:44:51,720 --> 01:44:54,350 他说所有的士兵 都必须前往叛军地区支持 815 01:44:54,510 --> 01:44:57,230 他不但残忍而且短视 816 01:44:58,940 --> 01:45:00,520 好吧 带着剩下的人马 817 01:45:00,690 --> 01:45:02,860 在母盒周围形成方阵 818 01:46:42,290 --> 01:46:44,330 你逃不了的 819 01:46:45,080 --> 01:46:47,040 我并不想逃 820 01:48:49,620 --> 01:48:51,500 维科跟我说你会来 821 01:48:52,000 --> 01:48:54,710 备受爱戴的亚特兰娜女王的长子 822 01:48:57,340 --> 01:48:58,630 等一下 823 01:49:00,640 --> 01:49:01,720 拜托了 824 01:49:05,310 --> 01:49:06,640 我认识她 825 01:49:08,940 --> 01:49:10,520 你至少认识她 826 01:49:11,400 --> 01:49:12,980 我父母死于战争 827 01:49:14,900 --> 01:49:16,110 她收容了我 828 01:49:16,490 --> 01:49:17,740 还真是个圣人 829 01:49:18,450 --> 01:49:20,570 你胆敢讽刺亚特兰娜女王 830 01:49:20,740 --> 01:49:23,370 你的女王把我丢在我父亲家门口 831 01:49:23,530 --> 01:49:25,120 从此把我忘得一干二净 832 01:49:25,290 --> 01:49:27,500 你母亲是为了救你才离开 833 01:49:28,620 --> 01:49:31,080 你无法想像她有多心痛 834 01:49:32,670 --> 01:49:34,710 她也付出惨痛代价 835 01:49:35,960 --> 01:49:38,130 但你现在不是脆弱的小孩 836 01:49:40,550 --> 01:49:42,140 那本是她的责任 837 01:49:42,300 --> 01:49:45,470 跟着那怪物到陆地 然后阻止他 838 01:49:46,060 --> 01:49:47,140 现在 839 01:49:48,430 --> 01:49:49,770 是你的责任 840 01:50:54,120 --> 01:50:55,580 太好了 841 01:51:18,520 --> 01:51:19,900 荒原狼 842 01:51:20,070 --> 01:51:21,990 告诉我你知道了什么 843 01:51:22,150 --> 01:51:24,780 找到两个苏醒的母盒 844 01:51:24,950 --> 01:51:27,910 结合两个母盒的力量 845 01:51:28,070 --> 01:51:31,080 我完成了要塞的防御系统 846 01:51:31,240 --> 01:51:33,660 第三个母盒在哪里 847 01:51:33,830 --> 01:51:37,960 天启魔感应到它 正在寻找它 848 01:51:38,130 --> 01:51:39,130 它们抓来了囚犯 849 01:51:39,290 --> 01:51:41,380 他们带有它的气味 850 01:51:42,130 --> 01:51:43,170 去吧 851 01:51:44,010 --> 01:51:45,930 去审问囚犯 852 01:51:46,720 --> 01:51:48,600 找到第三个母盒 853 01:51:50,140 --> 01:51:52,310 他们会乖乖告诉我 854 01:51:53,560 --> 01:51:56,060 不然我就来硬的 855 01:52:01,730 --> 01:52:06,950 第四章 856 01:52:03,330 --> 01:52:06,950 “改造机器” 857 01:52:39,400 --> 01:52:40,980 你们有多少人 858 01:52:41,820 --> 01:52:42,940 还不够多 859 01:52:45,030 --> 01:52:47,280 哥谭市各地有数十名目击者 860 01:52:47,450 --> 01:52:50,160 他们的描述符合大都会绑架案的嫌犯 861 01:52:50,740 --> 01:52:51,780 天启魔 862 01:52:52,410 --> 01:52:53,660 好吧 863 01:52:53,830 --> 01:52:56,160 天启魔一定闻到母盒的气味 864 01:52:56,410 --> 01:52:57,410 在实验室的那个 865 01:52:57,580 --> 01:52:59,920 它们把人抓走 拷问母盒下落 866 01:53:00,080 --> 01:53:01,790 -那八个人可能还活着 -九个人 867 01:53:04,340 --> 01:53:06,840 星辰实验室的主任今晚被绑走 868 01:53:12,050 --> 01:53:14,600 好吧 另一个科学家 869 01:53:14,760 --> 01:53:16,060 我们要怎么找到他 870 01:53:16,220 --> 01:53:17,890 附近一定有它们的巢穴 871 01:53:18,060 --> 01:53:22,150 我在大都会和哥谭市地图上做记号 872 01:53:22,310 --> 01:53:24,440 看不出任何模式 873 01:53:24,610 --> 01:53:25,900 地图上的路线没有交集 874 01:53:26,070 --> 01:53:27,400 在陆地上没有 875 01:53:28,110 --> 01:53:30,160 这是在两座城市之间的史崔克岛 876 01:53:30,320 --> 01:53:32,740 这些是通风口 全都通往1929年 877 01:53:32,910 --> 01:53:35,290 废弃的大都会工程隧道 878 01:53:35,450 --> 01:53:37,040 巢穴可能在那里 879 01:53:38,370 --> 01:53:39,750 他要跟我们一起去吗 880 01:53:39,920 --> 01:53:41,250 因为你的车子坐不下 881 01:53:41,790 --> 01:53:43,210 我有更大的玩意儿 882 01:53:44,540 --> 01:53:46,170 你真的觉得… 883 01:53:47,510 --> 01:53:51,050 他们就这样闪人了吗 884 01:53:52,260 --> 01:53:53,600 太没礼貌了 885 01:54:28,630 --> 01:54:32,130 星辰实验室 886 01:54:32,300 --> 01:54:34,390 很接近了 887 01:54:34,550 --> 01:54:36,560 敌人的气味 888 01:54:37,260 --> 01:54:38,430 虚无 889 01:54:39,020 --> 01:54:40,560 黑暗 890 01:54:41,310 --> 01:54:42,270 死亡 891 01:54:42,690 --> 01:54:44,940 -我们在哪里 阿尔弗雷德 -史崔克岛 892 01:54:45,110 --> 01:54:49,650 你们应该就在隧道通风塔的正下方 893 01:54:50,240 --> 01:54:53,660 往左看 应该有一道阶梯通往机械室 894 01:54:53,860 --> 01:54:56,410 红外线热影像显示有一群人 895 01:54:56,580 --> 01:54:57,490 就是那里 896 01:54:57,870 --> 01:54:58,870 走吧 897 01:55:12,880 --> 01:55:13,720 好吧 898 01:55:13,930 --> 01:55:15,800 有任何计划吗 899 01:55:17,350 --> 01:55:18,640 你们两个 900 01:55:18,810 --> 01:55:19,970 别单打独斗 901 01:55:20,770 --> 01:55:22,020 我们要联手出击 902 01:55:30,980 --> 01:55:32,820 我听说过你 903 01:55:34,610 --> 01:55:35,780 没想到你是真的 904 01:55:36,240 --> 01:55:37,780 有用的时候我就是真的 905 01:55:48,040 --> 01:55:52,170 我受够了你们的沉默 快告诉我 母盒在哪里 906 01:55:58,970 --> 01:56:01,180 求求你 我们有家人 907 01:56:01,350 --> 01:56:03,430 那你们就有弱点 908 01:56:03,600 --> 01:56:05,060 荒原狼 909 01:56:05,230 --> 01:56:09,400 好吧 我猜…那就是坏蛋 910 01:56:09,560 --> 01:56:10,610 猜对了 911 01:56:11,150 --> 01:56:14,610 我现在真的超想念超人 912 01:56:14,780 --> 01:56:16,950 绕到另一边 913 01:56:17,110 --> 01:56:19,120 把它们团团围住展开突袭 914 01:56:23,660 --> 01:56:25,250 你接近过一个母盒 915 01:56:25,710 --> 01:56:27,420 身上有它的气味 916 01:56:27,580 --> 01:56:29,040 我不知道你在说什么 917 01:56:29,210 --> 01:56:31,040 -它在哪里 -放过他 918 01:56:31,210 --> 01:56:33,460 他不知道 919 01:56:37,050 --> 01:56:38,840 等等 求求你 920 01:56:44,020 --> 01:56:47,140 你也带着气味 但是更强烈 921 01:56:47,520 --> 01:56:49,650 我死也不会告诉你 922 01:56:49,810 --> 01:56:51,650 不告诉我就会死 923 01:56:52,070 --> 01:56:53,070 不 924 01:57:02,410 --> 01:57:03,450 维克多 925 01:57:03,620 --> 01:57:04,910 杀了他们 926 01:57:09,370 --> 01:57:10,540 亚马逊女战士 927 01:57:10,960 --> 01:57:13,460 但不像你的姐妹 928 01:57:13,630 --> 01:57:14,880 你更强大 929 01:57:45,830 --> 01:57:47,450 亚马逊女战士 930 01:57:50,500 --> 01:57:51,880 住手 931 01:57:52,250 --> 01:57:54,460 这一个是我的 932 01:57:56,420 --> 01:57:58,840 我不属于任何人 933 01:58:12,850 --> 01:58:14,900 大伙儿 这不是联手出击 934 01:58:21,910 --> 01:58:23,070 把这些人救出去 935 01:58:23,240 --> 01:58:24,910 我会让这些怪物跟着我 936 01:58:35,340 --> 01:58:36,750 大伙儿 快啊 937 01:58:45,510 --> 01:58:47,010 再快一点 938 01:58:49,390 --> 01:58:50,770 -没事吧 -没事 939 01:58:50,930 --> 01:58:53,350 我会搞定 动作快点 940 01:58:55,400 --> 01:58:56,400 这里 941 01:59:32,730 --> 01:59:34,140 能量正在消散 942 01:59:34,310 --> 01:59:35,810 我的手套很有用 943 01:59:37,060 --> 01:59:39,360 晚点再庆祝 阿尔弗雷德 我需要夜蝠战机 944 01:59:39,520 --> 01:59:41,150 我以为你不会开口 945 01:59:41,740 --> 01:59:43,860 马上赶去 启动遥控模式 946 02:00:14,020 --> 02:00:15,020 谢了 阿尔弗雷德 947 02:00:15,190 --> 02:00:16,600 不客气 948 02:00:39,330 --> 02:00:40,290 惨了 949 02:00:48,300 --> 02:00:49,760 他们安全了 回去隧道 950 02:00:49,930 --> 02:00:53,010 隧道 好 外星人 坏蛋 耍剑的女士 951 02:01:04,820 --> 02:01:06,190 轮到我 952 02:02:28,570 --> 02:02:30,070 系统全面故障 953 02:02:30,240 --> 02:02:32,660 你没事吧 韦恩少爷 954 02:02:32,820 --> 02:02:33,820 你没事吧 955 02:02:44,540 --> 02:02:48,050 你身上流着旧神族的血液 956 02:03:02,520 --> 02:03:03,350 你没事吧 957 02:03:05,360 --> 02:03:06,980 我不确定你会来 958 02:03:08,020 --> 02:03:09,320 你是我父亲 959 02:03:12,820 --> 02:03:13,820 快去吧 960 02:03:27,460 --> 02:03:28,460 不要 961 02:04:13,970 --> 02:04:16,300 放轻松 阿尔弗雷德 我来接手 962 02:04:18,510 --> 02:04:19,720 我认识你吗 963 02:04:50,630 --> 02:04:51,880 我们在哪里的下面 964 02:04:52,630 --> 02:04:53,920 哥谭港 965 02:05:32,630 --> 02:05:33,920 那是谁 966 02:05:59,240 --> 02:06:00,410 快点 967 02:06:05,540 --> 02:06:06,750 戴安娜 快上来 968 02:07:08,640 --> 02:07:10,140 是什么 969 02:07:17,940 --> 02:07:19,360 让我看 970 02:07:58,520 --> 02:08:00,150 它在这里 971 02:08:00,900 --> 02:08:03,860 在这个世界 972 02:08:37,770 --> 02:08:40,730 你可能感染了外星微生物 必须接受隔离 973 02:08:40,900 --> 02:08:42,570 美国政府的规定要求… 974 02:08:42,730 --> 02:08:45,530 我知道规定 是我写的 975 02:08:50,080 --> 02:08:51,410 它召唤了他 976 02:08:51,580 --> 02:08:53,120 母盒 977 02:08:53,290 --> 02:08:54,660 他抢走的那个 978 02:08:55,000 --> 02:08:58,040 他有两个了 他从亚特兰蒂斯抢走母盒 979 02:08:58,210 --> 02:09:00,500 现在只需要人类遗失的母盒 980 02:09:00,670 --> 02:09:01,840 他可能已经拿到手了 981 02:09:05,510 --> 02:09:06,930 他没有拿到手 982 02:09:10,140 --> 02:09:11,300 在我这里 983 02:09:21,860 --> 02:09:23,940 你完成征服行动了吗 984 02:09:24,110 --> 02:09:25,360 还没有 狄萨德 985 02:09:25,530 --> 02:09:27,780 那你为何召唤我 986 02:09:27,950 --> 02:09:29,610 我带来消息 987 02:09:29,780 --> 02:09:32,700 强大的达克赛德登上王位之前 988 02:09:32,870 --> 02:09:37,370 他在全宇宙搜寻终极武器 989 02:09:38,000 --> 02:09:40,170 反生命方程序 990 02:09:40,330 --> 02:09:45,010 掌控多重宇宙中 所有生命与自由意志的关键 991 02:09:45,170 --> 02:09:48,180 他发现它被藏在一个原始星球上 但在他还没… 992 02:09:48,340 --> 02:09:51,220 大家都知道你背叛了他 993 02:09:51,390 --> 02:09:53,890 我找到了那个原始星球 994 02:09:54,060 --> 02:09:56,100 胆敢反击的世界 995 02:09:56,270 --> 02:09:58,140 就是地球 996 02:09:58,310 --> 02:10:00,520 反生命方程序被刻在… 997 02:10:00,690 --> 02:10:04,570 这个世界的地表 998 02:10:08,240 --> 02:10:09,650 你确定 999 02:10:09,820 --> 02:10:10,860 我看到了 1000 02:10:11,030 --> 02:10:14,450 我亲眼看到了 1001 02:10:57,790 --> 02:10:59,370 主人 1002 02:11:00,910 --> 02:11:04,460 荒原狼 1003 02:11:05,130 --> 02:11:08,210 主人 我只是你谦卑的仆人 1004 02:11:09,210 --> 02:11:12,050 你真的找到它了 1005 02:11:12,220 --> 02:11:14,390 是的 霸主 1006 02:11:15,140 --> 02:11:18,100 失落的世界就是地球 1007 02:11:18,270 --> 02:11:21,270 反生命方程序就在这里 1008 02:11:22,600 --> 02:11:25,940 你若想寻求救赎 那就找到第三个母盒 1009 02:11:26,110 --> 02:11:29,070 合而为一形成三位一体 当这世界化为焦土 1010 02:11:29,230 --> 02:11:32,450 我就会来拿我的大奖 1011 02:11:33,410 --> 02:11:35,620 你会来地球 1012 02:11:36,660 --> 02:11:40,910 我已经把十万个世界化为尘土 1013 02:11:41,080 --> 02:11:42,580 寻找反生命方程序 1014 02:11:42,750 --> 02:11:45,960 寻找抢走我荣耀之人 1015 02:11:46,130 --> 02:11:51,880 我将踏着他们的骨骸 沐浴在反生命方程序的荣光中 1016 02:11:52,050 --> 02:11:54,760 所有的生命 1017 02:11:54,930 --> 02:11:58,430 都将是我的 1018 02:12:01,810 --> 02:12:05,730 一定会的 主人 1019 02:12:09,940 --> 02:12:11,610 酷爆了 1020 02:12:11,780 --> 02:12:14,320 从外面看 这只是一栋废弃建筑物 1021 02:12:18,070 --> 02:12:19,830 它想要飞行 1022 02:12:21,040 --> 02:12:22,910 你和机器说话 1023 02:12:23,210 --> 02:12:25,210 我和人工智能说话 1024 02:12:25,370 --> 02:12:28,250 这个说她因为软体问题不能飞 1025 02:12:28,420 --> 02:12:30,380 不过我很快就能修好 1026 02:12:40,140 --> 02:12:42,350 我的数据流中有个黑点 1027 02:12:42,680 --> 02:12:44,940 我能感应到另外两个母盒 1028 02:12:45,100 --> 02:12:46,940 我知道它们苏醒了 1029 02:12:47,100 --> 02:12:48,610 但是看不见它们在哪里 1030 02:12:48,770 --> 02:12:50,770 知道敌方基地在哪里才能攻击 1031 02:12:50,940 --> 02:12:53,190 就算我们知道 1032 02:12:53,360 --> 02:12:56,200 也没有比荒原狼更强大的生物 1033 02:12:58,410 --> 02:12:59,780 也许有一个 1034 02:13:00,160 --> 02:13:01,540 超人 1035 02:13:02,450 --> 02:13:06,500 只要第三个母盒在沉睡 他们就看不到它 只能感应到它 1036 02:13:06,670 --> 02:13:08,710 我们得不断移动才不会被发现 1037 02:13:08,880 --> 02:13:12,050 不 这只是延缓失败的策略 不是获胜的战略 1038 02:13:12,670 --> 02:13:14,670 难道火焰喷射器不流行了吗 1039 02:13:15,550 --> 02:13:16,630 为何不直接烧毁它 1040 02:13:16,800 --> 02:13:18,890 烈火也无法摧毁母盒 1041 02:13:19,050 --> 02:13:20,800 它们是一种未知的物质 1042 02:13:20,970 --> 02:13:24,430 喜欢热能 会吸收它 保存在它们的核心 1043 02:13:24,600 --> 02:13:26,730 你很了解这些盒子嘛 1044 02:13:27,310 --> 02:13:28,560 非常可疑 1045 02:13:28,730 --> 02:13:30,440 你在哪里找到母盒 1046 02:13:31,400 --> 02:13:32,820 你在怀疑我吗 1047 02:13:33,110 --> 02:13:34,610 我就是怀疑你 1048 02:13:35,190 --> 02:13:37,070 我们怎么知道你不是他们的奸细 1049 02:13:38,950 --> 02:13:40,620 说来话长 1050 02:13:41,070 --> 02:13:42,990 你赶着要去哪儿吗 1051 02:13:50,380 --> 02:13:54,210 纳粹在二战结束前找到母盒 1052 02:13:54,380 --> 02:13:57,420 它被埋在一座义大利修道院底下 1053 02:13:57,590 --> 02:13:59,970 被送去给希特勒的路上 遭到盟军拦截 1054 02:14:00,140 --> 02:14:02,350 1944年被带回了美国 1055 02:14:02,930 --> 02:14:06,480 6-1-9-8-2号未知物件 1056 02:14:07,350 --> 02:14:10,810 它被丢在五角大厦档案室七十年 1057 02:14:11,350 --> 02:14:14,570 直到国防部开始研究超人飞船 1058 02:14:16,110 --> 02:14:19,610 星辰实验室的一位研究员 发现超人飞船和… 1059 02:14:20,910 --> 02:14:22,450 6-1-9-8-2号物件有关联 1060 02:14:23,330 --> 02:14:26,160 他了解到它们都是外星科技 1061 02:14:26,830 --> 02:14:28,410 不同的文明 1062 02:14:29,000 --> 02:14:31,120 类似的属性 1063 02:14:32,460 --> 02:14:35,210 虽然母盒已经沉睡了几千年 1064 02:14:35,880 --> 02:14:38,720 那位研究员想出 一个可以唤醒它的理论 1065 02:14:39,340 --> 02:14:41,090 也真的唤醒了它 1066 02:14:43,550 --> 02:14:44,390 后来… 1067 02:14:46,520 --> 02:14:48,430 我出了车祸 本来应该死去 1068 02:14:49,770 --> 02:14:52,980 但是出于绝望或是疯狂 1069 02:14:53,150 --> 02:14:55,480 那位研究员驾驭了母盒的力量 1070 02:15:11,670 --> 02:15:13,750 释放了一种他无法… 1071 02:15:13,920 --> 02:15:16,590 完全理解的外星科技 1072 02:15:16,750 --> 02:15:19,130 他利用那股力量让我活下来 1073 02:15:22,720 --> 02:15:24,300 活着… 1074 02:15:24,850 --> 02:15:26,810 但变成了这样 1075 02:15:29,600 --> 02:15:31,890 母盒继续沉睡 1076 02:15:32,810 --> 02:15:34,480 他也没有物归原处 1077 02:15:37,110 --> 02:15:39,150 那位研究员就是塞拉斯·斯通 1078 02:15:40,860 --> 02:15:42,530 我的父亲 1079 02:15:45,820 --> 02:15:47,490 等等 1080 02:15:47,660 --> 02:15:51,040 你父亲用一个母盒救了你一命 1081 02:15:51,200 --> 02:15:53,420 它们不是变态杀人机器吗 1082 02:15:53,580 --> 02:15:55,960 它们是改造机器 1083 02:15:56,130 --> 02:15:58,800 母盒没有救人或杀人… 1084 02:15:59,210 --> 02:16:01,300 活着或死亡的概念 1085 02:16:01,460 --> 02:16:03,720 它们按照主人的意愿重新排列物质 1086 02:16:03,880 --> 02:16:05,470 使其再生 恢复原状 1087 02:16:05,640 --> 02:16:07,050 恢复原状 1088 02:16:07,220 --> 02:16:10,640 母盒拥有恢复粒子相互作用的力量 1089 02:16:10,810 --> 02:16:13,890 你是说任何物质的粒子 都不能被创造或毁灭 1090 02:16:14,060 --> 02:16:16,060 它们的相互作用只会转变 1091 02:16:16,230 --> 02:16:18,980 烧掉一栋房子 粒子仍然存在 1092 02:16:19,150 --> 02:16:21,610 房子的粒子变成灰烬的粒子 1093 02:16:21,780 --> 02:16:25,820 任何人只要有火柴 都能把一栋房子化成灰烬 1094 02:16:27,870 --> 02:16:29,620 但是一个母盒 1095 02:16:29,780 --> 02:16:32,000 能够把灰烬变回一栋房子 1096 02:16:38,000 --> 02:16:40,500 我知道我们都在想同样的事 1097 02:16:41,960 --> 02:16:44,470 谁要说我才不说 1098 02:17:11,740 --> 02:17:12,830 谁啊 1099 02:17:13,540 --> 02:17:14,750 玛莎 1100 02:17:33,100 --> 02:17:38,100 我去了星球日报 终于拿回克拉克的东西 1101 02:17:39,600 --> 02:17:42,900 不知道为什么 现在无处可放 1102 02:17:45,690 --> 02:17:47,320 我失去了农场 1103 02:17:48,950 --> 02:17:51,070 我迟缴房贷好一阵子了 1104 02:17:52,450 --> 02:17:56,330 老实说 那房子我一个人住太大了 1105 02:17:56,870 --> 02:17:59,670 你知道我随时都欢迎你来住 1106 02:17:59,830 --> 02:18:01,790 只要你需要的话 1107 02:18:03,000 --> 02:18:05,630 谢谢你 露易丝 你真好心 1108 02:18:07,300 --> 02:18:09,380 但我找到一个小地方 我一个人住刚好 1109 02:18:09,550 --> 02:18:11,010 就在餐馆旁边 1110 02:18:11,640 --> 02:18:13,010 我不是来求助的 1111 02:18:14,180 --> 02:18:16,060 我来是因为… 1112 02:18:16,890 --> 02:18:19,310 我见到派瑞先生 他跟我说… 1113 02:18:20,770 --> 02:18:23,690 克拉克死后你就没去上班了 1114 02:18:28,490 --> 02:18:30,110 我办不到 1115 02:18:37,000 --> 02:18:39,330 全世界都在哀悼 1116 02:18:40,960 --> 02:18:43,380 为了一个象征悲伤 1117 02:18:43,540 --> 02:18:47,340 我走到哪儿都看到那个"S" 1118 02:18:48,470 --> 02:18:50,470 也听到人们在说什么 1119 02:18:50,630 --> 02:18:52,470 好像他们都认识他 1120 02:18:53,680 --> 02:18:55,930 但是他们不认识克拉克 1121 02:18:57,470 --> 02:18:59,810 我不能拦住他们 1122 02:18:59,980 --> 02:19:01,350 看着他们跟他们说 1123 02:19:01,520 --> 02:19:04,270 我为我儿子感到多么骄傲 1124 02:19:06,270 --> 02:19:08,780 只有你知道 1125 02:19:08,940 --> 02:19:11,360 也只有你能体会 1126 02:19:12,700 --> 02:19:15,660 悲伤加上秘密的负担 1127 02:19:18,830 --> 02:19:22,120 我大老远跑来是因为我想… 1128 02:19:22,290 --> 02:19:24,290 因为我想来见你 1129 02:19:25,540 --> 02:19:27,500 告诉你 1130 02:19:27,670 --> 02:19:29,510 我能体会 1131 02:19:31,470 --> 02:19:32,510 我… 1132 02:19:33,800 --> 02:19:37,350 永远都不会像爱你儿子那样爱任何人 1133 02:19:41,100 --> 02:19:43,100 我也很想念他 1134 02:19:44,270 --> 02:19:46,480 我好想他啊 1135 02:19:53,200 --> 02:19:54,870 我也是 亲爱的 1136 02:19:59,450 --> 02:20:04,330 玛莎 你有任何需要我都会帮忙 1137 02:20:07,920 --> 02:20:10,510 你可以帮我一个忙 亲爱的 1138 02:20:12,920 --> 02:20:15,180 继续过活吧 1139 02:20:55,180 --> 02:20:58,010 这世界也需要你 露易丝 1140 02:21:01,810 --> 02:21:02,970 他人都死了 1141 02:21:03,310 --> 02:21:05,060 母盒让维克多死而复生 1142 02:21:05,230 --> 02:21:06,770 维克多并没有死 1143 02:21:06,940 --> 02:21:08,690 生命不是一就是零 1144 02:21:08,860 --> 02:21:11,780 不是生就是死 不能两者都是 1145 02:21:11,940 --> 02:21:13,610 你能操作母盒吗 维克多 1146 02:21:13,780 --> 02:21:14,650 当然了 1147 02:21:15,070 --> 02:21:17,490 但我们不够了解氪星生物学 1148 02:21:17,660 --> 02:21:19,490 谁知道会发生什么事 1149 02:21:21,830 --> 02:21:22,950 好吧 不过… 1150 02:21:23,120 --> 02:21:26,750 我们总得试试 对吧 我们得试试看 1151 02:21:27,370 --> 02:21:28,460 还有什么好顾忌的 1152 02:21:28,630 --> 02:21:31,170 必须唤醒母盒才能尝试 1153 02:21:31,340 --> 02:21:32,800 它一旦苏醒 1154 02:21:32,960 --> 02:21:35,340 敌人就会看到 然后闯进来 1155 02:21:35,510 --> 02:21:38,050 完成三位一体 世界末日来临 1156 02:21:38,220 --> 02:21:40,600 我们会把整个地球… 1157 02:21:40,760 --> 02:21:42,600 拱手让给想灭绝人类的外星人 这真是好消息 1158 02:21:42,760 --> 02:21:45,390 就算超人能回来 1159 02:21:45,560 --> 02:21:47,440 谁敢说他就能打败他们 1160 02:21:47,600 --> 02:21:49,480 母盒这么说 1161 02:21:49,770 --> 02:21:53,020 维克多的父亲 一年多前启动一个母盒 1162 02:21:53,190 --> 02:21:54,940 当时超人还活着 1163 02:21:55,110 --> 02:21:58,530 它没召唤荒原狼 没有母盒召唤他 直到… 1164 02:21:58,700 --> 02:22:00,780 直到超人死后 1165 02:22:00,950 --> 02:22:03,370 直到超人死后 1166 02:22:03,540 --> 02:22:06,080 -因为他们怕他 -没错 1167 02:22:06,660 --> 02:22:08,460 他们怕他 1168 02:22:11,380 --> 02:22:13,170 这是唯一的办法 1169 02:22:14,840 --> 02:22:18,590 这团队有六个人 不是五个人 没有他就没有我们 1170 02:22:28,650 --> 02:22:33,790 第五章 1171 02:22:30,180 --> 02:22:33,790 国王人马 1172 02:22:34,980 --> 02:22:36,940 又完成了一项遗愿清单任务 1173 02:22:37,110 --> 02:22:40,910 把超人从坟墓里挖出来 搞定 1174 02:22:41,320 --> 02:22:42,780 克拉克·乔瑟夫·肯特 1175 02:22:42,950 --> 02:22:45,370 你知道我们能在一奈秒内搞定 对吧 1176 02:22:46,080 --> 02:22:47,450 没错 1177 02:22:55,000 --> 02:22:56,630 他是我的偶像 1178 02:22:59,260 --> 02:23:00,470 好吧 1179 02:23:04,100 --> 02:23:07,140 亚马逊人和亚特兰蒂斯人并肩作战 1180 02:23:07,310 --> 02:23:08,560 半亚特兰蒂斯人 1181 02:23:10,440 --> 02:23:13,190 我们的族人有几千年没说过话了 1182 02:23:13,860 --> 02:23:16,730 不知道 我和我的族人不亲 1183 02:23:17,940 --> 02:23:20,650 我跟亚马逊人一样讨厌亚特兰蒂斯人 1184 02:23:20,820 --> 02:23:22,860 互相仇恨真的很没必要 1185 02:23:25,990 --> 02:23:27,330 是啊 1186 02:23:28,620 --> 02:23:30,210 不 谢了 1187 02:23:34,750 --> 02:23:37,710 我父亲告诉我亚特兰蒂斯有句老话 1188 02:23:39,460 --> 02:23:41,760 "只要从黑暗中拿回什么 1189 02:23:41,930 --> 02:23:44,550 "-就一定要… -就一定要付出代价" 1190 02:23:46,810 --> 02:23:48,390 我们也会这么说 1191 02:23:51,020 --> 02:23:52,350 真没想到 1192 02:23:52,850 --> 02:23:54,730 神奇女侠 1193 02:23:56,270 --> 02:24:00,070 你觉得怎样 她会不会喜欢一个小鲜肉 1194 02:24:00,440 --> 02:24:03,030 她都五千岁了 巴里 1195 02:24:04,910 --> 02:24:06,740 每个男人都是小鲜肉 1196 02:24:08,740 --> 02:24:09,580 天啊 1197 02:24:11,330 --> 02:24:13,040 真是的 1198 02:24:16,380 --> 02:24:18,000 该死 1199 02:24:19,380 --> 02:24:20,380 运气怎么样 1200 02:24:20,550 --> 02:24:21,630 如果你说的"运气"是指… 1201 02:24:21,800 --> 02:24:24,890 "今天能不能让它飞起来的运气" 1202 02:24:25,050 --> 02:24:27,050 那就没有 1203 02:24:27,930 --> 02:24:29,470 没关系 1204 02:24:29,640 --> 02:24:31,350 无所谓 我们只要把尸体 1205 02:24:31,520 --> 02:24:33,770 放进氪星飞船 它基本上是一台有机电脑 1206 02:24:33,940 --> 02:24:35,940 可以直接和母盒讲话 1207 02:24:36,100 --> 02:24:38,570 什么 就像它跟莱克斯·卢瑟讲话 1208 02:24:38,730 --> 02:24:39,770 差不多吧 1209 02:24:39,940 --> 02:24:43,780 还会出什么差错 1210 02:24:50,410 --> 02:24:51,910 韦恩少爷 1211 02:24:54,000 --> 02:24:55,210 你成功了 1212 02:24:55,580 --> 02:24:58,880 你组成了团队 一起打这场仗 1213 02:24:59,170 --> 02:25:01,380 你实现了承诺 1214 02:25:02,460 --> 02:25:05,880 但是想让超人死而复生 我是说… 1215 02:25:06,510 --> 02:25:08,350 你的罪恶感超过了理性 1216 02:25:09,550 --> 02:25:11,680 再多的国王人马都办不到 1217 02:25:11,850 --> 02:25:14,940 阿尔弗雷德 我这次完全凭靠信念 1218 02:25:15,100 --> 02:25:16,940 而不是理性 1219 02:25:17,730 --> 02:25:21,940 但如果你开始玩弄这个母盒 1220 02:25:22,110 --> 02:25:24,190 可能会是一切的终结 1221 02:25:24,360 --> 02:25:26,240 你怎么知道你的团队够强大 1222 02:25:27,490 --> 02:25:29,830 制伏不了冲过来的公牛 1223 02:25:29,990 --> 02:25:31,700 就不要挥舞红色披风 1224 02:25:31,870 --> 02:25:33,450 是这个红色披风就可以 1225 02:25:33,620 --> 02:25:35,790 红色披风会冲回去 1226 02:25:50,510 --> 02:25:51,680 好吧 1227 02:25:58,650 --> 02:26:01,020 你是对的 斯通博士 检验报告是阴性 1228 02:26:01,190 --> 02:26:02,820 大家都没事 包括你在内 1229 02:26:02,980 --> 02:26:05,570 但为了安全起见 我们扫遍了整间实验室 1230 02:26:05,740 --> 02:26:07,490 谢谢你 汤玛斯 所以我可以走了吗 1231 02:26:07,650 --> 02:26:08,490 当然了 1232 02:26:12,490 --> 02:26:13,790 -谢了 -大家听好 1233 02:26:13,950 --> 02:26:16,410 你们都没事了 收拾你们的东西 1234 02:26:16,580 --> 02:26:18,120 如果需要更多医疗照顾… 1235 02:26:18,290 --> 02:26:21,960 亚瑟 我问你 哪个比较低调 选项"A" 1236 02:26:22,130 --> 02:26:23,380 -绝对不是"A" -好吧 1237 02:26:23,550 --> 02:26:26,670 或是…"B" 1238 02:26:28,300 --> 02:26:29,550 我再看看选项"A" 1239 02:26:35,180 --> 02:26:38,310 好了 该换装了 1240 02:26:40,440 --> 02:26:42,400 我一直都穿着 1241 02:27:09,720 --> 02:27:10,550 识别证 1242 02:27:10,800 --> 02:27:11,970 识别证 1243 02:27:15,140 --> 02:27:16,260 遵命 1244 02:27:18,600 --> 02:27:19,810 "遵命" 1245 02:27:21,770 --> 02:27:23,900 星辰实验室人事档案 1246 02:27:35,860 --> 02:27:37,490 卫斯理·罗伊 宪兵 允许通行 1247 02:27:43,040 --> 02:27:44,380 可以了 1248 02:27:44,540 --> 02:27:46,630 "可以" 可以了 1249 02:27:53,590 --> 02:27:54,680 博士 1250 02:27:54,850 --> 02:27:56,050 他们放你出来了 1251 02:27:56,220 --> 02:27:57,510 是啊 他们终于肯听我讲道理 1252 02:27:57,680 --> 02:27:59,930 现在让我们看看电子激光 1253 02:28:00,100 --> 02:28:01,100 有什么进展 1254 02:28:01,270 --> 02:28:03,600 我们有了真正的进展 让我给你看 1255 02:28:18,700 --> 02:28:21,200 维克多 清空这地方 1256 02:28:21,540 --> 02:28:22,790 没问题 1257 02:28:27,000 --> 02:28:29,130 红色警戒 受到污染 1258 02:28:28,530 --> 02:28:30,460 生化威胁 1259 02:28:30,630 --> 02:28:33,090 全体人员立刻疏散 1260 02:28:34,130 --> 02:28:35,300 生化威胁红色警戒 1261 02:28:35,470 --> 02:28:37,850 感应器侦测到外星微生物 1262 02:28:38,010 --> 02:28:40,640 外星微生物不可能 1263 02:28:40,810 --> 02:28:41,810 一定是虚惊一场 1264 02:28:41,980 --> 02:28:44,350 各位 关闭实验室 尽快离开 1265 02:28:44,520 --> 02:28:45,560 -刚刚才扫过一遍 -走吧 1266 02:28:45,730 --> 02:28:47,900 -一定有人误触警报 -走吧 博士 1267 02:28:48,060 --> 02:28:49,650 -想想看 -全员撤离 1268 02:28:49,820 --> 02:28:52,070 听好 等等 该死 1269 02:28:52,240 --> 02:28:54,990 保持冷静 前往最近出口 1270 02:29:01,450 --> 02:29:03,160 注意 全体人员 1271 02:29:03,330 --> 02:29:06,120 快点 大家都出去 快点 1272 02:29:06,290 --> 02:29:07,920 快走 快啊 1273 02:29:08,080 --> 02:29:09,590 大家都出去 快点 1274 02:29:27,980 --> 02:29:29,950 生化威胁 1275 02:29:29,950 --> 02:29:30,520 安全 1276 02:29:30,610 --> 02:29:31,610 搞定 1277 02:29:31,780 --> 02:29:32,610 搞定了 1278 02:29:32,980 --> 02:29:35,650 这是塞拉斯·斯通博士 收到吗 1279 02:29:35,820 --> 02:29:38,280 -请说 -这是假警报 1280 02:29:38,450 --> 02:29:41,620 有人骇入系统 我们得… 1281 02:29:50,960 --> 02:29:52,380 维克多 1282 02:29:54,130 --> 02:29:56,300 斯通博士 你在吗 我没收到 1283 02:29:57,340 --> 02:29:58,340 我搞错了 1284 02:29:58,510 --> 02:29:59,720 警报是真的 1285 02:29:59,890 --> 02:30:01,470 大家都出去 任何人 我重复 1286 02:30:01,640 --> 02:30:04,390 没有我的允许 任何人都不准回来 1287 02:30:04,560 --> 02:30:05,810 收到了 1288 02:30:16,070 --> 02:30:17,490 大家都出来 1289 02:30:17,820 --> 02:30:18,820 快点 快点 1290 02:30:23,240 --> 02:30:24,620 -大家都安全出来了 -应该吧 1291 02:30:24,790 --> 02:30:25,620 -每一个人 -对 1292 02:30:58,950 --> 02:31:00,200 这里 1293 02:31:10,790 --> 02:31:12,750 它知道他来了 1294 02:31:14,630 --> 02:31:15,920 超紧张的 1295 02:31:20,380 --> 02:31:22,260 太惊人了 1296 02:31:23,090 --> 02:31:24,300 太疯狂了 1297 02:31:24,470 --> 02:31:26,350 什么 现在才说疯狂 1298 02:31:26,520 --> 02:31:28,890 你们这群疯子最好知道自己在干嘛 1299 02:32:36,250 --> 02:32:40,260 露易丝·莱恩 星球日报记者 1300 02:32:44,630 --> 02:32:48,050 验孕棒 1301 02:33:54,870 --> 02:33:56,710 系统即将上线 1302 02:34:00,250 --> 02:34:03,880 欢迎 维克多 您想接手掌控吗 1303 02:34:04,050 --> 02:34:04,880 我进去了 1304 02:34:14,310 --> 02:34:16,520 这艘飞船说母盒有敌意 1305 02:34:16,690 --> 02:34:18,350 我可以取消安全协定 1306 02:34:18,520 --> 02:34:20,150 但是没时间修复卢瑟对主电容器 1307 02:34:20,310 --> 02:34:22,610 造成的所有的电力损害 1308 02:34:22,770 --> 02:34:23,940 说白话 1309 02:34:24,110 --> 02:34:26,150 电流不够 无法唤醒母盒 1310 02:34:27,110 --> 02:34:28,530 我可能有办法 1311 02:34:30,870 --> 02:34:32,780 我也许可以启动它 1312 02:34:32,950 --> 02:34:33,990 我不喜欢打破这规则 1313 02:34:34,160 --> 02:34:36,080 但是当我接近光速 我… 1314 02:34:36,250 --> 02:34:37,750 听着 时间会发生疯狂的事 1315 02:34:37,910 --> 02:34:40,500 但要是我成功了 就能制造巨大的电力 1316 02:34:40,670 --> 02:34:42,420 我可以往回跑 只要距离够远 1317 02:34:42,590 --> 02:34:44,750 就能传导大量电流 1318 02:34:44,920 --> 02:34:47,260 也许可以唤醒母盒 如果… 1319 02:34:47,670 --> 02:34:49,260 还是要这么做的话 1320 02:34:49,430 --> 02:34:50,840 没错 开始吧 1321 02:34:55,680 --> 02:34:56,890 你好 莱恩小姐 1322 02:34:57,060 --> 02:34:57,890 早安 1323 02:34:58,060 --> 02:34:59,310 我以为你不会来了 1324 02:35:00,600 --> 02:35:01,940 最后一次 1325 02:35:04,480 --> 02:35:06,070 封锁线 请勿跨越 1326 02:35:19,080 --> 02:35:22,460 我看到发动机 这一定是终点线 1327 02:35:22,960 --> 02:35:24,040 我就位了 1328 02:35:26,920 --> 02:35:29,010 准备开始投放程序 1329 02:35:29,470 --> 02:35:31,090 母盒准备好了 1330 02:35:50,610 --> 02:35:52,450 这艘飞船在求我不要唤醒母盒 1331 02:35:52,610 --> 02:35:54,410 -这是无法逆转的程序 -它很害怕 1332 02:35:54,570 --> 02:35:55,660 它知道荒原狼会来找它 1333 02:35:55,830 --> 02:35:57,580 我们知道了 继续吧 1334 02:35:57,910 --> 02:36:00,370 我强烈建议不要启动 1335 02:36:00,540 --> 02:36:02,080 巴里 我要开始倒数了 1336 02:36:02,250 --> 02:36:03,960 这是无法逆转的程序 1337 02:36:04,210 --> 02:36:05,170 -五 -五 1338 02:36:05,250 --> 02:36:06,090 五 1339 02:36:06,250 --> 02:36:07,380 -天启星有敌意 -馊主意 1340 02:36:07,550 --> 02:36:08,510 并不是 继续吧 1341 02:36:08,800 --> 02:36:09,630 四 1342 02:36:09,800 --> 02:36:10,970 -四 -四 1343 02:36:11,130 --> 02:36:12,840 -我强烈建议不要启动 -我们得立刻中止 1344 02:36:13,010 --> 02:36:13,970 快动手 1345 02:36:14,300 --> 02:36:15,300 -三 -三 1346 02:36:15,470 --> 02:36:16,390 三 1347 02:36:16,560 --> 02:36:18,470 -二 -二 1348 02:36:18,640 --> 02:36:20,390 -二 -这是无法逆转的程序 1349 02:36:20,680 --> 02:36:21,640 -一 -一 1350 02:36:22,690 --> 02:36:25,480 -一 -这是无法逆转的程序 1351 02:37:45,900 --> 02:37:49,860 正义联盟 1352 02:37:54,400 --> 02:37:55,990 -维克多 -不 1353 02:37:57,030 --> 02:37:57,860 上 1354 02:39:28,580 --> 02:39:31,630 未来已经在现在扎根 1355 02:39:32,170 --> 02:39:33,210 快趴下 1356 02:40:49,330 --> 02:40:54,330 你若在寻找他的纪念碑 看看你周围 1357 02:41:17,310 --> 02:41:18,860 他活过来了 1358 02:41:45,880 --> 02:41:48,600 不太对劲 他在扫描我们 1359 02:41:50,720 --> 02:41:52,140 什么 1360 02:42:07,320 --> 02:42:08,160 维克多 1361 02:42:09,450 --> 02:42:10,450 维克多 1362 02:42:12,740 --> 02:42:14,290 -该死 -你在干嘛 1363 02:42:14,750 --> 02:42:16,290 是我的自动防御系统 1364 02:42:16,460 --> 02:42:17,500 它感应到危险 1365 02:42:17,670 --> 02:42:18,830 维克多 住手 1366 02:42:19,000 --> 02:42:20,840 -我无法控制 -住手 1367 02:42:33,270 --> 02:42:34,430 卡尔·艾尔 不要 1368 02:42:42,820 --> 02:42:44,780 他头脑不清楚 不知道自己是谁 1369 02:42:51,950 --> 02:42:54,580 亚瑟 我们得制伏他 1370 02:43:25,150 --> 02:43:28,780 卡尔·艾尔 最后的氪星之子 1371 02:43:29,860 --> 02:43:32,070 回想你是谁 1372 02:43:33,700 --> 02:43:35,120 告诉我你是谁 1373 02:45:09,920 --> 02:45:10,760 快逃 1374 02:45:20,180 --> 02:45:21,810 你最好闪边 1375 02:45:25,100 --> 02:45:26,100 -没事吗 -没事 1376 02:45:26,270 --> 02:45:28,730 起来 去找掩护 快去 1377 02:46:21,160 --> 02:46:23,200 别逼我这么做 1378 02:46:55,900 --> 02:46:57,030 克拉克 1379 02:46:58,110 --> 02:46:59,280 克拉克 不 1380 02:47:10,880 --> 02:47:11,840 克拉克 1381 02:47:12,250 --> 02:47:13,420 不 1382 02:47:14,250 --> 02:47:16,010 这世界需要你 1383 02:47:21,300 --> 02:47:22,220 克拉克 1384 02:47:22,600 --> 02:47:23,850 克拉克 1385 02:47:24,180 --> 02:47:25,970 别开枪 1386 02:47:27,560 --> 02:47:28,690 克拉克 1387 02:47:32,060 --> 02:47:33,440 求求你 1388 02:48:07,680 --> 02:48:08,810 求求你 1389 02:48:20,030 --> 02:48:21,200 求求你 1390 02:48:21,950 --> 02:48:23,740 走吧 1391 02:48:24,200 --> 02:48:25,200 没错 1392 02:48:26,080 --> 02:48:27,370 我们走吧 1393 02:48:59,940 --> 02:49:02,280 真是拍谢 1394 02:49:11,500 --> 02:49:12,410 找掩护 1395 02:49:12,580 --> 02:49:15,080 -他来了 -母盒 1396 02:49:15,250 --> 02:49:16,290 它在哪里 1397 02:49:27,010 --> 02:49:28,220 快点 1398 02:49:29,140 --> 02:49:30,430 快点 1399 02:49:55,960 --> 02:49:59,000 注意 实验室受到入侵 1400 02:49:59,590 --> 02:50:01,760 第四区 第三层 1401 02:50:01,920 --> 02:50:04,720 立刻执行封锁程序 1402 02:50:33,290 --> 02:50:34,870 把母盒给我 1403 02:50:48,050 --> 02:50:49,470 不 不 1404 02:50:52,010 --> 02:50:53,720 爸 等等 不要 1405 02:51:34,060 --> 02:51:36,930 末日即将开始 1406 02:51:42,690 --> 02:51:43,980 维克多 1407 02:51:46,530 --> 02:51:49,650 维克多 你没事吧 站起来 1408 02:51:55,660 --> 02:51:56,830 维克多 1409 02:51:57,950 --> 02:51:59,410 他死了 1410 02:51:59,580 --> 02:52:00,580 什么 1411 02:52:01,670 --> 02:52:02,880 我父亲 1412 02:52:04,340 --> 02:52:07,300 我没能救他 我没办法 1413 02:52:08,090 --> 02:52:09,380 天啊 1414 02:52:16,310 --> 02:52:18,390 他父亲是因我们而死 1415 02:52:18,560 --> 02:52:20,020 我就说唤醒母盒是个馊主意 1416 02:52:20,190 --> 02:52:21,770 这不是个馊主意 1417 02:52:21,940 --> 02:52:24,270 我们需要超人 现在仍然需要 1418 02:52:24,440 --> 02:52:26,730 不管是什么回来了 那不是超人 1419 02:52:26,900 --> 02:52:29,900 也许是他的躯体和超能力 但那不是他 1420 02:52:30,070 --> 02:52:31,700 那是他 1421 02:52:31,860 --> 02:52:33,990 他认得露易丝·莱恩 1422 02:52:34,370 --> 02:52:36,280 -谁 -他挚爱的女人 1423 02:52:36,660 --> 02:52:38,660 -他记得她 -才怪 1424 02:52:39,200 --> 02:52:40,960 他会去找她是因为她不怕他 1425 02:52:41,120 --> 02:52:42,540 这叫做直觉 戴安娜 1426 02:52:49,970 --> 02:52:51,800 等等 荒原狼去了哪儿 1427 02:52:51,970 --> 02:52:55,300 他回去基地组装三个母盒 1428 02:52:55,470 --> 02:52:57,560 我们不知道他的基地在哪里 或是还要多久… 1429 02:52:57,720 --> 02:52:58,560 几个小时 1430 02:52:58,720 --> 02:53:00,390 盒子一旦同步 形成三位一体 1431 02:53:00,560 --> 02:53:02,810 我们不能及时阻止他 地球就完了 1432 02:53:03,730 --> 02:53:05,400 这不像你 1433 02:53:07,940 --> 02:53:09,440 他早就知道 1434 02:53:09,730 --> 02:53:11,320 他早就知道了 1435 02:53:11,490 --> 02:53:12,900 他不是想要摧毁那个母盒 1436 02:53:13,320 --> 02:53:15,240 而是想要让它过热 1437 02:53:15,410 --> 02:53:18,080 让核心变成核反应炉以外 地球上最热的东西 1438 02:53:18,240 --> 02:53:20,290 -那么热的东西一定会… -热源影像系统 1439 02:53:20,450 --> 02:53:22,660 一定会破表 1440 02:53:22,830 --> 02:53:26,210 你父亲为了标记母盒牺牲自己 1441 02:53:26,380 --> 02:53:28,250 我们得回我的实验室使用卫星 1442 02:53:28,420 --> 02:53:30,420 扫描地球哪里有热异常 1443 02:53:30,590 --> 02:53:31,720 我已经在扫描了 1444 02:53:31,880 --> 02:53:33,880 什么 你有一颗卫星 1445 02:53:34,050 --> 02:53:35,010 我有六颗 1446 02:53:35,680 --> 02:53:36,600 是喔 1447 02:53:38,390 --> 02:53:40,390 咱们去找那个混帐东西 1448 02:53:46,190 --> 02:53:51,480 第六章 1449 02:53:47,930 --> 02:53:51,480 “更黑暗的东西” 1450 02:54:01,280 --> 02:54:04,790 法拍屋出售 1451 02:54:04,960 --> 02:54:07,040 你把我带来这里 1452 02:54:07,210 --> 02:54:08,380 你记得 1453 02:54:09,290 --> 02:54:10,920 这是我的家 1454 02:54:12,840 --> 02:54:14,050 你说话了 1455 02:54:18,090 --> 02:54:19,970 我之前没有吗 1456 02:54:53,960 --> 02:54:56,510 你母亲迟缴了房贷 1457 02:54:58,010 --> 02:55:00,010 没有告诉任何人 1458 02:55:01,680 --> 02:55:03,430 我不明白 1459 02:55:06,520 --> 02:55:08,940 她的自尊心很强 克拉克 1460 02:55:12,070 --> 02:55:13,440 穿上去 1461 02:55:28,370 --> 02:55:30,040 她很喜欢这里 1462 02:55:40,840 --> 02:55:42,470 我也是 1463 02:55:44,470 --> 02:55:45,890 我也是 1464 02:56:13,000 --> 02:56:14,630 这太酷了 1465 02:56:14,790 --> 02:56:16,300 我带了一些朋友来 1466 02:56:22,840 --> 02:56:25,430 天啊 太棒了 1467 02:56:25,600 --> 02:56:28,100 大伙儿 这是阿尔弗雷德 我替他工作 1468 02:56:28,270 --> 02:56:30,480 -阿尔弗雷德 -你好 女士 1469 02:56:36,940 --> 02:56:38,820 这里真的很酷 阿尔弗雷德 1470 02:56:41,610 --> 02:56:44,030 我去泡茶 1471 02:56:44,200 --> 02:56:45,200 太好了 1472 02:56:45,370 --> 02:56:47,200 不知道哪里有这么多杯子 1473 02:56:50,120 --> 02:56:52,960 那就是母盒 就在那里 1474 02:56:53,120 --> 02:56:54,920 显示可见光谱 1475 02:56:57,800 --> 02:56:58,630 普扎诺夫 1476 02:56:59,210 --> 02:57:02,050 离莫斯科不远的鬼城 1477 02:57:02,220 --> 02:57:04,890 三十年前发生核事故后被废弃 1478 02:57:05,050 --> 02:57:06,260 就连军队也不进去 1479 02:57:06,430 --> 02:57:07,720 是啊 辐射性一定强到 1480 02:57:07,890 --> 02:57:10,060 你的脖子会长出另一只脚 1481 02:57:10,230 --> 02:57:11,060 不再是这样了 1482 02:57:11,230 --> 02:57:13,400 他收集了辐射 用来创建他的基地 1483 02:57:13,560 --> 02:57:14,400 放大 1484 02:57:18,400 --> 02:57:19,780 他到底在盖什么 1485 02:57:19,940 --> 02:57:21,190 三位一体在里面 1486 02:57:21,360 --> 02:57:22,780 我们要从上面进攻 1487 02:57:22,950 --> 02:57:25,530 炸药无法分开母盒 1488 02:57:25,700 --> 02:57:27,530 只会强化它们的联系 1489 02:57:27,700 --> 02:57:28,830 什么 我们不能炸掉它 1490 02:57:28,990 --> 02:57:30,450 不能从外面 1491 02:57:32,040 --> 02:57:34,420 我想插入合而为一的母盒 1492 02:57:35,130 --> 02:57:36,540 和它融为一体 1493 02:57:36,710 --> 02:57:39,250 从内部削弱它的连结 就能够再把它拆成三个 1494 02:57:39,420 --> 02:57:41,630 不行 你不知道你会面对什么 1495 02:57:41,800 --> 02:57:45,340 你得一个人融入三位一体 1496 02:57:45,510 --> 02:57:47,850 这三个母盒结合起来足以毁天灭地 1497 02:57:48,010 --> 02:57:49,430 它们存在了十亿年 1498 02:57:49,600 --> 02:57:51,730 绝对会钻进你脑袋 找到你的弱点 1499 02:57:51,890 --> 02:57:54,060 和你的恐惧 并用来摧毁你 1500 02:57:54,230 --> 02:57:56,230 只要让我进去 替我争取时间 1501 02:57:56,480 --> 02:57:57,650 你可能会死 维克多 1502 02:57:57,810 --> 02:58:00,110 我不这样做 我们都会死 1503 02:58:04,860 --> 02:58:06,620 我失去了一切 1504 02:58:12,000 --> 02:58:13,960 你不是要我使用这些超能力吗 1505 02:58:17,040 --> 02:58:18,540 我就要这么做 1506 02:58:18,710 --> 02:58:20,590 好吧 所以… 1507 02:58:21,300 --> 02:58:24,550 维克多想和末日母盒 合而为一拯救世界 1508 02:58:24,760 --> 02:58:26,930 那就让他这么做吧 1509 02:58:27,260 --> 02:58:30,060 但要让他这么做就得攻击基地 1510 02:58:30,220 --> 02:58:32,430 深入地狱向魔鬼与他的军团… 1511 02:58:32,600 --> 02:58:33,640 正式开战 1512 02:58:33,810 --> 02:58:36,060 这家伙在他摧毁的星球上 1513 02:58:36,230 --> 02:58:40,190 大概打过成千上万个超级英雄 对吧 1514 02:58:40,360 --> 02:58:41,860 我们得假设他都赢了 1515 02:58:42,030 --> 02:58:45,150 我才不管他在多少个地狱 打过多少恶魔 1516 02:58:45,320 --> 02:58:48,820 他没打过我们 团结一致的我们 1517 02:59:39,290 --> 02:59:40,920 我猜你说"愿意" 1518 02:59:41,540 --> 02:59:42,380 什么 1519 02:59:45,840 --> 02:59:47,090 那只婚戒 1520 02:59:50,800 --> 02:59:52,350 你真的回来了 1521 03:00:25,840 --> 03:00:28,050 我得到第二次机会 1522 03:00:30,340 --> 03:00:32,800 绝对不会白白浪费 1523 03:01:31,070 --> 03:01:32,240 真的是你吗 1524 03:01:32,400 --> 03:01:34,110 真的是我 妈 1525 03:01:52,130 --> 03:01:54,180 听好 妈 1526 03:01:55,760 --> 03:01:57,800 他们让我回来一定有原因 1527 03:01:59,560 --> 03:02:01,100 我得知道为什么 1528 03:02:21,240 --> 03:02:22,660 维克多怎么样 1529 03:02:27,040 --> 03:02:29,790 你也知道 他想独处一下 1530 03:02:31,380 --> 03:02:34,550 我们要求一个刚失去父亲的孩子… 1531 03:02:34,720 --> 03:02:37,510 对抗全宇宙最强大的机器 1532 03:02:39,350 --> 03:02:40,850 这不公平 1533 03:02:42,600 --> 03:02:44,230 我以为你不在乎 1534 03:02:45,640 --> 03:02:47,150 我从来没这么说过 1535 03:03:00,080 --> 03:03:01,490 怎么了 1536 03:03:05,410 --> 03:03:10,420 我做过一个梦 不晓得 几乎就像一种预感 1537 03:03:11,380 --> 03:03:14,170 那是世界末日 1538 03:03:14,340 --> 03:03:17,180 巴里·艾伦就在这里 1539 03:03:17,340 --> 03:03:21,220 他跟我说 "露易丝·莱恩才是关键" 1540 03:03:23,890 --> 03:03:27,100 对超人来说…她是 1541 03:03:28,150 --> 03:03:29,770 每个人都有心爱的人 1542 03:03:30,400 --> 03:03:32,270 我想不只是这样 1543 03:03:33,150 --> 03:03:35,030 这是更黑暗的东西 1544 03:03:39,200 --> 03:03:40,200 韦恩少爷 1545 03:03:40,370 --> 03:03:41,870 韦恩少爷 1546 03:03:42,700 --> 03:03:44,370 你得来看看 1547 03:04:07,640 --> 03:04:09,350 你修好了 1548 03:04:09,520 --> 03:04:11,230 它想要飞行 1549 03:04:12,480 --> 03:04:13,820 飞行是它的本能 1550 03:04:13,980 --> 03:04:15,280 也是你的 1551 03:04:22,070 --> 03:04:24,030 他会来的 阿尔弗雷德 我知道 1552 03:04:24,200 --> 03:04:25,830 你为何这么肯定 1553 03:04:26,580 --> 03:04:29,160 信念 阿尔弗雷德 信念 1554 03:04:51,270 --> 03:04:52,850 终于 1555 03:04:54,690 --> 03:04:57,400 准备迎接他的到来 1556 03:04:59,240 --> 03:05:03,370 我即将得到救赎 1557 03:05:11,250 --> 03:05:12,710 合而为一 1558 03:05:17,880 --> 03:05:20,380 同步化 1559 03:06:04,720 --> 03:06:07,640 卫星显示他打造了一个防御圆顶 1560 03:06:07,800 --> 03:06:08,970 这是个设计缺陷 1561 03:06:09,140 --> 03:06:11,390 把塔台射倒 圆顶就会崩垮 1562 03:06:11,560 --> 03:06:13,560 敌人不会料到我们正面攻击 1563 03:06:13,730 --> 03:06:17,230 是啊 因为他没想到 有人会这么疯狂 1564 03:06:18,230 --> 03:06:19,520 布鲁斯是对的 1565 03:06:19,690 --> 03:06:21,280 我们必须摧毁防御圆顶 1566 03:06:21,440 --> 03:06:23,740 在它们同步化之前找到母盒 1567 03:06:23,900 --> 03:06:25,610 要是圆顶没被摧毁呢 1568 03:06:25,780 --> 03:06:26,780 它一定会被摧毁 1569 03:06:26,950 --> 03:06:28,580 维克多一旦融入三位一体 1570 03:06:29,080 --> 03:06:32,330 有巴里的协助 他就能突破母盒的防御 1571 03:06:32,500 --> 03:06:33,960 提醒我 我该怎么做 1572 03:06:34,120 --> 03:06:35,750 用爱的力量 1573 03:06:35,920 --> 03:06:38,540 -巴里 -我得造成能量大爆发 1574 03:06:38,710 --> 03:06:39,710 很好 1575 03:06:39,880 --> 03:06:41,760 你得比以前跑得更快 1576 03:06:41,920 --> 03:06:44,470 才能产生这么大的电流 1577 03:06:44,630 --> 03:06:46,640 然后直接碰触维克多的身体 1578 03:06:46,970 --> 03:06:49,850 那股能量应该能让他进入母盒 1579 03:06:50,010 --> 03:06:51,890 维克多 之后就靠你了 1580 03:06:52,060 --> 03:06:54,810 在它同步化之前把它扯开 1581 03:06:56,390 --> 03:06:58,520 我们终于有了计划 1582 03:06:59,060 --> 03:07:00,770 我们有了计划 1583 03:07:16,120 --> 03:07:18,170 艾尔之家的标记代表希望 1584 03:07:18,330 --> 03:07:20,500 这希望包含了一个基本的信念 1585 03:07:20,670 --> 03:07:24,380 那就是每个人都有行善的潜力 1586 03:07:24,550 --> 03:07:25,380 克拉克 1587 03:07:25,550 --> 03:07:26,840 那就是你能带给他们的 1588 03:07:27,010 --> 03:07:28,970 你被送来这里是有原因的 1589 03:07:29,140 --> 03:07:33,010 你将给地球的人类 一个努力达到的理想 1590 03:07:33,680 --> 03:07:35,520 就算你必须穷尽一生 1591 03:07:35,680 --> 03:07:39,440 也得尽全力找到你来这里的原因 1592 03:07:39,600 --> 03:07:42,230 他们会犯错 也会失败 1593 03:07:42,400 --> 03:07:43,730 但你必须做出选择 1594 03:07:44,530 --> 03:07:46,950 他们将与你一起迎向阳光 1595 03:07:47,110 --> 03:07:51,070 你必须选择是否要 骄傲地站在全人类面前 1596 03:07:51,240 --> 03:07:54,410 你将帮助他们完成奇迹 1597 03:08:11,550 --> 03:08:16,060 氪星所有的希望和梦想 都寄托在你身上 1598 03:08:16,220 --> 03:08:18,480 我真为你感到骄傲 儿子 1599 03:08:19,810 --> 03:08:21,860 你母亲和我都很爱你 1600 03:08:22,520 --> 03:08:26,070 你母亲和我都知道你会改变世界 1601 03:08:27,360 --> 03:08:29,200 你的心受到考验 1602 03:08:30,490 --> 03:08:32,450 我知道这很难 克拉克 1603 03:08:33,200 --> 03:08:36,120 但你给了他们的世界一个希望 1604 03:08:36,290 --> 03:08:38,960 你必须让他们看到你是谁 1605 03:08:39,660 --> 03:08:41,370 爱他们吧 卡尔·艾尔 1606 03:08:42,000 --> 03:08:44,130 就像我们爱你一样 1607 03:08:46,590 --> 03:08:47,710 飞吧 儿子 1608 03:08:48,760 --> 03:08:49,970 是时候了 1609 03:09:53,740 --> 03:09:56,870 我要把塔台射倒 破坏力场圆顶 1610 03:09:57,030 --> 03:09:58,160 不管你们看到什么 1611 03:09:59,490 --> 03:10:01,450 都要按照计划 1612 03:10:03,330 --> 03:10:05,250 这就是我把你们聚在一起的原因 1613 03:10:45,330 --> 03:10:47,080 布鲁斯 撤退 你不会成功的 1614 03:10:50,880 --> 03:10:52,920 只要敲大声一点 1615 03:11:17,910 --> 03:11:19,490 杀了他 1616 03:11:19,660 --> 03:11:22,410 快去捍卫三位一体 1617 03:11:27,710 --> 03:11:28,630 惨了 1618 03:11:48,940 --> 03:11:49,860 塔台倒了 1619 03:11:51,480 --> 03:11:52,900 收到吗 1620 03:11:53,530 --> 03:11:54,650 收到了 1621 03:11:55,740 --> 03:11:57,110 你没事吗 1622 03:11:58,360 --> 03:12:00,950 布鲁斯 1623 03:12:01,240 --> 03:12:02,120 快去反应炉 1624 03:12:02,280 --> 03:12:04,790 我会尽量把这些怪物引开来 1625 03:12:04,950 --> 03:12:05,790 那是什么意思 1626 03:12:08,790 --> 03:12:10,790 别担心我 快去找到母盒 1627 03:12:13,460 --> 03:12:14,630 它们来了 1628 03:12:15,010 --> 03:12:15,920 布鲁斯 1629 03:12:18,840 --> 03:12:20,140 失去讯号 1630 03:12:21,850 --> 03:12:23,100 上吧 1631 03:13:02,010 --> 03:13:03,850 跟我来呀 你们这群臭虫 1632 03:14:23,800 --> 03:14:24,970 严重受损 1633 03:15:04,970 --> 03:15:06,220 你真的发疯了 1634 03:15:33,120 --> 03:15:34,250 不客气 1635 03:15:34,410 --> 03:15:35,710 厉害 兄弟 1636 03:17:08,800 --> 03:17:10,430 放心 我们能搞定 1637 03:17:10,590 --> 03:17:11,970 你去做该做的事 1638 03:18:07,770 --> 03:18:09,280 我猜你就是阿尔弗雷德 1639 03:18:11,150 --> 03:18:12,450 肯特少爷 1640 03:18:14,490 --> 03:18:15,990 他说你会来 1641 03:18:17,700 --> 03:18:21,120 希望你没有来得太晚 1642 03:18:31,970 --> 03:18:33,050 喂 1643 03:18:42,350 --> 03:18:43,690 记得我吗 1644 03:18:46,230 --> 03:18:47,650 第二回合 1645 03:18:48,360 --> 03:18:49,520 好啊 1646 03:19:11,050 --> 03:19:12,420 上吧 1647 03:19:13,380 --> 03:19:15,680 告诉我 亚马逊女战士 1648 03:19:15,840 --> 03:19:19,140 你为何抛弃自己的姐妹 1649 03:19:20,060 --> 03:19:22,470 跑来跟这些卑微的生物 1650 03:19:22,640 --> 03:19:25,940 混在一起 1651 03:19:26,140 --> 03:19:28,980 你没能赶去保护她们被我屠杀 1652 03:19:29,230 --> 03:19:31,440 可悲的是 你本来可以的 1653 03:20:12,230 --> 03:20:13,940 巴里 我就位了 1654 03:20:32,710 --> 03:20:35,420 好 我来产生电流 1655 03:20:36,050 --> 03:20:37,130 你来倒数 1656 03:20:38,300 --> 03:20:39,550 等我倒数到一 1657 03:20:40,220 --> 03:20:42,180 三 二… 1658 03:20:45,350 --> 03:20:46,730 放开我 1659 03:20:47,230 --> 03:20:48,560 维克多 1660 03:21:24,640 --> 03:21:26,180 维克多 1661 03:21:30,020 --> 03:21:32,520 我看着你的小岛燃烧 1662 03:21:32,690 --> 03:21:36,150 你的姐妹哀求我饶她们一命 1663 03:21:36,320 --> 03:21:38,570 你母亲也一样 1664 03:21:38,940 --> 03:21:39,950 骗子 1665 03:22:05,680 --> 03:22:07,680 我撑不住了 1666 03:22:08,560 --> 03:22:09,560 维克多 1667 03:22:31,790 --> 03:22:34,000 维克多 我撑不住了 1668 03:22:40,670 --> 03:22:42,920 为了达克赛德 1669 03:22:46,890 --> 03:22:49,260 没什么用 1670 03:23:33,770 --> 03:23:34,890 好吧 1671 03:23:35,060 --> 03:23:36,650 卡尔·艾尔 1672 03:24:15,180 --> 03:24:17,390 巴里 我连上了母盒 1673 03:24:17,560 --> 03:24:19,520 我需要电流才能进去 1674 03:24:41,590 --> 03:24:42,590 巴里 1675 03:24:43,500 --> 03:24:45,170 巴里 你没事吧 1676 03:24:46,800 --> 03:24:47,630 巴里 1677 03:24:47,800 --> 03:24:51,390 我没力了 我得喘口气 1678 03:25:08,490 --> 03:25:11,320 巴里 你在哪里 它快要同步化了 1679 03:25:11,570 --> 03:25:13,330 好吧 好吧 1680 03:25:14,160 --> 03:25:16,330 喔买尬 快点愈合 巴里 1681 03:25:16,500 --> 03:25:18,160 愈合啊 1682 03:25:44,020 --> 03:25:45,570 巴里 1683 03:25:58,500 --> 03:26:00,210 太迟了 1684 03:26:01,540 --> 03:26:02,960 噢 不 1685 03:26:07,170 --> 03:26:08,840 他来了 1686 03:26:38,330 --> 03:26:39,160 好吧 1687 03:26:39,330 --> 03:26:41,910 我得超越光速 跑得比光速更快 1688 03:26:42,080 --> 03:26:45,330 你得打破规则 巴里 现在就得这么做 1689 03:26:58,390 --> 03:27:00,100 爸… 1690 03:27:03,940 --> 03:27:06,270 不管发生什么事 我都要你知道 1691 03:27:08,980 --> 03:27:10,980 你儿子也是一个英雄 爸 1692 03:27:14,200 --> 03:27:16,110 精英中的精英 1693 03:28:11,550 --> 03:28:14,090 创造自己的未来 1694 03:28:20,550 --> 03:28:22,510 也创造自己的过去 1695 03:28:27,100 --> 03:28:30,650 一切都没事了 1696 03:29:00,640 --> 03:29:02,350 斯通 哥谭市立大学 1697 03:29:07,020 --> 03:29:09,600 哥谭市 1698 03:29:17,690 --> 03:29:19,860 我们一直在等着你 维克多 1699 03:29:20,990 --> 03:29:23,070 我破碎的儿子 1700 03:29:25,490 --> 03:29:27,500 你不会再孤单了 1701 03:29:27,660 --> 03:29:29,330 我们会再全家团圆 1702 03:29:37,170 --> 03:29:39,260 我们可以像以前一样 1703 03:29:43,600 --> 03:29:45,720 让你恢复原状 1704 03:29:57,570 --> 03:29:59,320 我并没有破碎 1705 03:30:09,040 --> 03:30:10,910 我也并不孤单 1706 03:30:27,720 --> 03:30:28,720 超人 1707 03:31:59,400 --> 03:32:01,360 我跟你说过 1708 03:32:02,940 --> 03:32:05,570 荒原狼会失败 1709 03:32:06,530 --> 03:32:10,200 没错 你是说过 1710 03:32:10,870 --> 03:32:15,370 我的主人 母盒被摧毁了 1711 03:32:16,250 --> 03:32:20,000 你要怎么得到你的大奖 1712 03:32:20,250 --> 03:32:23,670 找到了反生命方程序 狄萨德 1713 03:32:23,840 --> 03:32:28,510 我们会不择手段得到它 1714 03:32:31,680 --> 03:32:33,180 准备出动舰队 1715 03:32:34,100 --> 03:32:36,520 我们要用老方法 1716 03:34:39,080 --> 03:34:44,270 后记 1717 03:34:40,690 --> 03:34:44,270 再为人父 1718 03:35:00,870 --> 03:35:03,000 这又是你父亲 1719 03:35:10,300 --> 03:35:14,630 现在 让我说出内心话 不是身为一个科学家 1720 03:35:14,800 --> 03:35:16,470 而是身为一个父亲 1721 03:35:17,680 --> 03:35:19,720 让我再为人父 1722 03:35:22,270 --> 03:35:25,690 我把你带到这世界 又把你带回来 1723 03:35:25,850 --> 03:35:29,480 你无法想像我有多为你感到骄傲 1724 03:35:30,030 --> 03:35:31,690 一直都是如此 1725 03:35:33,820 --> 03:35:38,700 我浪费了这么多年没有陪你 也犯了太多错没有改过 1726 03:35:41,160 --> 03:35:43,040 一切都会崩裂 维克多 1727 03:35:43,620 --> 03:35:45,870 一切都会改变 1728 03:35:56,550 --> 03:35:58,640 我得去见我父亲 1729 03:36:34,210 --> 03:36:36,050 这世界伤痕累累 1730 03:36:36,220 --> 03:36:37,300 支离破碎 1731 03:36:37,470 --> 03:36:39,260 无法改变 1732 03:36:40,050 --> 03:36:43,140 飞船是你的了 小子 你是老大 1733 03:36:45,430 --> 03:36:48,600 "蔡瑞恩 纳米科技总监" 1734 03:36:48,770 --> 03:36:50,270 那是你的专长 1735 03:36:50,940 --> 03:36:52,360 没错 1736 03:36:52,940 --> 03:36:54,530 那是我的专长 1737 03:36:59,570 --> 03:37:04,910 但世界不能在过去修复 只有在未来才能 1738 03:37:06,790 --> 03:37:10,670 未来与现在 1739 03:37:10,830 --> 03:37:13,800 至少要有30 45公尺 1740 03:37:14,380 --> 03:37:15,710 至少 1741 03:37:16,840 --> 03:37:18,470 一张大圆桌 1742 03:37:18,630 --> 03:37:20,800 六张椅子 就在那里 1743 03:37:21,930 --> 03:37:23,560 但还能坐更多人 1744 03:37:25,970 --> 03:37:27,600 还能坐更多人 1745 03:37:28,600 --> 03:37:30,350 老天保佑我们 1746 03:37:32,150 --> 03:37:34,150 现在就是你 1747 03:37:37,860 --> 03:37:39,240 什么 1748 03:37:39,400 --> 03:37:42,200 这是刑事实验室最烂的工作 1749 03:37:42,370 --> 03:37:44,740 不过我入门了 1750 03:37:44,910 --> 03:37:46,500 这是"真正"的工作 1751 03:37:47,290 --> 03:37:48,410 "真正的" 1752 03:37:52,630 --> 03:37:54,670 你入门了 1753 03:37:57,010 --> 03:37:58,130 大家不都是这么说吗 1754 03:37:58,300 --> 03:38:00,220 你入门了 1755 03:38:00,380 --> 03:38:02,680 是啊 大家都是这么说 1756 03:38:02,840 --> 03:38:04,260 他入门了 1757 03:38:04,550 --> 03:38:07,020 -那是我的乖儿子 -噢 天啊 1758 03:38:07,220 --> 03:38:08,560 我什么都没教他 1759 03:38:08,730 --> 03:38:10,770 -爸 你会再被喷辣椒水 -好样的 1760 03:38:14,270 --> 03:38:15,980 你的前途无量 1761 03:38:18,110 --> 03:38:19,360 谢了 爸 1762 03:38:19,740 --> 03:38:20,570 现在 1763 03:38:20,740 --> 03:38:23,820 现在是你崛起的时刻 维克多 1764 03:38:24,120 --> 03:38:27,080 光是说声"谢谢你"并不够 1765 03:38:27,240 --> 03:38:30,620 我只是弥补一个错误而已 1766 03:38:41,050 --> 03:38:43,510 你怎么向银行把房子要回来的 1767 03:38:43,970 --> 03:38:45,970 我买下了银行 1768 03:38:48,390 --> 03:38:50,680 对了 恭喜了 1769 03:38:51,020 --> 03:38:52,950 坚持下去 勇往直前 1770 03:38:52,600 --> 03:38:53,900 挚爱的父亲 塞拉斯·斯通 1969-2017 1771 03:38:52,950 --> 03:38:56,440 当一个我未曾当过的英雄 1772 03:38:58,280 --> 03:39:00,570 在勇士之中占有一席之地 1773 03:39:00,740 --> 03:39:05,660 从前 现在与未来 1774 03:39:38,320 --> 03:39:41,230 你该挺身而出了 1775 03:39:44,990 --> 03:39:46,490 勇敢奋战 1776 03:39:49,120 --> 03:39:50,540 努力发掘 1777 03:39:55,290 --> 03:39:57,380 愈合与爱 1778 03:40:00,960 --> 03:40:02,010 赢得胜利 1779 03:40:28,620 --> 03:40:30,200 关键时刻… 1780 03:40:30,490 --> 03:40:31,870 就是现在 1781 03:40:41,040 --> 03:40:42,300 准备好了吗 1782 03:40:42,460 --> 03:40:43,760 来吧 史蒂芬 1783 03:40:47,380 --> 03:40:48,680 继续走吧 1784 03:40:50,600 --> 03:40:51,720 走吧 1785 03:40:53,520 --> 03:40:55,270 来吧 卢瑟 走吧 1786 03:40:58,940 --> 03:41:00,060 卢瑟 1787 03:41:05,070 --> 03:41:06,070 打开二号牢房 卡尔 1788 03:41:15,250 --> 03:41:16,540 卢瑟 1789 03:41:21,590 --> 03:41:24,800 别闹了 卢瑟 不然我要进去教训你 1790 03:41:52,190 --> 03:41:54,410 阿卡姆 哥谭市 1791 03:41:59,480 --> 03:42:02,130 阿卡姆精神病院 1792 03:42:54,050 --> 03:42:55,350 他来了 1793 03:42:56,100 --> 03:42:57,350 欢迎上船 1794 03:42:57,510 --> 03:42:59,310 来一杯顶级香槟 1795 03:42:59,470 --> 03:43:01,350 我只是在庆祝神的回归 1796 03:43:01,520 --> 03:43:03,810 从地底回到天空 1797 03:43:04,190 --> 03:43:06,440 听说你脑筋秀逗了 1798 03:43:07,110 --> 03:43:08,320 本来是 谢谢你 1799 03:43:08,480 --> 03:43:12,780 直到阿卡汉的良医 让我的头脑再度清晰 1800 03:43:12,950 --> 03:43:16,240 你自愿免费干掉蝙蝠侠 1801 03:43:16,410 --> 03:43:17,910 为什么这么好心 1802 03:43:18,660 --> 03:43:19,740 这是私人恩怨 1803 03:43:20,410 --> 03:43:23,210 让我猜 以眼还眼 1804 03:43:25,290 --> 03:43:27,000 你说你有我要的东西 1805 03:43:27,170 --> 03:43:28,590 你最好别浪费我的时间 1806 03:43:29,000 --> 03:43:32,670 我哪敢惹你呀 威尔森先生 1807 03:43:32,840 --> 03:43:36,430 我有更重要的事要做 所以得好好活着 1808 03:43:37,390 --> 03:43:40,850 但如果你想找到蝙蝠侠 1809 03:43:41,020 --> 03:43:44,100 有件事可以帮你大忙 1810 03:43:45,440 --> 03:43:49,570 他的名字是布鲁斯·韦恩 1811 03:43:53,650 --> 03:43:55,200 现在想一想 1812 03:43:57,530 --> 03:43:59,450 这件事的确值得庆祝 1813 03:44:00,580 --> 03:44:02,000 好样的 1814 03:45:06,310 --> 03:45:07,520 安全 1815 03:45:13,020 --> 03:45:14,530 还有多远 1816 03:45:15,780 --> 03:45:16,990 就快到了 1817 03:45:19,240 --> 03:45:20,780 我们得快点 1818 03:45:20,950 --> 03:45:22,450 不能在外面待太久 1819 03:45:22,620 --> 03:45:24,240 他会来找我们 1820 03:45:27,210 --> 03:45:28,830 让他来 1821 03:45:29,330 --> 03:45:30,960 让那个混蛋来吧 1822 03:45:32,420 --> 03:45:36,210 他杀了亚瑟 我要一刀捅死他 1823 03:45:37,010 --> 03:45:38,930 我要让他付出代价 1824 03:45:40,640 --> 03:45:42,930 我知道你的感受 湄拉 1825 03:45:43,430 --> 03:45:45,930 你一点都不知道 1826 03:45:46,430 --> 03:45:50,560 但我们得按照计划才有机会成功 1827 03:45:58,490 --> 03:46:01,910 你曾经爱过谁 1828 03:46:16,050 --> 03:46:19,220 你错了 小美人鱼 1829 03:46:22,970 --> 03:46:26,390 他很了解失去挚爱的感受 1830 03:46:28,350 --> 03:46:30,600 就像是… 1831 03:46:31,940 --> 03:46:33,310 一个父亲 1832 03:46:34,770 --> 03:46:36,110 和一个母亲 1833 03:46:37,110 --> 03:46:40,150 你说下一句话前最好小心一点 1834 03:46:41,820 --> 03:46:43,820 或是一个养子 1835 03:46:47,580 --> 03:46:49,200 对不对… 1836 03:46:50,750 --> 03:46:52,210 蝙蝠侠 1837 03:46:55,460 --> 03:46:58,670 也许那只臭美人鱼是对的 1838 03:47:00,510 --> 03:47:04,800 你对死亡麻木之前 还有多少人会死在你怀里 1839 03:47:06,390 --> 03:47:08,270 你说话一点都不小心 1840 03:47:09,520 --> 03:47:12,640 你还要看着多少死人的眼睛 1841 03:47:13,350 --> 03:47:15,730 才会彻底心死 1842 03:47:16,270 --> 03:47:19,940 我已经心死了很久 1843 03:47:20,110 --> 03:47:22,030 但就连我也有忍耐极限 1844 03:47:22,200 --> 03:47:23,910 你敢跨过那极限 我发誓会… 1845 03:47:24,070 --> 03:47:26,370 你会怎样 布鲁斯杀了我 1846 03:47:27,080 --> 03:47:28,870 你不会杀我 1847 03:47:29,740 --> 03:47:31,710 我是你最好的朋友 1848 03:47:32,210 --> 03:47:36,250 而且 谁会摸你的蛋蛋 1849 03:47:38,250 --> 03:47:39,630 反正呢 1850 03:47:40,920 --> 03:47:42,470 你需要我 1851 03:47:43,510 --> 03:47:45,010 你… 1852 03:47:45,550 --> 03:47:51,180 让她死以后造成的这个世界 需要我帮你恢复原状 1853 03:47:53,770 --> 03:47:55,020 可怜的露易丝 1854 03:47:55,810 --> 03:47:58,610 她受尽了折磨 1855 03:48:04,490 --> 03:48:05,950 我常常在想 1856 03:48:06,910 --> 03:48:11,040 你在多少个平行时空毁灭世界 老实说… 1857 03:48:12,200 --> 03:48:16,370 都是因为你没种让自己死 1858 03:48:20,960 --> 03:48:24,760 所以我还是一样比你更成熟 1859 03:48:28,600 --> 03:48:30,060 停战吧 1860 03:48:30,890 --> 03:48:32,180 布鲁斯 1861 03:48:34,940 --> 03:48:39,020 只要你有这张牌 我们就停战 1862 03:48:42,070 --> 03:48:45,280 但你只要把它撕成一半 我就很乐意跟你谈谈 1863 03:48:45,450 --> 03:48:48,450 你为什么要派那个神奇小子 1864 03:48:50,200 --> 03:48:52,040 去做一个男人的工作 1865 03:48:55,460 --> 03:48:57,250 真的很好笑 1866 03:48:57,420 --> 03:49:00,460 你竟然敢说有多少人死在我怀里 1867 03:49:00,630 --> 03:49:02,340 当我把哈莉·奎茵抱在怀里 1868 03:49:02,500 --> 03:49:04,970 她满身是血 奄奄一息时 1869 03:49:05,130 --> 03:49:08,680 她用最后一口气哀求我 1870 03:49:08,840 --> 03:49:11,100 当我杀你的时候 1871 03:49:11,260 --> 03:49:14,680 别搞错 我一定会他妈的杀了你 1872 03:49:14,850 --> 03:49:16,690 她要我慢慢来 1873 03:49:17,890 --> 03:49:19,860 我会信守这个承诺 1874 03:49:51,640 --> 03:49:53,220 你真会演戏 1875 03:49:57,520 --> 03:49:59,100 差点就唬住我了 1876 03:50:18,580 --> 03:50:19,660 我们要躲在哪里 1877 03:50:19,830 --> 03:50:22,080 他永远不会料到的地方 1878 03:50:22,540 --> 03:50:25,460 还是觉得带着他是个好主意吗 1879 03:50:26,550 --> 03:50:28,090 你觉得呢 1880 03:50:34,180 --> 03:50:35,180 他找到我们了 1881 03:52:04,350 --> 03:52:05,810 我能帮你吗 1882 03:52:07,190 --> 03:52:10,690 你一定知道达克赛德不会放过地球 1883 03:52:10,860 --> 03:52:13,860 反生命方程序就在这里 1884 03:52:14,030 --> 03:52:16,820 我们得赶在他之前找到它 1885 03:52:16,990 --> 03:52:18,700 决战时刻即将到来 1886 03:52:18,990 --> 03:52:20,740 我是来帮忙的 1887 03:52:20,910 --> 03:52:23,160 抱歉 你是哪位 1888 03:52:23,330 --> 03:52:28,420 我有很多名字和很多形体 就像你一样… 1889 03:52:29,040 --> 03:52:31,670 我发现自己要对这世界负责 1890 03:52:31,840 --> 03:52:34,300 我也该为它而战了 1891 03:52:37,840 --> 03:52:39,970 我们是需要帮助 1892 03:52:40,180 --> 03:52:43,390 所以很高兴你来了 1893 03:52:44,640 --> 03:52:46,810 我没想过会看到地球的守护者 1894 03:52:46,980 --> 03:52:49,150 会团结一致 并肩作战 1895 03:52:50,150 --> 03:52:52,530 没有你就不会发生 布鲁斯 1896 03:52:53,990 --> 03:52:56,360 你父母会为你感到骄傲 1897 03:52:57,740 --> 03:52:58,910 希望如此 1898 03:53:04,960 --> 03:53:07,920 我会保持联系 1899 03:53:08,960 --> 03:53:13,000 对了 有些人叫我… 1900 03:53:13,170 --> 03:53:15,470 火星猎人 1901 03:53:23,180 --> 03:53:25,520 我猜我会再见到你 1902 03:53:55,960 --> 03:54:02,060 献给秋 ================================================ FILE: 2021/3-7-m3u8-chrome/README.md ================================================ ## 怎样下载加密的优酷视频 - 需要输入密码才能观看 - 视频 [【编程】Chrome插件m3u8下载视频,Python,JS](https://www.bilibili.com/video/BV1QN411Q7eJ/) - 方法 - 1.使用you-get https://github.com/soimort/you-get - you-get -P 214325 https://v.youku.com/v_show/id_XNTExMTkxNzUwMA==.html - 2.使用m3u8 Python程序 - https://github.com/makelove/Programer_Log/tree/master/2020/3-26-m3u8-decrypt - 3.使用m3u8-downloader,然后用FFmpeg合并 - https://github.com/yangwk/m3u8-downloader ================================================ FILE: 2021/3-7-m3u8-chrome/ffmpeg1.py ================================================ # -*- encoding: utf-8 -*- ''' @File : ffmpeg1.py @Time : 2021/03/06 23:52:55 @Author : play4fun @Desc : 使用m3u8-downloader下载ts片段后,使用FFmpeg合并视频 ''' import os def main(): fl=sorted(os.listdir('.')) txt='' for f in fl: print(f"file '{f}'") if f.endswith('mp4'): txt+=f"file '{f}'\n" with open('filelist.txt','w') as f: f.write(txt) cmd='ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4' print(cmd) os.system(cmd) pass if __name__ == "__main__": main() ================================================ FILE: 2021/3-7-m3u8-chrome/youku1.py ================================================ # -*- coding: utf-8 -*- # @Time : 2021/3/5 01:06 # @File : youku1.py """ youku1.py: """ import sys import requests from urllib.request import urlretrieve import m3u8 from random import randint from os import system import os def main(url): m = m3u8.load(url) print('开始下载 ts列表...') for idx,sm in enumerate(m.segments): url2 = sm.absolute_uri print(url2) urlretrieve(url2, f'v{idx}.ts') print('下载完毕') # 合并ts片段,存为与文件夹同名的ts文件 print('开始合并文件:') fn = input('输入文件名:') fn = f"{randint(1000, 9999)}" if fn == '' else fn fn = fn + '.mp4' with open(fn, 'wb') as f: for idx,sm in enumerate(m.segments): # file_path = os.path.join(directory, f'{n}.ts') with open(f'v{idx}.ts', 'rb') as g: f.write(g.read()) print('合并文件完毕。。。') # cmds = f'/Applications/IINA.app/Contents/MacOS/iina-cli ' + fn input(f'打开?{cmds}') # TODO system(cmds) pass def merge_file(): l1 = [int(f[:-3]) for f in os.listdir() if f.endswith('.ts')] l1 = sorted(l1) fn = f"{randint(1000, 9999)}" fn = fn + '.mp4' with open(fn, 'wb') as f: for fp in l1: print(fp, f"{fp}.ts") with open(f"{fp}.ts", 'rb') as g: f.write(g.read()) print('合并文件完毕。。。') def main2(url): # 获取m3u8 resp = requests.get(url) # print(resp.text) ''' #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=460800, RESOLUTION=480x270 /asp/hls/450/0303000a/3/default/1eb4c564098544008dc19416eb7990f2/450.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=870400, RESOLUTION=640x360 /asp/hls/850/0303000a/3/default/1eb4c564098544008dc19416eb7990f2/850.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1228800, RESOLUTION=1280x720 /asp/hls/1200/0303000a/3/default/1eb4c564098544008dc19416eb7990f2/1200.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=2048000, RESOLUTION=1280x720 /asp/hls/2000/0303000a/3/default/1eb4c564098544008dc19416eb7990f2/2000.m3u8 ''' m3u8s = [] # 列表 for sp in resp.text.split('#'): sp2 = sp.split('\n') sp2 = [x for x in sp2 if x != ''] # print(len(sp2)) pass if __name__ == '__main__': if len(sys.argv) == 2: url = sys.argv[1] main(url) # merge_file() else: print('python download_m3u8.py m3u8_url') ================================================ FILE: 2021/5-30-SMS-api/README.md ================================================ # 接收短信验证码 - 视频 - [【推荐】怎样在电脑上接收短信?绿芽-短信转发微信-介绍](https://www.bilibili.com/video/BV1wh411e7rv/) - [【编程】编写puppeteer机器人自动登录网站,绿芽-短信转发微信-回调api](https://www.bilibili.com/video/BV1yv411V7XB/) ## 需求 - 网站登录,需要手机验证码 - 例如 拼多多 login ``` 绿芽“短信转发微信”软件 可以将备用手机中的短信息自动转发到用户的微信上。 本软件主要应用于以下用户场景: 1、国外旅居或临时出国的用户,希望身在国外时,也能方便的收取到重要的手机短信息(如临时登录网银等处理个人业务等)。 2、同时拥有多张不同用途的手机卡,某些手机卡并不随身携带在身边,但又希望能需要时方便的收取到手机上的短信息。 3、需要将短信息同时转发给多人(团队)以方便信息沟通或业务处理的情况。 4、其它需要将手机短信与微信贯通的情况。 ``` - 官网 https://www.lvyatech.com/hp/products.jsp - 小米 安装 - https://app.mi.com/details?id=com.lvyatech.wxapp.smstowx&ref=search ## 微信,扫二维码,关注公众号 ``` 恭喜!Xiaomi Redmi Note 7 {代码140582940} 已订阅成功!此后的新短信,将会自动转发到现在这个微信上。 短信转发到微信不会产生短信费啦!快发一条短信试试吧? 绿芽是工信部、公安部双备案的正规平台哦,请放心使用吧! 鲁ICP备16006100号 鲁公网安备 37020302371321号 另外,绿芽平台是无人值守的全自动平台,全年无休哦!所有业务您都可以自助办理的。 如需人工客服,欢迎联系: 微信客服:lvyapay QQ客服:3455203506 ``` ## 软件设置 - 只接收【验证码类短信】 - 权限设置 - 发送短信 - 读取短信 - 通知类短信 - 获取手机信息 - 始终允许 - 不能设置【空白通行证】,会获取不到卡槽编号,导致不能关联对应的手机号 - 常驻通知 - 省电策略为无限制 ## 接收短信 ``` 155041。【拼多多】您正在登录拼多多,验证码是155041。请于5分钟内完成验证,若非本人操作,请忽略本短信。 →时间:21-5-25 11:37 →来自:106551951134188859 →转发自:Xiaomi Redmi Note 7 {代码140582940} ``` ## 费用 ``` 第三方转发是付费的,65元/年,不限量。 或100元/一万次转发 测试接口 https://www.tianapi.com/gethttp/ ``` ## 回调api - 本手机是红米Note 7 Pro,双卡双待 - 问题 - 不能直接获取手机号 - 通过【设备ID】+【卡槽编号】匹配-手机号 - 例如 18612345678 安装在卡槽2 - 接收到回调,js["dId"],js["slt"] ```json {"bd":"【拼多多】您正在登录拼多多,验证码是237435。请于5分钟内完成验证,若非本人操作,请忽略本短信。", "ph":"10693022345860828", "tm":"1621920486662", "slt":"1", "dId":"140582940"} ``` - 回调地址 - https://play4fun.pythonanywhere.com/sms ================================================ FILE: 2021/5-30-SMS-api/sms_server.py ================================================ # -*- encoding: utf-8 -*- ''' @File : sms_server.py @Time : 2021/05/25 12:26:42 @Author : HG @Desc : ''' import re import json from flask import Flask, request, jsonify from urllib.parse import unquote, quote app = Flask(__name__) smsD = dict() # TODO 持久化 @app.route('/get_verify', methods=['GET']) def get_verify(): ''' 请求验证码 http://192.168.4.237:8097/get_verify?phone= http://192.168.4.14:8097/get_verify https://play4fun.pythonanywhere.com/get_verify?phone=6505551212 更新 https://play4fun.pythonanywhere.com/get_verify?dID=140582940&slt=1 https://play4fun.pythonanywhere.com/get_verify?dID=140582940&slt=1&source=拼多多 http://0.0.0.0:8097/get_verify?dID=140582940&slt=1&source=拼多多 http://0.0.0.0:8097/get_verify?dID=140582940&slt=1 ''' rt = { 'status': 404 # 找不到 } p = request.args.get('dID', "") slt = request.args.get('slt', "") source = request.args.get('source', "") if p: # print(smsD) # ph = f"{p}-{slt}-{source}" ph = p+'-'+slt # +'-'+source # print(ph) if ph in smsD: rt['status'] = 200 rt['data'] = smsD[ph] return jsonify(rt) pass @app.route('/sms', methods=['GET']) # , 'POST' def sms(): ''' http://192.168.4.237:8097/sms? https://play4fun.pythonanywhere.com/sms 测试 js={ "bd":"【拼多多】您正在登录拼多多,验证码是790892。请于5分钟内完成验证,若非本人操作,请忽略本短信。", "ph":"106551951134188852", "tm":"1621923596617", "slt":"1", "dId":"140582940" } p=quote(json.dumps(js)) url='https://play4fun.pythonanywhere.com/sms?p='+p url='http://0.0.0.0:8097/sms?p='+p curl url ''' # print('args: ', request.args) # print('form: ', request.form) rt = { 'status': 404 } p = request.args.get('p', "") print('paramer:', p) if p: js = json.loads(unquote(p)) ''' { "bd":"【拼多多】您正在登录拼多多,验证码是790892。请于5分钟内完成验证,若非本人操作,请忽略本短信。", "ph":"106551951134188852", "tm":"1621923596617", "slt":"1", "dId":"140582940" } ''' # print(js) # dId:发出端设备ID;slt:发出端卡槽号; ph :短信号码;bd:短信内容;tm:短信时间戳 # print('短信号码', js['ph']) # print('短信内容', js['bd']) # print('时间戳', js['tm']) ''' 日志 2021-05-25 05:15:15 短信号码 6505551212 2021-05-25 05:15:15 短信内容 lvya test 02 2021-05-25 05:15:15 时间戳 1576215934956 ''' content = js['bd'] # 正则 rs = re.findall('【(.*)】', content) # 哪个网站 source = rs[0] rs = re.findall(r'\d{4,6}', content) # 验证码 vfCode = rs[0] # ph = f"{js['dId']}-{js['slt']}-{source}" ph = js['dId']+'-'+js['slt'] # +'-'+source sd = { 'timestamp': int(js['tm']), 'content': content, 'source': source, 'vfCode': vfCode, } smsD[ph] = sd # print(sd) # rt['status'] = 200 return 'OK' # 他们要求 return jsonify(rt) pass @app.route('/', methods=['GET']) # , 'POST' def index(): rt = { 'status': 200 } return jsonify(rt) pass if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=8097) ================================================ FILE: 2021/5-30-puppeteer-REPL/README.md ================================================ # 在命令行使用REPL执行puppeteer爬虫和抓包 - 视频 B站 [【编程】在命令行使用REPL执行Puppeteer爬虫和抓包,调试代码](https://www.bilibili.com/video/BV1Nq4y1j71W/) ## 什么是REPL ? - Python - [为什么解释器的交互模式又叫 REPL](https://zhuanlan.zhihu.com/p/107266796) - Read Eval Print Loop - Read,读取用户输入 - Eval, 执行输入内容 - Print,打印输出结果 - Loop, 不断循环以上步骤 - Node.js ## puppeteer 和 REPL - 参考 - [puppeteer 调试工具——puppeteer-debug](https://zhuanlan.zhihu.com/p/34970878) - 不好用,没有更新? - 最近研究了下用 puppeteer 写爬虫,很好很强大。唯一不太满意的地方就是调试起来有点麻(dan)烦(teng),每调试一步都要重启 - [puppeteer-extra-plugin-repl](https://www.npmjs.com/package/puppeteer-extra-plugin-repl?activeTab=readme) - 好用 - npm i -g puppeteer-extra-plugin-repl - [Feature request: REPL in puppeteer](https://github.com/puppeteer/puppeteer/issues/3391) - 最好用 - 请看 DEMO.JS ================================================ FILE: 2021/5-30-puppeteer-REPL/在命令行里REPL/DEMO.JS ================================================ /** * @File : DEMO.JS * @Time : 2021/05/09 18:33:02 * @Author : HG * @Desc : 参考 没用? https://shuaiber.medium.com/interactive-puppeteer-setup-822f5ed2a874 可行 Feature request: REPL in puppeteer #3391 https://github.com/puppeteer/puppeteer/issues/3391 */ let browser let page async function run(params) {//不行 browser = await puppeteer.launch({ args: ["--no-sandbox"], headless: false }) page = await browser.newPage() await page.goto("https://www.google.com") } //从这里开始 //在命令行里REPL const conf = { headless: false, executablePath: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome', ignoreDefaultArgs: ['--enable-automation'], defaultViewport: { width: 1300, height: 900 }, slowMo: 30 } pptr = require('puppeteer'); pptr.launch(conf).then(b => global.browser = b); // to assign to global variable const ps = await browser.pages(); browser.pages().then(p => global.page = p[0]); //当前窗口 // browser.newPage().then(p => global.page = p); // 没有意义 没效果 await page.setJavaScriptEnabled(false); let gotoURL = 'http://mobile.pinduoduo.com/goods.html?goods_id=218055778729' page.goto(gotoURL).then(res => console.log(res.url())) page.goto('https://www.bing.com/').then(res => console.log(res.url())) page.waitForSelector('#sb_form_q').then(hdl => { hdl.click(); global.hdl = hdl }) hdl.type('love') // page.waitForSelector('#sb_go_par').then(hd => { hd.click() }).then() // page.waitForSelector('#sb_go_par').then(hd => console.log(res.url())) page.$('#sb_go_par').then(hd => { hd.click() }).then(console.log('OK ?'))//可以了 // page.click('#sb_go_par') ================================================ FILE: 2021/5-30-puppeteer-REPL/在命令行里REPL/debug.js ================================================ /** * @File : debug.js * @Time : 2021/05/09 18:40:56 * @Author : HG * @Desc : puppeteer 调试工具—— puppeteer-debug https://zhuanlan.zhihu.com/p/34970878 npm i -g puppeteer-debug 还可以使用 VS Code 的断点调试 */ const conf = { headless: false, executablePath: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome', ignoreDefaultArgs: ['--enable-automation'], defaultViewport: { width: 1300, height: 900 }, slowMo: 30 } const puppeteer = require('puppeteer-debug')//不好 // let page//不行 async function run() { const browser = await puppeteer.launch(conf) let page = await browser.newPage() // this.page = page //不行 // global.page = page//不行 // await puppeteer.debug() // or: await puppeteer.debug({ browser, page, ... }), pass initial context to REPL. await page.goto('https://www.bing.com/') await page.waitForTimeout(2000) // let producttype = (await page.$('#idProductType')) || ""; let producttype = (await page.waitForSelector('#idProductType')) || ""; //不行 console.log('producttype:', producttype, '|', typeof producttype2); // let producttype2 = (await page.$('#sb_form_q')) || ""; let producttype2 = (await page.waitForSelector('#sb_form_q')) || ""; console.log('producttype:', typeof producttype2); await puppeteer.debug({ browser, page })// 可以 await browser.close() page.goto('https://www.bing.com/') page.waitForSelector('#sb_form_q').then(hdl => { hdl.click(); hdl.type('love') }) } run() ================================================ FILE: 2021/5-30-puppeteer-REPL/在命令行里REPL/puppeteer-extra-plugin-repl.js ================================================ /** * @File : puppeteer-extra-plugin-repl.js * @Time : 2021/05/09 19:08:11 * @Author : HG * @Desc : 更好 https://www.npmjs.com/package/puppeteer-extra-plugin-repl?activeTab=readme npm i -g puppeteer-extra-plugin-repl */ const puppeteer = require('puppeteer-extra') puppeteer.use(require('puppeteer-extra-plugin-repl')()) puppeteer.launch({ headless: true }).then(async browser => { const page = await browser.newPage() await page.goto('https://example.com') // Start an interactive REPL here with the `page` instance. await page.repl() // Afterwards start REPL with the `browser` instance. await browser.repl() await browser.close() }) ================================================ FILE: 2021/6-19-list-groupby/README.md ================================================ # python list groupby - python 列表 排序+分组 - 需求: 按字段排序,然后分组 - 视频 [【编程】一行代码!Python 列表 排序+分组 sorted groupby Counter](https://www.bilibili.com/video/BV1LM4y1g7Vu/) - 参考 - [B站搜索](https://search.bilibili.com/all?keyword=python%20list%20groupby&from_source=web_search) - [Python list列表groupby分组用法](https://blog.csdn.net/xiaoc100200/article/details/111402566) - 注意: 分组之前应先使用分组字段先排好序 ================================================ FILE: 2021/6-19-list-groupby/groupby.py ================================================ # -*- encoding: utf-8 -*- ''' @File : groupby.py @Time : 2021/06/19 09:38:40 @Author : GH @Desc : https://blog.csdn.net/xiaoc100200/article/details/111402566 python 列表 排序+分组 需求: 按字段排序,然后分组 ''' from itertools import groupby # from collections import Counter# 统计 user_list = [ {"uid": 1, "sex": "男", "age": 10}, {"uid": 3, "sex": "男", "age": 20}, {"uid": 4, "sex": "女", "age": 20}, {"uid": 4, "sex": "女", "age": 31}, {"uid": 2, "sex": "男", "age": 10} ] user_sort = sorted(user_list, key=lambda x: (x["sex"], x["age"])) # 必须排序 [{'uid': 4, 'sex': '女', 'age': 20}, {'uid': 4, 'sex': '女', 'age': 31}, {'uid': 1, 'sex': '男', 'age': 10}, {'uid': 2, 'sex': '男', 'age': 10}, {'uid': 3, 'sex': '男', 'age': 20}] # 手写代码 outD = {} for d in user_list: tl = outD.get(d['sex'], []) tl.append(d) outD[d['sex']] = tl # print(outD) for k, v in outD.items(): print(k, ':', v) # 使用系统库 # 一行代码 user_group = groupby(user_sort, key=lambda x: (x["sex"], x["age"])) for key, group in user_group: print(key, list(group)) # ('女', 20) [{'uid': 4, 'sex': '女', 'age': 20}] # ('女', 31) [{'uid': 4, 'sex': '女', 'age': 31}] # ('男', 10) [{'uid': 1, 'sex': '男', 'age': 10}, {'uid': 2, 'sex': '男', 'age': 10}] # ('男', 20) [{'uid': 3, 'sex': '男', 'age': 20}] print('-'*30) def g(x): # 自定义分组key if (x['age'] > 0) and (x['age'] <= 10): return 'small' # 儿童 elif (x['age'] > 10) and (x['age'] <= 20): return 'mid' # 少年 else: return 'max' # 大人 user_group = groupby(user_sort, key=g) for key, group in user_group: print(key, list(group)) # mid[{'uid': 4, 'sex': '女', 'age': 20}] # max[{'uid': 4, 'sex': '女', 'age': 31}] # small[{'uid': 1, 'sex': '男', 'age': 10}, {'uid': 2, 'sex': '男', 'age': 10}] # mid[{'uid': 3, 'sex': '男', 'age': 20}] ================================================ FILE: 2021/7-11-Flask-Pydantic/README.md ================================================ ## Flask-Pydantic Flask使用Pydantic - 视频 [【编程】Flask使用Pydantic进行数据校验,Python fastapi](https://www.bilibili.com/video/bv16f4y1L7Rm) - 安装 - https://pypi.org/project/Flask-Pydantic/ - pip install Flask-Pydantic - 源代码 https://github.com/bauerji/flask_pydantic - 参考 - [如何评价最近爆红的FastAPI?](https://www.zhihu.com/question/424133076) - [请不要把 Flask 和 FastAPI 放到一起比较](https://zhuanlan.zhihu.com/p/369591096) - [用它5分钟以后,我放弃用了四年的 Flask](https://juejin.cn/post/6844904051327369224) - 注意 - @validate() 接口参数字段,必须是body,或 query - 否则报错 ================================================ FILE: 2021/7-11-Flask-Pydantic/fastapi_pydantic1.py ================================================ # -*- encoding: utf-8 -*- ''' @File : fastapi_pydantic1.py @Time : 2021/07/11 11:02:05 @Author : GH @Desc : 参考 https://juejin.cn/post/6844904051327369224 运行 uvicorn fastapi_pydantic1:app --port 5000 ''' from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class People(BaseModel): name: str age: int # address: str # salary: float @app.post('/insert') def insert(people: People): age_after_10_years = people.age + 10 msg = f'此人名字叫做:{people.name},十年后此人年龄:{age_after_10_years}' return {'success': True, 'msg': msg} ================================================ FILE: 2021/7-11-Flask-Pydantic/flask_pydantic1.py ================================================ # -*- encoding: utf-8 -*- ''' @File : flask_pydantic1.py @Time : 2021/07/11 10:53:01 @Author : GH @Desc : 命令行 curl -v -H "Content-Type: application/json" -XPOST http://localhost:5000/insert -d '{ "name" : "werl", "age" : 5 }' # 把age改为字符串 报错 curl -v -H "Content-Type: application/json" -XPOST http://localhost:5000/insert -d '{ "name" : "werl", "age" : "5" }' # 使用pydantic curl -v -H "Content-Type: application/json" -XPOST "http://localhost:5000/insert?name=fjks&age=35" -d '{ "name" : "werl", "age" : "5" }' ''' from flask import Flask, request from pydantic import BaseModel from flask_pydantic import validate app = Flask("__main__") class QueryModel(BaseModel): name: str age: int class People(BaseModel): name: str age: int # address: str # salary: float @app.route('/insert', methods=['POST']) @validate(body=People) def insert(body: People, query: QueryModel): print('body:', body) # body: name='werl' age=5 print('query:', query) # query: name='fjks' age=35 age_after_10_years = body.age + 10 msg = f'此人名叫:{body.name},10年后,此人年龄:{age_after_10_years}' return {'success': True, 'msg': msg} @app.route('/insert0', methods=['POST']) def insert0(): info = request.json name = info['name'] age = info['age'] age_after_10_years = age + 10 msg = f'此人名叫:{name},10年后,此人年龄:{age_after_10_years}' return {'success': True, 'msg': msg} @app.route('/insert2', methods=['POST']) def insert2(): info = request.json name = info.get('name', '') if not name: return {'success': False, 'msg': 'name 参数不可省略,不可为空!'} age = info.get('age', 0) if not isinstance(age, int): return {'success': False, 'msg': 'age参数不是数字!'} age_after_10_years = age + 10 msg = f'此人名叫:{name},10年后,此人年龄:{age_after_10_years}' return {'success': True, 'msg': msg} def main(): pass if __name__ == "__main__": app.run(debug=True) ================================================ FILE: 2021/7-25-Lorca/README.MD ================================================ - 视频 [【编程】Lorca-Go语言-跨平台-桌面应用开发框架-比Electron好用,在 Go + HTML5 中构建跨平台的现代桌面应用程序](https://www.bilibili.com/video/BV1Tg411779a/) ## 什么是Lorca? Go语言的桌面应用开发框架 - 对比Electron - Go语言,执行效率快。二进制程序 - Node.js 需要V8引擎 Chome - 结构简单 - 代码加密,很难破解 - 还可以加壳 - Electron可以混扰代码,增加阅读难度,但是代码可以恢复,只要花点时间 assr - 打包方便,一个文件搞定 - 文件很小,不到10M - Electron即使是最小应用,也有100M - Electron会打包 node_modules - 跨平台方便 - 唯一的问题 - Lorca依赖Chrome浏览器,需要在系统里提前安装 - 特征 - 带有非常简单的 API 的纯 Go 库(无 cgo) - 小应用程序大小(通常 5-10MB) - 两全其美 - HTML/CSS 的全部力量使您的 UI 看起来不错,结合 Go 性能和易于开发 - 公开 Go 函数/方法并从 JavaScript 调用它们 - 从 Go 调用任意 JavaScript 代码 - 两种语言的 UI 和主应用程序之间的异步流(async/await 和 Goroutines) - 支持从本地 Web 服务器或通过数据 URL 加载 Web UI - 支持在无头模式下使用 UI 测试您的应用 - 支持多个应用程序窗口 - 支持包装和品牌(例如自定义应用程序图标)。可以使用 GOOS 和 GOARCH 变量在一台机器上完成所有三个操作系统的打包。 - 此外,设计限制: - 需要安装 Chrome/Chromium >= 70。 - 尚无法控制 Chrome 窗口(例如,您无法移除边框、使其透明、控制位置或大小)。 - 没有窗口菜单(托盘菜单和本机操作系统对话框仍然可以通过 3rd-party 库) 网址 ? https://github.com/zserge/lorca/tree/master/examples https://github.com/zserge/lorca/tree/master/examples/counter 错误 go run main.go build command-line-arguments: cannot load embed: malformed module path "embed": missing dot in first path element 需要安装 Go 1.16 RC1 才能运行它。 运行 go1.16 mod init counter go1.16 get github.com/zserge/lorca go1.16 run main.go chmod -R 777 Example.app/ go1.16 build -o Example.app/Contents/MacOS/lorca-example 编译Windows CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go1.16 build -v -o counter_win10 main.go ================================================ FILE: 2021/7-25-Lorca/examples/counter/Example.app/Contents/Info.plist ================================================ CFBundleExecutable lorca-example CFBundleIconFile icon.icns CFBundleIdentifier com.zserge.lorca.example ================================================ FILE: 2021/7-25-Lorca/examples/counter/build-linux.sh ================================================ #!/bin/sh APP=lorca-example APPDIR=${APP}_1.0.0 mkdir -p $APPDIR/usr/bin mkdir -p $APPDIR/usr/share/applications mkdir -p $APPDIR/usr/share/icons/hicolor/1024x1024/apps mkdir -p $APPDIR/usr/share/icons/hicolor/256x256/apps mkdir -p $APPDIR/DEBIAN go build -o $APPDIR/usr/bin/$APP cp icons/icon.png $APPDIR/usr/share/icons/hicolor/1024x1024/apps/${APP}.png cp icons/icon.png $APPDIR/usr/share/icons/hicolor/256x256/apps/${APP}.png cat > $APPDIR/usr/share/applications/${APP}.desktop << EOF [Desktop Entry] Version=1.0 Type=Application Name=$APP Exec=$APP Icon=$APP Terminal=false StartupWMClass=Lorca EOF cat > $APPDIR/DEBIAN/control << EOF Package: ${APP} Version: 1.0-0 Section: base Priority: optional Architecture: amd64 Maintainer: Serge Zaitsev Description: Example for Lorca GUI toolkit EOF dpkg-deb --build $APPDIR ================================================ FILE: 2021/7-25-Lorca/examples/counter/build-macos.sh ================================================ #!/bin/sh APP="Example.app" mkdir -p $APP/Contents/{MacOS,Resources} go1.16 build -o $APP/Contents/MacOS/lorca-example cat > $APP/Contents/Info.plist << EOF CFBundleExecutable lorca-example CFBundleIconFile icon.icns CFBundleIdentifier com.zserge.lorca.example EOF cp icons/icon.icns $APP/Contents/Resources/icon.icns find $APP ================================================ FILE: 2021/7-25-Lorca/examples/counter/build-windows.bat ================================================ @echo off go generate go build -ldflags "-H windowsgui" -o lorca-example.exe ================================================ FILE: 2021/7-25-Lorca/examples/counter/go.mod ================================================ module counter go 1.16 require github.com/zserge/lorca v0.1.10 // indirect ================================================ FILE: 2021/7-25-Lorca/examples/counter/go.sum ================================================ github.com/zserge/lorca v0.1.9 h1:vbDdkqdp2/rmeg8GlyCewY2X8Z+b0s7BqWyIQL/gakc= github.com/zserge/lorca v0.1.9/go.mod h1:bVmnIbIRlOcoV285KIRSe4bUABKi7R7384Ycuum6e4A= github.com/zserge/lorca v0.1.10 h1:f/xBJ3D3ipcVRCcvN8XqZnpoKcOXV8I4vwqlFyw7ruc= github.com/zserge/lorca v0.1.10/go.mod h1:bVmnIbIRlOcoV285KIRSe4bUABKi7R7384Ycuum6e4A= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0 h1:MsuvTghUPjX762sGLnGsxC3HM0B5r83wEtYcYR8/vRs= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= ================================================ FILE: 2021/7-25-Lorca/examples/counter/main.go ================================================ /** * @File : main.go * @Time : 2021/07/22 11:51:17 * @Author : GH * @Desc : */ package main import ( "embed" "fmt" "log" "net" "net/http" "os" "os/signal" "runtime" "sync" "github.com/zserge/lorca" ) //go:embed www var fs embed.FS // Go types that are bound to the UI must be thread-safe, because each binding // is executed in its own goroutine. In this simple case we may use atomic // operations, but for more complex cases one should use proper synchronization. type counter struct { sync.Mutex count int } func (c *counter) Add(n int) { c.Lock() defer c.Unlock() c.count = c.count + n } func (c *counter) Value() int { c.Lock() defer c.Unlock() return c.count } func main() { args := []string{} if runtime.GOOS == "linux" { args = append(args, "--class=Lorca") } ui, err := lorca.New("", "", 480, 320, args...) if err != nil { log.Fatal(err) } defer ui.Close() // A simple way to know when UI is ready (uses body.onload event in JS) ui.Bind("start", func() { log.Println("UI is ready") }) // Create and bind Go object to the UI c := &counter{} ui.Bind("counterAdd", c.Add) ui.Bind("counterValue", c.Value) // Load HTML. // You may also use `data:text/html,` approach to load initial HTML, // e.g: ui.Load("data:text/html," + url.PathEscape(html)) ln, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { log.Fatal(err) } defer ln.Close() go http.Serve(ln, http.FileServer(http.FS(fs))) ui.Load(fmt.Sprintf("http://%s/www", ln.Addr())) // You may use console.log to debug your JS code, it will be printed via // log.Println(). Also exceptions are printed in a similar manner. ui.Eval(` console.log("Hello, world!"); console.log('Multiple values:', [1, false, {"x":5}]); `) // Wait until the interrupt signal arrives or browser window is closed sigc := make(chan os.Signal) signal.Notify(sigc, os.Interrupt) select { case <-sigc: case <-ui.Done(): } log.Println("exiting...") } ================================================ FILE: 2021/7-25-Lorca/examples/counter/www/index.html ================================================ Counter

+1
-1
================================================ FILE: 2021/7-25-Lorca/examples/hello/main.go ================================================ /** * @File : main.go * @Time : 2021/07/22 14:20:03 * @Author : GH * @Desc : 编译windows CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -v -o hello_win10 main.go */ package main import ( "log" "net/url" "github.com/zserge/lorca" ) func main() { // Create UI with basic HTML passed via data URI ui, err := lorca.New("data:text/html,"+url.PathEscape(` Hello

Hello, world!

`), "", 480, 320) if err != nil { log.Fatal(err) } defer ui.Close() ui.Bind("addUp", func(a, b int) int { return a + b }) // let x=await addUp(34534342,23748374823) // Wait until UI window is closed <-ui.Done() } ================================================ FILE: 2021/7-25-Lorca/examples/stopwatch/main.go ================================================ /** * @File : main.go * @Time : 2021/07/22 14:58:21 * @Author : GH * @Desc : 编译windows CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -v -o stopwatch_win10 main.go */ package main import ( "fmt" "log" "net/url" "sync/atomic" "time" "github.com/zserge/lorca" ) func main() { ui, err := lorca.New("计时器", "", 480, 320) if err != nil { log.Fatal(err) } defer ui.Close() // Data model: number of ticks ticks := uint32(0) // Channel to connect UI events with the background ticking goroutine togglec := make(chan bool) // Bind Go functions to JS ui.Bind("toggle", func() { togglec <- true }) ui.Bind("reset", func() { atomic.StoreUint32(&ticks, 0) ui.Eval(`document.querySelector('.timer').innerText = '0'`) ui.Eval(`console.log("reset ....")`)// 打印日志 }) // Load HTML after Go functions are bound to JS ui.Load("data:text/html," + url.PathEscape(`
`)) // Start ticker goroutine go func() { t := time.NewTicker(100 * time.Millisecond) for { select { case <-t.C: // Every 100ms increate number of ticks and update UI ui.Eval(fmt.Sprintf(`document.querySelector('.timer').innerText = 0.1*%d`, atomic.AddUint32(&ticks, 1))) case <-togglec: // If paused - wait for another toggle event to unpause <-togglec } } }() <-ui.Done() } ================================================ FILE: 2021/7-4-diskcache/README.md ================================================ # diskcache本地缓存持久化 - 视频 [【编程】Python : diskcache 本地缓存持久化,一行代码](https://www.bilibili.com/video/BV1dv411H77k/) - 缓存考虑 - Redis 数据库 - memcache - 临时缓存 - lru_cache 服务器使用 - from functools import lru_cache - 推荐使用 - [diskcache](https://pypi.org/project/diskcache/) - 教程 - 安装 https://pypi.org/project/diskcache/ - 教程 http://www.grantjenks.com/docs/diskcache/tutorial.html - 问题 https://stackoverflow.com/questions/16463582/memoize-to-disk-python-persistent-memoization ================================================ FILE: 2021/7-4-diskcache/diskcache1.py ================================================ # -*- encoding: utf-8 -*- ''' @File : diskcache1.py @Time : 2021/07/04 12:47:38 @Author : GH @Desc : ''' import requests from functools import lru_cache from diskcache import Cache cache = Cache('cachedir') # @lru_cache() # Flask 服务器使用,才行 @cache.memoize() def get_ip(a): # 需要很多计算,计算一次就可以了 print('不使用缓存') url = 'https://httpbin.org/ip' rs = requests.get(url) print('get IP:', rs.text) return rs.json()['origin'] def main(): ip = get_ip(a=1) print(ip) pass if __name__ == "__main__": main() ================================================ FILE: 2021/8-1-deta-fastapi/README.md ================================================ - 视频 ?? - 文档 - 部署到Deta[Deploy FastAPI on Deta](https://fastapi.tiangolo.com/zh/deployment/deta/) - 开始启动[Getting Started](https://docs.deta.sh/docs/micros/getting_started/) - 安装 ```bash (.py39) pro:~ play$ curl -fsSL https://get.deta.dev/cli.sh | sh ########################################################################################## 100.0% Archive: /Users/play/.deta/bin/deta.zip inflating: deta inflating: ._deta Deta was installed successfully to /Users/play/.deta/bin/deta Run 'deta --help' in a new shell to get started ``` - 登录 ```bash (.py39) pro:~ play$ /Users/play/.deta/bin/deta login Please, log in from the web page. Waiting.. https://web.deta.sh/cli/52934 Logged in successfully. ``` - 新建 ```bash (.py39) pro:app play$ /Users/play/.deta/bin/deta new Successfully created a new micro { "name": "app", "runtime": "python3.7", "endpoint": "https://zba3nl.deta.dev", "visor": "enabled", "http_auth": "disabled" } Adding dependencies... Collecting fastapi Downloading https://files.pythonhosted.org/packages/52/be/2a26007dc86c51e87d70021f6c1b3442726c5918fe57d27927badf687122/fastapi-0.67.0-py3-none-any.whl (51kB) Collecting starlette==0.14.2 Downloading https://files.pythonhosted.org/packages/15/34/db1890f442a1cd3a2c761f4109a0eb4e63503218d70a8c8e97faa09a5500/starlette-0.14.2-py3-none-any.whl (60kB) Collecting pydantic!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<2.0.0,>=1.6.2 Downloading https://files.pythonhosted.org/packages/9f/f2/2d5425efe57f6c4e06cbe5e587c1fd16929dcf0eb90bd4d3d1e1c97d1151/pydantic-1.8.2-cp37-cp37m-manylinux2014_x86_64.whl (10.1MB) Collecting typing-extensions>=3.7.4.3 Downloading https://files.pythonhosted.org/packages/2e/35/6c4fff5ab443b57116cb1aad46421fb719bed2825664e8fe77d66d99bcbc/typing_extensions-3.10.0.0-py3-none-any.whl Installing collected packages: starlette, typing-extensions, pydantic, fastapi Successfully installed fastapi-0.67.0 pydantic-1.8.2 starlette-0.14.2 typing-extensions-3.10.0.0 ``` - 更新 ``` ``` ## 数据库 ## 文件存储 ================================================ FILE: 2021/8-15-Marp-ppt/README.MD ================================================ --- marp: true --- # Marp:用 Markdown「写」PPT 的新选择 - Marp - Markdown --> PPT --- # 需求 - 制作视频之前,写文案 - 工作量少,简单 - 不想写一堆代码 - 翻页效果,即可。 - 有动画更好 - 简洁,清晰明了 - 不想做得花里胡哨 - 视频 [【新技能】Marp 使用 Markdown 制作 PPT , 电脑不用安装PowerPoint](https://www.bilibili.com/video/BV17v411T7wH/) --- - 参考 - [Marp:用 Markdown「写」PPT 的新选择](https://sspai.com/post/55718) - 前往 VSCode 的网站 下载并安装 VSCode 本体, - 然后在左侧的插件栏中搜索并安装 Marp for VS Code。 - 为了获得更好的 Markdown 编辑体验,大家不妨再安装一个叫做 Markdown All in One 的插件,然后就可以开始愉快地使用 Marp 了。 - 使用 Markdown 预览功能,确认无误后,再导出 - toggle打开或关闭特效 - marp: true - 缺点,没有动画特效 - Demo - https://yhatt-marp-cli-example.netlify.app/#1 - 代码 https://github.com/yhatt/marp-cli-example # reveal.js 官网 https://revealjs.com/ --- 编辑完成后,通过编辑器右上角的 Marp 图标按钮就可以调出 Export slide deck 命令并导出幻灯片了。Marp 插件目前支持导出 HTML 和 PDF 格式,另外可以将首页导出为 PNG 或 JPEG 格式的图片。 需要注意的是,目前导出 PDF 或者图片时需要依赖 Chromium 内核的浏览器。最终的导出效果与预览时看到的相同。 --- # 1号标题123 ## 2号标题1234 - 1 测试 - 2 - 3 # reveal.js --- ## 2号标题 1235 - 4 测试 - 2 - 3 ================================================ FILE: 2021/8-15-Marp-ppt/README.html ================================================

Marp:用 Markdown「写」PPT 的新选择

  • Marp
    • Markdown --> PPT

需求

  • 制作视频之前,写文案
    • 工作量少,简单
      • 不想写一堆代码
    • 翻页效果,即可。
      • 有动画更好
  • 简洁,清晰明了
    • 不想做得花里胡哨
  • 参考
    • Marp:用 Markdown「写」PPT 的新选择
      • 前往 VSCode 的网站 下载并安装 VSCode 本体,
      • 然后在左侧的插件栏中搜索并安装 Marp for VS Code。
      • 为了获得更好的 Markdown 编辑体验,大家不妨再安装一个叫做 Markdown All in One 的插件,然后就可以开始愉快地使用 Marp 了。
    • 使用 Markdown 预览功能,确认无误后,再导出
    • toggle打开或关闭特效
      • marp: true
    • 缺点,没有动画特效

reveal.js

编辑完成后,通过编辑器右上角的 Marp 图标按钮就可以调出 Export slide deck 命令并导出幻灯片了。Marp 插件目前支持导出 HTML 和 PDF 格式,另外可以将首页导出为 PNG 或 JPEG 格式的图片。

需要注意的是,目前导出 PDF 或者图片时需要依赖 Chromium 内核的浏览器。最终的导出效果与预览时看到的相同。

1号标题123

2号标题1234

  • 1 测试
    • 2
    • 3

reveal.js

2号标题 1235

  • 4 测试
    • 2
    • 3
================================================ FILE: 2021/8-15-Marp-ppt/demo-完成.html ================================================

程序员的996,每天工作安排

上午

  • 9:00

    • 上班打卡,企业微信
    • 开早会
  • 9:15

    • 敏捷开发管理系统
    • 领取工作内容
  • 9:30

    • 开始工作
    • 和产品经理沟通,battle 打嘴仗
  • 10:00

    • 摸鱼时间
    • 上厕所
    • 刷微博
  • 11:00

    • 摸鱼时间
    • 上厕所
    • 刷微博

中午

  • 11:55
    • 提前去食堂,避免排队
  • 12:30
    • 吃完
    • 回公司吹牛
  • 13:00-->14:00
    • 叹空调,睡午觉

下午

  • 14:00
    • 闹钟吵醒,洗脸上班
  • 16:00
    • 非常困倦
    • 摸鱼
  • 18:00
    • 准点离开公司
    • 吃饭
    • 散步

晚上

  • 19:00
    • 加班
  • 20:45
    • 敏捷开发管理系统
      • 提交工作进度
  • 21:00
    • 下班打卡,企业微信
    • 准点离开公司
================================================ FILE: 2021/8-15-Marp-ppt/demo-完成.md ================================================ --- marp: true --- # 程序员的996,每天工作安排 --- # 上午 - 9:00 - 上班打卡,企业微信 - 开早会 - 9:15 - 敏捷开发管理系统 - 领取工作内容 --- - 9:30 - 开始工作 - 和产品经理沟通,battle 打嘴仗 ![](IMG_20210806_092900.jpg) --- - 10:00 - 摸鱼时间 - 上厕所 - 刷微博 - 11:00 - 摸鱼时间 - 上厕所 - 刷微博 --- ## 中午 - 11:55 - 提前去食堂,避免排队 ![11](IMG_20210715_122251.jpg) --- - 12:30 - 吃完 - 回公司吹牛 - 13:00-->14:00 - 叹空调,睡午觉 --- # 下午 - 14:00 - 闹钟吵醒,洗脸上班 - 16:00 - 非常困倦 - 摸鱼 - 18:00 - 准点离开公司 - 吃饭 - 散步 --- # 晚上 - 19:00 - 加班 - 20:45 - 敏捷开发管理系统 - 提交工作进度 - 21:00 - 下班打卡,企业微信 - 准点离开公司 ================================================ FILE: 2021/8-15-Marp-ppt/demo-完成2.html ================================================

程序员的996,每天工作安排

上午

  • 9:00

    • 上班打卡,企业微信
    • 开早会
  • 9:15

    • 敏捷开发管理系统
    • 领取工作内容
  • 9:30

    • 开始工作
    • 和产品经理沟通,battle 打嘴仗
  • 10:00

    • 摸鱼时间
    • 上厕所
    • 刷微博
  • 11:00

    • 摸鱼时间
    • 上厕所
    • 刷微博

中午

  • 11:55
    • 提前去食堂,避免排队
  • 12:30
    • 吃完
    • 回公司吹牛
  • 13:00-->14:00
    • 叹空调,睡午觉

下午

  • 14:00
    • 闹钟吵醒,洗脸上班
  • 16:00
    • 非常困倦
    • 摸鱼
  • 18:00
    • 准点离开公司
    • 吃饭
    • 散步

晚上

  • 19:00
    • 加班
  • 20:45
    • 敏捷开发管理系统
      • 提交工作进度
  • 21:00
    • 下班打卡,企业微信
    • 准点离开公司

$backgroundColor: orange

================================================ FILE: 2021/8-15-Marp-ppt/demo-完成3.html ================================================

程序员的996,每天工作安排

上午

  • 9:00

    • 上班打卡,企业微信
    • 开早会
  • 9:15

    • 敏捷开发管理系统
    • 领取工作内容
  • 9:30

    • 开始工作
    • 和产品经理沟通,battle 打嘴仗
  • 10:00

    • 摸鱼时间
    • 上厕所
    • 刷微博
  • 11:00

    • 摸鱼时间
    • 上厕所
    • 刷微博

中午

  • 11:55
    • 提前去食堂,避免排队
  • 12:30
    • 吃完
    • 回公司吹牛
  • 13:00-->14:00
    • 叹空调,睡午觉

下午

  • 14:00
    • 闹钟吵醒,洗脸上班
  • 16:00
    • 非常困倦
    • 摸鱼
  • 18:00
    • 准点离开公司
    • 吃饭
    • 散步

晚上

  • 19:00
    • 加班
  • 20:45
    • 敏捷开发管理系统
      • 提交工作进度
  • 21:00
    • 下班打卡,企业微信
    • 准点离开公司
================================================ FILE: 2021/8-15-Marp-ppt/demo-完成4.html ================================================

程序员的996,每天工作安排

上午

  • 9:00

    • 上班打卡,企业微信
    • 开早会
  • 9:15

    • 敏捷开发管理系统
    • 领取工作内容
  • 9:30

    • 开始工作
    • 和产品经理沟通,battle 打嘴仗
  • 10:00

    • 摸鱼时间
    • 上厕所
    • 刷微博
  • 11:00

    • 摸鱼时间
    • 上厕所
    • 刷微博

中午

  • 11:55
    • 提前去食堂,避免排队
  • 12:30
    • 吃完
    • 回公司吹牛
  • 13:00-->14:00
    • 叹空调,睡午觉

下午

  • 14:00
    • 闹钟吵醒,洗脸上班
  • 16:00
    • 非常困倦
    • 摸鱼
  • 18:00
    • 准点离开公司
    • 吃饭
    • 散步

晚上

  • 19:00
    • 加班
  • 20:45
    • 敏捷开发管理系统
      • 提交工作进度
  • 21:00
    • 下班打卡,企业微信
    • 准点离开公司

fit

fit

================================================ FILE: 2021/8-15-Marp-ppt/demo-完成5.html ================================================

程序员的996,每天工作安排

上午

  • 9:00
    • 上班打卡,企业微信
    • 开早会
  • 9:15
    • 敏捷开发管理系统
    • 领取工作内容
  • 9:30
    • 开始工作
    • 和产品经理沟通,battle 打嘴仗
  • 10:00
    • 摸鱼时间
    • 上厕所
    • 刷微博
  • 11:00
    • 摸鱼时间
    • 上厕所
    • 刷微博

中午

  • 11:55
    • 提前去食堂,避免排队
      11
  • 12:30
    • 吃完
    • 回公司吹牛
  • 13:00-->14:00
    • 叹空调,睡午觉

下午

  • 14:00
    • 闹钟吵醒,洗脸上班
  • 16:00
    • 非常困倦
    • 摸鱼
  • 18:00
    • 准点离开公司
    • 吃饭
    • 散步

晚上

  • 19:00
    • 加班
  • 20:45
    • 敏捷开发管理系统
      • 提交工作进度
  • 21:00
    • 下班打卡,企业微信
    • 准点离开公司

fit

fit

================================================ FILE: 2021/8-15-Marp-ppt/demo-完成6.html ================================================

程序员的996,每天工作安排

上午

  • 9:00
    • 上班打卡,企业微信
    • 开早会
  • 9:15
    • 敏捷开发管理系统
    • 领取工作内容
  • 9:30
    • 开始工作
    • 和产品经理沟通,battle 打嘴仗
  • 10:00
    • 摸鱼时间
    • 上厕所
    • 刷微博
  • 11:00
    • 摸鱼时间
    • 上厕所
    • 刷微博

中午

  • 11:55
    • 提前去食堂,避免排队
      11
  • 12:30
    • 吃完
    • 回公司吹牛
  • 13:00-->14:00
    • 叹空调,睡午觉

下午

  • 14:00
    • 闹钟吵醒,洗脸上班
  • 16:00
    • 非常困倦
    • 摸鱼
  • 18:00
    • 准点离开公司
    • 吃饭
    • 散步

晚上

  • 19:00
    • 加班
  • 20:45
    • 敏捷开发管理系统
      • 提交工作进度
  • 21:00
    • 下班打卡,企业微信
    • 准点离开公司

fit

================================================ FILE: 2021/8-15-Marp-ppt/demo.md ================================================ # 程序员的996,每天工作安排 ## 上午 - 9:00 - 上班打卡,企业微信 - 开早会 - 9:15 - 敏捷开发管理系统 - 领取工作内容 - 9:30 - 开始工作 - 和产品经理沟通,battle 打嘴仗 - 10:00 - 摸鱼时间 - 上厕所 - 刷微博 - 11:00 - 摸鱼时间 - 上厕所 - 刷微博 ## 中午 - 11:55 - 提前去食堂,避免排队 - 12:20 - 吃完 - 回公司吹牛 - 13:00-->14:00 - 叹空调,睡午觉 ## 下午 - 14:00 - 闹钟吵醒,洗脸上班 - 16:00 - 非常困倦 - 摸鱼 - 18:00 - 准点离开公司 - 吃饭 - 散步 ## 晚上 - 19:00 - 加班 - 20:45 - 敏捷开发管理系统 - 提交工作进度 - 21:00 - 下班打卡,企业微信 - 准点离开公司 ================================================ FILE: 2021/9-3-Deta-Base/BaseDemo/config.py ================================================ # -*- encoding: utf-8 -*- ''' @File : config.py @Time : 2021/09/03 09:47:46 @Author : GH @Desc : ''' project_key = "xxx" ================================================ FILE: 2021/9-3-Deta-Base/BaseDemo/main.py ================================================ # -*- encoding: utf-8 -*- ''' @File : main.py @Time : 2021/08/01 16:26:39 @Author : GH @Desc : 执行 uvicorn main:app ''' from typing import Optional from fastapi.params import Body from pydantic import BaseModel from fastapi import FastAPI from deta import Deta from config import project_key deta = Deta(project_key) db = deta.Base("baseItem") app = FastAPI() class Item(BaseModel): key: Optional[str] = None name: Optional[str] = None age: Optional[int] = None @app.get("/") def read_root(): return {"Hello": "World, great day! 数据库NoSQL"} @app.put("/items/") def put_item(item: Item): print("item_id:", item) # TODO 存入数据库 del item.key rs = db.put(item.dict()) return {"item": item, 'put': rs} @app.get("/items/{key}") def read_item(key: str): # 1orwum5g2grm print("item_id:", key) rs = db.get(key) return {"item": rs} @app.put("/items/update") def update_item(item: Item): # rs = db.update({'age': item.age, 'name': item.name}, key=item.key) rs = db.put(item.dict()) # 直接更新 return {"update": rs} @app.delete("/items/{key}") def delete_item(key: str): rs = db.delete(key) return {"delete": rs} ================================================ FILE: 2021/9-3-Deta-Base/BaseDemo/requirements.txt ================================================ fastapi ================================================ FILE: 2021/9-3-Deta-Base/README.md ================================================ ## Deta.sh 免费数据库NoSQL : Base - 文档 - https://docs.deta.sh/docs/base/sdk/ - 视频 ? ================================================ FILE: README.md ================================================ # [Programer_Log 我的程序员日志](https://github.com/makelove/Programer_Log) - 有问题,请写到issue里面 - 加我微信WeChat: sexy8dream - 因为raw.githubusercontent.com被墙了,你们会看到图片挂了 - 加入/etc/hosts - 151.101.156.133 raw.githubusercontent.com - India印度服务器 - 下载download - Download ZIP - git - git clone https://github.com/makelove/Programer_Log.git - 更新 git fetch origin master - Donate点赞打赏,助人为乐^_^ - wechat_donate - 重要列表 - [越狱?最简单的代理服务器Go,翻墙,Chrome插件](2020/2-26-Go_Proxy_server) - 在国外服务器Azure测试了,不能直接使用,需要加密算法,。很容易被识别,被拦截 - curl -x 168.62.xxx.xxx:8081 https://httpbin.org/ip - 正常返回IP - curl -x 168.62.xxx.xxx:8081 https://kh.google.com - curl: (56) Recv failure: Connection reset by peer