GithubHelp home page GithubHelp logo

rembo10 / headphones Goto Github PK

View Code? Open in Web Editor NEW
3.3K 3.3K 604.0 16.87 MB

Automatic music downloader for SABnzbd

License: GNU General Public License v3.0

Python 94.77% Shell 0.17% HTML 2.72% CSS 0.58% JavaScript 1.40% Less 0.35%

headphones's Introduction

Headphones Logo Headphones

Build Status Build Status

Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, µTorrent, Deluge and Blackhole.

Support & Discuss

You are free to join the Headphones support community on IRC where you can ask questions, hang around and discuss anything related to HP.

  1. Use any IRC client and connect to the Freenode server, irc.freenode.net.
  2. Join the #headphones channel.

Installation and Notes

Issues can be reported on the GitHub issue tracker considering these rules:

  1. Analyze your log, you just might find the solution yourself!
  2. You read the wiki and searched existing issues, but this is not solving your problem.
  3. Post the issue with a clear title, description and the HP log and use proper markdown syntax to structure your text (code/log in code blocks).
  4. Close your issue when it's solved! If you found the solution yourself, please comment so that others benefit from it.

Feature requests can be reported on the GitHub issue tracker too:

  1. Search for similar existing 'issues', feature requests can be recognized by the label 'Request'.
  2. If a similar Request exists, post a comment (+1, or add a new idea to the existing request), otherwise you can create a new one.

If you comply with these rules you can post your request/issue.

Support the project by implementing new features, solving support tickets and provide bug fixes.

Screenshots

Homepage (Artist Overview):

preview thumb

One of the many settings pages:

preview thumb

It might even know you better than you know yourself:

preview thumb

Import Your Favorite Artists:

preview thumb

Search Results:

preview thumb

Artist Page with Bio & Album Overview:

preview thumb

Album Page with track overview:

preview thumb

License

This is free software under the GPL v3 open source license. Feel free to do with it what you wish, but any modification must be open sourced. A copy of the license is included.

headphones's People

Contributors

adehub avatar andrzejc avatar basilfx avatar chaosbit avatar cohena avatar coolbombom avatar delphiactual avatar doskir avatar elmarkou avatar ghuntley avatar gotson avatar gugahoi avatar jamiemagee avatar jmullan avatar jonnyvb avatar maxkoryukov avatar multikatt avatar noam09 avatar nopoz avatar novaxeros avatar pabloalcantara avatar pall-valmundsson avatar palli81 avatar piejanssens avatar rasmuseeg avatar redvers76 avatar rembo10 avatar satreix avatar sbuser avatar yipyup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

headphones's Issues

Unable to add an artist

Using Windows 7 64bit, python 2.7

Don't have the itunes path filled out.

Traceback (most recent call last):
File "C:\hp\cherrypy_cprequest.py", line 645, in respond
response.body = self.handler()
File "C:\hp\cherrypy\lib\encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "C:\hp\cherrypy_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "C:\hp\webServer.py", line 40, in index
c.execute('''SELECT AlbumTitle, ReleaseDate, DateAdded, AlbumID from albums WHERE ArtistName="%s" order by ReleaseDate DESC''' % results[i][0])
ProgrammingError: Cannot operate on a closed cursor.

Sorting is wrong.

I know I spoke to you about this, but figured I'd post it so others can see its been acknowledged. There is an issue with groups getting sorted incorrectly. ie Eagle Eye Cherry gets sorted under C.

nonnumeric port error sometimes when "wanting" an album

Ubuntu, python 2.6.6, sabnzbd hiding behind apache at http://bleh/sabnzbd/

When marking an album 'wanted', I SOMETIMES get the error below. This was when wanting the [deleted]. The album is correctly marked as Wanted if you return to the artist page.

500 Internal Server Error

The server encountered an unexpected condition which prevented it from fulfilling the request.

Traceback (most recent call last):
File "/home/tim/headphones/cherrypy/_cprequest.py", line 645, in respond
response.body = self.handler()
File "/home/tim/headphones/cherrypy/lib/encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "/home/tim/headphones/cherrypy/_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "/home/tim/headphones/webServer.py", line 275, in queueAlbum
searcher.searchNZB(AlbumID)
File "/home/tim/headphones/searcher.py", line 104, in searchNZB
urllib.urlopen(saburl)
File "/usr/lib/python2.6/urllib.py", line 86, in urlopen
return opener.open(url)
File "/usr/lib/python2.6/urllib.py", line 207, in open
return getattr(self, name)(url)
File "/usr/lib/python2.6/urllib.py", line 335, in open_http
h = httplib.HTTP(host)
File "/usr/lib/python2.6/httplib.py", line 1024, in init
self._setup(self._connection_class(host, port, strict))
File "/usr/lib/python2.6/httplib.py", line 661, in init
self._set_hostport(host, port)
File "/usr/lib/python2.6/httplib.py", line 686, in _set_hostport
raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
InvalidURL: nonnumeric port: ''

From console log:

[26/May/2011:13:23:04] HTTP Traceback (most recent call last):
File "/home/tim/headphones/cherrypy/_cprequest.py", line 645, in respond
response.body = self.handler()
File "/home/tim/headphones/cherrypy/lib/encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "/home/tim/headphones/cherrypy/_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "/home/tim/headphones/webServer.py", line 275, in queueAlbum
searcher.searchNZB(AlbumID)
File "/home/tim/headphones/searcher.py", line 104, in searchNZB
urllib.urlopen(saburl)
File "/usr/lib/python2.6/urllib.py", line 86, in urlopen
return opener.open(url)
File "/usr/lib/python2.6/urllib.py", line 207, in open
return getattr(self, name)(url)
File "/usr/lib/python2.6/urllib.py", line 335, in open_http
h = httplib.HTTP(host)
File "/usr/lib/python2.6/httplib.py", line 1024, in init
self._setup(self._connection_class(host, port, strict))
File "/usr/lib/python2.6/httplib.py", line 661, in init
self._set_hostport(host, port)
File "/usr/lib/python2.6/httplib.py", line 686, in _set_hostport
raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
InvalidURL: nonnumeric port: ''

[26/May/2011:13:23:04] HTTP
Request Headers:
REFERER: http://bleh:8181/artistPage?ArtistID=6ffb8ea9-2370-44d8-b678-e9237bbd347b
HOST: bleh:8181
CONNECTION: keep-alive
Remote-Addr: 129.xxx.xxx.xxx
ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
ACCEPT-CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7
USER-AGENT: Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
ACCEPT-LANGUAGE: en-us,en;q=0.5
ACCEPT-ENCODING: gzip, deflate
KEEP-ALIVE: 115
129.xxx.xxx.xxx - - [26/May/2011:13:23:04] "GET /queueAlbum?AlbumID=[deleted] HTTP/1.1" 500 2045 "http://sncnp.com:8181/artistPage?ArtistID=6ffb8ea9-2370-44d8-b678-e9237bbd347b" "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"

No logfiles?

In this early state of this program would it be nice to see debuglogs for bugsquashing and testingpurposes.
Logging for sure needs te be done for:

  • when searching for nzb's providers RSS-feeds (after a click on want for an album it should start logging)
  • when adding a path under manage
  • force check wanted albums
  • force Update active artists
  • when communicating with external sources, like sending to sabnzbd or nzb-providers.

Req: Show what albums you currently have

Right now when you add artists, it shows all albums as "skipped" status. It would be nice to see what ones you already have and maybe some details about it like quality. Then you could make the decision to either look for a higher quality version, or leave it as "downloaded" status.

Errors on First Startup

Running on Ubuntu 11.04:

Error 500
Traceback (most recent call last):
File "/usr/local/bin/Headphones/cherrypy/_cprequest.py", line 645, in respond
response.body = self.handler()
File "/usr/local/bin/Headphones/cherrypy/lib/encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "/usr/local/bin/Headphones/cherrypy/_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "/usr/local/bin/Headphones/webServer.py", line 37, in index
c.execute('SELECT ArtistName, ArtistID, Status from artists order by ArtistSortName collate nocase')
OperationalError: no such table: artists

This is the error I got after getting a different error, somehow relating to the headphones.db file - creating the file and giving it permissions 777 results in the above error. It looks like the problem is that the database was never initialized - how can I do this manually?

Shutdown not working correctly

After I pushed the shutdown button the program did not respond properly. The web interface was not reachable but the program was still running. So I tried to quit it manually with Ctrl+C, which gave the following result:

^C[19/Jun/2011:13:50:59] ENGINE Keyboard Interrupt: shutting down bus
[19/Jun/2011:13:50:59] ENGINE Bus STOPPING
[19/Jun/2011:13:50:59] ENGINE HTTP Server cherrypy._cpwsgi_server.CPWSGIServer(('0.0.0.0', 8181)) shut down
INFO:cherrypy.error:[19/Jun/2011:13:50:59] ENGINE HTTP Server cherrypy._cpwsgi_server.CPWSGIServer(('0.0.0.0', 8181)) shut down
[19/Jun/2011:13:50:59] ENGINE Stopped thread 'Autoreloader'.
INFO:cherrypy.error:[19/Jun/2011:13:50:59] ENGINE Stopped thread 'Autoreloader'.
[19/Jun/2011:13:50:59] ENGINE Bus STOPPED
INFO:cherrypy.error:[19/Jun/2011:13:50:59] ENGINE Bus STOPPED
[19/Jun/2011:13:50:59] ENGINE Bus EXITING
INFO:cherrypy.error:[19/Jun/2011:13:50:59] ENGINE Bus EXITING
[19/Jun/2011:13:50:59] ENGINE Bus EXITED
INFO:cherrypy.error:[19/Jun/2011:13:50:59] ENGINE Bus EXITED
[19/Jun/2011:13:50:59] ENGINE Waiting for child threads to terminate...
INFO:cherrypy.error:[19/Jun/2011:13:50:59] ENGINE Waiting for child threads to terminate...
[19/Jun/2011:13:50:59] ENGINE Waiting for thread HTTPServer Thread-2.
INFO:cherrypy.error:[19/Jun/2011:13:50:59] ENGINE Waiting for thread HTTPServer Thread-2.

Resulted in a waiting state.

Consistent Issue on Mark Wanted

To reproduce, grab the latest version from Github, configure with all search providers & SAB integration.
Restart to pick up changes.
Add KISS as artist.
Navigate to the KISS page.
Try to mark Psycho Circus, or Revenge, as Wanted.
Other albums may work, Crazy Nights for instance.

Stack trace with request details follows.

192.168.1.10 - - [12/Jun/2011:21:59:07] "GET / HTTP/1.1" 200 1778 "" "Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
192.168.1.10 - - [12/Jun/2011:21:59:10] "GET /artistPage?ArtistID=e1f1e33e-2e4c-4d43-b91b-7064068d3283 HTTP/1.1" 200 26117 "http://server:8181/" "Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
[12/Jun/2011:21:59:25] HTTP Traceback (most recent call last):
File "/home/fish/.headphones/cherrypy/_cprequest.py", line 645, in respond
response.body = self.handler()
File "/home/fish/.headphones/cherrypy/lib/encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "/home/fish/.headphones/cherrypy/_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "/home/fish/.headphones/webServer.py", line 281, in queueAlbum
searcher.searchNZB(AlbumID)
File "/home/fish/.headphones/searcher.py", line 179, in searchNZB
urllib.urlopen(saburl)
File "/usr/lib64/python2.7/urllib.py", line 84, in urlopen
return opener.open(url)
File "/usr/lib64/python2.7/urllib.py", line 205, in open
return getattr(self, name)(url)
File "/usr/lib64/python2.7/urllib.py", line 342, in open_http
h.endheaders(data)
File "/usr/lib64/python2.7/httplib.py", line 940, in endheaders
self._send_output(message_body)
File "/usr/lib64/python2.7/httplib.py", line 803, in _send_output
self.send(msg)
File "/usr/lib64/python2.7/httplib.py", line 755, in send
self.connect()
File "/usr/lib64/python2.7/httplib.py", line 736, in connect
self.timeout, self.source_address)
File "/usr/lib64/python2.7/socket.py", line 567, in create_connection
raise error, msg
IOError: [Errno socket error] [Errno 111] Connection refused

ALAC Support

All my music is in Apple Lossless, but it doesn't seem to be found by Headphones. I'm running FreeBSD 8.2 and I have the alac port installed.

Also, will we have a post-processing script to convert FLAC to ALAC and add it to iTunes?

Ignoring all artists with no US-releases?

thx for the logging. I discovered you check for US release, and if not, it doesn't add albums.
I do not know why that is, but there are also artists only releasing in their own countrys.

For example, Amy MacDonald, has only GB releases. She will be added to the database with no albums.
For now I solved it by updating webserver.py and updater.py with the folowwing:
for event in results.releaseEvents:
releasecountry = ['US','GB']
if event.country in releasecountry:

I would push this as a merge-request if I knew how to do that, but also I am not confident enough of my python-coding to do so allready. If you want such small changes to be pushed I will do so.

Only question, why should headphones limit to US releases only? Isn't it better to show all releases, but with the shortcode for a country behind it, so users can choose theirselves?

Or even better, make it a config option to prefer country's (let users create list like US, GB, JP etc... ) and try searching for US release first, then GB etc...

Req: Min/Max bitrate for MP3

I know for myself I don't really care, but thought this could be maybe a item that could be added. Some people like to have a specific range for the Mp3's they try and grab, ie. within 192 to 320kbps

I don't know if this could be done, possibly with the search through a nfo file etc...

Like the updates as of late though, good work.

Error 503 doing library music scan

14-Jul-2011 10:01:59 - INFO :: CP Server Thread-7 : Found best match: Eagle-E
ye Cherry. Gathering album information...
14-Jul-2011 10:01:59 - ERROR :: CP Server Thread-7 : Unable to complete the sc
an: HTTP Error 503:

Crash when one artist is found

If you do a search for Achilea only one is found, so headphones tries to add immediately to the database, resulting in a crash, and it won't add the artist:

Traceback (most recent call last):
File "/home/mars/.headphones/cherrypy/_cprequest.py", line 645, in respond
response.body = self.handler()
File "/home/mars/.headphones/cherrypy/lib/encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "/home/mars/.headphones/cherrypy/_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "/home/mars/.headphones/webServer.py", line 178, in findArtist
logger.log(u"Found one artist matching your search term: " + result.artist, result.id)
TypeError: coercing to Unicode: need string or buffer, Artist found

Special Characters

I know - this is going to be a pain in the ass, because special characters are always...well special.
There are several artists with "stylistic" names which makes it impossible to add them via folder scan, because you cannot use some special characters in the filesystem.

Examples:
Musicbrainz lists (hed) p.e. with the first "e" turned around, while you cannot set this on Windows-filesystems you have to use the name (hed) p.e. - headphones won't find anything subsequently, because MusicBrainz does not list "(hed) p.e." but only with the turned around "e".

There are more characters where I am sure they are used by artists, but not supported on some filesystems - the question mark for example will be rejected by Windows.

The easiest solution wouldn't be for headphones though - dealing with this will be a pain in the ass. It would be nice if MusicBrainz would implement "aliases", so different names which the artist is also known under. I do not know if you have contact with the devs there, but judging by your posts you do. Maybe you can push them in that direction?
It would make handling special characters much, much easier :)

Error when click a few albums....

Traceback (most recent call last):
File "C:\hp\cherrypy_cprequest.py", line 645, in respond
response.body = self.handler()
File "C:\hp\cherrypy\lib\encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "C:\hp\cherrypy_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "C:\hp\headphones\webserve.py", line 170, in albumPage
c.execute('''SELECT TrackTitle from have WHERE ArtistName like "%s" AND AlbumTitle like "%s" AND TrackTitle like "%s"''' % (results[i][1], results[i][2], results[i][3]))
OperationalError: near "Rollins": syntax error

21 Artists

I cannot seem to add (with the import iTunes) more than 21 artists. Every time I run the script when it tries to add the 22nd item it says:

Traceback (most recent call last):
File "C:\Headphones\cherrypy_cprequest.py", line 645, in respond
response.body = self.handler()
File "C:\Headphones\cherrypy\lib\encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "C:\Headphones\cherrypy_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "C:\Headphones\webServer.py", line 350, in importItunes
itunesimport.itunesImport(path)
File "C:\Headphones\itunesimport.py", line 40, in itunesImport
artist = ws.Query().getArtistById(artistid, inc)
File "C:\Headphones\musicbrainz2\webservice.py", line 972, in getArtistById
result = self._getFromWebService('artist', uuid, include)
File "C:\Headphones\musicbrainz2\webservice.py", line 1179, in _getFromWebService
stream = self.ws.get(entity, id, includeParams, filterParams)
File "C:\Headphones\musicbrainz2\webservice.py", line 288, in get
raise ConnectionError(str(e), e)
ConnectionError: <urlopen error [Errno 11004] getaddrinfo failed>

I am using the most recent code and have tried multiple times. I tried just running the same xml file again and it runs through the first 21 not adding anything (they are already add) then tries to add the 22nd and does that. I also tried deleting and starting from scratch. Still didn't work.

Thanks!
Brandon B

Got an error while adding an artist

Traceback (most recent call last):
File "C:\hp\cherrypy_cprequest.py", line 645, in respond
response.body = self.handler()
File "C:\hp\cherrypy\lib\encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "C:\hp\cherrypy_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "C:\hp\webServer.py", line 42, in index
if latestalbum[0][1] > datetime.date.isoformat(today):
IndexError: list index out of range

nothing happens , no search nothing

Hi,

I have added an artist [deleted] and then said i wanted an album, but it doesn't search or do anything. I have nzbmatrix setup.

thanks

Not Moving To My Music Folder.

Excellent project and glad it's finally in the making!! :)

I do not use iTunes.
I use XBMC and all this needs is the music in a specified folder.
When XBMC loads, it then scrapes the folder.

I have set both my iTunes folders (in Manage and Settings) to my Music Store Folder. But nothing gets moved and the status does not change to downloaded. Is it meant to?

The system I am using is Linux CommandLine supplied as an OS from XBMCLive.

Everything stays in my SabNZBd Music Folder.

Are you planning on creating an init.d script to auto-load headphones on startup?

Request: Use file/folder names instead of ID3 tags to search music collections

Is there any way to build in an option to use File/Folder names rather than looking at your music collections with ID3 tags? I have a lot of music, and some of the tags might either be incorrect, or missing. Also, a lot of albums are compilation albums that might have artists that I'm not sure about, but when they're scraped by this program, it lists them as though I might have some of their full albums when in fact I just have a song that they produced that ended up on some soundtrack or something.

500 error

I can't seem to get very far with importing my iTunes library. Here is the latest log http://pastebin.com/DcdU9Uin
I just downloaded the most current version before I tried this.

Roontoon

nzbs.org - correct RSS-URL

Hi,

currently nzbs.org isn't working because nzbs.org requires to use either "catid" or "typeid" when searching via RSS.
An example for Lostprophets - The Betrayed:
Currently headphones uses this URL:
https://secure.nzbs.org/rss.php?dl=1&i=$id&h=$hash&age=1000&q=Lostprophets+The+Betrayed+2010&action=search

But there won't be a RSS provided on that URL - you have to use this instead:
https://secure.nzbs.org/rss.php?catid=5&dl=1&i=$id&h=$hash&age=1000&q=Lostprophets+The+Betrayed+2010&action=search

Greetings,
HenryFord

Request: SSL Support

SSL / HTTPS support would be nice. This is kind of a given, due to the nature in which this program could be used. :)

Request: Alternate Version Support

After an album is fetched, there should be an option to download the album again but from an alternate release group. Couchpotato has this feature, and Sickbeard is building it in also. This is very helpful if for whatever reason the version you downloaded was incorrect or corrupt in some way.

Issue when adding artist

On current source code. Tried adding Metallica.

Traceback (most recent call last):
File "C:\hp\cherrypy_cprequest.py", line 645, in respond
response.body = self.handler()
File "C:\hp\cherrypy\lib\encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "C:\hp\cherrypy_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "C:\hp\webServer.py", line 220, in addArtist
results = ws.Query().getReleaseById(releaseid, inc)
File "C:\hp\musicbrainz2\webservice.py", line 1037, in getReleaseById
result = self._getFromWebService('release', uuid, include)
File "C:\hp\musicbrainz2\webservice.py", line 1179, in _getFromWebService
stream = self.ws.get(entity, id, includeParams, filterParams)
File "C:\hp\musicbrainz2\webservice.py", line 285, in get
raise WebServiceError(str(e), e)
WebServiceError: HTTP Error 503:

Baseurl

At the moment I'm trying to use headphones just like I use couchpotato and sickbeard. But I'm struggling with one problem: the baseurl. Currently i edited my httpd config so urls like http://server/headphones/ goes to http://127.0.0.1:8181/. Now I just have to forward one port.

Is it possible to add the option just like couchpotato does: baseurl. So it adds the baseurl before the normal URL's in the page.

Request: NZB Blackhole

My NZBs dont seem to be adding to SAB. Could we please have a blackhole option so that it could be consistent with the rest of my software?

That would be great!

Thanks for all the great work on this script!

Not all music is listed

I have a music library stored on a network share. Here is the path I'm using: \server\music

Headphones started finding my music, but only found about 4 artists out of about 150 that are on that share. There is no difference in the naming scheme or anything like that.

If I manually add an artist that I already have in that location, it shows up in headphones, and the albums are shown as "have" status correctly. So I'm just not sure why hardly anything is getting picked up.

Empty artists in searchresults

If for example, you do a search for artist (or add an artist), e.g. Enigma, it returns four Enigma's, three containing no albums. It happens with more artists (e.g. Bonobo, which returns 2, 1 without albums).

It needs a check if there are albums found for an artist, before it shows the artists on http://localhost:8181/findArtist?name=enigma, or perhaps shows the amount of albums found behind it like so:
Enigma (more info) 4 albums
Enigma (more info) 0 albums
Enigma (more info) 0 albums
Enigma (more info) 1 album

Now the only check is if there is a result (result is artistname). If no results, it shows a blank page. If there are results, it shows the artists, but the user needs to click all results to see which one of the artists (if all the same) contains the albums and that's the one that needs to be added.

Request: Add check boxes next to albums wanted

More of a sickbeard approach here, but I think you should use check boxes next to albums, then at the bottom have a button that says "download selected albums" or something along those lines. Or "change selected albums to Wanted status".

Install as daemon

I wanted to install this as a daemon on my headless ubuntuserver, but didn't see an init.d file, so I created one (edited couchpotato's initd file)

I have no time to pull and push this file on the system I am currently working on, so I thougt this would be the fastest way to get it to you, so you could merge it yourself for others to use
download it here:
http://dl.dropbox.com/u/18712538/Headphones/headphonesinit.d

usage:
adjust settings in file (installpath and run as user)
copy/move it to /etc/init.d/headphones
sudo chmod +x /etc/init.d/headphones
sudo update-rc.d /etc/init.d/headphones defaults
sudo /etc/init.d/headphones start | stop | reload | restart

BTW, great effort in writing this, the long awaited application by many! KUTGW

503 Error when importing iTunes library

Ubuntu with python 2.6.6

When adding importing my itunes library xml, I get this after a few seconds (this is with some artists already added through the import tool):

500 Internal Server Error

The server encountered an unexpected condition which prevented it from fulfilling the request.

Traceback (most recent call last):
File "/home/tim/headphones/cherrypy/_cprequest.py", line 645, in respond
response.body = self.handler()
File "/home/tim/headphones/cherrypy/lib/encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "/home/tim/headphones/cherrypy/_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "/home/tim/headphones/webServer.py", line 319, in importItunes
itunesimport.itunesImport(path)
File "/home/tim/headphones/itunesimport.py", line 24, in itunesImport
artistResults = ws.Query().getArtists(ws.ArtistFilter(string.replace(name, '&', '%38'), limit=1))
File "/home/tim/headphones/musicbrainz2/webservice.py", line 991, in getArtists
result = self._getFromWebService('artist', '', filter=filter)
File "/home/tim/headphones/musicbrainz2/webservice.py", line 1179, in _getFromWebService
stream = self.ws.get(entity, id, includeParams, filterParams)
File "/home/tim/headphones/musicbrainz2/webservice.py", line 285, in get
raise WebServiceError(str(e), e)
WebServiceError: HTTP Error 503:

From console log:

[26/May/2011:12:56:44] HTTP Traceback (most recent call last):
File "/home/tim/headphones/cherrypy/_cprequest.py", line 645, in respond
response.body = self.handler()
File "/home/tim/headphones/cherrypy/lib/encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "/home/tim/headphones/cherrypy/_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "/home/tim/headphones/webServer.py", line 319, in importItunes
itunesimport.itunesImport(path)
File "/home/tim/headphones/itunesimport.py", line 24, in itunesImport
artistResults = ws.Query().getArtists(ws.ArtistFilter(string.replace(name, ' &', '%38'), limit=1))
File "/home/tim/headphones/musicbrainz2/webservice.py", line 991, in getArtist s
result = self._getFromWebService('artist', '', filter=filter)
File "/home/tim/headphones/musicbrainz2/webservice.py", line 1179, in _getFrom WebService
stream = self.ws.get(entity, id, includeParams, filterParams)
File "/home/tim/headphones/musicbrainz2/webservice.py", line 285, in get
raise WebServiceError(str(e), e)
WebServiceError: HTTP Error 503:

[26/May/2011:12:56:44] HTTP
Request Headers:
REFERER: http://bleh:8181/manage
HOST: bleh:8181
CONNECTION: keep-alive
Remote-Addr: 129.xxx.xxx.xxx
ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
ACCEPT-CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7
USER-AGENT: Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0. 1
ACCEPT-LANGUAGE: en-us,en;q=0.5
ACCEPT-ENCODING: gzip, deflate
KEEP-ALIVE: 115
129.xxx.xxx.xxx- - [26/May/2011:12:56:44] "GET /importItunes?path=%2Fhome%2Ftim% 2FiTunes+Music+Library.xml HTTP/1.1" 500 1946 "http://bleh.com:8181/manage" "Mo zilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"

Duplicate Albums

Although this is 100% better there are still some dupe's coming in. Marcy Playground for example Leaving Wonderland... In a Fit of Rage (link) release date 2009-07-07. The dupe is even the same release date.

Unable to add an album

Upon clicking want on an album I get this error. Up to date, windows, python 2.7

raceback (most recent call last):
File "C:\hp\cherrypy_cprequest.py", line 645, in respond
response.body = self.handler()
File "C:\hp\cherrypy\lib\encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "C:\hp\cherrypy_cpdispatch.py", line 29, in call
return self.callable(_self.args, *_self.kwargs)
File "C:\hp\webServer.py", line 275, in queueAlbum
searcher.searchNZB(AlbumID)
File "C:\hp\searcher.py", line 104, in searchNZB
urllib.urlopen(saburl)
File "C:\Python27\lib\urllib.py", line 84, in urlopen
return opener.open(url)
File "C:\Python27\lib\urllib.py", line 205, in open
return getattr(self, name)(url)
File "C:\Python27\lib\urllib.py", line 331, in open_http
h = httplib.HTTP(host)
File "C:\Python27\lib\httplib.py", line 1047, in init
self._setup(self._connection_class(host, port, strict))
File "C:\Python27\lib\httplib.py", line 681, in init
self._set_hostport(host, port)
File "C:\Python27\lib\httplib.py", line 706, in _set_hostport
raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
InvalidURL: nonnumeric port: ''

Ascii error when scanning current music

When scanning my current library, I get the following error in the logs:

14-Jul-2011 10:01:50 - ERROR :: CP Server Thread-8 : Unable to complete the scan: 'ascii' codec can't decode byte 0xf1 in position 7: ordinal not in range(128)

I would be happy to rename the offending file/folder. However, there is no information on what that file/folder may be.

Suggestion: Add more verbose information in the logs to detect what files/folders are currently being scanned and/or fix the ascii issue that is being detected.

Thanks for your work,
Ben

Error on Windows

Traceback (most recent call last):
File "C:\Program Files\rembo10-headphones-5b15592\headphones.py", line 4, in <
module>
from lib.configobj import ConfigObj
File "C:\Program Files\rembo10-headphones-5b15592\lib\configobj.py", line 1644

except Exception, e:
                ^

SyntaxError: invalid syntax


Occuring on Win XP.

Enhancement: Add details / descriptions about what some options do.

There are a couple options that are pretty vague.

What exactly does "Add album art" do? What does "Delete leftover files" mean exactly? "Rename and add metadata"? What metadata is added?

A little explanation about the options in parenthesis or something would be nice. If not that, then maybe some Wiki pages talking about what they do.

Request: List recently added itunes music store albums by genre

It would be nice to have a page that you could go to that would show you recently added music in the itunes music store (I'm sure there's a way to scrape that data from apple.), then you could click on a genre that you want a listing of, and add artists to your headphones database from there.

I currently look in itunes to see what music has recently come out and the listen to a quick sample to see if I like it. It would be cool if a simple version of this was integrated into headphones. This would make it so the user could stay in one setting to view new items, possibly listen to a sample, and then download the album.

Won't start: KeyError: 'Newznab'

After pulling the latest version, starting headphones fails.

tim@everest:/headphones$ ./headphones.py
Traceback (most recent call last):
File "./headphones.py", line 8, in
import webServer
File "/home/tim/headphones/webServer.py", line 2, in
import config
File "/home/tim/headphones/config.py", line 26, in
Newznab = config['Newznab']
File "/home/tim/headphones/configobj.py", line 567, in getitem
val = dict.getitem(self, key)
KeyError: 'Newznab'
tim@everest:
/headphones$

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.