首页
老李抖音
我能做的
记录
老李是谁
推荐
老李网盘
搜索
1
x99鸡血BIOS教程(附工具和华南X99-QD3鸡血BIOS下载)
5,210 阅读
2
主板BIOS开启CSM方法(华硕、微星、技嘉)
3,959 阅读
3
湖北电信/联通/移动DNS服务器地址大全
3,580 阅读
4
【下载】猫影视PC版 V1.1.3
2,803 阅读
5
关于PUBG游戏提示未授权硬件的常见解决办法
2,725 阅读
老李原创
技术笔记
系统固件包
经营心得
虚拟化
软件工具
无盘万能包
安卓固件
登录
搜索
标签搜索
记录
无盘
问题解决
虚拟化
源码
心得
ARM
游戏
开源项目
硬件
linux
网管老李 VX:lizhi0710
累计撰写
263
篇文章
累计收到
0
条评论
首页
栏目
老李原创
技术笔记
系统固件包
经营心得
虚拟化
软件工具
无盘万能包
安卓固件
页面
老李抖音
我能做的
记录
老李是谁
推荐
老李网盘
搜索到
263
篇与
» lizhi0710
的结果
2026-06-21
技嘉AMD主板盲刷BIOS教程
A. 在开始执行 Q-Flash Plus 之前,请照下列步骤依序进行:请先至技嘉网站下载符合您主板型号的新一代 BIOS 版本压缩文件。解压缩所下载的 BIOS 压缩文件,将 BIOS 文件存储至 U 盘中,并重新命名为「GIGABYTE.bin」。( 请注意:所使用的 U 盘必须是 FAT32/16 文件系统格式。)连接 12V 电源插座及主电源插座 ( 若有两个 12V 电源插座请择一使用 ),即可执行 Q-FlashPlus。请先开启电源供应器的电源,再将 U 盘连接至主板后方的 Q-Flash Plus 接口。B. 执行 Q-Flash Plus按下 Q-Flash Plus 按钮后,系统将自动寻找比对连接于 Q-Flash Plus 接口的 BIOS 文件,同时QFLED 或 Q-Flash Plus 按钮会开始闪烁 ( 表示开始进行比对及更新 )。约等 6~8 分钟,灯号闪烁停止,代表 BIOS 更新结束。注意!!!执行 Q-Flash Plus 前,请确认系统于关机状态 (S5 待机模式 )。• 若主板上有配置 BIOS 切换器及 SB 切换器,在执行 Q-Flash Plus 前请先将其恢复为预设值 (BIOS_SW:由主 BIOS 开机、SB:Dual BIOS)。• 完成主 BIOS 更新后,有 DualBIOS ™的机种于系统再次开机时,会由 DualBIOS ™进行备份 BIOS 的更新,完成后系统会再次重新开机,由主 BIOS 正常开机
2026年06月21日
20 阅读
0 评论
0 点赞
2026-06-21
网页版本DMP在线分析代码分享
``
2026年06月21日
21 阅读
0 评论
0 点赞
2026-06-20
苹果CMSV10主题开发说明
自己学习记录一下 ========模板结构======= │─template/1/ 模板1 │ ├─info.ini 模板信息文件 │ ├─ads 广告文件目录 │ ├─js js文件 │ ├─css css文件 │ ├─images 图片文件 │ └─html 模板文件目录 │ └─art 文章模块模板目录 │ └─comment 评论模块模板目录 │ └─gbook 留言本模块模板目录 │ └─index 首页模块模板目录 │ └─label 自定义页面模块模板目录 │ └─map 地图页模块模板目录 │ └─public 公共页面模板目录 │ └─rss RSS和sitemap模板目录 │ └─topic 专题模块模板目录 │ └─user 用户中心模块模板目录 │ └─vod 视频模块模板目录 │ └─manga 漫画模块模板目录 │ └─plot 分集剧情模块模板目录 │ └─website 网址导航模块模板目录 │─tempalte/2/ 模板2 │─... │─template/n/ 模板N ========模板目录下的info.ini介绍======== 里边包含了对模板文件的简单介绍,及adsdir广告文件存放目录的设置,默认广告目录为ads ========模板名称====== public/include.html 全站公共引入文件 引入js、css样式,还有系统JS变量 public/head.html 全站头部 public/foot.html 全站尾部 public/jump.html 跳转提示页模板 public/msg.html 错误提示页模板 public/paging.html 分页样式模板 public/digg.html 顶踩样式模板 public/score.html 普通评分样式模板 public/star.html 星星评分样式模板 public/verify.html 搜索筛选页验证码模板 │ comment/index.html 评论页 comment/ajax.html 评论页 gbook/index.html 留言本 gbook/report.html 报错页面 │ index/index.html 首页 │ map/rss.html rss map/baidu.html 百度sitemap map/google.html 谷歌sitemap │ topic/index.html 专题首页 topic/detail.html 专题详情页 │ art/confirm.html 确认支付积分页面 art/detail.html 文章内容页 art/detail_pwd.html 验证密码页 art/rss.html 文章内容rss art/search.html 文章搜索页 art/type.html 文章分类页 art/show.html 文章分类筛选页 │ vod/confirm.html 确认支付积分页面 vod/copyright.html 版权提示和跳转 vod/detail.html 视频内容页 vod/detail_pwd.html 验证密码页 vod/rss.html 视频内容rss vod/play.html 视频播放页 vod/player.html 试看页面播放页 vod/player_pwd.html 验证密码页 vod/down.html 视频下载页 vod/downer_pwd.html 验证密码页 vod/search.html 视频搜索页面 vod/type.html 视频分类页面 vod/show.html 视频分类筛选页 vod/plot.html 视频分集剧情列表 │ manga/confirm.html 确认支付积分页面 manga/copyright.html 版权提示和跳转 manga/detail.html 漫画内容页 manga/detail_pwd.html 验证密码页 manga/rss.html 漫画内容rss manga/play.html 漫画阅读页 manga/player.html 试看页面阅读页 manga/player_pwd.html 验证密码页 manga/down.html 漫画下载页 manga/downer_pwd.html 验证密码页 manga/search.html 漫画搜索页面 manga/type.html 漫画分类页面 manga/show.html 漫画分类筛选页 │ user/ajax_info.html 用户弹出层登录详情 user/ajax_login.html 用户弹出层登录界面 user/buy.html 用户中心-在线充值 user/cards.html 用户中心-充值卡记录 user/cash.html 用户中心-提现记录 user/downs.html 用户中心-下载记录 user/favs.html 用户中心-收藏记录 user/findpass.html 用户中心-找回密码 user/findpass_msg.html 用户中心-找回密码提示信息 user/foot.html 用户中心-公共底部 user/head.html 用户中心-公共头部 user/include.html 用户中心-公共引入文件 user/index.html 用户中心-首页 user/info.html 用户中心-个人详情 user/login.html 用户中心-登录页 user/orders.html 用户中心-在线充值记录 user/pay.html 用户中心-支付页 user/payment_weixin.html 用户中心-支付微信二维码 user/plays.html 用户中心-点播记录 user/popedom.html 用户中心-权限列表 user/reg.html 用户中心-注册 user/reward.html 用户中心-分销记录 user/upgrade.html 用户中心-会员升级 │ plot/index.html 分集剧情首页 plot/detail.html 分集剧情详情页 | actor/index.html 演员首页 actor/detail.html 演员详情页 actor/search.html 演员网址搜索页 actor/show.html 演员筛选页 actor/type.html 演员分类页 | role/index.html 角色首页 role/detail.html 角色详情页 role/show.html 角色筛选页 │ website/index.html 网址导航首页 website/detail.html 网址详情页 website/search.html 网址搜索页 website/show.html 网址筛选页 website/type.html 网址分类页 ========全局标签======= {$maccms.site_name}网站名称 {$maccms.site_url}网站url {$maccms.site_wapurl} wap网站url {$maccms.site_logo}网站logo {$maccms.site_waplogo} wap网站logo {$maccms.site_keywords}网站关键字 {$maccms.site_description}网站描述 {$maccms.site_icp}备案号 {$maccms.site_qq}站长qq {$maccms.site_email}站长email {$maccms.site_tj|html_entity_decode}统计代码;也可以用{$maccms.path}static/js/tj.js 来动态引入统计代码。 {$maccms.site_status}网站状态1开启0关闭 {$maccms.site_close_tip}网站关闭提示信息 {$maccms.path}网站目录 {$maccms.path_tpl}当前模板目录 {$maccms.date} 当前日期 {$maccms.search_hot} 热门搜索词 {$maccms.art_extend_class} 全局文章扩展分类 {$maccms.vod_extend_class} 全局视频扩展分类 {$maccms.manga_extend_class} 全局漫画扩展分类 {$maccms.vod_extend_state} 全局视频资源 {$maccms.vod_extend_version} 全局视频版本 {$maccms.vod_extend_area} 全局视频地区 {$maccms.vod_extend_lang} 全局视频语言 {$maccms.vod_extend_year} 全局视频年代 {$maccms.vod_extend_weekday} 全局视频更新周期 {$maccms.actor_extend_area} 全局演员地区 {$maccms.http_type} 当前url访问协议,会输出 http:// 或者 https:// {$maccms.controller_action} 当前页面触发的程序路径controller/action 如果$maccms.标签不够用,想调用其他配置项的内容,可以用$GLOBALS['config'] 来获取到 例如 {$GLOBALS['config']['site']['site_name']} 其他项:具体包含哪些属性可以调试查看下;{php} dump($GLOBALS['config']);die; {/php} $GLOBALS['config']['site'] 站点配置 $GLOBALS['config']['app'] 预留参数配置 $GLOBALS['config']['user'] 用户配置 $GLOBALS['config']['gbook'] 留言本配置 $GLOBALS['config']['comment'] 评论配置 $GLOBALS['config']['upload'] 上传配置 $GLOBALS['config']['interface'] 站外入库配置 $GLOBALS['config']['pay'] 支付配置 $GLOBALS['config']['collect'] 采集配置 $GLOBALS['config']['api'] api配置 $GLOBALS['config']['connect'] 第三方登录配置 $GLOBALS['config']['weixin'] 微信配置 $GLOBALS['config']['view'] url浏览模式配置 $GLOBALS['config']['path'] url静态路径配置 $GLOBALS['config']['rewrite'] 路由配置 $GLOBALS['config']['weixin'] 微信配置 $GLOBALS['config']['email'] 邮件配置 $GLOBALS['config']['play'] 播放器配置 $GLOBALS['config']['urlsend'] url推送配置 $GLOBALS['config']['sms'] 短信配置 $GLOBALS['config']['extra'] 自定义参数配置 $GLOBALS['config']['seo'] SEO参数配置 ------------------SEO参数信息------------------------------ {$maccms.seo.vod.name} 视频首页SEO标题 {$maccms.seo.vod.key} 视频首页SEO关键字 {$maccms.seo.vod.des} 视频首页SEO描述 {$maccms.seo.art.name} 文章首页SEO标题 {$maccms.seo.art.key} 文章首页SEO关键字 {$maccms.seo.art.des} 文章首页SEO描述 {$maccms.seo.actor.name} 演员首页SEO标题 {$maccms.seo.actor.key} 演员首页SEO关键字 {$maccms.seo.actor.des} 演员首页SEO描述 {$maccms.seo.role.name} 角色首页SEO标题 {$maccms.seo.role.key} 角色首页SEO关键字 {$maccms.seo.role.des} 角色首页SEO描述 {$maccms.seo.plot.name} 剧情首页SEO标题 {$maccms.seo.plot.key} 剧情首页SEO关键字 {$maccms.seo.plot.des} 剧情首页SEO描述 {$maccms.seo.website.name} 网址导航首页SEO标题 {$maccms.seo.website.key} 网址导航首页SEO关键字 {$maccms.seo.website.des} 网址导航首页SEO描述 {$maccms.seo.manga.name} 漫画首页SEO标题 {$maccms.seo.manga.key} 漫画首页SEO关键字 {$maccms.seo.manga.des} 漫画首页SEO描述 ------------------下方高能------------------------------ $GLOBALS['type_id'] 当前分类页ID,在(分类页,筛选页,内容页,播放页,下载页都有值) $GLOBALS['type_pid'] 当前分类页父ID,在(分类页,筛选页,内容页,播放页,下载页都有值) {$maccms.mid}模块id,1=>'视频',2=>'文章',3=>'专题',4=>'评论',5=>'留言',6=>'用户中心',7=>'自定义页面',8=>'演员',9=>'角色',10=>'剧情',11=>'网址',12=>'漫画' {$maccms.aid}当前系统页面id 首页1 地图2 rss3 留言本4 评论5 用户中心6 自定义页面7 视频首页10 视频分类页11 视频分类筛选12 视频搜索13 视频详情14 视频播放15 视频下载16 视频角色17 文章首页20 文章分类21 文章分类筛选22 文章搜索23 文章详情24 专题首页30 专题搜索33 专题详情34 演员首页80 演员分类81 演员筛选82 演员搜索83 演员详情84 角色首页90 角色搜索93 角色详情94 剧情首页100 剧情搜索103 剧情想请104 网址导航首页110 网址导航分类111 网址导航筛选112 网址导航搜索113 网址导航详情114 漫画首页120 漫画分类121 漫画分类筛选122 漫画搜索123 漫画详情124 漫画阅读125 漫画下载126 ------------------------------------------------ 设计首页幻灯片的时候,建议统一调用推荐值为9的数据~ =======引入模板文件======= {include file="public/head"} =======分类列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id,sort start从第几条开始 num获取条数 ids指定分类parent获取一级分类;child获取子分类;1,2,3一组指定ID; parent父分类id flag视频=vod文章=art not排除id cachetime自定义缓存时间单位秒 {maccms:type num="10" order="asc" by="sort" ids="all"} 内部同下方,{$obj.改为{$vo.开头即可 {/maccms:type} 嵌套标签获取一级及二级 {maccms:type ids="1,2,3,4" order="asc" by="sort" id="vo1" key="key1"} 一级分类:{$vo1.type_name}- {maccms:type parent="'.$vo1['type_id'].'" order="asc" by="sort" id="vo2" key="key2"} 二级分类{$vo2.type_name} {/maccms:type} <br> {/maccms:type} =======分类页独有标签======= {$obj.parent} 如果当前访问的是二级分类,这个是一级分类对象,也同样包含以下属性,如{$obj.parent.type_id}一级分类id {$obj.type_id}分类id {$obj.type_name}名称 {$obj.type_en}别名 {$obj.type_sort}排序号 {$obj.type_mid}所属模块 {$obj.type_pid}上级id {$obj.type_status}状态1开启0关闭 {$obj.type_tpl}分类页模板 {$obj.type_tpl_list}筛选页模板 {$obj.type_tpl_detail}详情页模板 {$obj.type_tpl_play}播放页模板 {$obj.type_tpl_down}下载页模板 {$obj.type_key}关键字 {$obj.type_des}描述信息 {$obj.type_title}标题 {$obj.type_extend}扩展配置json {$obj.type_logo}分类图标 {$obj.type_pic}分类封面 {$obj.type_jumpurl}跳转url {:mac_url_type($obj)} 分类链接 =======专题列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id, time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd start从第几条开始 num获取条数 ids指定1,2,3一组指定ID; timeadd添加时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour timehits点击时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour time更新时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour hitsmonth月点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsweek周点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsday日点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hits总点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 paging是否分页yes {maccms:topic num="10" paging="no" order="asc" by="sort" ids="all"} 内部同下方,{$obj.改为{$vo.开头即可 {/maccms:topic} =======专题页独有标签======= {$obj.topic_id}专题id {$obj.topic_name}名称 {$obj.topic_en}别名 {$obj.topic_sub}副标 {$obj.topic_status}状态 {$obj.topic_sort}排序号 {$obj.topic_letter}首字母 {$obj.topic_color}高亮颜色 {$obj.topic_tpl}模板文件 {$obj.topic_type}扩展分类 {$obj.topic_pic}图片 {$obj.topic_pic_thumb}缩略图 {$obj.topic_pic_slide}幻灯图 {$obj.topic_key}seo关键字 {$obj.topic_des}seo描述 {$obj.topic_title}seo标题 {$obj.topic_blurb}简介 {$obj.topic_remarks}备注 {$obj.topic_level}推荐值 {$obj.topic_up}顶数 {$obj.topic_down}踩数 {$obj.topic_score}平均分 {$obj.topic_score_all}总评分 {$obj.topic_score_num}总评次 {$obj.topic_hits}总点击 {$obj.topic_hits_day}日点击 {$obj.topic_hits_week}周点击 {$obj.topic_hits_month}月点击 {$obj.topic_time}更新时间 {$obj.topic_time_add}添加时间 {$obj.topic_content}详细介绍 {$obj.topic_extend}扩展配置json {$obj.topic_rel_vod|explode=',',###|count} 专题包含视频数量 {$obj.topic_rel_art|explode=',',###|count} 专题包含文章数量 {:mac_url_topic_detail($obj)} 专题详情页链接 {:mac_url_topic_index()} 专题首页链接 =======漫画列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id,time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd start从第几条开始 num获取条数 ids指定1,2,3一组ID; not不抱含id 多个逗号链接 type指定获取分类数据 all所有;1,2,3指定; class指定某扩展分类 支持多个 动作,喜剧 tag指定tag 支持多个 aaa,xxx level指定推荐值 支持多个 1,2 area指定地区 支持多个 大陆,香港 lang指定语言 支持多个 国语,粤语 year指定年代 支持多个 2002,2003 serial连载状态 timeadd添加时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour timehits点击时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour time更新时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour hitsmonth月点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsweek周点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsday日点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hits总点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 paging是否分页yes pageurl分页地址 cachetime自定义缓存时间单位秒 {maccms:manga num="10" paging="no" type="all" order="asc" by="sort"} 内部同下方,{$obj.改为{$vo.开头即可 {/maccms:manga} =======漫画内容页独有标签======= {$obj.manga_id} 漫画id {$obj.type_id} 分类id {$obj.type_id_1} 一级分类id {$obj.group_id} 会员组id {$obj.manga_name} 漫画名称 {$obj.manga_sub} 副标题 {$obj.manga_en} 英文名 {$obj.manga_status} 状态(0=锁定,1=正常) {$obj.manga_letter} 首字母 {$obj.manga_color} 标题颜色 {$obj.manga_from} 来源 {$obj.manga_author} 作者 {$obj.manga_tag} 标签 {$obj.manga_class} 扩展分类 {$obj.manga_pic} 封面图 {$obj.manga_pic_thumb} 封面缩略图 {$obj.manga_pic_slide} 封面幻灯图 {$obj.manga_pic_screenshot} 内容截图 {$obj.manga_blurb} 简介 {$obj.manga_remarks} 备注(例如:更新至xx话) {$obj.manga_jumpurl} 跳转URL {$obj.manga_tpl} 独立模板 {$obj.manga_level} 推荐级别 {$obj.manga_lock} 锁定状态(0=未锁,1=已锁) {$obj.manga_points} 点播所需积分 {$obj.manga_points_detail} 每章所需积分 {$obj.manga_up} 顶数 {$obj.manga_down} 踩数 {$obj.manga_hits} 总点击数 {$obj.manga_hits_day} 日点击数 {$obj.manga_hits_week} 周点击数 {$obj.manga_hits_month} 月点击数 {$obj.manga_time} 更新时间 {$obj.manga_time_add} 添加时间 {$obj.manga_time_hits} 点击时间 {$obj.manga_time_make} 生成时间 {$obj.manga_score} 平均评分 {$obj.manga_score_all} 总评分 {$obj.manga_score_num} 评分次数 {$obj.manga_rel_manga} 关联漫画 {$obj.manga_rel_vod} 关联视频 {$obj.manga_pwd} 访问密码 {$obj.manga_pwd_url} 密码跳转URL {$obj.manga_content} 详细介绍 {$obj.manga_serial} 连载状态(文字) {$obj.manga_total} 总章节数 {$obj.manga_chapter_from} 章节来源 {$obj.manga_chapter_url} 章节URL列表 {$obj.manga_last_update_time} 最后更新时间戳 {$obj.manga_age_rating} 年龄分级(0=全年龄,1=12+,2=18+) {$obj.manga_orientation} 阅读方向(1=左到右,2=右到左,3=垂直) {$obj.manga_is_vip} 是否VIP(0=否,1=是) {$obj.manga_copyright_info} 版权信息 {:mac_url_manga_detail($obj)} 漫画详情页链接 {:mac_url_manga_play($obj,['sid'=>1,'nid'=>1])} 漫画阅读页链接 {:mac_url_manga_play($obj,'first')} 漫画阅读页第一条链接 {:mac_url_manga_down($obj,['sid'=>1,'nid'=>1])} 漫画下载页链接 {:mac_url_manga_down($obj,'first')} 漫画下载页第一条链接 =======视频列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id,time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd start从第几条开始 num获取条数 ids指定1,2,3一组ID; not不抱含id 多个逗号链接 type指定获取分类数据 all所有;1,2,3指定; class指定某扩展分类 支持多个 动作,喜剧 tag指定tag 支持多个 aaa,xxx level指定推荐值 支持多个 1,2 area指定地区 支持多个 大陆,香港 lang指定语言 支持多个 国语,粤语 year指定年代 支持多个 2002,2003 state资源类别 支持多个 高清版,剧场版,抢先版 version资源版本 支持多个 正片,预告片 weekday更新周期 支持多个 一,二,三 rel指定关联数据 1,2,3 或 变形金刚 timeadd添加时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour timehits点击时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour time更新时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour hitsmonth月点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsweek周点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsday日点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hits总点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 paging是否分页yes pageurl分页地址 cachetime自定义缓存时间单位秒 isend是否连载完毕 0,1 plot是否包含分集剧情 0,1 {maccms:vod num="10" paging="no" type="all" order="asc" by="sort"} 内部同下方,{$obj.改为{$vo.开头即可 {/maccms:vod} =======视频内容页独有标签======= {$obj.vod_id} 视频id {$obj.type_id} 分类id {$obj.type_id_1} 一级分类id {$obj.type} 分类对象,二级属性可参考分类属性 {$obj.type.type_name} 分类名 {$obj.type.type_en} 分类拼音 {$obj.type_1} 一级分类对象,二级属性可参考分类属性 {$obj.type_1.type_name} 一级分类名 {$obj.type_1.type_en} 一级分类拼音 {$obj.group_id} 用户组id {$obj.vod_name} 视频名 {$obj.vod_sub} 副标题 {$obj.vod_en} 别名 {$obj.vod_status} 状态0未审1已审 {$obj.vod_letter} 首字母 {$obj.vod_color} 颜色 {$obj.vod_tag} tags {$obj.vod_class} 扩展分类 {$obj.vod_pic} 图片 {$obj.vod_pic_thumb} 缩略图 {$obj.vod_pic_slide} 幻灯图 {$obj.vod_pic_screenshot}截图多个图片用#连接 {$obj.vod_pic_screenshot_list}截图列表 {$obj.vod_actor} 主演 {$obj.vod_director} 导演 {$obj.vod_writer}编剧 {$obj.vod_behind}幕后 {$obj.vod_blurb} 简介 {$obj.vod_remarks} 备注 {$obj.vod_pubdate}上映日期 {$obj.vod_total} 总集数 {$obj.vod_serial} 连载数 {$obj.vod_tv} 上映电视台 {$obj.vod_weekday} 节目周期 {$obj.vod_area} 地区 {$obj.vod_lang} 语言 {$obj.vod_year} 年代 {$obj.vod_version} 版本-dvd,hd,720p {$obj.vod_state} 资源类别-正片,预告片,花絮 {$obj.vod_author} 编辑人员 {$obj.vod_jumpurl} 跳转url {$obj.vod_tpl} 独立模板 {$obj.vod_tpl_play} 独立播放页模板 {$obj.vod_tpl_down} 独立下载页模板 {$obj.vod_isend} 是否完结 {$obj.vod_lock} 锁定1 {$obj.vod_level} 推荐级别 {$obj.vod_points} 访问整个视频所需积分 {$obj.vod_points_play} 每集点播付费 {$obj.vod_points_down} 每集下载付费 {$obj.vod_hits} 总点击量 {$obj.vod_hits_day} 日点击量 {$obj.vod_hits_week} 周点击量 {$obj.vod_hits_month} 月点击量 {$obj.vod_duration} 时长 {$obj.vod_up} 顶数 {$obj.vod_down} 踩数 {$obj.vod_score} 平均分 {$obj.vod_score_all} 总评分 {$obj.vod_score_num} 评分次数 {$obj.vod_time} 更新时间 {$obj.vod_time_add} 添加时间 {$obj.vod_time_hits} 点击时间 {$obj.vod_time_make} 生成时间 {$obj.vod_trysee} 试看时长分 {$obj.vod_reurl} 来源地址 {$obj.vod_rel_vod} 关联视频ids {$obj.vod_rel_art} 关联文章ids {$obj.vod_content} 详细介绍 {$obj.vod_pwd} 访问内容页密码 {$obj.vod_pwd_url} 获取密码链接 {$obj.vod_pwd_play} 访问播放页密码 {$obj.vod_pwd_play_url} 获取密码链接 {$obj.vod_pwd_down} 访问下载页密码 {$obj.vod_pwd_down_url} 获取密码链接 {$obj.vod_copyright} 是否开启版权提示 {$obj.vod_play_from} 播放组 {$obj.vod_play_server} 播放服务器组 {$obj.vod_play_note} 播放备注 {$obj.vod_play_url} 播放地址 {$obj.vod_down_from} 下载租 {$obj.vod_down_server} 下载服务器组 {$obj.vod_down_note} 下载备注 {$obj.vod_down_url} 下载地址 {$obj.vod_plot} 是否包含分集剧情 {$obj.vod_plot_name} 分集剧情名称 {$obj.vod_plot_detail} 分集剧情详情 {:mac_url_vod_detail($obj)} 视频详情页链接 {:mac_url_vod_play($obj,['sid'=>1,'nid'=>1])} 视频播放页链接 {:mac_url_vod_play($obj,'first')} 视频播放页第一条链接 {:mac_url_vod_down($obj,['sid'=>1,'nid'=>1])} 视频下载页链接 {:mac_url_vod_down($obj,'first')} 视频下载页第一条链接 =======多个截图获取调用例子======= {maccms:foreach name="obj.vod_pic_screenshot_list" id="vo"} <img src="{$vo.url}" alt="{$vo.name}" /> {/maccms:foreach} =======视频播放地址和下载地址标签======= {maccms:foreach name="obj.vod_play_list" id="vo"} <div class="ui-box marg" id="playlist_1"> <div class="down-title"> <h2>{$vo.from}-在线播放</h2><span>[{$vo.player_info.tip}]</span> </div> <div class="video_list fn-clear"> {maccms:foreach name="vo.urls" id="vo2"} <a href="{:mac_url_vod_play($obj,['sid'=>$vo.sid,'nid'=>$vo2.nid])}" >{$vo2.name}</a> {/maccms:foreach} </div> </div> {/maccms:foreach} {maccms:foreach name="obj.vod_down_list" id="vo"} <div class="ui-box marg" id="downlist_1"> <div class="down-title"> <h2>{$vo.from}-下载</h2><span>[{$vo.player_info.tip}]</span> </div> <div class="video_list fn-clear"> {maccms:foreach name="vo.urls" id="vo2"} <a href="{:mac_url_vod_down($obj,['sid'=>$vo.sid,'nid'=>$vo2.nid])}" >{$vo2.name}</a> {/maccms:foreach} </div> </div> {/maccms:foreach} 如何在播放页或下载页只显示当前分组的地址呢?外层循环标签不变,只需要加一个判断就可以了。 {maccms:foreach name="obj.vod_play_list" id="vo"} {if condition="$vo.sid eq $param.sid"} ---------------------重点是这句if判断 <div class="ui-box marg" id="playlist_1"> <div class="down-title"> <h2>{$vo.from}-在线播放</h2><span>[{$vo.player_info.tip}]</span> </div> <div class="video_list fn-clear"> {maccms:foreach name="vo.urls" id="vo2"} <a href="{:mac_url_vod_play($obj,['sid'=>$vo.sid,'nid'=>$vo2.nid])}" >{$vo2.name}</a> {/maccms:foreach} </div> </div> {/if} {/maccms:foreach} 上边循环过程中,其中获取播放器详细信息的方法是 {$vo.player_info.from} 编码 {$vo.player_info.show} 名称 {$vo.player_info.des} 备注 {$vo.player_info.tip} 提示 {$vo.player_info.sort} 排序 {$vo.player_info.parse} 解析接口 {$vo.player_info.target} 目标窗口 当前_self 和 新页_blank ,可以直接用在a标签的target属性上 {$vo.from} 播放器编码 {$vo.note} 备注 {$vo.url} url地址 {$vo.url_count} 集数 =======视频播放页独有标签======= {$param.sid} 当前播放组序号 {$param.nid} 当前集数序号 {$obj.player_info.link_next} 下一页地址,最后一页时此链接将当前页链接 {$obj.player_info.link_pre} 上一页地址,第一页时此链接将当前页链接 {$obj['vod_play_list'][$param['sid']]} 获取当前播放组数据 {$obj['vod_play_list'][$param['sid']]['player_info']} 播放器信息 {$obj['vod_play_list'][$param['sid']]['server_info']} 服务器组信息 {$obj['vod_play_list'][$param['sid']]['url_count']} 总集数 {$obj['vod_play_list'][$param['sid']]['urls']} 集数信息 {$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]} 当前集数信息 {$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['name']} 当前集数名称 {$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['url']} 当前集数url 下载页获取以上信息,请把vod_play_list改为vod_down_list,其他参数不变 {$player_data} 播放数据 {$player_js} 加载播放器 =======获取与当前视频相关联视频和关联文章数据====== <h2>与<strong>“{$obj.vod_name}”</strong>关联的视频</h2> <ul class="img-list dis"> {maccms:vod num="6" ids="'.$obj['vod_rel_vod'].'" order="desc" by="time"} <li><a href="{:mac_url_vod_detail($vo)}" title="{$vo.vod_name}"><img src="{:mac_url_img($vo.vod_pic)}" alt="{$vo.vod_name}"/><h2>{$vo.vod_name}</h2><p></p><i>{$vo.vod_version}</i><em></em></a></li> {/maccms:vod} </ul> <h2>与<strong>“{$obj.vod_name}”</strong>关联的文章</h2> <ul class="img-list dis"> {maccms:art num="6" ids="'.$obj['vod_rel_art'].'" order="desc" by="time"} <li><a href="{:mac_url_art_detail($vo)}" title="{$vo.art_name}"><img src="{:mac_url_img($vo.art_pic)}" alt="{$vo.art_name}"/><h2>{$vo.art_name}</h2><p></p><i>{$vo.vod_from}</i><em></em></a></li> {/maccms:art} </ul> 版权跳转?配合后台提供的跳转url字段,在内容页播放页通用。 <script> {if condition="$obj.vod_jumpurl neq ''"} location.href='{$obj.vod_jumpurl}'; {/if} </script> 如果想判断每集是否跳转,可把要跳转的集数地址写成固定的格式,方便读取和操作。 比如火影忍者有10集, 第2集版权跳转,地址写为jump://baidu.com 在播放页加入代码 只跳转这一集 <script> {if condition="strpos($obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['url'],'jump:')!==false "} location.href='{$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['url']|str_replace="jump:","http:",###}'; {/if} </script> =======视频分集剧情页独有标签======= {$obj['vod_plot_list'][$param['page']]['name']} 分集剧情名称 {$obj['vod_plot_list'][$param['page']]['detail']} 分集剧情详情 mac_url_plot_detail($obj,['page'=>1]) 分集剧情详情页地址 mac_url_plot_index() 分集剧情首页,建议放一些热门剧包含剧情分类的数据 mac_url_vod_plot($obj) 某个视频的分集剧情列表 =======文章列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id,time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd start从第几条开始 num获取条数 ids指定1,2,3一组ID; not不抱含id 多个逗号链接 type指定获取分类数据 all所有;1,2,3指定; class指定某扩展分类 支持多个 tag指定tag 支持多个 aaa,xxx level指定推荐值 支持多个 rel指定关联数据 1,2,3 或 变形金刚 timeadd添加时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour timehits点击时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour time更新时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour hitsmonth月点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsweek周点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsday日点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hits总点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 paging是否分页yes pageurl分页地址 cachetime自定义缓存时间单位秒 {maccms:art num="10" paging="no" type="all" order="asc" by="sort"} 内部同下方,{$obj.改为{$vo.开头即可 {/maccms:art} =======文章内容页独有标签======= {$obj.art_id} 文章id {$obj.type_id} 分类id {$obj.type_id_1} 一级分类id {$obj.type} 分类对象,二级属性可参考分类属性 {$obj.type.type_name} 分类名 {$obj.type.type_en} 分类拼音 {$obj.type_1} 一级分类对象,二级属性可参考分类属性 {$obj.type_1.type_name} 一级分类名 {$obj.type_1.type_en} 一级分类拼音 {$obj.group_id} 用户组id {$obj.art_name} 标题 {$obj.art_sub} 副标题 {$obj.art_en} 别名 {$obj.art_status} 状态0未审1已审 {$obj.art_letter} 首字母 {$obj.art_color} 颜色 {$obj.art_from} 来源 {$obj.art_author} 作者 {$obj.art_tag} tags {$obj.art_class} 扩展分类 {$obj.art_pic} 主图 {$obj.art_pic_thumb} 缩略图 {$obj.art_pic_slide} 幻灯图 {$obj.art_pic_screenshot}截图多个图片用#连接 {$obj.art_pic_screenshot_list}截图列表 {$obj.art_blurb} 简介 {$obj.art_remarks} 备注 {$obj.art_jumpurl} 跳转url {$obj.art_tpl} 独立模板 {$obj.art_level} 推荐等级 {$obj.art_lock} 锁定 {$obj.art_up} 顶数 {$obj.art_down} 踩数 {$obj.art_hits} 总点击量 {$obj.art_hits_day} 日点击量 {$obj.art_hits_week} 周点击量 {$obj.art_hits_month} 月点击量 {$obj.art_time} 更新时间 {$obj.art_time_add} 添加时间 {$obj.art_time_hits} 点击时间 {$obj.art_time_make} 生成时间 {$obj.art_score} 平均分 {$obj.art_score_all} 总评分 {$obj.art_score_num} 评分次数 {$obj.art_rel_art} 关联文章 {$obj.art_rel_vod} 关联视频 {$obj.art_title} 页标题 {$obj.art_note} 页备注 {$obj.art_content} 页详细介绍 {$obj.art_points} 访问整个文章所需点数 {$obj.art_points_detail} 访问每一页所需点数 {$obj.art_pwd} 访问密码 {$obj.art_pwd_url} 密码获取链接 {:mac_url_art_detail($obj)} 文章详情页链接 =======获取与当前文章相关联视频和关联文章数据====== <h2>与<strong>“{$obj.art_name}”</strong>关联的视频</h2> <ul class="img-list dis"> {maccms:vod num="6" rel="'.$obj['art_rel_vod'].'" order="desc" by="time"} <li><a href="{:mac_url_vod_detail($vo)}" title="{$vo.vod_name}"><img src="{:mac_url_img($vo.vod_pic)}" alt="{$vo.vod_name}"/><h2>{$vo.vod_name}</h2><p></p><i>{$vo.vod_version}</i><em></em></a></li> {/maccms:vod} </ul> <h2>与<strong>“{$obj.art_name}”</strong>关联的文章</h2> <ul class="img-list dis"> {maccms:art num="6" rel="'.$obj['art_rel_art'].'" order="desc" by="time"} <li><a href="{:mac_url_art_detail($vo)}" title="{$vo.art_name}"><img src="{:mac_url_img($vo.art_pic)}" alt="{$vo.art_name}"/><h2>{$vo.art_name}</h2><p></p><i>{$vo.vod_from}</i><em></em></a></li> {/maccms:art} </ul> =======文章分页内容特有标签======= {$obj['art_page_list'][$param['page']]} 分页内容数组,包含标题备注,分页内容 {$obj['art_page_list'][$param['page']]['title']} 分页标题 {$obj['art_page_list'][$param['page']]['note']} 分页备注 {$obj['art_page_list'][$param['page']]['content']} 分页内容 =======分页内容标签======= 分页代码可用在分类页、筛选页、搜索页、文章内容页、留言本、评论、专题首页等页面,使用前提是页面有包含paging='yes'获取分页数据的标签。 其中包含隐藏参数pageurl="",视频默认是vod/type,文章分页默认是art/type,分页时必须加入此参数以免分页出错!!! 例如:{maccms:vod num="10" paging="yes" pageurl="vod/type" half="3"} {/maccms:vod} 视频分类页是pageurl="vod/type" 视频筛选页是pageurl="vod/show" 视频搜索页是pageurl="vod/search" 首页是pageurl="index/index" 文章分类页是pageurl="art/type" 文章筛选页是pageurl="art/show" 文章搜索页是pageurl="art/search" 其中half参数是设置显示分页数字页码的个数,不设置默认为5。 <div class="mac_pages"> <div class="page_tip">共{$__PAGING__.record_total}条数据,当前{$__PAGING__.page_current}/{$__PAGING__.page_total}页</div> <div class="page_info"> <a class="page_link" href="{$__PAGING__.page_url|mac_url_page=1}" title="首页">首页</a> <a class="page_link" href="{$__PAGING__.page_url|mac_url_page=$__PAGING__.page_prev}" title="上一页">上一页</a> {maccms:foreach name="$__PAGING__.page_num" id="num"} {if condition="$__PAGING__['page_current'] eq $num"} <a class="page_link page_current" href="javascript:;" title="第{$num}页">{$num}</a> {else} <a class="page_link" href="{$__PAGING__.page_url|mac_url_page=$num}" title="第{$num}页" >{$num}</a> {/if} {/maccms:foreach} <a class="page_link" href="{$__PAGING__.page_url|mac_url_page=$__PAGING__.page_next}" title="下一页">下一页</a> <a class="page_link" href="{$__PAGING__.page_url|mac_url_page=$__PAGING__.page_total}" title="尾页">尾页</a> <input class="page_input" type="text" placeholder="页码" id="page" autocomplete="off" style="width:40px"> <button class="page_btn mac_page_go" type="button" data-url="{$__PAGING__.page_url}" data-total="{$__PAGING__.page_total}" data-sp="{$__PAGING__.page_sp}" >GO</button> </div> </div> =======非静态模式下,可获取到的当前登录用户的信息;用户中心里各个界面也可用以下参数{$obj.开头}======= {$user.user_id} 用户编号 {$user.user_name} 登录名 {$user.user_nick_name} 昵称 {$user.user_email} 邮箱 {$user.user_qq} QQ {$user.user_phone} 联系电话 {$user.user_portrait} 头像 {$user.user_points} 积分 {$user.user_reg_time} 注册时间 {$user.user_reg_ip} 注册ip {$user.user_login_time} 登录时间 {$user.user_login_ip} 登录ip {$user.user_last_login_time} 上次登录时间 {$user.user_last_login_ip} 上次登录ip {$user.user_login_num} 登录次数 {$user.user_end_time} vip截止期限 {$user.group_id}用户组编号 =======友情链接列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id,sort start从第几条开始 num获取条数 type指定获取类型数据 all所有;font文字链接,pic图片链接; cachetime自定义缓存时间单位秒 {maccms:link num="10" type="all" order="asc" by="sort"} {$vo.link_id}编号 {$vo.link_name}名称 {$vo.link_type}类型0文字1图片 {$vo.link_url}链接 {$vo.link_sort}排序 {$vo.link_logo}图标 {$vo.link_add_time} 添加时间 {$vo.link_time} 更新时间 {/maccms:link} =======留言本列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id,time,reply_time start从第几条开始 num获取条数 rid关联数据id {maccms:gbook num="10" paging="yes" order="asc" by="sort"} {$vo.gbook_id}编号 {$vo.gbook_name}昵称 {$vo.gbook_status}状态0未审核1已审核 {$vo.gbook_ip}ip地址 {$vo.gbook_time} 时间 {$vo.gbook_content} 留言内容 {$vo.gbook_reply_time} 回复时间 {$vo.gbook_reply} 回复内容 {/maccms:gbook} 调用方式: <script> $(function(){ MAC.Gbook.Login = {$gbook.login}; MAC.Gbook.Verify = {$gbook.verify}; MAC.Gbook.Init(); }); </script> =======评论列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id, time,up,down start从第几条开始 num获取条数 rid关联数据id {maccms:comment num="10" paging="yes" order="asc" by="sort"} {$vo.comment_id}编号 {$vo.comment_mid}模块id,1视频2文字3专题 {$vo.comment_name}昵称 {$vo.comment_status}状态0未审核1已审核 {$vo.comment_ip}ip地址 {$vo.comment_time} 时间 {$vo.comment_content} 留言内容 {$vo.comment_up} 顶数 {$vo.comment_down} 踩数 {$vo.comment_report} 举报 {/maccms:comment} 调用方式,例如视频内容页中: <div class="mac_comment" data-id="{$obj.vod_id}" data-mid="{$maccms.mid}" ></div> <script> $(function(){ MAC.Comment.Login = {$comment.login}; MAC.Comment.Verify = {$comment.verify}; MAC.Comment.Init(); MAC.Comment.Show(1); }); </script> =======演员列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id, time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd,in start从第几条开始 num获取条数 ids指定id 多个逗号连接 not不抱含id 多个逗号链接 type指定获取分类数据 all所有;1,2,3指定 area指定地区 sex指定性别 男 女 letter指定首字母 level指定推荐值 支持多个 1,2 area指定地区 支持多个 大陆,香港 name指定演员支持多个 刘德华,周华健 blood指定血型支持多个 A型,B型 starsign指定星座支持多个 处女座,天蝎座,白羊座 timeadd添加时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour timehits点击时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour time更新时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour hitsmonth月点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsweek周点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsday日点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hits总点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 paging是否分页yes pageurl分页地址 cachetime自定义缓存时间单位秒 {maccms:actor num="10" paging="no" area="大陆" order="asc" by="sort"} 内部同下方,{$obj.改为{$vo.开头即可 {/maccms:actor} =======演员内容页独有标签======= {$obj.actor_id} 演员id {$obj.type_id} 分类id {$obj.type_id_1} 一级分类id {$obj.actor_name} 姓名 {$obj.actor_en} 拼音 {$obj.actor_alias} 别名 {$obj.actor_status} 状态 {$obj.actor_lock} 锁定 {$obj.actor_letter} 首字母 {$obj.actor_sex} 性别 {$obj.actor_color} 高亮颜色 {$obj.actor_pic} 图片 {$obj.actor_blurb} 简介 {$obj.actor_remarks} 备注 {$obj.actor_tag} tags {$obj.actor_class} 扩展分类 {$obj.actor_area} 地区 {$obj.actor_height} 身高 {$obj.actor_weight} 体重 {$obj.actor_birthday} 生日 {$obj.actor_birtharea} 出生地 {$obj.actor_blood} 血型 {$obj.actor_starsign} 星座 {$obj.actor_school} 毕业院校 {$obj.actor_works} 主要作品多个逗号相连 {$obj.actor_level} 推荐值 {$obj.actor_up} 顶数 {$obj.actor_down} 踩数 {$obj.actor_score} 平均分 {$obj.actor_score_all} 总评分 {$obj.actor_score_num} 评分次数 {$obj.actor_time} 更新时间 {$obj.actor_time_add} 添加时间 {$obj.actor_time_hits} 点击时间 {$obj.actor_time_make} 生成时间 {$obj.actor_tpl} 自定义模板 {$obj.actor_jumpurl} 跳转url {$obj.actor_content} 详情 {$obj|mac_url_actor_detail} 获取演员详情页链接 =======角色列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id, time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd start从第几条开始 num获取条数 ids指定id 多个逗号连接 not不抱含id 多个逗号链接 rid指定关联视频id actor指定演员名 支持多个 例如 刘德华,成龙 name指定角色名 支持多个 例如 花千骨,黑山老妖 letter指定首字母 level指定推荐值 支持多个 1,2 area指定地区 支持多个 大陆,香港 timeadd添加时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour timehits点击时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour time更新时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour hitsmonth月点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsweek周点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsday日点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hits总点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 paging是否分页yes pageurl分页地址 cachetime自定义缓存时间单位秒 {maccms:role num="10" paging="no" rid="'.$obj['vod_id'].'" order="asc" by="sort"} 内部同下方,{$obj.改为{$vo.开头即可 {/maccms:role} =======角色内容页独有标签======= {$obj.role_id} 角色id {$obj.role_rid} 关联视频id {$obj.role_name} 角色名 {$obj.role_en} 拼音 {$obj.role_status} 状态 {$obj.role_lock} 锁定 {$obj.role_letter} 首字母 {$obj.role_color} 高亮颜色 {$obj.role_actor} 演员名称 {$obj.role_remarks} 备注 {$obj.role_pic} 图片 {$obj.role_sort} 排序 {$obj.role_level} 推荐值 {$obj.role_up} 顶数 {$obj.role_down} 踩数 {$obj.role_score} 平均分 {$obj.role_score_all} 总评分 {$obj.role_score_num} 评分次数 {$obj.role_time} 更新时间 {$obj.role_time_add} 添加时间 {$obj.role_time_hits} 点击时间 {$obj.role_time_make} 生成时间 {$obj.role_tpl} 自定义模板 {$obj.role_jumpurl} 跳转url {$obj.role_content} 详情 {$obj|mac_url_role_detail} 获取角色详情页链接 =======网址列表标签======= order排列顺序desc倒序,asc正序 by排序依据 id, time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd start从第几条开始 num获取条数 ids指定id 多个逗号连接 not不抱含id 多个逗号链接 type指定获取分类数据 all所有;1,2,3指定 letter指定首字母 level指定推荐值 支持多个 1,2 area指定地区 支持多个 大陆,香港 lang指定语言 支持多个 英语,西班牙语 timeadd添加时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour timehits点击时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour time更新时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour hitsmonth月点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsweek周点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hitsday日点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 hits总点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000 paging是否分页yes pageurl分页地址 cachetime自定义缓存时间单位秒 {maccms:website num="10" paging="no" order="asc" by="sort"} 内部同下方,{$obj.改为{$vo.开头即可 {/maccms:website} =======网址内容页独有标签======= {$obj.website_id} 网址id {$obj.type_id} 分类id {$obj.type_id_1} 一级分类id {$obj.website_name} 网址名 {$obj.website_sub} 副标 {$obj.website_en} 拼音 {$obj.website_jumpurl} 跳转url {$obj.website_status} 状态 {$obj.website_lock} 锁定 {$obj.website_letter} 首字母 {$obj.website_color} 高亮颜色 {$obj.website_remarks} 备注 {$obj.website_tag} tags {$obj.website_class} 扩展分类 {$obj.website_pic} 截图 {$obj.website_pic_screenshot}截图多个图片用#连接 {$obj.website_pic_screenshot_list}截图列表 {$obj.website_logo} logo {$obj.website_sort} 排序 {$obj.website_level} 推荐值 {$obj.website_up} 顶数 {$obj.website_down} 踩数 {$obj.website_score} 平均分 {$obj.website_score_all} 总评分 {$obj.website_score_num} 评分次数 {$obj.website_time} 更新时间 {$obj.website_time_add} 添加时间 {$obj.website_time_hits} 点击时间 {$obj.website_time_make} 生成时间 {$obj.website_referer} 总来路 {$obj.website_referer_day} 日来路 {$obj.website_referer_week} 周来路 {$obj.website_referer_month} 月来路 {$obj.website_tpl} 自定义模板 {$obj.website_content} 详情 {$obj|mac_url_website_detail} 获取网址详情页链接 =======常用处理函数======= 允许使用多个函数,都使用|分隔开 所有图片地址,不管是远程的本地的都建议使用 mac_url_img 来处理。 {:mac_data_count(0,'all','vod')} 获取视频总数量 {:mac_data_count(0,'today','vod')} 获取今日更新视频总数量 {:mac_data_count(0,'all','art')} 获取文章总数量 {:mac_data_count(0,'today','art')} 获取今日更新文章总数量 {:mac_data_count(1,'all')} 获取某个分类下的数据总量,支持视频和文章,传入分类ID {:mac_data_count(1,'today')} 获取某个分类下的今日更新数据总量,支持视频和文章,传入分类ID 另外还支持topic,website,actor,role模块的获取数据数量 {:mac_url('map/index')} 获取站内链接,参数代表 模块/页面 {$obj.vod_content|mac_url_content_img} 如果使用了第三方附件存储,附件和图片默认url是mac:开头的,此方法将替换为http {$vo.vod_pic|mac_url_img} 自动转换图片地址 {$vo.vod_content|mac_substring=100}返回截取字符串100个字 {$vo.vod_content|mac_filter_html}返回没有html代码的内容 {$vo.actor|mac_url_create='actor','vod','search',' '} 把,号相连的一串字符生成N个搜索链接,后2个参数可以不填写默认是生成vod模块搜索链接。 例子是创建演员搜索链接。支持演员、导演、tag、扩展分类等字段。最后一个参数是生成链接的分隔符。 {$vo.vod_time|mac_day} 自动返回日期 {$vo.vod_time|mac_friend_date} 友好时间提醒 几秒前,几分前,几小时前,几天前。。。 {$vo.vod_year|mac_default='未知'}如果字符串为空,则返回默认字符串 {$user.user_login_ip|mac_long2ip}返回格式化ip地址 {$user.user_id|mac_get_user_portrait}获取用户头像地址 =======常用JS处理函数=======一般用元素的class自动绑定处理事件======== 会员-收藏视频内容 <a href="javascript:;" class="mac_ulog" data-type="2" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}">我要收藏</a> 会员-收藏文章内容页 <a href="javascript:;" class="mac_ulog" data-type="2" data-mid="{$maccms.mid}" data-id="{$obj.art_id}">我要收藏</a> 会员-收藏专题内容页 <a href="javascript:;" class="mac_ulog" data-type="2" data-mid="{$maccms.mid}" data-id="{$obj.topic_id}">我要收藏</a> 以下内容一般放到body结尾之前,不用于显示,只用户记录信息。 会员-文章浏览记录 <span style="display:none" class="mac_ulog_set" alt="设置文章内容页浏览记录" data-type="1" data-mid="{$maccms.mid}" data-id="{$obj.art_id}" data-sid="{$param.sid}" data-nid="{$param.nid}"></span> 会员-专题浏览记录 <span style="display:none" class="mac_ulog_set" alt="设置专题内容页浏览记录" data-type="1" data-mid="{$maccms.mid}" data-id="{$obj.topic_id}" data-sid="{$param.sid}" data-nid="{$param.nid}"></span> 会员-视频浏览记录 <span style="display:none" class="mac_ulog_set" alt="设置内容页浏览记录" data-type="1" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-sid="{$param.sid}" data-nid="{$param.nid}"></span> 会员-视频播放记录 <span style="display:none" class="mac_ulog_set" alt="设置视频播放记录" data-type="4" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-sid="{$param.sid}" data-nid="{$param.nid}"></span> 会员-视频下载记录 <span style="display:none" class="mac_ulog_set" alt="设置视频播放记录" data-type="5" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-sid="{$param.sid}" data-nid="{$param.nid}"></span> 视频、文章、专题 顶和踩 通用 <a class="digg_link" data-id="{$obj.vod_id}{$obj.art_id}{$obj.topic_id}" data-mid="{$maccms.mid}" data-type="up" href="javascript:;"> 顶<em class="digg_num">{$obj.vod_up}{$obj.art_up}{$obj.topic_up}</em> </a> <a class="digg_link" data-id="{$vod_id}{$art_id}{$topic_id}" data-mid="{$maccms.mid}" data-type="down" href="javascript:;"> 踩<em class="digg_num">{$obj.vod_down}{$obj.art_down}{$obj.topic_down}</em> </a> 视频、文章、专题点击量显示 通用 总点击量:<span class="mac_hits hits" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}{$obj.art_id}{$obj.topic_id}"" data-type="hits"></span> 日点击量:<span class="mac_hits hits_day" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}{$obj.art_id}{$obj.topic_id}"" data-type="hits_day"></span> 周点击量:<span class="mac_hits hits_week" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}{$obj.art_id}{$obj.topic_id}"" data-type="hits_week"></span> 月点击量:<span class="mac_hits hits_month" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}{$obj.art_id}{$obj.topic_id}"" data-type="hits_month"></span> 前台浏览历史记录调用 <a href="javascript:;" class="mac_history">历史记录</a> 在视频、文章、专题详情页面写入浏览历史记录 <span style="display:none" class="mac_history_set" alt="设置视频历史记录" data-name="[{$obj.type.type_name}]{$obj.vod_name}" data-pic="{$obj.vod_pic|mac_url_img}"></span> <span style="display:none" class="mac_history_set" alt="设置文章历史记录" data-name="[{$obj.type.type_name}]{$obj.art_name}" data-pic="{$obj.art_pic|mac_url_img}"></span> <span style="display:none" class="mac_history_set" alt="设置专题历史记录" data-name="{$obj.topic_name}" data-pic="{$obj.topic_pic|mac_url_img}"></span> 访问页面触发定时任务,建议放到首页底部; 由于入口文件名可变,默认是api.php,如需修改请自定义 data-file="xxx.php" <span style="display: none;" class="mac_timming" data-file="" ></span> 网址导航来路记录统计;建议放到首页底部。来路域名必须和网址导航里的跳转url里的一致。 <span style="display: none;" class="mac_referer" data-file="" ></span> 自动获取短网址连接 <input type="text" name="shorten" class="mac_shorten" /> 短网址自定义用法,js来获取 <script> MAC.Shorten.Get("http://www.baidu.com/",function(r){ alert(r.data.url_short); }); </script> 获取用户记录日志,比如1浏览、2收藏、3想看、4点播、5下载 MAC.Ulog.Get有4个参数type类型0代表全部,page页码,limit每页条数,call回调函数 <script> MAC.Ulog.Get(0,1,999,function(r){ if(r.code == 1){ $.each(r['list'],function(index,row){ console.log(row['data']['id'] + '--' + row['data']['name'] + '--' + row['data']['pic'] + '--' + row['data']['link'] + '--' + row['data']['type']['type_name'] + '--' + row['data']['type']['link'] + '--' ); }); }else{ console.log('获取失败'); } }); </script> =======预留ajax数据接口,方便瀑布流加载======= 参数 mid:模块1视频2文章3专题 limit:每页条数,支持10,20,30 page:页码,最多不超过20页,防止非法采集 tid:分类id 接口地址是index.php/ajax/data.html?mid=1&page=1&limit=10 =======常用标签技巧======== 1,在循环中获取每个分类的数据量 {maccms:type ids="1,2,3,4" order="asc" by="sort" id="vo1" key="key1"} 分成:{$vo1.type_name};总数量: {$vo1.type_id|mac_data_count=all};今日数量:{$vo1.type_id|mac_data_count=today}。 {/maccms:type} 2,嵌套循环外层分类内部视频或文章,重点在于外部和内部标签各自设置 id 和 key,系统默认都是vo不适合会导致数据冲掉。 {maccms:type ids="1,2,3,4" order="asc" by="sort" id="vo1" key="key1"} {maccms:vod num="10" type="'.$vo1['type_id'].'" order="desc" by="time" id="vo2" key="key2"} {$vo1.type_name}:{$vo2.vod_name}; {/maccms:vod} {/maccms:type} 3,嵌套循环一级和二级分类数据 {maccms:type ids="1,2,3,4,5" order="asc" by="sort" id="vo" key="key"} {maccms:type parent="'.$vo['type_id'].'" order="asc" by="sort" id="vo2" key="key2"} <li><a href=":mac_url_type($vo2)}">{$vo2.type_name}</a></li> {/maccms:type} {/maccms:type} 4,全站调用全局预留参数,如全局视频扩展分类、地区、语言等数据 {maccms:foreach name=":explode(',',$maccms.vod_extend_class)"} {$vo|mac_url_create='class','vod','search'}<br> {/maccms:foreach}
2026年06月20日
23 阅读
0 评论
0 点赞
2026-06-01
m3u8视频下载器开发文档
M3U8 下载器 - 开发文档一、项目概述1.1 项目名称M3U8 Downloader(暂定名)1.2 项目简介基于 N_m3u8DL-RE 开源项目的桌面便携版 m3u8 视频下载工具,提供图形化界面,让用户无需命令行即可轻松下载 HLS 流媒体视频。1.3 技术栈类别技术选型说明编程语言Python 3.10+开发效率高,生态丰富GUI 框架PyQt5成熟的跨平台 GUI 框架,界面美观打包工具PyInstaller打包为独立可执行的便携版 exe核心依赖N_m3u8DL-RE开源 m3u8 下载引擎辅助工具FFmpeg视频处理、合并、转码1.4 项目结构m3u8down/ ├── N_m3u8DL-RE/ # N_m3u8DL-RE 核心文件(已存在) │ ├── N_m3u8DL-RE.exe # 主程序 │ ├── ffmpeg.exe # FFmpeg │ ├── ffplay.exe # FFplay │ ├── ffprobe.exe # FFprobe │ └── *.dll # FFmpeg 依赖库 ├── src/ # 源代码目录(待创建) │ ├── main.py # 程序入口 │ ├── ui/ # 界面相关 │ │ ├── main_window.py # 主窗口 │ │ ├── task_item.py # 任务列表项组件 │ │ ├── dialogs.py # 对话框(设置、新建任务等) │ │ └── resources.qrc # 资源文件 │ ├── core/ # 核心逻辑 │ │ ├── downloader.py # 下载引擎(调用 N_m3u8DL-RE) │ │ ├── task_manager.py # 任务管理器 │ │ ├── config.py # 配置管理 │ │ ├── database.py # 本地数据库操作 │ │ ├── file_manager.py # 文件管理(移动、清理) │ │ └── utils.py # 工具函数 │ └── assets/ # 静态资源 │ ├── icons/ # 图标 │ └── styles/ # 样式表 ├── tmp/ # 临时文件目录(运行时自动创建) ├── data/ # 数据目录 │ ├── downloads.db # SQLite 数据库(已完成任务) │ └── tasks.json # 运行中任务状态 ├── config/ # 配置目录 │ └── config.json # 用户配置 ├── build/ # 构建输出 ├── dist/ # 打包输出 ├── requirements.txt # Python 依赖 ├── build.spec # PyInstaller 配置 └── README.md # 项目说明二、功能设计2.1 核心功能2.1.0 首次启动 - 保存路径设置启动软件后,首先弹出路径选择对话框用户通过下拉菜单选择可用盘符(自动检测系统所有可用盘符)程序自动在所选盘符下创建 hc 文件夹(如 D:\hc\)如果 hc 文件夹已存在则直接使用保存路径配置后,后续启动不再弹出(可在设置中修改)临时文件统一存储在软件根目录的 tmp 文件夹首次启动对话框示例:┌──────────────────────────────────────────────┐ │ 欢迎使用 M3U8 下载器 [×] │ ├──────────────────────────────────────────────┤ │ │ │ 请选择下载文件的保存位置: │ │ │ │ 保存盘符: [D:\ ▼] │ │ │ │ 保存路径: D:\hc\ │ │ 临时目录: <软件根目录>\tmp\ │ │ │ │ ☑ 以后不再提示(可在设置中修改) │ │ │ │ [退出] [确定] │ └──────────────────────────────────────────────┘2.1.1 新建下载任务输入 m3u8 URL 或本地 m3u8 文件路径任务去重机制:通过 URL 哈希值判断是否已存在相同任务若已存在,弹出提示:"该链接已存在于下载列表中"在界面右下角显示轻量提醒通知(3 秒后自动消失)解析 URL,显示可用的视频/音频/字幕轨道选择画质、音轨、字幕设置保存路径、文件名高级选项(线程数、重试次数、代理等)2.1.2 任务管理任务列表展示(类似迅雷/IDM 等下载工具)任务状态:等待中、下载中、已暂停、已完成、失败支持操作:开始、暂停、继续、删除、重试显示进度条、下载速度、已下载大小、剩余时间并发控制:系统默认最大 3 个任务同时下载,多余任务进入等待队列2.1.3 文件保存规则下载完成后,文件按照以下规则保存:<盘符>\hc\<下载链接的哈希值>\<下载完成的时秒分>.mp4示例:D:\hc\a1b2c3d4\143025.mp4链接哈希值:对下载 URL 进行哈希计算(如 MD5 前 8 位),确保唯一性时秒分命名:使用下载完成的时间(时+秒+分,6 位数字),避免重名下载完成后,将文件信息写入本地数据库下载完成后,自动清理临时目录中的对应文件夹和文件2.1.4 任务状态持久化正在下载的任务:实时写入运行目录的 tasks.json 文件程序意外关闭后,重启可恢复未完成的任务状态已完成的任务信息存储在本地数据库中2.1.4.1 异常恢复机制软件启动时执行以下操作:清理残留进程:检测并终止所有 N_m3u8DL-RE 相关进程清空临时目录:删除 tmp 文件夹内所有内容(避免残留损坏文件)读取任务状态:从 tasks.json 加载未完成的任务列表自动恢复下载:将加载的任务重新加入下载队列,按并发限制依次启动恢复的任务保持原有进度信息(实际进度需重新下载)2.1.5 本地数据库使用 SQLite 轻量级数据库存储已完成任务记录数据库文件位置:<软件根目录>\data\downloads.db存储字段:id: 任务唯一标识url: 下载链接url_hash: 链接哈希值file_path: 最终保存路径file_name: 文件名(时秒分.mp4)file_size: 文件大小download_time: 下载完成时间status: 状态(已完成)2.1.6 下载控制限速设置下载完成后操作(删除临时文件、混流等)2.1.4 设置中心通用设置:下载目录、临时目录、线程数网络设置:代理、请求头、超时时间下载设置:重试次数、并发数、限速高级设置:解密 Key、自定义参数2.2 界面布局┌─────────────────────────────────────────────────────────────┐ │ 菜单栏 [文件] [任务] [工具] [帮助] │ ├─────────────────────────────────────────────────────────────┤ │ 工具栏 [新建] [开始] [暂停] [删除] [设置] │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 任务列表 │ │ │ │ ┌───┬──────────┬────────┬────────┬──────┬────────┐ │ │ │ │ │ │ 文件名 │ 大小 │ 进度 │ 速度 │ 状态 │ │ │ │ │ ├───┼──────────┼────────┼────────┼──────┼────────┤ │ │ │ │ │▓▓ │ video.mp4 │ 100MB │ ████░░ │ 5MB/s│ 下载中 │ │ │ │ │ │▓▓ │ audio.mp3 │ 50MB │ ██████ │ 3MB/s│ 下载中 │ │ │ │ │ │ │ doc.pdf │ 10MB │ ░░░░░░ │ 0 │ 等待中 │ │ │ │ │ └───┴──────────┴────────┴────────┴──────┴────────┘ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ ┌───────────┐ │ │ │ 提醒通知框 │ │ │ │ 链接已存在 │ │ │ └───────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 状态栏 任务数: 3 | 下载中: 2 | 总速度: 8MB/s | 磁盘剩余: XX │ └─────────────────────────────────────────────────────────────┘2.3 新建任务对话框┌──────────────────────────────────────────────┐ │ 新建下载任务 [×] │ ├──────────────────────────────────────────────┤ │ URL/文件路径: │ │ ┌──────────────────────────────────────┐ │ │ │ https://example.com/video.m3u8 │ │ │ └──────────────────────────────────────┘ │ │ │ │ 保存目录: [C:\Downloads\] [浏览...] │ │ 文件名: [video] │ │ │ │ ─── 轨道选择 ─── │ │ 视频: [1080p ▼] 音频: [中文 ▼] 字幕: [无 ▼]│ │ │ │ ─── 高级选项 ─── │ │ ☑ 下载完成后合并 │ │ 线程数: [8] 重试次数: [3] │ │ 代理: [无 ▼] │ │ │ │ [取消] [确定] │ └──────────────────────────────────────────────┘三、技术实现3.1 N_m3u8DL-RE 调用方式通过子进程调用 N_m3u8DL-RE.exe,解析其命令行输出获取进度信息。核心命令构建示例:# 基础命令 cmd = [ "N_m3u8DL-RE.exe", m3u8_url, "--save-dir", save_dir, "--save-name", file_name, "--thread-count", str(thread_count), "--download-retry-count", str(retry_count), ] # 可选参数 if proxy: cmd.extend(["--custom-proxy", proxy]) if headers: for h in headers: cmd.extend(["-H", h]) if select_video: cmd.extend(["-sv", select_video])进度解析:N_m3u8DL-RE 输出格式示例:Parsing URL: https://example.com/video.m3u8 Found 3 video tracks, 2 audio tracks, 1 subtitle track Downloading: 45.2% (125/277) Speed: 5.2MB/s ETA: 00:02:30通过正则表达式解析进度、速度、ETA 等信息。3.2 任务管理器设计class TaskStatus(Enum): WAITING = "waiting" DOWNLOADING = "downloading" PAUSED = "paused" COMPLETED = "completed" FAILED = "failed" class DownloadTask: id: str # 任务唯一标识 url: str # 下载链接 save_dir: str # 保存目录 save_name: str # 文件名 status: TaskStatus # 状态 progress: float # 进度 0-100 speed: str # 速度 eta: str # 剩余时间 total_size: str # 总大小 downloaded_size: str # 已下载大小 process: subprocess.Popen # 子进程对象 options: dict # 下载选项3.3 配置管理使用 JSON 文件存储用户配置:{ "first_run": false, "save_dir": "D:\\hc", "tmp_dir": "<软件根目录>\\tmp", "thread_count": 8, "retry_count": 3, "timeout": 100, "proxy": "", "headers": [], "max_concurrent": 3, "speed_limit": "", "auto_merge": true, "delete_temp": true, "language": "zh-CN" }配置说明:first_run: 是否首次运行(true=弹出路径选择,false=直接进入主界面)save_dir: 下载保存目录(自动设置为 盘符:\hc)tmp_dir: 临时文件目录(固定为 <软件根目录>\tmp)max_concurrent: 最大并发下载数(默认 3)3.4 本地数据库设计使用 SQLite 存储已完成任务记录:CREATE TABLE IF NOT EXISTS downloads ( id TEXT PRIMARY KEY, -- 任务唯一标识(UUID) url TEXT NOT NULL, -- 下载链接 url_hash TEXT NOT NULL, -- URL 的 MD5 哈希值(前 8 位) file_path TEXT NOT NULL, -- 最终保存路径 file_name TEXT NOT NULL, -- 文件名(时秒分.mp4) file_size INTEGER, -- 文件大小(字节) download_time TEXT NOT NULL, -- 下载完成时间(ISO 格式) status TEXT DEFAULT 'completed' -- 状态 ); CREATE INDEX IF NOT EXISTS idx_url_hash ON downloads(url_hash); CREATE INDEX IF NOT EXISTS idx_download_time ON downloads(download_time);3.5 运行中任务状态(tasks.json){ "tasks": [ { "id": "uuid-xxx", "url": "https://example.com/video.m3u8", "url_hash": "a1b2c3d4", "save_name": "video", "status": "downloading", "progress": 45.2, "speed": "5.2MB/s", "eta": "00:02:30", "start_time": "2026-06-01T14:30:00", "tmp_dir": "<软件根目录>\\tmp\\a1b2c3d4" } ] }3.6 文件保存流程1. N_m3u8DL-RE 下载完成 → 临时文件在 <tmp>\<url_hash>\ 目录 2. 计算下载完成时间 → 格式化为 HHmmss(时秒分) 3. 创建目标目录 → <save_dir>\<url_hash>\ 4. 移动文件 → <save_dir>\<url_hash>\<HHmmss>.mp4 5. 写入数据库 → 记录任务信息 6. 清理临时目录 → 删除 <tmp>\<url_hash>\ 及其内容 7. 更新 tasks.json → 移除已完成任务3.7 程序启动流程1. 程序启动 ↓ 2. 加载配置文件 (config.json) ↓ 3. 判断是否首次运行 (first_run == true) ├─ 是 → 弹出 FirstRunDialog → 用户选择盘符 → 创建 hc 文件夹 → 保存配置 └─ 否 → 继续 ↓ 4. 清理残留 N_m3u8DL-RE 进程 ↓ 5. 清空 tmp 文件夹 ↓ 6. 初始化数据库 (downloads.db) ↓ 7. 读取 tasks.json 加载未完成的任务 ↓ 8. 将加载的任务加入下载队列 ↓ 9. 启动主窗口,显示任务列表 ↓ 10. 按并发限制(默认 3)依次启动下载任务3.8 异常恢复流程1. 检测到 tasks.json 存在未完成的任务 ↓ 2. 遍历任务列表,过滤状态为 downloading/paused/waiting 的任务 ↓ 3. 重置任务状态为 waiting ↓ 4. 将任务加入 TaskManager 的等待队列 ↓ 5. TaskManager.check_queue() 自动调度,按并发限制启动任务3.9 关键类设计MainWindow (主窗口) ├── TaskListWidget (任务列表) │ └── TaskItemWidget (单个任务项) ├── Toolbar (工具栏) ├── StatusBar (状态栏) ├── NotificationWidget (右下角提醒通知) └── MenuBar (菜单栏) Dialogs ├── FirstRunDialog (首次运行路径选择) ├── NewTaskDialog (新建任务) ├── SettingsDialog (设置) ├── TaskDetailDialog (任务详情) └── SelectTrackDialog (轨道选择) Core ├── DownloadEngine (下载引擎) │ ├── start_task() │ ├── pause_task() │ ├── resume_task() │ ├── cancel_task() │ └── parse_output() ├── TaskManager (任务管理器) │ ├── add_task() │ ├── remove_task() │ ├── get_tasks() │ ├── get_active_count() │ ├── check_queue() # 检查等待队列,自动启动新任务 │ ├── save_running_tasks() # 保存运行中任务到 tasks.json │ └── is_duplicate_url() # 检查 URL 是否已存在 ├── ConfigManager (配置管理) │ ├── load_config() │ ├── save_config() │ └── get/set 各项配置 ├── DatabaseManager (数据库管理) │ ├── init_database() # 初始化数据库和表 │ ├── add_record() # 添加已完成任务记录 │ ├── query_by_hash() # 按哈希值查询 │ └── get_all_records() # 获取所有记录 ├── FileManager (文件管理) │ ├── generate_url_hash() # 生成 URL 哈希值 │ ├── generate_filename() # 生成时秒分文件名 │ ├── move_to_final_path() # 移动文件到最终保存路径 │ ├── cleanup_temp() # 清理临时目录 │ └── ensure_dirs() # 确保所需目录存在 └── ProcessManager (进程管理) ├── kill_n_m3u8dl_processes() # 清理所有 N_m3u8DL-RE 进程 └── is_process_running() # 检查进程是否运行四、开发计划阶段一:基础框架搭建[ ] 创建项目结构[ ] 搭建 PyQt5 主窗口框架[ ] 实现基础菜单栏、工具栏、状态栏[ ] 实现配置管理模块阶段二:核心功能开发[ ] 实现 N_m3u8DL-RE 调用封装[ ] 实现进度解析[ ] 实现任务管理器[ ] 实现新建任务对话框阶段三:界面完善[ ] 实现任务列表组件[ ] 实现任务操作(开始/暂停/删除)[ ] 实现设置对话框[ ] 添加样式美化阶段四:高级功能[ ] 轨道选择功能[ ] 限速功能[ ] 代理设置[ ] 批量下载阶段五:测试与打包[ ] 功能测试[ ] 边界情况处理[ ] PyInstaller 打包[ ] 便携版测试五、注意事项5.1 便携版要求所有文件相对于程序目录配置存储在程序目录下的 config 文件夹无需写入注册表或系统目录可直接拷贝整个文件夹到其他电脑使用5.2 N_m3u8DL-RE 集成N_m3u8DL-RE.exe 放在程序目录下的 N_m3u8DL-RE 文件夹通过相对路径调用打包时需确保 N_m3u8DL-RE 相关文件被包含5.3 跨平台考虑当前仅支持 Windows(因 N_m3u8DL-RE 为 Windows 版本)路径处理使用 os.path 或 pathlib命令行参数注意 Windows 转义5.4 错误处理网络异常处理N_m3u8DL-RE 进程异常捕获磁盘空间不足检测文件权限问题处理六、依赖清单Python 依赖PyQt5>=5.15.0 requests>=2.28.0外部依赖(已提供)N_m3u8DL-RE.exeffmpeg.exe / ffplay.exe / ffprobe.exe相关 DLL 文件七、参考资源N_m3u8DL-RE GitHub: https://github.com/nilaoda/N_m3u8DL-REPyQt5 文档: https://www.riverbankcomputing.com/static/Docs/PyQt5/PyInstaller 文档: https://pyinstaller.org/
2026年06月01日
47 阅读
0 评论
0 点赞
2026-05-09
主板信息修改器 v2026.0501来自队长开发
如果您的电脑,因为开挂等操作,导致游戏封禁主板,可以通过这款工具一键永久修改您的主板信息。软件特色1、兼容 American Megatrends Inc 底层所有主板。2、兼容 Win7/8/10/11/Windows Server 全部操作系统。3、支持完整的主板信息备份恢复功能。4、支持主板全部信息的自定义修改。(详情查看进阶技巧2)更新说明2026年5月1日添加非AMI主板的检测(本软件不支持非AMI主板)添加路径检测,防止备份/恢复失败(信息备份和恢复路径中不能包含空格)添加重启提示(部分主板修改信息后需要重启电脑才可以生效)进阶技巧1、如何备份恢复主板信息?2、如何修改软件内没有包含的信息?第一步:使用软件备份信息。第二步:用记事本打开备份后的文件,并修改你要修改的内容。(修改后记得保存)第三步:使用软件恢复信息功能,选择你修改后的DMS文件。附送DMS各字段中文说明,方便大家DIY主板信息:BIOS # BIOS 信息├─ Name # BIOS 厂商名称与供应商信息├─ Version # BIOS 固件版本号(对应软件内的BIOS版本)└─ Date # BIOS 发布日期(格式:MM/DD/YYYY)(对应软件内的BIOS日期)System # 系统整体信息├─ Manufacturer # 系统整机制造商名称(对应软件内的系统品牌)├─ Product # 系统产品型号标识(对应软件内的系统型号)├─ Version # 系统版本号(通常为厂商定义)├─ SerialNum # 系统出厂唯一序列号├─ UUID # 系统全局唯一标识符(对应软件的UUID)├─ SKUNum # 系统库存单位编号(SKU)└─ Family # 系统所属产品家族系列BaseBoard # 主板信息├─ Manufacturer # 主板硬件制造商名称(对应软件内的主板品牌)├─ Product # 主板产品型号(对应软件内的主板型号)├─ Version # 主板硬件版本号├─ SerialNum # 主板序列号(对应软件内的序列号)├─ AssetTag # 主板资产标签(企业资产管理用)└─ LocInChassis # 主板在机箱内的物理位置描述BaseBoardWithHandle # 带句柄的主板信息├─ Handle # SMBIOS 结构句柄(十六进制)├─ Manufacturer # 主板制造商名称(对应软件内的主板品牌)├─ Product # 主板产品型号(对应软件内的主板型号)├─ Version # 主板版本号├─ SerialNum # 主板序列号(对应软件内的序列号)├─ AssetTag # 主板资产标签└─ LocInChassis # 主板在机箱内的位置Chassis # 机箱信息├─ Manufacturer # 机箱制造商名称├─ ChassisType # 机箱类型代码(03 代表台式机)├─ Version # 机箱版本号├─ SerialNum # 机箱序列号├─ TagNum # 机箱资产标签号├─ ChassisOEM # OEM 厂商保留字段(通常为 0)├─ ChassisHeight # 机箱高度(单位 U,00 表示未知)├─ PowerCords # 机箱所配电源线数量└─ ChassisSKU # 机箱 SKU 编号ChassisWithHandle # 带句柄的机箱信息├─ Handle # SMBIOS 结构句柄├─ Manufacturer # 机箱制造商名称├─ ChassisType # 机箱类型代码├─ Version # 机箱版本号├─ SerialNum # 机箱序列号├─ TagNum # 机箱资产标签号├─ ChassisOEM # OEM 保留字段├─ ChassisHeight # 机箱高度(U)├─ PowerCords # 电源线数量└─ ChassisSKU # 机箱 SKU 编号Processor # CPU信息├─ SerialNum # CPU序列号(现代 CPU 通常为 Unknown)├─ AssetTag # CPU资产标签(厂商预留)└─ PartNum # CPU部件号(通常不可用)ProcessorWithHandle # 带句柄的CPU信息├─ Handle # SMBIOS 结构句柄├─ SerialNum # CPU序列号├─ AssetTag # CPU资产标签└─ PartNum # CPU部件号OemString # OEM字符串└─ String # OEM厂商自定义字符串(默认均为 Default string)Configuration # 配置信息└─ String # 系统配置字符串(预留字段,通常为 Default string)注意事项:下载地址:文件名称: 主板信息修改器 v2026.0501.exe文件大小: 0.99 MB (1,044,480 字节)修改时间: 2026年05月01日,20:40:18MD5: F49526547F45DC3E27F23B4B9B7C0C9FSHA1: 51A89F83DC196B05B175E1A99632F54954583061https://url67.ctfile.com/d/8911067-163421932-cde7f3?p=3328
2026年05月09日
126 阅读
0 评论
0 点赞
2026-05-08
海康威视轻量化客户端v4.4
自写一款面向 海康威视 设备的轻量级客户端,专门针对官方软件臃肿、卡顿、占资源高的问题进行优化,仅保留最核心的实时预览与录像回放功能,界面极简清爽,打开即用,无需复杂配置,新手也能快速上手。性能表现:程序体积小、运行流畅,在老电脑、核显设备或远程桌面环境下依然稳定运行,对系统资源占用极低,相比官方客户端明显更顺滑。功能定位:仅专注“看监控”这一件事:实时视频预览历史录像回放去掉所有复杂功能,避免干扰操作体验。使用体验:无广告、无更新弹窗、无后台进程干扰,界面干净直观,适合长期挂机使用,不影响系统性能。适用场景适用于家庭监控查看、工厂值守、设备调试等场景,是一款实用且高效的替代工具,特别适合对“流畅和简单”有要求的用户。在想要回放的视频窗口右键就是回放、在想要回放的视频窗口右键就是回放、在想要回放的视频窗口右键就是回放网盘分享:{cloud title="v4.4去标题版本" type="ct" url="https://url67.ctfile.com/d/8911067-163383214-3aea9f?p=3328" password=""/}
2026年05月08日
124 阅读
0 评论
0 点赞
2026-04-28
网吧小活动文字版3.0
1.30天未到店顾客发送会员召回送充赠或免费上网时长券2.抖音、快手发网吧视频送网费3.调研用户喜好送网费或小吃4.撸猫专区5.周围1公里小区贴宣传单进专属微信群,多送网费体验券6.带宠物到店免费提供宠物笼+水+粮+零食7.每日抽奖,到店抽奖100%中奖,最小一小时 最大通宵免费+餐饮套餐8.每日盲盒,提前装好盲盒礼品,抽中盲盒吧台送盲盒过来顾客打开9.顾客向网吧提供优化建议送礼品,直送5小时上网时长+免费饮品10.首次进店配合调研,给顾客贴标签,奖励10元网费,后续针对顾客提供良好服务(大吧掌功能)11.通宵结束送早餐12.黄金档专属会员日13.故障补偿,断网、系统故障、黑屏、蓝屏、死机等送2小时上网体验券14.包天上网送餐食饮品礼包15.通宵套餐,泡面+火腿+功能饮料+槟榔等,比单买便宜10元或更多16.白银档专属鼠标垫 17.积分兑换各种商品(大吧掌功能)18.预约叫醒服务19.失物招领,免费快递到家20.返乡青年,凭机票火车票到店送3小时免费上网券21.钻石档冰可乐免费续杯22.里程碑,上网100小时\300小时\ 500小时\1000小时\1500小时等有不同的福利发放23.自制饮品、自制小吃、自制餐食编辑满赠活动(大吧掌功能)24.会员生日周,一周内每天可领1小时免费上网券25.30天不缺勤挑战,达成后送福利26.回忆录,顾客分享自己与网吧的故事,一经采纳送100元网费,故事张贴在墙面27.早起打卡活动,8点前到店送早餐28.游戏代练服务,可与某团队签署专属价格29.上网5小时免费提醒并送活力套餐30.热点活动,世界杯 奥运会 电竞比赛等专属福利发放
2026年04月28日
137 阅读
0 评论
0 点赞
2026-04-28
网吧小活动文字版2.0
1.新客首次进店,29.9元一天2.Cosplay主题日,每月举办一次,cosplay游戏角色到店,全天免费上网并送餐饮套餐3.老带新送3小时免费时长4.夜间12点以后到店送免费泡面套餐5.出租车\外卖员,休息区 免费充电+热水6.生日当天送小蛋糕和礼品(价值在50元内)主力推送充赠券周 会员充100送2张1小时(送的转天可用,有效期3天)7.节日礼包,黄金档会员可领8.凌晨2点后通宵半价9.淡季工作日上午和通宵半价10.特定日期的某个时间段把链接发到微信群里抢折扣券(大吧掌功能)11.通宵免费热饮或食品12.里程碑,上网满2000小时终身9折13.每日限时抢购1元秒杀1小时(指定区域或指定时间使用)14.自制饮品第二杯半价(大吧掌功能)15.自制饮品、自制小吃、自制餐食编辑满减活动(大吧掌功能)16.黄金档会员免费租赁无线充电器(大吧掌功能)17.黄金档会员免费使用洗衣间、洗澡间等18.黄金档会员专属外设、专属杯子(大吧掌功能)19.黄金档会员外设免费深度清洁(大吧掌功能)20.打车报销(10元网费)21.朋友圈积攒(30赞起步按赞的数量加网费)22.黄金档会员免费订座时长延长23.游戏活动24.免费打印、复印(20张以内)25.跨年度 跨季度 跨月,免费礼品、赠送、秒杀券等26.军火库外设体验日免费使用27.军火库外设爆款限定人群使用28.签到3天送1小时29.充值满*打折几天30.砸金蛋
2026年04月28日
94 阅读
0 评论
0 点赞
2026-04-28
网吧小活动文字版1.0
1.全城寻人,今天生日的人来我网吧上网免费2.带女同学来上网,我请你喝奶茶3.学生党福利,凭学生证 某时段半价4.组队开黑,五人成行 一人免单5.高考结束了,来我这免费领上网券6.附近上班族,午休新去处,一小时套餐(含午餐和饮品)7.情侣上网,送两杯饮料8.转发视频,到店免费两小时9.店里新到一批**外设,免费体验一周10.假期来了,学生包月套餐上线11.开学季活动,新生来上网 送网费12.新人一元三小时13.凭学生证,在某个时段减多少钱,或给什么(饮品或小吃之类的)14.情侣进店,女生免费(吧台亲一下并留影)情人节七夕等15.周边店铺员工(小区业主或公寓租客等)八折上网(单出会员等级限制时间段)推荐卖权益卡16.雨天半价(恶劣天气打折或补券)17.下雪送冷饮(高温送冰镇酸梅汤)18.产业联动有哪些优惠,例如女仆店、桌游店、密室逃脱、棋牌、台球、KTV、小酒馆(小酒吧)、驾校19.充100送100,,充300送300送饮料一箱,,充1000送1000送饮品若干送外设套餐20.首次充值200元,免费畅玩12小时21.充值摇奖,(大吧掌转盘抽奖)奖品有外设券、网费、饮料等22.签到7-14-21-28天有不同的券赠送(大吧掌功能)23.春节留守套餐(除夕夜送饺子,通宵3折等)24.情人节双人包间送玫瑰送巧克力,限情侣25.光棍节,单人上网送饮料一杯26.圣诞夜,装扮圣诞老人送苹果 送网费券27.跨年倒计时,送网费(充赠券),送饮料等28.国庆7天乐,一张卡畅玩7天(开通大吧掌包时段功能)不允许挂机29.元宵节,送网费(充赠券)送饮料 送汤圆30.护士节/教师节,凭证免费上网一天,提供情绪价值31.生日礼,生日当天免费上网,送小蛋糕,增加顾客记忆锚点 提供情绪价值32.会员聚会,每季度一次老板组织吃饭+洗浴+搓澡33.会员纪念日, 满一年送纪念礼品(每周礼品不同,提前准备),增加记忆锚点34.小红书种草,,发图文定位,送下午茶套餐,吸引女性玩家35.网吧群偶尔发发小红包,手机最佳送100元网费36.结拜兄弟,不要管真假,5人结拜送网费,增加顾客粘性
2026年04月28日
99 阅读
0 评论
0 点赞
2026-04-19
磐熠交换机上云教程
磐熠交换机上云教程1 登陆交换机1.1 登录使用web管理设备,设备管理口默认地址192.168.1.1(电脑网线直接连接交换机ETH口),vlanif默认地址192.168.100.100(电脑线直接连接交换机任意一个口),账号:admin,密码:admin2 设置IP2.1 设置VLAN1接口静态地址我们使用vlan1上互联网。需要对vlan1设置一个和客户机同网段的IP,如需要以下信息:交换机vlan1地址 192.168.0.155掩码 255.255.255.0网关 192.168.0.254DNS服务器 8.8.8.8设置步骤:点击【配置】,选择【VLAN】,在【VLANIF接口】中,选中Vlanif1,点击编辑,在打开页面中,选择IP分配类型为【静态】,可以设置vlan1接口的静态地址“点应用后 页面就打不开了 需要用设置的新ip 登陆 ,再点右上角的保存配置”3 确认交换机通网3.1 ping外网点击右上角的网络 选择“ping” ,在 VRF ID 选择 “default vrf ” , 目标ip地址 输入 8.8.8.8 点击ping 按钮如果出现下面的显示 说明 交换机已经可以上网了4 开启云服务4.1 应用镜像登录交换机WEB页面。点击“维护”菜单。点击“云维管理”进入云维配置页面。点击“启用”按钮。点击“云维连接模式”下拉框,选择设备连接云维平台的模式:Service port点击“应用”按钮,开启交换机的云管理功能点击“应用”按钮后,等待1分钟后刷新WEB页面。再次进入“云维管理页面”,可以看到设备的“云维绑定码”,表示设备已经成功连接到云维平台。5 后台绑定5.1 新建项目打开云管理平台:http://net.panyi.vip 输入代理商账号 密码点击“工作台”展开菜单。点击“我的项目”,进入项目管理页面。点击“新增”按钮,进入新增项目页面在“新增项目”页面,输入“项目”名称;选择“项目状态”;输入“地址”;点击“确认”按钮,创建网吧项目。7.2 绑定设备进入“我的项目”页面。点击“我的网吧”,进入“项目管理”页面。在“项目管理”页面,点击“设备绑定”按钮,进入绑定设备页面。输入交换机WEB页面的“云维绑定码”。点击“绑定”按钮。7.3 远程查看交换机网页出现提示“绑定成功”后,刷新网页“项目管理”页面出现已绑定的交换机图示,表示这台交换机已经成功绑定到这个网吧项目。 点击进去 就可以管理这个交换机了
2026年04月19日
108 阅读
0 评论
0 点赞
2026-04-07
如何在linux下让Docker调用N卡
最新使用Docker跑大模型,发现无法调用显卡,翻阅资料才知道要,安装 NVIDIA Container Toolkit下面的步骤:1. 添加 NVIDIA 源与 GPG 密钥 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \ | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \ | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \ | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list 2. 安装 sudo apt update sudo apt install -y nvidia-container-toolkit 3. 配置 Docker 运行时并重启 sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker 4.Docker Compose 使用 GPU(v2.19+)docker-compose.yml 示例:version: '3.8' services: my-gpu-app: image: nvidia/cuda:12.3.1-base-ubuntu22.04 runtime: nvidia deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu, compute, utility] command: nvidia-smi
2026年04月07日
77 阅读
0 评论
0 点赞
2026-04-06
优化ACE系统占用
分享一个可以优化ACE反作弊占用的程序,可以降低ACE程序对系统资源的占用尤其是CPU和磁盘。使用方法也很简单,把这个程序设置通过开机启动。教程:设置服务端下发,指定此程序,运行参数填写 ACE-Tray.exe,可以做个延迟,这个程序要比ACE程序后启动。网盘分享:https://url67.ctfile.com/d/8911067-162327153-516bbb?p=3328
2026年04月06日
193 阅读
0 评论
0 点赞
2026-03-30
苹果CMS 致命错误: Undefined constant "MAC_TYPE_ID" 解决方法
最近使用苹果CMS在网上搜的一些模板,使用后发现会出现 致命错误: Undefined constant "MAC_TYPE_ID" 的提示,如下图:在网上搜索都没有结果,只好自己解决。打开调试模式好在以前研究过"thinkphp"框架,先打开调试模式 ,配置文件在 "/application/config.php",如下图:报错原因:废弃的标签打开调试模式后,重新访问如下图:看样子是'MAC_TYPE_ID'和'MACTYPE PID'被废弃了,需要修改为新的,在目录查找标签文档寻找替换标签在说明文档里有个标签说明,找到这么一段:解决方法:从名称上来说,已经对上了,用 $GLOBALS['type_id'] 替换 MAC_TYPE_ID ,用 $GLOBALS['type_pid'] 替换MAC_TYPE_PID经过测试,也验证了我们所想,把模板里调用了这 2 个标签的 html文件全部替换即可。
2026年03月30日
89 阅读
0 评论
0 点赞
2026-03-27
虚拟机安装原版ISO跳过TPM2.0检测方法
修改注册表绕过硬件检测(推荐)在安装界面按 Shift + F10 打开命令提示符;输入 regedit 打开注册表编辑器;定位到路径:HKEY_LOCAL_MACHINE\SYSTEM\Setup;新建项LabConfig,并在其下创建以下5个DWORD值:BypassTPMCheck = 1(绕过TPM 2.0检测) BypassSecureBootCheck = 1(绕过安全启动检测) BypassRAMCheck = 1(绕过内存检测) BypassStorageCheck = 1(绕过存储空间检测) BypassCPUCheck = 1(绕过处理器检测)保存后关闭注册表,继续安装即可。
2026年03月27日
129 阅读
0 评论
0 点赞
2026-02-26
磁动力鼠标驱动分享
最近客户更换一批鼠标,驱动不好找,找半天才找到 特记录一下方便以后下载分享包里目前包含:ZGM03-C 鼠标驱动ZGM03-PRO 鼠标驱动磁动力鼠标驱动分享:https://url67.ctfile.com/d/8911067-160969804-eca914?p=3328
2026年02月26日
321 阅读
0 评论
0 点赞
1
2
...
18