Przeglądaj źródła

Set process title to youtube-dl

This allows killing all youtube-dl processes with killall youtube-dl, and shows up nicer in some programs.
Philipp Hagemeister 11 lat temu
rodzic
commit
e3946f989e
2 zmienionych plików z 19 dodań i 0 usunięć
  1. 4 0
      youtube_dl/__init__.py
  2. 15 0
      youtube_dl/utils.py

+ 4 - 0
youtube_dl/__init__.py

@@ -62,6 +62,7 @@ from .utils import (
     MaxDownloadsReached,
     MaxDownloadsReached,
     preferredencoding,
     preferredencoding,
     SameFileError,
     SameFileError,
+    setproctitle,
     std_headers,
     std_headers,
     write_string,
     write_string,
 )
 )
@@ -471,12 +472,15 @@ def parseOpts(overrideArguments=None):
 
 
     return parser, opts, args
     return parser, opts, args
 
 
+
 def _real_main(argv=None):
 def _real_main(argv=None):
     # Compatibility fixes for Windows
     # Compatibility fixes for Windows
     if sys.platform == 'win32':
     if sys.platform == 'win32':
         # https://github.com/rg3/youtube-dl/issues/820
         # https://github.com/rg3/youtube-dl/issues/820
         codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None)
         codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None)
 
 
+    setproctitle(u'youtube-dl')
+
     parser, opts, args = parseOpts(argv)
     parser, opts, args = parseOpts(argv)
 
 
     # Set user agent
     # Set user agent

+ 15 - 0
youtube_dl/utils.py

@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 
 
+import ctypes
 import datetime
 import datetime
 import email.utils
 import email.utils
 import errno
 import errno
@@ -1062,3 +1063,17 @@ def month_by_name(name):
 def fix_xml_all_ampersand(xml_str):
 def fix_xml_all_ampersand(xml_str):
     """Replace all the '&' by '&' in XML"""
     """Replace all the '&' by '&' in XML"""
     return xml_str.replace(u'&', u'&')
     return xml_str.replace(u'&', u'&')
+
+
+def setproctitle(title):
+    try:
+        libc = ctypes.cdll.LoadLibrary("libc.so.6")
+    except OSError:
+        return
+    title = title
+    buf = ctypes.create_string_buffer(len(title) + 1)
+    buf.value = title
+    try:
+        libc.prctl(15, ctypes.byref(buf), 0, 0, 0)
+    except AttributeError:
+        return  # Strange libc, just skip this