├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug.md │ ├── ideas.md │ └── python-question.md ├── pull_request_template.md └── workflows │ ├── community.yml │ └── stale.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md └── all-python-codes ├── bagels ├── README.md └── main.py ├── bulk-file-renamer ├── README.md └── main.py ├── countdown-timer ├── README.md ├── screenshot_1.png ├── screenshot_2.png └── timer.py ├── dictionary-algo ├── README.md ├── data.json └── dictionary.py ├── e-mail-scrapper ├── README.md ├── email.py ├── emaildb.py └── emailfile.txt ├── git-pics-scrapper ├── README.md └── gitpics.py ├── image-retrieval ├── README.md └── image-retrieval.py ├── longest-word-in-text-file ├── README.md ├── longestWordInFile.py └── script_screenshot.png ├── number-guessing-game ├── README.md ├── numberGuessingGame.py └── script_screenshot.png ├── password-generator ├── password-generator-1 │ ├── README.md │ ├── my_password_generator.py │ ├── screenshot_1.png │ ├── screenshot_2.png │ └── screenshot_3.png └── password-generator-2 │ ├── README.md │ ├── generate_password.py │ ├── screenshot_1.png │ ├── screenshot_2.png │ └── screenshot_3.png ├── password-validator ├── README.md ├── main.py ├── screenshot_1.png ├── screenshot_2.png └── screenshot_3.png ├── retri-itunes-data ├── README.md ├── itunesdata.xml ├── tracks.py └── tracksc.py └── retrieve-school-data ├── README.md ├── itunesdata.xml ├── roster_data.json ├── rosterdb.py └── rosters.py /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | custom: ["https://paystack.com/pay/chryzhub"] 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug 3 | about: Create a bug-report to help us address errors in the repo. 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Description** 11 | 12 | 13 | 14 | **Stack** 15 | 16 | Project stack or language (eg. Frontend): 17 | 18 | **Working Environment** 19 | 20 | Operating System (eg Linux): 21 | 22 | Browser (eg. Chrome): 23 | 24 | Device (eg. Laptop or Phone): 25 | 26 | **Screenshots** 27 | 28 | Please add a screenshot if applicable 29 | 30 | [Optional] **Additional Context** 31 | 32 | Add any other context about the problem here. 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/ideas.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Ideas 3 | about: Bringing up ideas for the smooth running of the community 4 | title: 'I have an idea' 5 | labels: 'ideas' 6 | assignees: 'chryzcodez' 7 | 8 | --- 9 | 10 | 11 | **Description** 12 | 13 | A brief description of the ideas: 14 | 15 | **Goals** 16 | 17 | The aim and objectives of the ideas: 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/python-question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Technical question 3 | about: I am stuck please can someone help 4 | title: '' 5 | labels: question 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Description** 11 | 12 | A brief description of the question or issue, also include what you tried and what didn't work: 13 | 14 | **Stack** 15 | 16 | Project stack or language (Python & frameworks): 17 | 18 | **Working Environment** 19 | 20 | Operating System (eg Windows): 21 | 22 | 23 | **Screenshots** 24 | 25 | Please add a screenshot if applicable 26 | 27 | [Optional] **Additional Context** 28 | 29 | Add any other context about the problem here. 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | #ISSUE-NO 2 | 3 | #### What does this PR do? 4 | 5 | #### Description of Task to be completed? 6 | 7 | #### How can this be manually tested? 8 | 9 | #### Any background context you want to provide? 10 | 11 | #### What is the relevant issue link? 12 | 13 | #### Screenshots (if appropriate) 14 | 15 | #### Questions: 16 | 17 | -------------------------------------------------------------------------------- /.github/workflows/community.yml: -------------------------------------------------------------------------------- 1 | on: 2 | issues: 3 | types: [opened] 4 | pull_request_target: 5 | types: [opened] 6 | 7 | jobs: 8 | welcome: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/first-interaction@v1 12 | with: 13 | repo-token: ${{ secrets.GITHUB_TOKEN }} 14 | issue-message: '

It''s great having you contribute to this community

Thank you for raising an Issue!
Welcome to Chryz-Hub

If you are willing to join the community, connect via the Chryz-Hub Connect Website
You can make a pratice pull request and also add your name been a member of the community ~~ here.

' 15 | pr-message: '

It''s great having you contribute to this community

Thank you for creating a Pull Request!
Welcome to Chryz-Hub

If you are willing to join the community, connect via Chryz-Hub Connect Website
You can make a pratice pull request and also add your name been a member of the community ~~ here.

' 16 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: 'Close stale issues and PRs' 2 | on: 3 | schedule: 4 | - cron: '30 1 * * *' 5 | 6 | jobs: 7 | stale: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/stale@v3 11 | with: 12 | repo-token: ${{ secrets.GITHUB_TOKEN }} 13 | stale-issue-label: 'stale' 14 | stale-pr-label: 'stale' 15 | stale-issue-message: 'This issue is stale because it has been open 20 days with no activity. Remove stale label or comment or this will be closed in 10 days.' 16 | stale-pr-message: 'This PR is stale because it has been open 20 days with no activity. Remove stale label or comment or this will be closed in 20 days.' 17 | close-issue-message: 'This issue was closed because it has been stalled for 15 days with no activity.' 18 | close-pr-message: 'This PR was closed because it has been stalled for 15 days with no activity.' 19 | days-before-issue-stale: 20 20 | days-before-pr-stale: 20 21 | days-before-issue-close: 15 22 | days-before-pr-close: 15 23 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at chryzhub@gmail.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | When contributing to this repository, please first discuss the change you wish to make via issue, 4 | email, or any other method with the owners of this repository before making a change. 5 | 6 | Please note we have a [CODE of CONDUCT](https://github.com/chryz-hub/py-newbies-project/blob/main/CODE_OF_CONDUCT.md), please follow it in all your interactions with the project. 7 | 8 | 9 | ## Pull Request Process 10 | 11 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a 12 | build. 13 | 2. Update the README.md with details of changes to the interface, this includes new environment 14 | variables, exposed ports, useful file locations and container parameters. 15 | 3. Increase the version numbers in any examples files and the README.md to the new version that this 16 | Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). 17 | 4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you 18 | do not have permission to do that, you may request the second reviewer to merge it for you. 19 | 20 | ## Commit Message Guidelines 😎 21 | 22 | In order to make git commit messages **easier to read** and faster to reason about, we follow some guidelines on most commits to keep the **format predictable**. Check [Conventional Commits specification](https://conventionalcommits.org) for more information about our guidelines. 23 | 24 | **Examples**: 25 | 26 | ``` 27 | docs(changelog): update changelog to beta.5 28 | docs: add API documentation to the bot 29 | test(server): add cache tests to the movie resource 30 | fix(web): add validation to phone input field 31 | fix(web): remove avatar image from being required in form 32 | fix(release): need to depend on latest rxjs and zone.js 33 | ``` 34 | 35 | ### Type 36 | 37 | Must be one of the following: 38 | 39 | - **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm). 40 | - **ci**: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs) 41 | - **docs**: Documentation only changes 42 | - **feat**: A new feature 43 | - **fix**: A bug fix 44 | - **perf**: A code change that improves performance 45 | - **refactor**: A code change that neither fixes a bug nor adds a feature 46 | - **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) 47 | - **test**: Adding missing tests or correcting existing tests 48 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Chryz-Hub 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Py-Projects 2 | 3 | 4 | 5 | 6 | 7 | 8 | This is a repository where codes, programs and projects written in python language are brought together for the growth, fast learning and also the creating of hand-on-projects experiences for codenewbies(beginners) in the language `PYTHON` 9 | 10 | __Feel free to create an [issue](https://github.com/chryz-hub/py-tutorials/issues) or make a Pull Request. Please see our [Contributing file](https://github.com/chryz-hub/py-tutorials/blob/master/CONTRIBUTING.md) 11 | first and our [code of conduct](https://github.com/chryz-hub/py-tutorials/blob/master/CODE_OF_CONDUCT.md), before making new commits or opening a PR, we appreciate it! 12 | In order for us not to ignore your effort, please check well not to make a duplicate of a PR(contribution)/ issue!__ 13 | 14 | ## For your contributions to be merged; 15 | 16 | - Put the project, codes or program in a directory(like a repo) 17 | - Add a readme file; Explaining major things 18 | - How to run the programs 19 | - Neccesary links either leading to an article, a video or a documentation that is realated to the codes available 20 | - Explain the functions of each codes available in the repo/ dir 21 | - If neccesary add snippets of codes explaining things difficult to understand 22 | - Writing of comments in the codes would be of real help 23 | - Screenshot(s) of the program output (optional) 24 | 25 | * Check this out as a [sample](https://github.com/chryzcodez/retrieve-json-data) 26 | 27 | ## Content 28 | 29 | # Projects 30 | 31 | SR No | Project | Author 32 | --- | --- | --- 33 | 1 | [Bulk File Renamer](https://github.com/chryz-hub/py-projects/tree/master/all-python-codes/bulk-file-renamer) | [Olanrewaju Alaba](https://github.com/chryzcodez) 34 | 2 | [Dictionary Algorithm](https://github.com/chryz-hub/py-projects/tree/master/all-python-codes/dictionary-algo)| [Olanrewaju Alaba](https://github.com/chryzcodez) 35 | 3 | [Password Generator](https://github.com/Mannuel25/py-projects/tree/master/all-python-codes/password-generator) | [Emmanuel Tanimowo](https://github.com/Mannuel25) 36 | 4 | [E-mail Scrapper](https://github.com/chryz-hub/py-projects/tree/master/all-python-codes/e-mail-scrapper) | [Olanrewaju Alaba](https://github.com/chryzcodez) 37 | 5 | [Git-Pics-Scrapper](https://github.com/chryz-hub/py-projects/tree/master/all-python-codes/git-pics-scrapper) | [Olanrewaju Alaba](https://github.com/chryzcodez) 38 | 6 | [Image Retrieval](https://github.com/chryz-hub/py-projects/tree/master/all-python-codes/image-retrieval) | [Olanrewaju Alaba](https://github.com/chryzcodez) 39 | 7 | [Itunes Data Retrieval](https://github.com/chryz-hub/py-projects/tree/master/all-python-codes/retri-itunes-data) | [Olanrewaju Alaba](https://github.com/chryzcodez) 40 | 8 | [School Data Retrieval](https://github.com/chryz-hub/py-projects/tree/master/all-python-codes/retrieve-school-data) | [Olanrewaju Alaba](https://github.com/chryzcodez) 41 | 9 | [Number Guessing Game](https://github.com/chryz-hub/py-projects/tree/master/all-python-codes/number-guessing-game) | [Emmanuel Tanimowo](https://github.com/Mannuel25) 42 | 10 | [Countdown Timer](https://github.com/Mannuel25/py-projects/tree/master/all-python-codes/countdown-timer) | [Emmanuel Tanimowo](https://github.com/Mannuel25) 43 | 11 | [Longest Word In Text File](https://github.com/Mannuel25/py-projects/tree/master/all-python-codes/longest-word-in-text-file) | [Emmanuel Tanimowo](https://github.com/Mannuel25) 44 | 12 | [Password Validator](https://github.com/Mannuel25/py-projects/tree/master/all-python-codes/password-validator) | [Emmanuel Tanimowo](https://github.com/Mannuel25) 45 | -------------------------------------------------------------------------------- /all-python-codes/bagels/README.md: -------------------------------------------------------------------------------- 1 | # Bagels - Detective Logic Game 2 | 3 | - ## [main.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/bagels/main.py) 4 | 5 | Bagels, a detective logic game, you must guess a secret number three-digit number based on clues. The game offers one of the following hints in response to your guess. 6 | 7 | "Pico" when your guess has a correct digit in the wrong place, "Fermi" when your guess has a correct digit in the corect place, and "Bagels" if your guess has no corect digit. 8 | 9 | You have 10 tries to guess the secret number 10 | 11 | Code/program owned by: 12 | [Ibrahim Raimi](https://github.com/ibrahimraimi) -------------------------------------------------------------------------------- /all-python-codes/bagels/main.py: -------------------------------------------------------------------------------- 1 | from random import shuffle 2 | 3 | NUM_DIGIT = 3 4 | MAX_GUESSES = 10 5 | 6 | 7 | def main(): # main game 8 | print( 9 | f""" 10 | Bagels, a detective logic game. 11 | By Ibrahim raimi 12 | 13 | I am thinking of a number {NUM_DIGIT} number with no repeted digits. 14 | Try to guess what it is. Here re some clues: 15 | When i say: That means: 16 | Pico One digit is correct but in the wrong position. 17 | Fermi One digit is correct and in the right position. 18 | Bagels No digit is correct. 19 | 20 | For example, if the secret number was 248 and your guess was 843, the clues would be Fermi Pico 21 | """ 22 | ) 23 | 24 | while True: # main game loop 25 | secret_num = get_secret_num() 26 | print("I have though of a number") 27 | print(f"You have {MAX_GUESSES} guesses to get it.") 28 | 29 | num_guesses = 1 30 | while num_guesses <= MAX_GUESSES: 31 | guess = "" 32 | 33 | # keep looping until they enter a valid guess: 34 | while len(guess) != NUM_DIGIT or not guess.isdecimal(): 35 | print(f"Guess {num_guesses}") 36 | guess = input("> ") 37 | 38 | clues = get_clues(guess, secret_num) 39 | print(clues) 40 | num_guesses += 1 41 | 42 | if guess == secret_num: 43 | break 44 | 45 | if num_guesses > MAX_GUESSES: 46 | print("You ran out of guesses.") 47 | print(f"The nswer was {secret_num}") 48 | break 49 | 50 | print("Do you want to play again? (yes or no)") 51 | if not input("> ").lower().startswith("y"): 52 | break 53 | print("Thanks for playing") 54 | 55 | 56 | def get_secret_num(): 57 | """ returns a string made up of {NUM_DIGITS} uniqe random digits """ 58 | numbers = list("0123456789") # create a list of digits 0 - 9 59 | shuffle(numbers) # shuffle them into random order 60 | 61 | """ get the first {NUM_DIGITS} digits in the list for the secret number """ 62 | secret_num = "" 63 | for i in range(NUM_DIGIT): 64 | secret_num += str(numbers[i]) 65 | return secret_num 66 | 67 | 68 | def get_clues(guess, secret_num): 69 | """ returns a string with the pico, fermi, bagels clues for a guess and secret number pair """ 70 | if guess == secret_num: 71 | return "You got it!" 72 | 73 | clues = [] 74 | 75 | for i in range(len(guess)): 76 | if guess[i] == secret_num[i]: 77 | # a correct digit is in the correct place 78 | clues.append("Fermi") 79 | elif guess[i] in secret_num: 80 | # a correct digit is in the incorrect place 81 | clues.append("Pico") 82 | 83 | if len(clues) == 0: 84 | return "Bagels" # there are no correct digit at all 85 | else: 86 | # sort the clues into alphabetical order so their original order does not give information away 87 | clues.sort() 88 | return " ".join(clues) 89 | 90 | 91 | if __name__ == "__main__": 92 | main() 93 | -------------------------------------------------------------------------------- /all-python-codes/bulk-file-renamer/README.md: -------------------------------------------------------------------------------- 1 | # Bulk File Renamer 2 | 3 | - ## [main.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/bulk-file-renamer/main.py) 4 | 5 | This is a python code that helps you to reduce the stress of renaming a bulk of file present in a folder. 6 | The codes would help yo to change the files to right path and name in a chronological format. 7 | 8 | You don't need to really bother much on these because the code has been well commented out for you 9 | to easily understand what it is all about. 10 | 11 | Code/program owned by: 12 | [@chryzcodez](https://github.com/chryzcodez) 13 | -------------------------------------------------------------------------------- /all-python-codes/bulk-file-renamer/main.py: -------------------------------------------------------------------------------- 1 | # import os for python to access your device and operating system 2 | import os 3 | 4 | def main(): 5 | # get a variable 6 | i = 0 7 | file_path = # ex 'C:/Users/chryz/Desktop/try/mysite/polls/templates/polls/' 8 | for file_name in os.listdir(file_path) 9 | my_files = file_name + str(i) # you can add any extension to this depending on your files 10 | # if it is a folder full of python codes ---------- my_files = file_name + str(i) + '.py'-------------- 11 | 12 | #sorting out the renaming of the files 13 | my_source = file_path + file_name 14 | my_files = file_path + my_files 15 | os.rename(my_source, my_files) 16 | # define the variable more better to suit our purpose 17 | i =+ 1 18 | 19 | # calling the defined function 20 | if __name__ = '__main__' : 21 | main() 22 | -------------------------------------------------------------------------------- /all-python-codes/countdown-timer/README.md: -------------------------------------------------------------------------------- 1 | # Countdown Timer 2 | 3 | This program takes in the number of seconds to countdown and displays a message when the time elapses. 4 | 5 | # Prerequisites 6 | 7 | It requires no prerequisites, you only need to run the script. If you don't have Python installed, you can visit [here](https://www.python.org/downloads/) to download Python. 8 | 9 | # How to run the script 10 | 11 | Running the script is pretty easy, open a terminal in the folder where your script is located and run the following command : 12 | 13 | `python timer.py` 14 | 15 | # Sample use of the script 16 | 17 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/countdown-timer/screenshot_1.png) 18 | 19 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/countdown-timer/screenshot_2.png) 20 | 21 | # Author's name 22 | 23 | [Tanimowo Emmanuel](https://github.com/Mannuel25) 24 | -------------------------------------------------------------------------------- /all-python-codes/countdown-timer/screenshot_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/countdown-timer/screenshot_1.png -------------------------------------------------------------------------------- /all-python-codes/countdown-timer/screenshot_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/countdown-timer/screenshot_2.png -------------------------------------------------------------------------------- /all-python-codes/countdown-timer/timer.py: -------------------------------------------------------------------------------- 1 | import time 2 | 3 | def countdownTimer(): 4 | # get the number of seconds 5 | no_of_secs = int(input('How many seconds?: ')) 6 | while no_of_secs: 7 | if no_of_secs < 60: 8 | # calculate the number of hours, minutes and seconds 9 | hrs = no_of_secs // 3600 10 | mins = no_of_secs // 60 11 | secs = no_of_secs % 60 12 | # format the hours, minutes 13 | # and seconds to be displayed 14 | timer = '%02d:%02d:%02d' %(hrs, mins, secs) 15 | print(timer, end='\r') 16 | # delay execution of code by one second 17 | time.sleep(1) 18 | # countdown the number of seconds 19 | no_of_secs -= 1 20 | elif 60 <= no_of_secs < 3600: 21 | # calculate the number of hours, minutes and seconds 22 | hrs = no_of_secs // 3600 23 | mins = no_of_secs // 60 24 | secs = no_of_secs % 60 25 | # format the hours, minutes 26 | # and seconds to be displayed 27 | timer = '%02d:%02d:%02d' %(hrs, mins, secs) 28 | print(timer, end='\r') 29 | # delay execution of code by one second 30 | time.sleep(1) 31 | # countdown the number of seconds 32 | no_of_secs -= 1 33 | elif 3600 <= no_of_secs <= 86400: 34 | # calculate the number of hours, minutes and seconds 35 | hrs = no_of_secs // 3600 36 | mins = (no_of_secs % 3600) // 60 37 | secs = (no_of_secs % 3600) % 60 38 | # format the hours, minutes 39 | # and seconds to be displayed 40 | timer = '%02d:%02d:%02d' %(hrs, mins, secs) 41 | print(timer, end='\r') 42 | # delay execution of code by one second 43 | time.sleep(1) 44 | # countdown the number of seconds 45 | no_of_secs -= 1 46 | print('Time Up!') 47 | 48 | countdownTimer() -------------------------------------------------------------------------------- /all-python-codes/dictionary-algo/README.md: -------------------------------------------------------------------------------- 1 | # Dictionary Algorithm 2 | We would not be explaining explicitly on this becase the codes are well commented for you to understand what it is all about. 3 | 4 | - ## [Dictionary.py](https://github.com/chryzcodez/py-projects/blob/master/all-python-codes/dictionary-algo/dictionary.py) 5 | This is the python code/algorithm that workes through getting and parsing a wordd to get it's specific defination. 6 | - ## [Data.json](https://github.com/chryzcodez/py-projects/blob/master/all-python-codes/dictionary-algo/data.json) 7 | This is the json file where words are stored, not complete as the words embedded in a real dictionary but it contains necessary, important and enough words and it's specific 8 | definations to act as a dictionary. You can view this file directly here on github because of how large it is. So, do well to download it on your machine. 9 | -------------------------------------------------------------------------------- /all-python-codes/dictionary-algo/dictionary.py: -------------------------------------------------------------------------------- 1 | # import the json library 2 | import json 3 | # library for close matchng of words 4 | from difflib import get_close_matches 5 | 6 | # load a json file 7 | data = json.load(open("data.json")) 8 | 9 | # defines the function translate() in a more suitable way 10 | def translate(word): 11 | word = word.lower() 12 | # using conditions to get the proper definations despite the manner of input 13 | if word in data: 14 | return data[word] 15 | elif word.title() in data : 16 | return data[word.title()] 17 | elif word.upper() in data : 18 | return data[word.upper()] 19 | elif len(get_close_matches(word, data.keys())) > 0 : 20 | # getting the closest word and the meaning 21 | print("did you mean %s instead" %get_close_matches(word, data.keys())[0]) 22 | decide = input("Press yes or no: ") 23 | if decide == "yes": 24 | return data[get_close_matches(word, data.keys())[0]] 25 | elif decide == "no": 26 | return ("-------The word does not exist!-------") 27 | else: 28 | return("----You have entered the wrong input!, please enter yes or no ----") 29 | else: 30 | print("-----You have entered the wrong word, please check it again!-----") 31 | 32 | 33 | # For the user 34 | word = input("Enter the word you want to search for: ") 35 | #called out the function we defined above 36 | output= translate(word) 37 | #if the defination of a word is more than one, it is a list automatically 38 | #Iteration for the definations in a list to be seperated and more visible for people to understand 39 | if type(output) == list : 40 | for item in output : 41 | print(item) 42 | else: 43 | print(output) 44 | -------------------------------------------------------------------------------- /all-python-codes/e-mail-scrapper/README.md: -------------------------------------------------------------------------------- 1 | # E-mail Scrapper 2 | This is a python code parses through a list of email address and scrapes a specific segment of the e-mail address, you can tweak it to scrape an aspect of the e-mail 3 | address you want! 4 | 5 | You don't have to worry much the codes are well commented for you to really understand what it's all about 6 | 7 | 8 | - ## [email.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/e-mail-scrapper/email.py) 9 | This is a pure python code that does the job of scrapping the e-mail address list and providing out your desired output 10 | 11 | - ## [emaildb.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/e-mail-scrapper/emaildb.py) 12 | This is a python code with sqlite database. This is same as `email.py` except the feature of storing your desired output (e-mail address) 13 | in a database. 14 | 15 | - ## [emailfile.txt](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/e-mail-scrapper/emailfile.txt) 16 | This is a resources which has list of email for testing and tweaking your codes! 17 | 18 | Code/program owned by: 19 | [@chryzcodez](https://github.com/chryzcodez) 20 | -------------------------------------------------------------------------------- /all-python-codes/e-mail-scrapper/email.py: -------------------------------------------------------------------------------- 1 | # file input for users 2 | fname = input('Enter file name: ') 3 | # if the enter key is pressed 'emailfile.txt' is the file automatically 4 | if (len(fname) < 1): fname = 'emailfile.txt' 5 | #file handle 6 | fh = open(fname) 7 | # a loop that prints out the email 8 | for line in fh: 9 | # parsing through 10 | if not line.startswith('From '): continue 11 | pieces = line.split() 12 | email = pieces[1] 13 | info1 = email.find('@') 14 | info2 = email.find(' ', info1) 15 | org = email[info1 + 1:info2] 16 | 17 | print (org) 18 | -------------------------------------------------------------------------------- /all-python-codes/e-mail-scrapper/emaildb.py: -------------------------------------------------------------------------------- 1 | # download sqlite browser to really run this program 2 | import sqlite3 3 | # create an sqlite database called 'emailc' and a database handle = cur 4 | conn = sqlite3.connect('emailc.sqlite') 5 | cur = conn.cursor() 6 | 7 | # make a table 8 | cur.execute('DROP TABLE IF EXISTS Counts') 9 | 10 | # making column in the table 11 | cur.execute(''' 12 | CREATE TABLE Counts (org TEXT, count INTEGER)''') 13 | # file input for users 14 | fname = input('Enter file name: ') 15 | # if the enter key is pressed 'emailfile.txt' is the file automatically 16 | if (len(fname) < 1): fname = 'mbox.txt' 17 | #file handle 18 | fh = open(fname) 19 | # a loop that prints out the email org 20 | for line in fh: 21 | # parsing through 22 | if not line.startswith('From '): continue 23 | pieces = line.split() 24 | email = pieces[1] 25 | info1 = email.find('@') 26 | info2 = email.find(' ', info1) 27 | org = email[info1 + 1:info2] 28 | 29 | #inserting the email org into the sql database 30 | cur.execute('SELECT count FROM Counts WHERE org = ? ', (org,)) 31 | row = cur.fetchone() 32 | if row is None: 33 | cur.execute('''INSERT INTO Counts (org, count) 34 | VALUES (?, 1)''', (org,)) 35 | # updating the count if same org is present in the database 36 | else: 37 | cur.execute('UPDATE Counts SET count = count + 1 WHERE org = ?', 38 | (org,)) 39 | conn.commit() 40 | 41 | 42 | # https://www.sqlite.org/lang_select.html 43 | #the top ten email org avialable 44 | sqlstr = 'SELECT org, count FROM Counts ORDER BY count DESC LIMIT 10' 45 | 46 | #looping to print them out 47 | for row in cur.execute(sqlstr): 48 | print(str(row[0]), row[1]) 49 | 50 | cur.close() 51 | -------------------------------------------------------------------------------- /all-python-codes/git-pics-scrapper/README.md: -------------------------------------------------------------------------------- 1 | # Git-Pics-Scrapper 2 | 3 | - ## [gitpics.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/git-pics-scrapper/gitpics.py) 4 | This is a python code that sends a request to GitHub user URL and parses the through the codes of that parses and prints out the URL of that GitHub user profile image. 5 | 6 | ## To get started please make sure you have these installed on your device 7 | 8 | ### PIP 9 | PIP is a package manager for Python packages or modules, it is the standard package manager for Python. It allows you to install and manage additional packages that are not part of the Python standard library. 10 | 11 | If you would love to watch a video on how pip is installed. [Check out this video](https://www.youtube.com/watch?v=Ko9b_vC6XY0) 12 | 13 | You can check if you have it properly installed on your device by writing this code on your command terminal(CMD) `pip --version` If it shows the version of pip, example...something like this `pip 21.0.1 from c:\python\392\lib\site-packages\pip (python 3.9)` might not necessary be like mine but something like this, then 14 | you have it properly installed on your device but if it shows something like error, then it is not properly installed. 15 | 16 | ## After that, then you need to install these libraries 17 | - `pip install requests` 18 | - and `pip install bs4` 19 | 20 | Without these the python code would not run the way it should! 21 | Code/program owned by: 22 | [@chryzcodez](https://github.com/chryzcodez) 23 | -------------------------------------------------------------------------------- /all-python-codes/git-pics-scrapper/gitpics.py: -------------------------------------------------------------------------------- 1 | # I hope you read through the readme file, if you did not please go back and check through it. 2 | 3 | import requests 4 | from bs4 import BeautifulSoup as bs 5 | 6 | # input for a github user 7 | github_user = input('Enter a github user: ') 8 | # concatenate the input with github url 9 | url = 'https://github.com/'+github_user 10 | #Request for the url 11 | r = requests.get(url) 12 | #use BeautifulSoup to clean and parse the url 13 | soup = bs(r.content, 'html.parser') 14 | #parse and seatch of the url that renders the github profile image 15 | profile_img = soup.find('img', {'alt' : 'Avatar'})['src'] 16 | #print out the image. The print out would only give you the url to the github profile image 17 | print(profile_img) 18 | -------------------------------------------------------------------------------- /all-python-codes/image-retrieval/README.md: -------------------------------------------------------------------------------- 1 | # [image-retrieval.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/image-retrieval/image-retrieval.py) 2 | 3 | 4 | This is a python code to retrieve an image from the internet, a website specifically. The python code is well commented to take 5 | you along in the process of understanding what it is all about. 6 | 7 | There is space for your modification, eg: 8 | - The website where the image is available 9 | - The exact image you need 10 | 11 | A sample i.e.~~ a website and a picture precisely has been provided for you to run, test and tweak the code. 12 | 13 | - [image-retrieval.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/image-retrieval/image-retrieval.py) 14 | 15 | Code/program owned by: 16 | [@chryzcodez](https://github.com/chryzcodez) 17 | 18 | -------------------------------------------------------------------------------- /all-python-codes/image-retrieval/image-retrieval.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import time 3 | 4 | # Put in a website in HOST ' ' 5 | # EX HOST = 'data.pr4e.org' 6 | HOST = ' ' 7 | PORT = 80 8 | 9 | mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 10 | mysock.connect((HOST, PORT)) 11 | #put the link of the image available in the website as provided in the word HOST 12 | # EX mysock.sendall(b'GET http://data.pr4e.org/cover3.jpg HTTP/1\r\n\r\n') 13 | mysock.sendall(b' HTTP/1\r\n\r\n') 14 | count = 0 15 | picture = b"" 16 | 17 | while True : 18 | # recieving the data from the socket 19 | data = mysock.recv(5120) 20 | # if data has finished, stop 21 | if len(data) < 1: break 22 | # you can remove the '#', the code is to cause the data to pause at certain time, this aids if the data retrieving is large 23 | #time.sleep(0.25) 24 | # ge the length & the count of the data 25 | count = count + len(data) 26 | print(len(data), count) 27 | picture = picture + data 28 | 29 | mysock.close 30 | 31 | 32 | 33 | # Skip past the header and save the picture data 34 | 35 | # to use this remove the 'hashtag' 36 | #picture = picture[pos+4:] 37 | #fhand = open("stuff.jpg", "wb") 38 | #fhand.write(picture) 39 | #fhand.close() 40 | -------------------------------------------------------------------------------- /all-python-codes/longest-word-in-text-file/README.md: -------------------------------------------------------------------------------- 1 | # Display longest word in a text file 2 | 3 | This a program that helps you search and display the longest word in a text file. 4 | 5 | # Prerequisites 6 | 7 | It requires no prerequisites, you only need to run the script. If you don't have Python installed, you can visit [here](https://www.python.org/downloads/) to download Python. 8 | 9 | # How to run the script 10 | 11 | To run the script, open a terminal in the folder where your script is located and run the following command 12 | 13 | `python longestWordInFile.py`. 14 | 15 | # Sample use of the script 16 | 17 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/longest-word-in-text-file/script_screenshot.png) 18 | 19 | # Author's name 20 | 21 | [Tanimowo Emmanuel](https://github.com/Mannuel25) -------------------------------------------------------------------------------- /all-python-codes/longest-word-in-text-file/longestWordInFile.py: -------------------------------------------------------------------------------- 1 | def longest_word_in_file(): 2 | """ 3 | A program that takes in a filename and displays the longest 4 | word(s) in the file we'll be making use of text files only. 5 | : return: None 6 | """ 7 | # get the filename 8 | filename = input('\nEnter the filename only, the file extension would be added: ') 9 | # add the file extension to the filename 10 | filename = filename.strip() + '.txt' 11 | # make a dictionary that tracks 12 | # each word and their length 13 | words_and_their_length = {} 14 | try: 15 | with open(filename, 'r') as f_obj: 16 | # loop through each sentence / line and 17 | # split each sentence into several words 18 | for i in f_obj: 19 | split_sentence = i.split() 20 | # loop through each splitted word and 21 | # store the name and length of each word 22 | for j in split_sentence: 23 | words_and_their_length[j] = len(j) 24 | except FileNotFoundError: 25 | print(f'The file \'{filename}\' couldn\'t be found') 26 | else: 27 | # get the length of each word in file 28 | length_of_each_word = [i for i in words_and_their_length.values()] 29 | # get the length of the longest word 30 | longest_word_length = max(length_of_each_word) 31 | if length_of_each_word.count(longest_word_length) == 1: 32 | for i,j in words_and_their_length.items(): 33 | if j == longest_word_length: 34 | print(f'The Longest word in the file is {i}') 35 | else: 36 | # if more than a word have the same length, 37 | # store all the words in a list 38 | tie_words = [i for i,j in words_and_their_length.items() if j == longest_word_length] 39 | print('The Longest words in the file are {}'.format(', '.join(tie_words))) 40 | 41 | longest_word_in_file() -------------------------------------------------------------------------------- /all-python-codes/longest-word-in-text-file/script_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/longest-word-in-text-file/script_screenshot.png -------------------------------------------------------------------------------- /all-python-codes/number-guessing-game/README.md: -------------------------------------------------------------------------------- 1 | # Number Guessing Game 2 | 3 | This is a game that allows you guess a number between the range of 1- 10 in just 7 trials. 4 | 5 | # Prerequisites 6 | 7 | It requires no prerequisites, you only need to run the script. If you don't have Python installed, you can visit [here](https://www.python.org/downloads/) to download Python 8 | 9 | # How to run the script 10 | 11 | Running the script is pretty easy, open a terminal in the folder where your script is located and run the following command : 12 | 13 | `python numberGuessingGame.py` 14 | 15 | # Sample use of the script 16 | 17 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/number-guessing-game/script_screenshot.png) 18 | 19 | 20 | # Author's name 21 | 22 | [Tanimowo Emmanuel](https://github.com/Mannuel25) -------------------------------------------------------------------------------- /all-python-codes/number-guessing-game/numberGuessingGame.py: -------------------------------------------------------------------------------- 1 | import random 2 | # random module is a built-in module to generate pseudo-random variables 3 | 4 | def display_gameplay(): 5 | """ 6 | Displays the gameplay 7 | : return: None 8 | """ 9 | print('\nWelcome to Number Guessing Game!') 10 | print('In this game you\'ve just 7 trials to guess a number between the range of 1-10') 11 | print('Note: enter \'exit\' to end game') 12 | 13 | def startGame(): 14 | """ 15 | Gets user response to start or end the game 16 | : return: str 17 | """ 18 | # call the function to display gameplay 19 | displayGameplay = display_gameplay() 20 | # make a list of the possible inputs 21 | # to start or end the game 22 | POSSIBLE_RESPONSES = ['Y','YES','N','NO','EXIT'] 23 | # get user's response 24 | user_response = input('\nStart game? (yes/no): ').strip().upper() 25 | while user_response not in POSSIBLE_RESPONSES: 26 | print('\nInvalid Input!') 27 | user_response = input('\nStart game? (yes/no): ').strip().upper() 28 | else: return user_response 29 | 30 | def game(): 31 | """ 32 | Controls the game 33 | : return: None 34 | """ 35 | # call the function to get user's response 36 | play_game = startGame() 37 | # assign the number of trials the user has to a variable 38 | number_of_trials = 7 39 | while play_game == 'YES' or play_game == 'Y': 40 | # make a list that contains all the 41 | # numbers a user can guess 42 | ACCEPTED_NUMBER_PICKS = [str(i) for i in range(1,11)] 43 | # get user's number 44 | user_input = input('\nGuess a number between the range of 1-10: ').strip().upper() 45 | while user_input not in ACCEPTED_NUMBER_PICKS and user_input != 'EXIT' : 46 | print('Invalid Input!') 47 | user_input = input('\nGuess a valid number between the range of 1-10: ').strip().upper() 48 | if user_input == 'EXIT': 49 | print('Bye Player!') 50 | break 51 | else: 52 | # generate a random number in the range 1-10 53 | # and assign it to a variable 54 | computer_number = random.randint(1,10) 55 | user_input = int(user_input) 56 | if user_input < computer_number: 57 | number_of_trials -= 1 58 | print(f'Oops, {user_input} is too low') 59 | if number_of_trials != 0: 60 | print(f'You\'ve {number_of_trials} trial(s) left') 61 | play_game = input('\nGuess again? (yes/no): ').strip().upper() 62 | else: 63 | print(F'\nGame over!, you\'ve 0 trial left..try harder next time 😉') 64 | break 65 | elif user_input > computer_number: 66 | number_of_trials -= 1 67 | print(f'Oops, {user_input} is too high') 68 | if number_of_trials != 0: 69 | print(f'You\'ve {number_of_trials} trial(s) left') 70 | play_game = input('\nGuess again? (yes/no): ').strip().upper() 71 | else: 72 | print(F'\nGame over!, you\'ve 0 trial left..try harder next time 😉') 73 | break 74 | elif user_input == computer_number: 75 | number_of_trials -= 1 76 | print(f'Congratulations!!..you guessed right, after {7 - number_of_trials} trial(s)') 77 | play_game = input('\nDo you wish to play again? (yes/no): ').strip().upper() 78 | # if the user wishes to play again, assign 79 | # the number of trials the user has to a variable 80 | number_of_trials = 7 81 | 82 | game() -------------------------------------------------------------------------------- /all-python-codes/number-guessing-game/script_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/number-guessing-game/script_screenshot.png -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-1/README.md: -------------------------------------------------------------------------------- 1 | # Password Generator 2 | 3 | This program generates a secure random password. You'll be required to enter the length of your desired password only. 4 | 5 | # Prerequisites 6 | 7 | It requires no prerequisites, you only need to run the script. If you don't have Python installed, you can visit [here](https://www.python.org/downloads/) to download Python. 8 | 9 | # How to run the script 10 | 11 | Running the script is pretty easy, open a terminal in the folder where your script is located and run the following command : 12 | 13 | `python my_password_generator.py` 14 | 15 | # Sample use of the script 16 | 17 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-generator/password-generator-1/screenshot_1.png) 18 | 19 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-generator/password-generator-1/screenshot_2.png) 20 | 21 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-generator/password-generator-1/screenshot_3.png) 22 | 23 | # Author's name 24 | 25 | [Tanimowo Emmanuel](https://github.com/Mannuel25) -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-1/my_password_generator.py: -------------------------------------------------------------------------------- 1 | import secrets, string 2 | 3 | def MY_PASSWORD(): 4 | """ 5 | A program that displays a secure random password 6 | : return: None 7 | """ 8 | try: 9 | # get the length of the user 10 | # desired password 11 | length_of_password = int(input('\nEnter the length of your desired password: ')) 12 | except ValueError: 13 | print('Invalid Input!') 14 | else: 15 | # make a string that contains both upper and 16 | # lower case letters, digits and punctuations 17 | password_picks = string.ascii_letters + string.digits + string.punctuation 18 | # select a password based on the length entered 19 | # from the combination of both upper and lower case letters 20 | # digits and punctuations 21 | yourPassword = ''.join(secrets.choice(password_picks) for i in range(length_of_password)) 22 | # make a list of the generated password 23 | password_list = list(yourPassword) 24 | # shuffle the password 25 | secrets.SystemRandom().shuffle(password_list) 26 | print('Password:',''.join(password_list)) 27 | 28 | MY_PASSWORD() -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-1/screenshot_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-generator/password-generator-1/screenshot_1.png -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-1/screenshot_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-generator/password-generator-1/screenshot_2.png -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-1/screenshot_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-generator/password-generator-1/screenshot_3.png -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-2/README.md: -------------------------------------------------------------------------------- 1 | # Password Generator 2 | 3 | This program generates a secure random password. You'll be required to enter a few details about what your password should contain: 4 | 5 | - The length of alphabets (this includes upper and lower case) 6 | - The length of special characters 7 | - The length of digits. 8 | 9 | # Prerequisites 10 | 11 | It requires no prerequisites, you only need to run the script. If you don't have Python installed, you can visit [here](https://www.python.org/downloads/) to download Python. 12 | 13 | # How to run the script 14 | 15 | Running the script is pretty easy, open a terminal in the folder where your script is located and run the following command : 16 | 17 | `python generate_password.py` 18 | 19 | # Sample use of the script 20 | 21 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-generator/password-generator-2/screenshot_1.png) 22 | 23 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-generator/password-generator-2/screenshot_2.png) 24 | 25 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-generator/password-generator-2/screenshot_3.png) 26 | 27 | # Author's name 28 | 29 | [Tanimowo Emmanuel](https://github.com/Mannuel25) -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-2/generate_password.py: -------------------------------------------------------------------------------- 1 | import secrets, string 2 | 3 | def password_generator(): 4 | """ 5 | A program that generates a secure random password 6 | : return: None 7 | """ 8 | try: 9 | # get the length of alphabets to be present in password 10 | length_of_alphabets = int(input('\nEnter the length of alphabets (upper and lower case inclusive): ')) 11 | # get the length of digits to be present in password 12 | length_of_digits = int(input('Enter the length of digits: ')) 13 | # get the length of special characters to be present in password 14 | length_of_special_characters = int(input('Enter the length of special characters: ')) 15 | except ValueError: 16 | print('Invalid Input!') 17 | else: 18 | # get the total password length 19 | passwordLength = length_of_alphabets + length_of_digits + length_of_special_characters 20 | # generate a password for user based on the total password length 21 | securePassword = ''.join(secrets.choice(string.ascii_letters) for i in range(length_of_alphabets)) 22 | securePassword += ''.join(secrets.choice(string.digits) for i in range(length_of_digits)) 23 | securePassword += ''.join(secrets.choice(string.punctuation) for i in range(length_of_special_characters)) 24 | # make a list with the password 25 | generated_password = list(securePassword) 26 | # shuffle generated password 27 | secrets.SystemRandom().shuffle(generated_password) 28 | print('Your password of length {} is {}'.format(passwordLength,''.join(generated_password))) 29 | 30 | password_generator() -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-2/screenshot_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-generator/password-generator-2/screenshot_1.png -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-2/screenshot_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-generator/password-generator-2/screenshot_2.png -------------------------------------------------------------------------------- /all-python-codes/password-generator/password-generator-2/screenshot_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-generator/password-generator-2/screenshot_3.png -------------------------------------------------------------------------------- /all-python-codes/password-validator/README.md: -------------------------------------------------------------------------------- 1 | # Password Validator 2 | 3 | This program validates passwords to match specific rules. A valid password is one that conforms to the following rules: 4 | - Minimum length is 6; 5 | - Maximum length is 12; 6 | - Contains at least an uppercase letter or a lowercase letter 7 | - Contains at least a number; 8 | - Contains at least a special character (such as @,+,£,$,%,*^,etc); 9 | - Doesn't contain space(s). 10 | 11 | # Prerequisites 12 | 13 | It requires no prerequisites, you only need to run the script. If you don't have Python installed, you can visit [here](https://www.python.org/downloads/) to download Python. 14 | 15 | # How to run the script 16 | 17 | Running the script is pretty easy, open a terminal in the folder where your script is located and run the following command : 18 | 19 | `python main.py` 20 | 21 | # Sample use of the script 22 | 23 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-validator/screenshot_1.png) 24 | 25 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-validator/screenshot_2.png) 26 | 27 | ![alt text](https://github.com/Mannuel25/py-projects/blob/master/all-python-codes/password-validator/screenshot_3.png) 28 | 29 | # Author's name 30 | 31 | [Tanimowo Emmanuel](https://github.com/Mannuel25) -------------------------------------------------------------------------------- /all-python-codes/password-validator/main.py: -------------------------------------------------------------------------------- 1 | import string 2 | 3 | def passwordValidator(): 4 | """ 5 | Validates passwords to match specific rules 6 | : return: str 7 | """ 8 | # display rules that a password must conform to 9 | print('\nYour password should: ') 10 | print('\t- Have a minimum length of 6;') 11 | print('\t- Have a maximum length of 12;') 12 | print('\t- Contain at least an uppercase letter or a lowercase letter') 13 | print('\t- Contain at least a number;') 14 | print('\t- Contain at least a special character (such as @,+,£,$,%,*^,etc);') 15 | print('\t- Not contain space(s).') 16 | # get user's password 17 | userPassword = input('\nEnter a valid password: ').strip() 18 | # check if user's password conforms 19 | # to the rules above 20 | if not(6 <= len(userPassword) <= 12): 21 | message = 'Invalid Password..your password should have a minimum ' 22 | message += 'length of 6 and a maximum length of 12' 23 | return message 24 | if ' ' in userPassword: 25 | message = 'Invalid Password..your password shouldn\'t contain space(s)' 26 | return message 27 | if not any(i in string.ascii_letters for i in userPassword): 28 | message = 'Invalid Password..your password should contain at least ' 29 | message += 'an uppercase letter and a lowercase letter' 30 | return message 31 | if not any(i in string.digits for i in userPassword): 32 | message = 'Invalid Password..your password should contain at least a number' 33 | return message 34 | if not any(i in string.punctuation for i in userPassword): 35 | message = 'Invalid Password..your password should contain at least a special character' 36 | return message 37 | else: 38 | return 'Valid Password!' 39 | 40 | my_password = passwordValidator() 41 | print(my_password) -------------------------------------------------------------------------------- /all-python-codes/password-validator/screenshot_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-validator/screenshot_1.png -------------------------------------------------------------------------------- /all-python-codes/password-validator/screenshot_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-validator/screenshot_2.png -------------------------------------------------------------------------------- /all-python-codes/password-validator/screenshot_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chryz-hub/py-projects/653ba4e6923ee1f55a64aef23174515c1db68758/all-python-codes/password-validator/screenshot_3.png -------------------------------------------------------------------------------- /all-python-codes/retri-itunes-data/README.md: -------------------------------------------------------------------------------- 1 | # Retrieve-Itunes-data 2 | This code is to retrieve data from your itunes music; The artist, genre, music, length and so on like that, the codes are well commented for you to understand what it is all 3 | about! 4 | 5 | - ## [Tracks.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/retri-itunes-data/tracks.py) 6 | The code is a pure python program, you run this on your terminal alone to get your itunes data 7 | 8 | - ## [Tracksc.py](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/retri-itunes-data/tracksc.py) 9 | This is a python code dealing with the storage of the data retrieved into an sqlite database. 10 | 11 | - ## [Itunesdata.xml](https://github.com/chryz-hub/py-projects/blob/master/all-python-codes/retri-itunes-data/itunesdata.xml) 12 | I later decided to commit an itunes music data(xml), it is an xml file and that would really work for any language you use. I made it available for use maybe probably you can get a personal data, you can make use of this! 13 | 14 | Code/program owned by: 15 | [@chryzcodez](https://github.com/chryzcodez) 16 | -------------------------------------------------------------------------------- /all-python-codes/retri-itunes-data/itunesdata.xml: -------------------------------------------------------------------------------- 1 | # itunes music xml data, you can use yours if you have or better still use the resources provided 2 | 3 | 4 | 5 | 6 | 7 | Major Version1 8 | Minor Version1 9 | Date2015-11-24T11:12:10Z 10 | Application Version12.3.1.23 11 | Features5 12 | Show Content Ratings 13 | Music Folderfile:///Users/csev/Music/iTunes/iTunes%20Music/ 14 | Library Persistent IDB7006C9E9799282E 15 | Tracks 16 | 17 | 369 18 | 19 | Track ID369 20 | NameAnother One Bites The Dust 21 | ArtistQueen 22 | ComposerJohn Deacon 23 | AlbumGreatest Hits 24 | GenreRock 25 | KindMPEG audio file 26 | Size4344295 27 | Total Time217103 28 | Disc Number1 29 | Disc Count1 30 | Track Number3 31 | Track Count17 32 | Year1980 33 | Date Modified2006-02-14T16:13:02Z 34 | Date Added2006-02-14T16:12:53Z 35 | Bit Rate160 36 | Sample Rate44100 37 | Play Count55 38 | Play Date3518868190 39 | Play Date UTC2015-07-04T19:23:10Z 40 | Skip Count1 41 | Skip Date2015-10-14T23:31:47Z 42 | Rating100 43 | Album Rating100 44 | Album Rating Computed 45 | Normalization1511 46 | Compilation 47 | Persistent ID21130E105F3B8845 48 | Track TypeFile 49 | File Type1297106739 50 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Compilations/Greatest%20Hits/03%20Another%20One%20Bites%20The%20Dust.mp3 51 | File Folder Count4 52 | Library Folder Count1 53 | 54 | 371 55 | 56 | Track ID371 57 | NameAsche Zu Asche 58 | ArtistRammstein 59 | ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Oliver Riedel, Paul Landers, Richard Z. Kruspe-Bernstein & Till Lindemann 60 | AlbumHerzeleid 61 | GenreIndustrial 62 | KindMPEG audio file 63 | Size4638526 64 | Total Time231810 65 | Disc Number1 66 | Disc Count1 67 | Track Number4 68 | Track Count11 69 | Year1995 70 | Date Modified2006-02-22T04:38:17Z 71 | Date Added2006-02-14T16:13:04Z 72 | Bit Rate160 73 | Sample Rate44100 74 | Play Count79 75 | Play Date3518869000 76 | Play Date UTC2015-07-04T19:36:40Z 77 | Rating100 78 | Album Rating100 79 | Album Rating Computed 80 | Normalization4576 81 | Persistent ID21130E105F3B8846 82 | Track TypeFile 83 | File Type1297106739 84 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Rammstein/Herzeleid/04%20Asche%20Zu%20Asche.mp3 85 | File Folder Count4 86 | Library Folder Count1 87 | 88 | 373 89 | 90 | Track ID373 91 | NameBeauty School Dropout 92 | ArtistVarious 93 | AlbumGrease 94 | GenreSoundtrack 95 | KindMPEG audio file 96 | Size4801377 97 | Total Time239960 98 | Track Number6 99 | Track Count24 100 | Date Modified2006-02-14T16:13:26Z 101 | Date Added2006-02-14T16:13:15Z 102 | Bit Rate160 103 | Sample Rate44100 104 | Play Count48 105 | Play Date3516380131 106 | Play Date UTC2015-06-06T00:15:31Z 107 | Skip Count1 108 | Skip Date2010-04-07T15:38:14Z 109 | Rating100 110 | Album Rating100 111 | Album Rating Computed 112 | Normalization1401 113 | Persistent ID21130E105F3B8847 114 | Track TypeFile 115 | File Type1297106739 116 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Various/Grease/06%20Beauty%20School%20Dropout.mp3 117 | File Folder Count4 118 | Library Folder Count1 119 | 120 | 375 121 | 122 | Track ID375 123 | NameBlack Dog 124 | ArtistLed Zeppelin 125 | ComposerJimmy Page, Robert Plant, John Paul Jones 126 | AlbumIV 127 | GenreRock 128 | KindMPEG audio file 129 | Size5934629 130 | Total Time296620 131 | Disc Number1 132 | Disc Count1 133 | Track Number1 134 | Track Count8 135 | Year1971 136 | Date Modified2014-11-05T23:44:14Z 137 | Date Added2006-02-14T16:13:27Z 138 | Bit Rate160 139 | Sample Rate44100 140 | Play Count109 141 | Play Date3516392326 142 | Play Date UTC2015-06-06T03:38:46Z 143 | Skip Count1 144 | Skip Date2012-11-19T14:17:56Z 145 | Rating100 146 | Album Rating100 147 | Album Rating Computed 148 | Normalization1364 149 | Persistent ID21130E105F3B8848 150 | Track TypeFile 151 | File Type1297106739 152 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Led%20Zeppelin/IV/01%20Black%20Dog.mp3 153 | File Folder Count4 154 | Library Folder Count1 155 | 156 | 377 157 | 158 | Track ID377 159 | NameBring The Boys Back Home 160 | ArtistPink Floyd 161 | ComposerRoger Waters 162 | AlbumThe Wall [Disc 2] 163 | GenreRock 164 | KindMPEG audio file 165 | Size1744588 166 | Total Time87118 167 | Disc Number2 168 | Disc Count2 169 | Track Number5 170 | Track Count13 171 | Year1979 172 | Date Modified2006-02-14T16:13:53Z 173 | Date Added2006-02-14T16:13:50Z 174 | Bit Rate160 175 | Sample Rate44100 176 | Play Count33 177 | Play Date3514729354 178 | Play Date UTC2015-05-17T21:42:34Z 179 | Skip Count11 180 | Skip Date2013-10-20T10:35:02Z 181 | Rating100 182 | Album Rating100 183 | Album Rating Computed 184 | Normalization1445 185 | Sort AlbumWall [Disc 2] 186 | Persistent ID21130E105F3B8849 187 | Track TypeFile 188 | File Type1297106739 189 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20%5BDisc%202%5D/2-05%20Bring%20The%20Boys%20Back%20Home.mp3 190 | File Folder Count4 191 | Library Folder Count1 192 | 193 | 379 194 | 195 | Track ID379 196 | NameCircles 197 | ArtistBryan Lee 198 | AlbumBlues Is 199 | GenreFunk 200 | KindMPEG audio file 201 | Size7109552 202 | Total Time355369 203 | Track Number1 204 | Track Count12 205 | Date Modified2009-03-31T14:14:37Z 206 | Date Added2006-02-14T16:13:54Z 207 | Bit Rate160 208 | Sample Rate44100 209 | Play Count54 210 | Play Date3493169662 211 | Play Date UTC2014-09-10T08:54:22Z 212 | Skip Count4 213 | Skip Date2013-07-01T12:06:02Z 214 | Rating60 215 | Album Rating100 216 | Album Rating Computed 217 | Normalization1592 218 | Persistent ID21130E105F3B884A 219 | Track TypeFile 220 | File Type1297106739 221 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Bryan%20Lee/Blues%20Is/01%20Circles.mp3 222 | File Folder Count4 223 | Library Folder Count1 224 | 225 | 381 226 | 227 | Track ID381 228 | NameComfortably Numb 229 | ArtistPink Floyd 230 | ComposerDavid Gilmour 231 | AlbumThe Wall [Disc 2] 232 | GenreRock 233 | KindMPEG audio file 234 | Size7684826 235 | Total Time384130 236 | Disc Number2 237 | Disc Count2 238 | Track Number6 239 | Track Count13 240 | Year1979 241 | Date Modified2006-02-14T16:14:28Z 242 | Date Added2006-02-14T16:14:11Z 243 | Bit Rate160 244 | Sample Rate44100 245 | Play Count36 246 | Play Date3514729795 247 | Play Date UTC2015-05-17T21:49:55Z 248 | Skip Count1 249 | Skip Date2013-10-21T00:07:39Z 250 | Rating100 251 | Album Rating100 252 | Album Rating Computed 253 | Normalization1595 254 | Sort AlbumWall [Disc 2] 255 | Persistent ID21130E105F3B884B 256 | Track TypeFile 257 | File Type1297106739 258 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20%5BDisc%202%5D/2-06%20Comfortably%20Numb.mp3 259 | File Folder Count4 260 | Library Folder Count1 261 | 262 | 383 263 | 264 | Track ID383 265 | NameCrazy Little Thing Called Love 266 | ArtistQueen 267 | ComposerFreddie Mercury 268 | AlbumGreatest Hits 269 | GenreRock 270 | KindMPEG audio file 271 | Size3274850 272 | Total Time163631 273 | Disc Number1 274 | Disc Count1 275 | Track Number9 276 | Track Count17 277 | Year1979 278 | Date Modified2006-02-14T16:14:37Z 279 | Date Added2006-02-14T16:14:30Z 280 | Bit Rate160 281 | Sample Rate44100 282 | Play Count38 283 | Play Date3465751592 284 | Play Date UTC2013-10-28T00:46:32Z 285 | Rating100 286 | Album Rating100 287 | Album Rating Computed 288 | Normalization1258 289 | Compilation 290 | Persistent ID21130E105F3B884C 291 | Track TypeFile 292 | File Type1297106739 293 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Compilations/Greatest%20Hits/09%20Crazy%20Little%20Thing%20Called%20Love.mp3 294 | File Folder Count4 295 | Library Folder Count1 296 | 297 | 385 298 | 299 | Track ID385 300 | NameElectric Funeral 301 | ArtistBlack Sabbath 302 | ComposerTony Iommi, Ozzy Osbourne, Geezer Butler, Bill Ward 303 | AlbumParanoid 304 | GenreMetal 305 | KindMPEG audio file 306 | Size5862554 307 | Total Time293015 308 | Disc Number1 309 | Disc Count1 310 | Track Number5 311 | Track Count8 312 | Year1970 313 | Date Modified2006-02-21T22:50:24Z 314 | Date Added2006-02-14T16:14:38Z 315 | Bit Rate160 316 | Sample Rate44100 317 | Play Count44 318 | Play Date3502701857 319 | Play Date UTC2014-12-29T17:44:17Z 320 | Rating100 321 | Album Rating100 322 | Album Rating Computed 323 | Normalization1188 324 | Persistent ID21130E105F3B884D 325 | Track TypeFile 326 | File Type1297106739 327 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Black%20Sabbath/Paranoid/05%20Electric%20Funeral.mp3 328 | File Folder Count4 329 | Library Folder Count1 330 | 331 | 387 332 | 333 | Track ID387 334 | NameFat Bottomed Girls 335 | ArtistQueen 336 | ComposerBrian May 337 | AlbumGreatest Hits 338 | GenreRock 339 | KindMPEG audio file 340 | Size5152514 341 | Total Time257515 342 | Disc Number1 343 | Disc Count1 344 | Track Number6 345 | Track Count17 346 | Year1978 347 | Date Modified2006-02-14T16:15:04Z 348 | Date Added2006-02-14T16:14:53Z 349 | Bit Rate160 350 | Sample Rate44100 351 | Play Count38 352 | Play Date3465671648 353 | Play Date UTC2013-10-27T02:34:08Z 354 | Rating100 355 | Album Rating100 356 | Album Rating Computed 357 | Normalization3631 358 | Compilation 359 | Persistent ID21130E105F3B884E 360 | Track TypeFile 361 | File Type1297106739 362 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Compilations/Greatest%20Hits/06%20Fat%20Bottomed%20Girls.mp3 363 | File Folder Count4 364 | Library Folder Count1 365 | 366 | 389 367 | 368 | Track ID389 369 | NameFor Those About To Rock (We Salute You) 370 | ArtistAC/DC 371 | AlbumWho Made Who 372 | GenreRock 373 | KindMPEG audio file 374 | Size7077218 375 | Total Time353750 376 | Disc Number1 377 | Disc Count1 378 | Track Number9 379 | Track Count9 380 | Year1981 381 | Date Modified2006-02-22T04:16:01Z 382 | Date Added2006-02-14T16:15:06Z 383 | Bit Rate160 384 | Sample Rate44100 385 | Play Count84 386 | Play Date3489336536 387 | Play Date UTC2014-07-28T00:08:56Z 388 | Rating100 389 | Album Rating100 390 | Album Rating Computed 391 | Normalization11774 392 | Compilation 393 | Persistent ID21130E105F3B884F 394 | Track TypeFile 395 | File Type1297106739 396 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Compilations/Who%20Made%20Who/09%20For%20Those%20About%20To%20Rock%20(We%20Salute%20You).mp3 397 | File Folder Count4 398 | Library Folder Count1 399 | 400 | 391 401 | 402 | Track ID391 403 | NameFour Sticks 404 | ArtistLed Zeppelin 405 | ComposerJimmy Page, Robert Plant 406 | AlbumIV 407 | GenreRock 408 | KindMPEG audio file 409 | Size5690630 410 | Total Time284421 411 | Disc Number1 412 | Disc Count1 413 | Track Number6 414 | Track Count8 415 | Year1971 416 | Date Modified2006-02-14T16:15:38Z 417 | Date Added2006-02-14T16:15:24Z 418 | Bit Rate160 419 | Sample Rate44100 420 | Play Count84 421 | Play Date3503057548 422 | Play Date UTC2015-01-02T20:32:28Z 423 | Rating100 424 | Album Rating100 425 | Album Rating Computed 426 | Normalization897 427 | Persistent ID21130E105F3B8850 428 | Track TypeFile 429 | File Type1297106739 430 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Led%20Zeppelin/IV/06%20Four%20Sticks.mp3 431 | File Folder Count4 432 | Library Folder Count1 433 | 434 | 393 435 | 436 | Track ID393 437 | NameFurious Angels 438 | ArtistRob Dougan 439 | ComposerRob Dougan 440 | AlbumThe Matrix Reloaded 441 | GenreSoundtrack 442 | KindMPEG audio file 443 | Size6602318 444 | Total Time330004 445 | Disc Number1 446 | Disc Count2 447 | Track Number4 448 | Track Count12 449 | Year2003 450 | Date Modified2006-02-14T16:15:54Z 451 | Date Added2006-02-14T16:15:40Z 452 | Bit Rate160 453 | Sample Rate44100 454 | Play Count54 455 | Play Date3501131153 456 | Play Date UTC2014-12-11T13:25:53Z 457 | Skip Count1 458 | Skip Date2012-06-30T17:09:49Z 459 | Rating100 460 | Album Rating100 461 | Album Rating Computed 462 | Normalization3425 463 | Compilation 464 | Sort AlbumMatrix Reloaded 465 | Persistent ID21130E105F3B8851 466 | Track TypeFile 467 | File Type1297106739 468 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Compilations/The%20Matrix%20Reloaded/1-04%20Furious%20Angels.mp3 469 | File Folder Count4 470 | Library Folder Count1 471 | 472 | 395 473 | 474 | Track ID395 475 | NameGelle 476 | ArtistBryan Lee 477 | AlbumBlues Is 478 | GenreBlues/R&B 479 | KindMPEG audio file 480 | Size3998889 481 | Total Time199836 482 | Track Number6 483 | Track Count12 484 | Date Modified2006-02-14T16:16:04Z 485 | Date Added2006-02-14T16:15:55Z 486 | Bit Rate160 487 | Sample Rate44100 488 | Play Count45 489 | Play Date3493171048 490 | Play Date UTC2014-09-10T09:17:28Z 491 | Skip Count1 492 | Skip Date2013-10-28T20:48:05Z 493 | Rating60 494 | Album Rating100 495 | Album Rating Computed 496 | Normalization1203 497 | Persistent ID21130E105F3B8852 498 | Track TypeFile 499 | File Type1297106739 500 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Bryan%20Lee/Blues%20Is/06%20Gelle.mp3 501 | File Folder Count4 502 | Library Folder Count1 503 | 504 | 397 505 | 506 | Track ID397 507 | NameGoing To California 508 | ArtistLed Zeppelin 509 | ComposerJimmy Page, Robert Plant 510 | AlbumIV 511 | GenreRock 512 | KindMPEG audio file 513 | Size4315553 514 | Total Time215666 515 | Disc Number1 516 | Disc Count1 517 | Track Number7 518 | Track Count8 519 | Year1971 520 | Date Modified2006-02-14T16:16:15Z 521 | Date Added2006-02-14T16:16:06Z 522 | Bit Rate160 523 | Sample Rate44100 524 | Play Count100 525 | Play Date3502891530 526 | Play Date UTC2014-12-31T22:25:30Z 527 | Skip Count1 528 | Skip Date2010-04-07T15:38:46Z 529 | Rating100 530 | Album Rating100 531 | Album Rating Computed 532 | Normalization506 533 | Persistent ID21130E105F3B8853 534 | Track TypeFile 535 | File Type1297106739 536 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Led%20Zeppelin/IV/07%20Going%20To%20California.mp3 537 | File Folder Count4 538 | Library Folder Count1 539 | 540 | 399 541 | 542 | Track ID399 543 | NameGotta Move Fast 544 | ArtistMichael Loceff 545 | KindMPEG audio file 546 | Size5752732 547 | Total Time287529 548 | Track Number9 549 | Track Count13 550 | Date Modified2006-02-14T13:16:30Z 551 | Date Added2006-02-14T16:16:17Z 552 | Bit Rate160 553 | Sample Rate44100 554 | Play Count19 555 | Play Date3462615302 556 | Play Date UTC2013-09-21T17:35:02Z 557 | Skip Count2 558 | Skip Date2007-03-26T12:20:03Z 559 | Rating100 560 | Album Rating100 561 | Album Rating Computed 562 | Normalization945 563 | Persistent ID21130E105F3B8854 564 | Track TypeFile 565 | File Type1297106739 566 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Michael%20Loceff/Unknown%20Album/09%20Gotta%20Move%20Fast.mp3 567 | File Folder Count4 568 | Library Folder Count1 569 | 570 | 401 571 | 572 | Track ID401 573 | NameGrease 574 | ArtistVarious 575 | AlbumGrease 576 | GenreSoundtrack 577 | KindMPEG audio file 578 | Size4117999 579 | Total Time205792 580 | Track Number1 581 | Track Count24 582 | Date Modified2013-11-13T14:41:09Z 583 | Date Added2006-02-14T16:16:31Z 584 | Bit Rate160 585 | Sample Rate44100 586 | Play Count42 587 | Play Date3516436529 588 | Play Date UTC2015-06-06T15:55:29Z 589 | Skip Count1 590 | Skip Date2014-02-02T16:42:49Z 591 | Rating100 592 | Album Rating100 593 | Album Rating Computed 594 | Normalization1537 595 | Persistent ID21130E105F3B8855 596 | Track TypeFile 597 | File Type1297106739 598 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Various/Grease/01%20Grease.mp3 599 | File Folder Count4 600 | Library Folder Count1 601 | 602 | 403 603 | 604 | Track ID403 605 | NameHand of Doom 606 | ArtistBlack Sabbath 607 | ComposerTony Iommi, Ozzy Osbourne, Geezer Butler, Bill Ward 608 | AlbumParanoid 609 | GenreMetal 610 | KindMPEG audio file 611 | Size8594436 612 | Total Time429609 613 | Disc Number1 614 | Disc Count1 615 | Track Number6 616 | Track Count8 617 | Year1970 618 | Date Modified2006-02-21T22:51:16Z 619 | Date Added2006-02-14T16:16:41Z 620 | Bit Rate160 621 | Sample Rate44100 622 | Play Count36 623 | Play Date3472741986 624 | Play Date UTC2014-01-16T23:33:06Z 625 | Rating100 626 | Album Rating100 627 | Album Rating Computed 628 | Normalization1462 629 | Persistent ID21130E105F3B8856 630 | Track TypeFile 631 | File Type1297106739 632 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Black%20Sabbath/Paranoid/06%20Hand%20of%20Doom.mp3 633 | File Folder Count4 634 | Library Folder Count1 635 | 636 | 405 637 | 638 | Track ID405 639 | NameHells Bells 640 | ArtistAC/DC 641 | AlbumWho Made Who 642 | GenreRock 643 | KindMPEG audio file 644 | Size6261125 645 | Total Time312946 646 | Disc Number1 647 | Disc Count1 648 | Track Number6 649 | Track Count9 650 | Year1980 651 | Date Modified2006-02-22T04:15:10Z 652 | Date Added2006-02-14T16:17:07Z 653 | Bit Rate160 654 | Sample Rate44100 655 | Play Count82 656 | Play Date3473354932 657 | Play Date UTC2014-01-24T01:48:52Z 658 | Skip Count1 659 | Skip Date2014-11-15T01:09:30Z 660 | Rating100 661 | Album Rating100 662 | Album Rating Computed 663 | Normalization11733 664 | Compilation 665 | Persistent ID21130E105F3B8857 666 | Track TypeFile 667 | File Type1297106739 668 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Compilations/Who%20Made%20Who/06%20Hells%20Bells.mp3 669 | File Folder Count4 670 | Library Folder Count1 671 | 672 | 407 673 | 674 | Track ID407 675 | NameHey You 676 | ArtistPink Floyd 677 | ComposerRoger Waters 678 | AlbumThe Wall [Disc 2] 679 | GenreRock 680 | KindMPEG audio file 681 | Size5648310 682 | Total Time282305 683 | Disc Number2 684 | Disc Count2 685 | Track Number1 686 | Track Count13 687 | Year1979 688 | Date Modified2006-02-14T16:17:37Z 689 | Date Added2006-02-14T16:17:24Z 690 | Bit Rate160 691 | Sample Rate44100 692 | Play Count23 693 | Play Date3514729106 694 | Play Date UTC2015-05-17T21:38:26Z 695 | Rating100 696 | Album Rating100 697 | Album Rating Computed 698 | Normalization1309 699 | Sort AlbumWall [Disc 2] 700 | Persistent ID21130E105F3B8858 701 | Track TypeFile 702 | File Type1297106739 703 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20%5BDisc%202%5D/2-01%20Hey%20You.mp3 704 | File Folder Count4 705 | Library Folder Count1 706 | 707 | 409 708 | 709 | Track ID409 710 | NameI Worry 711 | ArtistBryan Lee 712 | AlbumBlues Is 713 | GenreBlues/R&B 714 | KindMPEG audio file 715 | Size6828475 716 | Total Time341315 717 | Track Number11 718 | Track Count12 719 | Date Modified2006-02-14T16:17:56Z 720 | Date Added2006-02-14T16:17:39Z 721 | Bit Rate160 722 | Sample Rate44100 723 | Play Count33 724 | Play Date3493172455 725 | Play Date UTC2014-09-10T09:40:55Z 726 | Rating100 727 | Album Rating100 728 | Album Rating Computed 729 | Normalization1135 730 | Persistent ID21130E105F3B8859 731 | Track TypeFile 732 | File Type1297106739 733 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Bryan%20Lee/Blues%20Is/11%20I%20Worry.mp3 734 | File Folder Count4 735 | Library Folder Count1 736 | 737 | 411 738 | 739 | Track ID411 740 | NameIron Man 741 | ArtistBlack Sabbath 742 | ComposerTony Iommi, Ozzy Osbourne, Geezer Butler, Bill Ward 743 | AlbumParanoid 744 | GenreMetal 745 | KindMPEG audio file 746 | Size7172848 747 | Total Time358530 748 | Disc Number1 749 | Disc Count1 750 | Track Number4 751 | Track Count8 752 | Year1970 753 | Date Modified2006-02-22T01:49:48Z 754 | Date Added2006-02-14T16:17:58Z 755 | Bit Rate160 756 | Sample Rate44100 757 | Play Count39 758 | Play Date3503420143 759 | Play Date UTC2015-01-07T01:15:43Z 760 | Rating100 761 | Album Rating100 762 | Album Rating Computed 763 | Normalization1981 764 | Persistent ID21130E105F3B885A 765 | Track TypeFile 766 | File Type1297106739 767 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Black%20Sabbath/Paranoid/04%20Iron%20Man.mp3 768 | File Folder Count4 769 | Library Folder Count1 770 | 771 | 413 772 | 773 | Track ID413 774 | NameIs There Anybody Out There? 775 | ArtistPink Floyd 776 | ComposerRoger Waters 777 | AlbumThe Wall [Disc 2] 778 | GenreRock 779 | KindMPEG audio file 780 | Size3215808 781 | Total Time160679 782 | Disc Number2 783 | Disc Count2 784 | Track Number2 785 | Track Count13 786 | Year1979 787 | Date Modified2006-02-14T16:18:24Z 788 | Date Added2006-02-14T16:18:17Z 789 | Bit Rate160 790 | Sample Rate44100 791 | Play Count26 792 | Play Date3514729267 793 | Play Date UTC2015-05-17T21:41:07Z 794 | Skip Count1 795 | Skip Date2013-10-22T01:05:01Z 796 | Rating100 797 | Album Rating100 798 | Album Rating Computed 799 | Normalization693 800 | Sort AlbumWall [Disc 2] 801 | Persistent ID21130E105F3B885B 802 | Track TypeFile 803 | File Type1297106739 804 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20%5BDisc%202%5D/2-02%20Is%20There%20Anybody%20Out%20There_.mp3 805 | File Folder Count4 806 | Library Folder Count1 807 | 808 | 415 809 | 810 | Track ID415 811 | NameIt was a Very Good Year 812 | ArtistFrank Sinatra 813 | AlbumGreatest Hits 814 | GenreEasy Listening 815 | KindMPEG audio file 816 | Size5379221 817 | Total Time268852 818 | Track Number3 819 | Track Count12 820 | Date Modified2006-02-14T16:18:40Z 821 | Date Added2006-02-14T16:18:26Z 822 | Bit Rate160 823 | Sample Rate44100 824 | Play Count39 825 | Play Date3468268859 826 | Play Date UTC2013-11-26T05:00:59Z 827 | Skip Count1 828 | Skip Date2007-03-26T12:20:03Z 829 | Rating100 830 | Album Rating100 831 | Album Rating Computed 832 | Normalization696 833 | Persistent ID21130E105F3B885C 834 | Track TypeFile 835 | File Type1297106739 836 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Frank%20Sinatra/Greatest%20Hits/03%20It%20was%20a%20Very%20Good%20Year.mp3 837 | File Folder Count4 838 | Library Folder Count1 839 | 840 | 417 841 | 842 | Track ID417 843 | NameIts Your Move 844 | ArtistBryan Lee 845 | AlbumBlues Is 846 | GenreBlues/R&B 847 | KindMPEG audio file 848 | Size4902211 849 | Total Time245002 850 | Track Number5 851 | Track Count12 852 | Date Modified2006-02-14T16:18:53Z 853 | Date Added2006-02-14T16:18:41Z 854 | Bit Rate160 855 | Sample Rate44100 856 | Play Count40 857 | Play Date3493170848 858 | Play Date UTC2014-09-10T09:14:08Z 859 | Skip Count1 860 | Skip Date2007-03-26T12:20:03Z 861 | Rating100 862 | Album Rating100 863 | Album Rating Computed 864 | Normalization2614 865 | Persistent ID21130E105F3B885D 866 | Track TypeFile 867 | File Type1297106739 868 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Bryan%20Lee/Blues%20Is/05%20Its%20Your%20Move.mp3 869 | File Folder Count4 870 | Library Folder Count1 871 | 872 | 419 873 | 874 | Track ID419 875 | NameJack the Stripper/Fairies Wear Boots 876 | ArtistBlack Sabbath 877 | ComposerTony Iommi, Ozzy Osbourne, Geezer Butler, Bill Ward 878 | AlbumParanoid 879 | GenreMetal 880 | KindMPEG audio file 881 | Size7482166 882 | Total Time373995 883 | Disc Number1 884 | Disc Count1 885 | Track Number8 886 | Track Count8 887 | Year1970 888 | Date Modified2006-02-22T01:52:11Z 889 | Date Added2006-02-14T16:18:54Z 890 | Bit Rate160 891 | Sample Rate44100 892 | Play Count35 893 | Play Date3472742511 894 | Play Date UTC2014-01-16T23:41:51Z 895 | Skip Count1 896 | Skip Date2007-03-26T12:20:03Z 897 | Rating100 898 | Album Rating100 899 | Album Rating Computed 900 | Normalization1752 901 | Persistent ID21130E105F3B885E 902 | Track TypeFile 903 | File Type1297106739 904 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Black%20Sabbath/Paranoid/08%20Jack%20the%20Stripper_Fairies%20Wear%20Boots.mp3 905 | File Folder Count4 906 | Library Folder Count1 907 | 908 | 421 909 | 910 | Track ID421 911 | NameKiller Queen 912 | ArtistQueen 913 | ComposerFreddie Mercury 914 | AlbumGreatest Hits 915 | GenreRock 916 | KindMPEG audio file 917 | Size3629575 918 | Total Time181368 919 | Disc Number1 920 | Disc Count1 921 | Track Number4 922 | Track Count17 923 | Year1974 924 | Date Modified2006-02-14T16:19:21Z 925 | Date Added2006-02-14T16:19:13Z 926 | Bit Rate160 927 | Sample Rate44100 928 | Play Count34 929 | Play Date3462508015 930 | Play Date UTC2013-09-20T11:46:55Z 931 | Skip Count1 932 | Skip Date2008-08-18T21:28:59Z 933 | Rating100 934 | Album Rating100 935 | Album Rating Computed 936 | Normalization3266 937 | Compilation 938 | Persistent ID21130E105F3B885F 939 | Track TypeFile 940 | File Type1297106739 941 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Compilations/Greatest%20Hits/04%20Killer%20Queen.mp3 942 | File Folder Count4 943 | Library Folder Count1 944 | 945 | 423 946 | 947 | Track ID423 948 | NameLaichzeit 949 | ArtistRammstein 950 | ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Oliver Riedel, Paul Landers, Richard Z. Kruspe-Bernstein & Till Lindemann 951 | AlbumHerzeleid 952 | GenreIndustrial 953 | KindMPEG audio file 954 | Size5259192 955 | Total Time262844 956 | Disc Number1 957 | Disc Count1 958 | Track Number10 959 | Track Count11 960 | Year1995 961 | Date Modified2006-02-22T04:41:32Z 962 | Date Added2006-02-14T16:19:23Z 963 | Bit Rate160 964 | Sample Rate44100 965 | Play Count41 966 | Play Date3483455112 967 | Play Date UTC2014-05-20T22:25:12Z 968 | Skip Count1 969 | Skip Date2013-09-20T23:58:48Z 970 | Rating100 971 | Album Rating100 972 | Album Rating Computed 973 | Normalization3721 974 | Persistent ID21130E105F3B8860 975 | Track TypeFile 976 | File Type1297106739 977 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Rammstein/Herzeleid/10%20Laichzeit.mp3 978 | File Folder Count4 979 | Library Folder Count1 980 | 981 | 425 982 | 983 | Track ID425 984 | NameLet me Down Easy 985 | ArtistBryan Lee 986 | AlbumBlues Is 987 | GenreBlues/R&B 988 | KindMPEG audio file 989 | Size6630998 990 | Total Time331441 991 | Track Number4 992 | Track Count12 993 | Date Modified2006-02-14T16:19:50Z 994 | Date Added2006-02-14T16:19:36Z 995 | Bit Rate160 996 | Sample Rate44100 997 | Play Count43 998 | Play Date3508728504 999 | Play Date UTC2015-03-09T10:48:24Z 1000 | Rating100 1001 | Album Rating100 1002 | Album Rating Computed 1003 | Normalization1929 1004 | Persistent ID21130E105F3B8861 1005 | Track TypeFile 1006 | File Type1297106739 1007 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Bryan%20Lee/Blues%20Is/04%20Let%20me%20Down%20Easy.mp3 1008 | File Folder Count4 1009 | Library Folder Count1 1010 | 1011 | 427 1012 | 1013 | Track ID427 1014 | NameMisty Mountain Hop 1015 | ArtistLed Zeppelin 1016 | ComposerJimmy Page, Robert Plant, John Paul Jones 1017 | AlbumIV 1018 | GenreRock 1019 | KindMPEG audio file 1020 | Size5578850 1021 | Total Time278831 1022 | Disc Number1 1023 | Disc Count1 1024 | Track Number5 1025 | Track Count8 1026 | Year1971 1027 | Date Modified2006-02-14T16:20:13Z 1028 | Date Added2006-02-14T16:19:59Z 1029 | Bit Rate160 1030 | Sample Rate44100 1031 | Play Count88 1032 | Play Date3492855896 1033 | Play Date UTC2014-09-06T17:44:56Z 1034 | Rating100 1035 | Album Rating100 1036 | Album Rating Computed 1037 | Normalization1314 1038 | Persistent ID21130E105F3B8863 1039 | Track TypeFile 1040 | File Type1297106739 1041 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Led%20Zeppelin/IV/05%20Misty%20Mountain%20Hop.mp3 1042 | File Folder Count4 1043 | Library Folder Count1 1044 | 1045 | 429 1046 | 1047 | Track ID429 1048 | NameNo Low Down 1049 | ArtistBryan Lee 1050 | AlbumBlues Is 1051 | GenreBlues/R&B 1052 | KindMPEG audio file 1053 | Size4917360 1054 | Total Time245760 1055 | Track Number9 1056 | Track Count12 1057 | Date Modified2006-02-14T16:20:34Z 1058 | Date Added2006-02-14T16:20:24Z 1059 | Bit Rate160 1060 | Sample Rate44100 1061 | Play Count39 1062 | Play Date3493171889 1063 | Play Date UTC2014-09-10T09:31:29Z 1064 | Rating100 1065 | Album Rating100 1066 | Album Rating Computed 1067 | Normalization2768 1068 | Persistent ID21130E105F3B8865 1069 | Track TypeFile 1070 | File Type1297106739 1071 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Bryan%20Lee/Blues%20Is/09%20No%20Low%20Down.mp3 1072 | File Folder Count4 1073 | Library Folder Count1 1074 | 1075 | 431 1076 | 1077 | Track ID431 1078 | NameNow You Are Gone 1079 | ArtistAmerica 1080 | AlbumGreatest Hits 1081 | GenreEasy Listening 1082 | KindMPEG audio file 1083 | Size3753347 1084 | Total Time187559 1085 | Track Number2 1086 | Track Count12 1087 | Date Modified2006-02-14T16:20:44Z 1088 | Date Added2006-02-14T16:20:36Z 1089 | Bit Rate160 1090 | Sample Rate44100 1091 | Play Count52 1092 | Play Date3528446011 1093 | Play Date UTC2015-10-23T15:53:31Z 1094 | Skip Count1 1095 | Skip Date2010-04-26T22:57:59Z 1096 | Rating100 1097 | Album Rating100 1098 | Album Rating Computed 1099 | Normalization656 1100 | Persistent ID21130E105F3B8866 1101 | Track TypeFile 1102 | File Type1297106739 1103 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/America/Greatest%20Hits/02%20Now%20You%20Are%20Gone.mp3 1104 | File Folder Count4 1105 | Library Folder Count1 1106 | 1107 | 433 1108 | 1109 | Track ID433 1110 | NameOutside The Wall 1111 | ArtistPink Floyd 1112 | ComposerRoger Waters 1113 | AlbumThe Wall [Disc 2] 1114 | GenreRock 1115 | KindMPEG audio file 1116 | Size2090965 1117 | Total Time104437 1118 | Disc Number2 1119 | Disc Count2 1120 | Track Number13 1121 | Track Count13 1122 | Year1979 1123 | Date Modified2006-02-14T16:20:59Z 1124 | Date Added2006-02-14T16:20:55Z 1125 | Bit Rate160 1126 | Sample Rate44100 1127 | Play Count16 1128 | Play Date3514729899 1129 | Play Date UTC2015-05-17T21:51:39Z 1130 | Skip Count3 1131 | Skip Date2008-08-18T21:29:02Z 1132 | Rating100 1133 | Album Rating100 1134 | Album Rating Computed 1135 | Normalization35 1136 | Sort AlbumWall [Disc 2] 1137 | Persistent ID21130E105F3B8868 1138 | Track TypeFile 1139 | File Type1297106739 1140 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20%5BDisc%202%5D/2-13%20Outside%20The%20Wall.mp3 1141 | File Folder Count4 1142 | Library Folder Count1 1143 | 1144 | 435 1145 | 1146 | Track ID435 1147 | NameParanoid 1148 | ArtistBlack Sabbath 1149 | ComposerTony Iommi, Ozzy Osbourne, Geezer Butler, Bill Ward 1150 | AlbumParanoid 1151 | GenreMetal 1152 | KindMPEG audio file 1153 | Size3460848 1154 | Total Time172930 1155 | Disc Number1 1156 | Disc Count1 1157 | Track Number2 1158 | Track Count8 1159 | Year1970 1160 | Date Modified2006-02-22T01:48:18Z 1161 | Date Added2006-02-14T16:21:00Z 1162 | Bit Rate160 1163 | Sample Rate44100 1164 | Play Count36 1165 | Play Date3503420316 1166 | Play Date UTC2015-01-07T01:18:36Z 1167 | Rating100 1168 | Album Rating100 1169 | Album Rating Computed 1170 | Normalization922 1171 | Persistent ID21130E105F3B8869 1172 | Track TypeFile 1173 | File Type1297106739 1174 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Black%20Sabbath/Paranoid/02%20Paranoid.mp3 1175 | File Folder Count4 1176 | Library Folder Count1 1177 | 1178 | 437 1179 | 1180 | Track ID437 1181 | NamePlanet Caravan 1182 | ArtistBlack Sabbath 1183 | ComposerTony Iommi, Ozzy Osbourne, Geezer Butler, Bill Ward 1184 | AlbumParanoid 1185 | GenreMetal 1186 | KindMPEG audio file 1187 | Size5501017 1188 | Total Time274938 1189 | Disc Number1 1190 | Disc Count1 1191 | Track Number3 1192 | Track Count8 1193 | Year1970 1194 | Date Modified2006-02-22T01:48:59Z 1195 | Date Added2006-02-14T16:21:09Z 1196 | Bit Rate160 1197 | Sample Rate44100 1198 | Play Count38 1199 | Play Date3503420591 1200 | Play Date UTC2015-01-07T01:23:11Z 1201 | Skip Count1 1202 | Skip Date2007-03-26T12:20:03Z 1203 | Rating100 1204 | Album Rating100 1205 | Album Rating Computed 1206 | Normalization461 1207 | Persistent ID21130E105F3B886A 1208 | Track TypeFile 1209 | File Type1297106739 1210 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Black%20Sabbath/Paranoid/03%20Planet%20Caravan.mp3 1211 | File Folder Count4 1212 | Library Folder Count1 1213 | 1214 | 439 1215 | 1216 | Track ID439 1217 | NamePretty Jeanie 1218 | ArtistBryan Lee 1219 | AlbumBlues Is 1220 | GenreBlues/R&B 1221 | KindMPEG audio file 1222 | Size4505673 1223 | Total Time225175 1224 | Track Number10 1225 | Track Count12 1226 | Date Modified2006-02-14T16:21:32Z 1227 | Date Added2006-02-14T16:21:23Z 1228 | Bit Rate160 1229 | Sample Rate44100 1230 | Play Count34 1231 | Play Date3502812757 1232 | Play Date UTC2014-12-31T00:32:37Z 1233 | Skip Count1 1234 | Skip Date2013-10-21T00:07:34Z 1235 | Rating100 1236 | Album Rating100 1237 | Album Rating Computed 1238 | Normalization4946 1239 | Persistent ID21130E105F3B886B 1240 | Track TypeFile 1241 | File Type1297106739 1242 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Bryan%20Lee/Blues%20Is/10%20Pretty%20Jeanie.mp3 1243 | File Folder Count4 1244 | Library Folder Count1 1245 | 1246 | 441 1247 | 1248 | Track ID441 1249 | NameRammstein 1250 | ArtistRammstein 1251 | ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Oliver Riedel, Paul Landers, Richard Z. Kruspe-Bernstein & Till Lindemann 1252 | AlbumHerzeleid 1253 | GenreIndustrial 1254 | KindMPEG audio file 1255 | Size5304122 1256 | Total Time265090 1257 | Disc Number1 1258 | Disc Count1 1259 | Track Number11 1260 | Track Count11 1261 | Year1995 1262 | Date Modified2011-11-18T19:28:29Z 1263 | Date Added2006-02-14T16:21:34Z 1264 | Bit Rate160 1265 | Sample Rate44100 1266 | Play Count45 1267 | Play Date3489331767 1268 | Play Date UTC2014-07-27T22:49:27Z 1269 | Skip Count3 1270 | Skip Date2013-09-21T01:55:34Z 1271 | Rating100 1272 | Album Rating100 1273 | Album Rating Computed 1274 | Normalization4060 1275 | Persistent ID21130E105F3B886C 1276 | Track TypeFile 1277 | File Type1297106739 1278 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Rammstein/Herzeleid/11%20Rammstein.mp3 1279 | File Folder Count4 1280 | Library Folder Count1 1281 | 1282 | 443 1283 | 1284 | Track ID443 1285 | NameRat Salad 1286 | ArtistBlack Sabbath 1287 | ComposerTony Iommi, Ozzy Osbourne, Geezer Butler, Bill Ward 1288 | AlbumParanoid 1289 | GenreMetal 1290 | KindMPEG audio file 1291 | Size3006841 1292 | Total Time150230 1293 | Disc Number1 1294 | Disc Count1 1295 | Track Number7 1296 | Track Count8 1297 | Year1970 1298 | Date Modified2006-02-22T01:51:32Z 1299 | Date Added2006-02-14T16:21:47Z 1300 | Bit Rate160 1301 | Sample Rate44100 1302 | Play Count46 1303 | Play Date3472742136 1304 | Play Date UTC2014-01-16T23:35:36Z 1305 | Rating100 1306 | Album Rating100 1307 | Album Rating Computed 1308 | Normalization451 1309 | Persistent ID21130E105F3B886F 1310 | Track TypeFile 1311 | File Type1297106739 1312 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Black%20Sabbath/Paranoid/07%20Rat%20Salad.mp3 1313 | File Folder Count4 1314 | Library Folder Count1 1315 | 1316 | 445 1317 | 1318 | Track ID445 1319 | NameRock & Roll 1320 | ArtistLed Zeppelin 1321 | ComposerJimmy Page, Robert Plant, John Paul Jones, John Bonham 1322 | AlbumIV 1323 | GenreRock 1324 | KindMPEG audio file 1325 | Size4420064 1326 | Total Time220891 1327 | Disc Number1 1328 | Disc Count1 1329 | Track Number2 1330 | Track Count8 1331 | Year1971 1332 | Date Modified2006-02-14T16:24:40Z 1333 | Date Added2006-02-14T16:24:31Z 1334 | Bit Rate160 1335 | Sample Rate44100 1336 | Play Count109 1337 | Play Date3503062355 1338 | Play Date UTC2015-01-02T21:52:35Z 1339 | Rating100 1340 | Album Rating100 1341 | Album Rating Computed 1342 | Normalization1425 1343 | Persistent ID21130E105F3B8871 1344 | Track TypeFile 1345 | File Type1297106739 1346 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Led%20Zeppelin/IV/02%20Rock%20&%20Roll.mp3 1347 | File Folder Count4 1348 | Library Folder Count1 1349 | 1350 | 447 1351 | 1352 | Track ID447 1353 | NameRode Across the Desert 1354 | ArtistAmerica 1355 | AlbumGreatest Hits 1356 | GenreEasy Listening 1357 | KindMPEG audio file 1358 | Size4999916 1359 | Total Time249887 1360 | Track Number1 1361 | Track Count12 1362 | Date Modified2006-02-14T16:24:53Z 1363 | Date Added2006-02-14T16:24:42Z 1364 | Bit Rate160 1365 | Sample Rate44100 1366 | Play Count60 1367 | Play Date3528445823 1368 | Play Date UTC2015-10-23T15:50:23Z 1369 | Skip Count2 1370 | Skip Date2014-02-26T14:21:42Z 1371 | Rating100 1372 | Album Rating100 1373 | Album Rating Computed 1374 | Normalization964 1375 | Persistent ID21130E105F3B8872 1376 | Track TypeFile 1377 | File Type1297106739 1378 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/America/Greatest%20Hits/01%20Rode%20Across%20the%20Desert.mp3 1379 | File Folder Count4 1380 | Library Folder Count1 1381 | 1382 | 449 1383 | 1384 | Track ID449 1385 | NameSandy 1386 | ArtistVarious 1387 | AlbumGrease 1388 | GenreSoundtrack 1389 | KindMPEG audio file 1390 | Size3116986 1391 | Total Time155742 1392 | Track Number5 1393 | Track Count24 1394 | Date Modified2006-02-14T16:25:01Z 1395 | Date Added2006-02-14T16:24:54Z 1396 | Bit Rate160 1397 | Sample Rate44100 1398 | Play Count36 1399 | Play Date3478190630 1400 | Play Date UTC2014-03-21T00:03:50Z 1401 | Rating100 1402 | Album Rating100 1403 | Album Rating Computed 1404 | Normalization1739 1405 | Persistent ID21130E105F3B8873 1406 | Track TypeFile 1407 | File Type1297106739 1408 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Various/Grease/05%20Sandy.mp3 1409 | File Folder Count4 1410 | Library Folder Count1 1411 | 1412 | 451 1413 | 1414 | Track ID451 1415 | NameShake Your Foundations 1416 | ArtistAC/DC 1417 | AlbumWho Made Who 1418 | GenreRock 1419 | KindMPEG audio file 1420 | Size4677593 1421 | Total Time233769 1422 | Disc Number1 1423 | Disc Count1 1424 | Track Number7 1425 | Track Count9 1426 | Year1985 1427 | Date Modified2006-02-22T04:15:26Z 1428 | Date Added2006-02-14T16:25:02Z 1429 | Bit Rate160 1430 | Sample Rate44100 1431 | Play Count85 1432 | Play Date3396883263 1433 | Play Date UTC2011-08-22T22:41:03Z 1434 | Skip Count1 1435 | Skip Date2007-09-22T13:56:48Z 1436 | Rating100 1437 | Album Rating100 1438 | Album Rating Computed 1439 | Normalization13346 1440 | Compilation 1441 | Persistent ID21130E105F3B8874 1442 | Track TypeFile 1443 | File Type1297106739 1444 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/Compilations/Who%20Made%20Who/07%20Shake%20Your%20Foundations.mp3 1445 | File Folder Count4 1446 | Library Folder Count1 1447 | 1448 | 453 1449 | 1450 | Track ID453 1451 | NameSister Golden Hair 1452 | ArtistAmerica 1453 | AlbumGreatest Hits 1454 | GenreEasy Listening 1455 | KindMPEG audio file 1456 | Size4043309 1457 | Total Time202057 1458 | Track Number10 1459 | Track Count12 1460 | Date Modified2006-02-14T16:25:26Z 1461 | Date Added2006-02-14T16:25:15Z 1462 | Bit Rate160 1463 | Sample Rate44100 1464 | Play Count60 1465 | Play Date3528445364 1466 | Play Date UTC2015-10-23T15:42:44Z 1467 | Skip Count1 1468 | Skip Date2010-04-26T22:58:16Z 1469 | Rating100 1470 | Album Rating100 1471 | Album Rating Computed 1472 | Normalization1246 1473 | Persistent ID21130E105F3B8875 1474 | Track TypeFile 1475 | File Type1297106739 1476 | Locationfile:///Users/csev/Music/iTunes/iTunes%20Music/America/Greatest%20Hits/10%20Sister%20Golden%20Hair.mp3 1477 | File Folder Count4 1478 | Library Folder Count1 1479 | 1480 | 455 1481 | 1482 | Track ID455 1483 | NameSomebody To Love 1484 | ArtistQueen 1485 | ComposerFreddie Mercury 1486 | AlbumGreatest Hits 1487 | GenreRock 1488 | KindMPEG audio file 1489 | Size5953955 1490 | Total Time297586 1491 | Disc Number1 1492 | Disc Count1 1493 | Track Number5 1494 | Track Count17 1495 | Year1976 1496 | Date Modified2006-02-14T16:25:45Z 1497 | Date Added2006-02-14T16:25:27Z 1498 | Bit Rate160 1499 | Sample Rate44100 1500 | Play Count17 1501 | -------------------------------------------------------------------------------- /all-python-codes/retri-itunes-data/tracks.py: -------------------------------------------------------------------------------- 1 | # import xml library into the python code 2 | import xml.etree.ElementTree as ET 3 | 4 | fname = input('Enter file name: ') 5 | 6 | # Track ID369 7 | # NameAnother One Bites The Dust 8 | # ArtistQueen 9 | 10 | # defined lookup 11 | def lookup(d, key): 12 | found = False 13 | for child in d: 14 | if found : return child.text 15 | if child.tag == 'key' and child.text == key : 16 | found = True 17 | return None 18 | 19 | #parsing using the xml library 20 | stuff = ET.parse(fname) 21 | all = stuff.findall('dict/dict/dict') 22 | print('Dict count:', len(all)) 23 | for entry in all: 24 | if( lookup(entry, 'Track ID') is None ) : continue 25 | 26 | # getting the output desired 27 | name = lookup(entry, 'Name') 28 | artist = lookup(entry, 'Artist') 29 | album = lookup(entry, 'Album') 30 | count = lookup(entry, 'Play Count') 31 | rating = lookup(entry, 'Rating') 32 | length = lookup(entry, 'Total Time') 33 | 34 | #if any of the data lack one of these, ignore! 35 | if name is None or artist is None or album is None : 36 | continue 37 | 38 | print(name, artist, album, count, rating, length) 39 | -------------------------------------------------------------------------------- /all-python-codes/retri-itunes-data/tracksc.py: -------------------------------------------------------------------------------- 1 | # commenting on this,would be complicated and difficullt understand 2 | # If you really need it, do well to make researches on it 3 | import xml.etree.ElementTree as ET 4 | import sqlite3 5 | 6 | conn = sqlite3.connect('tracksc.sqlite') 7 | cur = conn.cursor() 8 | 9 | # Make some fresh tables using executescript() 10 | cur.executescript(''' 11 | DROP TABLE IF EXISTS Artist; 12 | DROP TABLE IF EXISTS Album; 13 | DROP TABLE IF EXISTS Genre; 14 | DROP TABLE IF EXISTS Track; 15 | 16 | CREATE TABLE Artist ( 17 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 18 | name TEXT UNIQUE 19 | ); 20 | 21 | CREATE TABLE Album ( 22 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 23 | artist_id INTEGER, 24 | name TEXT UNIQUE 25 | ); 26 | 27 | CREATE TABLE Genre ( 28 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 29 | name TEXT UNIQUE 30 | ); 31 | 32 | CREATE TABLE Track ( 33 | id INTEGER NOT NULL PRIMARY KEY 34 | AUTOINCREMENT UNIQUE, 35 | title TEXT UNIQUE, 36 | album_id INTEGER, 37 | genre_id INTEGER, 38 | len INTEGER, rating INTEGER, count INTEGER 39 | ); 40 | ''') 41 | 42 | 43 | fname = input('Enter file name: ') 44 | if ( len(fname) < 1 ) : fname = 'Library.xml' 45 | 46 | # Track ID369 47 | # NameAnother One Bites The Dust 48 | # ArtistQueen 49 | def lookup(d, key): 50 | found = False 51 | for child in d: 52 | if found : return child.text 53 | if child.tag == 'key' and child.text == key : 54 | found = True 55 | return None 56 | 57 | stuff = ET.parse(fname) 58 | all = stuff.findall('dict/dict/dict') 59 | print('Dict count:', len(all)) 60 | for entry in all: 61 | if ( lookup(entry, 'Track ID') is None ) : continue 62 | 63 | name = lookup(entry, 'Name') 64 | artist = lookup(entry, 'Artist') 65 | album = lookup(entry, 'Album') 66 | genre = lookup(entry, 'Genre') 67 | count = lookup(entry, 'Play Count') 68 | rating = lookup(entry, 'Rating') 69 | length = lookup(entry, 'Total Time') 70 | 71 | if name is None or artist is None or genre is None or album is None: 72 | continue 73 | 74 | print (name, artist, album, genre, count, rating, length) 75 | 76 | cur.execute('''INSERT OR IGNORE INTO Artist (name) 77 | VALUES ( ? )''', ( artist, ) ) 78 | cur.execute('SELECT id FROM Artist WHERE name = ? ', (artist, )) 79 | artist_id = cur.fetchone()[0] 80 | 81 | cur.execute('''INSERT OR IGNORE INTO Album (name, artist_id) 82 | VALUES ( ?, ? )''', ( album, artist_id ) ) 83 | cur.execute('SELECT id FROM Album WHERE name = ? ', (album, )) 84 | album_id = cur.fetchone()[0] 85 | 86 | cur.execute('''INSERT OR IGNORE INTO Genre (name) 87 | VALUES ( ? )''', ( genre, ) ) 88 | cur.execute('SELECT id FROM Genre WHERE name = ? ', (genre, )) 89 | genre_id = cur.fetchone()[0] 90 | 91 | cur.execute('''INSERT OR REPLACE INTO Track 92 | (title, album_id, genre_id, len, rating, count) 93 | VALUES ( ?, ?, ?, ?, ?, ? )''', 94 | ( name, album_id, genre_id, length, rating, count ) ) 95 | 96 | conn.commit() 97 | 98 | sqlstr = 'SELECT Track.title, Artist.name, Genre.name, Album.name FROM Track JOIN Artist JOIN Genre JOIN Album ON Album.artist_id = Artist.id AND Track.genre_id = genre.id AND Track.album_id = album.id ORDER BY Artist.name LIMIT 3' 99 | 100 | for row in cur.execute(sqlstr): 101 | print(str(row[0]), row[1], row[2], row[3]) 102 | 103 | cur.close() 104 | -------------------------------------------------------------------------------- /all-python-codes/retrieve-school-data/README.md: -------------------------------------------------------------------------------- 1 | # Retrieval of data from a json 2 | This function and primary aim of this repo is to retrieve data from a json(data) file 3 | 4 | - ## [rosterdb.py](https://github.com/chryzcodez/py-projects/blob/master/all-python-codes/retrieve-school-data/rosterdb.py) 5 | The other python file `rosterdb.py` is python code with a bit of sqlite. This code is to retrieve your data and store it into an sqlite database for later use. To use this you need to download an sqlite browser [here](https://sqlitebrowser.org/dl/). 6 | 7 | - ## [rosters.py](https://github.com/chryzcodez/py-projects/blob/master/all-python-codes/retrieve-school-data/rosters.py) 8 | This is same as the the `rosterdb.py` python file except from the sqlite database which this code does not have. You can simply run it on your terminal and get your data without saving any pich of it. 9 | 10 | - ## [roster_data.json](https://github.com/chryzcodez/py-projects/blob/master/all-python-codes/retrieve-school-data/roster_data.json) 11 | **Note:**_This file was made available for the tweaking and test-running of the python codes/ program made available in this repo! 12 | 13 | This is a json file that is filled with data in which we are going to be parsing and printing out our desired piece of data/ information needed or intented. 14 | ```json 15 | [ 16 | "Gaia", 17 | "si110", 18 | 1 19 | ], 20 | [ 21 | "Rio", 22 | "si110", 23 | 0 24 | ] 25 | ``` 26 | A block of the json code/ program is exactly like this code snippet above. 27 | - **"Gaia"**: Is represented here as the name of a teacher. 28 | - **"si110"**: is represented as the course taught by the teacher aformentioned. 29 | - **"1"**: is represented as here as a tescher's post 30 | - **"0"**: is represented as here as the post of a student 31 | 32 | -------------------------------------------------------------------------------- /all-python-codes/retrieve-school-data/roster_data.json: -------------------------------------------------------------------------------- 1 | [ 2 | [ 3 | "Gaia", 4 | "si110", 5 | 1 6 | ], 7 | [ 8 | "Rio", 9 | "si110", 10 | 0 11 | ], 12 | [ 13 | "Stanley", 14 | "si110", 15 | 0 16 | ], 17 | [ 18 | "Lene", 19 | "si110", 20 | 0 21 | ], 22 | [ 23 | "Kenzi", 24 | "si110", 25 | 0 26 | ], 27 | [ 28 | "Shaun", 29 | "si110", 30 | 0 31 | ], 32 | [ 33 | "Pawlo", 34 | "si110", 35 | 0 36 | ], 37 | [ 38 | "Kames", 39 | "si110", 40 | 0 41 | ], 42 | [ 43 | "Mirran", 44 | "si110", 45 | 0 46 | ], 47 | [ 48 | "Dhavid", 49 | "si110", 50 | 0 51 | ], 52 | [ 53 | "Bailie", 54 | "si110", 55 | 0 56 | ], 57 | [ 58 | "Teighen", 59 | "si110", 60 | 0 61 | ], 62 | [ 63 | "Avesta", 64 | "si110", 65 | 0 66 | ], 67 | [ 68 | "Blazej", 69 | "si110", 70 | 0 71 | ], 72 | [ 73 | "Raimee", 74 | "si110", 75 | 0 76 | ], 77 | [ 78 | "Kash", 79 | "si110", 80 | 0 81 | ], 82 | [ 83 | "Shanzay", 84 | "si110", 85 | 0 86 | ], 87 | [ 88 | "Pierce", 89 | "si110", 90 | 0 91 | ], 92 | [ 93 | "Sahara", 94 | "si110", 95 | 0 96 | ], 97 | [ 98 | "Kaleena", 99 | "si110", 100 | 0 101 | ], 102 | [ 103 | "Keir", 104 | "si110", 105 | 0 106 | ], 107 | [ 108 | "Sherese", 109 | "si110", 110 | 0 111 | ], 112 | [ 113 | "Xin", 114 | "si110", 115 | 0 116 | ], 117 | [ 118 | "Jura", 119 | "si110", 120 | 0 121 | ], 122 | [ 123 | "Heyden", 124 | "si110", 125 | 0 126 | ], 127 | [ 128 | "Shannon", 129 | "si110", 130 | 0 131 | ], 132 | [ 133 | "Jaslyn", 134 | "si110", 135 | 0 136 | ], 137 | [ 138 | "Dylin", 139 | "si110", 140 | 0 141 | ], 142 | [ 143 | "Vladislav", 144 | "si110", 145 | 0 146 | ], 147 | [ 148 | "Kori", 149 | "si110", 150 | 0 151 | ], 152 | [ 153 | "Malia", 154 | "si110", 155 | 0 156 | ], 157 | [ 158 | "Sharilee", 159 | "si110", 160 | 0 161 | ], 162 | [ 163 | "Fruin", 164 | "si110", 165 | 0 166 | ], 167 | [ 168 | "Daithi", 169 | "si110", 170 | 0 171 | ], 172 | [ 173 | "Naif", 174 | "si110", 175 | 0 176 | ], 177 | [ 178 | "Will", 179 | "si110", 180 | 0 181 | ], 182 | [ 183 | "Dorothy", 184 | "si110", 185 | 0 186 | ], 187 | [ 188 | "Alyssa", 189 | "si110", 190 | 0 191 | ], 192 | [ 193 | "Robbie", 194 | "si106", 195 | 1 196 | ], 197 | [ 198 | "Prabhjot", 199 | "si106", 200 | 0 201 | ], 202 | [ 203 | "Koushik", 204 | "si106", 205 | 0 206 | ], 207 | [ 208 | "Hopkin", 209 | "si106", 210 | 0 211 | ], 212 | [ 213 | "Kariss", 214 | "si106", 215 | 0 216 | ], 217 | [ 218 | "Madeline", 219 | "si106", 220 | 0 221 | ], 222 | [ 223 | "Brody", 224 | "si106", 225 | 0 226 | ], 227 | [ 228 | "Cormac", 229 | "si106", 230 | 0 231 | ], 232 | [ 233 | "Luqman", 234 | "si106", 235 | 0 236 | ], 237 | [ 238 | "Ashbey", 239 | "si106", 240 | 0 241 | ], 242 | [ 243 | "Meagan", 244 | "si106", 245 | 0 246 | ], 247 | [ 248 | "Samy", 249 | "si106", 250 | 0 251 | ], 252 | [ 253 | "Islah", 254 | "si106", 255 | 0 256 | ], 257 | [ 258 | "Kate", 259 | "si106", 260 | 0 261 | ], 262 | [ 263 | "Noor", 264 | "si106", 265 | 0 266 | ], 267 | [ 268 | "Reilly", 269 | "si106", 270 | 0 271 | ], 272 | [ 273 | "Mindi", 274 | "si106", 275 | 0 276 | ], 277 | [ 278 | "Sherwyn", 279 | "si106", 280 | 0 281 | ], 282 | [ 283 | "Emmajane", 284 | "si106", 285 | 0 286 | ], 287 | [ 288 | "Aditya", 289 | "si106", 290 | 0 291 | ], 292 | [ 293 | "Kasja", 294 | "si106", 295 | 0 296 | ], 297 | [ 298 | "Axel", 299 | "si106", 300 | 0 301 | ], 302 | [ 303 | "Bradly", 304 | "si106", 305 | 0 306 | ], 307 | [ 308 | "Niteesha", 309 | "si106", 310 | 0 311 | ], 312 | [ 313 | "Joeddy", 314 | "si106", 315 | 0 316 | ], 317 | [ 318 | "Tiffany", 319 | "si106", 320 | 0 321 | ], 322 | [ 323 | "Nawel", 324 | "si106", 325 | 0 326 | ], 327 | [ 328 | "Leilani", 329 | "si106", 330 | 0 331 | ], 332 | [ 333 | "Jabin", 334 | "si106", 335 | 0 336 | ], 337 | [ 338 | "Kaycie", 339 | "si106", 340 | 0 341 | ], 342 | [ 343 | "Shyam", 344 | "si106", 345 | 0 346 | ], 347 | [ 348 | "Shayna", 349 | "si106", 350 | 0 351 | ], 352 | [ 353 | "Marcos", 354 | "si106", 355 | 0 356 | ], 357 | [ 358 | "Kealon", 359 | "si106", 360 | 0 361 | ], 362 | [ 363 | "Aytug", 364 | "si106", 365 | 0 366 | ], 367 | [ 368 | "Cuillin", 369 | "si106", 370 | 0 371 | ], 372 | [ 373 | "Chantelle", 374 | "si106", 375 | 0 376 | ], 377 | [ 378 | "Findlay", 379 | "si106", 380 | 0 381 | ], 382 | [ 383 | "Sol", 384 | "si106", 385 | 0 386 | ], 387 | [ 388 | "Ala", 389 | "si106", 390 | 0 391 | ], 392 | [ 393 | "Blythe", 394 | "si106", 395 | 0 396 | ], 397 | [ 398 | "Rhia", 399 | "si106", 400 | 0 401 | ], 402 | [ 403 | "Foosiya", 404 | "si106", 405 | 0 406 | ], 407 | [ 408 | "Marianne", 409 | "si106", 410 | 0 411 | ], 412 | [ 413 | "Meryem", 414 | "si106", 415 | 0 416 | ], 417 | [ 418 | "Camerin", 419 | "si106", 420 | 0 421 | ], 422 | [ 423 | "Calan", 424 | "si106", 425 | 0 426 | ], 427 | [ 428 | "Claudia", 429 | "si106", 430 | 0 431 | ], 432 | [ 433 | "Ciar", 434 | "si106", 435 | 0 436 | ], 437 | [ 438 | "Saif", 439 | "si106", 440 | 0 441 | ], 442 | [ 443 | "Kaedyn", 444 | "si106", 445 | 0 446 | ], 447 | [ 448 | "Koby", 449 | "si206", 450 | 1 451 | ], 452 | [ 453 | "Levy", 454 | "si206", 455 | 0 456 | ], 457 | [ 458 | "Chala", 459 | "si206", 460 | 0 461 | ], 462 | [ 463 | "Callie", 464 | "si206", 465 | 0 466 | ], 467 | [ 468 | "Jaying", 469 | "si206", 470 | 0 471 | ], 472 | [ 473 | "Mika", 474 | "si206", 475 | 0 476 | ], 477 | [ 478 | "Jordanna", 479 | "si206", 480 | 0 481 | ], 482 | [ 483 | "Anselm", 484 | "si206", 485 | 0 486 | ], 487 | [ 488 | "Lockey", 489 | "si206", 490 | 0 491 | ], 492 | [ 493 | "Caelen", 494 | "si206", 495 | 0 496 | ], 497 | [ 498 | "Naina", 499 | "si206", 500 | 0 501 | ], 502 | [ 503 | "Aden", 504 | "si206", 505 | 0 506 | ], 507 | [ 508 | "Leila", 509 | "si206", 510 | 0 511 | ], 512 | [ 513 | "Claudia", 514 | "si206", 515 | 0 516 | ], 517 | [ 518 | "Jincheng", 519 | "si206", 520 | 0 521 | ], 522 | [ 523 | "Maddison", 524 | "si206", 525 | 0 526 | ], 527 | [ 528 | "Jamielee", 529 | "si206", 530 | 0 531 | ], 532 | [ 533 | "Tanith", 534 | "si206", 535 | 0 536 | ], 537 | [ 538 | "Kaan", 539 | "si206", 540 | 0 541 | ], 542 | [ 543 | "Queeneffa", 544 | "si206", 545 | 0 546 | ], 547 | [ 548 | "Shinade", 549 | "si206", 550 | 0 551 | ], 552 | [ 553 | "Cariss", 554 | "si206", 555 | 0 556 | ], 557 | [ 558 | "Samar", 559 | "si206", 560 | 0 561 | ], 562 | [ 563 | "Farhan", 564 | "si206", 565 | 0 566 | ], 567 | [ 568 | "Ellen", 569 | "si206", 570 | 0 571 | ], 572 | [ 573 | "Rhudi", 574 | "si301", 575 | 1 576 | ], 577 | [ 578 | "Lorenzo", 579 | "si301", 580 | 0 581 | ], 582 | [ 583 | "Almirah", 584 | "si301", 585 | 0 586 | ], 587 | [ 588 | "Nagib", 589 | "si301", 590 | 0 591 | ], 592 | [ 593 | "Aytug", 594 | "si301", 595 | 0 596 | ], 597 | [ 598 | "Ashton", 599 | "si301", 600 | 0 601 | ], 602 | [ 603 | "Evan", 604 | "si301", 605 | 0 606 | ], 607 | [ 608 | "Cassieleigh", 609 | "si301", 610 | 0 611 | ], 612 | [ 613 | "Jewel", 614 | "si301", 615 | 0 616 | ], 617 | [ 618 | "Nicole", 619 | "si301", 620 | 0 621 | ], 622 | [ 623 | "Bradyn", 624 | "si301", 625 | 0 626 | ], 627 | [ 628 | "Asrar", 629 | "si301", 630 | 0 631 | ], 632 | [ 633 | "Jonson", 634 | "si301", 635 | 0 636 | ], 637 | [ 638 | "Issiaka", 639 | "si301", 640 | 0 641 | ], 642 | [ 643 | "Nico", 644 | "si301", 645 | 0 646 | ], 647 | [ 648 | "Bohbi", 649 | "si301", 650 | 0 651 | ], 652 | [ 653 | "Carmyle", 654 | "si301", 655 | 0 656 | ], 657 | [ 658 | "Phebe", 659 | "si301", 660 | 0 661 | ], 662 | [ 663 | "Niomi", 664 | "si301", 665 | 0 666 | ], 667 | [ 668 | "Peter", 669 | "si301", 670 | 0 671 | ], 672 | [ 673 | "Iman", 674 | "si301", 675 | 0 676 | ], 677 | [ 678 | "Eleni", 679 | "si301", 680 | 0 681 | ], 682 | [ 683 | "Breeanna", 684 | "si301", 685 | 0 686 | ], 687 | [ 688 | "Morwen", 689 | "si301", 690 | 0 691 | ], 692 | [ 693 | "Cadhla", 694 | "si301", 695 | 0 696 | ], 697 | [ 698 | "Caitlynn", 699 | "si301", 700 | 0 701 | ], 702 | [ 703 | "Nur", 704 | "si310", 705 | 1 706 | ], 707 | [ 708 | "Spondon", 709 | "si310", 710 | 0 711 | ], 712 | [ 713 | "Rhys", 714 | "si310", 715 | 0 716 | ], 717 | [ 718 | "Fatimah", 719 | "si310", 720 | 0 721 | ], 722 | [ 723 | "Elsa", 724 | "si310", 725 | 0 726 | ], 727 | [ 728 | "Alfy", 729 | "si310", 730 | 0 731 | ], 732 | [ 733 | "Eagann", 734 | "si310", 735 | 0 736 | ], 737 | [ 738 | "Merissa", 739 | "si310", 740 | 0 741 | ], 742 | [ 743 | "Elvita", 744 | "si310", 745 | 0 746 | ], 747 | [ 748 | "Xin", 749 | "si310", 750 | 0 751 | ], 752 | [ 753 | "Arnab", 754 | "si310", 755 | 0 756 | ], 757 | [ 758 | "Dissanayake", 759 | "si310", 760 | 0 761 | ], 762 | [ 763 | "Reiss", 764 | "si310", 765 | 0 766 | ], 767 | [ 768 | "Francisco", 769 | "si310", 770 | 0 771 | ], 772 | [ 773 | "Sasha", 774 | "si310", 775 | 0 776 | ], 777 | [ 778 | "Analyse", 779 | "si310", 780 | 0 781 | ], 782 | [ 783 | "Jules", 784 | "si310", 785 | 0 786 | ], 787 | [ 788 | "Qandeel", 789 | "si310", 790 | 0 791 | ], 792 | [ 793 | "Morgen", 794 | "si310", 795 | 0 796 | ], 797 | [ 798 | "Bracken", 799 | "si310", 800 | 0 801 | ], 802 | [ 803 | "Maxwell", 804 | "si310", 805 | 0 806 | ], 807 | [ 808 | "Malachy", 809 | "si310", 810 | 0 811 | ], 812 | [ 813 | "Fearn", 814 | "si310", 815 | 0 816 | ], 817 | [ 818 | "Lorcan", 819 | "si310", 820 | 0 821 | ], 822 | [ 823 | "Morvern", 824 | "si310", 825 | 0 826 | ], 827 | [ 828 | "Arya", 829 | "si310", 830 | 0 831 | ], 832 | [ 833 | "Sarabeth", 834 | "si310", 835 | 0 836 | ], 837 | [ 838 | "Limo", 839 | "si310", 840 | 0 841 | ], 842 | [ 843 | "Hong", 844 | "si310", 845 | 0 846 | ], 847 | [ 848 | "Arabella", 849 | "si310", 850 | 0 851 | ], 852 | [ 853 | "Imogen", 854 | "si310", 855 | 0 856 | ], 857 | [ 858 | "Mitzi", 859 | "si310", 860 | 0 861 | ], 862 | [ 863 | "Dara", 864 | "si310", 865 | 0 866 | ], 867 | [ 868 | "Daanyaal", 869 | "si310", 870 | 0 871 | ], 872 | [ 873 | "Tillie", 874 | "si310", 875 | 0 876 | ], 877 | [ 878 | "Lenon", 879 | "si310", 880 | 0 881 | ], 882 | [ 883 | "Kyan", 884 | "si310", 885 | 0 886 | ], 887 | [ 888 | "Caragh", 889 | "si310", 890 | 0 891 | ], 892 | [ 893 | "Arda", 894 | "si310", 895 | 0 896 | ], 897 | [ 898 | "Aphra", 899 | "si310", 900 | 0 901 | ], 902 | [ 903 | "Zuzanna", 904 | "si310", 905 | 0 906 | ], 907 | [ 908 | "Mateusz", 909 | "si310", 910 | 0 911 | ], 912 | [ 913 | "Nayan", 914 | "si310", 915 | 0 916 | ], 917 | [ 918 | "Colt", 919 | "si310", 920 | 0 921 | ], 922 | [ 923 | "Ferre", 924 | "si310", 925 | 0 926 | ], 927 | [ 928 | "Faye", 929 | "si310", 930 | 0 931 | ], 932 | [ 933 | "Beraka", 934 | "si310", 935 | 0 936 | ], 937 | [ 938 | "Possum", 939 | "si310", 940 | 0 941 | ], 942 | [ 943 | "Ashleen", 944 | "si310", 945 | 0 946 | ], 947 | [ 948 | "Joanna", 949 | "si310", 950 | 0 951 | ], 952 | [ 953 | "Nelly", 954 | "si310", 955 | 0 956 | ], 957 | [ 958 | "Crombie", 959 | "si310", 960 | 0 961 | ], 962 | [ 963 | "Damla", 964 | "si334", 965 | 1 966 | ], 967 | [ 968 | "Marwah", 969 | "si334", 970 | 0 971 | ], 972 | [ 973 | "Umer", 974 | "si334", 975 | 0 976 | ], 977 | [ 978 | "Koby", 979 | "si334", 980 | 0 981 | ], 982 | [ 983 | "Cecilia", 984 | "si334", 985 | 0 986 | ], 987 | [ 988 | "Devin", 989 | "si334", 990 | 0 991 | ], 992 | [ 993 | "Edwyn", 994 | "si334", 995 | 0 996 | ], 997 | [ 998 | "Toluwanimi", 999 | "si334", 1000 | 0 1001 | ], 1002 | [ 1003 | "Anya", 1004 | "si334", 1005 | 0 1006 | ], 1007 | [ 1008 | "Otilia", 1009 | "si334", 1010 | 0 1011 | ], 1012 | [ 1013 | "Ayrton", 1014 | "si334", 1015 | 0 1016 | ], 1017 | [ 1018 | "Marcos", 1019 | "si334", 1020 | 0 1021 | ], 1022 | [ 1023 | "Jared", 1024 | "si334", 1025 | 0 1026 | ], 1027 | [ 1028 | "Elwyn", 1029 | "si334", 1030 | 0 1031 | ], 1032 | [ 1033 | "Soham", 1034 | "si334", 1035 | 0 1036 | ], 1037 | [ 1038 | "Keeton", 1039 | "si334", 1040 | 0 1041 | ], 1042 | [ 1043 | "Dacia", 1044 | "si334", 1045 | 0 1046 | ], 1047 | [ 1048 | "Nidba", 1049 | "si334", 1050 | 0 1051 | ], 1052 | [ 1053 | "Aaliyah", 1054 | "si334", 1055 | 0 1056 | ], 1057 | [ 1058 | "Mhirren", 1059 | "si334", 1060 | 0 1061 | ], 1062 | [ 1063 | "Majid", 1064 | "si334", 1065 | 0 1066 | ], 1067 | [ 1068 | "Msughter", 1069 | "si334", 1070 | 0 1071 | ], 1072 | [ 1073 | "Ailsa", 1074 | "si334", 1075 | 0 1076 | ], 1077 | [ 1078 | "Jenson", 1079 | "si334", 1080 | 0 1081 | ], 1082 | [ 1083 | "Carris", 1084 | "si334", 1085 | 0 1086 | ], 1087 | [ 1088 | "Koral", 1089 | "si334", 1090 | 0 1091 | ], 1092 | [ 1093 | "Butali", 1094 | "si334", 1095 | 0 1096 | ], 1097 | [ 1098 | "April", 1099 | "si334", 1100 | 0 1101 | ], 1102 | [ 1103 | "Jensen", 1104 | "si334", 1105 | 0 1106 | ], 1107 | [ 1108 | "Braydon", 1109 | "si334", 1110 | 0 1111 | ], 1112 | [ 1113 | "Fajar", 1114 | "si334", 1115 | 0 1116 | ], 1117 | [ 1118 | "Darah", 1119 | "si334", 1120 | 0 1121 | ], 1122 | [ 1123 | "Choire", 1124 | "si334", 1125 | 0 1126 | ], 1127 | [ 1128 | "Jessna", 1129 | "si334", 1130 | 0 1131 | ], 1132 | [ 1133 | "Penny", 1134 | "si334", 1135 | 0 1136 | ], 1137 | [ 1138 | "Conrad", 1139 | "si334", 1140 | 0 1141 | ], 1142 | [ 1143 | "Katelin", 1144 | "si334", 1145 | 0 1146 | ], 1147 | [ 1148 | "Myleene", 1149 | "si334", 1150 | 0 1151 | ], 1152 | [ 1153 | "Corinn", 1154 | "si334", 1155 | 0 1156 | ], 1157 | [ 1158 | "Conli", 1159 | "si363", 1160 | 1 1161 | ], 1162 | [ 1163 | "Benedict", 1164 | "si363", 1165 | 0 1166 | ], 1167 | [ 1168 | "Yishuka", 1169 | "si363", 1170 | 0 1171 | ], 1172 | [ 1173 | "Celia", 1174 | "si363", 1175 | 0 1176 | ], 1177 | [ 1178 | "Giuliana", 1179 | "si363", 1180 | 0 1181 | ], 1182 | [ 1183 | "Bintou", 1184 | "si363", 1185 | 0 1186 | ], 1187 | [ 1188 | "Murdina", 1189 | "si363", 1190 | 0 1191 | ], 1192 | [ 1193 | "Raashi", 1194 | "si363", 1195 | 0 1196 | ], 1197 | [ 1198 | "Griffin", 1199 | "si363", 1200 | 0 1201 | ], 1202 | [ 1203 | "Ryder", 1204 | "si363", 1205 | 0 1206 | ], 1207 | [ 1208 | "Elisabeth", 1209 | "si363", 1210 | 0 1211 | ], 1212 | [ 1213 | "Imama", 1214 | "si363", 1215 | 0 1216 | ], 1217 | [ 1218 | "Oliwier", 1219 | "si363", 1220 | 0 1221 | ], 1222 | [ 1223 | "Matia", 1224 | "si363", 1225 | 0 1226 | ], 1227 | [ 1228 | "Misba", 1229 | "si363", 1230 | 0 1231 | ], 1232 | [ 1233 | "Roba", 1234 | "si363", 1235 | 0 1236 | ], 1237 | [ 1238 | "Aslam", 1239 | "si363", 1240 | 0 1241 | ], 1242 | [ 1243 | "Lauri", 1244 | "si363", 1245 | 0 1246 | ], 1247 | [ 1248 | "Garren", 1249 | "si363", 1250 | 0 1251 | ], 1252 | [ 1253 | "Marty", 1254 | "si363", 1255 | 0 1256 | ], 1257 | [ 1258 | "Cassidy", 1259 | "si363", 1260 | 0 1261 | ], 1262 | [ 1263 | "Guthrie", 1264 | "si363", 1265 | 0 1266 | ], 1267 | [ 1268 | "Caelen", 1269 | "si363", 1270 | 0 1271 | ], 1272 | [ 1273 | "Rennie", 1274 | "si363", 1275 | 0 1276 | ], 1277 | [ 1278 | "Zaheerah", 1279 | "si363", 1280 | 0 1281 | ], 1282 | [ 1283 | "Milos", 1284 | "si363", 1285 | 0 1286 | ], 1287 | [ 1288 | "Mariesha", 1289 | "si363", 1290 | 0 1291 | ], 1292 | [ 1293 | "Lenyn", 1294 | "si363", 1295 | 0 1296 | ], 1297 | [ 1298 | "Romana", 1299 | "si363", 1300 | 0 1301 | ], 1302 | [ 1303 | "Mitchell", 1304 | "si363", 1305 | 0 1306 | ], 1307 | [ 1308 | "Michaella", 1309 | "si363", 1310 | 0 1311 | ], 1312 | [ 1313 | "Chaela", 1314 | "si363", 1315 | 0 1316 | ], 1317 | [ 1318 | "Mohd", 1319 | "si363", 1320 | 0 1321 | ], 1322 | [ 1323 | "Kier", 1324 | "si364", 1325 | 1 1326 | ], 1327 | [ 1328 | "Jazmin", 1329 | "si364", 1330 | 0 1331 | ], 1332 | [ 1333 | "Malakai", 1334 | "si364", 1335 | 0 1336 | ], 1337 | [ 1338 | "Dustin", 1339 | "si364", 1340 | 0 1341 | ], 1342 | [ 1343 | "Nichole", 1344 | "si364", 1345 | 0 1346 | ], 1347 | [ 1348 | "Arella", 1349 | "si364", 1350 | 0 1351 | ], 1352 | [ 1353 | "Hawaa", 1354 | "si364", 1355 | 0 1356 | ], 1357 | [ 1358 | "Anureet", 1359 | "si364", 1360 | 0 1361 | ], 1362 | [ 1363 | "Dean", 1364 | "si364", 1365 | 0 1366 | ], 1367 | [ 1368 | "Jon", 1369 | "si364", 1370 | 0 1371 | ], 1372 | [ 1373 | "Sinai", 1374 | "si364", 1375 | 0 1376 | ], 1377 | [ 1378 | "Azlan", 1379 | "si364", 1380 | 0 1381 | ], 1382 | [ 1383 | "Kharli", 1384 | "si364", 1385 | 0 1386 | ], 1387 | [ 1388 | "Bailey", 1389 | "si364", 1390 | 0 1391 | ], 1392 | [ 1393 | "Harnek", 1394 | "si364", 1395 | 0 1396 | ], 1397 | [ 1398 | "Brianna", 1399 | "si364", 1400 | 0 1401 | ], 1402 | [ 1403 | "Cailin", 1404 | "si364", 1405 | 0 1406 | ], 1407 | [ 1408 | "Jai", 1409 | "si364", 1410 | 0 1411 | ], 1412 | [ 1413 | "Mikael", 1414 | "si364", 1415 | 0 1416 | ], 1417 | [ 1418 | "Reis", 1419 | "si364", 1420 | 0 1421 | ], 1422 | [ 1423 | "Koby", 1424 | "si364", 1425 | 0 1426 | ], 1427 | [ 1428 | "Sanaullah", 1429 | "si364", 1430 | 0 1431 | ], 1432 | [ 1433 | "Clayton", 1434 | "si364", 1435 | 0 1436 | ], 1437 | [ 1438 | "Abdallah", 1439 | "si422", 1440 | 1 1441 | ], 1442 | [ 1443 | "Israel", 1444 | "si422", 1445 | 0 1446 | ], 1447 | [ 1448 | "Lia", 1449 | "si422", 1450 | 0 1451 | ], 1452 | [ 1453 | "Manmohan", 1454 | "si422", 1455 | 0 1456 | ], 1457 | [ 1458 | "Daud", 1459 | "si422", 1460 | 0 1461 | ], 1462 | [ 1463 | "Laughlan", 1464 | "si422", 1465 | 0 1466 | ], 1467 | [ 1468 | "Katya", 1469 | "si422", 1470 | 0 1471 | ], 1472 | [ 1473 | "Kdi", 1474 | "si422", 1475 | 0 1476 | ], 1477 | [ 1478 | "Alekzander", 1479 | "si422", 1480 | 0 1481 | ], 1482 | [ 1483 | "Minaal", 1484 | "si422", 1485 | 0 1486 | ], 1487 | [ 1488 | "Moray", 1489 | "si422", 1490 | 0 1491 | ], 1492 | [ 1493 | "Marykate", 1494 | "si422", 1495 | 0 1496 | ], 1497 | [ 1498 | "Calla", 1499 | "si422", 1500 | 0 1501 | ], 1502 | [ 1503 | "Esha", 1504 | "si422", 1505 | 0 1506 | ], 1507 | [ 1508 | "Shanna", 1509 | "si422", 1510 | 0 1511 | ], 1512 | [ 1513 | "Fyfe", 1514 | "si422", 1515 | 0 1516 | ], 1517 | [ 1518 | "Marvellous", 1519 | "si422", 1520 | 0 1521 | ], 1522 | [ 1523 | "Tamar", 1524 | "si422", 1525 | 0 1526 | ], 1527 | [ 1528 | "Aeryn", 1529 | "si422", 1530 | 0 1531 | ], 1532 | [ 1533 | "Lmar", 1534 | "si422", 1535 | 0 1536 | ], 1537 | [ 1538 | "Rayane", 1539 | "si422", 1540 | 0 1541 | ], 1542 | [ 1543 | "Maizy", 1544 | "si422", 1545 | 0 1546 | ], 1547 | [ 1548 | "Atlanta", 1549 | "si422", 1550 | 0 1551 | ], 1552 | [ 1553 | "Medeeha", 1554 | "si422", 1555 | 0 1556 | ], 1557 | [ 1558 | "Nassir", 1559 | "si422", 1560 | 0 1561 | ], 1562 | [ 1563 | "Prabhjot", 1564 | "si422", 1565 | 0 1566 | ], 1567 | [ 1568 | "Kalia", 1569 | "si422", 1570 | 0 1571 | ], 1572 | [ 1573 | "Aimiee", 1574 | "si422", 1575 | 0 1576 | ], 1577 | [ 1578 | "Amgad", 1579 | "si422", 1580 | 0 1581 | ], 1582 | [ 1583 | "Nazlijan", 1584 | "si422", 1585 | 0 1586 | ], 1587 | [ 1588 | "Abbey", 1589 | "si422", 1590 | 0 1591 | ], 1592 | [ 1593 | "Berlin", 1594 | "si422", 1595 | 0 1596 | ], 1597 | [ 1598 | "Kruz", 1599 | "si422", 1600 | 0 1601 | ], 1602 | [ 1603 | "Chaela", 1604 | "si422", 1605 | 0 1606 | ], 1607 | [ 1608 | "Caelainn", 1609 | "si422", 1610 | 0 1611 | ], 1612 | [ 1613 | "Howard", 1614 | "si422", 1615 | 0 1616 | ], 1617 | [ 1618 | "Caethan", 1619 | "si422", 1620 | 0 1621 | ], 1622 | [ 1623 | "Johann", 1624 | "si422", 1625 | 0 1626 | ], 1627 | [ 1628 | "Aiadan", 1629 | "si422", 1630 | 0 1631 | ], 1632 | [ 1633 | "Dilraj", 1634 | "si422", 1635 | 0 1636 | ], 1637 | [ 1638 | "Ayren", 1639 | "si422", 1640 | 0 1641 | ], 1642 | [ 1643 | "Leyla", 1644 | "si422", 1645 | 0 1646 | ], 1647 | [ 1648 | "Rona", 1649 | "si422", 1650 | 0 1651 | ], 1652 | [ 1653 | "Kailin", 1654 | "si422", 1655 | 0 1656 | ], 1657 | [ 1658 | "Alina", 1659 | "si422", 1660 | 0 1661 | ], 1662 | [ 1663 | "Robertjohn", 1664 | "si422", 1665 | 0 1666 | ], 1667 | [ 1668 | "Janie", 1669 | "si430", 1670 | 1 1671 | ], 1672 | [ 1673 | "Finn", 1674 | "si430", 1675 | 0 1676 | ], 1677 | [ 1678 | "Jemma", 1679 | "si430", 1680 | 0 1681 | ], 1682 | [ 1683 | "Elvi", 1684 | "si430", 1685 | 0 1686 | ], 1687 | [ 1688 | "Eabha", 1689 | "si430", 1690 | 0 1691 | ], 1692 | [ 1693 | "Zachery", 1694 | "si430", 1695 | 0 1696 | ], 1697 | [ 1698 | "Gemima", 1699 | "si430", 1700 | 0 1701 | ], 1702 | [ 1703 | "Irza", 1704 | "si430", 1705 | 0 1706 | ], 1707 | [ 1708 | "James", 1709 | "si430", 1710 | 0 1711 | ], 1712 | [ 1713 | "Cooper", 1714 | "si430", 1715 | 0 1716 | ], 1717 | [ 1718 | "Akan", 1719 | "si430", 1720 | 0 1721 | ], 1722 | [ 1723 | "Rufus", 1724 | "si430", 1725 | 0 1726 | ], 1727 | [ 1728 | "Codi", 1729 | "si430", 1730 | 0 1731 | ], 1732 | [ 1733 | "Fawkes", 1734 | "si430", 1735 | 0 1736 | ], 1737 | [ 1738 | "Kodie", 1739 | "si430", 1740 | 0 1741 | ], 1742 | [ 1743 | "Mariena", 1744 | "si430", 1745 | 0 1746 | ], 1747 | [ 1748 | "Cohan", 1749 | "si430", 1750 | 0 1751 | ], 1752 | [ 1753 | "Boys", 1754 | "si430", 1755 | 0 1756 | ], 1757 | [ 1758 | "Takira", 1759 | "si430", 1760 | 0 1761 | ], 1762 | [ 1763 | "Avril", 1764 | "si430", 1765 | 0 1766 | ], 1767 | [ 1768 | "Joyce", 1769 | "si430", 1770 | 0 1771 | ], 1772 | [ 1773 | "Corbin", 1774 | "si430", 1775 | 0 1776 | ], 1777 | [ 1778 | "Kyan", 1779 | "si430", 1780 | 0 1781 | ], 1782 | [ 1783 | "Leyland", 1784 | "si430", 1785 | 0 1786 | ], 1787 | [ 1788 | "Derek", 1789 | "si430", 1790 | 0 1791 | ], 1792 | [ 1793 | "Erica", 1794 | "si430", 1795 | 0 1796 | ], 1797 | [ 1798 | "Bartlomiej", 1799 | "si430", 1800 | 0 1801 | ], 1802 | [ 1803 | "Denon", 1804 | "si430", 1805 | 0 1806 | ], 1807 | [ 1808 | "Brenna", 1809 | "si430", 1810 | 0 1811 | ], 1812 | [ 1813 | "Coupar", 1814 | "si430", 1815 | 0 1816 | ], 1817 | [ 1818 | "Taylor", 1819 | "si430", 1820 | 0 1821 | ], 1822 | [ 1823 | "Kaleigh", 1824 | "si430", 1825 | 0 1826 | ], 1827 | [ 1828 | "Abir", 1829 | "si430", 1830 | 0 1831 | ], 1832 | [ 1833 | "Angelina", 1834 | "si430", 1835 | 0 1836 | ], 1837 | [ 1838 | "Celik", 1839 | "si430", 1840 | 0 1841 | ], 1842 | [ 1843 | "Lauchlin", 1844 | "si430", 1845 | 0 1846 | ], 1847 | [ 1848 | "Jaymi", 1849 | "si430", 1850 | 0 1851 | ], 1852 | [ 1853 | "Vincent", 1854 | "si430", 1855 | 0 1856 | ], 1857 | [ 1858 | "Mirrin", 1859 | "si430", 1860 | 0 1861 | ], 1862 | [ 1863 | "Paris", 1864 | "si430", 1865 | 0 1866 | ], 1867 | [ 1868 | "Momina", 1869 | "si430", 1870 | 0 1871 | ], 1872 | [ 1873 | "Emillie", 1874 | "si430", 1875 | 0 1876 | ] 1877 | ] -------------------------------------------------------------------------------- /all-python-codes/retrieve-school-data/rosterdb.py: -------------------------------------------------------------------------------- 1 | import json 2 | import sqlite3 3 | 4 | conn = sqlite3.connect('rosterdb.sqlite') 5 | cur = conn.cursor() 6 | 7 | # Do some setup 8 | cur.executescript(''' 9 | DROP TABLE IF EXISTS User; 10 | DROP TABLE IF EXISTS Member; 11 | DROP TABLE IF EXISTS Course; 12 | 13 | CREATE TABLE User ( 14 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 15 | name TEXT UNIQUE 16 | ); 17 | 18 | CREATE TABLE Course ( 19 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 20 | title TEXT UNIQUE 21 | ); 22 | 23 | CREATE TABLE Member ( 24 | user_id INTEGER, 25 | course_id INTEGER, 26 | role INTEGER, 27 | PRIMARY KEY (user_id, course_id) 28 | ) 29 | ''') 30 | 31 | fname = input('Enter file name: ') 32 | if len(fname) < 1: 33 | fname = 'roster_data.json' 34 | 35 | # [ 36 | # [ "Charley", "si110", 1 ], 37 | # [ "Mea", "si110", 0 ], 38 | 39 | str_data = open(fname).read() 40 | json_data = json.loads(str_data) 41 | 42 | for entry in json_data: 43 | 44 | name = entry[0]; 45 | title = entry[1]; 46 | role = entry[2] 47 | row = cur.fetchone() 48 | 49 | print((name, title, role)) 50 | 51 | cur.execute('''INSERT OR IGNORE INTO User (name) 52 | VALUES ( ? )''', ( name, ) ) 53 | cur.execute('SELECT id FROM User WHERE name = ? ', (name, )) 54 | user_id = cur.fetchone()[0] 55 | 56 | cur.execute('''INSERT OR IGNORE INTO Course (title) 57 | VALUES ( ? )''', ( title, ) ) 58 | cur.execute('SELECT id FROM Course WHERE title = ? ', (title, )) 59 | course_id = cur.fetchone()[0] 60 | 61 | cur.execute('''INSERT OR REPLACE INTO Member 62 | (user_id, course_id, role) VALUES ( ?, ?, ?)''', 63 | ( user_id, course_id, role ) ) 64 | 65 | conn.commit() 66 | 67 | sqlstr =(''' 68 | SELECT User.name,Course.title, Member.role 69 | FROM User JOIN Member JOIN Course ON 70 | User.id = Member.user_id AND Member.course_id = Course.id 71 | ORDER BY User.name DESC, Course.title DESC, Member.role DESC LIMIT 2; 72 | ''') 73 | 74 | for row in cur.execute(sqlstr): 75 | print(str(row[0]), row[1], row[2]) 76 | test_statement = (''' 77 | SELECT 'XYZZY' || hex(User.name || Course.title || Member.role ) AS X FROM 78 | User JOIN Member JOIN Course 79 | ON User.id = Member.user_id AND Member.course_id = Course.id 80 | ORDER BY X LIMIT 1; 81 | ''') 82 | cur.execute(test_statement) 83 | result = cur.fetchone() 84 | print('RESULT: ' ,(result)) 85 | 86 | 87 | cur.close() 88 | -------------------------------------------------------------------------------- /all-python-codes/retrieve-school-data/rosters.py: -------------------------------------------------------------------------------- 1 | import json 2 | import sqlite3 3 | 4 | 5 | fname = input('Enter file name: ') 6 | if len(fname) < 1: 7 | fname = 'roster_data.json' 8 | 9 | # [ 10 | # [ "Charley", "si110", 1 ], 11 | # [ "Mea", "si110", 0 ], 12 | 13 | str_data = open(fname).read() 14 | json_data = json.loads(str_data) 15 | 16 | for entry in json_data: 17 | 18 | name = entry[0]; 19 | title = entry[1]; 20 | role = entry[2] 21 | row = cur.fetchone() 22 | 23 | print((name, title, role)) 24 | 25 | 26 | --------------------------------------------------------------------------------