<div align='center'>
<a href="https://github.com/lesserapi/lesserapi">
<img src="https://raw.githubusercontent.com/lesserapi/lesserapi/logo/logo_rounded.png" alt="Logo" width="180">
</a>
</div>
<h1 align='center' style="font-size:5rem"><b>lesserapi</b></h1>
<p align='center'><b>Version 1.1.19</b></p>
<p align='center'><b>Written with Python 3.11.3</b></p>
<div align="center">
<div align="center">
<img src="https://img.shields.io/github/license/lesserapi/lesserapi.svg"></img>
</div>
<img src="https://img.shields.io/github/forks/lesserapi/lesserapi.svg"></img>
<img src="https://img.shields.io/github/stars/lesserapi/lesserapi.svg"></img>
<img src="https://img.shields.io/github/watchers/lesserapi/lesserapi.svg"></img>
<img src="https://img.shields.io/github/issues-pr/lesserapi/lesserapi.svg"></img>
<img src="https://img.shields.io/github/issues-pr-closed/lesserapi/lesserapi.svg"></img>
<img src="https://img.shields.io/github/downloads/lesserapi/lesserapi/total.svg"></img>
</div>
<br>
<div align="center">
<img style="display:block;margin-left:auto;margin-right:auto;width:70%;" src="https://github-readme-stats.vercel.app/api/pin/?username=lesserapi&repo=lesserapi&theme=dracula"></img>
</div>
<br>
<h3 align='center'>Ready To Use</h3>
<h3 align='center'>Developed by Shervin Badanara (shervinbdndev) on Github</h3>
<div align="center">
<img src="https://forthebadge.com/images/badges/made-with-python.svg"></img>
</div>
<br>
<hr>
<br>
<h2 align='center'><b>Language and technologies used in This Project</h2>
<img src="https://img.shields.io/badge/Python-14354C?style=for-the-badge&logo=python&logoColor=white"></img>
<img src="https://img.shields.io/badge/Google_chrome-4285F4?style=for-the-badge&logo=Google-chrome&logoColor=white"></img>
<img src="https://img.shields.io/badge/Visual_Studio_Code-0078D4?style=for-the-badge&logo=visual%20studio%20code&logoColor=white"></img>
<img src="https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black"></img>
<img src="https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white"></img>
<img src="https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white"></img>
<img src="https://img.shields.io/badge/Stack_Overflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white"></img>
<img src="https://img.shields.io/badge/Reddit-FF4500?style=for-the-badge&logo=reddit&logoColor=white"></img>
<br>
<h2 align='center'><b>WorkSpace</h2>
<img src="https://img.shields.io/badge/Intel-Core_i5_10600K-0071C5?style=for-the-badge&logo=intel&logoColor=white"></img>
<img src="https://img.shields.io/badge/NVIDIA-RTX2060 OC-76B900?style=for-the-badge&logo=nvidia&logoColor=white"></img>
<img src="https://img.shields.io/badge/Windows11-0078D6?style=for-the-badge&logo=windows&logoColor=white"></img>
<hr>
<br><br><br>
<h1 align='left'><b>Update Your Interpreter</b></h1>
# Windows / CMD
```python
py -m pip install --upgrade pip
```
# Linux / Terminal
```python
python -m pip install --upgrade pip
```
<br>
<hr>
<br><br><br>
<h1 align='left'><b>Installation</b></h1>
# Windows / CMD , Linux / Terminal
```python
pip install lesserapi
```
<h2 align='left'>or</h2>
```python
py -m pip install lesserapi
```
<br><br><br>
<h1 align='left'><b>Update Library</b></h1>
# Windows / CMD , Linux / Terminal
```python
pip install -U lesserapi
```
<h2 align='left'>or</h2>
```python
py -m pip install --upgrade lesserapi
```
<br><br><br>
> [!WARNING]
> This Package Only can run in Python 3.11.3 or above.
<hr>
<br>
<h1 align='left'><b>Usage</b></h1>
<br>
<details>
<summary style="font-size:2rem">Github</summary>
```python
from lesserapi.github.scraper import GithubScrape # Scraper Class
from lesserapi.handlers.user_handler import UserHandler # User Handler Class
from lesserapi.handlers.request_handler import RequestHandler # Request Handler Class
def main():
# UserHandler serializes the value you given to the username param
# RequestHandler gets the Serialized data then sends a GET request to github servers and saves the page content in request variable
request: RequestHandler = RequestHandler(
url=UserHandler(username='shervinbdndev').serialize(),
).sendGetRequest(content=True)
# Scrape gets the variable as an arg
scraper: GithubScrape = GithubScrape(data=request)
# then we start using API by calling the startApi method
scraper.startApi(log=False) # log param is for safety, the default value is True but you can change it
# After all of these steps now you're free to use the API
print(scraper.followers)
print(scraper.followings)
print(scraper.biography)
print(scraper.json_data) # get full json data of user
if (__name__ == "__main__"):
main()
```
<br><br><br>
# New Addons & Changes on Version 1.1.3
- ### Now you can Access User's Repositories Names.
```py
from lesserapi.github.scraper import GithubScrape
from lesserapi.handlers.user_handler import UserHandler
from lesserapi.handlers.request_handler import RequestHandler
def main():
request: RequestHandler = RequestHandler(
url=UserHandler(username='shervinbdndev').serialize(),
).sendGetRequest(content=True)
scraper: GithubScrape = GithubScrape(data=request)
scraper.startApi(log=False)
# Then your free to use the new method to get User's Repositories names
print(scraper.repositoriesNames(username='shervinbdndev'))
# ftl (first to last) is a new option that you can use to show the repositories from the first created to the last one
print(scraper.repositoriesNames(username='shervinbdndev', ftl=True)) # default value is False
# Also you can select the repository by index like below
print(scraper.repositoriesNames(username='shervinbdndev')[3]) # for example I want the 4th repository (It starts from 0 btw)
if (__name__ == "__main__"):
main()
```
<br><br><br>
# New Addons & Changes on Version 1.1.4
## Now you can Access
- ### User's Total Stars Given.
- ### User's Profile Picture Url.
- ### Check Repository Star Count.
```python
from lesserapi.github.scraper import GithubScrape
from lesserapi.handlers.user_handler import UserHandler
from lesserapi.handlers.request_handler import RequestHandler
def main():
request: RequestHandler = RequestHandler(
url=UserHandler(username='shervinbdndev').serialize()
).sendGetRequest(content=True)
scraper: GithubScrape = GithubScrape(data=request)
scraper.startApi(log=False)
print(scraper.totalStarsGiven) # total stars given
print(scraper.profilePictureUrl) # profile picture url
# now using this new method you lets you check users repository's star count
print(scraper.checkRepositoryStars(
username='shervinbdndev', # user's username
repo_name='Quizino', # repository's name
))
if (__name__ == "__main__"):
main()
```
<br><br><br>
# New Addons & Changes on Version 1.1.5
## Now you can Access
- ### User's Last Year Contributions.
- ### Check if User's Repository is Public Archive.
- ### Check if User has README.md.
- ### Get Repository's Used Languages.
- ### Get User's Unlocked Achievements.
```python
from lesserapi.github.scraper import GithubScrape
from lesserapi.handlers.user_handler import UserHandler
from lesserapi.handlers.request_handler import RequestHandler
def main():
user: UserHandler = UserHandler(username='shervinbdndev').serialize() # user instance
request: RequestHandler = RequestHandler(url=user).sendGetRequest(content=True) # send request by RequestHandler
scraper: GithubScrape = GithubScrape(data=request)
scraper.startApi(log=False)
print(scraper.lastYearContributions) # last year contributions
print(scraper.isRepositoryPublicArchive(username='shervinbdndev', repo_name='Quizino')) # check if repository is public archive => returns True or False
print(scraper.userHasReadMe(username='shervinbdndev')) # check if user has README.md
print(scraper.repositoryUsedLanguages(username='shervinbdndev', repo_name='lesserapi')) # get repository's used languages (also you can select by index)
print(scraper.userAchievements(username='shervinbdndev')) # get user's achievements (also you can select by index)
if (__name__ == "__main__"):
main()
```
<br><br><br>
# New Addons & Changes on Version 1.1.9
## Now you can Access
- ### List of User's Followings.
- ### List of User's Followers.
- ### Check Last Commit date of Repository with selected Branch.
- ### Check all Commit Dates of a Repository.
- ### Count the Repository Branches.
- ### Check if a Repository is froked from another Repository.
- ### Check if Repository has a LICENSE.
- ### Check the Repository's License Type.
- ### List Repository's Branches.
<br><br>
## +2 Beta Methods
- ### Get all Stars that the User has given to the Repositories.
- ### List all of the Watchers of a Repository.
```python
from lesserapi.github.scraper import GithubScrape
from lesserapi.handlers.user_handler import UserHandler
from lesserapi.handlers.request_handler import RequestHandler
def main():
user: UserHandler = UserHandler(username='shervinbdndev').serialize()
request: RequestHandler = RequestHandler(url=user).sendGetRequest(content=True)
scraper: GithubScrape = GithubScrape(data=request)
scraper.startApi(log=False)
print(scraper.listFollowings(username='shervinbdndev')) # List of User's Followings
print(scraper.listFollowers(username='shervinbdndev')) # List of User's Followings
# This Method is in Beta version of itself
# It doesn't show all User's Stars that given to Repositories
# It only Lists The Repositories on the first page
print(scraper.starsGivenRepositoriesNames(username='shervinbdndev'))
# Last Commit date of Repository with selected Branch
print(scraper.repositoryLastCommitDateOnBranch(username='shervinbdndev', repo_name='lesserapi', branch_name='master'))
# Commits dates of Repository with selected Branch
print(scraper.repositoryCommitsDatesOnBranch(username='shervinbdndev', repo_name='lesserapi', branch_name='master'))
# Count of selected Repository Branches
print(scraper.repositoryBranchesCount(username='shervinbdndev', repo_name='lesserapi'))
# Check if current Repository is Forked from another Repository
print(scraper.currentRepositoryIsForkedFromAnotherRepository(username='shervinbdndev', repo_name='lesserapi'))
# Check if Repository has a LICENSE
print(scraper.repositoryHasLicense(username='shervinbdndev', repo_name='lesserapi'))
# Get License Type of a Repository
print(scraper.repositoryLicenseType(username='shervinbdndev', repo_name='lesserapi'))
# List of Repository Watchers
# This Method is in Beta version of itself
print(scraper.listRepositoryWatchers(username='shervinbdndev', repo_name='lesserapi'))
# List of Repository Branches
print(scraper.listRepositoryBranches(username='shervinbdndev', repo_name='lesserapi'))
if (__name__ == "__main__"):
main()
```
<br><br><br>
# New Addons & Changes on Version 1.1.15
## Now you can Access
- ### Check if User is Pro or Not.
- ### User Organizations.
- ### User Organizations Pictures.
```python
from lesserapi.github.scraper import GithubScrape
from lesserapi.handlers.user_handler import UserHandler
from lesserapi.handlers.request_handler import RequestHandler
def main():
user: UserHandler = UserHandler(username='shervinbdndev').serialize()
request: RequestHandler = RequestHandler(url=user).sendGetRequest(content=True)
scraper: GithubScrape = GithubScrape(data=request)
scraper.startApi(log=False)
print(scraper.isPro)
print(scraper.userOrganizations(username='shervinbdndev'))
print(scraper.userOrganizationsPictures(username='shervinbdndev'))
if (__name__ == "__main__"):
main()
```
</details>
<details>
<summary style="font-size:2rem">Steam</summary>
# New Addons & Changes on Version 1.1.18
## Now you can Access Steam.
## Some Package Structure has changed.
## Using RequestHandler & UserHandler for gathering steam Users data, has Removed.
```python
from lesserapi.steam.scraper import SteamScrape
def main():
scraper: SteamScrape = SteamScrape()
scraper.startApi(log=True)
# Here you can get the Data of User by 2 types of gathering info: 1-By Profile ID 2- By Profile Code
# if user has no Profile ID, don't worry, you can use their Profile Code Instead.
print(scraper.displayName(profile_id='shervinbdndev')) # if User has no Profile ID
print(scraper.displayName(profile_code='76561198358095760')) # Use their Profile Code
print(scraper.location(profile_id='shervinbdndev'))
print(scraper.biography(profile_id='shervinbdndev'))
print(scraper.accountLevel(profile_id='shervinbdndev'))
print(scraper.userStatus(profile_id='shervinbdndev'))
print(scraper.recentActivity(profile_id='shervinbdndev'))
print(scraper.badges(profile_id='shervinbdndev'))
print(scraper.userAwardsMeta(profile_id='shervinbdndev', awards_given=True))
# By using this function, you can access some of the User's Meta Data such as these below:
print(scraper.userMeta(profile_id='shervinbdndev', totalAwards=True))
print(scraper.userMeta(profile_id='shervinbdndev', totalFriends=True))
print(scraper.userMeta(profile_id='shervinbdndev', totalBadges=True))
print(scraper.userMeta(profile_id='shervinbdndev', totalGames=True))
print(scraper.userMeta(profile_id='shervinbdndev', totalGroupsJoined=True))
print(scraper.userMeta(profile_id='shervinbdndev', totalReviews=True))
print(scraper.userMeta(profile_id='shervinbdndev', totalVideosUploaded=True))
# use can use both methods on gathering the user data.
print(scraper.userMeta(profile_code='76561198358095760', totalAwards=True))
print(scraper.userMeta(profile_code='76561198358095760', totalFriends=True))
.
.
.
# here's an Example of put User's last 3 games played into variables by using the function below:
# Also do not forget that you can initialize the params
games_names: list[str] = scraper.last3GamesPlayedMeta(profile_id='shervinbdndev', names=True)
games_info: list[str] = scraper.last3GamesPlayedMeta(profile_id='shervinbdndev', info=True)
# here you can create a dictionary with values of games and keys of User's game info
toDictType: dict[str, str] = dict(zip(games_names, games_info))
print(toDictType)
# Output
# {
# 'Counter-Strike 2': '1,397 hrs on recordlast played on 27 Nov',
# 'ELDEN RING': '254 hrs on recordlast played on 27 Nov',
# 'Far Cry 4': '33 hrs on recordlast played on 27 Nov'
# }
if (__name__ == "__main__"):
main()
```
<br><br><br>
# New Addons & Changes on Version 1.1.19
## +5 New Functions
## +2 New Components
## Package Functionality Stablized
```python
from lesserapi.steam.backup import GAME_CODES # + New Builtin Backup from Steam Game Codes: ! Do not open this Component
from lesserapi.steam.scraper import SteamScrape
from lesserapi.utils import findGamesWithSameName
STEAM_USERNAME: str = 'shervinbdndev'
def main() -> None:
scraper: SteamScrape = SteamScrape()
scraper.startApi(log=True)
# Here are 3 Functions that doesn't need to explain what they each do.
print(scraper.accountTotalXP(profile_id=STEAM_USERNAME))
print(scraper.accountNextLevel(profile_id=STEAM_USERNAME))
print(scraper.accountXPNeededForNextLevel(profile_id=STEAM_USERNAME))
# Here we have an new function that you can use for finding the exact name of the game.
# for example if you run the code below:
print(findGamesWithSameName(name='Counter-Strike'))
# It should give you sth
# ['Counter-Strike: Source Dedicated Server', 'Counter-Strike: GO - Intro Trailer', 'Counter-Strike Online', 'Counter-Strike Global Offensive - Dedicated Server', 'Counter-Strike: Global Offensive - SDK', 'Counter-Strike', 'Counter-Strike: Condition Zero Deleted Scenes', 'Counter-Strike Steamworks Beta', 'Counter-Strike: Source Beta', 'Counter-Strike: Condition Zero', 'Counter-Strike Nexon: Studio', 'Counter-Strike Nexon: Zombies - Rivals DLC', 'Counter-Strike Nexon: Zombies - Teddy Nightmare (30 Days)', 'Counter-Strike Nexon: Zombies - Teddy Nightmare (15 Days)', "Counter-Strike Nexon: Zombies - Oz's Trio", 'Counter-Strike Nexon: Zombies - Starter Pack', 'Counter-Strike Nexon: Zombies - Journey to the West + Permanent Character', 'Counter-Strike Nexon: Zombies - Dragon Set + Permanent Character', 'Counter-Strike Chat', 'Counter-Strike Flair', 'Counter-Strike: Global Offensive', 'Counter-Strike: Source']
# After you find the exact name of the game you want, you can use GAME_CODES.
# GAME_CODES is a constant builtin lesserapi dictionary that you can pass the game exact name as the key to it, afterwards you're all done.
print(scraper.gameDetails(game_code=GAME_CODES['Counter-Strike'], raw_json=True))
if (__name__ == "__main__"):
main()
```
</details>
<details>
<summary style="font-size:2rem">Instagram</summary>
### Not Soon Cause of Filtering
</details>
<details>
<summary style="font-size:2rem">Aparat</summary>
### Soon
</details>
<br>
<br>
<br>
<h1 align='left'>Enjoy :)</h1>
<br>
<h3><b>Package Uploaded in PYPI :<a href="https://pypi.org/project/lesserapi/">Here</a></b></h3>
Raw data
{
"_id": null,
"home_page": "",
"name": "lesserapi",
"maintainer": "Shervin Badanara",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "python,api,github,github_api,github_package",
"author": "Shervin Badanara (shervinbdndev)",
"author_email": "shervin2234@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/96/01/2e3f2311acf308a60266fed5420f5a467e5adf98160ada365760026a6182/lesserapi-1.1.19.tar.gz",
"platform": null,
"description": "\r\n<div align='center'>\r\n\r\n <a href=\"https://github.com/lesserapi/lesserapi\">\r\n\r\n <img src=\"https://raw.githubusercontent.com/lesserapi/lesserapi/logo/logo_rounded.png\" alt=\"Logo\" width=\"180\">\r\n\r\n </a>\r\n\r\n</div>\r\n\r\n<h1 align='center' style=\"font-size:5rem\"><b>lesserapi</b></h1>\r\n\r\n<p align='center'><b>Version 1.1.19</b></p>\r\n\r\n<p align='center'><b>Written with Python 3.11.3</b></p>\r\n\r\n<div align=\"center\">\r\n\r\n <div align=\"center\">\r\n\r\n <img src=\"https://img.shields.io/github/license/lesserapi/lesserapi.svg\"></img>\r\n\r\n </div>\r\n\r\n <img src=\"https://img.shields.io/github/forks/lesserapi/lesserapi.svg\"></img>\r\n\r\n <img src=\"https://img.shields.io/github/stars/lesserapi/lesserapi.svg\"></img>\r\n\r\n <img src=\"https://img.shields.io/github/watchers/lesserapi/lesserapi.svg\"></img>\r\n\r\n <img src=\"https://img.shields.io/github/issues-pr/lesserapi/lesserapi.svg\"></img>\r\n\r\n <img src=\"https://img.shields.io/github/issues-pr-closed/lesserapi/lesserapi.svg\"></img>\r\n\r\n <img src=\"https://img.shields.io/github/downloads/lesserapi/lesserapi/total.svg\"></img>\r\n\r\n</div>\r\n\r\n<br>\r\n\r\n<div align=\"center\">\r\n\r\n <img style=\"display:block;margin-left:auto;margin-right:auto;width:70%;\" src=\"https://github-readme-stats.vercel.app/api/pin/?username=lesserapi&repo=lesserapi&theme=dracula\"></img>\r\n\r\n</div>\r\n\r\n<br>\r\n\r\n<h3 align='center'>Ready To Use</h3>\r\n\r\n<h3 align='center'>Developed by Shervin Badanara (shervinbdndev) on Github</h3>\r\n\r\n<div align=\"center\">\r\n\r\n <img src=\"https://forthebadge.com/images/badges/made-with-python.svg\"></img>\r\n\r\n</div>\r\n\r\n<br>\r\n\r\n<hr>\r\n\r\n<br>\r\n\r\n<h2 align='center'><b>Language and technologies used in This Project</h2>\r\n\r\n<img src=\"https://img.shields.io/badge/Python-14354C?style=for-the-badge&logo=python&logoColor=white\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/Google_chrome-4285F4?style=for-the-badge&logo=Google-chrome&logoColor=white\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/Visual_Studio_Code-0078D4?style=for-the-badge&logo=visual%20studio%20code&logoColor=white\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/Stack_Overflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/Reddit-FF4500?style=for-the-badge&logo=reddit&logoColor=white\"></img>\r\n\r\n\r\n\r\n<br>\r\n\r\n<h2 align='center'><b>WorkSpace</h2>\r\n\r\n<img src=\"https://img.shields.io/badge/Intel-Core_i5_10600K-0071C5?style=for-the-badge&logo=intel&logoColor=white\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/NVIDIA-RTX2060 OC-76B900?style=for-the-badge&logo=nvidia&logoColor=white\"></img>\r\n\r\n<img src=\"https://img.shields.io/badge/Windows11-0078D6?style=for-the-badge&logo=windows&logoColor=white\"></img>\r\n\r\n\r\n\r\n\r\n\r\n<hr>\r\n\r\n\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n<h1 align='left'><b>Update Your Interpreter</b></h1>\r\n\r\n\r\n\r\n# Windows / CMD\r\n\r\n\r\n\r\n```python\r\n\r\npy -m pip install --upgrade pip\r\n\r\n```\r\n\r\n\r\n\r\n# Linux / Terminal\r\n\r\n\r\n\r\n```python\r\n\r\npython -m pip install --upgrade pip\r\n\r\n```\r\n\r\n<br>\r\n\r\n\r\n\r\n<hr>\r\n\r\n<br><br><br>\r\n\r\n<h1 align='left'><b>Installation</b></h1>\r\n\r\n \r\n\r\n# Windows / CMD , Linux / Terminal\r\n\r\n```python\r\n\r\npip install lesserapi\r\n\r\n```\r\n\r\n<h2 align='left'>or</h2>\r\n\r\n\r\n\r\n```python\r\n\r\npy -m pip install lesserapi\r\n\r\n```\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n<h1 align='left'><b>Update Library</b></h1>\r\n\r\n \r\n\r\n# Windows / CMD , Linux / Terminal\r\n\r\n```python\r\n\r\npip install -U lesserapi\r\n\r\n```\r\n\r\n\r\n\r\n<h2 align='left'>or</h2>\r\n\r\n\r\n\r\n```python\r\n\r\npy -m pip install --upgrade lesserapi\r\n\r\n```\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n\r\n\r\n> [!WARNING]\r\n\r\n> This Package Only can run in Python 3.11.3 or above.\r\n\r\n\r\n\r\n<hr>\r\n\r\n<br>\r\n\r\n<h1 align='left'><b>Usage</b></h1>\r\n\r\n\r\n\r\n<br>\r\n\r\n\r\n\r\n<details>\r\n\r\n\r\n\r\n<summary style=\"font-size:2rem\">Github</summary>\r\n\r\n\r\n\r\n```python\r\n\r\nfrom lesserapi.github.scraper import GithubScrape # Scraper Class\r\n\r\nfrom lesserapi.handlers.user_handler import UserHandler # User Handler Class\r\n\r\nfrom lesserapi.handlers.request_handler import RequestHandler # Request Handler Class\r\n\r\n\r\n\r\n\r\n\r\ndef main():\r\n\r\n\r\n\r\n # UserHandler serializes the value you given to the username param\r\n\r\n # RequestHandler gets the Serialized data then sends a GET request to github servers and saves the page content in request variable\r\n\r\n\r\n\r\n request: RequestHandler = RequestHandler(\r\n\r\n url=UserHandler(username='shervinbdndev').serialize(),\r\n\r\n ).sendGetRequest(content=True)\r\n\r\n \r\n\r\n\r\n\r\n # Scrape gets the variable as an arg\r\n\r\n\r\n\r\n scraper: GithubScrape = GithubScrape(data=request)\r\n\r\n\r\n\r\n # then we start using API by calling the startApi method\r\n\r\n \r\n\r\n scraper.startApi(log=False) # log param is for safety, the default value is True but you can change it\r\n\r\n \r\n\r\n\r\n\r\n # After all of these steps now you're free to use the API\r\n\r\n\r\n\r\n print(scraper.followers)\r\n\r\n print(scraper.followings)\r\n\r\n print(scraper.biography)\r\n\r\n \r\n\r\n print(scraper.json_data) # get full json data of user\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (__name__ == \"__main__\"):\r\n\r\n main()\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n\r\n\r\n# New Addons & Changes on Version 1.1.3\r\n\r\n\r\n\r\n- ### Now you can Access User's Repositories Names.\r\n\r\n\r\n\r\n```py\r\n\r\n\r\n\r\nfrom lesserapi.github.scraper import GithubScrape\r\n\r\nfrom lesserapi.handlers.user_handler import UserHandler\r\n\r\nfrom lesserapi.handlers.request_handler import RequestHandler\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ndef main():\r\n\r\n request: RequestHandler = RequestHandler(\r\n\r\n url=UserHandler(username='shervinbdndev').serialize(),\r\n\r\n ).sendGetRequest(content=True)\r\n\r\n \r\n\r\n scraper: GithubScrape = GithubScrape(data=request)\r\n\r\n \r\n\r\n scraper.startApi(log=False)\r\n\r\n\r\n\r\n # Then your free to use the new method to get User's Repositories names\r\n\r\n \r\n\r\n print(scraper.repositoriesNames(username='shervinbdndev'))\r\n\r\n\r\n\r\n # ftl (first to last) is a new option that you can use to show the repositories from the first created to the last one\r\n\r\n\r\n\r\n print(scraper.repositoriesNames(username='shervinbdndev', ftl=True)) # default value is False\r\n\r\n\r\n\r\n # Also you can select the repository by index like below\r\n\r\n\r\n\r\n print(scraper.repositoriesNames(username='shervinbdndev')[3]) # for example I want the 4th repository (It starts from 0 btw)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (__name__ == \"__main__\"):\r\n\r\n main()\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n\r\n\r\n# New Addons & Changes on Version 1.1.4\r\n\r\n\r\n\r\n## Now you can Access\r\n\r\n\r\n\r\n- ### User's Total Stars Given.\r\n\r\n- ### User's Profile Picture Url.\r\n\r\n- ### Check Repository Star Count.\r\n\r\n\r\n\r\n```python\r\n\r\n\r\n\r\nfrom lesserapi.github.scraper import GithubScrape\r\n\r\nfrom lesserapi.handlers.user_handler import UserHandler\r\n\r\nfrom lesserapi.handlers.request_handler import RequestHandler\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ndef main():\r\n\r\n request: RequestHandler = RequestHandler(\r\n\r\n url=UserHandler(username='shervinbdndev').serialize()\r\n\r\n ).sendGetRequest(content=True)\r\n\r\n \r\n\r\n scraper: GithubScrape = GithubScrape(data=request)\r\n\r\n \r\n\r\n scraper.startApi(log=False)\r\n\r\n \r\n\r\n print(scraper.totalStarsGiven) # total stars given\r\n\r\n \r\n\r\n print(scraper.profilePictureUrl) # profile picture url\r\n\r\n\r\n\r\n # now using this new method you lets you check users repository's star count\r\n\r\n\r\n\r\n print(scraper.checkRepositoryStars(\r\n\r\n username='shervinbdndev', # user's username\r\n\r\n repo_name='Quizino', # repository's name\r\n\r\n ))\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (__name__ == \"__main__\"):\r\n\r\n main()\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n\r\n\r\n# New Addons & Changes on Version 1.1.5\r\n\r\n\r\n\r\n## Now you can Access\r\n\r\n\r\n\r\n- ### User's Last Year Contributions.\r\n\r\n- ### Check if User's Repository is Public Archive.\r\n\r\n- ### Check if User has README.md.\r\n\r\n- ### Get Repository's Used Languages.\r\n\r\n- ### Get User's Unlocked Achievements.\r\n\r\n\r\n\r\n\r\n\r\n```python\r\n\r\n\r\n\r\n\r\n\r\nfrom lesserapi.github.scraper import GithubScrape\r\n\r\nfrom lesserapi.handlers.user_handler import UserHandler\r\n\r\nfrom lesserapi.handlers.request_handler import RequestHandler\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ndef main():\r\n\r\n user: UserHandler = UserHandler(username='shervinbdndev').serialize() # user instance\r\n\r\n \r\n\r\n request: RequestHandler = RequestHandler(url=user).sendGetRequest(content=True) # send request by RequestHandler\r\n\r\n \r\n\r\n scraper: GithubScrape = GithubScrape(data=request)\r\n\r\n \r\n\r\n scraper.startApi(log=False)\r\n\r\n \r\n\r\n print(scraper.lastYearContributions) # last year contributions\r\n\r\n \r\n\r\n print(scraper.isRepositoryPublicArchive(username='shervinbdndev', repo_name='Quizino')) # check if repository is public archive => returns True or False\r\n\r\n \r\n\r\n print(scraper.userHasReadMe(username='shervinbdndev')) # check if user has README.md\r\n\r\n\r\n\r\n print(scraper.repositoryUsedLanguages(username='shervinbdndev', repo_name='lesserapi')) # get repository's used languages (also you can select by index)\r\n\r\n\r\n\r\n print(scraper.userAchievements(username='shervinbdndev')) # get user's achievements (also you can select by index)\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (__name__ == \"__main__\"):\r\n\r\n main()\r\n\r\n\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n\r\n\r\n# New Addons & Changes on Version 1.1.9\r\n\r\n\r\n\r\n## Now you can Access\r\n\r\n\r\n\r\n- ### List of User's Followings.\r\n\r\n- ### List of User's Followers.\r\n\r\n- ### Check Last Commit date of Repository with selected Branch.\r\n\r\n- ### Check all Commit Dates of a Repository.\r\n\r\n- ### Count the Repository Branches.\r\n\r\n- ### Check if a Repository is froked from another Repository.\r\n\r\n- ### Check if Repository has a LICENSE.\r\n\r\n- ### Check the Repository's License Type.\r\n\r\n- ### List Repository's Branches.\r\n\r\n<br><br>\r\n\r\n\r\n\r\n## +2 Beta Methods\r\n\r\n\r\n\r\n- ### Get all Stars that the User has given to the Repositories.\r\n\r\n- ### List all of the Watchers of a Repository.\r\n\r\n\r\n\r\n\r\n\r\n```python\r\n\r\n\r\n\r\n\r\n\r\nfrom lesserapi.github.scraper import GithubScrape\r\n\r\nfrom lesserapi.handlers.user_handler import UserHandler\r\n\r\nfrom lesserapi.handlers.request_handler import RequestHandler\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ndef main():\r\n\r\n user: UserHandler = UserHandler(username='shervinbdndev').serialize()\r\n\r\n \r\n\r\n request: RequestHandler = RequestHandler(url=user).sendGetRequest(content=True)\r\n\r\n \r\n\r\n scraper: GithubScrape = GithubScrape(data=request)\r\n\r\n \r\n\r\n scraper.startApi(log=False)\r\n\r\n \r\n\r\n print(scraper.listFollowings(username='shervinbdndev')) # List of User's Followings\r\n\r\n print(scraper.listFollowers(username='shervinbdndev')) # List of User's Followings\r\n\r\n\r\n\r\n # This Method is in Beta version of itself\r\n\r\n # It doesn't show all User's Stars that given to Repositories\r\n\r\n # It only Lists The Repositories on the first page\r\n\r\n print(scraper.starsGivenRepositoriesNames(username='shervinbdndev'))\r\n\r\n\r\n\r\n # Last Commit date of Repository with selected Branch\r\n\r\n print(scraper.repositoryLastCommitDateOnBranch(username='shervinbdndev', repo_name='lesserapi', branch_name='master'))\r\n\r\n\r\n\r\n # Commits dates of Repository with selected Branch\r\n\r\n print(scraper.repositoryCommitsDatesOnBranch(username='shervinbdndev', repo_name='lesserapi', branch_name='master'))\r\n\r\n\r\n\r\n # Count of selected Repository Branches\r\n\r\n print(scraper.repositoryBranchesCount(username='shervinbdndev', repo_name='lesserapi'))\r\n\r\n\r\n\r\n # Check if current Repository is Forked from another Repository\r\n\r\n print(scraper.currentRepositoryIsForkedFromAnotherRepository(username='shervinbdndev', repo_name='lesserapi'))\r\n\r\n\r\n\r\n # Check if Repository has a LICENSE\r\n\r\n print(scraper.repositoryHasLicense(username='shervinbdndev', repo_name='lesserapi'))\r\n\r\n\r\n\r\n # Get License Type of a Repository\r\n\r\n print(scraper.repositoryLicenseType(username='shervinbdndev', repo_name='lesserapi'))\r\n\r\n\r\n\r\n # List of Repository Watchers\r\n\r\n # This Method is in Beta version of itself\r\n\r\n print(scraper.listRepositoryWatchers(username='shervinbdndev', repo_name='lesserapi'))\r\n\r\n\r\n\r\n # List of Repository Branches\r\n\r\n print(scraper.listRepositoryBranches(username='shervinbdndev', repo_name='lesserapi'))\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (__name__ == \"__main__\"):\r\n\r\n main()\r\n\r\n\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n\r\n\r\n# New Addons & Changes on Version 1.1.15\r\n\r\n\r\n\r\n## Now you can Access\r\n\r\n\r\n\r\n- ### Check if User is Pro or Not.\r\n\r\n- ### User Organizations.\r\n\r\n- ### User Organizations Pictures.\r\n\r\n\r\n\r\n```python\r\n\r\n\r\n\r\nfrom lesserapi.github.scraper import GithubScrape\r\n\r\nfrom lesserapi.handlers.user_handler import UserHandler\r\n\r\nfrom lesserapi.handlers.request_handler import RequestHandler\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ndef main():\r\n\r\n user: UserHandler = UserHandler(username='shervinbdndev').serialize()\r\n\r\n \r\n\r\n request: RequestHandler = RequestHandler(url=user).sendGetRequest(content=True)\r\n\r\n \r\n\r\n scraper: GithubScrape = GithubScrape(data=request)\r\n\r\n \r\n\r\n scraper.startApi(log=False)\r\n\r\n \r\n\r\n print(scraper.isPro)\r\n\r\n print(scraper.userOrganizations(username='shervinbdndev'))\r\n\r\n print(scraper.userOrganizationsPictures(username='shervinbdndev'))\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (__name__ == \"__main__\"):\r\n\r\n main()\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n\r\n\r\n<details>\r\n\r\n\r\n\r\n<summary style=\"font-size:2rem\">Steam</summary>\r\n\r\n\r\n\r\n# New Addons & Changes on Version 1.1.18\r\n\r\n\r\n\r\n## Now you can Access Steam.\r\n\r\n## Some Package Structure has changed.\r\n\r\n## Using RequestHandler & UserHandler for gathering steam Users data, has Removed.\r\n\r\n\r\n\r\n```python\r\n\r\n\r\n\r\nfrom lesserapi.steam.scraper import SteamScrape\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ndef main():\r\n\r\n scraper: SteamScrape = SteamScrape()\r\n\r\n \r\n\r\n scraper.startApi(log=True)\r\n\r\n \r\n\r\n # Here you can get the Data of User by 2 types of gathering info: 1-By Profile ID 2- By Profile Code\r\n\r\n # if user has no Profile ID, don't worry, you can use their Profile Code Instead.\r\n\r\n print(scraper.displayName(profile_id='shervinbdndev')) # if User has no Profile ID\r\n\r\n print(scraper.displayName(profile_code='76561198358095760')) # Use their Profile Code\r\n\r\n \r\n\r\n print(scraper.location(profile_id='shervinbdndev'))\r\n\r\n print(scraper.biography(profile_id='shervinbdndev'))\r\n\r\n print(scraper.accountLevel(profile_id='shervinbdndev'))\r\n\r\n print(scraper.userStatus(profile_id='shervinbdndev'))\r\n\r\n print(scraper.recentActivity(profile_id='shervinbdndev'))\r\n\r\n print(scraper.badges(profile_id='shervinbdndev'))\r\n\r\n print(scraper.userAwardsMeta(profile_id='shervinbdndev', awards_given=True))\r\n\r\n \r\n\r\n # By using this function, you can access some of the User's Meta Data such as these below:\r\n\r\n print(scraper.userMeta(profile_id='shervinbdndev', totalAwards=True))\r\n\r\n print(scraper.userMeta(profile_id='shervinbdndev', totalFriends=True))\r\n\r\n print(scraper.userMeta(profile_id='shervinbdndev', totalBadges=True))\r\n\r\n print(scraper.userMeta(profile_id='shervinbdndev', totalGames=True))\r\n\r\n print(scraper.userMeta(profile_id='shervinbdndev', totalGroupsJoined=True))\r\n\r\n print(scraper.userMeta(profile_id='shervinbdndev', totalReviews=True))\r\n\r\n print(scraper.userMeta(profile_id='shervinbdndev', totalVideosUploaded=True))\r\n\r\n \r\n\r\n # use can use both methods on gathering the user data.\r\n\r\n print(scraper.userMeta(profile_code='76561198358095760', totalAwards=True))\r\n\r\n print(scraper.userMeta(profile_code='76561198358095760', totalFriends=True))\r\n\r\n .\r\n\r\n .\r\n\r\n .\r\n\r\n \r\n\r\n # here's an Example of put User's last 3 games played into variables by using the function below:\r\n\r\n # Also do not forget that you can initialize the params\r\n\r\n games_names: list[str] = scraper.last3GamesPlayedMeta(profile_id='shervinbdndev', names=True)\r\n\r\n games_info: list[str] = scraper.last3GamesPlayedMeta(profile_id='shervinbdndev', info=True)\r\n\r\n\r\n\r\n # here you can create a dictionary with values of games and keys of User's game info\r\n\r\n toDictType: dict[str, str] = dict(zip(games_names, games_info))\r\n\r\n \r\n\r\n print(toDictType)\r\n\r\n \r\n\r\n \r\n\r\n # Output\r\n\r\n # {\r\n\r\n # 'Counter-Strike 2': '1,397 hrs on recordlast played on 27 Nov',\r\n\r\n # 'ELDEN RING': '254 hrs on recordlast played on 27 Nov',\r\n\r\n # 'Far Cry 4': '33 hrs on recordlast played on 27 Nov'\r\n\r\n # }\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (__name__ == \"__main__\"):\r\n\r\n main()\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n<br><br><br>\r\n\r\n\r\n\r\n# New Addons & Changes on Version 1.1.19\r\n\r\n\r\n\r\n## +5 New Functions\r\n\r\n## +2 New Components\r\n\r\n## Package Functionality Stablized\r\n\r\n\r\n\r\n\r\n\r\n```python\r\n\r\n\r\n\r\nfrom lesserapi.steam.backup import GAME_CODES # + New Builtin Backup from Steam Game Codes: ! Do not open this Component\r\n\r\nfrom lesserapi.steam.scraper import SteamScrape\r\n\r\nfrom lesserapi.utils import findGamesWithSameName\r\n\r\n\r\n\r\n\r\n\r\nSTEAM_USERNAME: str = 'shervinbdndev'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ndef main() -> None:\r\n\r\n scraper: SteamScrape = SteamScrape()\r\n\r\n \r\n\r\n scraper.startApi(log=True)\r\n\r\n \r\n\r\n # Here are 3 Functions that doesn't need to explain what they each do.\r\n\r\n print(scraper.accountTotalXP(profile_id=STEAM_USERNAME))\r\n\r\n print(scraper.accountNextLevel(profile_id=STEAM_USERNAME))\r\n\r\n print(scraper.accountXPNeededForNextLevel(profile_id=STEAM_USERNAME))\r\n\r\n \r\n\r\n # Here we have an new function that you can use for finding the exact name of the game.\r\n\r\n # for example if you run the code below:\r\n\r\n print(findGamesWithSameName(name='Counter-Strike'))\r\n\r\n\r\n\r\n # It should give you sth\r\n\r\n\r\n\r\n # ['Counter-Strike: Source Dedicated Server', 'Counter-Strike: GO - Intro Trailer', 'Counter-Strike Online', 'Counter-Strike Global Offensive - Dedicated Server', 'Counter-Strike: Global Offensive - SDK', 'Counter-Strike', 'Counter-Strike: Condition Zero Deleted Scenes', 'Counter-Strike Steamworks Beta', 'Counter-Strike: Source Beta', 'Counter-Strike: Condition Zero', 'Counter-Strike Nexon: Studio', 'Counter-Strike Nexon: Zombies - Rivals DLC', 'Counter-Strike Nexon: Zombies - Teddy Nightmare (30 Days)', 'Counter-Strike Nexon: Zombies - Teddy Nightmare (15 Days)', \"Counter-Strike Nexon: Zombies - Oz's Trio\", 'Counter-Strike Nexon: Zombies - Starter Pack', 'Counter-Strike Nexon: Zombies - Journey to the West + Permanent Character', 'Counter-Strike Nexon: Zombies - Dragon Set + Permanent Character', 'Counter-Strike Chat', 'Counter-Strike Flair', 'Counter-Strike: Global Offensive', 'Counter-Strike: Source']\r\n\r\n \r\n\r\n # After you find the exact name of the game you want, you can use GAME_CODES.\r\n\r\n # GAME_CODES is a constant builtin lesserapi dictionary that you can pass the game exact name as the key to it, afterwards you're all done.\r\n\r\n print(scraper.gameDetails(game_code=GAME_CODES['Counter-Strike'], raw_json=True))\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (__name__ == \"__main__\"):\r\n\r\n main()\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n</details>\r\n\r\n\r\n\r\n<details>\r\n\r\n\r\n\r\n<summary style=\"font-size:2rem\">Instagram</summary>\r\n\r\n\r\n\r\n### Not Soon Cause of Filtering\r\n\r\n\r\n\r\n</details>\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n\r\n\r\n\r\n<summary style=\"font-size:2rem\">Aparat</summary>\r\n\r\n\r\n\r\n### Soon\r\n\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n\r\n\r\n<br>\r\n\r\n<br>\r\n\r\n<br>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<h1 align='left'>Enjoy :)</h1>\r\n\r\n\r\n\r\n<br>\r\n\r\n<h3><b>Package Uploaded in PYPI :<a href=\"https://pypi.org/project/lesserapi/\">Here</a></b></h3>\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A python Package API for gathering Users Information in some Platforms.",
"version": "1.1.19",
"project_urls": {
"Source": "https://www.github.com/lesserapi/lesserapi/"
},
"split_keywords": [
"python",
"api",
"github",
"github_api",
"github_package"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b05b825ba89cf41ba67742359121127dad5c2119dc7a29212606594ddd169e9a",
"md5": "b159d6cef955e3dbe18d08d896db4a61",
"sha256": "a6056130121f308abfef98ffa66252cd43d197abebfd628122d0ade79dfe2df7"
},
"downloads": -1,
"filename": "lesserapi-1.1.19-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b159d6cef955e3dbe18d08d896db4a61",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 2484792,
"upload_time": "2023-12-05T13:26:03",
"upload_time_iso_8601": "2023-12-05T13:26:03.083367Z",
"url": "https://files.pythonhosted.org/packages/b0/5b/825ba89cf41ba67742359121127dad5c2119dc7a29212606594ddd169e9a/lesserapi-1.1.19-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "96012e3f2311acf308a60266fed5420f5a467e5adf98160ada365760026a6182",
"md5": "5bca1616b54ca881a90c9485c964ff8b",
"sha256": "db273e62c967504b3f3cb8de901cdeca107bd53be311d756c0c7516d2424386b"
},
"downloads": -1,
"filename": "lesserapi-1.1.19.tar.gz",
"has_sig": false,
"md5_digest": "5bca1616b54ca881a90c9485c964ff8b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2461692,
"upload_time": "2023-12-05T13:26:57",
"upload_time_iso_8601": "2023-12-05T13:26:57.243669Z",
"url": "https://files.pythonhosted.org/packages/96/01/2e3f2311acf308a60266fed5420f5a467e5adf98160ada365760026a6182/lesserapi-1.1.19.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-05 13:26:57",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "lesserapi",
"github_project": "lesserapi",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "lesserapi"
}