rembo10 / headphones Goto Github PK
View Code? Open in Web Editor NEWAutomatic music downloader for SABnzbd
License: GNU General Public License v3.0
Automatic music downloader for SABnzbd
License: GNU General Public License v3.0
Possibility to add several newznab providers
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.
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
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?
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:
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.
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"
Please add a integrated update feature, just like CouchPotato and Sick Beard have.
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.
I have a lot of MP3 albums, but I'd like to find the FLAC replacement for most of them. It would be nice to have a little button next to albums that you have in MP3 quality that would say something like "Find the FLAC version of this album".
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.
It would be nice to have some kind of numerical count for any type of list that is shown. Something like this:
Artists: 356
Or if you're in album view:
Albums: 6
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...
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
After pulling the latest version, starting headphones fails.
tim@everest:/headphones$ ./headphones.py/headphones$
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:
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.
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.
Might be nice to add a track count or something to the meter also. Like 12/14 tracks. Also would be nice to know how many of those are "bonus tracks".
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:
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.
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.
I added David Cook couple weeks ago, since then musicbrainz has added a new album for him, my headphones install doesnt show it.
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
Couch Potato and Sickbeard allow you to specify a baseurl in the config file which allows makes using a reverse proxy a possibility. Would you please consider adding support for this in your app? Thank you and thanks for Headphones!
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
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: ''
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?
In the history section, the source of the NZB file should be listed also. Sickbeard does this, and it's very helpful sometimes.
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"
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.
In my opinion, MusicBrainz is pretty terrible. Most of the time, artist discographies are not updated on the site accurately. It would be nice to use another more reliable site like AllMusic.com
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
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
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.
SSL / HTTPS support would be nice. This is kind of a given, due to the nature in which this program could be used. :)
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 :)
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.
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.
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?
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:
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
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!
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
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.
Another great feature would be to add support for scraping cdArt from fanart.tv for albums that you currently have, or scrape the art for new albums when they are downloaded.
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".
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
The green bar for "have status" overfills the frame it should be confined to. See here: http://i.imgur.com/Sp0fj.png
Using Chrome browser on windows 7 x64.
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
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.