Page MenuHomeDevCentral

No OneTemporary

diff --git a/roles/devserver/userland-home/files/dereckson/bin/http2pls b/roles/devserver/userland-home/files/dereckson/bin/http2pls
new file mode 100755
index 0000000..ff195d6
--- /dev/null
+++ b/roles/devserver/userland-home/files/dereckson/bin/http2pls
@@ -0,0 +1,69 @@
+#!/usr/bin/env python3
+
+from bs4 import BeautifulSoup
+from urllib import request, parse
+from os import path
+from sys import argv, exit, stderr
+
+
+def get_url(base_url, tag):
+ relative_url = tag.get('href')
+ return parse.urljoin(base_url, relative_url)
+
+
+def is_media_extension(extension):
+ valid_extensions = [
+ # Videos
+ ".avi", ".flv", ".mp4", ".wmv"
+ ]
+ return extension in valid_extensions
+
+
+def is_media_link(url):
+ extension = path.splitext(url)[1]
+ return is_media_extension(extension)
+
+
+def print_pls(url):
+ links = get_media_links(url)
+
+ if not links:
+ return
+
+ print("[playlist]")
+
+ i = 0
+ for link in links:
+ i += 1
+ print('File{:d}={:s}'.format(i, link))
+
+ print("")
+ print("NumberOfEntries={:d}".format(i))
+ print("Version=2")
+
+
+def get_media_links(url):
+ return [link for link in get_links(url) if is_media_link(link)]
+
+
+def get_links(url):
+ try:
+ with request.urlopen(url) as response:
+ body = response.read()
+
+ soup = BeautifulSoup(body, 'html.parser')
+ return [get_url(url, link) for link in soup.find_all('a')]
+ except ValueError:
+ print("No valid URL: " + url, file=stderr)
+ return []
+
+
+def run():
+ if len(argv) < 2:
+ exit(1)
+
+ print_pls(argv[1])
+
+
+if __name__ == "__main__":
+ run()
diff --git a/roles/devserver/userland-software/dev.sls b/roles/devserver/userland-software/dev.sls
index 331583d..2527edd 100644
--- a/roles/devserver/userland-software/dev.sls
+++ b/roles/devserver/userland-software/dev.sls
@@ -1,155 +1,159 @@
# -------------------------------------------------------------
# Salt — Provision dev software
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Project: Nasqueron
# Created: 2017-10-20
# License: Trivial work, not eligible to copyright
# -------------------------------------------------------------
{% from "map.jinja" import packages, packages_prefixes with context %}
# -------------------------------------------------------------
# C/C++
# -------------------------------------------------------------
devserver_software_dev_c:
pkg:
- installed
- pkgs:
- {{ packages.boost }}
- cmocka
- {{ packages.librabbitmq }}
# -------------------------------------------------------------
# Java
# -------------------------------------------------------------
devserver_software_dev_java:
pkg:
- installed
- pkgs:
- openjdk8
- apache-ant
- maven
# -------------------------------------------------------------
# .Net languages
# -------------------------------------------------------------
devserver_software_dev_dotnet:
pkg:
- installed
- pkgs:
- mono
# -------------------------------------------------------------
# Node
# -------------------------------------------------------------
devserver_software_dev_node:
pkg:
- installed
- pkgs:
- {{ packages.node }}
- npm
devserver_node_packages:
npm.installed:
- pkgs:
- bower
- browserify
- gulp
- grunt
- jsonlint
- react-tools
- require:
- pkg: devserver_software_dev_node
# -------------------------------------------------------------
# PHP
# -------------------------------------------------------------
devserver_software_dev_php:
pkg:
- installed
- pkgs:
- {{ packages.phpunit }}
# -------------------------------------------------------------
# Python
# -------------------------------------------------------------
devserver_software_dev_python:
pkg:
- installed
- pkgs:
+ # Modern Python 3 packages
+ - {{ packages_prefixes.python3 }}beautifulsoup
+
+ # Legacy packages
- {{ packages_prefixes.python2 }}nltk
- {{ packages_prefixes.python2 }}numpy
- {{ packages_prefixes.python2 }}virtualenv
# -------------------------------------------------------------
# Ruby
# -------------------------------------------------------------
devserver_software_dev_ruby:
pkg:
- installed
- pkgs:
- {{ packages_prefixes.rubygem }}rubocop
# -------------------------------------------------------------
# Rust
# -------------------------------------------------------------
devserver_software_dev_rust:
pkg:
- installed
- pkgs:
- rust
# -------------------------------------------------------------
# Shell
# -------------------------------------------------------------
devserver_software_dev_shell:
pkg:
- installed
- pkgs:
- hs-ShellCheck
# -------------------------------------------------------------
# TCL
# -------------------------------------------------------------
devserver_software_dev_tcl:
pkg:
- installed
- pkgs:
- rlwrap
- tcllib
- tclsoap
- {{ packages.tcltls }}
- {{ packages.tdom }}
# -------------------------------------------------------------
# Web development
# -------------------------------------------------------------
devserver_software_dev_web:
pkg:
- installed
- pkgs:
- memcached
- phantomjs
# -------------------------------------------------------------
# Tools like code review utilities
#
# Arcanist is installed in the Phabricator states
# -------------------------------------------------------------
devserver_software_dev_misctools:
pkg:
- installed
- pkgs:
- git-review

File Metadata

Mime Type
text/x-diff
Expires
Sat, Oct 11, 21:15 (1 d, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3064034
Default Alt Text
(5 KB)

Event Timeline