<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 簡介 多多貓插件是一個標簽+腳本的xml文件,大概結構如下: ```xml <!--?xml version="1.0" encoding="UTF-8" ?--> <sited ver="1" debug="1" engine="34" schema="1"> <meta> <ua></ua> <guid></guid> <title></title> <author></author> <contact></contact> <intro></intro> <alert></alert> <url></url> <expr></expr> <logo></logo> <encode></encode> <about> <item/> </about> </meta> <main> <home> <hots/> <updates/> <tags> <tags/> </tags> </home> <search/> <tag> <tag/> <tag/> </tag> <book> <sections/> </book> <section/> </main> <script> <require> <item url="http://sited.noear.org/addin/js/cheerio.js" lib="cheerio" /> </require> <code> <![CDATA[ ]]> </code> </script> </sited> ``` 這是一個空白的插件示例,用來向大家展示插件的完整架構,它主要分為下面四個部分: 1. `<sited>`根節點,它標注了插件的版本,調試狀態,所用的解析引擎版本號等 2. `<meta>`節點, 它標注了開發者、對應網站、標題、登錄等信息 3. `<main>`節點, 它聲明了用來解析網頁內容的函數,內容圖片的顯示方式等與內容相關的設定 4. `<script>`節點,它包含了`<main>`節點中所聲明函數的具體實現,也就是JavaScript代碼部分,用來從網頁獲取內容 **注意**:插件行首的一對尖括號和包括的代碼`<!--?xml version="1.0" encoding="UTF-8" ?-->`是每個插件必須的,不要省略,它指定了插件的編碼為UTF-8 更深入事項請見[插件開放平臺http://sited.noear.org/dev/](http://sited.noear.org/dev/) 里面的官方開發文檔PDF <br> ## 插件示例 下面是一個完整的漫畫插件示例,讓大家對真實的插件有一個了解 ```xml <!--?xml version="1.0" encoding="UTF-8" ?--> <sited ver="3" debug="1" engine="34" schema="1"> <meta> <ua></ua> <guid>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</guid> <title>naver網漫</title> <author>Guang</author> <contact></contact> <intro>[漫畫](v3修復)LINE WEBTOON韓國naver官網。???? ??? ??, ??? ??.(部分章節提示下架,要登陸源網站觀看)</intro> <alert></alert> <url>http://m.comic.naver.com/</url> <expr>comic\.naver\.com\/</expr> <logo>http://static.naver.net/m/comic/im/favicon/favicon_140327.ico</logo> <encode>UTF-8</encode> <about title="反饋" mail="xx@xx.com"> <item url="我郵箱是xx@xx.com" /> <item /> <item url="歡迎打賞插件開發者Guang,反饋問題。"/> <item txt="點擊或掃描二維碼對[xxx]支付寶打賞" expr="https://qr.alipay.com/xxx" logo="http://xxx.jpg"/> <item /> <item txt="掃描二維碼對我的微信打賞" logo="http://xxx.jpg"/> <item /> </about> </meta> <main dtype="1" btag="漫畫"> <home> <hots cache="1d" showImg="1" w="1" h="1" title="hots節點" method="get" parse="hots_parse" url="https://m.comic.naver.com/webtoon/weekday.nhn"/> <updates cache="1d" showImg="1" w="1" h="1" title="updates節點" method="get" parse="updates_parse" url="https://m.comic.naver.com/webtoon/weekday.nhn"/> <tags title="分類"> <tags cache="1d" method="get" parse="tags_parse1" url="https://m.comic.naver.com/webtoon/genre.nhn"/> <tags cache="1d" method="get" parse="tags_parse_challenge" url="https://m.comic.naver.com/bestChallenge/genre.nhn"/> </tags> </home> <search cache="1d" method="get" parse="search_parse1" url="https://m.comic.naver.com/search/result.nhn?keyword=@key&amp;searchType=WEBTOON" > <search cache="1d" method="get" parse="search_parse_challenge" url="https://m.comic.naver.com/search/result.nhn?keyword=@key&amp;searchType=BEST_CHALLENGE" /> </search> <tag> <tag cache="10m" showImg="1" w="1" h="1" method="get" parse="tag_parse1" expr="webtoon\/genre.nhn"/> <tag cache="10m" showImg="1" w="1" h="1" method="get" parse="tag_parse_challenge" expr="bestChallenge\/genre.nhn"/> </tag> <book cache="1d" method="get" buildUrl="book_buildUrl" parse="book_parse" expr="\/list\.nhn" > <sections cache="1d" method="get" buildUrl="book_s_buildUrl" parseUrl="book_s_parseUrl" parse="book_s_parse" /> </book> <section cache="1d" method="get" options="0,0,0,1" parseUrl="section_parseUrl" parse="section_parse" header="referer"/> </main> <script> <require> <item url="http://sited.noear.org/addin/js/cheerio.js" lib="cheerio" /> </require> <code> <![CDATA[ function urla(u) { var host = "https://m.comic.naver.com"; if (u.indexOf("http") < 0) { if (u.substr(0, 2) != '//') { if (u.substr(0, 1) != '/') u = host + '/' + u; else u = host + u; } else { u = 'https:' + u; } } return encodeURI(u); } function hots_parse(url, html) { var $ = cheerio.load(html); var list = []; $('.toon_lst li .lst a').each(function () { var item = $(this); var bm = {}; bm.name = item.find('.toon_name').text(); bm.url = urla(item.attr('href')).replace(/&week=.+$/, ''); bm.logo = item.find('img').attr('src'); list.push(bm); }); return JSON.stringify(list); } function updates_parse(url, html) { var $ = cheerio.load(html); var list = []; $('.toon_lst li .lst a').each(function () { var item = $(this); var bm = {}; bm.name = item.find('.toon_name').text(); bm.url = urla(item.attr('href')).replace(/&week=.+$/, ''); bm.logo = item.find('img').attr('src'); bm.newSection = ''; bm.updateTime = item.find('.sub_info').eq(0).text(); list.push(bm); }); return JSON.stringify(list); } function tags_parse1(url, html) { var $ = cheerio.load(html); var list = []; list.push({ 'group': '正式漫畫' }); $('#webtoonGenreTab ul li a').each(function () { var item = $(this); var bm = {}; bm.title = item.text(); bm.url = urla(item.attr('href')) + '&sort=NEW&page=@page'; list.push(bm); }); return JSON.stringify(list); } function tags_parse_challenge(url, html) { var $ = cheerio.load(html); var list = []; list.push({ 'group': 'best新星漫畫' }); $('#genreTab ul li a').each(function () { var item = $(this); var bm = {}; bm.title = item.text(); bm.url = urla(item.attr('href')) + '&sort=UPDATE&page=@page'; list.push(bm); }); return JSON.stringify(list); } function tag_parse1(url, html) { var $ = cheerio.load(html); var list = []; $('.toon_lst li').each(function () { var item = $(this); var bm = {}; bm.name = item.find('.toon_name').text(); bm.url = urla(item.find('a').attr('href')); bm.logo = item.find('img').attr('src'); bm.author = ''; bm.status = '正式漫畫'; bm.newSection = ''; bm.updateTime = ''; list.push(bm); }); return JSON.stringify(list); } function tag_parse_challenge(url, html) { var $ = cheerio.load(html); var list = []; $('.toon_lst li').each(function () { var item = $(this); var bm = {}; bm.name = item.find('.toon_name').text(); bm.url = urla(item.find('a').attr('href')); bm.logo = item.find('img').attr('src'); bm.author = ''; bm.status = 'best新星漫畫'; bm.newSection = ''; bm.updateTime = ''; list.push(bm); }); return JSON.stringify(list); } function search_parse1(url, html) { var $ = cheerio.load(html); var list = []; $('.lst').slice(0, 10).each(function () { var item = $(this); var bm = {}; bm.name = item.find('.toon_name').text(); bm.url = urla(item.children('a').attr('href')); bm.logo = item.find('img').attr('src'); bm.author = item.find('.sub_info').eq(0).text(); bm.status = '正式漫畫'; bm.newSection = ''; bm.updateTime = ''; bm.btag = "正式漫畫"; if (!bm.url.match(/javascript:goPcPage/i)) list.push(bm); }); return JSON.stringify(list); } function search_parse_challenge(url, html) { var $ = cheerio.load(html); var list = []; $('.lst').slice(0, 6).each(function () { var item = $(this); var bm = {}; bm.name = item.find('.toon_name').text(); bm.url = urla(item.children('a').attr('href')); bm.logo = item.find('img').attr('src'); bm.author = item.find('.sub_info').eq(0).text(); bm.status = 'best新星漫畫'; bm.newSection = ''; bm.updateTime = ''; bm.btag = "best新星漫畫"; if (!bm.url.match(/javascript:goPcPage/i)) list.push(bm); }); return JSON.stringify(list); } function book_buildUrl(url) { return url.replace(/^http.+?\/\/[^\/]+/i, 'https://m.comic.naver.com'); } function book_parse(url, html) { var $ = cheerio.load(html); var data = {}; data.name = $('.info_in .title').text(); data.author = $('.info_in .nm').text(); data.logo = $('.toon_info .im_br img').attr('src'); data.intro = $('.info_in .info_cont').text(); data.updateTime = ''; data.isSectionsAsc = 0; if ($('.lst>a').length > 1) { if ($('.lst>a').eq(0).attr('href').match(/no=(\d+)/i)) { var a0 = $('.lst>a').eq(0).attr('href').match(/no=(\d+)/i)[1]; } else { var a0 = $('.lst').eq(0).parent().attr('data-no'); } if ($('.lst>a').eq(1).attr('href').match(/no=(\d+)/i)) { var a1 = $('.lst>a').eq(1).attr('href').match(/no=(\d+)/i)[1]; } else { var a1 = $('.lst').eq(1).parent().attr('data-no'); } if (Number(a0) < Number(a1)) data.isSectionsAsc = 1; } data.sections = []; return JSON.stringify(data); } function book_s_buildUrl(url) { return url.replace(/^http.+?\/\/[^\/]+/i, 'https://m.comic.naver.com'); } function book_s_parseUrl(url, html) { var $ = cheerio.load(html); var urls = url; if ($('.current_pg').text().match(/\d+\D+(\d+)/i)) { var pages = Number($('.current_pg').text().match(/\d+\D+(\d+)/i)[1]); for (i = 2; i <= pages; i++) { urls = urls + ';' + url + '&page=' + i; } } return urls; } function book_s_parse(url, html) { var $ = cheerio.load(html); var data = {}; data.sections = []; $('.lst>a').each(function () { if ($(this).attr('href') && $(this).attr('href').match(/titleId/i)) { var bm = { name: $(this).find('.toon_name').text().trim(), url: urla($(this).attr('href')) }; } else { var bm = { name: $(this).find('.toon_name').text().trim() + '-要登陸源網站觀看', url: '' }; } data.sections.push(bm); }); return JSON.stringify(data); } function section_parseUrl(url, html) { var $ = cheerio.load(html); if ($('#id_area').length || $('#toonLayer').length || $('#mflick').length) { return url; } else { curl = html.match(/effecttoonContent[\s\S]+?imageUrl.+?['"\s]+(http.+?)['"\s]/i)[1] + '/'; return urla(html.match(/documentURL\s*:\s*['"]\s*(.+?)\s*['"]/i)[1]); } } function section_parse(url, html) { var list = []; if (url.match(/detail.nhn\?titleId=/i) || url.match(/nid.naver.com\/nidlogin/i) || url.match(/detail.nhn\?titleId=.+?#nafullscreen/i)) { var $ = cheerio.load(html); if ($('#toonLayer').length) { $('#toonLayer ul li img').each(function () { list.push($(this).attr('data-src')); }); } else if ($('#mflick').length) { $('#mflick>.swiper-wrapper>.swiper-slide>img').each(function () { list.push($(this).attr('data-src')); }); } else {} } else { var json = JSON.parse(html); for (var i in json.pages) { for (var j in json.pages[i].layers) { var item = json.pages[i].layers[j].asset.replace('image/', ''); var imageurl = json.assets.image[item]; if (imageurl.match(/\.jpg/i)) list.push(curl + imageurl); } } } return JSON.stringify(list); } ]]> </code> </script> </sited> ``` (本節完)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看