מדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון
-
בס"ד
מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון
שימו לב- זה שיטה מאוד מסובכת בפעם הראשונה אבל חינמית יעילה ואוטומטית מאוד לאחר ההגדרה הראשונית
- זה מוריד מיוטיוב לפי הרשימה של הפלייליסט ספוטיפיי
- קרדיט . צ'אט GPT
1
דבר ראשון יש להתקין את פייתון. כנסו לכתובת https://www.python.org
כנסו ל downloads \ הורדות
תורידו ותתקינו עם הרשאת מנהל המערכת כולל כל האפשרויות
2
תכנסו לאתר של ספוטיפיי למפתחים בכתובת https://developer.spotify.com
תצטרפו לספוטיפיי למפתחים עם החשבון ספוטיפיי שלכם
ולאחר מכן כנסו לקישור
https://developer.spotify.com/dashboardלחץ על צור אפליקציה
בשם האפליקציה תכתבו מה שאתם רוצים
וכן בתיאור האפליקציה תכתבו מה שאתם רוצים.
לשורה כתובת URL להפניה מחדש תעתיקו את זה
http://localhost:8888/callback
ותדביקו בשורה כתובת URL להפניה מחדש
תלחצו על הוסף בשורה כתובת URL להפניה מחדש
ולמטה תלחצו save\להציל3
תחפשו באתחל CMD או שורת הפקודה ותפתחו
זה החלון שיפתחתעתיקו את השורה הבא : pip install spotipy ותדביקו בשורת הפקודה ולחצו ENTER (הבא)
יתחיל לרוץ שורות את ששורת הפקודה תגמור את ההתקנה
כשיחזור שוב שורה זאת c:\users\שם המשתמש שלכם
וכעת תעתיקו את השורה הבא : pip install yt-dlp בשורת הפקודה ולחצו ENTER (הבא)
יתחיל לרוץ שורות את ששורת הפקודה תגמור את ההתקנה4
תחפשו באתחל IDLE ותפתחו אותוכנסו ל file ושם כנסו ל new file
תעתיקו את הקטע קוד הבא
import spotipy from spotipy.oauth2 import SpotifyOAuth import json # הגדרות ספוטיפיי SPOTIPY_CLIENT_ID = 'הכנס מזהה לקוח' SPOTIPY_CLIENT_SECRET = 'הכנס סוד הלקוח' SPOTIPY_REDIRECT_URI = 'http://localhost:8888/callback' SCOPE = 'playlist-read-private' sp_oauth = SpotifyOAuth(SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI, scope=SCOPE) def get_playlist_tracks(playlist_uri): sp = spotipy.Spotify(auth_manager=sp_oauth) playlist_tracks = sp.playlist_tracks(playlist_uri) tracks = [] for item in playlist_tracks['items']: track = item['track'] track_info = f"{track['name']} - {track['artists'][0]['name']}" tracks.append(track_info) return tracks if __name__ == "__main__": playlist_uri = 'הכנס קישור לשיר או לפלייליסט' tracks = get_playlist_tracks(playlist_uri) with open('tracks.txt', 'w', encoding='utf-8') as f: for track in tracks: f.write(f"{track}\n") import yt_dlp import os def download_tracks(tracks_file, download_path): # יצירת תיקיית ההורדות אם לא קיימת if not os.path.exists(download_path): os.makedirs(download_path) with open(tracks_file, 'r', encoding='utf-8') as file: tracks = file.readlines() for track in tracks: track = track.strip() search_query = f"{track}" ydl_opts = { 'format': 'bestaudio/best', 'outtmpl': os.path.join(download_path, '%(title)s.%(ext)s'), 'default_search': 'ytsearch', } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download([search_query]) if __name__ == "__main__": download_path = 'הכניסו נתיב למקום הורדת הקבצים' # שנה לנתיב הרצוי שלך download_tracks('tracks.txt', download_path)
ותדביקו בחלון שנפתח (אחרי file. ו new file)
כנסו שוב לכתובת
https://developer.spotify.com/dashboard
כנסו לאפליקציה שיצרתם בשלב 3כנסו להגדרות
לחץ הצג סוד לקוח
תעתיקו את התוכן של מזהה לקוח ואת התוכן של סוד לקוח (מה שבתוך הריבוע בתמונה)
בקטע קוד הזה
# הגדרות ספוטיפיי SPOTIPY_CLIENT_ID = 'הכנס מזהה לקוח' SPOTIPY_CLIENT_SECRET = 'הכנס סוד הלקוח' SPOTIPY_REDIRECT_URI = 'http://localhost:8888/callback' SCOPE = 'playlist-read-private'
צריך לשנות את זה
את הכנס מזהה לקוח לשנות לתוכן של מזהה לקוח שהעתקנו לפני
שים לב שזה יהיה בתוך ' ' (גרש בודד משני הכיוונים)את הכנס סוד לקוח לשנות לתוכן של סוד לקוח שהעתקנו לפני
שים לב שזה יהיה בתוך ' ' (גרש בודד משני הכיוונים)בשורת הקוד הזה
**SPOTIPY_REDIRECT_URI = 'http://localhost:8888/callback**'
תבדוק שהכתובת שכתוב כאן זה אותו דבר בדיוק ממה שמופיע באפליקציה שבספוטיפיי למפתחים בשורה כתובת URL להפניה מחדש שים לב שזה יהיה בתוך ' ' (גרש בודד משני הכיוונים)
בקטע קוד הזה
if __name__ == "__main__": playlist_uri = 'הכנס קישור לשיר או לפלייליסט' tracks = get_playlist_tracks(playlist_uri) with open('tracks.txt', 'w', encoding='utf-8') as f: for track in tracks: f.write(f"{track}\n")
צריך לשנות את זה
את הכנס קישור לשיר או לפלייליסט לשנות לקישור של ספוטיפיי
(אבל איך מוצאים את הקישור?!)
איך מוצאים את הקישור לשיר או לפליייליסט של ספוטיפיי?
נכנסים לספוטיפיי נכנסים לשיר או לפלייליסטלוחצים ... (שלוש נקודות) שיתוף והעתקת הקישור שים לב שזה יהיה בתוך ' ' (גרש בודד משני הכיוונים)
בקטע קוד הזהif __name__ == "__main__": download_path = 'הכניסו נתיב למקום הורדת הקבצים' # שנה לנתיב הרצוי שלך download_tracks('tracks.txt', download_path)*
צריך לשנות את זה
את הכניסו נתיב למקום הורדת הקבצים לשנות לנתיב ההורדה
שימו לב! יש להפוך את ה סלשים זה מגיע כך \ וצריך לשנות את כולם ל /
(אבל איך כותבים נתיב?!)
איך כותבים נתיב? נכנסים בסייר הקבצים אל המקום הרצוילוחצים על השורה המסומנת ומעתיקים וזהו יש לכם נתיב
תלחצו F5 ותלחצו כן ותבחרו היכן לשמור את הקובץ קוד פייתון וזה ירוץ ויוריד את הקישור ששמתם במיקום ששמתם
בפעם הבא זה כבר פשוט נגשים לקובץ קוד פייתון מחליפים את הקישור ואת הנתיב ושוב F5 ומריצים והקישור ששמתם ירד למיקום ששמתם
-
@hartkhartk מדוע לא ליצור שורות קוד שיקבלו input מהמשתמש במקומות הנצרכים ולקמפל במקום לערוך כל פעם את הקובץ? (כוונתי לשאול האם זה חייב להשאר בקובץ py או שיכול לרוץ גם כexe)
@hartkhartk כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
קרדיט . צ'אט GPT
בדקת שזה עובד?
-
@hartkhartk מה הקשר יוטיוב לכל הנושא?
-
@hartkhartk יפה מאוד
האם נראה לך שיש אפשרות לעשות את ההורדה דרך GOOGLE SCRIPT כך שישלח לגוגל דרייב בדומה למה שעשה @מתלמד-צעיר בסקריפט המעולה שלו?
-
@יאנג-בוי כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@hartkhartk מה הקשר יוטיוב לכל הנושא?
מה שמוזר שבכל הקוד הוא לא משתמש בספריה yt-dlp שהיא לכאורה ה'קשר' ליוטיוב... (לפחות אני לא מצאתי בקוד...)
-
@2580 כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@hartkhartk מדוע לא ליצור שורות קוד שיקבלו input מהמשתמש במקומות הנצרכים ולקמפל במקום לערוך כל פעם את הקובץ? (כוונתי לשאול האם זה חייב להשאר בקובץ py או שיכול לרוץ גם כexe)
@hartkhartk כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
קרדיט . צ'אט GPT
בדקת שזה עובד?
כן בהתחלה. משום מה אחרי הפירסום כאן זה הפסיק לעבוד אני מנסה לבדוק מה הבעייה
-
@יאנג-בוי כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@hartkhartk מה הקשר יוטיוב לכל הנושא?
כי להוריד ישירות מספוטיפיי זה לא חוקי אז הוא לוקח שם של שיר מספוטיפיי ומחפש אותו ביוטיוב
-
@hartkhartk אבל
@2580 כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@יאנג-בוי כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@hartkhartk מה הקשר יוטיוב לכל הנושא?
מה שמוזר שבכל הקוד הוא לא משתמש בספריה yt-dlp שהיא לכאורה ה'קשר' ליוטיוב... (לפחות אני לא מצאתי בקוד...)
אולי לכן זה לא עובד?
-
@יוסף-אלחנן כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@יאנג-בוי
זהו, שאתה צריך לתייג את GPT לשאלה הזו...
זה לא היה אוקוס פוקוס כמו שחושבים זה לקח לי כמה שעות של ישיבה מול GPT
-
אההה אז לכאורה זה לא כ"כ נקרא של GPT (המון מפתחים משתמשים בGPT לכתיבת ועריכת חלקים מהקוד...)
-
@hartkhartk כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
import yt_dlp
זה עמוק בתוכו אבל קיים
-
@צדיק-תמים @hartkhartk מצאתי אכן קיים... (בד"כ מייבאים את הספריות בהתחלה... ולא עברתי על כל הקוד מילה במילה לכן לא מצאתי...)
-
@2580 כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@hartkhartk אבל
@2580 כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@יאנג-בוי כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
@hartkhartk מה הקשר יוטיוב לכל הנושא?
מה שמוזר שבכל הקוד הוא לא משתמש בספריה yt-dlp שהיא לכאורה ה'קשר' ליוטיוב... (לפחות אני לא מצאתי בקוד...)
אולי לכן זה לא עובד?
חברים! זה חזר לעבוד! אני כבר עורך את המדריך ומחדש את הקוד
-
@hartkhartk חברים אני כבר לא יכול לערוך את הפוסט אבל זה הקוד המעודכן שעובד
import spotipy from spotipy.oauth2 import SpotifyOAuth import json # הגדרות ספוטיפיי SPOTIPY_CLIENT_ID = 'הכנס מזהה לקוח' SPOTIPY_CLIENT_SECRET = 'הכנס סוד לקוח' SPOTIPY_REDIRECT_URI = 'http://localhost:8888/callback' SCOPE = 'playlist-read-private' sp_oauth = SpotifyOAuth(SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI, scope=SCOPE) def get_playlist_tracks(playlist_uri): sp = spotipy.Spotify(auth_manager=sp_oauth) playlist_tracks = sp.playlist_tracks(playlist_uri) tracks = [] for item in playlist_tracks['items']: track = item['track'] track_info = f"{track['name']} - {track['artists'][0]['name']}" tracks.append(track_info) return tracks if __name__ == "__main__": playlist_uri = 'הכנס קישור לספוטיפיי' tracks = get_playlist_tracks(playlist_uri) with open('tracks.txt', 'w', encoding='utf-8') as f: for track in tracks: f.write(f"{track}\n") import yt_dlp import os def download_tracks(tracks_file, download_path): # יצירת תיקיית ההורדות אם לא קיימת if not os.path.exists(download_path): os.makedirs(download_path) with open(tracks_file, 'r', encoding='utf-8') as file: tracks = file.readlines() for track in tracks: track = track.strip() search_query = f"{track}" ydl_opts = { 'format': 'bestaudio/best', 'outtmpl': os.path.join(download_path, '%(title)s.%(ext)s'), 'default_search': 'ytsearch', } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download([search_query]) if __name__ == "__main__": download_path = 'הכנס נתיב להורדת הקבצים' # שנה לנתיב הרצוי שלך download_tracks('tracks.txt', download_path)
-
עיצבן אותו המבנה של הקוד, אז שיניתי אותו קצת, לא בדקתי אם זה עובד
import spotipy from spotipy.oauth2 import SpotifyOAuth import yt_dlp import os # הגדרות download_path = 'הכניסו נתיב למקום הורדת הקבצים' # שנה לנתיב הרצוי שלך playlist_uri = input("הכנס קישור לשיר או לפלייליסט\n") SPOTIPY_CLIENT_ID = 'הכנס מזהה לקוח' SPOTIPY_CLIENT_SECRET = 'הכנס סוד הלקוח' SPOTIPY_REDIRECT_URI = 'http://localhost:8888/callback' SCOPE = 'playlist-read-private' sp_oauth = SpotifyOAuth(SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI, scope=SCOPE) def get_playlist_tracks(playlist_uri): sp = spotipy.Spotify(auth_manager=sp_oauth) playlist_tracks = sp.playlist_tracks(playlist_uri) tracks = [] for item in playlist_tracks['items']: track = item['track'] track_info = f"{track['name']} - {track['artists'][0]['name']}" tracks.append(track_info) return tracks def download_tracks(tracks, download_path): for track in tracks: track = track.strip() search_query = f"{track}" ydl_opts = { 'format': 'bestaudio/best', 'outtmpl': os.path.join(download_path, '%(title)s.%(ext)s'), 'default_search': 'ytsearch', } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download([search_query]) if __name__ == "__main__": tracks = get_playlist_tracks(playlist_uri) os.makedirs(download_path, exist_ok=True) download_tracks(tracks, download_path)
-
וזה ליוטיוב ללא צורך בפיתון.
@echo off setlocal :: Check if yt-dlp.exe exists in the current directory if not exist yt-dlp.exe ( echo yt-dlp.exe not found. echo Downloading yt-dlp... :: Download yt-dlp.exe powershell -Command "Invoke-WebRequest -Uri 'https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe' -OutFile 'yt-dlp.exe'" :: Check if download was successful if not exist yt-dlp.exe ( echo Failed to download yt-dlp.exe. Exiting. exit /b 1 ) :: Move yt-dlp.exe to user's Downloads folder move /Y yt-dlp.exe "%USERPROFILE%\Downloads\yt-dlp.exe" :: Show popup info box mshta.exe "javascript:alert('yt-dlp.exe has been downloaded successfully! Credit @AngryAdminShmuel');window.close();" ) :: Prompt for YouTube playlist URL set /p playlistURL=Enter the YouTube playlist URL: :: Define the output directory and file name pattern set "output=Downloads\%(playlist_title)s\%(title)s.%(ext)s" :: Run yt-dlp to download the playlist yt-dlp --yes-playlist --output "%output%" "%playlistURL%" :: Check the success of the download if %ERRORLEVEL% equ 0 ( :: Flash green if successful echo Download successful! echo. echo [42m[97mSuccess[0m ) else ( :: Display error message if download fails echo Download failed. ) endlocal pause