├── .gitignore
├── @Resources
├── Config.lua
├── Fonts
│ ├── segoeui.ttf
│ ├── segoeuib.ttf
│ ├── segoeuii.ttf
│ ├── segoeuil.ttf
│ ├── segoeuisl.ttf
│ ├── segoeuiz.ttf
│ └── seguisb.ttf
├── GitHubScraper
│ ├── GitHubScraper.sln
│ └── GitHubScraper
│ │ ├── App.config
│ │ ├── GitHubGraph.cs
│ │ ├── GitHubGraphicon.ico
│ │ ├── GitHubScraper.csproj
│ │ ├── Program.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── WebDriver.dll
│ │ ├── bin
│ │ └── Debug
│ │ │ ├── GitHubScraper.application
│ │ │ ├── GitHubScraper.exe
│ │ │ ├── GitHubScraper.exe.config
│ │ │ ├── GitHubScraper.exe.manifest
│ │ │ ├── GitHubScraper.vshost.application
│ │ │ ├── GitHubScraper.vshost.exe
│ │ │ ├── GitHubScraper.vshost.exe.config
│ │ │ ├── GitHubScraper.vshost.exe.manifest
│ │ │ ├── GraphInfo.txt
│ │ │ ├── GraphInfoWeek.txt
│ │ │ ├── WebDriver.dll
│ │ │ ├── app.publish
│ │ │ └── GitHubScraper.exe
│ │ │ └── phantomjs.exe
│ │ ├── packages.config
│ │ └── phantomjs.exe
├── Images
│ ├── exit.png
│ ├── github-calendar.png
│ └── info_background.png
├── config.txt
├── github-calendar.png
├── images
│ ├── Button.png
│ ├── Button2.png
│ ├── Close.png
│ ├── background.png
│ ├── configback.png
│ └── github_logo.png
├── preview
│ └── Preview.gif
├── script.lua
├── style.inc
└── week.lua
├── Config
├── Config.ini
└── Info.ini
├── Documentation
├── CONTRIBUTING.md
└── LICENSE.md
├── GitHubCalendar.ini
├── GitHubCalendar_v1.1.3.rmskin
├── GithubCalendar(week).ini
├── LICENSE.md
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebugPublic/
15 | [Rr]elease/
16 | [Rr]eleases/
17 | x64/
18 | x86/
19 | bld/
20 | [Oo]bj/
21 | [Ll]og/
22 |
23 | # Visual Studio 2015 cache/options directory
24 | .vs/
25 | # Uncomment if you have tasks that create the project's static files in wwwroot
26 | #wwwroot/
27 |
28 | # MSTest test Results
29 | [Tt]est[Rr]esult*/
30 | [Bb]uild[Ll]og.*
31 |
32 | # NUNIT
33 | *.VisualState.xml
34 | TestResult.xml
35 |
36 | # Build Results of an ATL Project
37 | [Dd]ebugPS/
38 | [Rr]eleasePS/
39 | dlldata.c
40 |
41 | # DNX
42 | project.lock.json
43 | artifacts/
44 |
45 | *_i.c
46 | *_p.c
47 | *_i.h
48 | *.ilk
49 | *.meta
50 | *.obj
51 | *.pch
52 | *.pdb
53 | *.pgc
54 | *.pgd
55 | *.rsp
56 | *.sbr
57 | *.tlb
58 | *.tli
59 | *.tlh
60 | *.tmp
61 | *.tmp_proj
62 | *.log
63 | *.vspscc
64 | *.vssscc
65 | .builds
66 | *.pidb
67 | *.svclog
68 | *.scc
69 |
70 | # Chutzpah Test files
71 | _Chutzpah*
72 |
73 | # Visual C++ cache files
74 | ipch/
75 | *.aps
76 | *.ncb
77 | *.opendb
78 | *.opensdf
79 | *.sdf
80 | *.cachefile
81 | *.VC.db
82 | *.VC.VC.opendb
83 |
84 | # Visual Studio profiler
85 | *.psess
86 | *.vsp
87 | *.vspx
88 | *.sap
89 |
90 | # TFS 2012 Local Workspace
91 | $tf/
92 |
93 | # Guidance Automation Toolkit
94 | *.gpState
95 |
96 | # ReSharper is a .NET coding add-in
97 | _ReSharper*/
98 | *.[Rr]e[Ss]harper
99 | *.DotSettings.user
100 |
101 | # JustCode is a .NET coding add-in
102 | .JustCode
103 |
104 | # TeamCity is a build add-in
105 | _TeamCity*
106 |
107 | # DotCover is a Code Coverage Tool
108 | *.dotCover
109 |
110 | # NCrunch
111 | _NCrunch_*
112 | .*crunch*.local.xml
113 | nCrunchTemp_*
114 |
115 | # MightyMoose
116 | *.mm.*
117 | AutoTest.Net/
118 |
119 | # Web workbench (sass)
120 | .sass-cache/
121 |
122 | # Installshield output folder
123 | [Ee]xpress/
124 |
125 | # DocProject is a documentation generator add-in
126 | DocProject/buildhelp/
127 | DocProject/Help/*.HxT
128 | DocProject/Help/*.HxC
129 | DocProject/Help/*.hhc
130 | DocProject/Help/*.hhk
131 | DocProject/Help/*.hhp
132 | DocProject/Help/Html2
133 | DocProject/Help/html
134 |
135 | # Click-Once directory
136 | publish/
137 |
138 | # Publish Web Output
139 | *.[Pp]ublish.xml
140 | *.azurePubxml
141 | # TODO: Comment the next line if you want to checkin your web deploy settings
142 | # but database connection strings (with potential passwords) will be unencrypted
143 | *.pubxml
144 | *.publishproj
145 |
146 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
147 | # checkin your Azure Web App publish settings, but sensitive information contained
148 | # in these scripts will be unencrypted
149 | PublishScripts/
150 |
151 | # NuGet Packages
152 | *.nupkg
153 | # The packages folder can be ignored because of Package Restore
154 | **/packages/*
155 | # except build/, which is used as an MSBuild target.
156 | !**/packages/build/
157 | # Uncomment if necessary however generally it will be regenerated when needed
158 | #!**/packages/repositories.config
159 | # NuGet v3's project.json files produces more ignoreable files
160 | *.nuget.props
161 | *.nuget.targets
162 |
163 | # Microsoft Azure Build Output
164 | csx/
165 | *.build.csdef
166 |
167 | # Microsoft Azure Emulator
168 | ecf/
169 | rcf/
170 |
171 | # Windows Store app package directories and files
172 | AppPackages/
173 | BundleArtifacts/
174 | Package.StoreAssociation.xml
175 | _pkginfo.txt
176 |
177 | # Visual Studio cache files
178 | # files ending in .cache can be ignored
179 | *.[Cc]ache
180 | # but keep track of directories ending in .cache
181 | !*.[Cc]ache/
182 |
183 | # Others
184 | ClientBin/
185 | ~$*
186 | *~
187 | *.dbmdl
188 | *.dbproj.schemaview
189 | *.pfx
190 | *.publishsettings
191 | node_modules/
192 | orleans.codegen.cs
193 |
194 | # Since there are multiple workflows, uncomment next line to ignore bower_components
195 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
196 | #bower_components/
197 |
198 | # RIA/Silverlight projects
199 | Generated_Code/
200 |
201 | # Backup & report files from converting an old project file
202 | # to a newer Visual Studio version. Backup files are not needed,
203 | # because we have git ;-)
204 | _UpgradeReport_Files/
205 | Backup*/
206 | UpgradeLog*.XML
207 | UpgradeLog*.htm
208 |
209 | # SQL Server files
210 | *.mdf
211 | *.ldf
212 |
213 | # Business Intelligence projects
214 | *.rdl.data
215 | *.bim.layout
216 | *.bim_*.settings
217 |
218 | # Microsoft Fakes
219 | FakesAssemblies/
220 |
221 | # GhostDoc plugin setting file
222 | *.GhostDoc.xml
223 |
224 | # Node.js Tools for Visual Studio
225 | .ntvs_analysis.dat
226 |
227 | # Visual Studio 6 build log
228 | *.plg
229 |
230 | # Visual Studio 6 workspace options file
231 | *.opt
232 |
233 | # Visual Studio LightSwitch build output
234 | **/*.HTMLClient/GeneratedArtifacts
235 | **/*.DesktopClient/GeneratedArtifacts
236 | **/*.DesktopClient/ModelManifest.xml
237 | **/*.Server/GeneratedArtifacts
238 | **/*.Server/ModelManifest.xml
239 | _Pvt_Extensions
240 |
241 | # Paket dependency manager
242 | .paket/paket.exe
243 | paket-files/
244 |
245 | # FAKE - F# Make
246 | .fake/
247 |
248 | # JetBrains Rider
249 | .idea/
250 | *.sln.iml
251 | @Resources/images/github_logoLG.png
252 | @Resources/images/settings-.png
253 | @Resources/images/Button_2.png
254 | @Resources/images/configback2.png
255 | @Resources/images/configback_plain.png
256 | @Resources/data.txt
257 | @Resources/week.txt
258 | README/*
259 | @Resources/Preview/Preview_.gif
260 |
--------------------------------------------------------------------------------
/@Resources/Config.lua:
--------------------------------------------------------------------------------
1 | -- ## Information ###################################################################
2 | -- Filename: config.lua
3 | -- Author: Brett Stevenson
4 | -- Project: GitHubCalendar
5 | -- License: BSD 3-Clause
6 | -- Updated: July 31, 2016
7 | -- Description: A work-in-progress Lua script, intended to improve the ease of
8 | -- use of the GitHubCalendar Rainmeter skin by automating much of the user
9 | -- configuration processes. ###############################################################################
10 |
11 |
12 | function Initialize()
13 | path = SELF:GetOption('WriteTo')
14 | Update()
15 | end
16 |
17 |
18 | function Update()
19 | local file = io.open(path, "r")
20 | io.input(file)
21 | data = io.read("*all")
22 | io.close(file)
23 | return tostring(data)
24 | end
25 |
26 |
27 | function Write()
28 | local file = io.open(path, "w")
29 | local username = SELF:GetOption('Input')
30 | local numWeeks = SELF:GetOption('Weeks')
31 | io.output(file)
32 | io.write(tostring(username))
33 | io.write(tostring(numWeeks))
34 | io.close(file)
35 | end
36 |
--------------------------------------------------------------------------------
/@Resources/Fonts/segoeui.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Fonts/segoeui.ttf
--------------------------------------------------------------------------------
/@Resources/Fonts/segoeuib.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Fonts/segoeuib.ttf
--------------------------------------------------------------------------------
/@Resources/Fonts/segoeuii.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Fonts/segoeuii.ttf
--------------------------------------------------------------------------------
/@Resources/Fonts/segoeuil.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Fonts/segoeuil.ttf
--------------------------------------------------------------------------------
/@Resources/Fonts/segoeuisl.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Fonts/segoeuisl.ttf
--------------------------------------------------------------------------------
/@Resources/Fonts/segoeuiz.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Fonts/segoeuiz.ttf
--------------------------------------------------------------------------------
/@Resources/Fonts/seguisb.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Fonts/seguisb.ttf
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.24720.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHubScraper", "GitHubScraper\GitHubScraper.csproj", "{424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | NewTest|Any CPU = NewTest|Any CPU
12 | Release|Any CPU = Release|Any CPU
13 | EndGlobalSection
14 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
15 | {424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
16 | {424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
17 | {424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}.NewTest|Any CPU.ActiveCfg = NewTest|Any CPU
18 | {424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}.NewTest|Any CPU.Build.0 = NewTest|Any CPU
19 | {424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}.NewTest|Any CPU.Deploy.0 = NewTest|Any CPU
20 | {424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}.Release|Any CPU.Build.0 = Release|Any CPU
22 | EndGlobalSection
23 | GlobalSection(SolutionProperties) = preSolution
24 | HideSolutionNode = FALSE
25 | EndGlobalSection
26 | EndGlobal
27 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/GitHubGraph.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Text;
4 | using OpenQA.Selenium;
5 | using OpenQA.Selenium.PhantomJS;
6 |
7 | /*******************************************************************************
8 | ______________________________GitHubScraper__________________________________
9 | * This program uses Selenium's WebDriver & phantomJS, in order to scrape the
10 | * contributions, fills, and active dates from a Github user's profile.
11 | *
12 | * To configure this file for your own use, replace the "Username" variable with
13 | * your own GitHub username.
14 |
15 | ******************************************************************************/
16 |
17 | namespace GitHubScraper {
18 |
19 | class GraphScraper {
20 |
21 | private static readonly int numWeeks = 10;
22 |
23 | static void Main() {
24 | Console.SetWindowSize(50, 15);
25 | string username = File.ReadAllText(GetDirectory("/config.txt"));
26 | Console.WriteLine("Username: " + username);
27 | var driverService = PhantomJSDriverService.CreateDefaultService();
28 | driverService.HideCommandPromptWindow = true;
29 | IWebDriver driver = new PhantomJSDriver(driverService);
30 | driver.Navigate().GoToUrl("http://github.com/" + username);
31 | Console.WriteLine("Connected.");
32 | Block[,] data = new Block[numWeeks, 7];
33 | try {
34 | var calendar = driver.FindElement(By.ClassName("js-calendar-graph"))
35 | .FindElements(By.TagName("g"));
36 | int range = calendar.Count - numWeeks;
37 | for (int i = range; i < calendar.Count; i++) {
38 | int week = i - range;
39 | Console.Write('\r' + "Grabbing data..." + (i - range) * 10 + "%");
40 | var rectElements = calendar[i].FindElements(By.TagName("rect"));
41 | int day = 0;
42 | foreach (var rect in rectElements) {
43 | string fill = rect.GetAttribute("fill");
44 | int contribCount = int.Parse(rect.GetAttribute("data-count"));
45 | string date = rect.GetAttribute("data-date");
46 | data[week, day] = new Block(contribCount, fill, date);
47 | day++;
48 | }
49 | }
50 | Console.WriteLine('\r' + "Grabbing data...100%");
51 | } catch (NoSuchElementException e) {
52 | Console.WriteLine(e);
53 | }
54 | driver.Quit(); // close the webdriver
55 | driver.Dispose();
56 | FillWeek(data); // add placeholders to fill current week
57 | Console.WriteLine("Done.");
58 | WriteToFile(data, GetDirectory("/data.txt"));
59 | WriteToFile(GetWeek(data, numWeeks-1), GetDirectory("/week.txt"));
60 | Environment.Exit(0); // Exit program
61 | }
62 |
63 |
64 | /* returns @Resource directory + filename */
65 | private static string GetDirectory(string filename) {
66 | string path = Directory.GetCurrentDirectory();
67 | return path.Substring(0, path.Length - 37) + filename;
68 | }
69 |
70 |
71 | /* create placeholders for the rest of the week */
72 | private static void FillWeek(Block[,] data) {
73 | int tbd = 6 - (int)DateTime.Now.DayOfWeek;
74 | while(tbd > 0) {
75 | int x = 6 - tbd;
76 | data[numWeeks-1, x] = new Block(0, "#eeeeee", "TBD");
77 | tbd--;
78 | }
79 | }
80 |
81 | /* returns the week at the given index */
82 | private static Block[] GetWeek(Block[,] data, int index) {
83 | Block[] weekData = new Block[7];
84 | if(index > 0 && index < numWeeks)
85 | for(int i = 0; i < 7; i++)
86 | weekData[i] = data[index, i];
87 | return weekData;
88 | }
89 |
90 | /* Writes the data to the provided .txt file */
91 | private static void WriteToFile(Block[] data, string dir) {
92 | StreamWriter file = new StreamWriter(dir);
93 | foreach(Block b in data)
94 | if(b != null)
95 | file.WriteLine(b.ToString());
96 | file.Close();
97 | }
98 |
99 | /* Writes the data to the provided .txt file */
100 | private static void WriteToFile(Block[,] data, string dir) {
101 | StreamWriter file = new StreamWriter(dir);
102 | foreach(Block b in data)
103 | if(b != null)
104 | file.WriteLine(b.ToString());
105 | file.Close();
106 | }
107 |
108 |
109 | private class Block {
110 |
111 | private readonly int _contribs;
112 | private readonly string _fill;
113 | private readonly string _date;
114 |
115 | public Block(int contribs, string fill, string date) {
116 | _contribs = contribs;
117 | _fill = fill;
118 | _date = FormatDate(date);
119 | }
120 |
121 | private string FormatDate(string dataDate) {
122 | if (dataDate.Equals("TBD"))
123 | return "TBD";
124 | int year = int.Parse(dataDate.Substring(2, 2));
125 | int month = int.Parse(dataDate.Substring(5, 2));
126 | int day = int.Parse(dataDate.Substring(8, 2));
127 | return month + "/" + day + "/" + year;
128 | }
129 |
130 | public override string ToString() {
131 | StringBuilder sb = new StringBuilder("");
132 | sb.Append(_contribs);
133 | sb.Append(Environment.NewLine);
134 | sb.Append(_fill);
135 | sb.Append(Environment.NewLine);
136 | sb.Append(_date);
137 | return sb.ToString();
138 | }
139 | }
140 |
141 | }
142 | }
143 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/GitHubGraphicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/GitHubScraper/GitHubScraper/GitHubGraphicon.ico
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/GitHubScraper.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {424FFE5B-EE6C-4C6C-93D1-277DA4739EAD}
8 | Exe
9 | Properties
10 | GitHubScraper
11 | GitHubScraper
12 | v4.5.2
13 | 512
14 | true
15 | false
16 | C:\Users\there\Desktop\
17 | true
18 | Disk
19 | false
20 | Foreground
21 | 7
22 | Days
23 | false
24 | false
25 | true
26 | 2
27 | 1.0.0.%2a
28 | false
29 | true
30 | true
31 |
32 |
33 | AnyCPU
34 | true
35 | full
36 | false
37 | bin\Debug\
38 | DEBUG;TRACE
39 | prompt
40 | 4
41 |
42 |
43 | AnyCPU
44 | pdbonly
45 | true
46 | bin\Release\
47 | TRACE
48 | prompt
49 | 4
50 | Off
51 | true
52 |
53 |
54 |
55 |
56 |
57 |
58 | GitHubGraphicon.ico
59 |
60 |
61 |
62 | 0D80960900B8B701B9F12F05A910AC485AD06B0C
63 |
64 |
65 | GitHubScraper_TemporaryKey.pfx
66 |
67 |
68 | true
69 |
70 |
71 | true
72 |
73 |
74 |
75 | bin\NewTest\
76 |
77 |
78 |
79 | true
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 | ..\packages\Selenium.WebDriver.2.53.0\lib\net40\WebDriver.dll
93 | True
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | PreserveNewest
108 |
109 |
110 |
111 |
112 |
113 | False
114 | Microsoft .NET Framework 4.5.2 %28x86 and x64%29
115 | true
116 |
117 |
118 | False
119 | .NET Framework 3.5 SP1
120 | false
121 |
122 |
123 |
124 |
131 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using OpenQA.Selenium;
3 | using OpenQA.Selenium.Chrome;
4 | using System.Collections;
5 | using OpenQA.Selenium.PhantomJS;
6 | using System.Text;
7 | using System.IO;
8 | using System.Diagnostics;
9 |
10 | /*
11 | * This program uses Selenium's WebDriver to scrape the active dates and the number
12 | * of contributions made from a Github profile in the current week.
13 | *
14 | * To configure this file for your own use, replace the "username" variable with
15 | * your own GitHub Username.
16 | */
17 |
18 | namespace GitHubGraph {
19 |
20 | class GraphScraper {
21 |
22 | private static string username = "JonSn0w"; /* <--- Change this */
23 | private static string[] days = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
24 | private static string[] months = { "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec" };
25 | public static DateTime Today { get; }
26 | public static DateTime thisDay = DateTime.Today;
27 | private static int blockCount = 1;
28 | private static int count = 0;
29 |
30 | static void Main(string[] args) {
31 | string currentPath = System.IO.Directory.GetCurrentDirectory();
32 | currentPath = currentPath.Substring(0, currentPath.Length - 9);
33 | var driverService = PhantomJSDriverService.CreateDefaultService(currentPath + "phantomJS");
34 | driverService.HideCommandPromptWindow = true;
35 | IWebDriver driver = new PhantomJSDriver(driverService);
36 | driver.Navigate().GoToUrl("http://github.com/" + username);
37 | ArrayList list = new ArrayList();
38 | ArrayList week = new ArrayList();
39 | try {
40 | var calendarElements = driver.FindElement(By.Id("contributions-calendar"))
41 | .FindElement(By.ClassName("js-calendar-graph"))
42 | .FindElements(By.TagName("g"));
43 | int remainder = 0;
44 | for (int i = 0; i < days.Length; i++) {
45 | if (days[i] == System.DateTime.Now.ToString("dddd"))
46 | remainder = 6 - i;
47 | }
48 | foreach (var calElement in calendarElements) {
49 | if (count < calendarElements.Count - 10)
50 | count++;
51 | else if (calElement != calendarElements[calendarElements.Count - 1]) {
52 | var rectElements = calElement.FindElements(By.TagName("rect"));
53 | foreach (var rect in rectElements) {
54 | string color = rect.GetAttribute("fill");
55 | int contribCount = Int32.Parse(rect.GetAttribute("data-count"));
56 | string dataDate = rect.GetAttribute("data-date");
57 | Block b = new Block(blockCount, contribCount, color, dataDate);
58 | list.Add(b);
59 | blockCount++;
60 | }
61 | }
62 | else {
63 | //var thisWeek = calendarElements[calendarElements.Count - 1];
64 | var rectElements = calElement.FindElements(By.TagName("rect"));
65 | foreach (var rect in rectElements)
66 | {
67 | string color = rect.GetAttribute("fill");
68 | int contribCount = Int32.Parse(rect.GetAttribute("data-count"));
69 | string dataDate = rect.GetAttribute("data-date");
70 | Block b = new Block(blockCount, contribCount, color, dataDate);
71 | week.Add(b);
72 | list.Add(b);
73 | blockCount++;
74 | }
75 | }
76 | }
77 | // create placeholders for the rest of the week
78 | while (remainder > 0) {
79 | blockCount++;
80 | Block b = new Block(blockCount, 0, "#eeeee"," ");
81 | week.Add(b);
82 | list.Add(b);
83 | remainder--;
84 | }
85 | writeToFile(list, "/GraphInfo.txt");
86 | writeToFile(week, "/GraphInfoWeek.txt");
87 | }
88 | catch (NoSuchElementException e) {
89 | return;
90 | }
91 | //Console.WriteLine("Finished.");
92 | Environment.Exit(0);
93 | }
94 |
95 |
96 | private static void writeToFile(ArrayList list, String filename) {
97 | var path = System.IO.Directory.GetCurrentDirectory();
98 | var root = Path.GetDirectoryName(Path.GetDirectoryName(path));
99 | var ancestor = Path.GetDirectoryName(Path.GetDirectoryName(root));
100 | ancestor = ancestor + filename;
101 | //Console.WriteLine("PATH: " + path);
102 | //Console.WriteLine("TODAY: " + System.DateTime.Now.ToString("dddd"));
103 | System.IO.StreamWriter file = new System.IO.StreamWriter(ancestor);
104 | int writeCount = 1;
105 | foreach (Block item in list) {
106 | if (writeCount < 50)
107 | file.WriteLine("\"block\":{");
108 | else
109 | file.WriteLine("\"block2\":{");
110 | file.WriteLine(item.toDataString());
111 | writeCount++;
112 | }
113 | file.Close();
114 | }
115 |
116 |
117 | class Block {
118 |
119 | int index;
120 | int contributions;
121 | string fill;
122 | int day;
123 | string dayOfWeek;
124 | int month;
125 | string monthStr;
126 | int year;
127 |
128 | public Block(int index, int contributions, string fill, string date) {
129 | this.index = index;
130 | this.contributions = contributions;
131 | this.fill = fill;
132 | getInfo(date);
133 | }
134 |
135 | public void getInfo(string dataDate) {
136 | if (dataDate.Length < 2) {
137 | year = -1;
138 | } else {
139 | year = Int32.Parse(dataDate.Substring(0, 4));
140 | month = Int32.Parse(dataDate.Substring(5, 2));
141 | day = Int32.Parse(dataDate.Substring(8, 2));
142 | monthStr = months[month - 1];
143 | }
144 | }
145 |
146 | public int getDay() { return this.day; }
147 | public int getMonth() { return this.month; }
148 | public int getYear() { return this.year; }
149 | public string getDate() {
150 | if (year < 0)
151 | return " ";
152 | return this.month + "/" + this.day + "/" + this.year;
153 | }
154 | public int getContributions() { return this.contributions; }
155 |
156 | public string toReadableString() {
157 | return months[this.month - 1] + ". " + this.day + ", " + this.year + "\n" + "Contributions: " + this.contributions;
158 | }
159 |
160 | public string toDataString() {
161 | StringBuilder sb = new StringBuilder("");
162 | //sb.Append("\"block\":{");
163 | sb.Append(Environment.NewLine);
164 | sb.Append("\t\"contribs\": \"");
165 | sb.Append(contributions);
166 | sb.Append("\"");
167 | sb.Append(Environment.NewLine);
168 | sb.Append("\t\"fill\": \"");
169 | sb.Append(fill);
170 | sb.Append("\"");
171 | sb.Append(Environment.NewLine);
172 | sb.Append("\t\"date\": \"");
173 | sb.Append(getDate());
174 | sb.Append("\"");
175 | sb.Append(Environment.NewLine);
176 | sb.Append("},");
177 | return sb.ToString();
178 | }
179 | }
180 | }
181 |
182 | }
183 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("GitHubScraper")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("GitHubScraper")]
12 | [assembly: AssemblyCopyright("Copyright © 2016")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("424ffe5b-ee6c-4c6c-93d1-277da4739ead")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/WebDriver.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/GitHubScraper/GitHubScraper/WebDriver.dll
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.application:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | QdUyD82Lb7cNCfrQOmlwefyFO//GiFZ8JouYV25my0E=
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.exe
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.exe.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | RcHpBruWvU6/h7ZRXZS/egWyNaFWQIXzDqQMbwAIvwA=
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | yLyMmBMg7088f+KqMLEDXG0a1hlIUzmTNpcqeKP3Qgc=
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | R7jgp+nQg1PXHtxsp3Tvt3SoQkF2t7+4NgOlwXW0GME=
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | 6N7MliNbVJSIAIPrecIshMbZ7zEoKLr5SQvud4LDUOw=
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 | HPmyqnMr0MZag8VdlrqYxO1GK5NyDX/YwLzFNoO/z/s=
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | yLyMmBMg7088f+KqMLEDXG0a1hlIUzmTNpcqeKP3Qgc=
103 |
104 |
105 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.vshost.application:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | QdUyD82Lb7cNCfrQOmlwefyFO//GiFZ8JouYV25my0E=
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.vshost.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.vshost.exe
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.vshost.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.vshost.exe.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | RcHpBruWvU6/h7ZRXZS/egWyNaFWQIXzDqQMbwAIvwA=
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | yLyMmBMg7088f+KqMLEDXG0a1hlIUzmTNpcqeKP3Qgc=
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | R7jgp+nQg1PXHtxsp3Tvt3SoQkF2t7+4NgOlwXW0GME=
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | 6N7MliNbVJSIAIPrecIshMbZ7zEoKLr5SQvud4LDUOw=
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 | HPmyqnMr0MZag8VdlrqYxO1GK5NyDX/YwLzFNoO/z/s=
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | yLyMmBMg7088f+KqMLEDXG0a1hlIUzmTNpcqeKP3Qgc=
103 |
104 |
105 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GraphInfo.txt:
--------------------------------------------------------------------------------
1 | "block":{
2 |
3 | "contribs": "0"
4 | "fill": "#eeeeee"
5 | "date": "4/10/2016"
6 | },
7 | "block":{
8 |
9 | "contribs": "0"
10 | "fill": "#eeeeee"
11 | "date": "4/11/2016"
12 | },
13 | "block":{
14 |
15 | "contribs": "0"
16 | "fill": "#eeeeee"
17 | "date": "4/12/2016"
18 | },
19 | "block":{
20 |
21 | "contribs": "0"
22 | "fill": "#eeeeee"
23 | "date": "4/13/2016"
24 | },
25 | "block":{
26 |
27 | "contribs": "0"
28 | "fill": "#eeeeee"
29 | "date": "4/14/2016"
30 | },
31 | "block":{
32 |
33 | "contribs": "0"
34 | "fill": "#eeeeee"
35 | "date": "4/15/2016"
36 | },
37 | "block":{
38 |
39 | "contribs": "0"
40 | "fill": "#eeeeee"
41 | "date": "4/16/2016"
42 | },
43 | "block":{
44 |
45 | "contribs": "0"
46 | "fill": "#eeeeee"
47 | "date": "4/17/2016"
48 | },
49 | "block":{
50 |
51 | "contribs": "0"
52 | "fill": "#eeeeee"
53 | "date": "4/18/2016"
54 | },
55 | "block":{
56 |
57 | "contribs": "0"
58 | "fill": "#eeeeee"
59 | "date": "4/19/2016"
60 | },
61 | "block":{
62 |
63 | "contribs": "0"
64 | "fill": "#eeeeee"
65 | "date": "4/20/2016"
66 | },
67 | "block":{
68 |
69 | "contribs": "0"
70 | "fill": "#eeeeee"
71 | "date": "4/21/2016"
72 | },
73 | "block":{
74 |
75 | "contribs": "0"
76 | "fill": "#eeeeee"
77 | "date": "4/22/2016"
78 | },
79 | "block":{
80 |
81 | "contribs": "0"
82 | "fill": "#eeeeee"
83 | "date": "4/23/2016"
84 | },
85 | "block":{
86 |
87 | "contribs": "0"
88 | "fill": "#eeeeee"
89 | "date": "4/24/2016"
90 | },
91 | "block":{
92 |
93 | "contribs": "0"
94 | "fill": "#eeeeee"
95 | "date": "4/25/2016"
96 | },
97 | "block":{
98 |
99 | "contribs": "0"
100 | "fill": "#eeeeee"
101 | "date": "4/26/2016"
102 | },
103 | "block":{
104 |
105 | "contribs": "0"
106 | "fill": "#eeeeee"
107 | "date": "4/27/2016"
108 | },
109 | "block":{
110 |
111 | "contribs": "0"
112 | "fill": "#eeeeee"
113 | "date": "4/28/2016"
114 | },
115 | "block":{
116 |
117 | "contribs": "0"
118 | "fill": "#eeeeee"
119 | "date": "4/29/2016"
120 | },
121 | "block":{
122 |
123 | "contribs": "0"
124 | "fill": "#eeeeee"
125 | "date": "4/30/2016"
126 | },
127 | "block":{
128 |
129 | "contribs": "0"
130 | "fill": "#eeeeee"
131 | "date": "5/1/2016"
132 | },
133 | "block":{
134 |
135 | "contribs": "0"
136 | "fill": "#eeeeee"
137 | "date": "5/2/2016"
138 | },
139 | "block":{
140 |
141 | "contribs": "0"
142 | "fill": "#eeeeee"
143 | "date": "5/3/2016"
144 | },
145 | "block":{
146 |
147 | "contribs": "0"
148 | "fill": "#eeeeee"
149 | "date": "5/4/2016"
150 | },
151 | "block":{
152 |
153 | "contribs": "0"
154 | "fill": "#eeeeee"
155 | "date": "5/5/2016"
156 | },
157 | "block":{
158 |
159 | "contribs": "0"
160 | "fill": "#eeeeee"
161 | "date": "5/6/2016"
162 | },
163 | "block":{
164 |
165 | "contribs": "0"
166 | "fill": "#eeeeee"
167 | "date": "5/7/2016"
168 | },
169 | "block":{
170 |
171 | "contribs": "0"
172 | "fill": "#eeeeee"
173 | "date": "5/8/2016"
174 | },
175 | "block":{
176 |
177 | "contribs": "0"
178 | "fill": "#eeeeee"
179 | "date": "5/9/2016"
180 | },
181 | "block":{
182 |
183 | "contribs": "0"
184 | "fill": "#eeeeee"
185 | "date": "5/10/2016"
186 | },
187 | "block":{
188 |
189 | "contribs": "0"
190 | "fill": "#eeeeee"
191 | "date": "5/11/2016"
192 | },
193 | "block":{
194 |
195 | "contribs": "0"
196 | "fill": "#eeeeee"
197 | "date": "5/12/2016"
198 | },
199 | "block":{
200 |
201 | "contribs": "0"
202 | "fill": "#eeeeee"
203 | "date": "5/13/2016"
204 | },
205 | "block":{
206 |
207 | "contribs": "1"
208 | "fill": "#d6e685"
209 | "date": "5/14/2016"
210 | },
211 | "block":{
212 |
213 | "contribs": "0"
214 | "fill": "#eeeeee"
215 | "date": "5/15/2016"
216 | },
217 | "block":{
218 |
219 | "contribs": "0"
220 | "fill": "#eeeeee"
221 | "date": "5/16/2016"
222 | },
223 | "block":{
224 |
225 | "contribs": "0"
226 | "fill": "#eeeeee"
227 | "date": "5/17/2016"
228 | },
229 | "block":{
230 |
231 | "contribs": "0"
232 | "fill": "#eeeeee"
233 | "date": "5/18/2016"
234 | },
235 | "block":{
236 |
237 | "contribs": "0"
238 | "fill": "#eeeeee"
239 | "date": "5/19/2016"
240 | },
241 | "block":{
242 |
243 | "contribs": "0"
244 | "fill": "#eeeeee"
245 | "date": "5/20/2016"
246 | },
247 | "block":{
248 |
249 | "contribs": "0"
250 | "fill": "#eeeeee"
251 | "date": "5/21/2016"
252 | },
253 | "block":{
254 |
255 | "contribs": "0"
256 | "fill": "#eeeeee"
257 | "date": "5/22/2016"
258 | },
259 | "block":{
260 |
261 | "contribs": "0"
262 | "fill": "#eeeeee"
263 | "date": "5/23/2016"
264 | },
265 | "block":{
266 |
267 | "contribs": "0"
268 | "fill": "#eeeeee"
269 | "date": "5/24/2016"
270 | },
271 | "block":{
272 |
273 | "contribs": "1"
274 | "fill": "#d6e685"
275 | "date": "5/25/2016"
276 | },
277 | "block":{
278 |
279 | "contribs": "0"
280 | "fill": "#eeeeee"
281 | "date": "5/26/2016"
282 | },
283 | "block":{
284 |
285 | "contribs": "0"
286 | "fill": "#eeeeee"
287 | "date": "5/27/2016"
288 | },
289 | "block":{
290 |
291 | "contribs": "0"
292 | "fill": "#eeeeee"
293 | "date": "5/28/2016"
294 | },
295 | "block2":{
296 |
297 | "contribs": "0"
298 | "fill": "#eeeeee"
299 | "date": "5/29/2016"
300 | },
301 | "block2":{
302 |
303 | "contribs": "0"
304 | "fill": "#eeeeee"
305 | "date": "5/30/2016"
306 | },
307 | "block2":{
308 |
309 | "contribs": "0"
310 | "fill": "#eeeeee"
311 | "date": "5/31/2016"
312 | },
313 | "block2":{
314 |
315 | "contribs": "3"
316 | "fill": "#d6e685"
317 | "date": "6/1/2016"
318 | },
319 | "block2":{
320 |
321 | "contribs": "12"
322 | "fill": "#44a340"
323 | "date": "6/2/2016"
324 | },
325 | "block2":{
326 |
327 | "contribs": "8"
328 | "fill": "#8cc665"
329 | "date": "6/3/2016"
330 | },
331 | "block2":{
332 |
333 | "contribs": "2"
334 | "fill": "#d6e685"
335 | "date": "6/4/2016"
336 | },
337 | "block2":{
338 |
339 | "contribs": "0"
340 | "fill": "#eeeeee"
341 | "date": "6/5/2016"
342 | },
343 | "block2":{
344 |
345 | "contribs": "5"
346 | "fill": "#8cc665"
347 | "date": "6/6/2016"
348 | },
349 | "block2":{
350 |
351 | "contribs": "9"
352 | "fill": "#8cc665"
353 | "date": "6/7/2016"
354 | },
355 | "block2":{
356 |
357 | "contribs": "1"
358 | "fill": "#d6e685"
359 | "date": "6/8/2016"
360 | },
361 | "block2":{
362 |
363 | "contribs": "4"
364 | "fill": "#d6e685"
365 | "date": "6/9/2016"
366 | },
367 | "block2":{
368 |
369 | "contribs": "19"
370 | "fill": "#1e6823"
371 | "date": "6/10/2016"
372 | },
373 | "block2":{
374 |
375 | "contribs": "9"
376 | "fill": "#8cc665"
377 | "date": "6/11/2016"
378 | },
379 | "block2":{
380 |
381 | "contribs": "1"
382 | "fill": "#d6e685"
383 | "date": "6/12/2016"
384 | },
385 | "block2":{
386 |
387 | "contribs": "2"
388 | "fill": "#d6e685"
389 | "date": "6/13/2016"
390 | },
391 | "block2":{
392 |
393 | "contribs": "5"
394 | "fill": "#8cc665"
395 | "date": "6/14/2016"
396 | },
397 | "block2":{
398 |
399 | "contribs": "14"
400 | "fill": "#44a340"
401 | "date": "6/15/2016"
402 | },
403 | "block2":{
404 |
405 | "contribs": "3"
406 | "fill": "#d6e685"
407 | "date": "6/16/2016"
408 | },
409 | "block2":{
410 |
411 | "contribs": "1"
412 | "fill": "#d6e685"
413 | "date": "6/17/2016"
414 | },
415 | "block2":{
416 |
417 | "contribs": "2"
418 | "fill": "#d6e685"
419 | "date": "6/18/2016"
420 | },
421 | "block2":{
422 |
423 | "contribs": "3"
424 | "fill": "#d6e685"
425 | "date": "6/19/2016"
426 | },
427 | "block2":{
428 |
429 | "contribs": "15"
430 | "fill": "#1e6823"
431 | "date": "6/20/2016"
432 | },
433 | "block2":{
434 |
435 | "contribs": "10"
436 | "fill": "#44a340"
437 | "date": "6/21/2016"
438 | },
439 | "block2":{
440 |
441 | "contribs": "2"
442 | "fill": "#d6e685"
443 | "date": "6/22/2016"
444 | },
445 | "block2":{
446 |
447 | "contribs": "0"
448 | "fill": "#eeeee"
449 | "date": " "
450 | },
451 | "block2":{
452 |
453 | "contribs": "0"
454 | "fill": "#eeeee"
455 | "date": " "
456 | },
457 | "block2":{
458 |
459 | "contribs": "0"
460 | "fill": "#eeeee"
461 | "date": " "
462 | },
463 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/GraphInfoWeek.txt:
--------------------------------------------------------------------------------
1 | "block":{
2 |
3 | "contribs": "3"
4 | "fill": "#d6e685"
5 | "date": "6/19/2016"
6 | },
7 | "block":{
8 |
9 | "contribs": "15"
10 | "fill": "#1e6823"
11 | "date": "6/20/2016"
12 | },
13 | "block":{
14 |
15 | "contribs": "10"
16 | "fill": "#44a340"
17 | "date": "6/21/2016"
18 | },
19 | "block":{
20 |
21 | "contribs": "2"
22 | "fill": "#d6e685"
23 | "date": "6/22/2016"
24 | },
25 | "block":{
26 |
27 | "contribs": "0"
28 | "fill": "#eeeee"
29 | "date": " "
30 | },
31 | "block":{
32 |
33 | "contribs": "0"
34 | "fill": "#eeeee"
35 | "date": " "
36 | },
37 | "block":{
38 |
39 | "contribs": "0"
40 | "fill": "#eeeee"
41 | "date": " "
42 | },
43 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/WebDriver.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/GitHubScraper/GitHubScraper/bin/Debug/WebDriver.dll
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/app.publish/GitHubScraper.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/GitHubScraper/GitHubScraper/bin/Debug/app.publish/GitHubScraper.exe
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/bin/Debug/phantomjs.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/GitHubScraper/GitHubScraper/bin/Debug/phantomjs.exe
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/@Resources/GitHubScraper/GitHubScraper/phantomjs.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/GitHubScraper/GitHubScraper/phantomjs.exe
--------------------------------------------------------------------------------
/@Resources/Images/exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Images/exit.png
--------------------------------------------------------------------------------
/@Resources/Images/github-calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Images/github-calendar.png
--------------------------------------------------------------------------------
/@Resources/Images/info_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/Images/info_background.png
--------------------------------------------------------------------------------
/@Resources/config.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/config.txt
--------------------------------------------------------------------------------
/@Resources/github-calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/github-calendar.png
--------------------------------------------------------------------------------
/@Resources/images/Button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/images/Button.png
--------------------------------------------------------------------------------
/@Resources/images/Button2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/images/Button2.png
--------------------------------------------------------------------------------
/@Resources/images/Close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/images/Close.png
--------------------------------------------------------------------------------
/@Resources/images/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/images/background.png
--------------------------------------------------------------------------------
/@Resources/images/configback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/images/configback.png
--------------------------------------------------------------------------------
/@Resources/images/github_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/images/github_logo.png
--------------------------------------------------------------------------------
/@Resources/preview/Preview.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/@Resources/preview/Preview.gif
--------------------------------------------------------------------------------
/@Resources/script.lua:
--------------------------------------------------------------------------------
1 | -- ## Information ###################################################################
2 | -- Filename: script.lua
3 | -- Project: GitHubCalendar
4 | -- Author: Brett Stevenson
5 | -- License: BSD 3-Clause
6 | -- Updated: Sept 26, 2016
7 | -- ###############################################################################
8 |
9 | -- ## Description ###################################################################
10 | -- A work-in-progress Lua script, intended to improve the performance/functionality of the
11 | -- GitHubCalendar Rainmeter skin by automating the creation and simplifying the modification
12 | -- and update processes.
13 | -- ###############################################################################
14 |
15 |
16 | -- ## Initialize() ##################################################################
17 | -- The Initialize() function contains code that will be executed when the skin is loaded from within Rainmeter or when major changes are made to the data of the skin.
18 | -- ##############################################################################
19 |
20 | function Initialize()
21 | local dataFile = SKIN:GetVariable('dataPath')
22 | local file = io.open(dataFile, "r")
23 | --Loop that writes the values for each block
24 | for i=1, 70 do
25 | local squareMeter = "Square" .. i
26 | SKIN:Bang("!WriteKeyValue", squareMeter, "Meter", "Bar")
27 | -- Reads values from C# txt file and stores them in lists
28 | local contribs = file:read("*line")
29 | local fill = file:read("*line")
30 | local date = file:read("*line")
31 | -- Set the X and Y position and meter style
32 | local remainder = (i-1)%7
33 | if i == 1 then
34 | SKIN:Bang("!WriteKeyValue", squareMeter, "MeterStyle", "SquareStyle")
35 | SKIN:Bang('!WriteKeyValue', squareMeter, 'X', '20')
36 | SKIN:Bang('!WriteKeyValue', squareMeter, 'Y', '15')
37 | elseif remainder == 0 then
38 | SKIN:Bang("!WriteKeyValue", squareMeter, "MeterStyle", "SquareStyle | WeekStartStyle")
39 | else
40 | SKIN:Bang("!WriteKeyValue", squareMeter, "MeterStyle", "SquareStyle")
41 | end
42 | -- Set the color of the square
43 | local color = string.sub(fill, 2)
44 | if color == "d6e685" then
45 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#Color1#")
46 | elseif color == "8cc665" then
47 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#Color2#")
48 | elseif color == "44a340" then
49 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#Color3#")
50 | elseif color == "1e6823" then
51 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#Color4#")
52 | else
53 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#EmptyColor#")
54 | end
55 | --Set the date of the square as ToolTipText
56 | --Set square to display contributions on mouse-over action
57 | if(string.len(date) >= 8) then
58 | SKIN:Bang('!WriteKeyValue', squareMeter, 'ToolTipText', date)
59 | SKIN:Bang('!WriteKeyValue', squareMeter, 'MouseOverAction', '[!SetOption Active Text "Contributions: ' ..contribs ..'"][!UpdateMeter Active][!Redraw]')
60 | else
61 | SKIN:Bang('!WriteKeyValue', squareMeter, 'ToolTipText', "")
62 | SKIN:Bang('!WriteKeyValue', squareMeter, 'MouseOverAction', '[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]')
63 | end
64 | end
65 | file:close()
66 | end
67 |
68 |
69 |
70 | -- #### Update() ####################################################################
71 | -- The Update() function contains code that will be executed when the skin is automatically updated or
72 | -- manually refreshed, reducing the amount of work needed to update the skin.
73 | -- ##############################################################################
74 |
75 | function Update( )
76 | print("Updating")
77 | local dataPath = SKIN:GetVariable('DataPath')
78 | local checkFile = io.open(dataPath, "r")
79 | checkFile:read("*line")
80 | checkFile:read("*line")
81 | local testDate = checkFile:read("*line")
82 | -- checkFile.close()
83 | local Meter = SKIN:GetMeter('Square1')
84 | if testDate ~= Meter:GetOption('ToolTipText') then
85 | --It's a new week
86 | Initialize()
87 | else
88 | print("Current Week")
89 | local weekPath = SKIN:GetVariable('WeekPath')
90 | local file = io.open(weekPath, "r")
91 | for i=64, 70 do
92 | local contribs = file:read("*line")
93 | local fill = file:read("*line")
94 | local date = file:read("*line")
95 | local squareMeter = SKIN:GetMeter('Square'..i)
96 | local color = string.sub(fill, 2)
97 | if color == "d6e685" then
98 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#Color1#")
99 | elseif color == "8cc665" then
100 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#Color2#")
101 | elseif color == "44a340" then
102 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#Color3#")
103 | elseif color == "1e6823" then
104 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#Color4#")
105 | else
106 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#EmptyColor#")
107 | end
108 | --Set square to display contributions on mouse-over action and date as tooltip
109 | if(string.len(date) >= 8) then
110 | SKIN:Bang('!SetOption', squareMeter, 'ToolTipText', date)
111 | SKIN:Bang('!SetOption', squareMeter, 'MouseOverAction', '[!SetOption Active Text "Contributions: ' ..contribs ..'"][!UpdateMeter Active][!Redraw]')
112 | else
113 | SKIN:Bang('!SetOption', squareMeter, 'ToolTipText', "")
114 | SKIN:Bang('!SetOption', squareMeter, 'MouseOverAction', '[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]')
115 | end
116 | end
117 | -- file:close()
118 | end
119 | return 1;
120 | end
121 |
--------------------------------------------------------------------------------
/@Resources/style.inc:
--------------------------------------------------------------------------------
1 | [Variables]
2 | Contribs=0
3 | EmptyColor=175,175,175,95
4 | Color1=239,255,158,200
5 | Color2=130,188,91,250
6 | Color3=80,155,75,250
7 | Color4=10,105,6,250
8 | TextColor=255,255,255,210
9 | TextFont=Serif
10 | TextSize=9
11 | TextGap=20
12 | Radius=6
13 | SquareGap=13
14 | SquareSize=(#Radius# * 2)
15 | TextWidth=((#SquareGap# * 2) + #SquareSize#)
16 | ScraperPath="#@#GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.exe"
17 | ProfilePath="https://github.com/#USERNAME#"
18 |
19 | [BackgroundStyle]
20 | ImageName=#@#images/background.png
21 | ImageTint=0,0,0,60
22 | X=0
23 | Y=3
24 | H=127
25 | W=165
26 |
27 | [LogoStyle]
28 | ImageName=#@#images/github_logo.png
29 | ImageTint=235,235,235,155
30 | X=142
31 | Y=108
32 | H=18
33 | W=18
34 |
35 | [SquareStyle]
36 | X=r
37 | Y=#SquareGap#r
38 | H=#SquareSize#
39 | W=#SquareSize#
40 | Solid=1
41 | LineStart=0
42 | AntiAlias=1
43 | SolidColor=#EmptyColor#
44 | LineLength=#BlockRadius#
45 | MouseLeaveAction=[!SetOption Active Text " "][!UpdateMeter Active][!Redraw]
46 |
47 | [ActiveStyle]
48 | X=85
49 | Y=109
50 | H=#SquareSize#
51 | W=#SquareSize#
52 | FontFace=#TextFont#
53 | FontSize=#TextSize#
54 | FontColor=#TextColor#
55 | StringAlign=CENTER
56 | AntiAlias=1
57 |
58 | [WeekStartStyle]
59 | X=#SquareGap#r
60 | Y=15
61 |
62 | [LabelStyle]
63 | FontSize=7
64 | FontFace=#TextStyle#
65 | FontColor=#TextColor#
66 | X=3
67 | Y=25r
68 | H=#Radius#
69 | W=#Radius#
70 |
71 | [ConfigDesc]
72 | FontFace=#TextFont#
73 | FontSize=14
74 | StringStyle=Bold
75 | FontColor=230,230,230,240
76 | StringEffect=Shadow
77 | FontEffectColor = 0,0,0,200
78 |
79 | [InfoTitle]
80 | Meter=String
81 | FontFace=#LocalFontFace#
82 | FontSize=19
83 | StringAlign=Center
84 | StringStyle=Bold
85 | FontColor=230,230,230,240
86 | StringEffect=Shadow
87 | FontEffectColor = 0,0,0,200
88 |
89 | [InfoText]
90 | Meter=String
91 | FontFace=Monospaced
92 | FontSize=11
93 | FontColor=230,230,230,240
94 | StringEffect=Shadow
95 | FontEffectColor = 0,0,0,150
96 |
--------------------------------------------------------------------------------
/@Resources/week.lua:
--------------------------------------------------------------------------------
1 | -- ## Information ###################################################################
2 | -- Filename: script.lua
3 | -- Project: GitHubCalendar
4 | -- Author: Brett Stevenson
5 | -- License: BSD 3-Clause
6 | -- Updated: Sept 26, 2016
7 | -- ###############################################################################
8 |
9 | -- ## Description ###################################################################
10 | -- A work-in-progress Lua script, intended to improve the performance/functionality of the
11 | -- GitHubCalendar Rainmeter skin by automating the creation and simplifying the modification
12 | -- and update processes.
13 | -- ###############################################################################
14 |
15 |
16 | -- ## Initialize() ##################################################################
17 | -- The Initialize() function contains code that will be executed when the skin is loaded from within Rainmeter or when major changes are made to the data of the skin.
18 | -- ##############################################################################
19 |
20 | function Initialize()
21 | local dataFile = SKIN:GetVariable('dataPath')
22 | local file = io.open(dataFile, "r")
23 | --Loop that writes the values for each block
24 | for i=1, 7 do
25 | local squareMeter = "Square" .. i
26 | SKIN:Bang("!WriteKeyValue", squareMeter, "Meter", "Bar")
27 | -- Reads values from C# txt file and stores them in lists
28 | local contribs = file:read("*line")
29 | local fill = file:read("*line")
30 | local date = file:read("*line")
31 | -- Set the X and Y position and meter style
32 | local remainder = (i-1)%7
33 | if i == 1 then
34 | SKIN:Bang("!WriteKeyValue", squareMeter, "MeterStyle", "SquareStyle")
35 | SKIN:Bang('!WriteKeyValue', squareMeter, 'X', '20')
36 | SKIN:Bang('!WriteKeyValue', squareMeter, 'Y', '24')
37 | elseif remainder == 0 then
38 | SKIN:Bang("!WriteKeyValue", squareMeter, "MeterStyle", "SquareStyle | WeekStartStyle")
39 | else
40 | SKIN:Bang("!WriteKeyValue", squareMeter, "MeterStyle", "SquareStyle")
41 | end
42 | -- Set the color of the square
43 | local color = string.sub(fill, 2)
44 | if color == "d6e685" then
45 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#Color1#")
46 | elseif color == "8cc665" then
47 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#Color2#")
48 | elseif color == "44a340" then
49 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#Color3#")
50 | elseif color == "1e6823" then
51 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#Color4#")
52 | else
53 | SKIN:Bang('!WriteKeyValue', squareMeter, 'SolidColor', "#EmptyColor#")
54 | end
55 | --Set the date of the square as ToolTipText
56 | --Set square to display contributions on mouse-over action
57 | if(string.len(date) >= 8) then
58 | SKIN:Bang('!WriteKeyValue', squareMeter, 'ToolTipText', date)
59 | SKIN:Bang('!WriteKeyValue', squareMeter, 'MouseOverAction', '[!SetOption Active Text "' ..contribs ..'"][!UpdateMeter Active][!Redraw]')
60 | else
61 | SKIN:Bang('!WriteKeyValue', squareMeter, 'ToolTipText', "")
62 | SKIN:Bang('!WriteKeyValue', squareMeter, 'MouseOverAction', '[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]')
63 | end
64 | end
65 | file:close()
66 | end
67 |
68 |
69 |
70 | -- #### Update() ####################################################################
71 | -- The Update() function contains code that will be executed when the skin is automatically updated or
72 | -- manually refreshed, reducing the amount of work needed to update the skin.
73 | -- ##############################################################################
74 |
75 | function Update( )
76 | print("Updating")
77 | local dataPath = SKIN:GetVariable('DataPath')
78 | local checkFile = io.open(dataPath, "r")
79 | checkFile:read("*line")
80 | checkFile:read("*line")
81 | local weekPath = SKIN:GetVariable('WeekPath')
82 | local file = io.open(weekPath, "r")
83 | for i=1, 7 do
84 | local contribs = file:read("*line")
85 | local fill = file:read("*line")
86 | local date = file:read("*line")
87 | local squareMeter = SKIN:GetMeter('Square'..i)
88 | local color = string.sub(fill, 2)
89 | if color == "d6e685" then
90 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#Color1#")
91 | elseif color == "8cc665" then
92 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#Color2#")
93 | elseif color == "44a340" then
94 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#Color3#")
95 | elseif color == "1e6823" then
96 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#Color4#")
97 | else
98 | SKIN:Bang('!SetOption', squareMeter, 'SolidColor', "#EmptyColor#")
99 | end
100 | --Set square to display contributions on mouse-over action and date as tooltip
101 | if(string.len(date) >= 8) then
102 | SKIN:Bang('!SetOption', squareMeter, 'ToolTipText', date)
103 | SKIN:Bang('!SetOption', squareMeter, 'MouseOverAction', '[!SetOption Active Text "'..contribs ..'"][!UpdateMeter Active][!Redraw]')
104 | else
105 | SKIN:Bang('!SetOption', squareMeter, 'ToolTipText', "")
106 | SKIN:Bang('!SetOption', squareMeter, 'MouseOverAction', '[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]')
107 | end
108 | end
109 | return 1;
110 | end
111 |
--------------------------------------------------------------------------------
/Config/Config.ini:
--------------------------------------------------------------------------------
1 | ;## Information ###################################################################
2 | ; Filename: Config.ini
3 | ; Project: GitHubCalendar
4 | ; Author: Brett Stevenson
5 | ; Contact: BStevensonDev@gmail.com
6 | ; Version: 1.1.3
7 | ; License: BSD 3-Clause
8 | ; Updated: Jan 3, 2017
9 | ;###############################################################################
10 |
11 | [Rainmeter]
12 | Name=Config
13 | Author=Brett Stevenson
14 | Contact=BStevensonDev@gmail.com
15 | Version=1.1.3
16 | License=BSD 3-Clause
17 | DynamicWindowSize=1
18 | Update=1000
19 |
20 | ;----------------------------------------------
21 | ; VARIABLES
22 |
23 | [Variables]
24 | @include="#@#style.inc"
25 | WritePath="#@#config.txt"
26 | Username=Username
27 |
28 | ;----------------------------------------------
29 | ; MEASURES
30 |
31 | [MeasureUserInput]
32 | Measure=Plugin
33 | Plugin=InputText
34 | FontSize=11
35 | FontFace=Segoe UI
36 | StringStyle=Bold
37 | SolidColor=70,70,70,175
38 | FontColor=150,150,150, 210
39 | X=226
40 | Y=257
41 | H=20
42 | W=80
43 | Command1=[!SetVariable Username "$UserInput$"][!ShowMeter MeterUsernameField][!CommandMeasure MeasureLuaScript "Write()"][!Update][!Redraw]
44 | OnDismissAction=[!ShowMeter MeterUsernameField][!Redraw]
45 | Command2=[!SetVariable numWeeks "$UserInput$"][!ShowMeter MeterSizeField][!CommandMeasure MeasureLuaScript "Write()"][!Update][!Redraw]
46 | OnDismissAction=[!ShowMeter MeterUsernameField][!Redraw]
47 | DynamicVariables=1
48 | UpdateDivider=-1
49 | FocusDismiss=1
50 | AntiAlias=1
51 |
52 | [MeasureLuaScript]
53 | Measure=Script
54 | ScriptFile="#@#Config.lua"
55 | WriteTo=#WritePath#
56 | Input=#Username#
57 | Weeks=#numWeeks#
58 | UpdateDivider=5
59 |
60 | ;----------------------------------------------
61 | ; METERS
62 |
63 | [MeterBackground]
64 | Meter=Image
65 | ImageName="#@#images\configback.png"
66 | X=30
67 | Y=15
68 | H=450
69 | W=450
70 |
71 | [MeterDesc]
72 | Meter=String
73 | FontFace=Segoe UI
74 | FontSize=13
75 | StringStyle=Bold
76 | FontColor=230,230,230,240
77 | StringEffect=Shadow
78 | FontEffectColor = 0,0,0,200
79 | X=135
80 | Y=230
81 | Text="Enter your GitHub username: "
82 |
83 | [MeterURL]
84 | Meter=String
85 | FontFace=Segoe UI
86 | FontSize=11
87 | FontColor=230,230,230,240
88 | StringStyle=Bold
89 | StringEffect=Shadow
90 | FontEffectColor = 0,0,0,150
91 | X=169
92 | Y=266
93 | Text="github.com/ "
94 |
95 | [MeterUsernameField]
96 | Meter=String
97 | MeasureName=MeasureLuaScript
98 | FontFace=Segoe UI
99 | FontSize=11
100 | StringStyle=Bold
101 | StringEffect=Shadow
102 | SolidColor=75,75,75,195
103 | FontColor=190,190,190, 200
104 | FontEffectColor = 0,0,0,150
105 | X=89r
106 | Y=266
107 | H=20
108 | W=80
109 | LeftMouseUpAction=[!HideMeter MeterUsernameField][!CommandMeasure "MeasureUserInput" "ExecuteBatch 1"]
110 | DynamicVariables=1
111 | ClipString=1
112 | AntiAlias=1
113 |
114 | ; [MeterButton]
115 | ; Meter=Image
116 | ; ImageName=#@#images/Button.png
117 | ; ImageAlpha=210
118 | ; X=83r
119 | ; Y=404
120 | ; H=22
121 | ; W=22
122 | ; LeftMouseDownAction=[!SetOption MeterButton ImageName "#@#images/Button2.png"][!ToggleConfig "GitHubCalendar" "GitHubCalendar.ini"][!ToggleConfig "GitHubCalendar\Config" "Info.ini"]
123 |
124 | [MeterSizeText]
125 | Meter=String
126 | FontFace=Segoe UI
127 | FontSize=11
128 | FontColor=230,230,230,240
129 | StringStyle=Bold
130 | StringEffect=Shadow
131 | FontEffectColor = 0,0,0,150
132 | X=153
133 | Y=306
134 | Text=Range of calendar:
135 |
136 | [MeterSizeField]
137 | Meter=String
138 | MeasureName=MeasureLuaScript
139 | FontFace=Segoe UI
140 | FontSize=11
141 | StringStyle=Bold
142 | StringEffect=Shadow
143 | SolidColor=75,75,75,195
144 | FontColor=190,190,190, 200
145 | FontEffectColor = 0,0,0,150
146 | Text=10
147 | X=138r
148 | Y=-2r
149 | H=20
150 | W=25
151 | LeftMouseUpAction=[!HideMeter MeterSizeField][!CommandMeasure "MeasureUserInput" "ExecuteBatch 2"]
152 | DynamicVariables=1
153 | ClipString=1
154 | AntiAlias=1
155 |
156 | [MeterWeeksText]
157 | Meter=String
158 | FontSize=10
159 | FontFace=Segoe UI
160 | FontColor=230,230,230,240
161 | StringStyle=Bold
162 | StringEffect=Shadow
163 | FontEffectColor = 0,0,0,150
164 | X=28r
165 | Y=3r
166 | Text= weeks
167 |
168 | [MeterExit]
169 | Meter=Image
170 | ImageName=#@#images/close.png
171 | ImageTint=250,250,250, 200
172 | X=400
173 | Y=68
174 | H=15
175 | W=15
176 | LeftMouseDownAction=[!ToggleConfig "GitHubCalendar\Config" "Config.ini"]
177 |
--------------------------------------------------------------------------------
/Config/Info.ini:
--------------------------------------------------------------------------------
1 | ;## Information ###############################################################
2 | ; Filename: Info.ini
3 | ; Project: GitHubCalendar
4 | ; Author: Brett Stevenson
5 | ; Contact: BStevensonDev@gmail.com
6 | ; Version: 1.1.3
7 | ; License: BSD 3-Clause
8 | ; Updated: Jan 3, 2017
9 | ;###########################################################################
10 |
11 | [Rainmeter]
12 | Name=Info
13 | Author=Brett Stevenson
14 | Contact=BStevensonDev@gmail.com
15 | Version=1.1.3
16 | License=BSD 3-Clause
17 | DynamicWindowSize=1
18 | Update=1000
19 | ;----------------------------------------------
20 | ; VARIABLES
21 |
22 | [Variables]
23 | @include="#@#style.inc"
24 |
25 | ;----------------------------------------------
26 | ; METERS
27 |
28 | [MeterBackground]
29 | Meter=Image
30 | ImageName="#@#images\info_background.png"
31 | ImageAlpha=215
32 | X=0
33 | Y=0
34 | H=410
35 | W=310
36 |
37 | [MeterTitle]
38 | Meter=String
39 | MeterStyle=InfoTitle
40 | X=152
41 | Y=17
42 | Text=INSTRUCTIONS
43 |
44 | [MeterImage]
45 | Meter=Image
46 | ImageName="#@#images\github-calendar.png"
47 | ImageAlpha=150
48 | X=65
49 | Y=62
50 | H=175
51 | W=175
52 |
53 | [MeterIconLMB]
54 | Meter=Image
55 | MeterStyle=LogoStyle
56 | X=122
57 | Y=260
58 | H=20
59 | W=20
60 |
61 | [MeterIconRMB]
62 | Meter=Image
63 | MeterStyle=LogoStyle
64 | X=134
65 | Y=320
66 | H=20
67 | W=20
68 |
69 | [MeterLMB]
70 | Meter=String
71 | MeterStyle=InfoTitle
72 | FontSize=13
73 | StringAlign=Left
74 | X=32
75 | Y=258
76 | Text=Left-Click:
77 |
78 | [MeterRMB]
79 | Meter=String
80 | MeterStyle=InfoTitle
81 | FontSize=13
82 | StringAlign=Left
83 | X=32
84 | Y=318
85 | Text=Right-Click:
86 |
87 | [MeterLMBDesc]
88 | Meter=String
89 | MeterStyle=InfoText
90 | X=37
91 | Y=283
92 | Text=Run data collection program
93 |
94 | [MeterRMBDesc]
95 | Meter=String
96 | MeterStyle=InfoText
97 | X=37
98 | Y=343
99 | Text=Update/Refresh skin display
100 |
101 | [MeterExit]
102 | Meter=Image
103 | ImageName=#@#images/exit.png
104 | ImageTint=180,180,180,255
105 | X=271
106 | Y=23
107 | H=10
108 | W=10
109 | LeftMouseDownAction=[!ToggleConfig "GitHubCalendar\Config" "Info.ini"]
110 |
--------------------------------------------------------------------------------
/Documentation/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | The following is a set of guidelines for contributing to this project. These are not rules, use your best judgment and feel free to propose changes to this document in a pull request.
4 |
5 | ### Code of Conduct
6 |
7 | This project adheres to the Contributor Covenant [code of conduct](http://contributor-covenant.org/version/1/4/). By participating, you are expected to uphold this code. Please report unacceptable behavior to atom@github.com.
8 |
9 | ## How Can I Contribute?
10 |
11 | ### Reporting Bugs
12 |
13 | This section guides you through submitting a bug report for Atom. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.
14 |
15 | * Before creating bug reports, please check the [existing issues](http://github.com/JonSn0w/Atomic-Monokai-Syntax/issues) as you might find out that one has already been created by another user.
16 | * When you are creating a bug report, please provide a clear and descriptive title.
17 | * Please include as many details as possible in your report. Remember, in order to fix the issue, we must first be able to reproduce it.
18 | * The use of images, GIFs, or any other form of media is not only *allowed*, it's **encouraged**.
19 | * Include any relevant details about your configuration and environment.
20 |
21 | ### Enhancements & Feature Requests
22 |
23 | Users provide the best insight for improving a product. So always feel free to suggest improvements, feedback, and give the developers an idea of what new features you'd like to see in the future.
24 | **Don't forget, this is one of the greatest benefits of open-source development!**
25 | If you'd like to submit an enhancement request, please include the following information:
26 | * Current project version (check that you are using the latest version)
27 | * How would this enhancement benefit most users?
28 | * Do you have any examples of other applications that feature this enhancement?
29 | * Relevant details about your configuration and environment.
30 | * ***Note:*** Don't forget to tag your post with the *Enhancement* label.
31 |
32 |
33 | ### Pull Requests
34 | * Provide as much information as possible on the changes made to existing code.
35 | * Include thoughtfully-worded, well-structured commit messages and comments.
36 | * Include screenshots and animated GIFs in your pull request whenever possible.
37 | * When addressing an existing issue, please include an [issue mention](https://github.com/blog/957-introducing-issue-mentions) in the description of your pull request.
38 | * End files with a newline.
39 | * Avoid platform-dependent code on cross-platform applications.
40 | * Ensure that submitted code follows the style guidlines specified in the [Styleguide](#styleguide) below.
41 |
42 |
43 | ## Styleguides
44 |
45 | ### Commit Messages
46 | * Do your best to conform the tense to that of the existing commits. ("Add feature" not "Added feature" or vice versa)
47 | * Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
48 | * Consider starting the commit message with an applicable emoji:
49 | * :art: `:art:` when improving the format/structure of the code
50 | * :racehorse: `:racehorse:` when improving performance
51 | * :non-potable_water: `:non-potable_water:` when plugging memory leaks
52 | * :memo: `:memo:` when writing docs
53 | * :penguin: `:penguin:` when fixing something on Linux
54 | * :apple: `:apple:` when fixing something on macOS
55 | * :checkered_flag: `:checkered_flag:` when fixing something on Windows
56 | * :bug: `:bug:` when fixing a bug
57 | * :fire: `:fire:` when removing code or files
58 | * :green_heart: `:green_heart:` when fixing the CI build
59 | * :white_check_mark: `:white_check_mark:` when adding tests
60 | * :lock: `:lock:` when dealing with security
61 | * :arrow_up: `:arrow_up:` when upgrading dependencies
62 | * :arrow_down: `:arrow_down:` when downgrading dependencies
63 | * :shirt: `:shirt:` when removing linter warnings
64 |
65 | ### Code
66 |
67 | * Use spaces around operators
68 | * `count + 1` instead of `count+1`
69 | * Use camelCase rather than underscore_case naming conventions
70 | * `myFunction` instead of `my_function`
71 | * Capitalize initialisms and acronyms in names, except for the first word, which
72 | should be lower-case:
73 | * `getURL` instead of `getUrl`
74 | * Provide comments for important or complex code
75 | * Conform your code to the existing styles to the best of your ability
76 | * Always check that your submission follows [The Boy Scout Rule](http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule)
77 |
--------------------------------------------------------------------------------
/Documentation/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2016 Brett Stevenson
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/GitHubCalendar.ini:
--------------------------------------------------------------------------------
1 | ;## Information ################################################################
2 | ; Filename: GitHubCalendar.ini
3 | ; Project: GitHubCalendar
4 | ; Author: Brett Stevenson
5 | ; Contact: BStevensonDev@gmail.com
6 | ; Version: v1.1.3
7 | ; License: BSD 3-Clause
8 | ; Updated: Jan 3, 2017
9 | ;###############################################################################
10 |
11 | [Rainmeter]
12 | Name=GitHubCalendar
13 | Author=Brett Stevenson
14 | Contact=BStevensonDev@gmail.com
15 | Version=v1.1.3
16 | DynamicWindowSize=1
17 | Update=1000
18 |
19 | ;-------------------------------------------------------------------------------
20 | ; VARIABLES
21 |
22 | [Variables]
23 | @include="#@#style.inc"
24 | ScraperPath="#@#GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.exe"
25 | DataPath="#@#data.txt"
26 | WeekPath="#@#week.txt"
27 | numWeeks=10
28 |
29 | ;-------------------------------------------------------------------------------
30 | ; MEASURES
31 |
32 | [MeasureLuaScript]
33 | Measure=Script
34 | ScriptFile="#@#script.lua"
35 | UpdateDivider=60
36 | NumWeeks=#numWeeks#
37 |
38 | ;-------------------------------------------------------------------------------
39 | ; METERS
40 |
41 | [Background]
42 | Meter=Image
43 | MeterStyle=BackgroundStyle
44 | W=((#numWeeks# + 18) + ((#numWeeks# + 1) * 12))
45 |
46 | [MeterLogo]
47 | Meter=Image
48 | MeterStyle=LogoStyle
49 | X=(#numWeeks# * 14.2)
50 | ; Left-click runs the web scraper program and executes script.lua
51 | LeftMouseDownAction=["#ScraperPath#"]
52 | LeftMouseUpAction=[!CommandMeasure MeasureLuaScript "Initialize()"][!Redraw][!Refresh]
53 | ; Right-click re-initializes the skin by calling Initialize from script.lua
54 | RightMouseDownAction=[!Redraw][!Refresh]
55 | MouseOverAction=[!SetOption Active Text "Update"][!UpdateMeter Active][!Redraw]
56 |
57 | [Active]
58 | Meter=String
59 | MeterStyle=ActiveStyle
60 | X=(#numWeeks# * 8.5)
61 |
62 | [DayLabel1]
63 | Meter=String
64 | MeterStyle=LabelStyle
65 | Y=27
66 | Text="M"
67 |
68 | [DayLabel2]
69 | Meter=String
70 | MeterStyle=LabelStyle
71 | Text="W"
72 |
73 | [DayLabel3]
74 | Meter=String
75 | MeterStyle=LabelStyle
76 | FontSize=8
77 | X=5
78 | Text="F"
79 |
80 |
81 | ;-------------------------------------------------------------------------------
82 | ; Do not change anything below this line. They are automatically derived from the Lua script.
83 |
84 | [Square1]
85 | Meter=Bar
86 | MeterStyle=SquareStyle
87 | X=20
88 | Y=15
89 | SolidColor=239,255,158,200
90 | ToolTipText=10/30/16
91 | MouseOverAction=[!SetOption Active Text "Contributions: 3"][!UpdateMeter Active][!Redraw]
92 | [Square2]
93 | Meter=Bar
94 | MeterStyle=SquareStyle
95 | SolidColor=239,255,158,200
96 | ToolTipText=10/31/16
97 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
98 | [Square3]
99 | Meter=Bar
100 | MeterStyle=SquareStyle
101 | SolidColor=175,175,175,95
102 | ToolTipText=11/1/16
103 | MouseOverAction=[!SetOption Active Text "Contributions: 0"][!UpdateMeter Active][!Redraw]
104 | [Square4]
105 | Meter=Bar
106 | MeterStyle=SquareStyle
107 | SolidColor=130,188,91,250
108 | ToolTipText=11/2/16
109 | MouseOverAction=[!SetOption Active Text "Contributions: 9"][!UpdateMeter Active][!Redraw]
110 | [Square5]
111 | Meter=Bar
112 | MeterStyle=SquareStyle
113 | SolidColor=130,188,91,250
114 | ToolTipText=11/3/16
115 | MouseOverAction=[!SetOption Active Text "Contributions: 6"][!UpdateMeter Active][!Redraw]
116 | [Square6]
117 | Meter=Bar
118 | MeterStyle=SquareStyle
119 | SolidColor=130,188,91,250
120 | ToolTipText=11/4/16
121 | MouseOverAction=[!SetOption Active Text "Contributions: 6"][!UpdateMeter Active][!Redraw]
122 | [Square7]
123 | Meter=Bar
124 | MeterStyle=SquareStyle
125 | SolidColor=239,255,158,200
126 | ToolTipText=11/5/16
127 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
128 | [Square8]
129 | Meter=Bar
130 | MeterStyle=SquareStyle | WeekStartStyle
131 | SolidColor=239,255,158,200
132 | ToolTipText=11/6/16
133 | MouseOverAction=[!SetOption Active Text "Contributions: 3"][!UpdateMeter Active][!Redraw]
134 | [Square9]
135 | Meter=Bar
136 | MeterStyle=SquareStyle
137 | SolidColor=80,155,75,250
138 | ToolTipText=11/7/16
139 | MouseOverAction=[!SetOption Active Text "Contributions: 12"][!UpdateMeter Active][!Redraw]
140 | [Square10]
141 | Meter=Bar
142 | MeterStyle=SquareStyle
143 | SolidColor=239,255,158,200
144 | ToolTipText=11/8/16
145 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
146 | [Square11]
147 | Meter=Bar
148 | MeterStyle=SquareStyle
149 | SolidColor=239,255,158,200
150 | ToolTipText=11/9/16
151 | MouseOverAction=[!SetOption Active Text "Contributions: 5"][!UpdateMeter Active][!Redraw]
152 | [Square12]
153 | Meter=Bar
154 | MeterStyle=SquareStyle
155 | SolidColor=130,188,91,250
156 | ToolTipText=11/10/16
157 | MouseOverAction=[!SetOption Active Text "Contributions: 10"][!UpdateMeter Active][!Redraw]
158 | [Square13]
159 | Meter=Bar
160 | MeterStyle=SquareStyle
161 | SolidColor=239,255,158,200
162 | ToolTipText=11/11/16
163 | MouseOverAction=[!SetOption Active Text "Contributions: 4"][!UpdateMeter Active][!Redraw]
164 | [Square14]
165 | Meter=Bar
166 | MeterStyle=SquareStyle
167 | SolidColor=130,188,91,250
168 | ToolTipText=11/12/16
169 | MouseOverAction=[!SetOption Active Text "Contributions: 10"][!UpdateMeter Active][!Redraw]
170 | [Square15]
171 | Meter=Bar
172 | MeterStyle=SquareStyle | WeekStartStyle
173 | SolidColor=130,188,91,250
174 | ToolTipText=11/13/16
175 | MouseOverAction=[!SetOption Active Text "Contributions: 9"][!UpdateMeter Active][!Redraw]
176 | [Square16]
177 | Meter=Bar
178 | MeterStyle=SquareStyle
179 | SolidColor=239,255,158,200
180 | ToolTipText=11/14/16
181 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
182 | [Square17]
183 | Meter=Bar
184 | MeterStyle=SquareStyle
185 | SolidColor=175,175,175,95
186 | ToolTipText=11/15/16
187 | MouseOverAction=[!SetOption Active Text "Contributions: 0"][!UpdateMeter Active][!Redraw]
188 | [Square18]
189 | Meter=Bar
190 | MeterStyle=SquareStyle
191 | SolidColor=130,188,91,250
192 | ToolTipText=11/16/16
193 | MouseOverAction=[!SetOption Active Text "Contributions: 11"][!UpdateMeter Active][!Redraw]
194 | [Square19]
195 | Meter=Bar
196 | MeterStyle=SquareStyle
197 | SolidColor=175,175,175,95
198 | ToolTipText=11/17/16
199 | MouseOverAction=[!SetOption Active Text "Contributions: 0"][!UpdateMeter Active][!Redraw]
200 | [Square20]
201 | Meter=Bar
202 | MeterStyle=SquareStyle
203 | SolidColor=10,105,6,250
204 | ToolTipText=11/18/16
205 | MouseOverAction=[!SetOption Active Text "Contributions: 17"][!UpdateMeter Active][!Redraw]
206 | [Square21]
207 | Meter=Bar
208 | MeterStyle=SquareStyle
209 | SolidColor=130,188,91,250
210 | ToolTipText=11/19/16
211 | MouseOverAction=[!SetOption Active Text "Contributions: 8"][!UpdateMeter Active][!Redraw]
212 | [Square22]
213 | Meter=Bar
214 | MeterStyle=SquareStyle | WeekStartStyle
215 | SolidColor=239,255,158,200
216 | ToolTipText=11/20/16
217 | MouseOverAction=[!SetOption Active Text "Contributions: 5"][!UpdateMeter Active][!Redraw]
218 | [Square23]
219 | Meter=Bar
220 | MeterStyle=SquareStyle
221 | SolidColor=80,155,75,250
222 | ToolTipText=11/21/16
223 | MouseOverAction=[!SetOption Active Text "Contributions: 12"][!UpdateMeter Active][!Redraw]
224 | [Square24]
225 | Meter=Bar
226 | MeterStyle=SquareStyle
227 | SolidColor=130,188,91,250
228 | ToolTipText=11/22/16
229 | MouseOverAction=[!SetOption Active Text "Contributions: 6"][!UpdateMeter Active][!Redraw]
230 | [Square25]
231 | Meter=Bar
232 | MeterStyle=SquareStyle
233 | SolidColor=239,255,158,200
234 | ToolTipText=11/23/16
235 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
236 | [Square26]
237 | Meter=Bar
238 | MeterStyle=SquareStyle
239 | SolidColor=130,188,91,250
240 | ToolTipText=11/24/16
241 | MouseOverAction=[!SetOption Active Text "Contributions: 11"][!UpdateMeter Active][!Redraw]
242 | [Square27]
243 | Meter=Bar
244 | MeterStyle=SquareStyle
245 | SolidColor=130,188,91,250
246 | ToolTipText=11/25/16
247 | MouseOverAction=[!SetOption Active Text "Contributions: 10"][!UpdateMeter Active][!Redraw]
248 | [Square28]
249 | Meter=Bar
250 | MeterStyle=SquareStyle
251 | SolidColor=239,255,158,200
252 | ToolTipText=11/26/16
253 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
254 | [Square29]
255 | Meter=Bar
256 | MeterStyle=SquareStyle | WeekStartStyle
257 | SolidColor=239,255,158,200
258 | ToolTipText=11/27/16
259 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
260 | [Square30]
261 | Meter=Bar
262 | MeterStyle=SquareStyle
263 | SolidColor=130,188,91,250
264 | ToolTipText=11/28/16
265 | MouseOverAction=[!SetOption Active Text "Contributions: 9"][!UpdateMeter Active][!Redraw]
266 | [Square31]
267 | Meter=Bar
268 | MeterStyle=SquareStyle
269 | SolidColor=130,188,91,250
270 | ToolTipText=11/29/16
271 | MouseOverAction=[!SetOption Active Text "Contributions: 6"][!UpdateMeter Active][!Redraw]
272 | [Square32]
273 | Meter=Bar
274 | MeterStyle=SquareStyle
275 | SolidColor=130,188,91,250
276 | ToolTipText=11/30/16
277 | MouseOverAction=[!SetOption Active Text "Contributions: 9"][!UpdateMeter Active][!Redraw]
278 | [Square33]
279 | Meter=Bar
280 | MeterStyle=SquareStyle
281 | SolidColor=130,188,91,250
282 | ToolTipText=12/1/16
283 | MouseOverAction=[!SetOption Active Text "Contributions: 7"][!UpdateMeter Active][!Redraw]
284 | [Square34]
285 | Meter=Bar
286 | MeterStyle=SquareStyle
287 | SolidColor=239,255,158,200
288 | ToolTipText=12/2/16
289 | MouseOverAction=[!SetOption Active Text "Contributions: 2"][!UpdateMeter Active][!Redraw]
290 | [Square35]
291 | Meter=Bar
292 | MeterStyle=SquareStyle
293 | SolidColor=10,105,6,250
294 | ToolTipText=12/3/16
295 | MouseOverAction=[!SetOption Active Text "Contributions: 20"][!UpdateMeter Active][!Redraw]
296 | [Square36]
297 | Meter=Bar
298 | MeterStyle=SquareStyle | WeekStartStyle
299 | SolidColor=239,255,158,200
300 | ToolTipText=12/4/16
301 | MouseOverAction=[!SetOption Active Text "Contributions: 4"][!UpdateMeter Active][!Redraw]
302 | [Square37]
303 | Meter=Bar
304 | MeterStyle=SquareStyle
305 | SolidColor=239,255,158,200
306 | ToolTipText=12/5/16
307 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
308 | [Square38]
309 | Meter=Bar
310 | MeterStyle=SquareStyle
311 | SolidColor=239,255,158,200
312 | ToolTipText=12/6/16
313 | MouseOverAction=[!SetOption Active Text "Contributions: 3"][!UpdateMeter Active][!Redraw]
314 | [Square39]
315 | Meter=Bar
316 | MeterStyle=SquareStyle
317 | SolidColor=175,175,175,95
318 | ToolTipText=12/7/16
319 | MouseOverAction=[!SetOption Active Text "Contributions: 0"][!UpdateMeter Active][!Redraw]
320 | [Square40]
321 | Meter=Bar
322 | MeterStyle=SquareStyle
323 | SolidColor=130,188,91,250
324 | ToolTipText=12/8/16
325 | MouseOverAction=[!SetOption Active Text "Contributions: 10"][!UpdateMeter Active][!Redraw]
326 | [Square41]
327 | Meter=Bar
328 | MeterStyle=SquareStyle
329 | SolidColor=239,255,158,200
330 | ToolTipText=12/9/16
331 | MouseOverAction=[!SetOption Active Text "Contributions: 5"][!UpdateMeter Active][!Redraw]
332 | [Square42]
333 | Meter=Bar
334 | MeterStyle=SquareStyle
335 | SolidColor=239,255,158,200
336 | ToolTipText=12/10/16
337 | MouseOverAction=[!SetOption Active Text "Contributions: 5"][!UpdateMeter Active][!Redraw]
338 | [Square43]
339 | Meter=Bar
340 | MeterStyle=SquareStyle | WeekStartStyle
341 | SolidColor=130,188,91,250
342 | ToolTipText=12/11/16
343 | MouseOverAction=[!SetOption Active Text "Contributions: 6"][!UpdateMeter Active][!Redraw]
344 | [Square44]
345 | Meter=Bar
346 | MeterStyle=SquareStyle
347 | SolidColor=80,155,75,250
348 | ToolTipText=12/12/16
349 | MouseOverAction=[!SetOption Active Text "Contributions: 15"][!UpdateMeter Active][!Redraw]
350 | [Square45]
351 | Meter=Bar
352 | MeterStyle=SquareStyle
353 | SolidColor=239,255,158,200
354 | ToolTipText=12/13/16
355 | MouseOverAction=[!SetOption Active Text "Contributions: 5"][!UpdateMeter Active][!Redraw]
356 | [Square46]
357 | Meter=Bar
358 | MeterStyle=SquareStyle
359 | SolidColor=239,255,158,200
360 | ToolTipText=12/14/16
361 | MouseOverAction=[!SetOption Active Text "Contributions: 4"][!UpdateMeter Active][!Redraw]
362 | [Square47]
363 | Meter=Bar
364 | MeterStyle=SquareStyle
365 | SolidColor=239,255,158,200
366 | ToolTipText=12/15/16
367 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
368 | [Square48]
369 | Meter=Bar
370 | MeterStyle=SquareStyle
371 | SolidColor=130,188,91,250
372 | ToolTipText=12/16/16
373 | MouseOverAction=[!SetOption Active Text "Contributions: 9"][!UpdateMeter Active][!Redraw]
374 | [Square49]
375 | Meter=Bar
376 | MeterStyle=SquareStyle
377 | SolidColor=80,155,75,250
378 | ToolTipText=12/17/16
379 | MouseOverAction=[!SetOption Active Text "Contributions: 15"][!UpdateMeter Active][!Redraw]
380 | [Square50]
381 | Meter=Bar
382 | MeterStyle=SquareStyle | WeekStartStyle
383 | SolidColor=239,255,158,200
384 | ToolTipText=12/18/16
385 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
386 | [Square51]
387 | Meter=Bar
388 | MeterStyle=SquareStyle
389 | SolidColor=130,188,91,250
390 | ToolTipText=12/19/16
391 | MouseOverAction=[!SetOption Active Text "Contributions: 10"][!UpdateMeter Active][!Redraw]
392 | [Square52]
393 | Meter=Bar
394 | MeterStyle=SquareStyle
395 | SolidColor=175,175,175,95
396 | ToolTipText=12/20/16
397 | MouseOverAction=[!SetOption Active Text "Contributions: 0"][!UpdateMeter Active][!Redraw]
398 | [Square53]
399 | Meter=Bar
400 | MeterStyle=SquareStyle
401 | SolidColor=239,255,158,200
402 | ToolTipText=12/21/16
403 | MouseOverAction=[!SetOption Active Text "Contributions: 3"][!UpdateMeter Active][!Redraw]
404 | [Square54]
405 | Meter=Bar
406 | MeterStyle=SquareStyle
407 | SolidColor=239,255,158,200
408 | ToolTipText=12/22/16
409 | MouseOverAction=[!SetOption Active Text "Contributions: 2"][!UpdateMeter Active][!Redraw]
410 | [Square55]
411 | Meter=Bar
412 | MeterStyle=SquareStyle
413 | SolidColor=239,255,158,200
414 | ToolTipText=12/23/16
415 | MouseOverAction=[!SetOption Active Text "Contributions: 1"][!UpdateMeter Active][!Redraw]
416 | [Square56]
417 | Meter=Bar
418 | MeterStyle=SquareStyle
419 | SolidColor=175,175,175,95
420 | ToolTipText=12/24/16
421 | MouseOverAction=[!SetOption Active Text "Contributions: 0"][!UpdateMeter Active][!Redraw]
422 | [Square57]
423 | Meter=Bar
424 | MeterStyle=SquareStyle | WeekStartStyle
425 | SolidColor=175,175,175,95
426 | ToolTipText=12/25/16
427 | MouseOverAction=[!SetOption Active Text "Contributions: 0"][!UpdateMeter Active][!Redraw]
428 | [Square58]
429 | Meter=Bar
430 | MeterStyle=SquareStyle
431 | SolidColor=239,255,158,200
432 | ToolTipText=12/26/16
433 | MouseOverAction=[!SetOption Active Text "Contributions: 2"][!UpdateMeter Active][!Redraw]
434 | [Square59]
435 | Meter=Bar
436 | MeterStyle=SquareStyle
437 | SolidColor=130,188,91,250
438 | ToolTipText=12/27/16
439 | MouseOverAction=[!SetOption Active Text "Contributions: 8"][!UpdateMeter Active][!Redraw]
440 | [Square60]
441 | Meter=Bar
442 | MeterStyle=SquareStyle
443 | SolidColor=80,155,75,250
444 | ToolTipText=12/28/16
445 | MouseOverAction=[!SetOption Active Text "Contributions: 12"][!UpdateMeter Active][!Redraw]
446 | [Square61]
447 | Meter=Bar
448 | MeterStyle=SquareStyle
449 | SolidColor=130,188,91,250
450 | ToolTipText=12/29/16
451 | MouseOverAction=[!SetOption Active Text "Contributions: 7"][!UpdateMeter Active][!Redraw]
452 | [Square62]
453 | Meter=Bar
454 | MeterStyle=SquareStyle
455 | SolidColor=80,155,75,250
456 | ToolTipText=12/30/16
457 | MouseOverAction=[!SetOption Active Text "Contributions: 15"][!UpdateMeter Active][!Redraw]
458 | [Square63]
459 | Meter=Bar
460 | MeterStyle=SquareStyle
461 | SolidColor=239,255,158,200
462 | ToolTipText=12/31/16
463 | MouseOverAction=[!SetOption Active Text "Contributions: 2"][!UpdateMeter Active][!Redraw]
464 | [Square64]
465 | Meter=Bar
466 | MeterStyle=SquareStyle | WeekStartStyle
467 | SolidColor=239,255,158,200
468 | ToolTipText=1/1/17
469 | MouseOverAction=[!SetOption Active Text "Contributions: 3"][!UpdateMeter Active][!Redraw]
470 | [Square65]
471 | Meter=Bar
472 | MeterStyle=SquareStyle
473 | SolidColor=239,255,158,200
474 | ToolTipText=1/2/17
475 | MouseOverAction=[!SetOption Active Text "Contributions: 3"][!UpdateMeter Active][!Redraw]
476 | [Square66]
477 | Meter=Bar
478 | MeterStyle=SquareStyle
479 | SolidColor=175,175,175,95
480 | ToolTipText=
481 | MouseOverAction=[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]
482 | [Square67]
483 | Meter=Bar
484 | MeterStyle=SquareStyle
485 | SolidColor=175,175,175,95
486 | ToolTipText=
487 | MouseOverAction=[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]
488 | [Square68]
489 | Meter=Bar
490 | MeterStyle=SquareStyle
491 | SolidColor=175,175,175,95
492 | ToolTipText=
493 | MouseOverAction=[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]
494 | [Square69]
495 | Meter=Bar
496 | MeterStyle=SquareStyle
497 | SolidColor=175,175,175,95
498 | ToolTipText=
499 | MouseOverAction=[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]
500 | [Square70]
501 | Meter=Bar
502 | MeterStyle=SquareStyle
503 | SolidColor=175,175,175,95
504 |
--------------------------------------------------------------------------------
/GitHubCalendar_v1.1.3.rmskin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tterb/GitHubCalendar/aee9972302778aec93fe9e28850ecde5301ee77e/GitHubCalendar_v1.1.3.rmskin
--------------------------------------------------------------------------------
/GithubCalendar(week).ini:
--------------------------------------------------------------------------------
1 | ;## Information ###################################################################
2 | ; Filename: GitHubCalendar(week).ini
3 | ; Project: GitHubCalendar
4 | ; Author: Brett Stevenson
5 | ; Contact: BStevensonDev@gmail.com
6 | ; Version: 1.1.3
7 | ; License: BSD 3-Clause
8 | ; Updated: Oct. 09, 2016
9 | ;###############################################################################
10 |
11 | [Rainmeter]
12 | Name=GitHubCalendar(week)
13 | Author=Brett Stevenson
14 | Contact=BStevensonDev@gmail.com
15 | Version=1.1.3
16 | License=BSD 3-Clause
17 | DynamicWindowSize=1
18 | Update=1000
19 |
20 | [Metadata]
21 | Name=GitHubCalendar (week)
22 | Information=This skin displays only the current week of the GitHub contribution calendar from your profile on your desktop
23 | License=BSD 3-Clause
24 | Version=1.1.3
25 |
26 | ;--------------------------------------------------------------------------------------------
27 | ; VARIABLES
28 |
29 | [Variables]
30 | @include="#@#style.inc"
31 | ScraperPath="#@#GitHubScraper/GitHubScraper/bin/Debug/GitHubScraper.exe"
32 | DataPath="#@#week.txt"
33 | WeekPath="#@#week.txt"
34 |
35 | ;--------------------------------------------------------------------------------------------
36 | ; MEASURES
37 |
38 | [MeasureLuaScript]
39 | Measure=Script
40 | ScriptFile="#@#week.lua"
41 | UpdateDivider=60
42 |
43 | ;--------------------------------------------------------------------------------------------
44 | ; METERS
45 |
46 | [Background]
47 | Meter=Image
48 | ImageName=#@#images/background.png
49 | ImageTint=0,0,0,150
50 | X=0
51 | Y=0
52 | H=150
53 | W=50
54 |
55 | [MeterLogo]
56 | Meter=Image
57 | MeterStyle=LogoStyle
58 | ; Left-click runs the web scraper program and executes script.lua
59 | LeftMouseDownAction=["#ScraperPath#"]
60 | LeftMouseUpAction=[!CommandMeasure MeasureLuaScript "Update()"][!Redraw][!Refresh]
61 | ; Right-click re-initializes the skin by calling Initialize from script.lua
62 | RightMouseDownAction=[!Redraw][!Refresh]
63 | ToolTipText=Update
64 | X=17
65 | Y=119
66 |
67 | [Active]
68 | Meter=String
69 | MeterStyle=ActiveStyle
70 | X=25
71 | Y=2
72 | FontSize=10
73 |
74 | [DayLabel1]
75 | Meter=String
76 | MeterStyle=LabelStyle
77 | Y=37
78 | Text="M"
79 |
80 | [DayLabel2]
81 | Meter=String
82 | MeterStyle=LabelStyle
83 | Text="W"
84 |
85 | [DayLabel3]
86 | Meter=String
87 | MeterStyle=LabelStyle
88 | FontSize=8
89 | X=5
90 | Text="F"
91 |
92 |
93 | ;############################################################################
94 | ; Do not change anything below this line. They are automatically derived from the Lua script.
95 | ;############################################################################
96 | [Square1]
97 | Meter=Bar
98 | MeterStyle=SquareStyle
99 | X=20
100 | Y=24
101 | SolidColor=155,155,155,95
102 | ToolTipText=10/2/2016
103 | MouseOverAction=[!SetOption Active Text "0"][!UpdateMeter Active][!Redraw]
104 | [Square2]
105 | Meter=Bar
106 | MeterStyle=SquareStyle
107 | SolidColor=130,188,91,250
108 | ToolTipText=10/3/2016
109 | MouseOverAction=[!SetOption Active Text "9"][!UpdateMeter Active][!Redraw]
110 | [Square3]
111 | Meter=Bar
112 | MeterStyle=SquareStyle
113 | SolidColor=130,188,91,250
114 | ToolTipText=10/4/2016
115 | MouseOverAction=[!SetOption Active Text "10"][!UpdateMeter Active][!Redraw]
116 | [Square4]
117 | Meter=Bar
118 | MeterStyle=SquareStyle
119 | SolidColor=130,188,91,250
120 | ToolTipText=10/5/2016
121 | MouseOverAction=[!SetOption Active Text "8"][!UpdateMeter Active][!Redraw]
122 | [Square5]
123 | Meter=Bar
124 | MeterStyle=SquareStyle
125 | SolidColor=239,255,158,200
126 | ToolTipText=10/6/2016
127 | MouseOverAction=[!SetOption Active Text "1"][!UpdateMeter Active][!Redraw]
128 | [Square6]
129 | Meter=Bar
130 | MeterStyle=SquareStyle
131 | SolidColor=155,155,155,95
132 | ToolTipText=
133 | MouseOverAction=[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]
134 | [Square7]
135 | Meter=Bar
136 | MeterStyle=SquareStyle
137 | SolidColor=155,155,155,95
138 | ToolTipText=
139 | MouseOverAction=[!SetOption Active Text ""][!UpdateMeter Active][!Redraw]
140 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2016 Brett Stevenson
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | ------------------------------------------------------------------------------------------------------------------------
3 | #### A Rainmeter skin that displays your GitHub contribution calendar on your desktop
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | *********************************************************************************************************
27 |
28 | ##
DESCRIPTION:
29 | This skin features a C# program, which collectively uses [Selenium Webdriver](http://www.seleniumhq.org/projects/webdriver/) and [phantomJS](http://phantomjs.org) to gather the data from the user's GitHub profile and writes it to the "data.txt" file. The data is then read by the Lua script, which provides the necessary information to the GitHubCalendar skin.
30 | The skin now also includes a second variant, featuring a more condensed layout and displays only the current weeks contributions.
31 |
32 | #### In Progress:
33 | * Improve optimization of the update processes.
34 | * Add mutable scaling functionality to calendar.
35 |
36 |
37 | *********************************************************************************************************
38 |
39 | ##
SETUP:
40 | * This skin requires that you have
[**Rainmeter**](https://www.rainmeter.net/) installed.
41 | * Open the *.rmskin* package file to install, configure, and load the skin.
42 | * Enter your GitHub username into the newly opened Configuration window and press 'Enter'.
43 | * Then press the
button to load your GitHub Contribution Calendar.
44 | * **Enjoy!**
45 |
46 |
47 | ***Note:*** To update the skin's calendar data, left-click the
in the bottom-right corner of the skin.
48 |
49 |
50 | *********************************************************************************************************
51 |
--------------------------------------------------------------------------------