Skip to content

Add audio and video attributes to assets - #5045

Merged
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723
Jan 26, 2022
Merged

Add audio and video attributes to assets#5045
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723

Conversation

@edalzell

@edalzelledalzell commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

@edalzell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga (and @jacksleight), is this the right approach and likely to get merged? If so, I'll continue (and write tests etc).

@edalzelledalzell changed the title remove elseFetch audio/video information from the asset via getID3Jan 10, 2022
@jacksleight

jacksleight commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

Wow, thanks for implementing this, looks great!

I have a few thoughts, just based on how I imagined this might work:

  • Would it make sense to store the video dimensions under the same keys used for images:
    • video.resolution_x -> width
    • video.resolution_y -> height
  • I think it would be useful to include the audio/video length as well, which is under the playtime_seconds key.
    • playtime_seconds -> length (possibly rounded?)
  • Is there any value in storing the page count for PDFs and well? GetID3 supports it, and it feels like it might be useful data.
    • pdf.pages -> pages
  • Is it necessary to save all the other data under the audio and video keys? I guess there could be other stuff in there that people might want, but most of it probably isn't very useful.

@jasonvarga

Copy link
Copy Markdown
Member

is this the right approach and likely to get merged

Looks okay to me, although the naming of the keys (like Jack has pointed out) will probably need tweaking.

@edalzell

edalzell commented Jan 13, 2022

Copy link
Copy Markdown
ContributorAuthor

Bigger change than expected. I tested this locally and all looks good, however I can't get the audio test going, for some reason GetId3 is not using the faked disk and saying the faked test file doesn't exist.

What am I doing wrong?

@jasonvarga

Copy link
Copy Markdown
Member

Your "add (broken) test" commit passes. 🤔

Comment threadcomposer.json
jasonvarga
jasonvarga previously requested changes Jan 13, 2022
Comment threadsrc/Assets/Attributes.php Outdated
@edalzell

Copy link
Copy Markdown
ContributorAuthor

Your "add (broken) test" commit passes. 🤔

Ya there’s a mark skipped at the top

@jasonvarga

Copy link
Copy Markdown
Member

Ah missed that.

@edalzell
edalzell marked this pull request as ready for review January 16, 2022 02:24
@edalzell

Copy link
Copy Markdown
ContributorAuthor

OK, made those changes, but still need some help on the tests.

@arthurperton

Copy link
Copy Markdown
Contributor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

@edalzell

Copy link
Copy Markdown
ContributorAuthor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

Fixed, thanks!

@jasonvarga

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

@jackmcdade

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

I believe duration is the most commonly used industry term.

@jasonvarga

Copy link
Copy Markdown
Member

Sigh. That's the most obvious one too, now.

@jackmcdade

Copy link
Copy Markdown
Member

How do we feel about all these extra dependencies that are required for most of the features to work?

https://github.com/JamesHeinrich/getID3/blob/master/composer.json

@jasonvarga

jasonvarga commented Jan 17, 2022

Copy link
Copy Markdown
Member

They're just suggestions. They're only output on composer v1 when you create a new project.

On composer 2, when you create a new project, it's just one line, and we were getting it anyway.

62 package suggestions were added by new dependencies, use `composer suggest` to see details.

Comment threadsrc/Assets/Attributes.php Outdated
Comment threadsrc/Assets/Attributes.php Outdated
@jasonvarga

Copy link
Copy Markdown
Member

Okay, made a handful of tweaks here:

  • Brought back Dimensions.php. If someone was using it for some reason, it would be a breaking change for them. Now it works like it did, but it's marked as deprecated. We still use you new Attributes class though.
  • Added an ExtractInfo wrapper class to be able to test it more easily. I avoided calling it ID3 since it's technically not just ID3 stuff.
  • Removed the Laravel ID3 package in favor of the underlying ID3 package.

@jasonvargajasonvarga changed the title Fetch audio/video information from the asset via getID3Add audio and video attributes to assetsJan 26, 2022
@jasonvarga
jasonvarga merged commit 0580ac3 into statamic:3.2Jan 26, 2022
@schmidex

Copy link
Copy Markdown
Contributor

I' really happy to see this added (and tagged now).
But shouldn't the new meta attributes also be added to the AugmentedAsset so that they can be accessed in antlers?
Maybe in different formats like for size (duration_ seconds, duration_minutes...)

@edalzell
edalzell deleted the feature/id3-723 branch February 12, 2022 00:07
@edalzell

Copy link
Copy Markdown
ContributorAuthor

oh haha, yup!

@schmidex please either PR this in, or open a new FR.

@schmidex

Copy link
Copy Markdown
Contributor

I tried my best in #5265

@jasonvargajasonvarga mentioned this pull request Feb 13, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants

@edalzell@jacksleight@jasonvarga@arthurperton@jackmcdade@schmidex
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add audio and video attributes to assets by edalzell · Pull Request #5045 · statamic/cms · GitHub
Skip to content

Add audio and video attributes to assets - #5045

Merged
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723
Jan 26, 2022
Merged

Add audio and video attributes to assets#5045
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723

Conversation

@edalzell

@edalzelledalzell commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

@edalzell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga (and @jacksleight), is this the right approach and likely to get merged? If so, I'll continue (and write tests etc).

@edalzelledalzell changed the title remove elseFetch audio/video information from the asset via getID3Jan 10, 2022
@jacksleight

jacksleight commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

Wow, thanks for implementing this, looks great!

I have a few thoughts, just based on how I imagined this might work:

  • Would it make sense to store the video dimensions under the same keys used for images:
    • video.resolution_x -> width
    • video.resolution_y -> height
  • I think it would be useful to include the audio/video length as well, which is under the playtime_seconds key.
    • playtime_seconds -> length (possibly rounded?)
  • Is there any value in storing the page count for PDFs and well? GetID3 supports it, and it feels like it might be useful data.
    • pdf.pages -> pages
  • Is it necessary to save all the other data under the audio and video keys? I guess there could be other stuff in there that people might want, but most of it probably isn't very useful.

@jasonvarga

Copy link
Copy Markdown
Member

is this the right approach and likely to get merged

Looks okay to me, although the naming of the keys (like Jack has pointed out) will probably need tweaking.

@edalzell

edalzell commented Jan 13, 2022

Copy link
Copy Markdown
ContributorAuthor

Bigger change than expected. I tested this locally and all looks good, however I can't get the audio test going, for some reason GetId3 is not using the faked disk and saying the faked test file doesn't exist.

What am I doing wrong?

@jasonvarga

Copy link
Copy Markdown
Member

Your "add (broken) test" commit passes. 🤔

Comment threadcomposer.json
jasonvarga
jasonvarga previously requested changes Jan 13, 2022
Comment threadsrc/Assets/Attributes.php Outdated
@edalzell

Copy link
Copy Markdown
ContributorAuthor

Your "add (broken) test" commit passes. 🤔

Ya there’s a mark skipped at the top

@jasonvarga

Copy link
Copy Markdown
Member

Ah missed that.

@edalzell
edalzell marked this pull request as ready for review January 16, 2022 02:24
@edalzell

Copy link
Copy Markdown
ContributorAuthor

OK, made those changes, but still need some help on the tests.

@arthurperton

Copy link
Copy Markdown
Contributor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

@edalzell

Copy link
Copy Markdown
ContributorAuthor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

Fixed, thanks!

@jasonvarga

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

@jackmcdade

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

I believe duration is the most commonly used industry term.

@jasonvarga

Copy link
Copy Markdown
Member

Sigh. That's the most obvious one too, now.

@jackmcdade

Copy link
Copy Markdown
Member

How do we feel about all these extra dependencies that are required for most of the features to work?

https://github.com/JamesHeinrich/getID3/blob/master/composer.json

@jasonvarga

jasonvarga commented Jan 17, 2022

Copy link
Copy Markdown
Member

They're just suggestions. They're only output on composer v1 when you create a new project.

On composer 2, when you create a new project, it's just one line, and we were getting it anyway.

62 package suggestions were added by new dependencies, use `composer suggest` to see details.

Comment threadsrc/Assets/Attributes.php Outdated
Comment threadsrc/Assets/Attributes.php Outdated
@jasonvarga

Copy link
Copy Markdown
Member

Okay, made a handful of tweaks here:

  • Brought back Dimensions.php. If someone was using it for some reason, it would be a breaking change for them. Now it works like it did, but it's marked as deprecated. We still use you new Attributes class though.
  • Added an ExtractInfo wrapper class to be able to test it more easily. I avoided calling it ID3 since it's technically not just ID3 stuff.
  • Removed the Laravel ID3 package in favor of the underlying ID3 package.

@jasonvargajasonvarga changed the title Fetch audio/video information from the asset via getID3Add audio and video attributes to assetsJan 26, 2022
@jasonvarga
jasonvarga merged commit 0580ac3 into statamic:3.2Jan 26, 2022
@schmidex

Copy link
Copy Markdown
Contributor

I' really happy to see this added (and tagged now).
But shouldn't the new meta attributes also be added to the AugmentedAsset so that they can be accessed in antlers?
Maybe in different formats like for size (duration_ seconds, duration_minutes...)

@edalzell
edalzell deleted the feature/id3-723 branch February 12, 2022 00:07
@edalzell

Copy link
Copy Markdown
ContributorAuthor

oh haha, yup!

@schmidex please either PR this in, or open a new FR.

@schmidex

Copy link
Copy Markdown
Contributor

I tried my best in #5265

@jasonvargajasonvarga mentioned this pull request Feb 13, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants

@edalzell@jacksleight@jasonvarga@arthurperton@jackmcdade@schmidex
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add audio and video attributes to assets by edalzell · Pull Request #5045 · statamic/cms · GitHub
Skip to content

Add audio and video attributes to assets - #5045

Merged
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723
Jan 26, 2022
Merged

Add audio and video attributes to assets#5045
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723

Conversation

@edalzell

@edalzelledalzell commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

@edalzell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga (and @jacksleight), is this the right approach and likely to get merged? If so, I'll continue (and write tests etc).

@edalzelledalzell changed the title remove elseFetch audio/video information from the asset via getID3Jan 10, 2022
@jacksleight

jacksleight commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

Wow, thanks for implementing this, looks great!

I have a few thoughts, just based on how I imagined this might work:

  • Would it make sense to store the video dimensions under the same keys used for images:
    • video.resolution_x -> width
    • video.resolution_y -> height
  • I think it would be useful to include the audio/video length as well, which is under the playtime_seconds key.
    • playtime_seconds -> length (possibly rounded?)
  • Is there any value in storing the page count for PDFs and well? GetID3 supports it, and it feels like it might be useful data.
    • pdf.pages -> pages
  • Is it necessary to save all the other data under the audio and video keys? I guess there could be other stuff in there that people might want, but most of it probably isn't very useful.

@jasonvarga

Copy link
Copy Markdown
Member

is this the right approach and likely to get merged

Looks okay to me, although the naming of the keys (like Jack has pointed out) will probably need tweaking.

@edalzell

edalzell commented Jan 13, 2022

Copy link
Copy Markdown
ContributorAuthor

Bigger change than expected. I tested this locally and all looks good, however I can't get the audio test going, for some reason GetId3 is not using the faked disk and saying the faked test file doesn't exist.

What am I doing wrong?

@jasonvarga

Copy link
Copy Markdown
Member

Your "add (broken) test" commit passes. 🤔

Comment threadcomposer.json
jasonvarga
jasonvarga previously requested changes Jan 13, 2022
Comment threadsrc/Assets/Attributes.php Outdated
@edalzell

Copy link
Copy Markdown
ContributorAuthor

Your "add (broken) test" commit passes. 🤔

Ya there’s a mark skipped at the top

@jasonvarga

Copy link
Copy Markdown
Member

Ah missed that.

@edalzell
edalzell marked this pull request as ready for review January 16, 2022 02:24
@edalzell

Copy link
Copy Markdown
ContributorAuthor

OK, made those changes, but still need some help on the tests.

@arthurperton

Copy link
Copy Markdown
Contributor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

@edalzell

Copy link
Copy Markdown
ContributorAuthor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

Fixed, thanks!

@jasonvarga

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

@jackmcdade

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

I believe duration is the most commonly used industry term.

@jasonvarga

Copy link
Copy Markdown
Member

Sigh. That's the most obvious one too, now.

@jackmcdade

Copy link
Copy Markdown
Member

How do we feel about all these extra dependencies that are required for most of the features to work?

https://github.com/JamesHeinrich/getID3/blob/master/composer.json

@jasonvarga

jasonvarga commented Jan 17, 2022

Copy link
Copy Markdown
Member

They're just suggestions. They're only output on composer v1 when you create a new project.

On composer 2, when you create a new project, it's just one line, and we were getting it anyway.

62 package suggestions were added by new dependencies, use `composer suggest` to see details.

Comment threadsrc/Assets/Attributes.php Outdated
Comment threadsrc/Assets/Attributes.php Outdated
@jasonvarga

Copy link
Copy Markdown
Member

Okay, made a handful of tweaks here:

  • Brought back Dimensions.php. If someone was using it for some reason, it would be a breaking change for them. Now it works like it did, but it's marked as deprecated. We still use you new Attributes class though.
  • Added an ExtractInfo wrapper class to be able to test it more easily. I avoided calling it ID3 since it's technically not just ID3 stuff.
  • Removed the Laravel ID3 package in favor of the underlying ID3 package.

@jasonvargajasonvarga changed the title Fetch audio/video information from the asset via getID3Add audio and video attributes to assetsJan 26, 2022
@jasonvarga
jasonvarga merged commit 0580ac3 into statamic:3.2Jan 26, 2022
@schmidex

Copy link
Copy Markdown
Contributor

I' really happy to see this added (and tagged now).
But shouldn't the new meta attributes also be added to the AugmentedAsset so that they can be accessed in antlers?
Maybe in different formats like for size (duration_ seconds, duration_minutes...)

@edalzell
edalzell deleted the feature/id3-723 branch February 12, 2022 00:07
@edalzell

Copy link
Copy Markdown
ContributorAuthor

oh haha, yup!

@schmidex please either PR this in, or open a new FR.

@schmidex

Copy link
Copy Markdown
Contributor

I tried my best in #5265

@jasonvargajasonvarga mentioned this pull request Feb 13, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants

@edalzell@jacksleight@jasonvarga@arthurperton@jackmcdade@schmidex
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add audio and video attributes to assets by edalzell · Pull Request #5045 · statamic/cms · GitHub
Skip to content

Add audio and video attributes to assets - #5045

Merged
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723
Jan 26, 2022
Merged

Add audio and video attributes to assets#5045
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723

Conversation

@edalzell

@edalzelledalzell commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

@edalzell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga (and @jacksleight), is this the right approach and likely to get merged? If so, I'll continue (and write tests etc).

@edalzelledalzell changed the title remove elseFetch audio/video information from the asset via getID3Jan 10, 2022
@jacksleight

jacksleight commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

Wow, thanks for implementing this, looks great!

I have a few thoughts, just based on how I imagined this might work:

  • Would it make sense to store the video dimensions under the same keys used for images:
    • video.resolution_x -> width
    • video.resolution_y -> height
  • I think it would be useful to include the audio/video length as well, which is under the playtime_seconds key.
    • playtime_seconds -> length (possibly rounded?)
  • Is there any value in storing the page count for PDFs and well? GetID3 supports it, and it feels like it might be useful data.
    • pdf.pages -> pages
  • Is it necessary to save all the other data under the audio and video keys? I guess there could be other stuff in there that people might want, but most of it probably isn't very useful.

@jasonvarga

Copy link
Copy Markdown
Member

is this the right approach and likely to get merged

Looks okay to me, although the naming of the keys (like Jack has pointed out) will probably need tweaking.

@edalzell

edalzell commented Jan 13, 2022

Copy link
Copy Markdown
ContributorAuthor

Bigger change than expected. I tested this locally and all looks good, however I can't get the audio test going, for some reason GetId3 is not using the faked disk and saying the faked test file doesn't exist.

What am I doing wrong?

@jasonvarga

Copy link
Copy Markdown
Member

Your "add (broken) test" commit passes. 🤔

Comment threadcomposer.json
jasonvarga
jasonvarga previously requested changes Jan 13, 2022
Comment threadsrc/Assets/Attributes.php Outdated
@edalzell

Copy link
Copy Markdown
ContributorAuthor

Your "add (broken) test" commit passes. 🤔

Ya there’s a mark skipped at the top

@jasonvarga

Copy link
Copy Markdown
Member

Ah missed that.

@edalzell
edalzell marked this pull request as ready for review January 16, 2022 02:24
@edalzell

Copy link
Copy Markdown
ContributorAuthor

OK, made those changes, but still need some help on the tests.

@arthurperton

Copy link
Copy Markdown
Contributor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

@edalzell

Copy link
Copy Markdown
ContributorAuthor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

Fixed, thanks!

@jasonvarga

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

@jackmcdade

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

I believe duration is the most commonly used industry term.

@jasonvarga

Copy link
Copy Markdown
Member

Sigh. That's the most obvious one too, now.

@jackmcdade

Copy link
Copy Markdown
Member

How do we feel about all these extra dependencies that are required for most of the features to work?

https://github.com/JamesHeinrich/getID3/blob/master/composer.json

@jasonvarga

jasonvarga commented Jan 17, 2022

Copy link
Copy Markdown
Member

They're just suggestions. They're only output on composer v1 when you create a new project.

On composer 2, when you create a new project, it's just one line, and we were getting it anyway.

62 package suggestions were added by new dependencies, use `composer suggest` to see details.

Comment threadsrc/Assets/Attributes.php Outdated
Comment threadsrc/Assets/Attributes.php Outdated
@jasonvarga

Copy link
Copy Markdown
Member

Okay, made a handful of tweaks here:

  • Brought back Dimensions.php. If someone was using it for some reason, it would be a breaking change for them. Now it works like it did, but it's marked as deprecated. We still use you new Attributes class though.
  • Added an ExtractInfo wrapper class to be able to test it more easily. I avoided calling it ID3 since it's technically not just ID3 stuff.
  • Removed the Laravel ID3 package in favor of the underlying ID3 package.

@jasonvargajasonvarga changed the title Fetch audio/video information from the asset via getID3Add audio and video attributes to assetsJan 26, 2022
@jasonvarga
jasonvarga merged commit 0580ac3 into statamic:3.2Jan 26, 2022
@schmidex

Copy link
Copy Markdown
Contributor

I' really happy to see this added (and tagged now).
But shouldn't the new meta attributes also be added to the AugmentedAsset so that they can be accessed in antlers?
Maybe in different formats like for size (duration_ seconds, duration_minutes...)

@edalzell
edalzell deleted the feature/id3-723 branch February 12, 2022 00:07
@edalzell

Copy link
Copy Markdown
ContributorAuthor

oh haha, yup!

@schmidex please either PR this in, or open a new FR.

@schmidex

Copy link
Copy Markdown
Contributor

I tried my best in #5265

@jasonvargajasonvarga mentioned this pull request Feb 13, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants

@edalzell@jacksleight@jasonvarga@arthurperton@jackmcdade@schmidex
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add audio and video attributes to assets by edalzell · Pull Request #5045 · statamic/cms · GitHub
Skip to content

Add audio and video attributes to assets - #5045

Merged
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723
Jan 26, 2022
Merged

Add audio and video attributes to assets#5045
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723

Conversation

@edalzell

@edalzelledalzell commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

@edalzell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga (and @jacksleight), is this the right approach and likely to get merged? If so, I'll continue (and write tests etc).

@edalzelledalzell changed the title remove elseFetch audio/video information from the asset via getID3Jan 10, 2022
@jacksleight

jacksleight commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

Wow, thanks for implementing this, looks great!

I have a few thoughts, just based on how I imagined this might work:

  • Would it make sense to store the video dimensions under the same keys used for images:
    • video.resolution_x -> width
    • video.resolution_y -> height
  • I think it would be useful to include the audio/video length as well, which is under the playtime_seconds key.
    • playtime_seconds -> length (possibly rounded?)
  • Is there any value in storing the page count for PDFs and well? GetID3 supports it, and it feels like it might be useful data.
    • pdf.pages -> pages
  • Is it necessary to save all the other data under the audio and video keys? I guess there could be other stuff in there that people might want, but most of it probably isn't very useful.

@jasonvarga

Copy link
Copy Markdown
Member

is this the right approach and likely to get merged

Looks okay to me, although the naming of the keys (like Jack has pointed out) will probably need tweaking.

@edalzell

edalzell commented Jan 13, 2022

Copy link
Copy Markdown
ContributorAuthor

Bigger change than expected. I tested this locally and all looks good, however I can't get the audio test going, for some reason GetId3 is not using the faked disk and saying the faked test file doesn't exist.

What am I doing wrong?

@jasonvarga

Copy link
Copy Markdown
Member

Your "add (broken) test" commit passes. 🤔

Comment threadcomposer.json
jasonvarga
jasonvarga previously requested changes Jan 13, 2022
Comment threadsrc/Assets/Attributes.php Outdated
@edalzell

Copy link
Copy Markdown
ContributorAuthor

Your "add (broken) test" commit passes. 🤔

Ya there’s a mark skipped at the top

@jasonvarga

Copy link
Copy Markdown
Member

Ah missed that.

@edalzell
edalzell marked this pull request as ready for review January 16, 2022 02:24
@edalzell

Copy link
Copy Markdown
ContributorAuthor

OK, made those changes, but still need some help on the tests.

@arthurperton

Copy link
Copy Markdown
Contributor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

@edalzell

Copy link
Copy Markdown
ContributorAuthor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

Fixed, thanks!

@jasonvarga

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

@jackmcdade

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

I believe duration is the most commonly used industry term.

@jasonvarga

Copy link
Copy Markdown
Member

Sigh. That's the most obvious one too, now.

@jackmcdade

Copy link
Copy Markdown
Member

How do we feel about all these extra dependencies that are required for most of the features to work?

https://github.com/JamesHeinrich/getID3/blob/master/composer.json

@jasonvarga

jasonvarga commented Jan 17, 2022

Copy link
Copy Markdown
Member

They're just suggestions. They're only output on composer v1 when you create a new project.

On composer 2, when you create a new project, it's just one line, and we were getting it anyway.

62 package suggestions were added by new dependencies, use `composer suggest` to see details.

Comment threadsrc/Assets/Attributes.php Outdated
Comment threadsrc/Assets/Attributes.php Outdated
@jasonvarga

Copy link
Copy Markdown
Member

Okay, made a handful of tweaks here:

  • Brought back Dimensions.php. If someone was using it for some reason, it would be a breaking change for them. Now it works like it did, but it's marked as deprecated. We still use you new Attributes class though.
  • Added an ExtractInfo wrapper class to be able to test it more easily. I avoided calling it ID3 since it's technically not just ID3 stuff.
  • Removed the Laravel ID3 package in favor of the underlying ID3 package.

@jasonvargajasonvarga changed the title Fetch audio/video information from the asset via getID3Add audio and video attributes to assetsJan 26, 2022
@jasonvarga
jasonvarga merged commit 0580ac3 into statamic:3.2Jan 26, 2022
@schmidex

Copy link
Copy Markdown
Contributor

I' really happy to see this added (and tagged now).
But shouldn't the new meta attributes also be added to the AugmentedAsset so that they can be accessed in antlers?
Maybe in different formats like for size (duration_ seconds, duration_minutes...)

@edalzell
edalzell deleted the feature/id3-723 branch February 12, 2022 00:07
@edalzell

Copy link
Copy Markdown
ContributorAuthor

oh haha, yup!

@schmidex please either PR this in, or open a new FR.

@schmidex

Copy link
Copy Markdown
Contributor

I tried my best in #5265

@jasonvargajasonvarga mentioned this pull request Feb 13, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants

@edalzell@jacksleight@jasonvarga@arthurperton@jackmcdade@schmidex
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add audio and video attributes to assets by edalzell · Pull Request #5045 · statamic/cms · GitHub
Skip to content

Add audio and video attributes to assets - #5045

Merged
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723
Jan 26, 2022
Merged

Add audio and video attributes to assets#5045
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723

Conversation

@edalzell

@edalzelledalzell commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

@edalzell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga (and @jacksleight), is this the right approach and likely to get merged? If so, I'll continue (and write tests etc).

@edalzelledalzell changed the title remove elseFetch audio/video information from the asset via getID3Jan 10, 2022
@jacksleight

jacksleight commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

Wow, thanks for implementing this, looks great!

I have a few thoughts, just based on how I imagined this might work:

  • Would it make sense to store the video dimensions under the same keys used for images:
    • video.resolution_x -> width
    • video.resolution_y -> height
  • I think it would be useful to include the audio/video length as well, which is under the playtime_seconds key.
    • playtime_seconds -> length (possibly rounded?)
  • Is there any value in storing the page count for PDFs and well? GetID3 supports it, and it feels like it might be useful data.
    • pdf.pages -> pages
  • Is it necessary to save all the other data under the audio and video keys? I guess there could be other stuff in there that people might want, but most of it probably isn't very useful.

@jasonvarga

Copy link
Copy Markdown
Member

is this the right approach and likely to get merged

Looks okay to me, although the naming of the keys (like Jack has pointed out) will probably need tweaking.

@edalzell

edalzell commented Jan 13, 2022

Copy link
Copy Markdown
ContributorAuthor

Bigger change than expected. I tested this locally and all looks good, however I can't get the audio test going, for some reason GetId3 is not using the faked disk and saying the faked test file doesn't exist.

What am I doing wrong?

@jasonvarga

Copy link
Copy Markdown
Member

Your "add (broken) test" commit passes. 🤔

Comment threadcomposer.json
jasonvarga
jasonvarga previously requested changes Jan 13, 2022
Comment threadsrc/Assets/Attributes.php Outdated
@edalzell

Copy link
Copy Markdown
ContributorAuthor

Your "add (broken) test" commit passes. 🤔

Ya there’s a mark skipped at the top

@jasonvarga

Copy link
Copy Markdown
Member

Ah missed that.

@edalzell
edalzell marked this pull request as ready for review January 16, 2022 02:24
@edalzell

Copy link
Copy Markdown
ContributorAuthor

OK, made those changes, but still need some help on the tests.

@arthurperton

Copy link
Copy Markdown
Contributor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

@edalzell

Copy link
Copy Markdown
ContributorAuthor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

Fixed, thanks!

@jasonvarga

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

@jackmcdade

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

I believe duration is the most commonly used industry term.

@jasonvarga

Copy link
Copy Markdown
Member

Sigh. That's the most obvious one too, now.

@jackmcdade

Copy link
Copy Markdown
Member

How do we feel about all these extra dependencies that are required for most of the features to work?

https://github.com/JamesHeinrich/getID3/blob/master/composer.json

@jasonvarga

jasonvarga commented Jan 17, 2022

Copy link
Copy Markdown
Member

They're just suggestions. They're only output on composer v1 when you create a new project.

On composer 2, when you create a new project, it's just one line, and we were getting it anyway.

62 package suggestions were added by new dependencies, use `composer suggest` to see details.

Comment threadsrc/Assets/Attributes.php Outdated
Comment threadsrc/Assets/Attributes.php Outdated
@jasonvarga

Copy link
Copy Markdown
Member

Okay, made a handful of tweaks here:

  • Brought back Dimensions.php. If someone was using it for some reason, it would be a breaking change for them. Now it works like it did, but it's marked as deprecated. We still use you new Attributes class though.
  • Added an ExtractInfo wrapper class to be able to test it more easily. I avoided calling it ID3 since it's technically not just ID3 stuff.
  • Removed the Laravel ID3 package in favor of the underlying ID3 package.

@jasonvargajasonvarga changed the title Fetch audio/video information from the asset via getID3Add audio and video attributes to assetsJan 26, 2022
@jasonvarga
jasonvarga merged commit 0580ac3 into statamic:3.2Jan 26, 2022
@schmidex

Copy link
Copy Markdown
Contributor

I' really happy to see this added (and tagged now).
But shouldn't the new meta attributes also be added to the AugmentedAsset so that they can be accessed in antlers?
Maybe in different formats like for size (duration_ seconds, duration_minutes...)

@edalzell
edalzell deleted the feature/id3-723 branch February 12, 2022 00:07
@edalzell

Copy link
Copy Markdown
ContributorAuthor

oh haha, yup!

@schmidex please either PR this in, or open a new FR.

@schmidex

Copy link
Copy Markdown
Contributor

I tried my best in #5265

@jasonvargajasonvarga mentioned this pull request Feb 13, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants

@edalzell@jacksleight@jasonvarga@arthurperton@jackmcdade@schmidex
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add audio and video attributes to assets by edalzell · Pull Request #5045 · statamic/cms · GitHub
Skip to content

Add audio and video attributes to assets - #5045

Merged
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723
Jan 26, 2022
Merged

Add audio and video attributes to assets#5045
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723

Conversation

@edalzell

@edalzelledalzell commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

@edalzell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga (and @jacksleight), is this the right approach and likely to get merged? If so, I'll continue (and write tests etc).

@edalzelledalzell changed the title remove elseFetch audio/video information from the asset via getID3Jan 10, 2022
@jacksleight

jacksleight commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

Wow, thanks for implementing this, looks great!

I have a few thoughts, just based on how I imagined this might work:

  • Would it make sense to store the video dimensions under the same keys used for images:
    • video.resolution_x -> width
    • video.resolution_y -> height
  • I think it would be useful to include the audio/video length as well, which is under the playtime_seconds key.
    • playtime_seconds -> length (possibly rounded?)
  • Is there any value in storing the page count for PDFs and well? GetID3 supports it, and it feels like it might be useful data.
    • pdf.pages -> pages
  • Is it necessary to save all the other data under the audio and video keys? I guess there could be other stuff in there that people might want, but most of it probably isn't very useful.

@jasonvarga

Copy link
Copy Markdown
Member

is this the right approach and likely to get merged

Looks okay to me, although the naming of the keys (like Jack has pointed out) will probably need tweaking.

@edalzell

edalzell commented Jan 13, 2022

Copy link
Copy Markdown
ContributorAuthor

Bigger change than expected. I tested this locally and all looks good, however I can't get the audio test going, for some reason GetId3 is not using the faked disk and saying the faked test file doesn't exist.

What am I doing wrong?

@jasonvarga

Copy link
Copy Markdown
Member

Your "add (broken) test" commit passes. 🤔

Comment threadcomposer.json
jasonvarga
jasonvarga previously requested changes Jan 13, 2022
Comment threadsrc/Assets/Attributes.php Outdated
@edalzell

Copy link
Copy Markdown
ContributorAuthor

Your "add (broken) test" commit passes. 🤔

Ya there’s a mark skipped at the top

@jasonvarga

Copy link
Copy Markdown
Member

Ah missed that.

@edalzell
edalzell marked this pull request as ready for review January 16, 2022 02:24
@edalzell

Copy link
Copy Markdown
ContributorAuthor

OK, made those changes, but still need some help on the tests.

@arthurperton

Copy link
Copy Markdown
Contributor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

@edalzell

Copy link
Copy Markdown
ContributorAuthor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

Fixed, thanks!

@jasonvarga

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

@jackmcdade

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

I believe duration is the most commonly used industry term.

@jasonvarga

Copy link
Copy Markdown
Member

Sigh. That's the most obvious one too, now.

@jackmcdade

Copy link
Copy Markdown
Member

How do we feel about all these extra dependencies that are required for most of the features to work?

https://github.com/JamesHeinrich/getID3/blob/master/composer.json

@jasonvarga

jasonvarga commented Jan 17, 2022

Copy link
Copy Markdown
Member

They're just suggestions. They're only output on composer v1 when you create a new project.

On composer 2, when you create a new project, it's just one line, and we were getting it anyway.

62 package suggestions were added by new dependencies, use `composer suggest` to see details.

Comment threadsrc/Assets/Attributes.php Outdated
Comment threadsrc/Assets/Attributes.php Outdated
@jasonvarga

Copy link
Copy Markdown
Member

Okay, made a handful of tweaks here:

  • Brought back Dimensions.php. If someone was using it for some reason, it would be a breaking change for them. Now it works like it did, but it's marked as deprecated. We still use you new Attributes class though.
  • Added an ExtractInfo wrapper class to be able to test it more easily. I avoided calling it ID3 since it's technically not just ID3 stuff.
  • Removed the Laravel ID3 package in favor of the underlying ID3 package.

@jasonvargajasonvarga changed the title Fetch audio/video information from the asset via getID3Add audio and video attributes to assetsJan 26, 2022
@jasonvarga
jasonvarga merged commit 0580ac3 into statamic:3.2Jan 26, 2022
@schmidex

Copy link
Copy Markdown
Contributor

I' really happy to see this added (and tagged now).
But shouldn't the new meta attributes also be added to the AugmentedAsset so that they can be accessed in antlers?
Maybe in different formats like for size (duration_ seconds, duration_minutes...)

@edalzell
edalzell deleted the feature/id3-723 branch February 12, 2022 00:07
@edalzell

Copy link
Copy Markdown
ContributorAuthor

oh haha, yup!

@schmidex please either PR this in, or open a new FR.

@schmidex

Copy link
Copy Markdown
Contributor

I tried my best in #5265

@jasonvargajasonvarga mentioned this pull request Feb 13, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants

@edalzell@jacksleight@jasonvarga@arthurperton@jackmcdade@schmidex
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add audio and video attributes to assets by edalzell · Pull Request #5045 · statamic/cms · GitHub
Skip to content

Add audio and video attributes to assets - #5045

Merged
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723
Jan 26, 2022
Merged

Add audio and video attributes to assets#5045
jasonvarga merged 27 commits into
statamic:3.2from
edalzell:feature/id3-723

Conversation

@edalzell

@edalzelledalzell commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

@edalzell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga (and @jacksleight), is this the right approach and likely to get merged? If so, I'll continue (and write tests etc).

@edalzelledalzell changed the title remove elseFetch audio/video information from the asset via getID3Jan 10, 2022
@jacksleight

jacksleight commented Jan 10, 2022

Copy link
Copy Markdown
Contributor

Wow, thanks for implementing this, looks great!

I have a few thoughts, just based on how I imagined this might work:

  • Would it make sense to store the video dimensions under the same keys used for images:
    • video.resolution_x -> width
    • video.resolution_y -> height
  • I think it would be useful to include the audio/video length as well, which is under the playtime_seconds key.
    • playtime_seconds -> length (possibly rounded?)
  • Is there any value in storing the page count for PDFs and well? GetID3 supports it, and it feels like it might be useful data.
    • pdf.pages -> pages
  • Is it necessary to save all the other data under the audio and video keys? I guess there could be other stuff in there that people might want, but most of it probably isn't very useful.

@jasonvarga

Copy link
Copy Markdown
Member

is this the right approach and likely to get merged

Looks okay to me, although the naming of the keys (like Jack has pointed out) will probably need tweaking.

@edalzell

edalzell commented Jan 13, 2022

Copy link
Copy Markdown
ContributorAuthor

Bigger change than expected. I tested this locally and all looks good, however I can't get the audio test going, for some reason GetId3 is not using the faked disk and saying the faked test file doesn't exist.

What am I doing wrong?

@jasonvarga

Copy link
Copy Markdown
Member

Your "add (broken) test" commit passes. 🤔

Comment threadcomposer.json
jasonvarga
jasonvarga previously requested changes Jan 13, 2022
Comment threadsrc/Assets/Attributes.php Outdated
@edalzell

Copy link
Copy Markdown
ContributorAuthor

Your "add (broken) test" commit passes. 🤔

Ya there’s a mark skipped at the top

@jasonvarga

Copy link
Copy Markdown
Member

Ah missed that.

@edalzell
edalzell marked this pull request as ready for review January 16, 2022 02:24
@edalzell

Copy link
Copy Markdown
ContributorAuthor

OK, made those changes, but still need some help on the tests.

@arthurperton

Copy link
Copy Markdown
Contributor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

@edalzell

Copy link
Copy Markdown
ContributorAuthor

Nice one Erin! A detail: the comment above getVideoAttributes() still says 'sound' instead of something like 'video'.

Fixed, thanks!

@jasonvarga

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

@jackmcdade

Copy link
Copy Markdown
Member

This looks cool!

But length seems like an odd choice. Maybe it's just me. Is there a more standard word to use than that? Like playtime? runtime?

I believe duration is the most commonly used industry term.

@jasonvarga

Copy link
Copy Markdown
Member

Sigh. That's the most obvious one too, now.

@jackmcdade

Copy link
Copy Markdown
Member

How do we feel about all these extra dependencies that are required for most of the features to work?

https://github.com/JamesHeinrich/getID3/blob/master/composer.json

@jasonvarga

jasonvarga commented Jan 17, 2022

Copy link
Copy Markdown
Member

They're just suggestions. They're only output on composer v1 when you create a new project.

On composer 2, when you create a new project, it's just one line, and we were getting it anyway.

62 package suggestions were added by new dependencies, use `composer suggest` to see details.

Comment threadsrc/Assets/Attributes.php Outdated
Comment threadsrc/Assets/Attributes.php Outdated
@jasonvarga

Copy link
Copy Markdown
Member

Okay, made a handful of tweaks here:

  • Brought back Dimensions.php. If someone was using it for some reason, it would be a breaking change for them. Now it works like it did, but it's marked as deprecated. We still use you new Attributes class though.
  • Added an ExtractInfo wrapper class to be able to test it more easily. I avoided calling it ID3 since it's technically not just ID3 stuff.
  • Removed the Laravel ID3 package in favor of the underlying ID3 package.

@jasonvargajasonvarga changed the title Fetch audio/video information from the asset via getID3Add audio and video attributes to assetsJan 26, 2022
@jasonvarga
jasonvarga merged commit 0580ac3 into statamic:3.2Jan 26, 2022
@schmidex

Copy link
Copy Markdown
Contributor

I' really happy to see this added (and tagged now).
But shouldn't the new meta attributes also be added to the AugmentedAsset so that they can be accessed in antlers?
Maybe in different formats like for size (duration_ seconds, duration_minutes...)

@edalzell
edalzell deleted the feature/id3-723 branch February 12, 2022 00:07
@edalzell

Copy link
Copy Markdown
ContributorAuthor

oh haha, yup!

@schmidex please either PR this in, or open a new FR.

@schmidex

Copy link
Copy Markdown
Contributor

I tried my best in #5265

@jasonvargajasonvarga mentioned this pull request Feb 13, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants

@edalzell@jacksleight@jasonvarga@arthurperton@jackmcdade@schmidex