Giter Site home page Giter Site logo

whosmyname / realbandcampmusicdiscovery Goto Github PK

View Code? Open in Web Editor NEW
4.0 3.0 0.0 186 KB

GUI-based Utility that allows you to "discover" Music on Bandcamp.com - the expected "track"

License: GNU General Public License v2.0

Python 100.00%
python3 http comparison bandcamp music music-discovery music-discovery-service fuck-off-as-a-service

realbandcampmusicdiscovery's Introduction

RealBandcampMusicDiscovery

GUI-based Utility that allows you to "discover" Music on Bandcamp.com - the expected "track"

I like really bad puns

Version: Alpha 38


ToC

  • General Info
  • Features
  • Usage Guide

General Info

Unfortunately I forgot what I wanted to write here.

Fortuately that allows me to start with an introduction:
I love to use BandCamp and search for new music.
Bandcamp seems to me like a pretty nice platform for both artists "[citation needed]" and users "[citation needed]" .
Thankfully there's this "Discovery" option that let's you search for music based on tags.
Until one day you find out that using multiple tags in your search for new music is not possible.
You like [your favourite genre]?
Also like [any other interesting genre]?
Well no crossovers for y'all! (at least with the default discovery solution)
End of Storytime, I got really pissed mildly annoyed, so I decided to address this "problem".

This is for @all, that want to extend their music horizon, without getting punished/infuriated/agitated/exhausted by Bandcamps UI/UX.

Using Python3.x+ and PySide6


Features

  • Fetching Albums+Metadata
  • Genre-based comparison for Albums
  • Saving (selected) Albums as text
  • Downloading selected Albums

Usage Guide

First clone/download this repo:

git clone https://github.com/WhosMyName/RealBandcampMusicDiscovery.git

or
Download Repo as Zip via HTTPS and unpack it.
You should now have a folder called RealBandcampMusicDiscovery. Change into that directory.
Execute the setup file for your OS:
Linux/Unix/MacOS: setup.sh
Windows: setup.bat
After the install has successfully finished, just execute the userinterface (WIP):
cd src and
python3 userinterface.py (*nix) or
python userinterface.py (Win)

The main inteface will be shown and will execute it's init sequence. (Wait until the small window dissappears)

PIC1

Add a drop down menu via XXX and select a genre

PIC2 PIC3, maybe a gif

Fetch the albums via XXX

PIC4

After using/fetching multiple tags/genres, you can use XXX to compare/filter the Albums based on including all selected tags.
The list will refresh ans show you all albums, that fit your criteria.

PIC5

You can also save the current list to a file, called save.txt. (More Options to come)
That's all (for now).

Also shameless self-advertisement

realbandcampmusicdiscovery's People

Contributors

whosmyname avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

realbandcampmusicdiscovery's Issues

Add Albums as QIcon

  • optimize metadata fetching
  • find storage solution (temp/permanent)
  • display album_cover as QIcon

Duplicates after comparison

there are still duplicates after the comparison, i've added the hash method, but there's still this f*cking shit

ImportError

I try to run the userinterface from cmdline but can't get it to work. Keep getting this error message:

Traceback (most recent call last):
   File "userinterface.py", line 7, in <module>
        from PyQt5.QtWidgets import QMainWindow, QGridLayout, QLayout, QWidget, QMessageBox, QAction, QComboBox, QCompleter, QPushButton, QApplication, QScrollArea
ImportError: DLL load failed while importing QtWidgets: The specified procedure could not be found.

Tags in save

add tags to save file to make it easier after a week to know what you saved

Find Storage Solution

  • like maybe a DB
  • or smt else
  • just for the users to maybe have some albums when BC decides that their not in the 10 pages of an tag

Verify compare functionality

Verify that upon comparing the albumlist will be updated with albums after comparison + clear on already downloaded genres

Shit is going down in 4D

Start RBMC select tags and fetch them, wait 5 Mins then....

2019-08-09 14:02:44,091 | ERROR | webconnector rbmd.webconnector 13897 139875442292480 |           get_albums() - Line 151 | Psychic Graveyard - The Next World EP has thrown Exception:
HTTPSConnectionPool(host='skingraftrecords.bandcamp.com', port=443): Pool is closed.
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 227, in _get_conn
    conn = self.pool.get(block=self.block, timeout=timeout)
AttributeError: 'NoneType' object has no attribute 'get'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 591, in urlopen
    conn = self._get_conn(timeout=pool_timeout)
  File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 230, in _get_conn
    raise ClosedPoolError(self, "Pool is closed.")
urllib3.exceptions.ClosedPoolError: HTTPSConnectionPool(host='skingraftrecords.bandcamp.com', port=443): Pool is closed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/koro/Documents/GitKrakken/RealBandcampMusicDiscovery/src/webconnector.py", line 148, in get_albums
    album = future.result()
  File "/usr/lib/python3.7/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/koro/Documents/GitKrakken/RealBandcampMusicDiscovery/src/webconnector.py", line 162, in update_album_metadata
    resp = self.session.get(album.url)
  File "/usr/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3.7/site-packages/requests/adapters.py", line 519, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='skingraftrecords.bandcamp.com', port=443): Pool is closed.

"Funny" thing is that all the albums disappear as soon as

2019-08-09 14:02:54,307 | ERROR | userinterface rbmd.ui 13891 139875612231296 |  uncaught_exceptions() - Line 37 | Uncaught Exception of type <class 'TypeError'> was caught: arguments did not match any overloaded call:
  loadFromData(self, bytes, format: str = None, flags: Union[Qt.ImageConversionFlags, Qt.ImageConversionFlag] = Qt.AutoColor): argument 1 has unexpected type 'str'
  loadFromData(self, Union[QByteArray, bytes, bytearray], format: str = None, flags: Union[Qt.ImageConversionFlags, Qt.ImageConversionFlag] = Qt.AutoColor): argument 1 has unexpected type 'str'
Traceback:
None
NoneType: None
2019-08-09 14:03:02,406 | INFO | htmlparser rbmd.htmlparser 13897 139875442292480 |         parse_albums() - Line 49 | Parsing Albums
2019-08-09 14:03:02,718 | INFO | userinterface rbmd.ui 13891 139875612231296 |        update_layout() - Line 368 | Refreshing Layout
  File "userinterface.py", line 393, in msgcapture
    self.analyze(self.recieve())
  File "userinterface.py", line 402, in analyze
    self.process_albums(msg)
  File "userinterface.py", line 323, in process_albums
    self.update_layout()
  File "userinterface.py", line 384, in update_layout
    self.add_album(album)
  File "userinterface.py", line 349, in add_album
    pix.loadFromData(album.cover)

hits the deck. QwQ

Clearer States

  • make following states clearer
    • loading
    • downloading

handle it like the init state

  • big label
    • right in ya face
    • ok to ok
    • all non-usable actions are disabled
  • big label right in ya face again
    • @on_finish

Easy Deploy

  • improved deploy with Makefile/Dockerfile/etc...
  • improved Docs

Net I/O Feedback

need to propagate net io feedback to the user.
been hanging in wifi, seems stable, RBMD fails
no reason, no feedback
ppl will be waiting
waiting no gud
git gud
git push
maybe recommend cable networking (:big_oof:)

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.