2

我正在尝试投票以查看 youtube-dl 工作的状态。我无法弄清楚如何让它发挥作用。

以下是我的 python-rq worker.py 文件

class MyLogger(object):
    def debug(self, msg):
        pass

    def warning(self, msg):
        pass

    def error(self, msg):
        print(msg)

def my_hook(d):
    if d['status'] == 'finished':
        print('Done downloading, now converting ...')


    ydl_opts = {
    'format': 'bestaudio/best', # choice of quality
    'extractaudio' : True,      # only keep the audio
    'outtmpl': temp_filepath,  # name the location
    'noplaylist' : True,        # only download single song, not playlist
    'prefer-ffmpeg' : True,
    'postprocessors': [{
      'key': 'FFmpegExtractAudio',
      'preferredcodec': 'mp3',
      }],
    'logger': MyLogger(),
    'progress_hooks': [my_hook],
     }

    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
      result = ydl.download([url])

在我的主应用程序中,我尝试了所有变体,但似乎仍然无法获得 logger/my_hook 输出。

job = q.fetch_job(job_id)

一旦我有了job_id,我似乎唯一能得到的就是job.result,如果它没有完成就返回None,我尝试打印以查看状态,但似乎找不到它。

我可能正在考虑让 my_hood 或记录器写入一个单独的临时文件,我可以读取该行,但我认为这可能是过度的?任何帮助将不胜感激或可能的解决方法。

4

1 回答 1

2

在 github 问题的一些帮助之后,我能够使用 get_current_job 对其进行更新并将其传递给 meta。

class MyLogger(object):
    def debug(self, msg):
        print(msg)
        job = get_current_job()
        job.meta['progress'] = msg
        job.save()
于 2015-08-28T13:08:30.033 回答