I am using plyr to play YouTube videos. I would like to hide the data-plyr-provider
definition from the html file. It is always going to be YouTube.
Currently I am using this code
<div class="container">
<div id="player" data-plyr-provider="youtube" data-plyr-embed-id="somegoogleid"></div>
</div>
<script src='https://web.con/124141/users/plyr/plyr.min.js'></script>
<script>
const player = new Plyr('#player', {});
// Expose player so it can be used from the console
window.player = player;
</script>
What I want to hide is the code in the red box
I was thinking that I can modify plyr.min.js
I am using and hardcode the string YouTube but when looking into the code I am not able to do so. I mean I cannot find the right place.
The only reference of data-plyr-provider
in the .js I found is this line
attributes: { embed: { provider: "data-plyr-provider", id: "data-plyr-embed-id" } },
Can some one help? Where to modify the code or if there is any other way how to hide plyr.min.js
I'm not sure i really need to write this down here but there is no offical way to pass an attributes directly into Plyr
constructor.
So what you can you fork it your own then change the lines like following: on plyr.js inside src/js/plyr.js close the lines: #201, #205 and add:
this.provider = 'youtube'; // on line #202
In this way you can create Plyr's from "div" source.
iframe is gonna stay as it is. If you provide iframe it's gonna work as it is.
After all:
npm run build
Create your own build and then use the plyr.min.js from your dist folder with following:
<div id="player" data-plyr-id="https://www.youtube.com/watch?v=SF0w2B6DNUE"></div>
const player = new Plyr('#player');
// Expose player so it can be used from the console
window.player = player;
There you go. An un-offical way to create a plyr specs to youtube online with div creator =)
Update #1:
Just before changes, please checkout to last production build. It may gets broken when you just do it on master branch =)
Update #2: So since you told me that you don't know how to do it, I'll try to explain.
So first thing first, please go visit https://github.com/sampotts/plyr
After this;
git clone https://github.com/sampotts/plyr.git
cd plyr
npm i
code .
will open it with VSCode)After that open the file from the next picture:
Go to line #202 and you wil see following:
On here if you look up you will see this part of code is actually for type div
anyway. As you can see there you get the provider from the line #201:
this.provider = this.media.getAttribute(this.config.attributes.embed.provider)
So comment this line(#201) out and add the following to line #202
this.provider = 'youtube';
And also don't forget to comment line #204 which gives us to end result of:
After these changes, (I believe you have node
installed)
git checkout v3.6.2
git add .
git commit -m "provider set to youtube only"
npm run build
After these steps, you will have the builded code from your js and css files from dist
folder.
Please Backup your js files before doing following:
dist/
folder to your server. (plyr.min.js and plyr.css)You should be able to use everything from top.
I hope you could finally use it =)
Update #3:
Lets also add the dirty way of doing it from @Steve
@Radek, if you go this route, you should go through all the steps if you have time, but if you're looking for something quick and dirty, you can search plyr.min.js for
this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider)
and replacing it with
this.provider='youtube'