zoukankan      html  css  js  c++  java
  • 【奇淫技巧】API接口字段table文档转代码工具

    今天做一个视频接口对接,发现对方提供的文档没有json格式,无法自动生成请求和响应对象

    json自动生成C#类的工具

    http://tool.sufeinet.com/Creater/JsonClassGenerator.aspx

    所以拿到对方文档表格之后,写了这个js工具,自动生成C#类属性和注释,省去了敲无效代码的麻烦

    接口地址

    https://doc.bokecc.com/live/live_http.html

    对方文档格式

    我们需要的字段属性格式,上面是字段注释,下面是属性名和json的key

            /// <summary>
            /// CC账户ID 
            /// </summary>
            [JsonProperty("userid")]
            public string Userid { get; set; }

    如果我们一个字段一个字段的敲,得弄到猴年马月去,copy也挺费劲的

    所以我们将对方的table直接复制到一个html里,写下面的js代码

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="GB2312">
        <title></title>
        <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
        </script>
        <script>
    $(document).ready(function(){
    
        var log = "";
    
        $('table').eq(0).find('tr').each(function () {
            var demo = '
            /// <summary>
    
            /// @@desc@@
    
            /// </summary>
    
            [JsonProperty("@@name@@")]
    
            public string @@nameuper@@ { get; set; }
    
            ';
    
            var td = $(this).find('td');
            var name = td.eq(0).html();
            var nameuper = name.charAt(0).toUpperCase() + name.slice(1);
            var desc = td.eq(1).html()  + " " + td.eq(2).html();
    
            demo = demo.replace('@@name@@', name);
            demo = demo.replace('@@nameuper@@', nameuper);
            demo = demo.replace('@@desc@@', desc);
    
            log = log + demo + '
    ';
        })
    
        console.log(log);
    
    });
        </script>
    </head>
    <body>
    
        <table width="900px">
            <tbody>
                <tr style="background:#F60;color:#FFF">
                    <td>参数</td>
                    <td>说明</td>
                    <td width="20%">备注</td>
                </tr>
                <tr>
                    <td>userid</td>
                    <td>CC账户ID</td>
                    <td></td>
                </tr>
                <tr>
                    <td>name</td>
                    <td>直播间名称,最大字符40</td>
                    <td></td>
                </tr>
                <tr>
                    <td>desc</td>
                    <td>直播间描述,最大字符5000</td>
                    <td></td>
                </tr>
                <tr>
                    <td>templatetype</td>
                    <td>直播模板类型,请求模板信息接口可获得模板类型的详细信息。</td>
                    <td></td>
                </tr>
                <tr>
                    <td>authtype</td>
                    <td>验证方式,0:接口验证,需要填写下面的checkurl;1:密码验证,需要填写下面的playpass;2:免密码验证</td>
                    <td></td>
                </tr>
                <tr>
                    <td>publisherpass</td>
                    <td>推流端密码,即讲师密码</td>
                    <td></td>
                </tr>
                <tr>
                    <td>assistantpass</td>
                    <td>助教端密码</td>
                    <td></td>
                </tr>
                <tr>
                    <td>playpass</td>
                    <td>播放端密码</td>
                    <td>可选</td>
                </tr>
                <tr>
                    <td>checkurl</td>
                    <td>验证地址</td>
                    <td>可选</td>
                </tr>
    
                <tr>
                    <td>barrage</td>
                    <td>是否开启弹幕。0:不开启;1:开启</td>
                    <td>可选,默认为0</td>
    
                </tr>
                <tr>
                    <td>foreignpublish</td>
                    <td>是否开启第三方推流。0:不开启;1:开启</td>
                    <td>可选,默认为0,开启时必须开启网页登录的主持人模式</td>
                </tr>
                <tr>
                    <td>openlowdelaymode</td>
                    <td>开启直播低延时模式。0:不开启;1:开启</td>
                    <td>可选,默认为0</td>
                </tr>
                <tr>
                    <td>showusercount</td>
                    <td>在页面显示当前在线人数。0:不显示;1:显示</td>
                    <td>可选,默认显示当前人数,模板一暂不支持此设置</td>
                </tr>
                <tr>
                    <td>openhostmode</td>
                    <td>开启主持人模式,"0"表示不开启;"1"表示开启</td>
                    <td>可选,默认为0,开通主持人模式权限后方可设置</td>
                </tr>
                <tr>
                    <td>hostloginmode</td>
                    <td>主持人登录模式,"0"表示网页登录;"1"表示客户端登录</td>
                    <td>可选,默认为0</td>
                </tr>
                <tr>
                    <td>warmvideoid</td>
                    <td>插播暖场视频,填写同一账号下云点播视频vid</td>
                    <td>可选,默认关闭;参数值为空,表示关闭</td>
                </tr>
                <tr>
                    <td>livestarttime</td>
                    <td>直播开始时间;格式:yyyy-MM-dd HH:mm:ss</td>
                    <td>可选,默认为空</td>
                </tr>
                <tr>
                    <td>playerbackgroundhint</td>
                    <td>播放器提示语。未直播时播放器将显示该提示语</td>
                    <td>可选,最多15个字符</td>
                </tr>
                <tr>
                    <td>manuallyrecordmode</td>
                    <td>手动录制模式。0:关闭;1:开启</td>
                    <td>可选,默认关闭</td>
                </tr>
                <tr>
                    <td>clientdocpermissions</td>
                    <td>讲师文档权限。0:关闭;1:开启</td>
                    <td>可选,默认关闭;</td>
                </tr>
                <tr>
                    <td>repeatedloginsetting</td>
                    <td>重复登录设置;0:允许后进入者登录;1:禁止后进入者登录,对讲师端和观看端生效</td>
                    <td>可选,默认0</td>
                </tr>
                <tr>
                    <td>maxaudiencenum</td>
                    <td>直播间并发人数上限</td>
                    <td>可选,默认为0,表示不做限制</td>
                </tr>
                <tr>
                    <td>documentdisplaymode</td>
                    <td>文档显示模式。1:适合窗口;2:适合宽度</td>
                    <td>可选,适合窗口</td>
                </tr>
                <tr>
                    <td>openlivecountdown</td>
                    <td>倒计时功能。0:关闭;1:开启</td>
                    <td>可选,默认关闭</td>
                </tr>
                <tr>
                    <td>showlectueronlinenum</td>
                    <td>讲师端显示在线人数。0:不显示;1:显示</td>
                    <td>可选,默认显示</td>
                </tr>
                <tr>
                    <td>showassistonlinenum</td>
                    <td>助教主持人端显示在线人数。0:不显示;1:显示</td>
                    <td>可选,默认显示</td>
                </tr>
                <tr>
                    <td>openmarquee</td>
                    <td>跑马灯功能。0:关闭;1:开启</td>
                    <td>可选,默认为0</td>
                </tr>
                <tr>
                    <td>alarms</td>
                    <td>直播提醒设置,格式如下:[{"time":"","desc":""},{"time":"","desc":""},{"time":"","desc":""}] time为提醒时间点(单位:分钟),类型为字符串,取值范围1-1000的整数;desc为提醒内容,类型为字符串,最多20个字符</td>
                    <td>可选,默认为空</td>
                </tr>
            </tbody>
        </table>
    
    </body>
    </html>

    通过自己组织console log的内容,生成代码

            /// <summary>
            /// 说明 备注
            /// </summary>
            [JsonProperty("参数")]
            public string 参数 { get; set; }
            
            /// <summary>
            /// CC账户ID 
            /// </summary>
            [JsonProperty("userid")]
            public string Userid { get; set; }
            
            /// <summary>
            /// 直播间名称,最大字符40 
            /// </summary>
            [JsonProperty("name")]
            public string Name { get; set; }
            
            /// <summary>
            /// 直播间描述,最大字符5000 
            /// </summary>
            [JsonProperty("desc")]
            public string Desc { get; set; }
            
            /// <summary>
            /// 直播模板类型,请求模板信息接口可获得模板类型的详细信息。 
            /// </summary>
            [JsonProperty("templatetype")]
            public string Templatetype { get; set; }
            
            /// <summary>
            /// 验证方式,0:接口验证,需要填写下面的checkurl;1:密码验证,需要填写下面的playpass;2:免密码验证 
            /// </summary>
            [JsonProperty("authtype")]
            public string Authtype { get; set; }
            
            /// <summary>
            /// 推流端密码,即讲师密码 
            /// </summary>
            [JsonProperty("publisherpass")]
            public string Publisherpass { get; set; }
            
            /// <summary>
            /// 助教端密码 
            /// </summary>
            [JsonProperty("assistantpass")]
            public string Assistantpass { get; set; }
            
            /// <summary>
            /// 播放端密码 可选
            /// </summary>
            [JsonProperty("playpass")]
            public string Playpass { get; set; }
            
            /// <summary>
            /// 验证地址 可选
            /// </summary>
            [JsonProperty("checkurl")]
            public string Checkurl { get; set; }
            
            /// <summary>
            /// 是否开启弹幕。0:不开启;1:开启 可选,默认为0
            /// </summary>
            [JsonProperty("barrage")]
            public string Barrage { get; set; }
            
            /// <summary>
            /// 是否开启第三方推流。0:不开启;1:开启 可选,默认为0,开启时必须开启网页登录的主持人模式
            /// </summary>
            [JsonProperty("foreignpublish")]
            public string Foreignpublish { get; set; }
            
            /// <summary>
            /// 开启直播低延时模式。0:不开启;1:开启 可选,默认为0
            /// </summary>
            [JsonProperty("openlowdelaymode")]
            public string Openlowdelaymode { get; set; }
            
            /// <summary>
            /// 在页面显示当前在线人数。0:不显示;1:显示 可选,默认显示当前人数,模板一暂不支持此设置
            /// </summary>
            [JsonProperty("showusercount")]
            public string Showusercount { get; set; }
            
            /// <summary>
            /// 开启主持人模式,"0"表示不开启;"1"表示开启 可选,默认为0,开通主持人模式权限后方可设置
            /// </summary>
            [JsonProperty("openhostmode")]
            public string Openhostmode { get; set; }
            
            /// <summary>
            /// 主持人登录模式,"0"表示网页登录;"1"表示客户端登录 可选,默认为0
            /// </summary>
            [JsonProperty("hostloginmode")]
            public string Hostloginmode { get; set; }
            
            /// <summary>
            /// 插播暖场视频,填写同一账号下云点播视频vid 可选,默认关闭;参数值为空,表示关闭
            /// </summary>
            [JsonProperty("warmvideoid")]
            public string Warmvideoid { get; set; }
            
            /// <summary>
            /// 直播开始时间;格式:yyyy-MM-dd HH:mm:ss 可选,默认为空
            /// </summary>
            [JsonProperty("livestarttime")]
            public string Livestarttime { get; set; }
            
            /// <summary>
            /// 播放器提示语。未直播时播放器将显示该提示语 可选,最多15个字符
            /// </summary>
            [JsonProperty("playerbackgroundhint")]
            public string Playerbackgroundhint { get; set; }
            
            /// <summary>
            /// 手动录制模式。0:关闭;1:开启 可选,默认关闭
            /// </summary>
            [JsonProperty("manuallyrecordmode")]
            public string Manuallyrecordmode { get; set; }
            
            /// <summary>
            /// 讲师文档权限。0:关闭;1:开启 可选,默认关闭;
            /// </summary>
            [JsonProperty("clientdocpermissions")]
            public string Clientdocpermissions { get; set; }
            
            /// <summary>
            /// 重复登录设置;0:允许后进入者登录;1:禁止后进入者登录,对讲师端和观看端生效 可选,默认0
            /// </summary>
            [JsonProperty("repeatedloginsetting")]
            public string Repeatedloginsetting { get; set; }
            
            /// <summary>
            /// 直播间并发人数上限 可选,默认为0,表示不做限制
            /// </summary>
            [JsonProperty("maxaudiencenum")]
            public string Maxaudiencenum { get; set; }
            
            /// <summary>
            /// 文档显示模式。1:适合窗口;2:适合宽度 可选,适合窗口
            /// </summary>
            [JsonProperty("documentdisplaymode")]
            public string Documentdisplaymode { get; set; }
            
            /// <summary>
            /// 倒计时功能。0:关闭;1:开启 可选,默认关闭
            /// </summary>
            [JsonProperty("openlivecountdown")]
            public string Openlivecountdown { get; set; }
            
            /// <summary>
            /// 讲师端显示在线人数。0:不显示;1:显示 可选,默认显示
            /// </summary>
            [JsonProperty("showlectueronlinenum")]
            public string Showlectueronlinenum { get; set; }
            
            /// <summary>
            /// 助教主持人端显示在线人数。0:不显示;1:显示 可选,默认显示
            /// </summary>
            [JsonProperty("showassistonlinenum")]
            public string Showassistonlinenum { get; set; }
            
            /// <summary>
            /// 跑马灯功能。0:关闭;1:开启 可选,默认为0
            /// </summary>
            [JsonProperty("openmarquee")]
            public string Openmarquee { get; set; }
            
            /// <summary>
            /// 直播提醒设置,格式如下:[{"time":"","desc":""},{"time":"","desc":""},{"time":"","desc":""}] time为提醒时间点(单位:分钟),类型为字符串,取值范围1-1000的整数;desc为提醒内容,类型为字符串,最多20个字符 可选,默认为空
            /// </summary>
            [JsonProperty("alarms")]
            public string Alarms { get; set; }

    我们将代码复制到项目里即可

    效果如下

     程序员就要提(xue)高(hui)效(tou)率(lan)嘛

    哈哈哈 搞定收工

    专心写业务逻辑就行了

  • 相关阅读:
    Android 播放音频
    Android Service 入门
    Android ConstraintLayout 说明和例子
    Android LiveData使用
    C# MVC MVP
    shell--4.echo和printf
    shell--3.运算符
    shell--2.shell数组
    mongDB-- 3. 查询操作
    问题--feed列表有新闻重复的问题
  • 原文地址:https://www.cnblogs.com/jhli/p/10313977.html
Copyright © 2011-2022 走看看