优酷 HD iPad 客户端离线视频提取

有朋友问能不能下载到XX电视剧,我看是优酷独播,一般网上都没有地方直接可以下。现在视频客户端一般都是能离线的,那么下载到本地之后只有找到路径就可以导出来了。而且我也有优酷的会员和一个已经越狱的 iOS8 的 iPad。

条件

  • 优酷 HD v6.5.0 build 2977706
  • iPad min2 32G(ME280CH/A) iOS8.3(12F69) jailbreak
  • SSH, FileZilla/WinSCP

find 搜索

网上搜了一圈说优酷视频离线文件的后缀是.ts,那么用文件后缀全盘搜索一下:

1
find / -type f -name "*.ts"

这个搜出来把文件下载下来看了下,是我之前乐视的离线视频。
我们知道APP安装路径是在:

1
/private/var/mobile/Containers/Bundle/Application

看下有没有什么蛛丝马迹,但是缓存文件一般不会存在包下。

1
2
cd /private/var/mobile/Containers/Bundle/Application
find ./ -type f -name "*youku*"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/CommentResource.bundle/ic_youku_doll@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/CommentResource.bundle/ic_youku_doll@3x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/bottom_youku_i5@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/bottom_youku_i6@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/bottom_youku_i6p@3x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/bottom_youku_ix@3x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/youku_corner_ad_close@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/youku_corner_ad_close@3x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/youku_pause_close.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/youku_pause_close@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/MRAID.bundle/youku_pause_close@3x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/XAdHD.bundle/youku_corner_ad_close_hd.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/XAdHD.bundle/youku_corner_ad_close_hd@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/XAdHD.bundle/youku_corner_ad_close_hd@3x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/YKUserSetting.bundle/web/css/youku.css
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/YKZXing.bundle/images/qrCode/youku.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/YKZXing.bundle/images/qrCode/youku@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/YoukuHDHub.bundle/images/safemode/youku_safemode_icon.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/YoukuHDHub.bundle/images/safemode/youku_safemode_icon@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/YoukuHDUpload.bundle/web/css/youku.css
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/givescore.bundle/images/appStoreScoreAndErrors/youku_logo.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/givescore.bundle/images/appStoreScoreAndErrors/youku_logo@2x.png
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/givescore.bundle/web/css/youku.css
./16374F93-1484-4C1C-93F1-D7DE750410C7/YoukuHD-NG.app/searchhomepage.bundle/web/css/youku.css
./CCFE3331-EDBF-411F-B144-E98A4B16A188/LetvIpadClient.app/lesophoneResource.bundle/leso_youku.png
./CCFE3331-EDBF-411F-B144-E98A4B16A188/LetvIpadClient.app/lesophoneResource.bundle/youku.png
./CCFE3331-EDBF-411F-B144-E98A4B16A188/LetvIpadClient.app/lesophoneResource.bundle/youkuNmImage@2x.png
./CCFE3331-EDBF-411F-B144-E98A4B16A188/LetvIpadClient.app/lesophoneResource.bundle/youkuNmImage@3x.png

都找不到只能全盘再搜索下最近修改的文件了:
我们知道还有个Data路径:

1
/private/var/mobile/Containers/Data/Application

但是该目录分文件夹的名称是 UUID, 我们再搜索最近修改的文件

1
2
#返回最近24小时内修改过的文件
find ./ -mtime 0

获得文件列表,发现可疑的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/1.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/10.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/11.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/12.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/13.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/14.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/15.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/16.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/17.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/18.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/19.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/2.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/3.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/4.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/5.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/6.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/7.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/8.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/9.flv
./2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI2MDU5MDMzNg==/timepoint.txt

下载下来看下,就是他们了。最终找到离线文件路径,每集一个:

1
/private/var/mobile/Containers/Data/Application/2839ED00-A2C6-48ED-94CB-63127FA71739/Documents/XMzI1Mzk2MzQ2OA==

获得文件列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-rw-r--r-- 1 mobile mobile 50996387 Jan 2 01:50 1.flv
-rw-r--r-- 1 mobile mobile 50557118 Jan 2 01:51 10.flv
-rw-r--r-- 1 mobile mobile 31964544 Jan 2 01:52 11.flv
-rw-r--r-- 1 mobile mobile 38959535 Jan 2 01:52 12.flv
-rw-r--r-- 1 mobile mobile 26168257 Jan 2 01:52 13.flv
-rw-r--r-- 1 mobile mobile 28383904 Jan 2 01:52 14.flv
-rw-r--r-- 1 mobile mobile 30983048 Jan 2 01:52 15.flv
-rw-r--r-- 1 mobile mobile 30042858 Jan 2 01:52 16.flv
-rw-r--r-- 1 mobile mobile 39806205 Jan 2 01:52 17.flv
-rw-r--r-- 1 mobile mobile 28710554 Jan 2 01:52 18.flv
-rw-r--r-- 1 mobile mobile 91044956 Jan 2 01:52 19.flv
-rw-r--r-- 1 mobile mobile 25812459 Jan 2 01:51 2.flv
-rw-r--r-- 1 mobile mobile 48351759 Jan 2 01:51 3.flv
-rw-r--r-- 1 mobile mobile 30857667 Jan 2 01:51 4.flv
-rw-r--r-- 1 mobile mobile 30728530 Jan 2 01:51 5.flv
-rw-r--r-- 1 mobile mobile 38657035 Jan 2 01:51 6.flv
-rw-r--r-- 1 mobile mobile 36931078 Jan 2 01:51 7.flv
-rw-r--r-- 1 mobile mobile 42233820 Jan 2 01:51 8.flv
-rw-r--r-- 1 mobile mobile 47058000 Jan 2 01:51 9.flv
-rw-r--r-- 1 mobile mobile 2005 Jan 2 01:50 timepoint.txt

用 FileZilla 下载文件到本地,使用 ffmpeg 合并视频:

1
ffmpeg -f concat -safe 0 -i ./ffmerge.txt -c copy ./output.mp4

ffmerge.txt文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
file './1.flv'
file './2.flv'
file './3.flv'
file './4.flv'
file './5.flv'
file './6.flv'
file './7.flv'
file './8.flv'
file './9.flv'
file './10.flv'
file './11.flv'
file './12.flv'
file './13.flv'
file './14.flv'
file './15.flv'
file './16.flv'
file './17.flv'
file './18.flv'
file './19.flv'
file './20.flv'

Swift3 WebServer with Perfect

swiftenv

Swift版本管理的工具,类似于Python的pyenv,方便管理Swift的版本。swiftenv GitHub

  1. 可以通过brew安装

    1
    $ brew install kylef/formulae/swiftenv
  2. 配置环境变量

    For Bash:

    1
    2
    3
    $ echo 'export SWIFTENV_ROOT="$HOME/.swiftenv"' >> ~/.bash_profile
    $ echo 'export PATH="$SWIFTENV_ROOT/bin:$PATH"' >> ~/.bash_profile
    $ echo 'eval "$(swiftenv init -)"' >> ~/.bash_profile

    NOTE: 在某些平台下, 你可能需要编辑 ~/.bashrc 而非 ~/.bash_profile.

    For ZSH:

    1
    2
    3
    $ echo 'export SWIFTENV_ROOT="$HOME/.swiftenv"' >> ~/.zshenv
    $ echo 'export PATH="$SWIFTENV_ROOT/bin:$PATH"' >> ~/.zshenv
    $ echo 'eval "$(swiftenv init -)"' >> ~/.zshenv

    For Fish:

    1
    2
    3
    $ echo 'setenv SWIFTENV_ROOT "$HOME/.swiftenv"' >> ~/.config/fish/config.fish
    $ echo 'setenv PATH "$SWIFTENV_ROOT/bin" $PATH' >> ~/.config/fish/config.fish
    $ echo 'status --is-interactive; and . (swiftenv init -|psub)' >> ~/.config/fish/config.fish

    如果还需要用到其他的shell, 请 open an issue

UICollectionView align right

参考链接:
http://stackoverflow.com/questions/13588283/how-to-center-align-the-cells-of-a-uicollectionview

方案一:

You can get similar result by performing a transform on the collection view and reverse the flip on its content:

First when creating the UICollectionView I performed a flip on it:

[collectionView_ setTransform:CGAffineTransformMakeScale(-1, 1)];

Then subclass UICollectionViewCell and in here do the same flip on its contentView:

[self.contentView setTransform:CGAffineTransformMakeScale(-1, 1)];

方案二:
https://github.com/mokagio/UICollectionViewRightAlignedLayout

MX Blue HHKB GH60

GH60_light_full

一直是一把 HHKB Pro2 在公司使用,回家的话就用 mpb 自带的键盘。
期间也用过青轴 minila air、poker2,但是 minila air 右边 shift 比较蛋疼,而且空格键很短,左边经常按不到,虽然左边的 fn 是可以设置成空格的,但是按着还是挺不爽的;poker2没有用很长时间,但是用过了 hhkb 之后就受不鸟其他键位了。。。所以一直都是用 mbp 的自带薄膜键盘,用 Karabiner 映射了一些键,比如 | 改成 delete。

iOS学习笔记2

1.UITableViewController

1
@interface Tab1ViewController : UITableViewController

继承了UITableViewController就不用.m文件里面就:
1)不用创建TableView
2)不用写 ,因为 UITableViewController已经有了
3)不用写 self.tableView.delegate = self;self.tableView.dataSource = self;
2.接口里声明的变量需要初始化,如

1
2
3
@property (nonatomic, strong) NSMutableArray *items;
//需要alloc init初始化
self.items = [[NSMutableArray alloc] init];

Lemon2开箱

Bong的微信发布了消息说Lemon2将在Bong商城开卖,BongII要到九月才发货,先搞个Lemon2玩玩,关键是不贵,49元,还包邮。昨天上午上去看的时候是显示顺丰快递,有个单号,去查了下单号,怎么都查不到。傍晚去看就变成了天天快递的单号,去查了下,显示已签收。已签收前台妹纸肿么都不通知啊我去,去前台看了下,果然安静的躺在那里。

Gitlab升级后不能push clone的问题

Gitlab发布6.8.2之后第一时间把他给升级了。升级之后各种用不了,push,clone都报错
push报错,但其实是能push成功的

Writing objects: 100% (3/3), 209 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
fatal: protocol error: bad line length character: 34

fatal: recursion detected in die handler
fatal: The remote end hung up unexpectedly
clone也是类似protocol error的错误,而且clone不出来。 这个问题困扰了我好几天,google,baidu搜了好多天都没搜到。 今天突然想到去stackoverflow去搜搜看,结果找到了这篇文章 [http://stackoverflow.com/questions/22030866/gitlab-cannot-clone-over-http-after-upgrade-to-6-5](http://stackoverflow.com/questions/22030866/gitlab-cannot-clone-over-http-after-upgrade-to-6-5 "stackoverflow") 又通过这篇文章链接到了 [https://github.com/gitlabhq/gitlabhq/issues/5774](https://github.com/gitlabhq/gitlabhq/issues/5774 "github") 回复中表示升级nginx版本能解决这个问题。 公司这个服务器居然也是lnmp一键安装的,这个好办到lnmp安装目录下执行下upgrade_nginx.sh这个脚本,输入个nginx版本(找了个稳定版1.6.0),之后它就自动给你把nginx升级到你指定的版本了。升级之后重启下gitlab和lnmp问题得以解决。
service gitlab restart
/root/lnmp restart
|