When we designed PVYmedia, we had a few things in mind, to enhance the system and make certain lives easier, not only for publisher or communities to raise their own thing, but also for Web Agencies, Developers and also non-professional Web Editors, which has equal rights to deliver great and meaningful content to the world.
For following CMS System we have Plugins, or so called Extensions available:
These Plugins you can download withing our PVYappstore. If you are thirdparty-developer doing something for a PVY empowered customer, you can always contact our helpdesk for getting the right repo. We plan to release those things early in 2025 to a public available Git Repo, since these plugins require regulary maintenance in terms of flavor/manifest.
Base URL: https://mypvymedia.tld
Once correctly entered, saved in your Content Management System, you can pase the full string from the Share Menu of the particular media you like to embedd into your website, and optional with the startpoint the video shall start to play, the result you can see below.
If your CMS contains already a Video Plugin, which let you quickly paste a Video Url from other major platforms such as Youtube, Vimeo and so one, you can also enhance that plugin or file in your webroot relatively easely, with adding the Regex Options how your system shall render the videon in HTML according with your CSS.
/(?:tv\.pvy\.swiss\/)(?:embed|view)(?:\?m=)([a-zA-Z0-9]+)/
where you put in in front the declaration of the Video Portal, such as done with others (usually a file called videoplayer.js):
arabic: '\u0600-\u06ff\u0750-\u077f\ufb50-\ufc3f\ufe70-\ufefc',
cjk: '\u4E00-\u9FBF\u3040-\u309F\u30A0-\u30FFㄱ-ㅎ가-힣ㅏ-ㅣ',
youtube: /(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|&v(?:i)?=))([^#&?]*).*/,
vimeo: /vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|album\/(?:\d+)\/video\/|)(\d+)(?:$|\/|\?)/,
dailymotion: /(?:dailymotion\.com(?:\/embed)?(?:\/video|\/hub)|dai\.ly)\/([0-9a-z]+)(?:[-_0-9a-zA-Z]+(?:#video=)?([a-z0-9]+)?)?/
pvymedia: /(?:tv\.pvy\.swiss\/)(?:embed|view)(?:\?m=)([a-zA-Z0-9]+)/
}
Then you can simply copy on the PVYmedia Portal the URL for sharing, and paste it into your content, and its being rendered on your website automatically:
https://tv.pvy.swiss/view?m=V4XmvbmHv
which then looks like this:
https://tv.pvy.swiss/view?m=V4XmvbmHv
https://www.youtube.com/watch?v=ajsLmZia6UU
which then looks like this:
https://www.youtube.com/watch?v=ajsLmZia6UU
And if you watched the Video above, you now understand why you need and should use PVYvpn, not affected from this security holes.
The given HTML Injection before the body </body>
closing tag looks like:
<script type="text/javascript">
function replaceGermanLocals() {
var x = document.getElementsByClassName("text-none");
var i;
for (i = 0; i < x.length; i++) {
x[i].innerText = x[i].innerText.replace(/Kommentar veröffentlichen/g, 'OK');
}
}
const rxYoutube = /^.*^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/|shorts\/)?)([\w\-]+)(\S+)?$/
const rxScreencast = /^.*^((?:https?:)?\/\/)?(www\.)?(screencast\.com)(\/users)\/([a-z0-9_-]+)\/folders\/([a-z0-9%_-]+)\/media\/([a-z0-9_-]+)(?:\/)?$/im
const rxPVYmedia = /(tv\.pvy\.swiss\/)(?:embed|video|view)(\?m=)([a-zA-Z0-9]+)/
function handleEmbeddedMedia() {
document.querySelectorAll('.contents oembed, .contents a').forEach(elm => {
const url = elm.hasAttribute('url') ? elm.getAttribute('url') : elm.getAttribute('href');
let newElmHtml = null;
const ytMatch = url.match(rxYoutube);
const pvMatch = url.match(rxPVYmedia);
const scMatch = url.match(rxScreencast);
if (ytMatch) {
newElmHtml = `<iframe id="ytplayer" type="text/html" width="640" height="360" src="https://www.youtube-nocookie.com/embed/${ytMatch[5]}" frameborder="0" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>`;
} else if (scMatch) {
newElmHtml = `<iframe id="scplayer" type="text/html" width="640" height="360" src="${url}/embed" frameborder="0" allowfullscreen></iframe>`;
} else if (pvMatch) {
newElmHtml = `<iframe id="pvplayer" type="text/html" width="640" height="360" src="${url.replace(rxPVYmedia, '$1embed$2$3')}" frameborder="0" allowfullscreen></iframe>`;
} else if (url.endsWith('.mp4')) {
newElmHtml = `<video controls autostart="0" name="media" width="640" height="360"><source src="${url}" type="video/mp4"></video>`;
} else {
return;
}
const newElm = document.createElement('div');
newElm.classList.add('responsive-embed');
newElm.insertAdjacentHTML('beforeend', newElmHtml);
elm.replaceWith(newElm);
});
}
window.onload = function() {
replaceGermanLocals();
handleEmbeddedMedia();
};
</script>
User can share anytime the Video by copy link, copy embed code, or even directly over pre-defined social media platforms with one click:
We utilize GraphQL as API for PVYmedia, and its also being used for our middle-ware to import/export media from or to other platforms. The API has to be enabled in the Backend and is protected by PVYcaptcha M2M/Bot Rate limiter. A full documentation will be made available soon. But you can build a mobile App around, if skilled coders are available. Or you can ask us, if we can build one for you…