Skip to content

Instantly share code, notes, and snippets.

@polamjag
Last active December 30, 2022 00:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save polamjag/19a483c1c18a77a4cb41db9a30fd3b36 to your computer and use it in GitHub Desktop.
Save polamjag/19a483c1c18a77a4cb41db9a30fd3b36 to your computer and use it in GitHub Desktop.
require 'json'
require 'base64'
require 'open-uri'
RELEASE_TO_TOTAL_CACHE = {}
RELEASE_TO_LABEL_CACHE = {}
def get_total_track_count_from_release_url(release_url)
return RELEASE_TO_TOTAL_CACHE[release_url] if RELEASE_TO_TOTAL_CACHE.has_key?(release_url)
release_page = open(release_url).read
total_track_count = release_page.scan(/<li class="bucket-item ec-item track"/).size
RELEASE_TO_TOTAL_CACHE[release_url] = total_track_count
return total_track_count
end
ARGV.each do |path|
warn "processing #{path}"
original_metadata = JSON.parse(`mediainfo --Output=JSON "#{path}" 2>&1`)
next if original_metadata['media']['track'][0]['Track_Position_Total']
track_position = original_metadata['media']['track'][0]['Track_Position']
begin
url = Base64.decode64(original_metadata['media']['track'][0]['extra']['Official_audio_file_webpage']['#value'])[1..-1]
track_page = open(url).read
match = track_page.match(/<a href="(\/release\/.*)" class=/)
release_page_url = "https://www.beatport.com#{match[1]}"
warn "found release: #{release_page_url}"
total_track_count = get_total_track_count_from_release_url(release_page_url)
warn "set total count: #{total_track_count}"
`/Applications/kid3.app/Contents/MacOS/kid3-cli -c 'set track #{track_position}/#{total_track_count}' "#{path}"`
rescue
next
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment