如何在Github貢獻(xiàn)板上創(chuàng)作自己的像素涂鴉

工作勞累剪决?身體發(fā)虛揭措?沒時(shí)間提交代碼胆数?看著自己的Github主頁中 0 contributions in the last year 是不是很喪氣市埋?不用擔(dān)心黎泣,現(xiàn)在你不僅可以補(bǔ)上你那些空缺的時(shí)光,還可以在上面創(chuàng)建屬于自己獨(dú)一無二的像素涂鴉作品腰素,畫個(gè)愛心對(duì)TA表白聘裁,涂個(gè)蛋糕紀(jì)念生日,盡情發(fā)揮你的創(chuàng)造力弓千。

各位Gayhub,噢不洋访,Github的朋友們镣陕,應(yīng)該都知道Github在個(gè)人主頁有一個(gè)貢獻(xiàn)板塊吧,它通過不同的顏色來展現(xiàn)你在特定時(shí)間段內(nèi)提交次數(shù)的多少姻政,顏色越深代表你那天commit的次數(shù)越多呆抑,奈何我等菜雞屬性,總覺著自己的貢獻(xiàn)面板和大佬之間存在著天壤之別汁展。

別人家的Github:

image.png

我的Github:

image.png

看著別人綠油油的一片鹊碍,再看看自己 0 contributions in the last year 是不是有點(diǎn)兒心酸呢厌殉?

閑來無聊,就研究了下Github貢獻(xiàn)板是根據(jù)什么規(guī)則進(jìn)行統(tǒng)計(jì)顯示的侈咕,發(fā)現(xiàn)這玩意還是動(dòng)態(tài)生成的公罕。

什么是動(dòng)態(tài)生成呢?

就是說Github在生成貢獻(xiàn)熱力圖的時(shí)候是會(huì)實(shí)時(shí)統(tǒng)計(jì)你創(chuàng)建的所有倉庫的commit情況耀销,比如你有個(gè)A倉庫楼眷,并且A倉庫在某天進(jìn)行了commit提交操作,那么對(duì)應(yīng)到Github的貢獻(xiàn)板上的相應(yīng)日期就會(huì)出現(xiàn)一個(gè)小綠點(diǎn)熊尉,小綠點(diǎn)的顏色深淺和你commit的次數(shù)成正比(但并不絕對(duì))罐柳,但是當(dāng)你把倉庫A從Github刪除的時(shí)候,這個(gè)小綠點(diǎn)也會(huì)跟著消失狰住,這就叫動(dòng)態(tài)生成张吉。(國內(nèi)Gitee碼云的貢獻(xiàn)面板則是一次性生成的綠點(diǎn)生成之后不會(huì)隨著相關(guān)倉庫的刪除而消失,請(qǐng)謹(jǐn)慎操作W)

那么小綠點(diǎn)深淺的具體規(guī)則又是什么呢芦拿?提交多少次才能變成最深的綠的呢?

有關(guān)這個(gè)規(guī)則我在Github官方并沒有找到任何說明查邢,不過網(wǎng)上有大佬可能自己試驗(yàn)出來了蔗崎。

image.png

甚至還有評(píng)論說給Github官方發(fā)過郵件,但是這個(gè)居然是機(jī)密扰藕?

image.png

哈哈哈缓苛,估計(jì)細(xì)節(jié)方面可能不大準(zhǔn)確了,畢竟人家官方都不愿意說肯定是有不為人知的秘密邓深,不過大概的規(guī)則肯定和上圖中的大佬說的差不多啦未桥。

說了這么多,那么我們究竟如何才能實(shí)現(xiàn)任意的對(duì)貢獻(xiàn)面板進(jìn)行修改呢芥备?時(shí)間還會(huì)倒流冬耿?

還真說到點(diǎn)子上了,關(guān)鍵點(diǎn)就在于時(shí)間萌壳。

其實(shí)Github統(tǒng)計(jì)的commit時(shí)間取決于Git倉庫中記錄的commit時(shí)間亦镶,而往Git倉庫中提交的時(shí)間是可以修改的。

由于對(duì)Git命令不是太熟袱瓮,一開始想到了通過修改系統(tǒng)時(shí)間來改變commit的時(shí)間缤骨,發(fā)現(xiàn)是可行的。

后來查到了commit命令有個(gè)--date參數(shù)尺借,可以實(shí)現(xiàn)提交時(shí)間的自定義绊起,格式為:

git commit --date="月 日 時(shí)間 年 +0800" -m "提交"

比如:

git commit --date="May 7 9:05:20 2016 +0800" -m "提交"

這樣就可以實(shí)現(xiàn)用過去的時(shí)間進(jìn)行提交。不過關(guān)于Github統(tǒng)計(jì)時(shí)間需要注意下根據(jù)官方說法是根據(jù)UTC時(shí)間統(tǒng)計(jì)的燎斩,不過我實(shí)測發(fā)現(xiàn)貌似和Github服務(wù)器的所在地點(diǎn)的時(shí)區(qū)有關(guān)虱歪,我訪問的服務(wù)器猜測在舊金山蜂绎,與北京時(shí)間差了16小時(shí),也就是說如果想要Github統(tǒng)計(jì)的時(shí)間是0點(diǎn)实蔽,那么你北京時(shí)間就要設(shè)置成16點(diǎn)才行荡碾。

image.png

自定義提交時(shí)間我們實(shí)現(xiàn)了谨读,接下來的事情就好辦啦局装,我們?nèi)绻獙?shí)現(xiàn)在Github貢獻(xiàn)板任意涂鴉,其實(shí)只需要知道哪一天我們需要commit多少次就好了劳殖,自定義提交時(shí)間用來決定我們想讓哪些格子有顏色铐尚,而commit次數(shù)的多少?zèng)Q定了顏色的深淺,這樣通過這兩者的結(jié)合哆姻,我們就可以輕松地創(chuàng)造出屬于自己的像素風(fēng)格的涂鴉啦宣增。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from git import Repo
import time

def timestamp_to_str(timestamp, format='%b %d %H:%M:%S %Y'):
    return time.strftime(format, time.localtime(timestamp))

def str_to_timestamp(str_time, format='%Y-%m-%d %H:%M:%S'):
    return int(time.mktime(time.strptime(str_time, format)))

if __name__ == '__main__':
    repo = Repo('./你的本地倉庫地址')
    git = repo.git
    with open('./map.qs', 'r') as fp:
        for line in fp.readlines():
            line = line.split()
            '''
            github貢獻(xiàn)統(tǒng)計(jì)時(shí)間取決于服務(wù)器位置,當(dāng)前我測試發(fā)現(xiàn)和實(shí)際提交時(shí)間差了-16小時(shí)矛缨,
            可能是使用的舊金山的時(shí)間爹脾,我懵的,如果顯示不對(duì)要自己改下后面時(shí)間箕昭。
            '''
            #os.system('date {} && time {}'.format(line[0], '16:00:00'))
            for i in range(int(line[1])):
                time_str = timestamp_to_str(str_to_timestamp(line[0] + ' 16:00:00')) + ' +0800'
                git.commit('--allow-empty', '--date=' + time_str, '-m', line[0] + '_' + str(i+1))

原理就這么簡單灵妨,純屬無聊,如果你也同樣想玩的話可以照著方法去試試落竹。

如果嫌自己寫麻煩的話也可以直接用我寫好的工具泌霍。

項(xiàng)目地址:https://github.com/qinshuang1998/GithubPainter

里面有個(gè)用html寫的designer設(shè)計(jì)器,打開后會(huì)生成一個(gè)和Github一模一樣的貢獻(xiàn)板述召,你可以通過在上面點(diǎn)擊鼠標(biāo)來控制格子的顏色朱转,從而畫出你想要的圖形,最后點(diǎn)導(dǎo)出积暖,會(huì)生成一個(gè)out.qs的文件藤为,然后用commit.py的python腳本讀取它并對(duì)本地的Git倉庫進(jìn)行commit操作就好了(需要事先準(zhǔn)備好一個(gè)Git倉庫以供操作,腳本中的文件路徑等參數(shù)需要自己改動(dòng))夺刑,運(yùn)行完成后將你的本地倉庫push到Github上缅疟,然后就能看到你自己設(shè)計(jì)的像素圖形啦(生成時(shí)間不確定,24小時(shí)內(nèi)都可能)性誉。

image.png

我用這個(gè)在我出生那年畫了一個(gè)紀(jì)念生日的像素圖案窿吩,還給配上了蛋糕,哈哈哈你也來試試吧错览。

heatmap

藝術(shù)無處不在纫雁,Github也不要放過噢。

注意:本項(xiàng)目僅供娛樂倾哺,請(qǐng)勿用于不當(dāng)途徑轧邪!產(chǎn)生的任何糾紛本項(xiàng)目概不負(fù)責(zé)刽脖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市忌愚,隨后出現(xiàn)的幾起案子曲管,更是在濱河造成了極大的恐慌,老刑警劉巖硕糊,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件院水,死亡現(xiàn)場離奇詭異,居然都是意外死亡简十,警方通過查閱死者的電腦和手機(jī)檬某,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來螟蝙,“玉大人恢恼,你說我怎么就攤上這事∫饶” “怎么了场斑?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長牵署。 經(jīng)常有香客問我漏隐,道長,這世上最難降的妖魔是什么碟刺? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任锁保,我火速辦了婚禮,結(jié)果婚禮上半沽,老公的妹妹穿的比我還像新娘爽柒。我一直安慰自己,他們只是感情好者填,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布浩村。 她就那樣靜靜地躺著,像睡著了一般占哟。 火紅的嫁衣襯著肌膚如雪心墅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天榨乎,我揣著相機(jī)與錄音怎燥,去河邊找鬼。 笑死蜜暑,一個(gè)胖子當(dāng)著我的面吹牛铐姚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肛捍,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隐绵,長吁一口氣:“原來是場噩夢啊……” “哼之众!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起依许,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤棺禾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后峭跳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膘婶,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年坦康,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竣付。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡滞欠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肆良,到底是詐尸還是另有隱情筛璧,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布惹恃,位于F島的核電站夭谤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏巫糙。R本人自食惡果不足惜朗儒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望参淹。 院中可真熱鬧醉锄,春花似錦、人聲如沸浙值。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽开呐。三九已至烟勋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筐付,已是汗流浹背卵惦。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓦戚,地道東北人沮尿。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像伤极,于是被迫代替她去往敵國和親蛹找。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姨伤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355