You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I’ve been working with Streamrip and running it through direct imports in a project. While downloading albums works smoothly, I'm hitting issues when trying to download individual tracks using PendingTrack. The track resolution process seems to go through, but the actual download either fails or returns unexpected results.
Here’s a quick rundown of what I’m seeing:
The rip() method for individual tracks either errors out or results in NoneType returns.
Albums process just fine, so I’m wondering if there's something specific about handling tracks this way.
Does Streamrip support track downloads through direct imports? Or are there any known quirks or changes I should be aware of when using it this way?
Any pointers would be amazing. Thanks for your help!
Command Used
import logging
import asyncio
from flask import Flask, request, jsonify
from streamrip.client import DeezerClient
from streamrip.config import Config
from streamrip.media import Track, PendingTrack
from streamrip.db import Database, Downloads, Failed
import os
logging.basicConfig(filename='app.log', level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
app = Flask(__name__)
def initialize_client(arl):
config = Config.defaults()
config.session.deezer.arl = arl
client = DeezerClient(config)
return client
@app.route('/download', methods=['GET', 'POST'])
async def download():
if request.method == 'GET':
link_address = request.args.get('url')
elif request.method == 'POST':
link_address = request.json.get('url')
if not link_address:
logging.warning('URL was not provided')
return jsonify({'error': 'URL is required'}), 400
arl = ''
download_folder = '/path/to/download/folder'
try:
downloads_path = '.config/streamrip/downloads.db'
failed_downloads_path = '.config/streamrip/failed_downloads.db'
downloads_db = Downloads(downloads_path)
failed_db = Failed(failed_downloads_path)
db = Database(downloads_db, failed_db)
client = initialize_client(arl)
await client.login()
if not client.logged_in:
logging.error('Failed to log in to Deezer')
return jsonify({'error': 'Failed to log in to Deezer'}), 500
track_id = link_address.split('/')[-1]
pending_track = PendingTrack(track_id, client, client.config, download_folder, db, None)
resolved_track = await pending_track.resolve()
if resolved_track is None:
logging.error('Track could not be resolved')
return jsonify({'error': 'Track could not be resolved'}), 500
logging.info(f'Metadata: {resolved_track.meta}')
await resolved_track.rip()
logging.info('Track downloaded successfully')
return jsonify({'message': 'Track downloaded successfully'})
except Exception as e:
logging.exception('An exception occurred')
return jsonify({'error': str(e)}), 500
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=int(os.environ.get('PORT', 7123)))
Debug Traceback
"'NoneType' object has no attribute 'downloaded'"
Config File
config = Config.defaults()
Operating System
Ubuntu 24
streamrip version
2.0.5
Screenshots and recordings
No response
Additional context
No response
The text was updated successfully, but these errors were encountered:
Describe the bug
I’ve been working with Streamrip and running it through direct imports in a project. While downloading albums works smoothly, I'm hitting issues when trying to download individual tracks using PendingTrack. The track resolution process seems to go through, but the actual download either fails or returns unexpected results.
Here’s a quick rundown of what I’m seeing:
Does Streamrip support track downloads through direct imports? Or are there any known quirks or changes I should be aware of when using it this way?
Any pointers would be amazing. Thanks for your help!
Command Used
Debug Traceback
Config File
Operating System
Ubuntu 24
streamrip version
2.0.5
Screenshots and recordings
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: