예제 #1
0
        from cache import cacheFolder, cached
        cacheFile = join(cacheFolder, hash)
        try:
            data = urlopen(item.url).read()
            open(cacheFile, "wb").write(data)
            cached(item)
        except URLError:
            item.failed = True
            item.save()

    def postProcessItem(self, item):
        from rpc.globals import next_track, player
        from rpc.player import play_current, get_status
        current = QueueItem.current().what
        if item.failed:
            print "item failed", item
            char = ChatItem(what="failed", info=item)
            char.save()
            if current == item:
                next_track()
        elif current == item and get_status() == Status.idle:
            play_current(player)

    def downloads(self):
        with self.queueCondition:
            ret = list(self.queue)
            return ret


downloader = registerStartupTask(Downloader)
예제 #2
0
파일: spider.py 프로젝트: Ferada/nih
                    continue
                if len(resolved) < len(url):  # up link, skip
                    logger.debug("skipping %s %s", resolved, url)
                    continue
                if resolved[-1] == "/":  # directory
                    if WebPath.objects.filter(url=resolved).count() == 0:
                        child = current.add_child(url=resolved)
                        self.add(child)
                else:  # file?
                    (_, ext) = splitext(resolved)
                    ext = ext.lower()
                    if ext in known_extensions:
                        if MusicFile.objects.filter(url=resolved).count() == 0:
                            mf = MusicFile(parent=current, url=resolved)
                            mf.save()
                    else:
                        logger.debug("can't handle %s %s %s", resolved, ext, len(ext))

            current.checked = True
            current.save()
        except ObjectDoesNotExist:
            # we got deleted
            current.delete()


if settings.TESTING:
    spider = Spider()
    spider.setDaemon(True)
else:
    spider = registerStartupTask(Spider)
예제 #3
0
파일: downloader.py 프로젝트: palfrey/nih
        from cache import cacheFolder, cached
        cacheFile = join(cacheFolder, hash)
        try:
            data = urlopen(item.url).read()
            open(cacheFile, "wb").write(data)
            cached(item)
        except URLError:
            item.failed = True
            item.save()

    def postProcessItem(self, item):
        from rpc.globals import next_track, player
        from rpc.player import play_current, get_status
        current = QueueItem.current().what
        if item.failed:
            print "item failed", item
            char = ChatItem(what="failed", info = item)
            char.save()
            if current == item:
                next_track()
        elif current == item and get_status() == Status.idle:
            play_current(player)
    
    def downloads(self):
        with self.queueCondition:
            ret = list(self.queue)
            return ret

downloader = registerStartupTask(Downloader)

예제 #4
0
파일: jsonfuncs.py 프로젝트: palfrey/nih
from threading import Thread
import gobject
from utils import registerStartupTask

# The methods exposed via JSON RPC are imported here:
from rpc.search import search, randomtracks
from rpc.misc import get_username, set_username, get_version
from rpc.queue import enqueue, dequeue, clear_queue, get_queue, reorder
from rpc.volume import get_volume, set_volume
from rpc.chat import chat, get_history
from rpc.player import skip, pause
from rpc.globals import site, player

class Looper(Thread):
    def run(self):
        loop = gobject.MainLoop()
        loop.run()

gobject.threads_init()
registerStartupTask(Looper)

예제 #5
0
파일: spider.py 프로젝트: palfrey/nih
            for link in soup.findAll("a"):
                try:
                    resolved = urljoin(url, link["href"])
                except KeyError:
                    print "skipping due to lack of href", link
                    continue
                if len(resolved) < len(url): # up link, skip
                    print "skipping",resolved, url
                    continue
                if resolved[-1] == "/": # directory
                    if WebPath.objects.filter(url=resolved).count() == 0:
                        child = current.add_child(url=resolved)
                        self.add(child)
                else: # file?
                    (_, ext) = splitext(resolved)
                    ext = ext.lower()
                    if ext in known_extensions:
                        if MusicFile.objects.filter(url=resolved).count() == 0:
                            mf = MusicFile(parent=current, url = resolved)
                            mf.save()
                    else:
                        print "Can't handle", resolved, ext, len(ext)

            current.checked = True
            current.save()
        except ObjectDoesNotExist:
            # we got deleted
            current.delete()

spider = registerStartupTask(Spider)
예제 #6
0
파일: jsonfuncs.py 프로젝트: Ferada/nih
from threading import Thread
import gobject
from utils import registerStartupTask

# The methods exposed via JSON RPC are imported here:
from rpc.search import search, randomtracks
from rpc.misc import get_username, set_username, get_version
from rpc.queue import enqueue, dequeue, clear_queue, get_queue, reorder
from rpc.volume import get_volume, set_volume
from rpc.chat import chat, get_history
from rpc.player import skip, pause
from rpc.globals import site, player


class Looper(Thread):
    def run(self):
        loop = gobject.MainLoop()
        loop.run()


gobject.threads_init()
registerStartupTask(Looper)