Add files via upload
This commit is contained in:
commit
b84e23f6bd
15 files changed
+564
No files matched your search
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
permalink: /404.html
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
<style type="text/css" media="screen">
|
||||||
|
.container {
|
||||||
|
margin: 10px auto;
|
||||||
|
max-width: 600px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 30px 0;
|
||||||
|
font-size: 4em;
|
||||||
|
line-height: 1;
|
||||||
|
letter-spacing: -1px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<h1>404</h1>
|
||||||
|
|
||||||
|
<p><strong>Page not found :(</strong></p>
|
||||||
|
<p>The requested page could not be found.</p>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
source "https://rubygems.org"
|
||||||
|
# Hello! This is where you manage which Jekyll version is used to run.
|
||||||
|
# When you want to use a different version, change it below, save the
|
||||||
|
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||||
|
#
|
||||||
|
# bundle exec jekyll serve
|
||||||
|
#
|
||||||
|
# This will help ensure the proper Jekyll version is running.
|
||||||
|
# Happy Jekylling!
|
||||||
|
gem "jekyll", "~> 4.3.3"
|
||||||
|
# This is the default theme for new Jekyll sites. You may change this to anything you like.
|
||||||
|
gem "minima", "~> 2.5"
|
||||||
|
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
||||||
|
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
||||||
|
# gem "github-pages", group: :jekyll_plugins
|
||||||
|
# If you have any plugins, put them here!
|
||||||
|
group :jekyll_plugins do
|
||||||
|
gem "jekyll-feed", "~> 0.12"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||||
|
# and associated library.
|
||||||
|
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
||||||
|
gem "tzinfo", ">= 1", "< 3"
|
||||||
|
gem "tzinfo-data"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Performance-booster for watching directories on Windows
|
||||||
|
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||||
|
|
||||||
|
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
||||||
|
# do not have a Java counterpart.
|
||||||
|
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
addressable (2.8.6)
|
||||||
|
public_suffix (>= 2.0.2, < 6.0)
|
||||||
|
bigdecimal (3.1.8)
|
||||||
|
colorator (1.1.0)
|
||||||
|
concurrent-ruby (1.2.3)
|
||||||
|
em-websocket (0.5.3)
|
||||||
|
eventmachine (>= 0.12.9)
|
||||||
|
http_parser.rb (~> 0)
|
||||||
|
eventmachine (1.2.7)
|
||||||
|
ffi (1.16.3-x64-mingw-ucrt)
|
||||||
|
forwardable-extended (2.6.0)
|
||||||
|
google-protobuf (4.27.0-x64-mingw-ucrt)
|
||||||
|
bigdecimal
|
||||||
|
rake (>= 13)
|
||||||
|
http_parser.rb (0.8.0)
|
||||||
|
i18n (1.14.5)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
|
jekyll (4.3.3)
|
||||||
|
addressable (~> 2.4)
|
||||||
|
colorator (~> 1.0)
|
||||||
|
em-websocket (~> 0.5)
|
||||||
|
i18n (~> 1.0)
|
||||||
|
jekyll-sass-converter (>= 2.0, < 4.0)
|
||||||
|
jekyll-watch (~> 2.0)
|
||||||
|
kramdown (~> 2.3, >= 2.3.1)
|
||||||
|
kramdown-parser-gfm (~> 1.0)
|
||||||
|
liquid (~> 4.0)
|
||||||
|
mercenary (>= 0.3.6, < 0.5)
|
||||||
|
pathutil (~> 0.9)
|
||||||
|
rouge (>= 3.0, < 5.0)
|
||||||
|
safe_yaml (~> 1.0)
|
||||||
|
terminal-table (>= 1.8, < 4.0)
|
||||||
|
webrick (~> 1.7)
|
||||||
|
jekyll-feed (0.17.0)
|
||||||
|
jekyll (>= 3.7, < 5.0)
|
||||||
|
jekyll-sass-converter (3.0.0)
|
||||||
|
sass-embedded (~> 1.54)
|
||||||
|
jekyll-seo-tag (2.8.0)
|
||||||
|
jekyll (>= 3.8, < 5.0)
|
||||||
|
jekyll-watch (2.2.1)
|
||||||
|
listen (~> 3.0)
|
||||||
|
kramdown (2.4.0)
|
||||||
|
rexml
|
||||||
|
kramdown-parser-gfm (1.1.0)
|
||||||
|
kramdown (~> 2.0)
|
||||||
|
liquid (4.0.4)
|
||||||
|
listen (3.9.0)
|
||||||
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||||
|
rb-inotify (~> 0.9, >= 0.9.10)
|
||||||
|
mercenary (0.4.0)
|
||||||
|
minima (2.5.1)
|
||||||
|
jekyll (>= 3.5, < 5.0)
|
||||||
|
jekyll-feed (~> 0.9)
|
||||||
|
jekyll-seo-tag (~> 2.1)
|
||||||
|
pathutil (0.16.2)
|
||||||
|
forwardable-extended (~> 2.6)
|
||||||
|
public_suffix (5.0.5)
|
||||||
|
rake (13.2.1)
|
||||||
|
rb-fsevent (0.11.2)
|
||||||
|
rb-inotify (0.11.1)
|
||||||
|
ffi (~> 1.0)
|
||||||
|
rexml (3.2.8)
|
||||||
|
strscan (>= 3.0.9)
|
||||||
|
rouge (4.2.1)
|
||||||
|
safe_yaml (1.0.5)
|
||||||
|
sass-embedded (1.77.2-x64-mingw-ucrt)
|
||||||
|
google-protobuf (>= 3.25, < 5.0)
|
||||||
|
strscan (3.1.0)
|
||||||
|
terminal-table (3.0.2)
|
||||||
|
unicode-display_width (>= 1.1.1, < 3)
|
||||||
|
tzinfo (2.0.6)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
|
tzinfo-data (1.2024.1)
|
||||||
|
tzinfo (>= 1.0.0)
|
||||||
|
unicode-display_width (2.5.0)
|
||||||
|
wdm (0.1.1)
|
||||||
|
webrick (1.8.1)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
x64-mingw-ucrt
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
http_parser.rb (~> 0.6.0)
|
||||||
|
jekyll (~> 4.3.3)
|
||||||
|
jekyll-feed (~> 0.12)
|
||||||
|
minima (~> 2.5)
|
||||||
|
tzinfo (>= 1, < 3)
|
||||||
|
tzinfo-data
|
||||||
|
wdm (~> 0.1.1)
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.4.19
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
# Welcome to Jekyll!
|
||||||
|
#
|
||||||
|
# This config file is meant for settings that affect your whole blog, values
|
||||||
|
# which you are expected to set up once and rarely edit after that. If you find
|
||||||
|
# yourself editing this file very often, consider using Jekyll's data files
|
||||||
|
# feature for the data you need to update frequently.
|
||||||
|
#
|
||||||
|
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||||
|
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
||||||
|
#
|
||||||
|
# If you need help with YAML syntax, here are some quick references for you:
|
||||||
|
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
|
||||||
|
# https://learnxinyminutes.com/docs/yaml/
|
||||||
|
#
|
||||||
|
# Site settings
|
||||||
|
# These are used to personalize your new site. If you look in the HTML files,
|
||||||
|
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
||||||
|
# You can create any custom variable you would like, and they will be accessible
|
||||||
|
# in the templates via {{ site.myvariable }}.
|
||||||
|
|
||||||
|
title: Your awesome title
|
||||||
|
email: your-email@example.com
|
||||||
|
description: >- # this means to ignore newlines until "baseurl:"
|
||||||
|
Write an awesome description for your new site here. You can edit this
|
||||||
|
line in _config.yml. It will appear in your document head meta (for
|
||||||
|
Google search results) and in your feed.xml site description.
|
||||||
|
baseurl: "" # the subpath of your site, e.g. /blog
|
||||||
|
url: "" # the base hostname & protocol for your site, e.g. http://example.com
|
||||||
|
twitter_username: jekyllrb
|
||||||
|
github_username: jekyll
|
||||||
|
|
||||||
|
# Build settings
|
||||||
|
theme: minima
|
||||||
|
plugins:
|
||||||
|
- jekyll-feed
|
||||||
|
|
||||||
|
# Exclude from processing.
|
||||||
|
# The following items will not be processed, by default.
|
||||||
|
# Any item listed under the `exclude:` key here will be automatically added to
|
||||||
|
# the internal "default list".
|
||||||
|
#
|
||||||
|
# Excluded items can be processed by explicitly listing the directories or
|
||||||
|
# their entries' file path in the `include:` list.
|
||||||
|
#
|
||||||
|
# exclude:
|
||||||
|
# - .sass-cache/
|
||||||
|
# - .jekyll-cache/
|
||||||
|
# - gemfiles/
|
||||||
|
# - Gemfile
|
||||||
|
# - Gemfile.lock
|
||||||
|
# - node_modules/
|
||||||
|
# - vendor/bundle/
|
||||||
|
# - vendor/cache/
|
||||||
|
# - vendor/gems/
|
||||||
|
# - vendor/ruby/
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>{{ page.title }}</title>
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
|
||||||
|
<!-- Adicione outros links de estilos necessários -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% include header.html %}
|
||||||
|
|
||||||
|
<main>
|
||||||
|
{{ content }}
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<!-- Rodapé -->
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- Scripts no final da página para melhor performance -->
|
||||||
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||||
|
<script src="{{ '/assets/js/script.js' | relative_url }}"></script>
|
||||||
|
<!-- Adicione outros scripts conforme necessário -->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>{{ page.title }}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
<div>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Welcome to Jekyll!"
|
||||||
|
date: 2024-07-21 14:45:00 -0300
|
||||||
|
categories: jekyll update
|
||||||
|
---
|
||||||
|
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
|
||||||
|
|
||||||
|
Jekyll requires blog post files to be named according to the following format:
|
||||||
|
|
||||||
|
`YEAR-MONTH-DAY-title.MARKUP`
|
||||||
|
|
||||||
|
Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
|
||||||
|
|
||||||
|
Jekyll also offers powerful support for code snippets:
|
||||||
|
|
||||||
|
{% highlight ruby %}
|
||||||
|
def print_hi(name)
|
||||||
|
puts "Hi, #{name}"
|
||||||
|
end
|
||||||
|
print_hi('Tom')
|
||||||
|
#=> prints 'Hi, Tom' to STDOUT.
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
|
||||||
|
|
||||||
|
[jekyll-docs]: https://jekyllrb.com/docs/home
|
||||||
|
[jekyll-gh]: https://github.com/jekyll/jekyll
|
||||||
|
[jekyll-talk]: https://talk.jekyllrb.com/
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: About
|
||||||
|
permalink: /about/
|
||||||
|
---
|
||||||
|
|
||||||
|
This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/)
|
||||||
|
|
||||||
|
You can find the source code for Minima at GitHub:
|
||||||
|
[jekyll][jekyll-organization] /
|
||||||
|
[minima](https://github.com/jekyll/minima)
|
||||||
|
|
||||||
|
You can find the source code for Jekyll at GitHub:
|
||||||
|
[jekyll][jekyll-organization] /
|
||||||
|
[jekyll](https://github.com/jekyll/jekyll)
|
||||||
|
|
||||||
|
|
||||||
|
[jekyll-organization]: https://github.com/jekyll
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
import subprocess
|
||||||
|
|
||||||
|
def run_script(script_path):
|
||||||
|
subprocess.run(['python', script_path])
|
||||||
|
|
||||||
|
def main():
|
||||||
|
script_path = 'scripts/indexa.py'
|
||||||
|
run_script(script_path)
|
||||||
|
|
||||||
|
script_path = 'scripts/statistics.py'
|
||||||
|
run_script(script_path)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
# Feel free to add content and custom Front Matter to this file.
|
||||||
|
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
|
||||||
|
|
||||||
|
layout: home
|
||||||
|
---
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: Arquivos MMP Processados
|
||||||
|
---
|
||||||
|
|
||||||
|
<h2>Arquivos MMP disponíveis:</h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
{% for files in site.data %}
|
||||||
|
{% assign file_data = files %}
|
||||||
|
{% for item in file_data %}
|
||||||
|
{% if item.file %}
|
||||||
|
<li>File path: <strong>{{ item.file }}</strong></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if item.bpm %}
|
||||||
|
<li>BPM: {{ item.bpm }}</li>
|
||||||
|
{% endif %}
|
||||||
|
<ul>
|
||||||
|
{% for track in item.tracks %}
|
||||||
|
<li>{{ track.track_name }} ({{ track.type }})</li>
|
||||||
|
<ul>
|
||||||
|
{% for instrument in track.instruments %}
|
||||||
|
<li>{{ instrument.instrument_name }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: Instrumentos Similares
|
||||||
|
---
|
||||||
|
|
||||||
|
<h2>Arquivos que possuem instrumentos similares:</h2>
|
||||||
|
<ul>
|
||||||
|
{% for item in site.data.processed_data %}
|
||||||
|
<li>{{ item.instrument_name }}:
|
||||||
|
<ul>
|
||||||
|
{% for file_name in item.files %}
|
||||||
|
<li>{{ file_name }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: Quantidade de repetições de instrumentos
|
||||||
|
---
|
||||||
|
|
||||||
|
<h2>Quantidade de vezes que cada instrumento é utilizado:</h2>
|
||||||
|
<ul id="instrument-list">
|
||||||
|
{% for item in site.data.processed_data %}
|
||||||
|
<li data-count="{{ item.count }}">{{ item.instrument_name }}: {{ item.count }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Apenas para deixar em ordem decrescente
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
var instrumentList = document.getElementById('instrument-list');
|
||||||
|
var items = Array.from(instrumentList.children);
|
||||||
|
|
||||||
|
items.sort(function(a, b) {
|
||||||
|
var countA = parseInt(a.getAttribute('data-count'));
|
||||||
|
var countB = parseInt(b.getAttribute('data-count'));
|
||||||
|
return countB - countA; // Ordenação decrescente
|
||||||
|
});
|
||||||
|
|
||||||
|
instrumentList.innerHTML = '';
|
||||||
|
items.forEach(function(item) {
|
||||||
|
instrumentList.appendChild(item);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
import os
|
||||||
|
import json
|
||||||
|
import yaml
|
||||||
|
import subprocess
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def parse_mmp_file(file_path):
|
||||||
|
try:
|
||||||
|
tree = ET.parse(file_path)
|
||||||
|
root = tree.getroot()
|
||||||
|
|
||||||
|
bpm = root.find('./head').attrib.get('bpm', 'N/A')
|
||||||
|
|
||||||
|
tracks = root.findall('./song/trackcontainer/track')
|
||||||
|
track_info = []
|
||||||
|
|
||||||
|
for track in tracks:
|
||||||
|
track_name = track.attrib.get('name', 'N/A')
|
||||||
|
track_type = track.attrib.get('type')
|
||||||
|
|
||||||
|
if track_name:
|
||||||
|
instruments = []
|
||||||
|
|
||||||
|
if track_type == '0': # Faixa do tipo plugin
|
||||||
|
track_info.append({
|
||||||
|
'track_name': track_name,
|
||||||
|
'type': 'plugin',
|
||||||
|
'instruments': [],
|
||||||
|
})
|
||||||
|
|
||||||
|
elif track_type == '2': # Faixa do tipo Sample Track
|
||||||
|
track_info.append({
|
||||||
|
'track_name': track_name,
|
||||||
|
'type': 'sample',
|
||||||
|
'instruments': [],
|
||||||
|
})
|
||||||
|
|
||||||
|
elif track_type == '1': # Faixa do tipo Beat/Bassline
|
||||||
|
bbtrack = track.find('./bbtrack')
|
||||||
|
if bbtrack is not None:
|
||||||
|
trackcontainers = bbtrack.findall('./trackcontainer')
|
||||||
|
for container in trackcontainers:
|
||||||
|
instrument_tracks = container.findall('./track')
|
||||||
|
for instrument_track in instrument_tracks:
|
||||||
|
instrument_name = instrument_track.attrib.get('name', 'N/A')
|
||||||
|
instruments.append({
|
||||||
|
'instrument_name': instrument_name,
|
||||||
|
})
|
||||||
|
|
||||||
|
track_info.append({
|
||||||
|
'track_name': track_name,
|
||||||
|
'type': 'bassline',
|
||||||
|
'instruments': instruments,
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
'file': file_path,
|
||||||
|
'bpm': bpm,
|
||||||
|
'tracks': track_info
|
||||||
|
}
|
||||||
|
|
||||||
|
except ET.ParseError as e:
|
||||||
|
print(f'Erro ao analisar o arquivo XML {file_path}: {e}')
|
||||||
|
return None
|
||||||
|
|
||||||
|
def process_mmps_in_folder(folder_path):
|
||||||
|
mmp_files = [f for f in os.listdir(folder_path) if f.endswith('.mmp') or f.endswith('.mmpz')]
|
||||||
|
all_data = []
|
||||||
|
|
||||||
|
mmpz_folder = os.path.join(folder_path, 'mmpz')
|
||||||
|
if not os.path.exists(mmpz_folder):
|
||||||
|
os.makedirs(mmpz_folder)
|
||||||
|
|
||||||
|
for file in mmp_files:
|
||||||
|
file_path = os.path.join(folder_path, file)
|
||||||
|
print(f'Processando arquivo: {file_path}')
|
||||||
|
|
||||||
|
if file.endswith('.mmpz'):
|
||||||
|
destination_path = os.path.join(mmpz_folder, file)
|
||||||
|
shutil.move(file_path, destination_path)
|
||||||
|
print(f'Arquivo {file} movido para {destination_path}')
|
||||||
|
|
||||||
|
file_name = os.path.basename(destination_path)
|
||||||
|
file_name = os.path.splitext(file_name)[0] + ".mmp"
|
||||||
|
output_file_path = os.path.join(folder_path, file_name)
|
||||||
|
|
||||||
|
comando = f'"C:\\Program Files\\LMMS\\lmms.exe" --dump "{destination_path}" > "{output_file_path}"'
|
||||||
|
try:
|
||||||
|
subprocess.run(comando, shell=True, check=True)
|
||||||
|
print("Comando executado com sucesso!")
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print(f"Ocorreu um erro ao executar o comando: {e}")
|
||||||
|
|
||||||
|
mmp_data = parse_mmp_file(output_file_path)
|
||||||
|
elif file.endswith('.mmp'):
|
||||||
|
mmp_data = parse_mmp_file(file_path)
|
||||||
|
|
||||||
|
if mmp_data:
|
||||||
|
all_data.append(mmp_data)
|
||||||
|
|
||||||
|
json_file_name = os.path.splitext(file)[0] + ".json"
|
||||||
|
json_file_path = os.path.join('metadata', json_file_name)
|
||||||
|
save_to_json(mmp_data, json_file_path)
|
||||||
|
|
||||||
|
yaml_file_name = os.path.splitext(file)[0] + ".yml"
|
||||||
|
yaml_file_path = os.path.join('_data', yaml_file_name)
|
||||||
|
save_to_yaml(mmp_data, yaml_file_path)
|
||||||
|
|
||||||
|
return all_data
|
||||||
|
|
||||||
|
def save_to_json(data, output_file):
|
||||||
|
with open(output_file, 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(data, f, ensure_ascii=False, indent=4)
|
||||||
|
|
||||||
|
def save_to_yaml(data, output_file):
|
||||||
|
with open(output_file, 'w', encoding='utf-8') as f:
|
||||||
|
yaml.dump(data, f)
|
||||||
|
|
||||||
|
mmp_folder_path = 'mmp'
|
||||||
|
processed_data = process_mmps_in_folder(mmp_folder_path)
|
||||||
|
print("Processamento concluído.")
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
import os
|
||||||
|
import yaml
|
||||||
|
import json
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
current_dir = os.path.dirname(__file__)
|
||||||
|
data_dir = os.path.abspath(os.path.join(current_dir, '..', '_data'))
|
||||||
|
if not os.path.exists(data_dir):
|
||||||
|
raise FileNotFoundError(f'O diretório {data_dir} não foi encontrado.')
|
||||||
|
|
||||||
|
instruments_count = defaultdict(int)
|
||||||
|
similar_files = defaultdict(list)
|
||||||
|
|
||||||
|
def load_yaml(file_path):
|
||||||
|
with open(file_path, 'r') as f:
|
||||||
|
return yaml.safe_load(f)
|
||||||
|
|
||||||
|
for filename in os.listdir(data_dir):
|
||||||
|
if filename.endswith('.yml') or filename.endswith('.yaml'):
|
||||||
|
file_path = os.path.join(data_dir, filename)
|
||||||
|
data = load_yaml(file_path)
|
||||||
|
|
||||||
|
bpm = data.get('bpm', 'N/A')
|
||||||
|
file_name = data.get('file', 'N/A')
|
||||||
|
tracks = data.get('tracks', [])
|
||||||
|
|
||||||
|
for track in tracks:
|
||||||
|
track_name = track.get('track_name', 'N/A')
|
||||||
|
instruments = track.get('instruments', [])
|
||||||
|
|
||||||
|
for instrument in instruments:
|
||||||
|
instrument_name = instrument.get('instrument_name', 'N/A')
|
||||||
|
instruments_count[instrument_name] += 1
|
||||||
|
if file_name not in similar_files[instrument_name]:
|
||||||
|
similar_files[instrument_name].append(file_name)
|
||||||
|
output_data = []
|
||||||
|
for instrument_name, count in instruments_count.items():
|
||||||
|
output_data.append({
|
||||||
|
'instrument_name': instrument_name,
|
||||||
|
'count': count,
|
||||||
|
'files': similar_files[instrument_name]
|
||||||
|
})
|
||||||
|
|
||||||
|
current_dir = os.path.dirname(__file__)
|
||||||
|
data_dir = os.path.abspath(os.path.join(current_dir, '..', '_data'))
|
||||||
|
output_file = os.path.join(data_dir, 'processed_data.json')
|
||||||
|
|
||||||
|
with open(output_file, 'w') as outfile:
|
||||||
|
json.dump(output_data, outfile, indent=4)
|
||||||
|
print(f"Dados processados e salvos em {output_file}")
|
||||||
Reference in new issue
Block a user