使用 Python 制作酷炫多彩的 Jenkins 插件詞云圖

本文首發(fā)于: Jenkins 中文社區(qū)

作者:Donghui Wang

使用 Python 制作酷炫多彩的 Jenkins 插件詞云圖

Jenkins 插件名稱高頻關(guān)鍵詞有哪些?一切盡在酷炫多彩的詞云圖

jenkins-logo-word-cloud

作為最流行的 CI/CD 工具,Jenkins 的優(yōu)勢之一是其生態(tài)強大,而這與其插件體系分不開的。 目前 Jenkins 插件 1500+ (截止2020年06月17日,插件數(shù)量為1749)。

近日發(fā)現(xiàn)詞云比較好玩,于是想著以 Jenkins 插件名稱為數(shù)據(jù)源,形成的詞云會是什么樣的呢,什么關(guān)鍵字會比較突出呢? 想到就去做,帶著問題,帶著好奇心,開始了實踐之旅~

插件基本字段說明

以 Jenkins 中文本地化插件為例,在 Jenkins 官網(wǎng)插件詳情頁面可以看出: 其 ID 為 localization-zh-cn,Name 為 Localization: Chinese (Simplified)。

localization-zh-cn

獲取所有 Jenkins 插件的名稱

如何獲取所有 Jenkins 插件的名稱呢?這里我想到3種方式,或許還有更多方式:

對比上面的三種方式,插件權(quán)限文件中并沒有 Name 字段,插件更新中心配置文件相對從插件官網(wǎng)抓取比較簡單。 所以計劃從 update-center.json 進行解析,其中插件名稱在 json 中對應(yīng)字段為 title。

update-center-json

生成 Jenkins 插件名稱文件

讀取 update-center.json 中 plugin 的 title 字段,按行寫入到 jenkins-plugins.txt 文件,代碼如下:

# -*- coding: UTF-8 -*-
import json


if __name__ == "__main__":
    json_obj = json.load(open("update-center.json", "r"))
    plugins_obj = json_obj["plugins"]
    with open("jenkins-plugins.txt", "w") as fw:
        for plugin_name in plugins_obj:
            plugin_obj = plugins_obj[plugin_name]
            print plugin_obj["title"]
            fw.write(plugin_obj["title"].encode('utf-8') + "\n")

jenkins-plugins.txt 文件共有 1749 行(與 Jenkins 1749個插件對應(yīng)),其內(nèi)容截圖如下:

jenkins-plugins-txt

生成詞云圖

這里使用 Python 代碼生成詞云圖,詞的來源為 jenkins-plugins.txt,代碼如下:

# -*- coding: UTF-8 -*-

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image


def generate_word_cloud_image(background_image):
    # mask
    mask = np.array(Image.open(background_image))

    # generate word cloud
    wc = WordCloud(mask=mask, scale=1.5, mode='RGBA', background_color="white", max_words=2000).generate(text=text)

    # show word cloud
    plt.imshow(wc, interpolation='bilinear')
    plt.axis('off')
    plt.show()

    # save to file
    background_image = str(background_image).split("/")[-1].replace(".png", "")
    wc.to_file("word-cloud-img/" + background_image + '-word-cloud.png')


if __name__ == "__main__":
    with open('jenkins-plugins.txt') as f:
        text = f.read()

        for image_name in ["background-img/kongfu.png", "background-img/jenkins-logo.png"]:
            generate_word_cloud_image(background_image=image_name)

生成的詞云圖各個關(guān)鍵字以不同大小和比例,繪制出一幅多彩的畫卷,感覺很美觀、很酷炫!

以 Jenkins logo 為背景圖片,生成的詞云圖如下:

jenkins-logo-word-cloud

以 Jenkins 中文社區(qū)的 kongfu 為背景圖片,生成的詞云圖如下:

kongfu-word-cloud

從詞云圖中可以看出,Pipeline 詞頻最高,Build、API、Job 次之,緊接著還有 Publisher、Notifier、Trigger、Step、GitHub 等等。

資源說明

所有代碼及文件可以在 GitHub 倉庫找到,如果你也覺得好玩有趣,順便點個 star 吧,謝謝~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容