All Projects → nileshsah → harwest-tool

nileshsah / harwest-tool

Licence: MIT License
A one-shot tool to harvest submissions from different OJs onto one single VCS managed repository http://bit.ly/harwest

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to harwest-tool

Code
Macesuted's Code Repository.
Stars: ✭ 20 (-77.53%)
Mutual labels:  competitive-programming, codeforces, atcoder
icie
Competitive programming IDE-as-a-VS-Code-plugin
Stars: ✭ 81 (-8.99%)
Mutual labels:  competitive-programming, codeforces, atcoder
CP
Competitive Coding
Stars: ✭ 25 (-71.91%)
Mutual labels:  competitive-programming, codeforces, atcoder
cp-tool
cp-tool is an auto generator for solved problems at different online judges.
Stars: ✭ 24 (-73.03%)
Mutual labels:  pypi, competitive-programming, codeforces
category-wise-problems
contains category wise problems(data structures, competitive) of popular platforms.
Stars: ✭ 32 (-64.04%)
Mutual labels:  competitive-programming, codeforces, atcoder
Resources
Data Structures, Algorithms, Utility Classes for Competitive Programming, Codeforces: https://codeforces.com/profile/wleung_bvg, AtCoder: https://atcoder.jp/users/wleung_bvg, DMOJ: https://dmoj.ca/user/wleung_bvg
Stars: ✭ 34 (-61.8%)
Mutual labels:  competitive-programming, codeforces, atcoder
cppdump
Standard dumps of data structures/algorithms
Stars: ✭ 18 (-79.78%)
Mutual labels:  competitive-programming, codeforces, atcoder
cpt
An amazing versatile CLI tool for competitive programming!
Stars: ✭ 32 (-64.04%)
Mutual labels:  competitive-programming, codeforces
judge
A blazingly fast online judge/ autograder ⚖️ built with Python and the Django framework to test cases against your solution. Check out the sponsor links and help fund DomeCode.
Stars: ✭ 30 (-66.29%)
Mutual labels:  pypi, competitive-programming
problem-solving
A platform where you can learn about algorithms and data structures. A heaven for competitive programmers. Learn here: https://reyadussalahin.github.io/problem-solving/
Stars: ✭ 33 (-62.92%)
Mutual labels:  competitive-programming, codeforces
Data-Structures-Algorithms
Data Structures & Algorithms 💥
Stars: ✭ 17 (-80.9%)
Mutual labels:  competitive-programming, codeforces
Competitive-Programming-Codes
Includes codes from coding competitions and contests over the internet. Languages:- Python3 and C++
Stars: ✭ 14 (-84.27%)
Mutual labels:  competitive-programming, codeforces
CodeForces
Python solutions to CodeForces problems
Stars: ✭ 48 (-46.07%)
Mutual labels:  competitive-programming, codeforces
codeforces-go
Golang 算法竞赛模板库 | Solutions to Codeforces by Go 💭💡🎈
Stars: ✭ 842 (+846.07%)
Mutual labels:  competitive-programming, codeforces
Codeforces
Solutions to Codeforces Problems
Stars: ✭ 132 (+48.31%)
Mutual labels:  competitive-programming, codeforces
cphelper.nvim
Neovim helper for competitive programming. https://sr.ht/~p00f/cphelper.nvim preferred
Stars: ✭ 56 (-37.08%)
Mutual labels:  competitive-programming, codeforces
rfc-bibtex
A command line tool that creates bibtex entries for IETF RFCs and Internet Drafts.
Stars: ✭ 43 (-51.69%)
Mutual labels:  pypi, command-line-tool
100DaysCodingChallenege
This is 100 days of competitive coding challenege . You have details of all the problem and solution that I will be solving daily for 100 days consecutively . I have added link to all the questions in read me according to days , you can try solving on your own before watching solution .
Stars: ✭ 29 (-67.42%)
Mutual labels:  codeforces, atcoder
GoCF
Contest parser for codeforces.com
Stars: ✭ 48 (-46.07%)
Mutual labels:  competitive-programming, codeforces
Competitive Coding
Contains Solution for all type of Problems of Competitive Programming. Updates Frequently as any problem is solved.
Stars: ✭ 16 (-82.02%)
Mutual labels:  competitive-programming, codeforces

📦 Harwest

PyPI Downloads PyPI

Harwest takes away the hassle of managing your submission files on different online-judges by automating the entire process of collecting and organizing your code submissions in one single Git repository.

Here's a sample repository created using Harwest: harwest-sample

Highlights

  • Fully automated collection of all yours submissions with minimal effort setup
  • Simple and easy to use interface to get you started in minutes
  • Extensive traceability for your submissions with reference to the problem, tags, submission date and more
  • Single commit for each submission stamped with the original submission date for building rich and accurate contributions graph
  • Automated git pushes to the remote repository with every update
  • Requires little to no knowledge of operating Git (though would strongly recommend learning it)

Platforms

Harwest currently has extensive support for the following platforms:

while integration with various other OJs are still in the kitchen. Contributions are always welcomed.

Installation

You will require Python 3.5+ along with pip3 in order to be able to install and use Harwest. Refer to the documentation for installing pip on windows, ubuntu/linux or macOS

The package is available at https://pypi.python.org/pypi/harwest PyPI

Run the following command in the terminal to install the package:

$ pip3 install harwest

Getting Started

After installing the package, run the following command in the terminal:

$ harwest

In case you're using Harwest for the first time, you'd be greeted with a set of configuration steps that you'll have to complete to set up the tool.

  • Step [1] requires you to select a directory name where all your code submissions will be stored. The directory will be created under the same path from where you executed the command.

    In case you'd like to set up the directory at some other location then press <Ctrl>+<C> to exit from the setup and execute the command again from your desired location.

  • Step [2] is straight-forward and asks you to enter your full-name and email address which will be used for setting up the git repository.

    NOTE: For the contributions to show up in the contributions streak graph, the provided email address must be the same as the email address associated with your GitHub/BitBucket account

  • Step [3] though optional, takes away the effort of even pushing the changes to the Git repository from you. To take advantage of this feature, create an empty git repository in GitHub or BitBucket (without any README, .gitignore or license) and copy and paste the git remote url as input for this step.

    If you however don't want automated pushes for your repository then leave the input as empty and press <enter>. You can always push the repository to remote manually.

nellex@HQ:~$ harwest

      __  __                              __
     / / / /___ _______      _____  _____/ /_
    / /_/ / __ `/ ___/ | /| / / _ \/ ___/ __/
   / __  / /_/ / /   | |/ |/ /  __(__  ) /_
  /_/ /_/\__,_/_/    |__/|__/\___/____/\__/

  ==========================================

Hey there! 👋 Looks like you're using Harwest for the first time. Let's get you started 🚀

[1] We'll need to create a directory to store all your files
    The directory will be created as /home/nellex/<your-input>
> So, what would you like your directory to be called? accepted
👍 Alright, so you're directory will be created at /home/nellex/accepted

[2] Then let's build your author tag which will appear in your Git commits as:
    Author: Steve Jobs <[email protected]>
> So what would your beautiful (Author) Full Name be? Nilesh Sah
> And of course, your magical (Author) Email Address? [email protected]

[3] Guess what? We can automate the Git pushes for you too! 🎉
   In case you'd like that, then please specify the remote Git Url for an "empty" repository
   It would be somewhat like https://github.com/nileshsah/harwest-tool.git
   But it's optional, in case you'd like to skip then leave it empty and just hit <enter>
> (Optional) So, what would be the remote url for the repository again? https://github.com/nileshsah/accepted.git

 🥳 You rock! We're all good to go now

Once the initial set up is complete, you can then execute the command

$ harwest <platform>
$ harwest codeforces # example

to harvest your submissions from the Codeforces platform. If it's the first time you're running the command, you'll be prompted for providing your Codeforces handle name

> So what's your prestigious Codeforces Handle Name? nellex

Harwest will then start scraping all your submissions, starting from page 1 till the very end.

nellex@HQ:~$ harwest codeforces

      __  __                              __
     / / / /___ _______      _____  _____/ /_
    / /_/ / __ `/ ___/ | /| / / _ \/ ___/ __/
   / __  / /_/ / /   | |/ |/ /  __(__  ) /_
  /_/ /_/\__,_/_/    |__/|__/\___/____/\__/

  ==========================================

⛏ ️Harvesting Codeforces (nellex) Submissions to /home/nellex/accepted
⌛  Currently scanning page #1: (24/24) Phoenix and Beauty https://codeforces.com/contest/1348/problem/B
Username for 'https://github.com': nileshsah
Password for 'https://[email protected]':
👌 The updates were automatically pushed to the remote repository
✅ The repository was successfully updated!

In case scanning stops at any page due to some server side error, you can restart scraping from the failed page by running the command:

$ harwest <platform> --start-page N
$ harwest codeforces --start-page 3 # example

or instead force Harwest to re-scan the entire submission list for the platform by running:

$ harwest <platform> --full-scan
$ harwest atcoder --full-scan # example

Reconfigure

Harwest settings can be reconfigured by running the following command which will then restart the entire configuration steps.

$ harwest --init

Harwest provides the ability to re-use an existing directory previously created by this tool for further updates.

To change the handle name for a specific platform, you can run:

$ harwest <platform> --setup
$ harwest codeforces --setup # example

License

MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].