Giter Site home page Giter Site logo

spotrec's Introduction

SpotRec

Python script to record the audio of the Spotify desktop client using FFmpeg and PulseAudio

AUR: https://aur.archlinux.org/packages/spotrec/

Usage

If you use the AUR package, you can simply run:

spotrec

If you have a GNU/Linux distribution with a different package manager system, run:

python3 spotrec.py

Example

First of all run spotify.

Then you can run the python script which will record the music:

./spotrec.py -o ./my_song_dir --skip-intro

Check the pulseaudio configuration:

pavucontrol

Pay attention to the red circles, everything else is muted and with volume set to 0%

playback tab

Note: actually "Lavf..." will appear after you start playing a song

recording tab

output devices tab

input devices tab

configuration tab

Finally start playing whatever you want

Hints

  • Disable volume normalization in the Spotify Client

  • Do not change the volume during recording

  • Use Audacity for post processing

    • because SpotRec records a little longer at the end to ensure that nothing is missing of the song. But sometimes this also includes the beginning of the next song. So you should use Audacity to cut the audio to what you want. From Audacity you can also export it to the format you like (ogg/mp3/...).

Troubleshooting

Start the script with the debug flag:

./spotrec.py --debug

If one of the following scenarios happens:

  • you do not see something like the ffmpeg output, which should appear right few seconds after the song start
# what you should see when ffmpeg is recording ...
size=56400kB time=00:00:04.15 bitrate= 130.7kbits/s speed=1x
  • you do not see any "Lavf..." in the pavucontrol recording tab
  • you get a stacktrace ending with:
ValueError: invalid literal for int() with base 10: 'nput'

I would suggest you to:

  • quickly press the "next song button" and then the "previous song button" in the spotify client
  • stop everything and start over, after some tries it usually works :)

Note: sometimes spotify detects when the user does not interact with the application for a long time (more or less an hour) and starts looping over a song, to avoid this scenario I would suggest to keep interacting with the spotify client.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.