首页 > 其他 > 详细

showDoc 自动创建文档分析

时间:2020-05-28 11:13:09      阅读:50      评论:0      收藏:0      [点我收藏+]
image/webp,image/apng,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Host: z11.cnzz.com
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safar

# 登陆
https://www.showdoc.cc/server/index.php?s=api/user/login?username=***&password=***
username
password

1、 # 获取列表
https://www.showdoc.cc/server/index.php?s=/api/item/myList
添加head
Cookie:
PHPSESSID=vtc7sb1b9o46da0t2i4tqt8dd9; UM_distinctid=17177e7a889201-0a244e1f9bbf56-396d7507-384000-17177e7a88afcc; cookie_token=******************; think_language=zh-CN; CNZZDATA1259614235=1538324188-1586853504-https%253A%252F%252Fwww.baidu.com%252F%7C1586858909
返回
{
  "error_code": 0,
  "data": [
    {
        "item_id": "722116758802294",
        "uid": "214595",
        "item_name": "API文档示例",
        "item_domain": "",
        "item_type": "1",
        "last_update_time": "0",
        "item_description": "API文档示例",
        "is_del": "0",
        "creator": 1
    },
    {
        "item_id": "742465055951107",
        "uid": "214595",
        "item_name": "百乐斗 ",
        "item_domain": "bailedou",
        "item_type": "1",
        "last_update_time": "1586432590",
        "item_description": "百乐 ",
        "is_del": "0",
        "creator": 1
    }
  ]
}

2、添加项目
/*
富华爱发了
fuhualkjad
*/

https://www.showdoc.cc/server/index.php?s=/api/item/add
item_type=1&item_name=%E5%AF%8C%E5%8D%8E%E9%BA%BB%E5%B0%86&item_description=%E5%AF%8C%E5%8D%8E%E9%BA%BB%E5%B0%86&item_domain=fuhua&password=

3、 更新项目
https://www.showdoc.cc/server/index.php?s=/api/item/update
返回:     {"error_code":0,"data":1}

3、添加页面
id=1259614235&r=&lg=zh-cn&ntime=1586858909&cnzz_eid=1538324188-1586853504-https%3A%2F%2Fwww.baidu.com%2F&showp=2560x1440&p=https%3A%2F%2Fwww.showdoc.cc%2Fitem%2Fsetting%2F765452293022659&t=ShowDoc&umuuid=17177e7a889201-0a244e1f9bbf56-396d7507-384000-17177e7a88afcc&h=1&rnd=502287534

4、生成  api key 和 token
https://www.showdoc.cc/server/index.php?s=/api/item/getKey?id=765452293022659
{"error_code":0,"data":{"id":"173679","item_id":"765452293022659","api_key":"669492a3641accfd137370241e36154f846376661","api_token":"505220b2c792a0ec6ab863bf233175b71179481974","addtime":"1586865022","last_check_time":"0"}}

5、 创建 单独的页面地址
https://www.showdoc.cc/server/index.php?s=/api/page/createSinglePage?
page_id=4093572772585676&isCreateSiglePage=true

带Cookie
返回
{"error_code":0,"data":{"unique_key":"bf37c7dfbb95d13ae3c444c6bc1e89ea","page_id":4093572772585676}}

 

genShowDocUrls.py

#-*- coding:utf-8 -*-
#usr/bin/python

import io
import sys 
import getopt

reload(sys) 
sys.setdefaultencoding( "utf-8" )

import requests
import urllib

import json
import time

import pypinyin
import os.path

Domain = https://www.showdoc.cc/

def login_session(username, password):
    session = requests.Session()    
    
    UserAgent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36
    session.headers.update({User-Agent: UserAgent})  

    data = {
        "username" : username,
        "password" : password,
    }
    res = session.post(Domain + server/index.php?s=api/user/login, data=data)
    if res.text.find(u错误) != -1:  
        return None

    return session

GetListUrl=server/index.php?s=/api/item/myList
def getList(session):
    ListAccept= "application/json, text/plain, */*"
    session.headers.update({Accept: Accept}) 
    res_itemlist = session.get(Domain + GetListUrl)

    result = json.loads(res_itemlist.text)
    for item in result["data"]:
        print item["item_id"], item["item_name"]

def addItem(session, item_name, item_enname):
    AddItemUrl=server/index.php?s=/api/item/add
    encode_item_name=urllib.quote_plus(item_name)
    data = {
        item_type: 1,
        item_name: encode_item_name,
        item_description: encode_item_name,
        item_domain: item_enname,
        # ‘password‘: md5(password).hexdigest().upper()
    }
    res = session.post(Domain + AddItemUrl, data=data)
    result = json.loads(res.text)
    if result["error_code"] != 0:
        return False

    return True

def updateItem(session, item_name, item_enname, item_id):
    AddItemUrl=server/index.php?s=/api/item/add
    encode_item_name=urllib.quote_plus(item_name)
    data = {
        item_type: 1,
        item_name: encode_item_name,
        item_description: encode_item_name,
        item_domain: item_enname,
        # ‘password‘: md5(password).hexdigest().upper()
    }
    res = session.post(Domain + AddItemUrl, data=data)
    result = json.loads(res.text)
    if result["error_code"] != 0:
        return False

    return True

def getItemId(session, item_domain):
    res = session.get(Domain + GetListUrl)
    result = json.loads(res.text)
    if result["error_code"] == 0:
        itemid=""
        itemcompare_data = item_domain.strip().decode(utf-8) 
        for item in result["data"]:
            # print 
            # item.strip().decode(‘utf-8‘) 
            # print item["item_id"], item["item_name"], ItemName
            if item["item_domain"].strip().decode(utf-8)  == itemcompare_data:
                itemid = item["item_id"]
                print "find item[item_id] = " + item["item_id"]
                return itemid

    return ""

# api_key    是    string    api_key,认证凭证。登录showdoc,进入具体项目后,点击右上角的”项目设置”-“开放API”便可看到
# api_token    是    string    同上
# cat_name    否    string    可选参数。当页面文档处于目录下时,请传递目录名。当目录名不存在时,showdoc会自动创建此目录。需要创建多层目录的时候请用斜杆隔开,例如 “一层/二层/三层”
# page_title    是    string    页面标题。请保证其唯一。(或者,当页面处于目录下时,请保证页面标题在该目录下唯一)。当页面标题不存在时,showdoc将会创建此页面。当页面标题存在时,将用page_content更新其内容
# page_content    是    string    页面内容,可传递markdown格式的文本或者html源码
# s_number    否    number    可选,页面序号。默认是99。数字越小,该页面越靠前
def createPage(session, api_key, api_token, title, content, index, cat_name=None):
    # https://www.showdoc.cc/server/api/item/updateByApi
    CreatePageUrl= server/api/item/updateByApi
    data = {
        api_key: api_key,
        api_token: api_token,
        page_title: title,
        page_content: content,
        s_number: index
    }

    if cat_name != None:
        data["cat_name"] = cat_name

    createpage_ret = session.post(Domain + CreatePageUrl, data=data)
    createpage_retj = json.loads(createpage_ret.text)
    if createpage_retj["error_code"] == 0:
        return createpage_retj["data"]["page_id"];
    else:
        return ""

def createSinglePageUrl(session, page_id):
    GetSinglePageUrl=/server/index.php?s=/api/page/createSinglePage
    data = {
        page_id: page_id,
        isCreateSiglePage:"true"
    }
    createpage_ret = session.post(Domain + GetSinglePageUrl, data=data)
    createpage_retj = json.loads(createpage_ret.text)
    if createpage_retj["error_code"] == 0:
        return createpage_retj["data"]["unique_key"];
    else:
        return ""


def getApiKey(session, item_id):
    GetKeyUrl=server/index.php?s=/api/item/getKey
    # GetSinglePageUrl=‘/server/index.php?s=/api/page/createSinglePage‘
    data = {
        item_id: item_id,
    }
    
    getkey_ret = session.post(Domain + GetKeyUrl, data=data)
    print getkey_ret.text

    getkey_retj = json.loads(getkey_ret.text)
    if getkey_retj["error_code"] == 0:
        return getkey_ret.text;
    else:
        print "get getApiKey failed!!!"
        return ""


def getAppUrls(Username, Password, ItemName, ItemEnName, PageSupportName,  PageContents, TestDocuments, TestDocumentsContent):
    session = login_session(Username,Password)
    if session == None:
        print("getAppUrls Login Failed! " + Username)
        return False

    #  获取列表。如果有 就获取id 如果没有 就创建 然后重新获取ID
    ret = addItem(session, ItemName, ItemEnName)
    if ret:
        print("createItem Failed! " + ItemName)
        return False
    else:
        print("createItem Succeed! " + ItemName)


    ItemId = getItemId(session, ItemEnName)
    if len(ItemId) == 0:
        print("Need ItemId!!!")
        return False
    else:
        print "ItemId = "+ ItemId

        privacy_url_en = ""
        privacy_url = ""
        support_url = ""

        api_result_str = getApiKey(ItemId)
        if len(api_result_str) != 0:
            api_result = json.loads(api_result_str)
            api_key = api_result["data"]["api_key"]
            api_token = api_result["data"]["api_token"]
            pageid = createPage(api_key, api_token, TestDocuments, TestDocumentsContent, 1)
            if len(pageid) == 0:
                print "创建测试文档失败!"
            else:
                privacy_key = createSinglePageUrl(pageid)
                privacy_url = "https://www.showdoc.cc/p/" + privacy_key

            en_pageid = createPage(api_key, api_token, TestDocumentsEn, TestDocumentsContentEn, 2)
            if len(en_pageid) == 0:
                print "创建测试文档英文版失败!"
            else:
                privacy_key_en = createSinglePageUrl(en_pageid)
                privacy_url_en = "https://www.showdoc.cc/p/" + privacy_key_en

            support_pageid = createPage(api_key, api_token, PageSupportName, PageContents, 3)
            if len(support_pageid) == 0:
                print "创建页面内容失败!"
            else:
                support_key = createSinglePageUrl(support_pageid)
                support_url = "https://www.showdoc.cc/p/" + support_key

            with io.open(ItemName + ".txt","w",encoding=utf-8) as f:
                f.write("测试文档网址: " + unicode(privacy_url) + "\n")
                f.write("页面内容网址: " + unicode(support_url) + "\n")
                f.write("测试文档英文: " + unicode(privacy_url_en) + "\n")

            return True
        else:
            print "Get API Failed!"
            return False

def getAppUrlsInAProj(Username, Password, ProjectName, ProjectEnName, DateDirName, ItemName, PageSupportName,  PageContents, TestDocuments, TestDocumentsContent, TestDocumentsEn, TestDocumentsContentEn):
    session = login_session(Username,Password)
    if session == None:
        print("getAppUrlsInAProj Login Failed! " + Username)
        return False

    #  获取列表。如果有 就获取id 如果没有 就创建 然后重新获取ID
    ItemId = getItemId(session, ProjectEnName)
    if len(ItemId) == 0:
        ret = addItem(session, ProjectName, ProjectEnName)
        if not ret:
            print("createItem Failed! " + ItemName)
            return False
        else:
            print("createItem Succeed! " + ItemName)

        ItemId = getItemId(session, ProjectEnName)

    if len(ItemId) == 0:
        print("Need ItemId!!!")
        return False
    else:
        print "ItemId = "+ ItemId

        privacy_url_en = ""
        privacy_url = ""
        support_url = ""

        api_result_str = getApiKey(session, ItemId)
        if len(api_result_str) != 0:
            api_result = json.loads(api_result_str)
            api_key = api_result["data"]["api_key"]
            api_token = api_result["data"]["api_token"]
            pageid = createPage(session, api_key, api_token, TestDocuments, TestDocumentsContent, 1, DateDirName +"/" + ItemName + "/")
            if len(pageid) == 0:
                print "创建测试文档失败!"
            else:
                privacy_key = createSinglePageUrl(session, pageid)
                privacy_url = "https://www.showdoc.cc/p/" + privacy_key

            en_pageid = createPage(session, api_key, api_token, TestDocumentsEn, TestDocumentsContentEn, 2, DateDirName +"/" + ItemName + "/")
            if len(en_pageid) == 0:
                print "创建测试文档英文版失败!"
            else:
                privacy_key_en = createSinglePageUrl(session, en_pageid)
                privacy_url_en = "https://www.showdoc.cc/p/" + privacy_key_en

            support_pageid = createPage(session, api_key, api_token, PageSupportName, PageContents, 3, DateDirName +"/" + ItemName + "/")
            if len(support_pageid) == 0:
                print "创建页面内容失败!"
            else:
                support_key = createSinglePageUrl(session, support_pageid)
                support_url = "https://www.showdoc.cc/p/" + support_key

            return [privacy_url, privacy_url_en, support_url]
        else:
            print "Get API Failed!"
            return False


TestDocuments = "测试文档"
TestDocumentsContent = ‘‘‘
测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档
测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档测试文档
‘‘‘


TestDocumentsEn = "Test Documents"
TestDocumentsContentEn = ‘‘‘
Test DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest Documents
Test DocumentsTest DocumentsTest DocumentsTest Documents
Test DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest DocumentsTest Documents
Test DocumentsTest DocumentsTest DocumentsTest DocumentsTest Documents
‘‘‘

ProjectName=u"项目支持资料"
ProjectEnName = "xiangmuzhichiziliao"

Username = "*********"
Password = "*********"


def genDocuments(name, fpath):
    if (len(name) == 0):
        print("genDocuments Failed! Need Item name. " + ItemName)
        sys.exit(2)

    if (len(fpath) == 0):
        print("genDocuments Failed! Need fpath name. " + ItemName)
        sys.exit(2)

    ItemName = ""
    ItemEnName = ""
    PageContents = ""

    if fpath[-1] == "/":
        fpath=fpath[0:-1]

    with io.open(os.path.join(fpath, "描述.txt"),"r",encoding=utf-8) as f:
        PageContents = f.read()
        # print PageContents
        f.close()

    ItemName = name
    PageSupportName = ItemName + "页面内容"
    ItemEnName = pinyin(unicode(ItemName))

    DateDirName = str(time.strftime(%Y%m%d,time.localtime(time.time())))
    arr = getAppUrlsInAProj(Username, Password, ProjectName, ProjectEnName, DateDirName, ItemName, PageSupportName,  PageContents, TestDocuments, TestDocumentsContent, TestDocumentsEn, TestDocumentsContentEn)
    
    if not arr:
        arr = []

    with io.open(os.path.join(os.path.dirname(fpath), ItemName + ".txt") ,"w",encoding=utf-8) as f:
        if len(arr) > 0:
            f.write("测试文档1: " + unicode(arr[0]) + "\n")
        if len(arr) > 1:    
            f.write("测试文档2: " + unicode(arr[1]) + "\n")
        if len(arr) > 2:
            f.write("测试文档3: " + unicode(arr[2]) + "\n")

    print("genDocuments Succeed!  Item name. " + ItemName)

from pypinyin import pinyin
def main(argv):
    ItemName = ""
    ItemPath = ""

    try:
        opts, args = getopt.getopt(argv,"hi:p:",["ifile=","ofile="])
    except getopt.GetoptError:
        print genDocuments.py -ipath <PageContentsFile> -iname <ProjectName>
        sys.exit(2)
    
    for opt, arg in opts:
        if opt == -h:
            print genDocuments.py --ipath <PageContentsFile> --iname <ProjectName>
            sys.exit()
        elif opt in ("-p", "--ipath"):
            ItemPath = arg
            
        elif opt in ("-i", "--iname"):
            ItemName = arg

    genDocuments(ItemName, ItemPath)

if __name__==__main__:
    #ItemName = "阿里觉得浪费1234"
    #ItemEnName = pinyin(ItemName)
    #PageSupportName = ItemName + ""
    #PageContents = "发啦快就收到了饭卡结束两地分居阿里觉得失联飞机卡里的世界"
    #getAppUrls(Username, Password, ItemName, ItemEnName, PageSupportName,  PageContents, TestDocuments, TestDocumentsContent)
   main(sys.argv[1:])

 

showDoc 自动创建文档分析

原文:https://www.cnblogs.com/lesten/p/12979084.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!