Last active
January 22, 2020 15:40
-
-
Save pigfoot/7fe1385ae52c5641aa4c3cf2212c2fde to your computer and use it in GitHub Desktop.
AppleDaily No Member
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name AppleDaily No Member | |
// @version 1.0.1 | |
// @description A fork/expansion of the https://addons.mozilla.org/firefox/addon/tw-apple-daily-news-revealer/ | |
// @include /^https?:\/\/.*\.appledaily\.com\/.*$/ | |
// @namespace https://gist.github.com/pigfoot/7fe1385ae52c5641aa4c3cf2212c2fde | |
// @author pigfoot Chen | |
// @run-at document-start | |
// @grant none | |
// ==/UserScript== | |
// credit from https://github.com/chuck-lee/tw-apple-daily-news-revealer | |
var PRESERVE_IDS = [ | |
'playerVideo', | |
'video_player' | |
]; | |
var PRESERVE_CLASSES = [ | |
'ndAritcle_headPic', | |
'ndArticle_margin', | |
'mediabox', | |
'article-content', | |
'articulum' | |
]; | |
var PRESERVED_DOM_ELEMENTS = {}; | |
function is_fusion_page_desktop() | |
{ | |
CONTENT_VARIABLE_START_STRING = "Fusion.globalContent="; | |
inline_script_elements = document.querySelectorAll("script:not([src])"); | |
for (var i = 0; i < inline_script_elements.length; i++) { | |
inline_script = inline_script_elements[i].text; | |
content_script_start = inline_script.indexOf(CONTENT_VARIABLE_START_STRING); | |
if (content_script_start < 0) { | |
continue; | |
} | |
return true; | |
} | |
return false | |
} | |
function reveal_fusion_page_desktop() | |
{ | |
document.querySelector(".paywall_fade").style.display = "none"; | |
document.querySelector("#articleOmo").style.display = "none"; | |
document.querySelector("#articleBody").class = "article_body"; | |
document.querySelector("#articleBody").style = ""; | |
} | |
function reset_overflow_mobile() | |
{ | |
document.body.style.overflowY = 'auto'; | |
document.body.style.overflowX = 'auto'; | |
var page_role_elements = document.querySelectorAll('[data-role="page"]'); | |
for (var i = 0; i < page_role_elements.length; i++) { | |
page_role_elements[i].style.overflowY = 'auto'; | |
} | |
} | |
function stop_secret_action_mobile() | |
{ | |
var rehide_interval = XPCNativeWrapper( | |
window.wrappedJSObject['contentV'] | |
); | |
if (typeof(rehide_interval) == 'number') { | |
window.clearInterval(rehide_interval); | |
} | |
} | |
function reveal_content_mobile() | |
{ | |
stop_secret_action_mobile(); | |
var ndgPayway = document.getElementsByClassName('ndgPayway'); | |
for (var i = 0; i < ndgPayway.length; i++) { | |
ndgPayway[i].style.display = 'none'; | |
} | |
// Apple daily sets a timeout to disable scrolling again. | |
setTimeout(function(){ | |
reset_overflow_mobile(); | |
}, 2500); | |
} | |
var debug_div = document.createElement('div'); | |
function debug(message) | |
{ | |
var debug_p = document.createElement('p'); | |
var debug_message = document.createTextNode(message); | |
debug_p.appendChild(debug_message); | |
debug_div.appendChild(debug_p); | |
} | |
function show_debug(element) | |
{ | |
element.appendChild(debug_div); | |
} | |
function reveal_video_desktop() | |
{ | |
var video_data_json = null; | |
if (PRESERVED_DOM_ELEMENTS['video_player'] !== undefined) { | |
video_data_json = PRESERVED_DOM_ELEMENTS['video_player'].childNodes[0].dataset['anvp']; | |
} else if (PRESERVED_DOM_ELEMENTS['playerVideo'] !== undefined) { | |
video_data_json = PRESERVED_DOM_ELEMENTS['playerVideo'].childNodes[0].lastChild.dataset['anvp']; | |
} | |
if (video_data_json === null) { | |
return; | |
} | |
try { | |
// Reconstruct video content | |
var video_data = JSON.parse(video_data_json); | |
var source = document.createElement("source"); | |
source.src = video_data['url']; | |
source.type = 'video/mp4'; | |
var video = document.createElement('video'); | |
video.style.width = video_data['width']; | |
video.style.height = video_data['height']; | |
video.autoplay = false; | |
video.controls = true; | |
video.appendChild(source); | |
video.load(); | |
// Restore video content | |
var thoracis = document.querySelector('.thoracis'); | |
if (thoracis != null) { | |
thoracis.appendChild(video); | |
return; | |
} | |
var ndPaywall = document.querySelector('.ndPaywall'); | |
debug(ndPaywall.length); | |
if (ndPaywall != null) { | |
ndPaywall.parentNode.insertBefore(video, ndPaywall); | |
return; | |
} | |
} catch (e) { | |
; | |
} | |
} | |
function stop_secret_action_desktop(secret_element) | |
{ | |
var parent_element = secret_element.parentNode; | |
var div_element = document.createElement('div'); | |
div_element.style.display = 'none'; | |
parent_element.replaceChild(div_element, secret_element); | |
div_element.appendChild(secret_element); | |
} | |
function hide_secret_tag_in_destkop_article_element(article_element) | |
{ | |
var secret_element_tag_name_regex = /[a-zA-Z0-9]{33}-[a-zA-Z0-9]{32}/; | |
var element_tag_list = article_element.getElementsByTagName("*"); | |
for (var i = 0; i < element_tag_list.length; i++) { | |
var element = element_tag_list[i]; | |
if (element.tagName.search(secret_element_tag_name_regex) >= 0) { | |
stop_secret_action_desktop(element); | |
return article_element; | |
} | |
} | |
} | |
function reveal_article_desktop() | |
{ | |
try { | |
if (PRESERVED_DOM_ELEMENTS['ndArticle_margin'] !== undefined) { | |
// Find and hide the secret element in the content to bypass content re-hide | |
var article_element = hide_secret_tag_in_destkop_article_element( | |
PRESERVED_DOM_ELEMENTS['ndArticle_margin'] | |
); | |
// Restore article content | |
var ndArticle_content = document.getElementsByClassName('ndArticle_content')[0]; | |
ndArticle_content.insertBefore(article_element, | |
ndArticle_content.childNodes[0]); | |
} else if (PRESERVED_DOM_ELEMENTS['articulum'] !== undefined) { | |
// Find and hide the secret element in the content to bypass content re-hide | |
var article_element = hide_secret_tag_in_destkop_article_element( | |
PRESERVED_DOM_ELEMENTS['articulum'] | |
); | |
// Restore article content | |
var abdominis = document.getElementsByClassName('abdominis')[0]; | |
var article = abdominis.getElementsByTagName('article')[0]; | |
abdominis.insertBefore(article_element, article.nextSibling); | |
} else if (PRESERVED_DOM_ELEMENTS['article-content'] !== undefined) { | |
// Find and hide the secret element in the content to bypass content re-hide | |
var article_element = hide_secret_tag_in_destkop_article_element( | |
PRESERVED_DOM_ELEMENTS['article-content'] | |
); | |
// Restore article content | |
var video_player_wrap_element = article_element.getElementsByClassName('video-player-wrap'); | |
for (var i = 0; i < video_player_wrap_element.length; i++) { | |
video_player_wrap_element[i].style.display = 'none'; | |
} | |
var ndPaywall = document.getElementsByClassName('ndPaywall')[0]; | |
ndPaywall.parentNode.insertBefore(article_element, ndPaywall.nextSibling); | |
} else if (is_fusion_page_desktop()) { | |
reveal_fusion_page_desktop(); | |
} | |
} catch (e) { | |
; | |
} | |
} | |
function reveal_content_desktop() | |
{ | |
var ndPaywall = document.getElementsByClassName('ndPaywall'); | |
for (var i = 0; i < ndPaywall.length; i++) { | |
ndPaywall[i].style.display = 'none'; | |
} | |
var ndPaywallVideo = document.getElementsByClassName('ndPaywallVideo'); | |
for (var i = 0; i < ndPaywallVideo.length; i++) { | |
ndPaywallVideo[i].style.display = 'none'; | |
} | |
// Restore deleted content | |
reveal_video_desktop(); | |
reveal_article_desktop(); | |
} | |
function reveal_content() | |
{ | |
// Detect site mode. | |
var isMobile = document.body.classList.contains("ui-mobile-viewport") || | |
document.body.style.overflowY != ''; | |
if (isMobile) { | |
reveal_content_mobile(); | |
return; | |
} | |
reveal_content_desktop(); | |
} | |
document.addEventListener('readystatechange', (event) => { | |
if (document.readyState == "complete") { | |
reveal_content(); | |
} | |
}) | |
function preserve_node(node) | |
{ | |
for (var i = 0; i < PRESERVE_IDS.length; i++) { | |
var preserve_id = PRESERVE_IDS[i]; | |
if (node.id == preserve_id) { | |
PRESERVED_DOM_ELEMENTS[preserve_id] = node.cloneNode(true); | |
PRESERVED_DOM_ELEMENTS[preserve_id].style.display = 'block'; | |
PRESERVED_DOM_ELEMENTS[preserve_id].style.visibility = 'visible'; | |
return; | |
} | |
} | |
for (var i = 0; i < PRESERVE_CLASSES.length; i++) { | |
var preserve_class = PRESERVE_CLASSES[i]; | |
if (node.classList.contains(preserve_class)) { | |
PRESERVED_DOM_ELEMENTS[preserve_class] = node.cloneNode(true); | |
PRESERVED_DOM_ELEMENTS[preserve_class].style.display = 'block'; | |
PRESERVED_DOM_ELEMENTS[preserve_class].style.visibility = 'visible'; | |
return; | |
} | |
} | |
} | |
var config = {childList: true, subtree: true}; | |
var observer = new MutationObserver(function(mutations) { | |
mutations.forEach(function(mutation) { | |
if (mutation.type != 'childList') { | |
return; | |
} | |
// Preserve content node | |
for (var i = 0; i < mutation.removedNodes.length; i++) { | |
preserve_node(mutation.removedNodes[i]); | |
} | |
}); | |
}) | |
observer.observe(document, config); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Don't click "Raw" to install otherwise it cannot be updated.
Install: https://gist.github.com/pigfoot/7fe1385ae52c5641aa4c3cf2212c2fde/raw/tw-apple-daily-news-revealer.user.js