webm to mpv opener

Changes 4chan (fileText.webm) urls to a localhost url. The local server opens mpv to play the video.

  1. // ==UserScript==
  2. // @name webm to mpv opener
  3. // @version 1.0.4
  4. // @description Changes 4chan (fileText.webm) urls to a localhost url. The local server opens mpv to play the video.
  5. // @namespace https://greasyfork.org/users/3159
  6. // @include http*://boards.4chan*.org/*/*
  7. // ==/UserScript==
  8. a = document.getElementsByClassName('fileText');
  9. for (i = 0; i < a.length; i++) {
  10. b = a[i].children[0];
  11. if (b.href.indexOf('.webm') > -1) {
  12. b.href = "http://127.0.0.1:4040?i=" + b;
  13. b.removeAttribute('target');
  14. }
  15. }
  16. /*
  17. My mpv config text file (~/config/mpv/mpv.conf) has:
  18. autofit-larger=100%x100%
  19. loop=inf
  20.  
  21. Create a link to mpv:
  22. sudo ln -s /Applications/mpv.app/Contents/MacOS/mpv /usr/bin/mpv
  23.  
  24. //mpv_server.py, on your computer somewhere
  25.  
  26. import os, subprocess, urllib.parse
  27. import http.server, socketserver
  28. server_address = 4040
  29.  
  30. class MyHandler(http.server.BaseHTTPRequestHandler):
  31. def do_GET(self):
  32. parsedParams = urllib.parse.urlparse(self.path)
  33. parsed_query = urllib.parse.parse_qs(parsedParams.query)
  34. url = parsed_query['i'][0]
  35. self.send_error(204)
  36. os.system('pkill mpv') #only one
  37. subprocess.Popen(
  38. ['mpv','-no-audio',url], #disabled audio
  39. stdout=subprocess.PIPE
  40. )
  41.  
  42. Handler = MyHandler
  43. httpd = socketserver.TCPServer(('', server_address), Handler)
  44. print("serving at port ", server_address)
  45. httpd.serve_forever()
  46.  
  47. //mpv_server_launcher.command, auto start | system preferences > users & groups > login items
  48.  
  49. #!/bin/bash
  50. nohup python /Users/david/Dropbox/Documents/scripts/mpv_server.py >/dev/null 2>&1 &
  51. osascript -e 'tell application "Terminal" to quit'
  52.  
  53. */