{"id":295631,"name":"Education4Climate","description":"A tool for crawling and analyzing data from higher education schools.","url":"https://github.com/education4climate/education4climate","last_synced_at":"2026-05-21T01:30:21.711Z","repository":{"id":38816282,"uuid":"267258349","full_name":"Education4Climate/Education4Climate","owner":"Education4Climate","description":"Education4Climate is a tool for crawling and analyzing data from higher education schools.","archived":false,"fork":false,"pushed_at":"2025-10-27T15:46:13.000Z","size":452350,"stargazers_count":20,"open_issues_count":1,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-27T14:03:35.216Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://education4climate.be","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Education4Climate.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-05-27T08:02:43.000Z","updated_at":"2026-03-26T11:42:42.000Z","dependencies_parsed_at":"2023-01-22T02:32:36.857Z","dependency_job_id":"4de22a04-5421-4d71-9f31-54eebe09d4da","html_url":"https://github.com/Education4Climate/Education4Climate","commit_stats":{"total_commits":746,"total_committers":23,"mean_commits":32.43478260869565,"dds":0.6353887399463807,"last_synced_commit":"61675dc5e4f355faa700f387cc3c466dda0f62e3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Education4Climate/Education4Climate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Education4Climate%2FEducation4Climate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Education4Climate%2FEducation4Climate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Education4Climate%2FEducation4Climate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Education4Climate%2FEducation4Climate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Education4Climate","download_url":"https://codeload.github.com/Education4Climate/Education4Climate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Education4Climate%2FEducation4Climate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32661193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"Education4Climate","name":null,"uuid":"85617909","kind":"user","description":"","email":"","website":"https://education4climate.be/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/85617909?u=3c719521f3d9346dd07ef1d4af2761af30245bbd\u0026v=4","repositories_count":1,"last_synced_at":"2023-03-07T14:27:33.929Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Education4Climate","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-17T12:09:37.068Z","updated_at":"2023-03-07T14:27:33.937Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Education4Climate","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Education4Climate/repositories"},"packages":[],"commits":{"id":1638243,"full_name":"education4climate/education4climate","default_branch":"master","total_commits":781,"total_committers":19,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":41.10526315789474,"dds":0.5953905249679898,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-05-15T23:05:00.909Z","last_synced_commit":"79df3c2793bb5329d349d729bf992dd0aa8bfdb4","created_at":"2024-06-27T00:16:42.962Z","updated_at":"2026-05-15T23:02:58.223Z","committers":[{"name":"duboisa1","email":"antoine-dubois@hotmail.com","login":"duboisa1","count":316},{"name":"thehappysloth","email":"73159162+thehappysloth","login":"thehappysloth","count":243},{"name":"Noel_Desv","email":"noel@dataroots.io","login":null,"count":69},{"name":"Denis Lebailly","email":"dle@verbolia.com","login":null,"count":39},{"name":"Icarwiz","email":"icarwiz@yahoo.fr","login":"Icarwiz","count":31},{"name":"Noël SCHNEIDER","email":"noel.desvoyes@gmail.com","login":"noel-schneider","count":26},{"name":"c3-antoine-qian","email":"antoine.qian@c3iot.com","login":"c3-antoine-qian","count":14},{"name":"Denis Lebailly","email":"30408818+DeLeb86","login":"DeLeb86","count":10},{"name":"RobinDG","email":"robindegernier@hotmail.fr","login":"RobinDG","count":9},{"name":"Youri Baeyens","email":"30272622+yoba7","login":"yoba7","count":6},{"name":"Antoine Dubois","email":"antoine.dubois@student.uliege.be","login":"duboisa2","count":5},{"name":"gpu bcdotnet","email":"denis@gpu","login":null,"count":3},{"name":"Laurent Eschenauer","email":"laurent@eschenauer.be","login":"eschnou","count":2},{"name":"aric.wizenberg","email":"aric.wizenberg@inter.setec.fr","login":null,"count":2},{"name":"Laurent Eschenauer","email":"laurent.eschenauer@motivepartners.com","login":null,"count":2},{"name":"Education4Climate","email":"85617909+Education4Climate","login":"Education4Climate","count":1},{"name":"Ubuntu","email":"ubuntu@vps-90f76632.vps.ovh.net","login":null,"count":1},{"name":"antoineqian","email":"33892931+antoineqian","login":"antoineqian","count":1},{"name":"solarly","email":"tech@solarly.org","login":"frimic-solarly","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/education4climate%2Feducation4climate/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-18T00:00:12.307Z","repositories_count":6235668,"commits_count":884837409,"contributors_count":34912212,"owners_count":1154126,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"education4climate/education4climate","html_url":"https://github.com/education4climate/education4climate","last_synced_at":"2026-02-17T04:00:55.799Z","status":"error","issues_count":0,"pull_requests_count":131,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":566109.2734375,"issues_closed_count":0,"pull_requests_closed_count":128,"pull_request_authors_count":9,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.4198473282442748,"merged_pull_requests_count":121,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":11.666666666666666,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.6666666666666666,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"created_at":"2024-06-27T00:16:50.847Z","updated_at":"2026-02-17T04:00:55.800Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/education4climate%2Feducation4climate","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/education4climate%2Feducation4climate/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{},"pull_request_author_associations_count":{"COLLABORATOR":126,"OWNER":2,"NONE":2,"CONTRIBUTOR":1},"issue_authors":{},"pull_request_authors":{"duboisa1":55,"thehappysloth":42,"noel-schneider":19,"yoba7":8,"Education4Climate":2,"RobinDG":2,"antoineqian":1,"DeLeb86":1,"merriam":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-09T00:00:07.995Z","repositories_count":14547021,"issues_count":34239263,"pull_requests_count":112160471,"authors_count":11258350,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"COLLABORATOR":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"duboisa1":1},"maintainers":[{"login":"duboisa1","count":55,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/duboisa1"},{"login":"thehappysloth","count":42,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thehappysloth"},{"login":"noel-schneider","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/noel-schneider"},{"login":"yoba7","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/yoba7"},{"login":"Education4Climate","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Education4Climate"},{"login":"RobinDG","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/RobinDG"},{"login":"DeLeb86","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/DeLeb86"}],"active_maintainers":[{"login":"duboisa1","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/duboisa1"}]},"events":{"total":{"PullRequestEvent":3,"WatchEvent":2,"IssueCommentEvent":1,"PushEvent":2},"last_year":{}},"keywords":[],"dependencies":[],"score":5.988961416889863,"created_at":"2024-06-27T00:16:41.840Z","updated_at":"2026-05-21T01:30:21.712Z","avatar_url":"https://github.com/Education4Climate.png","language":"Python","category":"Sustainable Development","sub_category":"Knowledge Platforms","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\u003ca href=\"https://theshiftproject.org/equipe/#benevoles\"\u003e\u003cimg src=\"https://theshiftproject.org/wp-content/uploads/2021/09/Fichier-1@2x-300x152.png\" alt=\"The Shifters\" width=\"230px\"\u003e\u003c/a\u003e\n\n# Education4Climate\n\n[Education4Climate](https://education4climate.be/) is a tool for crawling and analyzing data from higher education schools.\n\nThis tool is developed in the context of the project Education4Climate by the volunteering\ngroup 'The Shifters' - Belgium.\n\nThe scope of the project is the higher education schools in Belgium but the methods used here could easily be\nextended to other countries.\n\n## Composition\n\nThe tool is composed of three main parts:\n- [Crawling](src/crawl/README.md)\n- [Scoring](src/score/README.md)\n- [Web UI](docs/README.md)\n\ndescribed in their respective READMEs.\n  \n\n### Requirements\n\nAll requirements for running the different parts of Unicrawl are listed in requirements.yaml\nand requirements.txt.\n\n### Run using Snakemake\n\nCrawling and scoring results can be automatically generated using \nthe workflow management system [Snakemake](https://snakemake.readthedocs.io/en/stable/index.html).\n\nSnakemake allows defining rules which describe how to generate a given output file by specifying\nwhich inputs are required and through which script. There can be dependencies between rules such that\nthe output of one rule is the input of another rule. Snakemake then automatically determines which rules\nand in which order it should execute them.\n\nFor example, calling:\n\n```bash\nsnakemake -j1 data/scoring-output/unamur_scoring_2020.csv\n```\n\nwill first execute the rule ```crawl_courses``` if the file *data/crawling-output/unamur_courses_2020.json* has not been \nyet generated as it is a required input for the rule ```score_courses```, which will then be called to generate\nthe desired file.\n\nAll these rules are defined in a [Snakefile](Snakefile). Special rules such\nas ```score_programs_for_all_school``` allow to automatically generate for all schools defined in the Snakefile\nthe program score files by running\n\n```bash\nsnakemake -j1 score_programs_for_all_school\n```\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/295631","html_url":"https://ost.ecosyste.ms/projects/295631"}