4 Commits
5 changed files with 34 additions and 44 deletions
+2 -4
View File
@@ -26,8 +26,6 @@ source_dir -> artist dir -> album dir -> FLAC files
# Installation # Installation
flac2pod is available in the AUR as "flac2pod". If installing on a non-Arch-based distribution, follow the manual installation instructions: flac2pod is available in the AUR as "flac2pod".
- copy the contents of https://github.com/rwinkhart/flac2pod/blob/master/bin/ to your /usr/bin/ If installing on a non-Arch-based distribution, a generic package is available on the releases page.
- install flac, python-mutagen, ffmpeg, and screen
- start converting
-1
View File
@@ -1 +0,0 @@
/usr/bin/flac2pod
@@ -1,10 +1,10 @@
#!/bin/python3 #!/usr/bin/env python3
from argparse import ArgumentParser from argparse import ArgumentParser
from flac2pod import scan_source from flac2pod import scan_source
from mutagen.flac import FLAC, FLACNoHeaderError from mutagen.flac import FLAC, FLACNoHeaderError
from os import listdir, system from os import listdir, system
from subprocess import PIPE, Popen, STDOUT from subprocess import PIPE, run
from sys import exit as s_exit from sys import exit as s_exit
# argument parsing # argument parsing
@@ -42,26 +42,24 @@ if __name__ == "__main__":
if gain != 2 and (args.force or gain == 0): if gain != 2 and (args.force or gain == 0):
print(f"[{album}/*] Adding ReplayGain data...") print(f"[{album}/*] Adding ReplayGain data...")
system(f"metaflac --remove-replay-gain {std_album}/*") system(f"metaflac --remove-replay-gain {std_album}/*")
command = f"metaflac --add-replay-gain {std_album}/*" output = run(f"metaflac --add-replay-gain {std_album}/*", shell=True, stderr=PIPE, text=True)
output = Popen(command, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
block = output.communicate()[0].strip() # blocks the program from proceeding until stdout is given
if output.returncode == 1: if output.returncode == 1:
if block.decode('utf-8').__contains__('sample') or block.decode('utf-8').__contains__('resolution of'): if output.stderr.__contains__('sample') or output.stderr.__contains__('resolution of') or output.\
print('Resolution/Sample Rate mismatch, scanning tracks as individuals...') stderr.__contains__('does not match'):
print('Resolution/Sample Rate/Channel mismatch, scanning tracks as individuals...')
for song in listdir(album): for song in listdir(album):
print(f"[{album}/{song}] Adding ReplayGain data...") print(f"[{album}/{song}] Adding ReplayGain data...")
std_song = song.replace(' ', '\\ ').replace("'", "\\'").replace(')', '\\)')\ std_song = song.replace(' ', '\\ ').replace("'", "\\'").replace(')', '\\)')\
.replace('(', '\\(').replace('&', '\\&').replace('`', '\\`').replace('$', '\\$') .replace('(', '\\(').replace('&', '\\&').replace('`', '\\`').replace('$', '\\$')
command = f"metaflac --add-replay-gain {std_album}/{std_song}" output = run(f"metaflac --add-replay-gain {std_album}/{std_song}", shell=True, stderr=PIPE,
output = Popen(command, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) text=True)
block = output.communicate()[0].strip()
if output.returncode == 1: if output.returncode == 1:
print('There was an error processing your files.') print('There was an error processing your files.')
print(f"Return Code: [{str(output.returncode)}] {block.decode('utf-8')}") print(f"Return Code: [{str(output.returncode)}] {output.stderr}")
s_exit(1) s_exit(1)
else: else:
print('There was an error processing your files.') print('There was an error processing your files.')
print(f"Return Code: [{str(output.returncode)}] {block.decode('utf-8')}") print(f"Return Code: [{str(output.returncode)}] {output.stderr}")
s_exit(1) s_exit(1)
else: else:
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/python3 #!/usr/bin/env python3
# external modules # external modules
+21 -26
View File
@@ -1,14 +1,12 @@
#!/bin/bash #!/usr/bin/env bash
# This script packages flac2pod (from source) for Arch Linux. echo -e '\n\nthe value entered in this field will only affect the version reported to the package manager - the latest source is used regardless\n'
read -r -p "version number: " version
read -r -p "revision number: " revision
echo -e '\n\nThe value entered in this field will only affect the version reported to the package manager. The latest source is used regardless.\n' echo -e '\noptions (please enter the number only):'
read -r -p "Version number: " version echo -e '\n1. gitHub release tag\n2. local\n'
read -r -p "Revision number: " revision read -r -p "source (for build scripts): " source
echo -e '\nOptions (please enter the number only):'
echo -e '\n1. GitHub Release Tag\n2. Local\n'
read -r -p "Source (for build scripts): " source
if [ "$source" == "1" ]; then if [ "$source" == "1" ]; then
source='https://github.com/rwinkhart/flac2pod/releases/download/v$pkgver/flac2pod-$pkgver.tar.xz' source='https://github.com/rwinkhart/flac2pod/releases/download/v$pkgver/flac2pod-$pkgver.tar.xz'
@@ -16,22 +14,22 @@ else
source=local://flac2pod-"$version".tar.xz source=local://flac2pod-"$version".tar.xz
fi fi
# generic packaging
# Archive creation echo -e '\npackaging as generic...\n'
echo -e '\nPackaging as generic...\n' mkdir -p output/generictemp/usr/{bin,lib/flac2pod}
mkdir -p packages/archtemp/usr cp -r lib/. output/generictemp/usr/lib/flac2pod/
cp -r bin packages/archtemp/usr/ ln -s /usr/lib/flac2pod/flac2pod.py output/generictemp/usr/bin/flac2pod
cp -r share packages/archtemp/usr/ ln -s /usr/lib/flac2pod/flac2pod-flacgain.py output/generictemp/usr/bin/flac2pod-flacgain
tar -C packages/archtemp -cvf packages/flac2pod-"$version".tar.xz usr/ cp -r share output/generictemp/usr/
rm -rf packages/archtemp tar -C output/generictemp -cvJf output/flac2pod-"$version".tar.xz usr/
sha512="$(sha512sum packages/flac2pod-"$version".tar.xz | awk '{print $1;}')" rm -rf output/generictemp
sha512="$(sha512sum output/flac2pod-"$version".tar.xz | awk '{print $1;}')"
echo -e "\nsha512 sum:\n$sha512" echo -e "\nsha512 sum:\n$sha512"
echo -e "\nGeneric packaging complete.\n" echo -e "\ngeneric packaging complete\n"
# PKGBUILD creation # PKGBUILD creation
echo -e '\nGenerating PKGBUILD...' echo -e '\ngenerating PKGBUILD...'
echo "# Maintainer: Randall Winkhart <idgr at tutanota dot com> echo "# Maintainer: Randall Winkhart <idgr at tutanota dot com>
pkgname=flac2pod pkgname=flac2pod
pkgver="$version" pkgver="$version"
pkgrel="$revision" pkgrel="$revision"
@@ -40,14 +38,11 @@ url='https://github.com/rwinkhart/flac2pod'
arch=('any') arch=('any')
license=('GPL2') license=('GPL2')
depends=(ffmpeg flac python python-mutagen screen) depends=(ffmpeg flac python python-mutagen screen)
source=(\""$source"\") source=(\""$source"\")
sha512sums=('"$sha512"') sha512sums=('"$sha512"')
package() { package() {
tar xf flac2pod-"\"\$pkgver\"".tar.xz -C "\"\${pkgdir}\"" tar xf flac2pod-"\"\$pkgver\"".tar.xz -C "\"\${pkgdir}\""
} }
" > packages/PKGBUILD " > output/PKGBUILD
echo -e "\nPKGBUILD generated.\n" echo -e "\nPKGBUILD generated\n"