code:
if (typeof Object.assign != 'function') {
    Object.assign = function () {
	var target = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i];
        for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
                target[key] = source[key];
            }
        }
    }
    return target;
};
}
function getMubans() {
    var mubanDict = { // 模板字典
        mxpro: {
            title: '',
            host: '',
            // homeUrl:'/',
            url: '/vodshow/fyclass--------fypage---.html',
            searchUrl: '/vodsearch/**----------fypage---.html',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
            headers: {//网站的请求头,完整支持所有的,常带ua和cookies
                'User-Agent': 'MOBILE_UA',
                // "Cookie": "searchneed=ok"
            },
            class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
            play_parse: true,
            lazy: '',
            limit: 6,
            推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
            double: true, // 推荐内容是否双层定位
            一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
            二级: {
                "title": "h1&&Text;.module-info-tag&&Text",
                "img": ".lazyload&&data-original",
                "desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
                "content": ".module-info-introduction&&Text",
                "tabs": ".module-tab-item",
                "lists": ".module-play-list:eq(#id) a"
            },
            搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
        },
        mxone5: {
            title: '',
            host: '',
            url: '/show/fyclass--------fypage---.html',
            searchUrl: '/search/**----------fypage---.html',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
            class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
            play_parse: true,
            lazy: '',
            limit: 6,
            推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
            double: true, // 推荐内容是否双层定位
            一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
            二级: {
                "title": "h1&&Text;.tag-link&&Text",
                "img": ".module-item-pic&&img&&data-src",
                "desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
                "content": ".vod_content&&Text",
                "tabs": ".module-tab-item",
                "lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
            },
            搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
        },
        首图: {
            title: '',
            host: '',
            url: '/vodshow/fyclass--------fypage---/',
            searchUrl: '/vodsearch/**----------fypage---.html',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
            headers: {//网站的请求头,完整支持所有的,常带ua和cookies
                'User-Agent': 'MOBILE_UA',
                // "Cookie": "searchneed=ok"
            },
            class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
            play_parse: true,
            lazy: '',
            limit: 6,
            推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
            double: true, // 推荐内容是否双层定位
            一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
            二级: {
                "title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
                "img": ".myui-content__thumb .lazyload&&data-original",
                "desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
                "content": ".content&&Text",
                "tabs": ".nav-tabs:eq(0) li",
                "lists": ".myui-content__list:eq(#id) li"
            },
            搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
        },
        首图2: {
            title: '',
            host: '',
            url: '/list/fyclass-fypage.html',
            searchUrl: '/vodsearch/**----------fypage---.html',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
            headers: {
                'User-Agent': 'UC_UA',
                // "Cookie": ""
            },
            // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
            class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
            play_parse: true,
            lazy: '',
            limit: 6,
            推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
            double: true, // 推荐内容是否双层定位
            一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
            二级: {
                "title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
                "img": ".stui-content__thumb .lazyload&&data-original",
                "desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
                "content": ".detail&&Text",
                "tabs": ".stui-vodlist__head h3",
                "lists": ".stui-content__playlist:eq(#id) li"
            },
            搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
            搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
            搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
        },
        默认: {
            title: '',
            host: '',
            url: '/vodshow/fyclass--------fypage---.html',
            searchUrl: '/vodsearch/-------------.html?wd=**',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
            headers: {
                'User-Agent': 'MOBILE_UA',
            },
            play_parse: true,
            lazy: '',
            limit: 6,
            double: true, // 推荐内容是否双层定位
        },
        vfed: {
            title: '',
            host: '',
            url: '/index.php/vod/show/id/fyclass/page/fypage.html',
            searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
            headers: {
                'User-Agent': 'UC_UA',
            },
            // class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
            class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
            play_parse: true,
            lazy: '',
            limit: 6,
            推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
            double: true, // 推荐内容是否双层定位
            一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
            二级: {
                "title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
                "img": ".fed-list-info&&a&&data-original",
                "desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
                "content": ".fed-part-esan&&Text",
                "tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
                "lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
            },
            搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
        },
        海螺3: {
            title: '',
            host: '',
            searchUrl: '/v_search/**----------fypage---.html',
            url: '/vod_____show/fyclass--------fypage---.html',
            headers: {
                'User-Agent': 'MOBILE_UA'
            },
            timeout: 5000,
            class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
            cate_exclude: '明星|专题|最新|排行',
            limit: 40,
            play_parse: true,
            lazy: '',
            推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
            double: true,
            一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
            二级: {
                "title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
                "img": ".hl-lazy&&data-original",
                "desc": ".hl-infos-content&&.hl-text-conch&&Text",
                "content": ".hl-content-text&&Text",
                "tabs": ".hl-tabs&&a",
                "lists": ".hl-plays-list:eq(#id)&&li"
            },
            搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
        },
        海螺2: {
            title: '',
            host: '',
            searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
            url: '/index.php/vod/show/id/fyclass/page/fypage/',
            headers: {
                'User-Agent': 'MOBILE_UA'
            },
            timeout: 5000,
            class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
            limit: 40,
            play_parse: true,
            lazy: '',
            推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
            double: true,
            一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
            二级: {
                "title": "h2&&Text;.deployment&&Text",
                "img": ".lazy&&data-original",
                "desc": ".deployment&&Text",
                "content": ".ec-show&&Text",
                "tabs": "#tag&&a",
                "lists": ".play_list_box:eq(#id)&&li"
            },
            搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
        },
        短视: {
            title: '',
            host: '',
            // homeUrl:'/',
            url: '/channel/fyclass-fypage.html',
            searchUrl: '/search.html?wd=**',
            searchable: 2,//是否启用全局搜索,
            quickSearch: 0,//是否启用快速搜索,
            filterable: 0,//是否启用分类筛选,
            headers: {//网站的请求头,完整支持所有的,常带ua和cookies
                'User-Agent': 'MOBILE_UA',
                // "Cookie": "searchneed=ok"
            },
            class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
            cate_exclude: '解析|动态',
            play_parse: true,
            lazy: '',
            limit: 6,
            推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
            double: true, // 推荐内容是否双层定位
            一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
            二级: {
                "title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
                "img": ".img&&img&&data-src",
                "desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
                "content": ".zkjj_a&&Text",
                "tabs": ".py-tabs&&option",
                "lists": ".player:eq(#id) li"
            },
            搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
        },
        短视2:{
            title: '',
            host: '',
            class_name:'电影&电视剧&综艺&动漫',
            class_url:'1&2&3&4',
            searchUrl: '/index.php/ajax/suggest?mid=1&wd=**',
            searchable: 2,
            quickSearch: 0,
            headers:{'User-Agent':'MOBILE_UA'},
            url: '/index.php/api/vod#type=fyclass&page=fypage',
            filterable:0,//是否启用分类筛选,
            filter_url:'',
            filter: {},
            filter_def:{},
            detailUrl:'/index.php/vod/detail/id/fyid.html',
            推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
            一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
            二级:{
                "title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
                "img":".detail-pic&&data-original",
                "desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
                "content":"#height_limit&&Text",
                "tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
                "tab_text":".swiper-slide&&Text",
                "lists":".anthology-list-box:eq(#id) li"
            },
            搜索:'json:list;name;pic;;id',
        }
    };
    return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban,getMubans};

repo_name: mjx/moyutvbox

license: unknown


desc:
* [EXO]：EXO
* 优化解码选择：优化解码选择
* [共通]：通用
* 内置 so：内置 so
* 微调本地服务器页面：微调本地服务器页面
* 支持 video:// 嗅探播放：支持 video:// 嗅探播放
* 修复自定义壁纸异常*
[点播]：点播
* 新增定时器：新增定时器
* 修正嗅探问题：修正嗅探问题
* py 爬虫支持本地代理：py 爬虫支持本地代理
* py 爬虫支持分页 api：py 爬虫支持分页 api
* 开放刷新详细信息、播放、字幕、弹幕：开放刷新详细信息、播放、字幕、弹幕
* [直播]：直播
* 支持嗅探：支持嗅探
* 设置新增自启动开关：设置新增自启动开关
* 设置新增免密码开关：设置新增免密码开关
* 修正特殊文件名读取问题：修正特殊文件名读取问题
* 长按首页直播可新增快捷方式：长按首页直播可新增快捷方式


豆瓣

key: 豆瓣

配置中心

key: 配置中心

type: rect

应用商店

key: 应用商店

玩偶哥哥弹幕|4K

key: 玩偶弹幕版

玩偶表哥弹幕|4K

key: 玩偶表哥弹幕

哔哩哔哩

key: bili

type: 帕梅拉#太极拳#广场舞#健身#演唱会#电影#电视剧#动物世界#沙雕动画

荐片|弹幕

key: 荐片弹幕版

快手直播

key: 快手直播

聚合直播|JustLive

key: JustLive

独播

key: 独播

海外看

key: haiwaikan

星星

key: 星星

泥巴|弹幕

key: 泥巴弹幕版

短剧

key: 短剧

看球

key: 看球

type: list

虎牙┃直播

key: 虎牙直播js

有声┃小说

key: 有声小说js

暴風

key: 暴風

索尼

key: 索尼

快帆

key: 快帆

量子

key: 量子

纸条┃搜索

key: 纸条

盘Se┃搜索

key: 盘Se

找資源┃搜索

key: 找資源

七夜┃搜索

key: 七夜

盘搜┃搜索

key: 盘搜

易搜┃搜索

key: 易搜

Up云搜┃搜索

key: Up云搜

云盘4K┃搜索

key: 云盘4K

聚合1

url: Demo

聚合0

url: Web

ok

flag: qq 腾讯 qiyi 爱奇艺 奇艺 youku 优酷 tucheng sohu 搜狐 letv 乐视 mgtv 芒果 tnmb seven yzm aliyun RJuMao bilibili 1905 xinvip XAL qiqi XALS YuMi-vip

cl

regex:
最 新
直 播
更 新


code:
主jar moyu+日期
副jar my+功能


规则名: 阿里云盘网

搜索请求头参数: User-Agent$手机

搜索列表数组规则: .list&&li

搜索片单图片: img&&src

搜索片单标题: a&&title

搜索片单链接: a&&href

选集标题: a&&Text

选集链接: a&&href

手动嗅探视频链接过滤词: .html#=http


code:
//写法思路来自biubiu影院，海阔视界，xpath筛选。2022年9月22日
//项目魔改至github开源仓库https://github.com/Tangsan99999/TvJar中的XBiubiu.java文件，
//本文档为完整模板，实际情况可按规则写法删去不需要的。
{
    //规则名
    "title": "云盘分享",
    //作者
    "author": "聆听优美旋律",

    //搜索专属请求头UA,不填则默认okhttp/3.12.11，可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA
    //多个请求头参数写法示例，"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok",
    //习惯查看手机源码写建议用手机版UA，习惯查看PC版源码写建议用电脑版UA
    "SUserAgent":"PC_UA",
    //搜索链接，搜索关键字用{wd}表示，post请求的最后面加;post
    //POST链接示例 http://www.lezhutv.com/index.php?m=vod-search;post
    "search_url": "https://www.yunpanfenxiang.cn/api/bbs/api/getdata2?key={wd}",
    //POST搜索body，填写搜索关键字的键值，一般常见的是searchword和wd，不是POST搜索的可留空或删除。
    "sea_PtBody":"",

    //搜索模式,0为json搜索，只支持列表在list数组里的，其它为网页截取。
    "search_mode": "1",

    //搜索是否二次截取
    "sea_YN_twice": "0",
    //搜索二次截取前
    "sea_twice_pre": "空",
    //搜索二次截取后
    "sea_twice_suf": "</ul>",

    //搜索数组前缀
    "sea_arr_pre": "page_",
    //搜索数组后缀
    "sea_arr_suf": "content",
    //搜索片单图片，截取前缀&&截取后缀
    "sea_pic": "https://inews.gtimg.com/newsapp_bt/0/13263837859/1000",
    //搜索片单标题，截取前缀&&截取后缀
    "sea_title": "title\":\"&&\"",
    //搜索片单链接，截取前缀&&截取后缀
    "sea_url": "url\":\"&&\"",
    //搜索副标题，截取前缀&&截取后缀
    "sea_subtitle": "",

    //搜索片单链接补前缀
    "search_prefix": "",
    //搜索片单链接补后缀，这个一般json搜索的需要
    "search_suffix": ""

}


搜索片单标题: a[data-type=ali]&&data-title

播放列表数组规则: html&&head


搜索请求头参数: 手机

搜索列表数组规则: #flarum-content&&li

搜索片单标题: a&&Text

播放列表数组规则: body&&#flarum-content


code:
{
    "规则名": "云盘论坛",
    "规则作者": "",
    "请求头参数": "User-Agent$Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1#Cookie$bbs_sid=5npbqdo036fgd362kq4rl34j22$bbs_token=zzASNHG9Tr95D26kdNWnrx4Ig78W68SQS9dFwnQ2xPeQiQiq",
    "网页编码格式": "UTF-8",
    "图片是否需要代理": "0",
    "是否开启获取首页数据": "1",
    "首页推荐链接": " https://aliwp.cn/",
    "首页列表数组规则": "body&&.img",
    "首页片单列表数组规则": ".img",
    "首页片单是否Jsoup写法": "1",
    "分类起始页码": "1",
    "分类链接": "https://aliwp.cn/forum.php?mod=forumdisplay&fid={cateId}&page={catePg}&mobile=2",
    "分类名称": "影视电视&音乐&教程",
    "分类名称替换词": "37&47&45",
    "筛选数据": {},
    //"筛选数据": "ext",
    //{cateId}
    "筛选子分类名称": "",
    "筛选子分类替换词": "",
    //{class}
    "筛选类型名称": "",
    "筛选类型替换词": "*",
    //{area}
    "筛选地区名称": "",
    "筛选地区替换词": "*",
    //{year}
    "筛选年份名称": "",
    "筛选年份替换词": "*",
    //{lang}
    "筛选语言名称": "",
    "筛选语言替换词": "*",
    //{by}
    "筛选排序名称": "时间&人气&评分",
    "筛选排序替换词": "time&hits&score",
    "分类截取模式": "1",
    "分类列表数组规则": "body&&.threadlist&&ul&&li",
    "分类片单是否Jsoup写法": "1",
    "分类片单标题": "a,0&&Text",
    "分类片单链接": "a,0&&href",
    "分类片单图片": "https://inews.gtimg.com/newsapp_bt/0/13263837859/1000",
    "分类片单副标题": "",
    "分类片单链接加前缀": "https://aliwp.cn/",
    "分类片单链接加后缀": "",
    "搜索请求头参数": "User-Agent$Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
    "搜索链接": "https://aliwp.cn/search.php?mod=forum&mobile=2;post",
    "POST请求数据": "srchtxt={wd}&searchsubmit=yes",
    "搜索截取模式": "1",
    "搜索列表数组规则":  "body&&.threadlist&&ul&&li",
    "搜索片单是否Jsoup写法": "1",
    "搜索片单图片":  "https://inews.gtimg.com/newsapp_bt/0/13263837859/1000",
    "搜索片单标题":"a,0&&Text",
    "搜索片单链接":"a,0&&href",
    "搜索片单副标题": "",
    "搜索片单链接加前缀": "https://aliwp.cn/",
    "搜索片单链接加后缀": "",
    "链接是否直接播放": "0",
    "直接播放链接加前缀": "",
    "直接播放链接加后缀": "",
    "直接播放直链视频请求头": "",
    "详情是否Jsoup写法": "1",
    "类型详情": "",
    "年代详情": "",
    "地区详情": "",
    "演员详情": "",
    "简介详情": "",
    "线路列表数组规则": "",
    "线路标题": "",
    "播放列表数组规则": "body&&a[href^=https://www.aliyundrive.com/s/]",
    "选集列表数组规则": "a",
    "选集标题链接是否Jsoup写法": "1",
    "选集标题": "",
    "选集链接": "a&&href",
    "是否反转选集序列": "0",
    "选集链接加前缀": "",
    "选集链接加后缀": "",
    "分析MacPlayer": "0",
    "是否开启手动嗅探": "0",
    "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
    "手动嗅探视频链接过滤词": ".html#=http"
}


站名: 6v磁力

数组: post box row fixed-hight&&info_category info_ico

图片: img src="&&"

标题: title="&&"

副标题: VIP专享

影片类型: 类型：&&</li>

影片状态: 状态：&&</li>

导演: 导演：&&</li>

主演: 主演：&&</li>

线路标题: <a title='&&'


code:
{
    "规则名": "玩偶哥哥",
    "规则作者": "香雅情",
    "请求头参数": "MOBILE_UA",
    "网页编码格式": "UTF-8",
    "图片是否需要代理": "否",
    "是否开启获取首页数据": "是",
    "首页推荐链接": "http://wogg.xyz",
    "首页列表数组规则": "body&&.module-items",
    "首页片单列表数组规则": ".module-item:not(:matches(饭太硬|公众号))",
    "首页片单是否Jsoup写法": "1",
    "分类起始页码": "1",
    "分类链接": "http://wogg.xyz/index.php/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html",
    "分类名称": "一诺电影&一诺剧集&动漫&综艺&短剧&音乐",
    "分类名称替换词": "1&2&3&4&6&5",
    //"筛选数据": {},
    "筛选数据": "ext",
    //{cateId}
    "筛选子分类名称": "",
    "筛选子分类替换词": "*",
    //{class}
    "筛选类型名称": "喜剧&爱情&恐怖&动作&科幻&剧情&战争&警匪&犯罪&古装&奇幻&武侠&冒险&枪战&恐怖&悬疑&惊悚&经典&青春&文艺&微电影&历史||喜剧&爱情&恐怖&动作&科幻&剧情&战争&警匪&犯罪&古装&奇幻&武侠&冒险&枪战&恐怖&悬疑&惊悚&经典&青春&文艺&微电影&历史||情感&科幻&热血&推理&搞笑&冒险&萝莉&校园&动作&机战&运动&战争&少年&少女&社会&原创&亲子&益智&励志&其他||空||空||空",
    "筛选类型替换词": "喜剧&爱情&恐怖&动作&科幻&剧情&战争&警匪&犯罪&古装&奇幻&武侠&冒险&枪战&恐怖&悬疑&惊悚&经典&青春&文艺&微电影&历史||喜剧&爱情&恐怖&动作&科幻&剧情&战争&警匪&犯罪&古装&奇幻&武侠&冒险&枪战&恐怖&悬疑&惊悚&经典&青春&文艺&微电影&历史||情感&科幻&热血&推理&搞笑&冒险&萝莉&校园&动作&机战&运动&战争&少年&少女&社会&原创&亲子&益智&励志&其他||空||空||空",
    //{area}
    "筛选地区名称": "大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他||大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他||大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他||大陆&香港&台湾&美国&法国&英国&日本&韩国||空||空",
    "筛选地区替换词": "大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他||大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他||大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他||大陆&香港&台湾&美国&法国&英国&日本&韩国||空||空",
    //{year}
    "筛选年份名称": "",
    "筛选年份替换词": "*",
    //{lang}
    "筛选语言名称": "国语&英语&粤语&闽南语&韩语&日语&法语&德语&其它||国语&英语&粤语&闽南语&韩语&日语&法语&德语&其它||国语&英语&粤语&闽南语&韩语&日语&法语&德语&其它||空||空||空",
    "筛选语言替换词": "国语&英语&粤语&闽南语&韩语&日语&法语&德语&其它||国语&英语&粤语&闽南语&韩语&日语&法语&德语&其它||国语&英语&粤语&闽南语&韩语&日语&法语&德语&其它||空||空||空",
    //{by}
    "筛选排序名称": "时间&人气&评分",
    "筛选排序替换词": "time&hits&score",
    "分类截取模式": "1",
    "分类列表数组规则": ".module-items&&.module-item:not(:matches(饭太硬|公众号))",
    "分类片单是否Jsoup写法": "是",
    "分类片单标题": "a&&title",
    "分类片单链接": "a&&href",
    "分类片单图片": ".module-item-pic&&img&&data-src",
    "分类片单副标题": ".module-item-text&&Text",
    "分类片单链接加前缀": "http://wogg.xyz",
    "分类片单链接加后缀": "",
    "搜索请求头参数": "User-Agent$MOBILE_UA",
    "搜索链接": "http://wogg.xyz/index.php/vodsearch/{wd}----------{SearchPg}---.html",
    "POST请求数据": "",
    "搜索截取模式": "1",
    "搜索列表数组规则": ".module-items&&.module-search-item",
    "搜索片单是否Jsoup写法": "是",
    "搜索片单图片": ".lazyload&&data-src",
    "搜索片单标题": "h3&&Text",
    "搜索片单链接": "h3&&a&&href",
    "搜索片单副标题": ".video-info&&a&&Text",
    "搜索片单链接加前缀": "http://wogg.xyz",
    "搜索片单链接加后缀": "",
    "链接是否直接播放": "否",
    "直接播放链接加前缀": "",
    "直接播放链接加后缀": "",
    "直接播放直链视频请求头": "",
    "详情是否Jsoup写法": "是",
    "类型详情": "",
    "年代详情": "",
    "地区详情": "",
    "演员详情": ".video-info-main&&.video-info-actor,1&&Text",
    "简介详情": ".video-info-content&&p,-1&&Text",
    "线路列表数组规则": ".module-player-tab&&.module-tab-item",
    "线路标题": "span&&Text",
    "播放列表数组规则": "body&&.module-player-list",
    "选集列表数组规则": ".module-row-one",
    "选集标题链接是否Jsoup写法": "是",
    "选集标题": "h4&&Text",
    "选集链接": ".btn-down&&a&&href",
    "是否反转选集序列": "否",
    "选集链接加前缀": "",
    "选集链接加后缀": "",
    "分析MacPlayer": "",
    "是否开启手动嗅探": "否",
    "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
    "手动嗅探视频链接过滤词": ".html#=http"
}


图片: data-src="&&"

搜索数组: <img class="lazy lazyload&&<h3>

搜索图片: data-src="&&"

搜索后缀: /video/

线路数组: data-dropdown-value=&&</div>

线路标题: <span>&&</small>

播放数组: <div class="sort-item"&&

影片类型: class="slash">&&立即播放

导演: 导演：&&</div>

主演: 主演：&&</div>


剧情

n: 喜剧

v: 喜剧

n: 爱情

v: 爱情

n: 恐怖

v: 恐怖

n: 动作

v: 动作

n: 科幻

v: 科幻

n: 剧情

v: 剧情

n: 战争

v: 战争

n: 警匪

v: 警匪

n: 犯罪

v: 犯罪

n: 动画

v: 动画

n: 奇幻

v: 奇幻

n: 武侠

v: 武侠

n: 冒险

v: 冒险

n: 枪战

v: 枪战

n: 悬疑

v: 悬疑

n: 惊悚

v: 惊悚

n: 经典

v: 经典

n: 青春

v: 青春

n: 文艺

v: 文艺

n: 古装

v: 古装

n: 历史

v: 历史

n: 微电影

v: 微电影

地区

n: 大陆

v: 大陆

n: 香港

v: 香港

n: 台湾

v: 台湾

n: 美国

v: 美国

n: 法国

v: 法国

n: 英国

v: 英国

n: 日本

v: 日本

n: 韩国

v: 韩国

n: 德国

v: 德国

n: 泰国

v: 泰国

n: 印度

v: 印度

n: 意大利

v: 意大利

n: 西班牙

v: 西班牙

n: 加拿大

v: 加拿大

n: 其他

v: 其他

字母

n: A

v: A

n: B

v: B

n: C

v: C

n: D

v: D

n: E

v: E

n: F

v: F

n: G

v: G

n: H

v: H

n: I

v: I

n: J

v: J

n: K

v: K

n: L

v: L


cateName: /text()

dtFromName: /text()

dtUrlName: /text()


code:
{
  "author":"",
  "name": "去看吧",
  "url": "https://qkan8.com", //填网站链接
  "tihuan": "cnzz.com", //这个不用动，是个别网站嗅探时过滤地址用的
  "User": "空", //这个不用动，是个别网站播放需要请求头时才用到
  "shouye": "1",

  "fenlei": "高清原碟$/index.php/vod/show/id/33/page/#日漫$/index.php/vod/show/id/21/page/#女頻$/index.php/vod/show/id/50/page/#劇場$/index.php/vod/show/id/24/page/#国漫$/index.php/vod/show/id/51/page/#美漫$/index.php/vod/show/id/22/page/", //网站列表的分类
  "houzhui": ".html", //网站翻页链接的后缀

  "shifouercijiequ": "0", //截取的列表数组是否需要二次截取，0不需要，1需要
  "jiequqian": "空", //不需要二次截取就填空
  "jiequhou": "空", //不需要二次截取就填空
  "jiequshuzuqian": "class=\"fed-list-pics", //截取的列表数组的前关键词,截取的关键词有 " 的用 \ 进行转义
  "jiequshuzuhou": "
", //截取的列表数组的后关键词,截取的关键词有 " 的用 \ 进行转义
  "tupianqian": "data-original=\"", //列表中资源的图片前关键词,截取的关键词有 " 的用 \ 进行转义
  "tupianhou": "\"", //列表中资源的图片后关键词,截取的关键词有 " 的用 \ 进行转义
  "biaotiqian": ".html\">", //列表中资源的标题前关键词,截取的关键词有 " 的用 \ 进行转义
  "biaotihou": "", //列表中资源的标题后关键词,截取的关键词有 " 的用 \ 进行转义
  "lianjieqian": "href=\"", //列表中资源的详情页跳转链接前关键词,截取的关键词有 " 的用 \ 进行转义
  "lianjiehou": "\"", //列表中资源的详情页跳转链接后关键词,截取的关键词有 " 的用 \ 进行转义

  //搜索部分基本不用动，现在网站基本都是苹果CMS，所有搜索是固定的。
  "sousuoqian": "/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/voddetail/", //搜索页影片跳转详情页的中间标识链接部分
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",

  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"fed-play-item", //播放截取的列表数组的前关键词
  "bfjiequshuzuhou": "
", //播放截取的列表数组的后关键词

  "zhuangtaiqian": "fed-text-center\">", //状态前关键词
  "zhuangtaihou": "
", //状态后关键词
  "daoyanqian": "导演：", //导演前关键词
  "daoyanhou": "
", //导演态后关键词
  "zhuyanqian": "声优：", //主演前关键词
  "zhuyanhou": "
", //主演后关键词
  "juqingqian": "简介：", //剧情前关键词
  "juqinghou": "
", //剧情后关键词

  "bfyshifouercijiequ": "1", //截取的播放列表数组是否需要二次截取，0不需要，1需要
  "bfyjiequqian": "class=\"fed-part-rows\">", //不需要二次截取就填空
  "bfyjiequhou": "
", //不需要二次截取就填空
  "bfyjiequshuzuqian": "", //播放剧集数组后关键词
  "bfbiaotiqian": ">", //播放剧集标题前关键词
  "bfbiaotihou": "<", //状播放剧集标题后关键词
  "bflianjieqian": "href=\"", //播放剧集链接前关键词
  "bflianjiehou": "\""
} //播放剧集链接后关键词


warningText: 摸鱼儿：资源来自网络，无盈利，纯技术分享，如有冒犯请联系删除。[所有内容仅供学习使用，请勿用于违法及商业用途，请勿付费购买]

摸摸🐟｜豆瓣推荐

key: 豆豆

摸摸🐟｜功能设置

key: 配置中心

摸摸🐟｜应用市场

key: 应用商店

key: 花海

key: 影探

key: 玩偶哥哥

key: yanyu

key: yelan

key: yeyu

key: yumeng

key: YiSo

key: UpYun

key: xiyan

key: jinyi

图片: thumb="&&"

key: 雪凝

key: Zhaozy

踏雪❤4K

key: taxue

疏影❤4K

key: shuying

缱绻❤4K

key: qianjuan

静怡❤4K

key: jngyi

寒梦❤4K

key: hanmeng

微雨❤4K

key: weiyu

雪柔❤4K

key: xuerou

云搜❤4K

key: 雲搜

校长❤4K

key: 校长影视

盘搜💖4K

key: 盘搜索

纸条💖4K

key: 紙條搜

趣盘💖4K

key: 趣盘搜

喵喵💖4K

key: 喵狸

key: 云播

key: 初月

key: 哔嘀

key: 蝴蝶

key: 梦华

key: 流年

key: 诗意

key: 橘子

key: bttwo

key: 虎虎

key: 龟龟

副标题: pic-text text-right">&&</b>

图片: data-original="&&"

影片类型: <div class="module-info-tag">&&立即播放

key: 03影院

搜索副标题: note">&&</div>

线路二次截取: <ul id="playlist">&&</ul

线路数组: <li&&li>

key: 好戏

简介: 简介：&&</li>

影片地区: 地区：&&</li>

影片年代: 年份：&&</li>

数组: _self" class="public-list-exp"&&</div>

副标题: public-list-prb hide ft2">&&</span>

搜索数组: a target="_self" class="public-list-exp"&&thumb-else cor5 hide">

搜索副标题: public-list-prb hide ft2">&&</span>

线路数组: <i class="fa ds-dianying">&&/a>

播放数组: <ul class="anthology-list-play size"&&

线路二次截取: <div class="swiper-wrapper"&&

key: 夜猫

站名: 夜猫影视

请求头: User-Agent$Dart/2.19 (dart:io)

key: 路人

key: 一起看

key: 加速

key: 繁星

key: 新视觉

key: 爱看

简介: module-info-introduction">&&</p>

影片类型: module-info-tag">&&立即播放

影片状态: 集数：&&</div>

副标题: note">&&</div>

过滤词: /player/#/index/

播放请求头: User-Agent$Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36

播放数组: module-play-list-base">&&</div>

key: 双黄

数组: <li class="col-md-6 col-sm-4 col-xs-3&&</li

搜索数组: <li class="active clearfix&&</li

key: 热播库

线路数组: <h4 class="title&&/h4>

简介: display: none;">&&</span>

🎀红牛┃采集

key: 红牛资源

摸摸🐟｜书评

分类: 袁阔成$ykc#单田芳$stf#田连元$tly#刘兰芳$llf#连丽如$llr#张少佐$zsz#田战义$tzy

摸鱼

flag: mgtv qiyi imgo 爱奇艺 奇艺 qq 腾讯 youku 优酷 pptv PPTV letv 乐视 leshi bilibili 哔哩哔哩 哔哩 mgtv 芒果 芒果

切勿

User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Mobile Safari/537.36

磁力广告

regex:
更多
社 區
x u u
最 新
直 播
更 新
社 区
有 趣
英皇体育
全中文AV在线
澳门皇冠赌场
哥哥快来
美女荷官
裸聊
新片首发
UUE29

flags: youku qq iqiyi qiyi letv sohu tudou pptv mgtv wasu bilibili renrenmi duoduozy xinluan ddzy tgqp tkqp XRJX


摸摸🐟｜AGE动漫

key: AGE动漫

摸摸🐟｜58┃动漫

key: 58动漫网

摸摸🐟｜妮可动漫

key: 妮可动漫

摸摸🐟｜动漫┃直链

key: 动漫直链

摸摸🐟｜去看吧

key: 去看吧

摸摸🐟｜拿铁动漫

key: nt动漫

摸摸🐟｜妮可动漫

key: 妮可

摸摸🐟｜ANF动漫

key: anfuns

摸摸🐟｜怡萱动漫

key: 怡萱动漫

摸摸🐟｜异世界

key: 异世界

摸摸🐟｜维奇动漫

key: 维奇

Json并发

url: Parallel

Json轮询

url: Sequence

flag: qq 腾讯 qiyi 爱奇艺 奇艺 youku 优酷 mgtv 芒果 letv 乐视 pptv PPTV sohu bilibili 哔哩哔哩 哔哩

flags: youku qq iqiyi qiyi letv sohu tudou pptv mgtv wasu


code:
all:
	tpasm text.asm -o intel z.intel && objcopy -I ihex z.intel -O binary z.bin

up:
	vz2wav -s 31488 -t 241 z.bin | play -

clean:
	rm -f z.bin z.intel

path: Makefile


code:
I was given an VZ300 by another Ham, and after getting the Dick Smith
VZ200 RTTY adapter that I'd been carrying around for 20 years going,
wanted a programming project for it.

(Along the way I had to write vz2wav.c, which you'll find in another
repository on notabug.)

Nononono, this isn't decoding RTTY, it's just displaying a text file in
memory.

This Requires a VZ300 with the 6847's pin 30 grounded to enable the
128x96 monochrome mode.

"wia-news20211107.bin" is a binary I found lying around. I haven't
actually checked if the code I've pushed to here actually works, so I'm
assuming that's the binary I used in this Youtube video:
https://www.youtube.com/watch?v=VOUTo2VzHMY


code:
# Relies on the NETPBM tools, if you don't recognise them.
# Generated data just gets sent to stdout, where you'll cut&paste
# into your assembler file.
# --
# Chris Baird,, <chris.j.baird@gmail> 2021

FOO=/tmp/$$.pnm

anytopnm Charset_4x6.png >$FOO

for y in `seq 0 6 11`
do
   for x in `seq 000 4 127`
   do
      pamcut <$FOO -left $x -top $y -width 4 -height 6 >chars_${c}.pnm
      c=$(( $c + 1))
   done
done

for i in chars_*
do
	pnmcat -leftright $i $i >C_$i
done

for i in C_chars_*
do
	pamthreshold $i 2>/dev/null|pnmflip -lr|pamtopnm|pbmtoxbm
done|grep x

rm -f C_chars* chars_*


code:
;;; Chris Baird <chris.j.baird@gmail.com> (and vk2cjb@gmail.com) wrote
;;; this some time during 2021-2022.
;;; Requires a VZ300 with the 6847's pin 30 grounded to enable the
;;; 128x96 monochrome mode.

;;; --------------------------------------------------------------------

            PROCESSOR Z80

TOPRAM      equ $B7FF
CURSOR      equ TOPRAM-2 ;screen cell location [0,511]
INTHOOK     equ CURSOR-2
ATTRIB      equ INTHOOK-1 ;0=normal, 255=reverse
SCROLL      equ ATTRIB-1  ;smooth or jump screen scrolling
TIMER	    equ SCROLL-2

;;; ----------------------------------------------------------------------
	    .org $7B00

	    call systeminit

reset:      ld hl, text
            ld (point), hl

main:       ld a, 24             ;anti-glitch attempt..
            ld hl, (point)
            ld a, (hl)
            or a
            jp z, reset
            inc hl
            ld (point), hl
            call putchar
            call delayframe
            jp main

point:      dw text

;;; --------------------------------------------------------------------
; This code came from an earlier project.. and bits of it are left around
;           jp putchar
;           jp getchar
;           jp getserialword
;           jp cls
;           jp hexout
;           jp hexwordout
;           jp decout
;           jp putstring
;           jp scroll
;           jp smoothscroll
;           jp smooth1
;           jp jumpscroll4
;           jp delayframe
;;; ----------------------------------------------------------------------

systeminit: ld a, 0
            ld (CURSOR), a
            ld (ATTRIB), a
            ld (CURSOR+1), a
            ld (TIMER), a
            ld (TIMER+1), a
            ld a, 0
            ld (SCROLL), a
            ld a, 8+16          ; black on white
            ld a, 8             ; black on green
            ld ($6800), a
            di
            ld hl, newirq
            ld ($787E), hl
            ld a, 195
            ld ($787D), a
            ei
            jp cls

newirq:     push hl
            ld hl, (TIMER)
            inc hl
            ld (TIMER), hl
            pop hl
            ret

;;; ----------------------------------------------------------------------
;;; ----------------------------------------------------------------------

            ;; TODO
	    ;; set cursor (x,y)

	    ;; top-level putchar()
		; move cursor up,down(w/ scroll),left,right(w/ scroll)
		; reverse on/off
		; set screen foreground colour (8 codes)
		; bitmap row-write (8 codes)
		; ? cursor xor
	    ;; store LASTCHAR .. use it to give state for functions

	    ;; plot(x,y) .. unplot(x,y)

            ;; 0-31  control codes?
            ;;          0       nop  (done)
            ;;          1       cls  (done)
            ;;          5       invert character (without bumping cursor) (done)
            ;;          3       reverse on        (done)
            ;;          4       reverse off       (done)
            ;;          8       backspace/del     (done)
            ;;          10      LF                (done)
            ;;          13      CR                (done)
            ;;          16      foreground black  (done)
            ;;          17      foreground red    (done)
            ;;          18      foreground green  (done)
            ;;          19      foreground yellow (done)
            ;;          20      foreground blue   (done)
            ;;          21      foreground magneta(done)
            ;;          22      foreground cyan   (done)
            ;;          23      foreground white  (done)
            ;; 32-95    printable    (done)
            ;; 96-127   ? (32)
            ;; 128-255  ?

putchar:    cp 32
            jr nc, contputchar

            or 0                ;null
            jr z, pc0

pc1:        cp 1                ;cls
            jr nz, pc3
            call cls
pc0:        ret

pc3:        cp 3                ;reverse on
            jr nz, pc4
            ld a, 255
            ld (ATTRIB), a
            ret

pc4:        cp 4                ;reverse off
            jr nz, pc5
            ld a, 0
            ld (ATTRIB), a
            ret

pc5:        cp 5                ;reverse current screen cell
            jr nz, pc8
            jp reversecursor

pc8:        cp 8                ;backspace
            jr nz, pc10         ;maybe left-scroll line?
            ld a, (CURSOR)      ;decrease cursor addr, but not too far..
            or 0
            jr z, pc8b
            dec a
pc8b:       ld (CURSOR), a
            ret

pc10:       cp 10              ;newline
            jr nz, pc13
            ;; increase cursor location to the next line (round up next 16th)
bump32:     ld a, (CURSOR)
            and 224             ;32col
            add a, 32
            ld (CURSOR), a
            ld a, (CURSOR+1)
            adc a, 0
            ld (CURSOR+1), a
            cp 2
            jr c, pc10b
            ld a, 224           ;480
            ld (CURSOR), a
            ld a, 1
            ld (CURSOR+1),a
            jp scroll
pc10b:      ret

pc13:       cp 13               ;carrage-return
            jr nz, contputchar
            ld a, (CURSOR)
            and 224             ;32col
            ld (CURSOR),a
            ret

contputchar:
            ;; get character bitmap address into IX
            ld l, a
            ld e, a
            xor a               ;ld a,0
            ld h, a
            ld d, a
            add hl, hl
            add hl, de
            add hl, hl          ;hl=a*6
            ex de, hl
            ld ix, charbits-192
            add ix, de          ;ix=&font4+(a*6)-(32*6)

            call cursoraddr4    ;get screen address into HL

            ld b, 6             ;prep for loops
            ld de, 16

            ld a, (CURSOR)     ; check which half to do..
            bit 0, a
            jr nz, writeright

writeleft:  ld a, (hl)
            and 15
            ld c, a
            ld a, (ATTRIB)
            xor (ix+0)
            xor 255
            and 240
            or c
            ld (hl), a
            add hl, de
            inc ix
            djnz writeleft
            ;;
            jr writecont

writeright: ld a, (hl)
            and 240
            ld c, a
            ld a,(ATTRIB)
            xor (ix+0)
            xor 255
            and 15
            or c
            ld (hl), a
            add hl, de
            inc ix
            djnz writeright
            ;;

writecont:  ld hl, (CURSOR)
            inc hl
            ld (CURSOR), hl
            ld a, h
            cp 2                ;>=512
            ret nz
            ld hl, 480
            ld (CURSOR), hl
            jr scroll

;;; ----------------------------------------------------------------------
;;; map character position into video memory address (8x8 mode)

;;; charactor position 0-191
;;; 00..0F -> 7000..700F
;;; 10..1F -> 7060..706F
;;; 20..2F -> 70C0..70CF
;;; 30..3F -> 7120..712F

cursoraddr4:
            push af
            push bc

            ld a, (CURSOR+1)
            ld b, a
            ld h, a
            ld a, (CURSOR)
            and 224
            ld c, a
            ld l, a
            add hl, bc
            add hl, bc

            ld a, (CURSOR)
            and 30
            rra
            or l
            ld l, a
            ld a, h
            add a, $70
            ld h, a

            pop bc
            pop af
            ret

;;; ----------------------------------------------------------------------
;;; smaller screen-orientated functions
;;;

VIDEORAM    equ $7000

cls:        ld a, 0
	    ld (CURSOR), a
	    ld (CURSOR+1), a
            ld (ATTRIB), a
	    ld b, a
            ld a, 255
	    ld hl, VIDEORAM
	    call cls2
cls4:       call cls2
cls2:       call cls1
cls1:       ld (hl), a
	    inc hl
	    djnz cls1
	    ret

	    ;;

scroll:     ld a, (SCROLL)
	    or 0
	    jr nz, jumpscroll

            ;;

smoothscroll:
            call smooth2
smooth4:    call smooth2
smooth2:    call smooth1
smooth1:    call delayframe
	    ld hl, VIDEORAM+16	;src
	    ld de, VIDEORAM     ;dest
	    ld bc, 1520
	    ldir
            ;; blank out the last line
	    ;; de = VIDEORAM+21520 at this point..
	    ld b, 16
blankline:  ld a, 255
smoo1:      ld (de), a
	    inc de
	    djnz smoo1
	    ret

	    ;;

jumpscroll: call delayframe
            ld hl, VIDEORAM+96
	    ld de, VIDEORAM
	    ld bc, 1440
	    ldir
	    ld b, 192
            ld a, 255
js4b:       ld (de), a
	    inc de
	    djnz js4b
	    ret

reversecursor:
            call cursoraddr4
            ld de, 16
            ld b, 6
            ld c, 15
            ld a, (CURSOR)
            bit 0, a
            jr nz, revcursor1
            ld c, 240

revcursor1: ld a, c
            xor (hl)
            ld (hl), a
            add hl, de
            djnz revcursor1
            ret

;;; ----------------------------------------------------------------------

delayframe: push af
            push bc
	    push hl
	    ld hl, TIMER
	    ld a, (hl)
df1:        cp (hl)
	    jr z, df1

;            ld bc, 600
;df2:        dec bc
;            ld a, b
;            or c
;            jp nz, df2
	    pop hl
            pop bc
	    pop af
	    ret

;;; ----------------------------------------------------------------------
;;; input in HL

hexwordout: push hl
	    ld a, h
	    call hexout
	    pop hl
	    ld a, l
	    ;; fallthru

hexout:	    push af
	    sra a
	    sra a
	    sra a
	    sra a
	    call hexot1
	    pop af
	    ;; fall-thru
hexot1:     and 15
            cp 10
            sbc a,$69
            daa
	    jp putchar

;;; ----------------------------------------------------------------------
;;; output hl as a decimal value

decout:     call hldiv10
            add a, 48
            push af
            call hldiv10
            add a, 48
            push af
            call hldiv10
            add a, 48
            push af
            call hldiv10
            add a, 48
            push af
            call hldiv10
            add a, 48

            ;; check if the first digit is a zero..
            cp 48
            jr z, dec1

            call putchar        ;10000s
            pop af              ;1000s
dec2:       call putchar
            pop af
dec3:       call putchar        ;100s
            pop af
dec4:       call putchar        ;10s
dec5:       pop af
            jp putchar          ;1s

dec1:       pop af              ;is 1000s zero?
            cp 48
            jr nz, dec2

            pop af              ;is 100s zero?
            cp 48
            jr nz, dec3

            pop af              ;is 10s zero?
            cp 48
            jr nz, dec4

            jr dec5             ;don't care if zero now..

;;; code lifted from the internet..
;;; Inputs:
;;;     HL
;;; Outputs:
;;;     HL is the quotient
;;;     A is the remainder
;;;     DE is not changed
;;;     BC is 10

hldiv10:    ld bc,$0D0A
            xor a
            add hl,hl
            rla
            add hl,hl
            rla
            add hl,hl
            rla

hldiv10b:   add hl,hl
            rla
            cp c
            jr c, hldiv10a
            sub c
            inc l
hldiv10a:   djnz hldiv10b
            ret

;;; ----------------------------------------------------------------------
;;; output null-terminated string in HL

putstring:  ld a, (hl)
            or a
            ret z
            push hl
            call putchar
            pop hl
            inc hl
            jr putstring

;;; ----------------------------------------------------------------------
;;; data stuff

charbits:
	    ;.include "font4.h"
	    .include "font4x6.asm"

;;; ----------------------------------------------------------------------

text:
            db "-------------------------------*"
            db "\n"
            db "2021 NOVEMBER 7 VK NATIONAL NEWS"
            db "BROADCAST ON VK1WIA THE BEST\n"
            db "NEWS YOU'LL GET ALL WEEK\n"
            db "\n"
            db "MATERIAL MAY BE REPRODUCED IN\n"
            db "WHOLE OR IN PART, IN ANY FORM, A"
            db "CREDIT TO WIANEWS WOULDN'T GO\n"
            db "ASTRAY...\n"
            db "\n"
            db "-------------------------------*"
            db "\n"
            db "WIA AFFILIATED CLUBS COORDINATOR"
            db "ANGELO VK2NWT AND A CALL TO\n"
            db "CLUBS.\n"
            db "\n"
            db "THANKS TO A WIA NATIONAL NEWS\n"
            db "LISTENER WE HAVE BEEN ADVISED,\n"
            db "AND TRIPLE CHECKED, THAT THE\n"
            db "2021 ROSEBUD RADIO FESTIVAL\n"
            db "ORGANISED BY SPARC HAS BEEN\n"
            db "CANCELLED SO DON'T POP ALONG\n"
            db "NOVEMBER 14. BUT ...A BRAND NEW\n"
            db "ADDITION TO THE SOCIAL SCENE AND"
            db "NOT MUCH PRIOR NOTICE IS THAT\n"
            db "THE GOLD COAST WILL BE HAVING A\n"
            db "HAMFEST THIS YEAR AND IT HAPPENS"
            db "SUNDAY NOVEMBER 21.\n"
            db "\n"
            db "WIA\n"
            db "\n"
            db "WIA MEETS WITH ACMA\n"
            db "DURING OCTOBER THE WIA MET WITH\n"
            db "THE ACMA TO DISCUSS SEVERAL\n"
            db "IMPORTANT TOPICS INCLUDING THE\n"
            db "NEW CLASS LICENCING PROPOSALS,\n"
            db "HOW THE APANSA (AUSTRALIAN\n"
            db "RADIATION PROTECTION AND NUCLEAR"
            db "SAFETY AGENCY) CRITERIA OF EMR\n"
            db "COMPLIANCE WILL INTEGRATE WITH\n"
            db "THE POTENTIALLY NEW AMATEUR\n"
            db "LICENCING STRUCTURE, SOME OF THE"
            db "FINER POINTS OF THE 2X1\n"
            db "CALLSIGNS AND THE FYSO (FIVE\n"
            db "YEAR SPECTRUM OUTLOOK) AND THE\n"
            db "EFFECTS IT WILL HAVE ON THE\n"
            db "AMATEUR RADIO COMMUNITY LONG\n"
            db "TERM.\n"
            db "  ACMA WELCOMED THE OPPORTUNITY\n"
            db "TO MEET WITH THE WIA AND WERE\n"
            db "ACCEPTING THAT THE PREVIOUS VERY"
            db "DETAILED SUBMISSION ON AMATEUR\n"
            db "LICENSING ARRANGEMENTS PROVIDED\n"
            db "THE ACMA WITH SIGNIFICANT DETAIL"
            db "AND KNOWLEDGE TO CONSIDER.\n"
            db "  WITH RESPECT TO AMATEUR\n"
            db "LICENCING ARRANGEMENTS, ACMA\n"
            db "ADVISE THAT THE SUBMISSION TO\n"
            db "THE ACMA AUTHORITY WAS ALMOST\n"
            db "COMPLETE AND WOULD GO FORWARD\n"
            db "SHORTLY. THE NEXT STEP ONCE\n"
            db "APPROVED IS TO PROCEED WITH A\n"
            db "RESPONSE TO SUBMISSIONS AND\n"
            db "SUGGESTED STEPS GOING FORWARD.\n"
            db "THIS WAS MOST LIKELY TO OCCUR\n"
            db "JAN/FEB 2022, A BUSY TIME FOR\n"
            db "BOTH WIA AND ACMA. ACMA ADVISED\n"
            db "THAT THE UPDATE ON CHANGES FOR\n"
            db "THE AMATEUR SERVICE RELATED TO\n"
            db "THE APANSA EME STANDARD ACMA\n"
            db "WOULD CONSIST OF THE INTENTION\n"
            db "TO LIFT THE CURRENT REQUIREMENTS"
            db "FROM THE APPARATUS LCD INTO THE\n"
            db "NEW REGULATORY FRAMEWORK. THERE\n"
            db "IS NO INTENTION TO IMPOSE ANY\n"
            db "ADDITIONAL BURDEN ON AMATEURS.\n"
            db "WIA FINDS THIS AS AN EXCEPTIONAL"
            db "APPROACH AS ANY CHANGES WOULD\n"
            db "ENTAIL A LARGE EDUCATIONAL\n"
            db "REQUIREMENT AND THAT EDUCATION\n"
            db "IN THIS AREA WOULD BE A\n"
            db "NECESSITY ANYWAY.\n"
            db "  THE 2X1 CONTEST CALLSIGNS HAVE"
            db "BEEN A GREAT SUCCESS AND ACMA IS"
            db "NOT CONSIDERING IMPOSING ANY\n"
            db "FURTHER OPERATING CONDITIONS. IT"
            db "WILL BE UP TO THE AMATEUR\n"
            db "COMMUNITY TO COME TO A CONSENSUS"
            db "THAT IS REFLECTIVE OF THE\n"
            db "INTERNATIONAL VIEW OF CONTESTING"
            db "CRITERIA AND APPROPRIATE USE OF\n"
            db "THE 2X1 CONTESTING CALLSIGNS.\n"
            db "  ACMA MENTIONED THAT THEY ARE\n"
            db "WORKING ON THE ASSIGNMENT\n"
            db "PROCESS FOR ASSIGNMENT OF\n"
            db "REPEATER AND BEACON APPARATUS\n"
            db "LICENCES. IT WAS ACKNOWLEDGED OF"
            db "THE WIAS ROLE IN INTERNATIONAL\n"
            db "BAND PLANS. DISCUSSIONS WITH\n"
            db "ACMA AND OTHER PARTIES ARE\n"
            db "ONGOING WITH THE WIA DEVELOPING\n"
            db "A FRAMEWORK DOCUMENT FOR COMMENT"
            db "AS A WAY OF PROGRESSING TO A\n"
            db "SUITABLE ARRANGEMENT. THE\n"
            db "OUTCOME AND DISCUSSIONS WERE\n"
            db "ROBUST AND THE WIA THANKED THE\n"
            db "ACMA FOR SCHEDULING THE WIA INTO"
            db "THEIR VERY BUSY SCHEDULE.\n"
            db "  A FULL REPORT WILL BE RELEASED"
            db "SHORTLY ON THE WIA WEBSITE.\n"
            db "\n"
            db "STOP PRESS: FIRST OFFICIAL USE\n"
            db "OF 2X1 CONTEST CALLSIGNS. MONDAY"
            db "1/10/21, WITH THE CQWW SSB\n"
            db "CONTEST NOW OVER IT WAS GREAT TO"
            db "SEE SO MANY NEW CONTEST\n"
            db "CALLSIGNS BEING USED FOR THE\n"
            db "FIRST TIME ALONG WITH MANY NEW\n"
            db "CONTESTERS TRYING OUT THIS\n"
            db "COMPETITIVE FACET OF AMATEUR\n"
            db "RADIO. AMC DELIVERED IN A TIMELY"
            db "FASHION, JUST IN TIME FOR THE\n"
            db "BIGGEST GLOBAL HF CONTEST ON THE"
            db "CALENDAR.\n"
            db "  THE RESPONSES FROM THE\n"
            db "INTERNATIONAL CONTESTING\n"
            db "COMMUNITY WAS VARIED FROM WHAT\n"
            db "IS THE REST OF YOUR SUFFIX TO\n"
            db "GREAT TO HEAR VK NOW HAS CONTEST"
            db "CALLSIGNS\n"
            db "  IT WILL TAKE SOME TIME FOR THE"
            db "2X1 TO BE LESS CONFUSING AS MANY"
            db "SEASONED CONTESTERS JUST KNOW\n"
            db "THAT VKS DON'T HAVE ANY SINGLE\n"
            db "LETTER SUFFIXES IN\n"
            db "CONTESTS...UNTIL NOW THAT IS.\n"
            db "  THREE OF YOUR WIA DIRECTORS,\n"
            db "WHO ARE ALSO ACTIVE CONTESTERS\n"
            db "HAVE 2X1 CONTEST CALLSIGNS. DID\n"
            db "YOU MANAGE TO LOG ONE OF THEM\n"
            db "OVER THE WEEKEND AND WERE\n"
            db "UNAWARE?\n"
            db "  IF YOU PARTICIPATED IN THE\n"
            db "CQWW CONTEST AND USED A 2X1\n"
            db "CALLSIGN, PLEASE SUBMIT YOUR\n"
            db "CONTEST LOG TO THE CQWW CONTEST\n"
            db "LOG UPLOAD LINK FOR COLLATION.\n"
            db "HTTPS://WWW.CQWW.COM/LOGCHECK/\n"
            db "YOU MAY EVEN WIN OR PLACE IN A\n"
            db "SECTION.\n"
            db "  THE WIA WOULD LIKE TO HEAR\n"
            db "YOUR THOUGHTS ON THE USE OF 2X1\n"
            db "CONTEST CALLSIGNS. PLEASE SEND\n"
            db "YOUR COMMENTS TO\n"
            db "NATIONALOFFICE@WIA.ORG.AU AND WE"
            db "WILL COLLATE AND PRESENT THEM TO"
            db "OUR READERS AND LISTENERS IN THE"
            db "NEAR FUTURE.\n"
            db "  73 FROM LEE MOYLE, VK3GK, WIA\n"
            db "VICE PRESIDENT AND NOT ONLY IN\n"
            db "TEXT BUT NEXT WEEK IN AUDIO JOIN"
            db "ME HERE ON WIA NATIONAL NEWS.\n"
            db "\n\n\n"
            db 0
.end


code:
# Deploy to GitHub pages on commits to master
#
#  1. Clone current gh-pages branch into dist/
#  2. Copy in new README
#  3. Push dist/ directory to gh-pages branch
#
# Cloning the existing gh-pages branch ensures that we don't lose the
# CNAME, _config.yaml, and any other files generated by gh-pages when
# pushing the new README.

script:
  - git clone --branch=gh-pages https://github.com/CodyReichert/awesome-cl dist
  - cp README.md dist/index.md
deploy:
  provider: pages
  skip-cleanup: true
  github-token: $GH_TOKEN
  keep-history: true
  local-dir: dist
  on:
    branch: master

repo_name: iuway/awesome

license: mit


code:
# Rebuild and push the awesome-cl website manually.
# Travis CI is set up to automatically deploy new changes on commits
# to master, but this can be run directly if the site needs to be
# deployed for some reason.
gh-pages:
	git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
	git fetch
	git checkout gh-pages
	git pull --rebase origin gh-pages
	git show master:README.md > index.md
	git add index.md
	git commit -m "Rebuild index.md"
	git push -u origin gh-pages
	git checkout master