this post was submitted on 03 Jan 2024
37 points (100.0% liked)

Programming

17443 readers
150 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

I'm a retired Unix sysadmin. Over the years I've built things in COBOL, FORTAN, C, perl, rexx, PHP, visual basic, various Unix shells and maybe others. Nothing has been a real "application" - mostly just utilities to help me get things done.

Now that I'm retired, and it's cold outside, I'm curious to try some more coding - and I have an idea.

The music communities here seem to post links to YouTube. I generally use Lemmy on my phone but don't use YouTube, or listen to music, on my phone if I can help it. I'd like to scrape a music community here and add the songs posted to a playlist in my musicbrainz account.

Does that sound like a reasonable learner project? Any suggestions for language and libraries appreciated. My preferred IDE is vim on bash and I have a home server running Linux where this could run as a daemon, or be scheduled.

you are viewing a single comment's thread
view the rest of the comments
[–] onlinepersona@programming.dev 1 points 10 months ago* (last edited 10 months ago) (1 children)

Python is basically runnable pseudo code that you would write on a napkin to explain stuff to somebody. There you don't care about curly backets and naturally indent to show scope. It's way simpler C and if you want to, you can add type hints (aka faux static typing).

Package management is done with pip although nowadays poetry is better as it uses one file to define everything about your project and configure the tools (linter, tester, autoformatter, static type checking)

The advantage of python is that it has lots and lots of libraries. You don't need to fiddle around with the lemmy API - use a library:

Want to connect to musicbrainz? https://pypi.org/project/musicbrainzngs/ is probably the best.

-->

Create a virtual env (basically allows you to install all your project dependencies in an environment separate from the global one): python3 -m venv .venv.

Activate the virtual in your shell source .venv/bin/activate.

Now you can start installing dependencies. If you want it super simple, use pip install $package, but updating the list of packages you want in your project is manual: pip freeze > requirements.txt (install them again with pip install -r requirements.txt after rm -rf .venv should you want to start fresh) and you can run into problems with clashing dependencies.
So, I recommend using poetry pip install poetry. poetry new . to setup basic project structure, then add runtime dependencies with poetry add $package e.g poetry add pylemmy musicbrainzngs.

It's possible to add dev dependencies with poetry like ruff for linting and autoformatting your code and mypy for static type checking. Your unit tests can be written using unittest from the standard library.

CC BY-NC-SA 4.0

[–] GreatBlueHeron@lemmy.ca 1 points 10 months ago (1 children)

Thank you for your detailed response. It's a bit much for my proposed "project". I won't be using any libraries (other than built-in python json etc.). I've prototyped most of it and it's currently about 15 lines of code. Literally one call to lemmy, a search to Musicbrainz and a playlist update to listenbrainz. I know it will grow lots as I make it a bit more robust, but it's still very small.

[–] onlinepersona@programming.dev 2 points 10 months ago

I see. No problem :) If it's simple, does what you need it to, and you're happy with it, that's all that matters.