diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3c44241 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..3b4920c --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +CLIENT_ID="YOUR_CLIENT_ID" +CLIENT_SECRET="YOUR_CLIENT_SECRET" diff --git a/.github/workflows/optimize-and-deploy.yml b/.github/workflows/optimize-and-deploy.yml new file mode 100644 index 0000000..5ea1c42 --- /dev/null +++ b/.github/workflows/optimize-and-deploy.yml @@ -0,0 +1,39 @@ +name: Optimize and Deploy + +on: + push: + branches: + - main + +jobs: + optimize: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y webp librsvg2-bin + + - name: Optimization + run: | + chmod +x optimize.sh + ./optimize.sh -i src/albums -h 600 -q 100 -o out + ./optimize.sh -i src/artists -h 300 -q 100 -o out + + - name: Deploy + run: | + sudo chown -R $(whoami):$(whoami) . + git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com" + git config --global user.name "$GITHUB_ACTOR" + cp -r out/* /tmp + cd /tmp + git init + git branch -M gh-pages + git add . + git commit -m "Optimize images" + git remote add origin "https://$GITHUB_ACTOR:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY" + git push -f origin gh-pages diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2217a41 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +venv diff --git a/download.py b/download.py new file mode 100644 index 0000000..3801a89 --- /dev/null +++ b/download.py @@ -0,0 +1,138 @@ +import os +import re +import requests +from unidecode import unidecode + +from dotenv import load_dotenv +load_dotenv() + +client_id = os.getenv('CLIENT_ID') +client_secret = os.getenv('CLIENT_SECRET') + +auth_response = requests.post('https://accounts.spotify.com/api/token', { + 'grant_type': 'client_credentials', + 'client_id': client_id, + 'client_secret': client_secret, +}) + +auth_response_data = auth_response.json() + +try: + access_token = auth_response_data['access_token'] +except KeyError: + print('Authentication failed.') + exit(1) + +headers = { + 'Authorization': f'Bearer {access_token}', +} + + +def main(): + while True: + print('1 - Track') + print('2 - Artist') + print('3 - Exit') + + try: + option = int(input('Option: ')) + except ValueError: + print('Invalid option') + continue + + match option: + case 1: + download_album_image(input('Track: '), 'albums') + case 2: + download_artist_image(input('Artist: '), 'artists') + case 3: + exit(0) + case _: + print('Invalid option') + + +def download_album_image(track_name, output_dir): + search_response = requests.get( + 'https://api.spotify.com/v1/search', + headers=headers, + params={ + 'q': track_name, + 'type': 'track', + 'limit': 1 + } + ) + + search_data = search_response.json() + + try: + album = search_data['tracks']['items'][0]['album'] + image_url = album['images'][0]['url'] + album_name = album['name'] + except (KeyError, IndexError): + print(f'No album image found for track: {track_name}') + return + + filename = jpeg_filename(album_name) + save_path = os.path.join(output_dir, filename) + + if not os.path.exists(save_path): + response = requests.get(image_url) + if response.status_code == 200: + os.makedirs(output_dir, exist_ok=True) + with open(save_path, 'wb') as file: + file.write(response.content) + print(f'{filename} download completed.') + else: + print(f'Failed to download image for track: {track_name}') + else: + print(f'{filename} already exists.') + + +def download_artist_image(artist_name, output_dir): + filename = jpeg_filename(artist_name) + save_path = os.path.join(output_dir, filename) + + if not os.path.exists(save_path): + search_response = requests.get( + 'https://api.spotify.com/v1/search', + headers=headers, + params={ + 'q': artist_name, + 'type': 'artist', + 'limit': 1 + } + ) + + search_data = search_response.json() + + try: + image_url = search_data['artists']['items'][0]['images'][0]['url'] + artist_name = search_data['artists']['items'][0]['name'] + except (KeyError, IndexError): + print(f'No image found for artist: {artist_name}') + return + + response = requests.get(image_url) + if response.status_code == 200: + os.makedirs(output_dir, exist_ok=True) + with open(save_path, 'wb') as file: + file.write(response.content) + print(f'{filename} download completed.') + else: + print(f'Failed to download image for artist: {artist_name}') + else: + print(f'{filename} already exists.') + + +def jpeg_filename(name): + return f'{snake_case(name)}.jpeg' + + +def snake_case(text): + text = unidecode(text.strip().lower()) + text = re.sub(r'\s+', '_', text) + return re.sub(r'[^\w_]', '', text) + + +if __name__ == '__main__': + main() diff --git a/optimize.sh b/optimize.sh new file mode 100755 index 0000000..2405795 --- /dev/null +++ b/optimize.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +TEMP_DIR=temp +INPUT_DIR=src +OUTPUT_DIR=out + +WIDTH=0 +HEIGHT=300 +IMAGE_QUALITY=100 + +while getopts "i:o:w:h:q:" opt; do + case ${opt} in + i ) + INPUT_DIR=$OPTARG + ;; + o ) + OUTPUT_DIR=$OPTARG + ;; + w ) + WIDTH=$OPTARG + ;; + h ) + HEIGHT=$OPTARG + ;; + q ) + IMAGE_QUALITY=$OPTARG + ;; + \? ) + echo "Usage: ./optimize.sh [-i input_dir] [-o output_dir] [-w width] [-h height] [-q image_quality]" + exit 1 + ;; + esac +done + +rm -rf "$TEMP_DIR" +mkdir -p "$OUTPUT_DIR" + +mkdir "$TEMP_DIR" +cp -r "$INPUT_DIR"/* "$TEMP_DIR" + +optimize_image() { + local input_file="$1" + local output_file="$2" + cwebp -q "$IMAGE_QUALITY" -m 6 -sharpness 0 -noalpha -resize "$WIDTH" "$HEIGHT" -quiet "$input_file" -o "$output_file" +} + +convert_svg_to_webp() { + local input_file="$1" + local output_file="$2" + local temp_png="${output_file}.png" + rsvg-convert -o "$temp_png" "$input_file" + optimize_image "$temp_png" "$output_file" + rm "$temp_png" +} + +optimize_webp() { + local input_file="$1" + local output_file="$2" + local temp_output="${output_file}.temp" + + if webpmux -info "$input_file" 2>&1 | grep -q "No. of frames: 1"; then + optimize_image "$input_file" "$temp_output" + else + gif2webp -q "$IMAGE_QUALITY" "$input_file" -o "$temp_output" + fi + + local original_size=$(stat -c %s "$input_file") + local new_size=$(stat -c %s "$temp_output") + + if (( new_size < original_size )); then + mv "$temp_output" "$output_file" + echo "Optimized: $input_file -> $output_file (reduced size from $original_size to $new_size)" + else + rm "$temp_output" + cp "$input_file" "$output_file" + echo "Copied without change: $input_file -> $output_file" + fi +} + +file_exists_in_output() { + local input_file="$1" + local filename=$(basename "$input_file") + [ -f "$OUTPUT_DIR/$filename" ] +} + +process_images() { + for img in "$TEMP_DIR"/*.{jpg,jpeg,png}; do + [ -f "$img" ] || continue + filename=$(basename "$img" .${img##*.}) + output_file="$OUTPUT_DIR/$filename.webp" + if ! file_exists_in_output "$output_file"; then + optimize_image "$img" "$output_file" + echo "Converted: $img -> $output_file" + fi + done +} + +process_svgs() { + for svg in "$TEMP_DIR"/*.svg; do + [ -f "$svg" ] || continue + filename=$(basename "$svg" .svg) + output_file="$OUTPUT_DIR/$filename.webp" + if ! file_exists_in_output "$output_file"; then + convert_svg_to_webp "$svg" "$output_file" + echo "Converted: $svg -> $output_file" + fi + done +} + +process_webps() { + for webp in "$TEMP_DIR"/*.webp; do + [ -f "$webp" ] || continue + filename=$(basename "$webp" .webp) + output_file="$OUTPUT_DIR/$filename.webp" + if ! file_exists_in_output "$output_file"; then + optimize_webp "$webp" "$output_file" + fi + done +} + +process_images +process_svgs +process_webps + +find "$TEMP_DIR" -type f ! -name '*.jpg' ! -name '*.jpeg' ! -name '*.png' ! -name '*.svg' -exec cp -v {} "$OUTPUT_DIR/" \; + +files_count=$(find "$INPUT_DIR" -type f | wc -l) +echo "$files_count files in $INPUT_DIR" + +total=$(find "$OUTPUT_DIR" -type f | wc -l) +echo "Total: $total files in $OUTPUT_DIR" + +rm -rf "$TEMP_DIR" + +echo "Optimization completed." diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0bd69fb --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +requests==2.32.3 +unidecode==1.3.8 +python-dotenv==1.0.1 diff --git a/src/albums/21.jpeg b/src/albums/21.jpeg new file mode 100644 index 0000000..59a3631 Binary files /dev/null and b/src/albums/21.jpeg differ diff --git a/src/albums/24k_magic.jpeg b/src/albums/24k_magic.jpeg new file mode 100644 index 0000000..99329e4 Binary files /dev/null and b/src/albums/24k_magic.jpeg differ diff --git a/src/albums/25.jpeg b/src/albums/25.jpeg new file mode 100644 index 0000000..4128b1d Binary files /dev/null and b/src/albums/25.jpeg differ diff --git a/src/albums/after_hours.jpeg b/src/albums/after_hours.jpeg new file mode 100644 index 0000000..6c1fe25 Binary files /dev/null and b/src/albums/after_hours.jpeg differ diff --git a/src/albums/alone.jpeg b/src/albums/alone.jpeg new file mode 100644 index 0000000..1bef380 Binary files /dev/null and b/src/albums/alone.jpeg differ diff --git a/src/albums/am.jpeg b/src/albums/am.jpeg new file mode 100644 index 0000000..756561c Binary files /dev/null and b/src/albums/am.jpeg differ diff --git a/src/albums/an_evening_with_silk_sonic.jpeg b/src/albums/an_evening_with_silk_sonic.jpeg new file mode 100644 index 0000000..c563674 Binary files /dev/null and b/src/albums/an_evening_with_silk_sonic.jpeg differ diff --git a/src/albums/beauty_behind_the_madness.jpeg b/src/albums/beauty_behind_the_madness.jpeg new file mode 100644 index 0000000..0a8ef5d Binary files /dev/null and b/src/albums/beauty_behind_the_madness.jpeg differ diff --git a/src/albums/billionaire_feat_bruno_mars.jpeg b/src/albums/billionaire_feat_bruno_mars.jpeg new file mode 100644 index 0000000..e5fde90 Binary files /dev/null and b/src/albums/billionaire_feat_bruno_mars.jpeg differ diff --git a/src/albums/bob_presents_the_adventures_of_bobby_ray.jpeg b/src/albums/bob_presents_the_adventures_of_bobby_ray.jpeg new file mode 100644 index 0000000..82247b1 Binary files /dev/null and b/src/albums/bob_presents_the_adventures_of_bobby_ray.jpeg differ diff --git a/src/albums/changes.jpeg b/src/albums/changes.jpeg new file mode 100644 index 0000000..e7f4d75 Binary files /dev/null and b/src/albums/changes.jpeg differ diff --git a/src/albums/dawn_fm.jpeg b/src/albums/dawn_fm.jpeg new file mode 100644 index 0000000..6434f08 Binary files /dev/null and b/src/albums/dawn_fm.jpeg differ diff --git a/src/albums/deluxe.jpeg b/src/albums/deluxe.jpeg new file mode 100644 index 0000000..86612d4 Binary files /dev/null and b/src/albums/deluxe.jpeg differ diff --git a/src/albums/die_for_you_remix.jpeg b/src/albums/die_for_you_remix.jpeg new file mode 100644 index 0000000..8580acb Binary files /dev/null and b/src/albums/die_for_you_remix.jpeg differ diff --git a/src/albums/divinely_uninspired_to_a_hellish_extent.jpeg b/src/albums/divinely_uninspired_to_a_hellish_extent.jpeg new file mode 100644 index 0000000..e20e3b4 Binary files /dev/null and b/src/albums/divinely_uninspired_to_a_hellish_extent.jpeg differ diff --git a/src/albums/divinely_uninspired_to_a_hellish_extent_extended_edition.jpeg b/src/albums/divinely_uninspired_to_a_hellish_extent_extended_edition.jpeg new file mode 100644 index 0000000..c26393d Binary files /dev/null and b/src/albums/divinely_uninspired_to_a_hellish_extent_extended_edition.jpeg differ diff --git a/src/albums/doowops__hooligans.jpeg b/src/albums/doowops__hooligans.jpeg new file mode 100644 index 0000000..7d6923c Binary files /dev/null and b/src/albums/doowops__hooligans.jpeg differ diff --git a/src/albums/easy_on_me.jpeg b/src/albums/easy_on_me.jpeg new file mode 100644 index 0000000..556ed95 Binary files /dev/null and b/src/albums/easy_on_me.jpeg differ diff --git a/src/albums/favourite_worst_nightmare_standard_version.jpeg b/src/albums/favourite_worst_nightmare_standard_version.jpeg new file mode 100644 index 0000000..b98ab9a Binary files /dev/null and b/src/albums/favourite_worst_nightmare_standard_version.jpeg differ diff --git a/src/albums/fck_love_3_over_you.jpeg b/src/albums/fck_love_3_over_you.jpeg new file mode 100644 index 0000000..b38fce5 Binary files /dev/null and b/src/albums/fck_love_3_over_you.jpeg differ diff --git a/src/albums/finesse.jpeg b/src/albums/finesse.jpeg new file mode 100644 index 0000000..da4daa8 Binary files /dev/null and b/src/albums/finesse.jpeg differ diff --git a/src/albums/hear_me_now_feat_zeeba.jpeg b/src/albums/hear_me_now_feat_zeeba.jpeg new file mode 100644 index 0000000..560fc1d Binary files /dev/null and b/src/albums/hear_me_now_feat_zeeba.jpeg differ diff --git a/src/albums/heroes__villains.jpeg b/src/albums/heroes__villains.jpeg new file mode 100644 index 0000000..119d3bb Binary files /dev/null and b/src/albums/heroes__villains.jpeg differ diff --git a/src/albums/heroes_tonight.jpeg b/src/albums/heroes_tonight.jpeg new file mode 100644 index 0000000..ec53c63 Binary files /dev/null and b/src/albums/heroes_tonight.jpeg differ diff --git a/src/albums/hopes_and_fears_deluxe_edition.jpeg b/src/albums/hopes_and_fears_deluxe_edition.jpeg new file mode 100644 index 0000000..8a12785 Binary files /dev/null and b/src/albums/hopes_and_fears_deluxe_edition.jpeg differ diff --git a/src/albums/i_love_you.jpeg b/src/albums/i_love_you.jpeg new file mode 100644 index 0000000..e9508bc Binary files /dev/null and b/src/albums/i_love_you.jpeg differ diff --git a/src/albums/it_will_rain.jpeg b/src/albums/it_will_rain.jpeg new file mode 100644 index 0000000..8016775 Binary files /dev/null and b/src/albums/it_will_rain.jpeg differ diff --git a/src/albums/justice.jpeg b/src/albums/justice.jpeg new file mode 100644 index 0000000..28e263f Binary files /dev/null and b/src/albums/justice.jpeg differ diff --git a/src/albums/konvicted.jpeg b/src/albums/konvicted.jpeg new file mode 100644 index 0000000..c27875a Binary files /dev/null and b/src/albums/konvicted.jpeg differ diff --git a/src/albums/ladies_and_gentlemen_the_best_of_george_michael.jpeg b/src/albums/ladies_and_gentlemen_the_best_of_george_michael.jpeg new file mode 100644 index 0000000..6539e68 Binary files /dev/null and b/src/albums/ladies_and_gentlemen_the_best_of_george_michael.jpeg differ diff --git a/src/albums/making_mirrors.jpeg b/src/albums/making_mirrors.jpeg new file mode 100644 index 0000000..e424d7f Binary files /dev/null and b/src/albums/making_mirrors.jpeg differ diff --git a/src/albums/moves_like_jagger.jpeg b/src/albums/moves_like_jagger.jpeg new file mode 100644 index 0000000..616594b Binary files /dev/null and b/src/albums/moves_like_jagger.jpeg differ diff --git a/src/albums/my_dear_melancholy.jpeg b/src/albums/my_dear_melancholy.jpeg new file mode 100644 index 0000000..f4220a7 Binary files /dev/null and b/src/albums/my_dear_melancholy.jpeg differ diff --git a/src/albums/my_world_20.jpeg b/src/albums/my_world_20.jpeg new file mode 100644 index 0000000..a9b6ea3 Binary files /dev/null and b/src/albums/my_world_20.jpeg differ diff --git a/src/albums/never_let_me_go.jpeg b/src/albums/never_let_me_go.jpeg new file mode 100644 index 0000000..0ad483e Binary files /dev/null and b/src/albums/never_let_me_go.jpeg differ diff --git a/src/albums/on__on.jpeg b/src/albums/on__on.jpeg new file mode 100644 index 0000000..9e4a1df Binary files /dev/null and b/src/albums/on__on.jpeg differ diff --git a/src/albums/pablo_honey.jpeg b/src/albums/pablo_honey.jpeg new file mode 100644 index 0000000..ce2d94e Binary files /dev/null and b/src/albums/pablo_honey.jpeg differ diff --git a/src/albums/purpose_deluxe.jpeg b/src/albums/purpose_deluxe.jpeg new file mode 100644 index 0000000..0ed9cdc Binary files /dev/null and b/src/albums/purpose_deluxe.jpeg differ diff --git a/src/albums/save_your_tears_remix.jpeg b/src/albums/save_your_tears_remix.jpeg new file mode 100644 index 0000000..593ec05 Binary files /dev/null and b/src/albums/save_your_tears_remix.jpeg differ diff --git a/src/albums/shes_so_unusual.jpeg b/src/albums/shes_so_unusual.jpeg new file mode 100644 index 0000000..0d017f5 Binary files /dev/null and b/src/albums/shes_so_unusual.jpeg differ diff --git a/src/albums/shine.jpeg b/src/albums/shine.jpeg new file mode 100644 index 0000000..7a84c26 Binary files /dev/null and b/src/albums/shine.jpeg differ diff --git a/src/albums/skyfall.jpeg b/src/albums/skyfall.jpeg new file mode 100644 index 0000000..ede42e6 Binary files /dev/null and b/src/albums/skyfall.jpeg differ diff --git a/src/albums/starboy.jpeg b/src/albums/starboy.jpeg new file mode 100644 index 0000000..237d730 Binary files /dev/null and b/src/albums/starboy.jpeg differ diff --git a/src/albums/symbolism.jpeg b/src/albums/symbolism.jpeg new file mode 100644 index 0000000..825ff6b Binary files /dev/null and b/src/albums/symbolism.jpeg differ diff --git a/src/albums/the_2020_experience_deluxe_version.jpeg b/src/albums/the_2020_experience_deluxe_version.jpeg new file mode 100644 index 0000000..c41335a Binary files /dev/null and b/src/albums/the_2020_experience_deluxe_version.jpeg differ diff --git a/src/albums/trolls_original_motion_picture_soundtrack.jpeg b/src/albums/trolls_original_motion_picture_soundtrack.jpeg new file mode 100644 index 0000000..cad78b0 Binary files /dev/null and b/src/albums/trolls_original_motion_picture_soundtrack.jpeg differ diff --git a/src/albums/trouble.jpeg b/src/albums/trouble.jpeg new file mode 100644 index 0000000..90af273 Binary files /dev/null and b/src/albums/trouble.jpeg differ diff --git a/src/albums/true_colors.jpeg b/src/albums/true_colors.jpeg new file mode 100644 index 0000000..598b396 Binary files /dev/null and b/src/albums/true_colors.jpeg differ diff --git a/src/albums/unorthodox_jukebox.jpeg b/src/albums/unorthodox_jukebox.jpeg new file mode 100644 index 0000000..f751cc0 Binary files /dev/null and b/src/albums/unorthodox_jukebox.jpeg differ diff --git a/src/albums/uptown_special.jpeg b/src/albums/uptown_special.jpeg new file mode 100644 index 0000000..57644be Binary files /dev/null and b/src/albums/uptown_special.jpeg differ diff --git a/src/albums/v.jpeg b/src/albums/v.jpeg new file mode 100644 index 0000000..be67b5b Binary files /dev/null and b/src/albums/v.jpeg differ diff --git a/src/albums/versace_on_the_floor.jpeg b/src/albums/versace_on_the_floor.jpeg new file mode 100644 index 0000000..439be74 Binary files /dev/null and b/src/albums/versace_on_the_floor.jpeg differ diff --git a/src/albums/whenever_you_need_somebody.jpeg b/src/albums/whenever_you_need_somebody.jpeg new file mode 100644 index 0000000..c64f10a Binary files /dev/null and b/src/albums/whenever_you_need_somebody.jpeg differ diff --git a/src/albums/x_deluxe_edition.jpeg b/src/albums/x_deluxe_edition.jpeg new file mode 100644 index 0000000..860fac9 Binary files /dev/null and b/src/albums/x_deluxe_edition.jpeg differ diff --git a/src/albums/xscape.jpeg b/src/albums/xscape.jpeg new file mode 100644 index 0000000..948f775 Binary files /dev/null and b/src/albums/xscape.jpeg differ diff --git a/src/artists/adele.jpeg b/src/artists/adele.jpeg new file mode 100644 index 0000000..ca0847e Binary files /dev/null and b/src/artists/adele.jpeg differ diff --git a/src/artists/akon.jpeg b/src/artists/akon.jpeg new file mode 100644 index 0000000..392c6fe Binary files /dev/null and b/src/artists/akon.jpeg differ diff --git a/src/artists/alok.jpeg b/src/artists/alok.jpeg new file mode 100644 index 0000000..8e75ac5 Binary files /dev/null and b/src/artists/alok.jpeg differ diff --git a/src/artists/arctic_monkeys.jpeg b/src/artists/arctic_monkeys.jpeg new file mode 100644 index 0000000..547797a Binary files /dev/null and b/src/artists/arctic_monkeys.jpeg differ diff --git a/src/artists/bruno_mars.jpeg b/src/artists/bruno_mars.jpeg new file mode 100644 index 0000000..d5b2009 Binary files /dev/null and b/src/artists/bruno_mars.jpeg differ diff --git a/src/artists/cyndi_lauper.jpeg b/src/artists/cyndi_lauper.jpeg new file mode 100644 index 0000000..593b866 Binary files /dev/null and b/src/artists/cyndi_lauper.jpeg differ diff --git a/src/artists/ed_sheeran.jpeg b/src/artists/ed_sheeran.jpeg new file mode 100644 index 0000000..d538868 Binary files /dev/null and b/src/artists/ed_sheeran.jpeg differ diff --git a/src/artists/george_michael.jpeg b/src/artists/george_michael.jpeg new file mode 100644 index 0000000..bc69a8d Binary files /dev/null and b/src/artists/george_michael.jpeg differ diff --git a/src/artists/gotye.jpeg b/src/artists/gotye.jpeg new file mode 100644 index 0000000..3842565 Binary files /dev/null and b/src/artists/gotye.jpeg differ diff --git a/src/artists/justin_bieber.jpeg b/src/artists/justin_bieber.jpeg new file mode 100644 index 0000000..bb40c69 Binary files /dev/null and b/src/artists/justin_bieber.jpeg differ diff --git a/src/artists/justin_timberlake.jpeg b/src/artists/justin_timberlake.jpeg new file mode 100644 index 0000000..5d6753a Binary files /dev/null and b/src/artists/justin_timberlake.jpeg differ diff --git a/src/artists/keane.jpeg b/src/artists/keane.jpeg new file mode 100644 index 0000000..3c4f880 Binary files /dev/null and b/src/artists/keane.jpeg differ diff --git a/src/artists/lewis_capaldi.jpeg b/src/artists/lewis_capaldi.jpeg new file mode 100644 index 0000000..75b9423 Binary files /dev/null and b/src/artists/lewis_capaldi.jpeg differ diff --git a/src/artists/maroon_5.jpeg b/src/artists/maroon_5.jpeg new file mode 100644 index 0000000..3f59c25 Binary files /dev/null and b/src/artists/maroon_5.jpeg differ diff --git a/src/artists/marshmello.jpeg b/src/artists/marshmello.jpeg new file mode 100644 index 0000000..13f05de Binary files /dev/null and b/src/artists/marshmello.jpeg differ diff --git a/src/artists/no_copyright_music_sounds.jpeg b/src/artists/no_copyright_music_sounds.jpeg new file mode 100644 index 0000000..2cecdf1 Binary files /dev/null and b/src/artists/no_copyright_music_sounds.jpeg differ diff --git a/src/artists/nocopyrightsounds.jpeg b/src/artists/nocopyrightsounds.jpeg new file mode 100644 index 0000000..2cecdf1 Binary files /dev/null and b/src/artists/nocopyrightsounds.jpeg differ diff --git a/src/artists/radiohead.jpeg b/src/artists/radiohead.jpeg new file mode 100644 index 0000000..698d526 Binary files /dev/null and b/src/artists/radiohead.jpeg differ diff --git a/src/artists/rick_astley.jpeg b/src/artists/rick_astley.jpeg new file mode 100644 index 0000000..7f41b6b Binary files /dev/null and b/src/artists/rick_astley.jpeg differ diff --git a/src/artists/the_neighbourhood.jpeg b/src/artists/the_neighbourhood.jpeg new file mode 100644 index 0000000..6affc8b Binary files /dev/null and b/src/artists/the_neighbourhood.jpeg differ diff --git a/src/artists/the_weeknd.jpeg b/src/artists/the_weeknd.jpeg new file mode 100644 index 0000000..dad8430 Binary files /dev/null and b/src/artists/the_weeknd.jpeg differ