FFmpeg 精准剪切视频 作者: Chuwen 时间: 2020-05-30 分类: Linux,Windows 评论 将-ss, -t 参数放在-i参数之前 > 对输入文件执行seek操作,会seek到-ss设置的时间点前面的关键帧上。 > 时间不精确,但是不会出现黑屏 ``` ffmpeg -ss 10 -t 15 -i test.mp4 -codec copy cut.mp4 ``` `accurate_seek` 剪切时间更加精确 > accurate_seek必须放在-i参数之前 ``` ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy cut.mp4 ``` `avoid_negative_ts` > 如果编码格式采用的copy 最好加上 -avoid_negative_ts 1参数 ``` ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy -avoid_negative_ts 1 cut.mp4 ``` 想非常精确,就重新编码 ``` ffmpeg -ss [start] -t [duration] -i [in].mp4 -c:v libx264 -c:a aac -strict experimental -b:a 180k [out].mp4 ```
MySQL 分别统计 男女数量 作者: Chuwen 时间: 2020-05-24 分类: MySQL 评论 ``` SELECT uSex, COUNT(*) FROM `Users ` WHERE `uSex` IN ( '男', '女' ) GROUP BY `uSex`; ```
MySQL GROUP BY 不会对 NULL 进行分组统计解决办法(表述可能不正确,具体看内容...) 作者: Chuwen 时间: 2020-05-23 分类: MySQL 评论 # 数据表结构 ## goods (商品信息)表结构 ``` +------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+-------------------+----------------+ | gdID | int(11) | NO | PRI | NULL | auto_increment | | tID | int(11) | YES | MUL | NULL | | | gdCode | varchar(50) | YES | | NULL | | | gdName | varchar(100) | NO | | NULL | | | gdPrice | float | YES | | 0 | | | gdQuantity | int(11) | YES | | 0 | | | gdSaleQty | int(11) | YES | | 0 | | | gdCity | varchar(50) | YES | | 长沙 | | | gdInfo | longtext | NO | | NULL | | | gdAddTime | timestamp | YES | | CURRENT_TIMESTAMP | | | gdHot | tinyint(11) | YES | | 0 | | | gdImage | varchar(255) | YES | | NULL | | +------------+--------------+------+-----+-------------------+----------------+ ``` ## orderdetail (商品订单信息、评论)表结构 ``` +------------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+----------------+ | odID | int(11) | NO | PRI | NULL | auto_increment | | oID | int(11) | YES | | NULL | | | gdID | int(11) | YES | | NULL | | | odNum | int(11) | YES | | NULL | | | dEvalution | varchar(8000) | YES | | NULL | | | odTime | datetime | YES | | NULL | | +------------+---------------+------+-----+---------+----------------+ ``` # 需求 > 需要列出商品信息及评价数量 > > 当时想到的解题思路是,通过查询 `OrderDetail` 表,通过外连接(RIGHT JOIN) goods 表,然后进行分组查询,然后就有了以下语句 ``` SELECT Goods.gdID, Goods.gdName, Goods.gdPrice, Goods.gdSaleQty, Goods.gdImage, COUNT( OrderDetail.gdID ) AS noe FROM `OrderDetail` RIGHT JOIN `Goods` ON `Goods`.`gdID` = `OrderDetail`.`gdID` GROUP BY `OrderDetail`.`gdID` ORDER BY noe DESC; ``` 运行结果: > 发现,当商品没有评价的,不会列出来 ``` +------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+ | gdID | gdName | gdPrice | gdSaleQty | gdImage | noe | +------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+ | 10 | 华为P9_PLUS | 3980 | 7 | 【华为官方买就送Type C 转接头】Huawei/华为 P9 plus全网通手机 | 5 | | 3 | 牛肉干 | 94 | 61 | 牛肉干一般是用黄牛肉和其他调料一起腌制而成的肉干。牛肉干中的风干牛肉源于蒙古铁骑的战粮,携带方便,并且有丰富的营养 | 2 | | 5 | 运动鞋 | 400 | 200 | 运动,健康等 | 1 | | 6 | 咖啡壶 | 50 | 45 | 一种冲煮咖啡的器具。咖啡壶是欧洲最早的发明之一,约在1685年于法国问世,在路易十五时期在各地广为流传。 | 1 | | 8 | A字裙 | 128 | 200 | 2016秋季新品韩版高腰显瘦圆环拉链a字半身裙双口袋包臀短裙子女 | 1 | | 1 | 迷彩帽 | 63 | 29 | 透气夏天棒球帽男女鸭舌帽网帽迷彩帽子太阳帽防晒韩版休闲遮阳帽 | 0 | +------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+ ``` # 解决 再网上找到了一个类似的问题:https://blog.csdn.net/u011277123/article/details/79883855 这篇文章参考的是:https://stackoverflow.com/questions/4588935/group-by-do-not-group-null 他是这么写的 > 增加一个 UUID(),把 b.name 的 NULL 的值都转化为具有专一性的 uuid,这样每个 b.name 都会不同, GROUP 就不会对他们进行分组 我也没怎么理解他说的,但是按照他的方法做,可以实现我想要的结果 SQL 语句: ``` SELECT Goods.gdID, Goods.gdName, Goods.gdPrice, Goods.gdSaleQty, Goods.gdImage, COUNT( OrderDetail.gdID ) AS noe FROM `OrderDetail` RIGHT JOIN `Goods` ON `Goods`.`gdID` = `OrderDetail`.`gdID` GROUP BY IFNULL( `OrderDetail`.`gdID`, UUID()); ORDER BY noe DESC; ``` 运行结果: > 评价数为 0 的结果也输出了,这正是我想要的结果 ``` +------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+ | gdID | gdName | gdPrice | gdSaleQty | gdImage | noe | +------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+ | 10 | 华为P9_PLUS | 3980 | 7 | 【华为官方买就送Type C 转接头】Huawei/华为 P9 plus全网通手机 | 5 | | 3 | 牛肉干 | 94 | 61 | 牛肉干一般是用黄牛肉和其他调料一起腌制而成的肉干。牛肉干中的风干牛肉源于蒙古铁骑的战粮,携带方便,并且有丰富的营养 | 2 | | 5 | 运动鞋 | 400 | 200 | 运动,健康等 | 1 | | 6 | 咖啡壶 | 50 | 45 | 一种冲煮咖啡的器具。咖啡壶是欧洲最早的发明之一,约在1685年于法国问世,在路易十五时期在各地广为流传。 | 1 | | 8 | A字裙 | 128 | 200 | 2016秋季新品韩版高腰显瘦圆环拉链a字半身裙双口袋包臀短裙子女 | 1 | | 1 | 迷彩帽 | 63 | 29 | 透气夏天棒球帽男女鸭舌帽网帽迷彩帽子太阳帽防晒韩版休闲遮阳帽 | 0 | +------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+ ```
MySQL 计算每科成绩和并以降序排列 作者: Chuwen 时间: 2020-05-08 分类: MySQL 评论 # 问题 > 查询各个学生总成绩,并按总分从高到底排序 也就是要将 `Chinese`、`Math`、`...`、`Biology` 字段都加起来然后排列 # 有以下表 ``` +----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+ | ID | Name | Age | Job | Chinese | English | Math | Physics | Chemistry | Biology | +----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+ | 1 | 王建军 | 30 | Java讲师 | 100 | 98 | 99 | 96 | 97 | 100 | | 2 | 常庆林 | 28 | Linux讲师 | 100 | 100 | 98 | 93 | 99 | 96 | | 3 | 徐培成 | 35 | BigData讲师 | 100 | 100 | 100 | 98 | 96 | 100 | | 4 | 李永强 | 30 | javaEE开发工程师 | 100 | 93 | 91 | 74 | 89 | 100 | | 5 | 赵子昂 | 24 | python开发工程师 | 98 | 93 | 91 | 74 | 89 | 100 | | 6 | 桂阳 | 25 | C++开发工程师 | 100 | 98 | 93 | 91 | 99 | 82 | | 7 | 肖云龙 | 24 | Golang开发工程师 | 93 | 97 | 85 | 100 | 93 | 69 | | 8 | 李洋 | 23 | C#开发工程师 | 100 | 98 | 99 | 96 | 97 | 100 | | 9 | 卜孟龙 | 30 | BigData开发 | 98 | 93 | 100 | 100 | 73 | 92 | | 10 | 罗大鹏 | 22 | Java开发工程师 | 100 | 84 | 91 | 87 | 100 | 93 | | 11 | 尹正杰 | 18 | 高级运维工程师 | 100 | 100 | 100 | 100 | 100 | 100 | +----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+ ``` # 解决思路 我当时就想着用 ``` SELECT SUM(`Chinese`+`Math`+`English`+`Physics`+`Chemistry`+`Biology`) AS 'total' FROM `classmate` ORDER BY `total` DESC; ``` 结果运行结果是: > 这显然不是我们要的结果 ``` mysql> SELECT SUM(`Chinese`+`Math`+`English`+`Physics`+`Chemistry`+`Biology`) AS 'total' FROM `classmate` ORDER BY `total` DESC; +-------+ | total | +-------+ | 6263 | +-------+ 1 row in set (0.02 sec) ``` --- 然后我就 Google 搜啊搜,搜了很久很久(真的好久...)。终于找到了一个合适的结果,原文链接:https://segmentfault.com/q/1010000002894877 ### 得知应该是这样的: ``` SELECT *,( Chinese + Math + English + Physics + Chemistry + Biology ) AS total FROM classmate ORDER BY `total` DESC ``` ### 运行结果完美,是我想要的结果 ``` mysql> SELECT *,( Chinese + Math + English + Physics + Chemistry + Biology ) AS total FROM classmate ORDER BY `total` DESC; +----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+-------+ | ID | Name | Age | Job | Chinese | English | Math | Physics | Chemistry | Biology | total | +----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+-------+ | 11 | 尹正杰 | 18 | 高级运维工程师 | 100 | 100 | 100 | 100 | 100 | 100 | 600 | | 3 | 徐培成 | 35 | BigData讲师 | 100 | 100 | 100 | 98 | 96 | 100 | 594 | | 8 | 李洋 | 23 | C#开发工程师 | 100 | 98 | 99 | 96 | 97 | 100 | 590 | | 1 | 王建军 | 30 | Java讲师 | 100 | 98 | 99 | 96 | 97 | 100 | 590 | | 2 | 常庆林 | 28 | Linux讲师 | 100 | 100 | 98 | 93 | 99 | 96 | 586 | | 6 | 桂阳 | 25 | C++开发工程师 | 100 | 98 | 93 | 91 | 99 | 82 | 563 | | 9 | 卜孟龙 | 30 | BigData开发 | 98 | 93 | 100 | 100 | 73 | 92 | 556 | | 10 | 罗大鹏 | 22 | Java开发工程师 | 100 | 84 | 91 | 87 | 100 | 93 | 555 | | 4 | 李永强 | 30 | javaEE开发工程师 | 100 | 93 | 91 | 74 | 89 | 100 | 547 | | 5 | 赵子昂 | 24 | python开发工程师 | 98 | 93 | 91 | 74 | 89 | 100 | 545 | | 7 | 肖云龙 | 24 | Golang开发工程师 | 93 | 97 | 85 | 100 | 93 | 69 | 537 | +----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+-------+ 11 rows in set (0.05 sec) ```
PHP 版超星学习通自动签到,支持多用户签到、手势、二维码、位置签到、HTTP API 调用,二次开发便捷! 作者: Chuwen 时间: 2020-05-01 分类: PHP 3 条评论 # ⭐ ChaoxingSign | 超星学习通签到 PHP 版超星学习用自动签到,支持多用户签到,二次开发便捷! `PHP 7.3` 测试通过,理应 `PHP 5.4` 及以上都能够使用 - 登录方式: 支持手机号码登录,暂时不支持学号登陆!!! - 签到功能: 支持普通签到,手势签到,二维码签到,位置签到,拍照签到 # ? 更新日志 2020/06/13 - 修复 #2 的问题,配置了 Server酱但不推送的问题 - 更改 判断时间区间的方法 - 添加 获取课程列表失败,重试2次以判断是API错误 2020/05/27 - 修复 #1 - 更改 获取课程、签到 API - 添加 手势、位置、二维码一键签到 - 添加 Server酱 微信推送,需要配置 `config.php` 文件 2020/05/25 - 更改 登录接口,原接口已经失效 # ? TODO - [] 接入钉钉机器人 API # ? 使用方法 1. 下载源码: 直接下载:https://github.com/PrintNow/ChaoxingSign/archive/master.zip 克隆源码:`git clone https://github.com/PrintNow/ChaoxingSign` 2. ? 运行 1. 上传到**网站根目录**运行 然后访问 `http://你的域名/main.php?account=你的超星账号&password=你的超星密码` 2. 或者使用**命令行**运行 ``` php main.php -A "你的超星账号" -P "你的超星密码" ``` 3. ⚙ 实现自动签到 > 推荐大于等于 **10 分钟** 执行一次,避免出现异常 > > 我已经硬编仅能在每天的 08:00 ~ 22:00 之间运行, > 如果要取消或修改这一限制,请删除或注释 > `main.php` 第 7~9 行 1. 如果以**网页方式**运行,定时监控 `http://你的域名/main.php?account=你的超星账号&password=你的超星密码` 即可 2. 如果使用**命令行方式**运行,添加 `crontab` 任务即可,具体添加 `crontab 任务` 方法可以网上搜。 每天 早上8点到晚上22点之间,每10分钟签到一次 crontab 表达式:`0 */10 8-22 * * * *` # √ 运行输出 签到成功: ``` 正在签到:陈半仙@测试班级 [2020-06-13 11:44:14]签到成功 Server酱 消息推送成功 ``` 没有签到任务: ``` 没有待签到的任务 ``` # ❗ 注意 超星**可能**屏蔽了如 阿里云、腾讯云、百度云... 等 IDC IP 地址,故有可能出现未知的错误(我没测试,我仅在家庭宽带中测试成功) # ? 感谢 > 本项目的实现参考了以下文章 - https://www.z2blog.com/index.php/learn/423.html - https://www.z2blog.com/index.php/default/459.html > 本项目中使用到的 `Selector.php` 来自 [PHPSpider](https://github.com/owner888/phpspider) # License 遵循 [MIT License](./LICENSE) 协议 ## 其它版本签到脚本推荐 > 排名不分先后 | 项目地址 | 开发语言 | 备注 | | ------------------------------------------------------- | ---------- | ------------------------------------------ | | https://github.com/mkdir700/chaoxing_auto_sign | Python | 超星学习通自动签到脚本&多用户多任务&API | | https://github.com/Wzb3422/auto-sign-chaoxing | TypeScript | 超星学习通自动签到,梦中刷网课 | | https://github.com/aihuahua-522/chaoxing-testforAndroid | Java | 学习通(超星)自动签到 | | https://github.com/yuban10703/chaoxingsign | Python | 超星学习通自动签到 | | https://github.com/Huangyan0804/AutoCheckin | Python | 学习通自动签到,支持手势,二维码,位置,拍照等 |