Skip to content

gorouflex/DuoXPy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DuoXPy - Project Sandy

⚡️ XP farm and Streak keeper for Duolingo

Powered by GitHub Actions 🐙 and Python 🐍

English 🇺🇸Tiếng Việt 🇻🇳

FeatureUsageConfigPreviewDisclaimer

GitHub issues

GitHub watchers

(*)

⚠️ This repository is still in its early stages and may not work as expected for some accounts, please try completing at least 9 lessons and run it again after 2-3 days ⚠️, fix here

Belongs to the Sandy Project

  • Sandy ( Official Documents and Information Repository for Project Sandy )
  • HoneygainPot ( 🐝 Automatically claim your Honeygain lucky pot every day 🍯 )
  • DuoXPy ( ⚡️ XP farm and Streak keeper for Duolingo 🔥 )

Important

Read all documents in this repo before doing anything!

Don't forget to star ⭐ this repository

  • Always update your repo following the original repo to get the latest update + bug fixes; I will not support anything if your repo is outdated
  • Do not enter your information ( token ) into 2 workflows file ( daily.yml and manual.yml ) because it will not work and may leak your information to everyone
  • (*): Do not fork this repo if one of these or all of these ( not CodeQL and CL ) GitHub Actions status badge show failing, and wait until one of these or two of these show passing then you can fork again
  • Daily lessons workflows always run every 14:00 UTC + 0; if you want to change it, refer to this

Feature

  • XP farm ⚡️
  • Streak keeper 🔥

Usage

  1. Go to Duolingo and log in to your Duolingo account
  2. Open the browser's console by pressing F12 button ( or Fn+F12 on some laptops )
  3. Click on the tab Console then paste this to the console
document.cookie
  .split(';')
  .find(cookie => cookie.includes('jwt_token'))
  .split('=')[1]
  1. Copy the token without ' ( example: 'abcde1234` -> abcde1234 )
  2. Fork this repository 🍴
  3. Go to your forked repository 🍴
  4. Go to Settings > Secrets and Variables > Actions, and click New Repository secret
  5. Use JWT_TOKEN and paste your JWT Token from Steps 3
  6. Go to your forked repository 🍴 and go to the Actions tab and press I understand my workflows, go ahead and enable them

Important

If you want to farm XP, go to the Manual lessons trigger workflows ( located in the Actions tab of the repo ). Then, enter the lesson you need to farm ( 1 lesson = 20xp ). Usually, if you enter a lot of lessons ( like >1000 ) or if Duolingo cannot handle the request, you will receive an error code or log, and the lesson will be skipped. So, think wisely before entering the lesson!

If you got No skillId found in xpGains log then try to do least 1 lesson so it can run back to normal!

How to fix Error 500 - No SkillID found in xpGains?

  • Do not let your latest study session empty, at least get them to level 1 like these images below by completing 1 lesson or some lessons ( applied for every single course like English, Spanish, Japanese, etc... )

How to change the schedule that the workflows will run?

Important

Daily workflow file path ( default is 14:00 UTC ± 0, and DO NOT enter your token here cause it will not work and may leak your information to everyone ): .github/workflows/daily.yml

  • Well, GitHub uses UTC time ( UTC ± 0 ) for scheduling workflows, so we should convert it to our timezone

  • For example: If I want to set the daily trigger to trigger at 9:00 PM ( UTC + 7 ) , I have to set it to 2:00 PM or 14:00 ( 24-hour format ) ( UTC ± 0 ) ( 2+7=9 ):

name: Daily lessons
on:
  schedule:
    - cron: '0 14 * * *' # <- Use UTC Time +0 , change your time here ( 14 is hour , 0 is minutes ) and use 24-hour format
  • So, if I want the daily trigger to run at 5:00 AM ( UTC + 7 ), I have to set it to 10:00 PM ( UTC ± 0 ) ( use 24-hour format ):
name: Daily lessons
on:
  schedule:
    - cron: '0 22 * * *' # <- Use UTC Time +0 , change your time here ( 14 is hour , 0 is minutes ) and use 24-hour format

Note

GitHub Actions schedules can sometimes be delayed by up to 15 minutes due to high demand, so don’t worry! ⏱️

Config

  • Usually, you can find your config folder in the same place as the main.py file. In some specific cases, you might need to locate your config through the information window in the main.py file
  • You can change your information and lessons in the config file

Preview

Disclaimer

Warning

This project is licensed under the MIT License.

For more information, see the LICENSE file.

  • This script is not affiliated with Duolingo
  • Use it at your own risk and responsibility
  • I'm not responsible for any consequences that may arise from using this script
  • This script won't help with your daily or friend quests, it can only earn XP to move up the league rank
  • This script won't do real lessons or stories, only practices, so it won't affect your learning path
  • You may be banned from Duolingo if you overuse it, so use it wisely.

Recent activity Time period

Timeline graph Issue status graph Pull request status graph Trending topics Top contributors Activity map

Special thanks to 💖