Browse Source

dirty

master
schmicma 4 years ago
parent
commit
9ad4f2fb31
  1. 2
      download.js
  2. 2
      kplayer.xcodeproj/xcuserdata/marcoschmickler.xcuserdatad/xcschemes/xcschememanagement.plist
  3. 3
      kplayer/core/KSettings.swift
  4. 3
      kplayer/master/KSettingsView.swift
  5. 129
      kplayer/server/kplayer.js
  6. 1
      kplayer/server/sync.sh
  7. 26
      kplayer/server/test/test.http
  8. 41
      kplayer/web/WebView.swift
  9. 1
      kplayer/web/WebViewModel.swift
  10. 9
      package.json

2
download.js

@ -37,7 +37,7 @@
linkname = "href"
}
else if (window.location.hostname.endsWith("dickdrainers.com")) {
links = document.querySelectorAll('a[title="Right click the link below and select save as to download:"]')
links = document.querySelectorAll('a[title="Right click the link below and select save as to download:"], a[src*="members"]')
linkname = "href"
}
else if (window.location.hostname == "www.kink.com") {

2
kplayer.xcodeproj/xcuserdata/marcoschmickler.xcuserdatad/xcschemes/xcschememanagement.plist

@ -19,7 +19,7 @@
<key>isShown</key>
<false />
<key>orderHint</key>
<integer>4</integer>
<integer>5</integer>
</dict>
<key>kplayerTests.testMyExample.xcscheme</key>
<dict>

3
kplayer/core/KSettings.swift

@ -21,6 +21,9 @@ class KSettings: ObservableObject {
@Published
var automaticallyWaitsToMinimizeStalling = true
@Published
var webBlockImages = false
convenience init(model: KSettingsModel) {
self.init()
scale = model.scale

3
kplayer/master/KSettingsView.swift

@ -30,6 +30,9 @@ struct KSettingsView: View {
Toggle(isOn: $kSettings.automaticallyWaitsToMinimizeStalling, label: {
Text("Stalling")
})
Toggle(isOn: $kSettings.webBlockImages, label: {
Text("images")
})
}
}
Button(action: {

129
kplayer/server/kplayer.js

@ -4,30 +4,8 @@
var express = require('express');
var fs = require("fs");
var path = require("path");
var queue = require('queue');
var wget = require('wget-improved');
var downloadUrl = function(url, dest) {
return function(cb) {
try {
// you can also change the mapping url to file here by changing the function
var download = wget.download(url, dest, {});
download.on('end', function() {
() => console.log("done downloading")
});
} catch (e) {
}
};
};
var q = queue();
//change this one as needed.
q.concurrency = 2;
//q.start();
const { exec } = require('child_process');
const { exec, execSync} = require('child_process');
const bodyParser= require('body-parser')
@ -214,7 +192,7 @@ app.get('/killffmpeg', function (req, res) {
res.end(cmd)
})
app.get('/webdl', function (req, res) {
app.get('/webdl1', function (req, res) {
var p = req.query.url
var n = "/srv/samba/ren/webdl/" + req.query.name
@ -270,20 +248,6 @@ app.get('/webdl', function (req, res) {
res.send(p)
})
app.get('/pushdl', function (req, res) {
var p = req.query.url
var n = "/srv/samba/ren/webdl/" + req.query.name
q.push(downloadUrl(p,n));
console.log("all urls pushed");
// q.start()
})
app.get('/queuelen', function (req, res) {
res.end("Len" + q.length)
})
app.get('/deleteThumb/*', function (req, res) {
if (req.path.startsWith("/deleteThumb/srv/samba/ren/thumb/")) {
var p = req.path.substr(12)
@ -323,6 +287,95 @@ app.post('/upload', upload.any() , (req, res, next) => {
res.send("ok")
})
var running = []
function countWget() {
var cmd = 'ps -fA | grep wget | wc -l'
console.log(cmd)
const execSync = require('child_process').execSync;
var code = execSync(cmd);
return parseInt("" + code) - 2
}
var downloadUrl = async function(job) {
console.log("download " + job.url)
await new Promise(resolve => setTimeout(resolve, 5000));
console.log("downloaded " + job.url)
}
function downloadWget(job) {
running.push(job)
var joburl = job.url
var cmd = 'wget -b -O "'+job.folder+'" '
cmd = cmd + '--header="Cookie: ' + job.cookie + '" '
cmd = cmd + '"'+joburl+'"'
console.log(cmd)
exec(cmd, (err, stdout, stderr) => {
running = running.filter(function(el) { return el.url != joburl; });
if (err) {
console.log(err)
// node couldn't execute the command
return;
}
// the *entire* stdout and stderr (buffered)
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
}
var q = [];
app.get('/webdl', function (req, res) {
var p = req.query.url
var n = "/srv/samba/ren/webdl/" + req.query.name
var c = req.query.cookies
if (fs.existsSync(n)) {
res.send("exists")
return
}
q.push({url: p, folder: n, cookie: c});
console.log("all urls pushed");
res.end("ok")
})
app.get('/queuelen', function (req, res) {
for (var job of running) {
res.write(job.url+"\n")
}
res.write("---\n")
for (var job of q) {
res.write(job.url+"\n")
}
res.end("Len " + q.length)
})
function mainloop() {
var cnt = countWget()
if (cnt < 2 && q.length > 0) {
var job = q.shift()
downloadWget(job)
}
setTimeout(function () {
// Do Something Here
// Then recall the parent function to
// create a recursive loop.
mainloop();
}, 1000);
}
mainloop()
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port

1
kplayer/server/sync.sh

@ -0,0 +1 @@
rsync kplayer.js marco@linkstation:/srv/samba/daten/node

26
kplayer/server/test/test.http

@ -0,0 +1,26 @@
GET http://localhost:8081/pushdl?url=hello&n=test
Accept: application/json
###
GET http://localhost:8081/pushdl?url=hello2&n=test
Accept: application/json
###
GET http://localhost:8081/pushdl?url=hello3&n=test
Accept: application/json
###
GET http://localhost:8081/pushdl?url=hello4&n=test
Accept: application/json
###
GET http://localhost:8081/pushdl?url=hello5&n=test
Accept: application/json
###
GET http://linkstation:8081/queuelen
Accept: application/json
###

41
kplayer/web/WebView.swift

@ -49,6 +49,43 @@ struct WebView: UIViewRepresentable, WebViewHandlerDelegate {
configuration.userContentController.add(coordinator, name: "jsError")
configuration.userContentController.add(coordinator, name: "openDocument")
configuration.preferences = preferences
let blockRules = """
[
{
"trigger": {
"url-filter": ".*",
"resource-type": ["image"]
},
"action": {
"type": "block"
}
},
{
"trigger": {
"url-filter": ".*",
"resource-type": ["media"]
},
"action": {
"type": "block"
}
}
]
""";
if LocalManager.sharedInstance.settings.webBlockImages {
WKContentRuleListStore.default().compileContentRuleList(
forIdentifier: "ContentBlockingRules",
encodedContentRuleList: blockRules) { (contentRuleList, error) in
if let error = error {
print(error)
}
configuration.userContentController.add(contentRuleList!)
}
}
let webView = WKWebView(frame: CGRect.zero, configuration: configuration)
webView.navigationDelegate = context.coordinator
@ -180,7 +217,9 @@ print(body)
do {
let data = (message.body as! String).data(using: .utf8)
let jsonObject = try JSONSerialization.jsonObject(with: data!, options: [])
parent.viewModel.downloadPublisher.send(jsonObject as! [String])
let t = jsonObject as! [String]
parent.viewModel.downloadPublisher.send(t)
} catch {
}
}

1
kplayer/web/WebViewModel.swift

@ -17,6 +17,7 @@ class WebViewModel: ObservableObject {
var valuePublisher = PassthroughSubject<String, Never>()
var downloadPublisher = PassthroughSubject<[String], Never>()
var httpCookieStore: WKHTTPCookieStore?
var overview = false
}
// For identifiying WebView's forward and backward navigation

9
package.json

@ -0,0 +1,9 @@
{
"name": "kplayer",
"version": "1.0.0",
"dependencies": {
"express": "^4.17.3",
"queue" : "^6.0.2",
"multer" : "^1.4.4"
}
}
Loading…
Cancel
Save