19 changed files with 398 additions and 20 deletions
-
1Podfile
-
2Pods/Nimbus/src/photos/src/NIPhotoScrollView.m
-
2Pods/WebBrowser/WebBrowser/WebBrowserViewController.swift
-
10kplayer.xcodeproj/project.pbxproj
-
2kplayer/Info.plist
-
14kplayer/core/MediaItem.swift
-
5kplayer/core/MediaModel.swift
-
66kplayer/core/NetworkManager.swift
-
51kplayer/core/ThumbnailCache.swift
-
45kplayer/detail/BrowserController.swift
-
28kplayer/detail/DetailViewController.swift
-
4kplayer/detail/VideoController.swift
-
4kplayer/master/MasterViewController.swift
-
2kplayer/master/NetworkDelegate.swift
-
54kplayer/photo/PhotoController.swift
-
97kplayer/server/download.js
-
12kplayer/server/links.html
-
8kplayer/util/FileHelper.swift
-
11kplayer/util/ImageLoadOperation.swift
@ -0,0 +1,97 @@ |
|||||
|
(async function download() { |
||||
|
try { |
||||
|
window.webkit.messageHandlers.jsError.postMessage(document.cookie) |
||||
|
window.webkit.messageHandlers.jsError.postMessage(window.location.hostname) |
||||
|
|
||||
|
var links = [] |
||||
|
var linkname = "href" |
||||
|
window.kplayerUrls = [] |
||||
|
|
||||
|
if (window.location.hostname.endsWith("hegre.com")) { |
||||
|
links = document.querySelectorAll('a[class="members-only"], a[class="image-download"]') |
||||
|
linkname = "href" |
||||
|
} |
||||
|
else if (window.location.hostname == "www.kink.com") { |
||||
|
links = document.querySelectorAll('span[data-resolution="720"], span[data-resolution="1080"]') |
||||
|
linkname = "data-url" |
||||
|
} |
||||
|
else if (window.location.hostname.endsWith("xhamster.com")) { |
||||
|
var lnks = document.querySelectorAll('link[rel="preload"]') |
||||
|
|
||||
|
for (var i=0; i<lnks.length; ++i) { |
||||
|
var u = lnks[i].href |
||||
|
if (u.indexOf(".m3u8")>0) { |
||||
|
var base = u.split('/').slice(0,3).join('/') |
||||
|
window.webkit.messageHandlers.jsError.postMessage('base: ' + base) |
||||
|
window.webkit.messageHandlers.jsError.postMessage('url: ' + u) |
||||
|
var r = await fetch(u) |
||||
|
var data = await r.text() |
||||
|
|
||||
|
// Do something with your data
|
||||
|
var lines = data.split('\n') |
||||
|
|
||||
|
for (let l of lines) { |
||||
|
if (!l.startsWith("#")) { |
||||
|
window.webkit.messageHandlers.jsError.postMessage('l: ' + base + l) |
||||
|
|
||||
|
window.kplayerUrls.push(base + l) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
else if (window.location.hostname.endsWith("xvideos.com")) { |
||||
|
if (html5player) { |
||||
|
if (html5player.url_hls) { |
||||
|
var u = html5player.url_hls |
||||
|
window.webkit.messageHandlers.jsError.postMessage(u) |
||||
|
|
||||
|
if (u.indexOf("hls.m3u8")>0) { |
||||
|
var base = u.split('/').slice(0,-1).join('/') |
||||
|
var r = await fetch(u) |
||||
|
var data = await r.text() |
||||
|
|
||||
|
// Do something with your data
|
||||
|
var lines = data.split('\n') |
||||
|
|
||||
|
for (let l of lines) { |
||||
|
if (!l.startsWith("#")) { |
||||
|
window.kplayerUrls.push(base + "/" + l) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
window.webkit.messageHandlers.jsError.postMessage(JSON.stringify(window.kplayerUrls)) |
||||
|
|
||||
|
window.kplayerUrls.push(u) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
links.forEach( |
||||
|
function(currentValue, currentIndex, listObj) { |
||||
|
window.webkit.messageHandlers.jsError.postMessage(JSON.stringify(currentValue)) |
||||
|
|
||||
|
window.kplayerUrls.push(currentValue.getAttribute(linkname)) |
||||
|
}, |
||||
|
'myThisArg' |
||||
|
); |
||||
|
window.webkit.messageHandlers.openDocument.postMessage(JSON.stringify(window.kplayerUrls)); |
||||
|
|
||||
|
// window.webkit.messageHandlers.jsError.postMessage("k"+links);
|
||||
|
// we use a second try block here to have more detailed error information
|
||||
|
// because of the nature of JS the outer try-catch doesn't know anything where the error happended
|
||||
|
let res; |
||||
|
try { |
||||
|
|
||||
|
} catch (err) { |
||||
|
window.webkit.messageHandlers.jsError.postMessage('fetch threw, error: '+ err ); |
||||
|
return; |
||||
|
} |
||||
|
} catch (err) { |
||||
|
window.webkit.messageHandlers.jsError.postMessage('fetch threw, error: '+ err); |
||||
|
return; |
||||
|
} |
||||
|
})(); |
||||
|
// null is needed here as this eval returns the last statement and we can't return a promise
|
||||
|
null; |
||||
@ -0,0 +1,12 @@ |
|||||
|
<html> |
||||
|
<body> |
||||
|
<a href="https://www.google.de">Google</a> |
||||
|
<a href="https://www.xvideos.com">XVID</a> |
||||
|
<a href="https://www.xhamster.com">XVID</a> |
||||
|
<a href="https://www.letsdoeit.com">XVID</a> |
||||
|
<a href="https://www.debt4k.com">XVID</a> |
||||
|
<a href="https://www.kink.com">XVID</a> |
||||
|
<a href="https://www.hegre.com">XVID</a> |
||||
|
</body> |
||||
|
</html> |
||||
|
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue