מדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון
-
@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
-
חחחח גוגל טרנסלייט מתרגם גם סלנג...
התלבטתי אם לכתוב מקודם "זה קובץ BAT יעני?" אבל ויתרתי...
עריכה:
פשוט הצחיק אותי שכתבת ייפ (או באנגלית YUP) ואנחנו דוברי העברית צריכים להבין (תכלס' הבנתי אבל...) ואז עוד יותר הצחיק אותי שהטרנסלייט מתרגם את זה ל'כן' (הצילום מסך היה אחרי התרגום...) -
אחי ברצינות חשבת שאני לא יודע להגיד כן בעברית?! הוספתי את האימוג'י בעצמי. בנוסף Google translate מבאס, אני עורך כל פוסט אחרי התרגום. כמו כן, אני משתמש באפליקציית mitmachim שאין לה Google translate. אני יכול להבין עברית אבל לא יכול לדבר שוטף
-
@hartkhartk כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
זה לא היה אוקוס פוקוס כמו שחושבים זה לקח לי כמה שעות של ישיבה מול GPT
מתנצל...
חשבתי שהעתקת את זה בלי לחשוב או לנסות...
לצערינו, יש הרבה כאלו... -
@יוסף-אלחנן
לא. וגם הסקריפט השני של python לא עובד עם נטפרי. (למיטב ידעתי. יכול להיות שאני טועה.) -
@TripleU כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
וגם הסקריפט השני של python לא עובד עם נטפרי.
של ספוטיפיי?
בטח... -
@יוסף-אלחנן
אוץ' -
@TripleU ברור לכן גם אותו לא ניסיתי
@יוסף-אלחנן כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:
הוא נותן לי שגיאת SSL
נראה לי זה שגיאה של תעודת אבטחה...
-
@2580 לאוו דווקא תעודה, אלא הרבה דברים שקשורים לסינון.
כמו קובץ דרייב שחסום בנטפרי, כשאני מנסה להוריד הוא נותן לי שגיאה SSL...לכן שאלתי
@יוסף-אלחנן כתב במדריך | מדריך להורדת שירים ופלייליסטים מספוטיפיי דרך יוטיוב באמצעות סקריפט פייתון:@TripleU
עובד בנטפרי? -
@hartkhartk הוספתי (כלומר בעצלותי ביקשתי מGPT) פונקציות לinput אין לי מושג אם זה עובד כפי שכתבתי יש לי נטפרי אז מי שיכול שיבדוק...
import spotipy from spotipy.oauth2 import SpotifyOAuth import json import yt_dlp import os # קבלת הגדרות ספוטיפיי מהמשתמש SPOTIPY_CLIENT_ID = input("הכנס מזהה לקוח של ספוטיפיי: ") SPOTIPY_CLIENT_SECRET = input("הכנס סוד הלקוח של ספוטיפיי: ") SPOTIPY_REDIRECT_URI = input("הכנס URI להפניה של ספוטיפיי: ") 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 = input("הכנס קישור לפלייליסט של ספוטיפיי: ") 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") 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 = input("הכניסו נתיב למקום הורדת הקבצים: ") download_tracks('tracks.txt', download_path)