Initial console based pyrip implementation
This commit is contained in:
parent
35ca73b737
commit
48dc481f26
12
.gitmodules
vendored
Normal file
12
.gitmodules
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[submodule "fstools"]
|
||||||
|
path = fstools
|
||||||
|
url = https://git.mount-mockery.de/pylib/fstools.git
|
||||||
|
[submodule "report"]
|
||||||
|
path = report
|
||||||
|
url = https://git.mount-mockery.de/pylib/report.git
|
||||||
|
[submodule "task"]
|
||||||
|
path = task
|
||||||
|
url = https://git.mount-mockery.de/pylib/task.git
|
||||||
|
[submodule "media"]
|
||||||
|
path = media
|
||||||
|
url = https://git.mount-mockery.de/pylib/media.git
|
16
.vscode/launch.json
vendored
Normal file
16
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
// Verwendet IntelliSense zum Ermitteln möglicher Attribute.
|
||||||
|
// Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
|
||||||
|
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Python: Main File execution",
|
||||||
|
"type": "debugpy",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${workspaceFolder}/pyrip.py",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"justMyCode": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
14
.vscode/settings.json
vendored
Normal file
14
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"python.defaultInterpreterPath": "./venv/bin/python",
|
||||||
|
"autopep8.args": ["--max-line-length=150"],
|
||||||
|
"[python]": {
|
||||||
|
"python.formatting.provider": "none",
|
||||||
|
"editor.defaultFormatter": "ms-python.autopep8",
|
||||||
|
"editor.formatOnSave": true
|
||||||
|
},
|
||||||
|
"editor.fontSize": 14,
|
||||||
|
"emmet.includeLanguages": { "django-html": "html" },
|
||||||
|
"python.testing.pytestArgs": ["-v", "--cov", "--cov-report=xml", "__test__"],
|
||||||
|
"python.testing.unittestEnabled": false,
|
||||||
|
"python.testing.pytestEnabled": true
|
||||||
|
}
|
1
fstools
Submodule
1
fstools
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c10e8792abb05671dab6de51cdadda3bf8ead50f
|
295
icon.xpm
Normal file
295
icon.xpm
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char *sound-juicer[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"32 32 257 2",
|
||||||
|
" c #79604B",
|
||||||
|
". c #7E6754",
|
||||||
|
"X c #7F756A",
|
||||||
|
"o c #7D7D7B",
|
||||||
|
"O c #974503",
|
||||||
|
"+ c #9B4701",
|
||||||
|
"@ c #9E4803",
|
||||||
|
"# c #9A4B0D",
|
||||||
|
"$ c #9C571D",
|
||||||
|
"% c #875937",
|
||||||
|
"& c #925B2E",
|
||||||
|
"* c #9F683C",
|
||||||
|
"= c #A34B02",
|
||||||
|
"- c #AA4D02",
|
||||||
|
"; c #A6520B",
|
||||||
|
": c #A4591D",
|
||||||
|
"> c #AF5D1A",
|
||||||
|
", c #BA5300",
|
||||||
|
"< c #BC5807",
|
||||||
|
"1 c #BC5B0C",
|
||||||
|
"2 c #B35912",
|
||||||
|
"3 c #B55F1B",
|
||||||
|
"4 c #BC5D10",
|
||||||
|
"5 c #AC5F21",
|
||||||
|
"6 c #BF6311",
|
||||||
|
"7 c #B9621C",
|
||||||
|
"8 c #A4622B",
|
||||||
|
"9 c #AB6025",
|
||||||
|
"0 c #AA652C",
|
||||||
|
"q c #AD682E",
|
||||||
|
"w c #A36635",
|
||||||
|
"e c #A0673A",
|
||||||
|
"r c #A1693D",
|
||||||
|
"t c #A86733",
|
||||||
|
"y c #AE6A33",
|
||||||
|
"u c #A96D3C",
|
||||||
|
"i c #B36222",
|
||||||
|
"p c #B46628",
|
||||||
|
"a c #B2692D",
|
||||||
|
"s c #BA6A2A",
|
||||||
|
"d c #B16C33",
|
||||||
|
"f c #B5733C",
|
||||||
|
"g c #9C6A43",
|
||||||
|
"h c #917B69",
|
||||||
|
"j c #9B7E67",
|
||||||
|
"k c #A87144",
|
||||||
|
"l c #AC7950",
|
||||||
|
"z c #B37544",
|
||||||
|
"x c #BE7C49",
|
||||||
|
"c c #C35700",
|
||||||
|
"v c #C55800",
|
||||||
|
"b c #C85E01",
|
||||||
|
"n c #C06012",
|
||||||
|
"m c #C36619",
|
||||||
|
"M c #C46A1F",
|
||||||
|
"N c #D46905",
|
||||||
|
"B c #D66D0D",
|
||||||
|
"V c #DE6F06",
|
||||||
|
"C c #D77114",
|
||||||
|
"Z c #D8761B",
|
||||||
|
"A c #C67026",
|
||||||
|
"S c #C7732D",
|
||||||
|
"D c #C87228",
|
||||||
|
"F c #C0773B",
|
||||||
|
"G c #CB7931",
|
||||||
|
"H c #D77928",
|
||||||
|
"J c #DA7A22",
|
||||||
|
"K c #DB7E29",
|
||||||
|
"L c #E46D02",
|
||||||
|
"P c #E67104",
|
||||||
|
"I c #EF7500",
|
||||||
|
"U c #EE7F16",
|
||||||
|
"Y c #F47800",
|
||||||
|
"T c #F47D0A",
|
||||||
|
"R c #C17B43",
|
||||||
|
"E c #AC815E",
|
||||||
|
"W c #B3835C",
|
||||||
|
"Q c #BB885E",
|
||||||
|
"! c #AB8F78",
|
||||||
|
"~ c #AE917B",
|
||||||
|
"^ c #B1957E",
|
||||||
|
"/ c #BD9A7D",
|
||||||
|
"( c #CF833E",
|
||||||
|
") c #D0823C",
|
||||||
|
"_ c #DC8433",
|
||||||
|
"` c #DE8B3E",
|
||||||
|
"' c #F48214",
|
||||||
|
"] c #F18319",
|
||||||
|
"[ c #F5881F",
|
||||||
|
"{ c #EA8E3B",
|
||||||
|
"} c #F58A22",
|
||||||
|
"| c #F99A25",
|
||||||
|
" . c #F99C29",
|
||||||
|
".. c #FAA12E",
|
||||||
|
"X. c #FAA432",
|
||||||
|
"o. c #FBA739",
|
||||||
|
"O. c #FAA835",
|
||||||
|
"+. c #FBAC3B",
|
||||||
|
"@. c #C6834E",
|
||||||
|
"#. c #C28856",
|
||||||
|
"$. c #CA8D57",
|
||||||
|
"%. c #D58C4A",
|
||||||
|
"&. c #DF8F45",
|
||||||
|
"*. c #DD944D",
|
||||||
|
"=. c #D69459",
|
||||||
|
"-. c #C39673",
|
||||||
|
";. c #C79E7C",
|
||||||
|
":. c #CF9C73",
|
||||||
|
">. c #DB9F69",
|
||||||
|
",. c #DFA36A",
|
||||||
|
"<. c #D4A074",
|
||||||
|
"1. c #E1944D",
|
||||||
|
"2. c #E29753",
|
||||||
|
"3. c #E39B5A",
|
||||||
|
"4. c #F79C44",
|
||||||
|
"5. c #E19B63",
|
||||||
|
"6. c #E5A45D",
|
||||||
|
"7. c #FBAE42",
|
||||||
|
"8. c #FBAE4B",
|
||||||
|
"9. c #F5A353",
|
||||||
|
"0. c #FBB144",
|
||||||
|
"q. c #FBB44C",
|
||||||
|
"w. c #FFBF40",
|
||||||
|
"e. c #F6B153",
|
||||||
|
"r. c #F4B75C",
|
||||||
|
"t. c #FBB452",
|
||||||
|
"y. c #FCB854",
|
||||||
|
"u. c #FCBA5B",
|
||||||
|
"i. c #E5A362",
|
||||||
|
"p. c #E5AA6D",
|
||||||
|
"a. c #E8A566",
|
||||||
|
"s. c #E3AC7A",
|
||||||
|
"d. c #E5B17F",
|
||||||
|
"f. c #E3B87C",
|
||||||
|
"g. c #E8B677",
|
||||||
|
"h. c #E8B07D",
|
||||||
|
"j. c #EEBF7B",
|
||||||
|
"k. c #F5AB64",
|
||||||
|
"l. c #F0AD6F",
|
||||||
|
"z. c #F4B06F",
|
||||||
|
"x. c #F0B969",
|
||||||
|
"c. c #F9B069",
|
||||||
|
"v. c #FABC63",
|
||||||
|
"b. c #FBBF68",
|
||||||
|
"n. c #F0BB72",
|
||||||
|
"m. c #F1BA78",
|
||||||
|
"M. c yellow",
|
||||||
|
"N. c #EFC17D",
|
||||||
|
"B. c #FBC06D",
|
||||||
|
"V. c #F4C07C",
|
||||||
|
"C. c #FCC372",
|
||||||
|
"Z. c #FCC57B",
|
||||||
|
"A. c #808080",
|
||||||
|
"S. c #8A8B87",
|
||||||
|
"D. c #8C8D8A",
|
||||||
|
"F. c #929292",
|
||||||
|
"G. c #9B9793",
|
||||||
|
"H. c #9A9A9A",
|
||||||
|
"J. c #9EA19D",
|
||||||
|
"K. c #AE9886",
|
||||||
|
"L. c #A99D94",
|
||||||
|
"P. c #B59982",
|
||||||
|
"I. c #B99C86",
|
||||||
|
"U. c #BC9F89",
|
||||||
|
"Y. c #BDA28B",
|
||||||
|
"T. c #BAA492",
|
||||||
|
"R. c #BDAA9B",
|
||||||
|
"E. c #A3A3A3",
|
||||||
|
"W. c #A6ABA6",
|
||||||
|
"Q. c #AAACA7",
|
||||||
|
"!. c #ACACAB",
|
||||||
|
"~. c #B6B6AD",
|
||||||
|
"^. c #BEB5AE",
|
||||||
|
"/. c #B3B3B3",
|
||||||
|
"(. c #BBBBBB",
|
||||||
|
"). c #D9AB85",
|
||||||
|
"_. c #D9B98B",
|
||||||
|
"`. c #D5BC97",
|
||||||
|
"'. c #D8BD96",
|
||||||
|
"]. c #C7BBA4",
|
||||||
|
"[. c #CDBDA0",
|
||||||
|
"{. c #CCBAAC",
|
||||||
|
"}. c #C0BBB8",
|
||||||
|
"|. c #E6B68A",
|
||||||
|
" X c #E7BA88",
|
||||||
|
".X c #E9B680",
|
||||||
|
"XX c #EAB88F",
|
||||||
|
"oX c #F5BC87",
|
||||||
|
"OX c #CDC4BA",
|
||||||
|
"+X c #DAC6AA",
|
||||||
|
"@X c #F5CB8D",
|
||||||
|
"#X c #FAC28B",
|
||||||
|
"$X c #FDCB82",
|
||||||
|
"%X c #FCCE8C",
|
||||||
|
"&X c #F5C395",
|
||||||
|
"*X c #FBCB9C",
|
||||||
|
"=X c #FDD497",
|
||||||
|
"-X c #FDD59A",
|
||||||
|
";X c #E0CDBE",
|
||||||
|
":X c #EFD0A6",
|
||||||
|
">X c #EFD4AB",
|
||||||
|
",X c #E3D1B5",
|
||||||
|
"<X c #E3D3BC",
|
||||||
|
"1X c #EFD7B4",
|
||||||
|
"2X c #E9D7BC",
|
||||||
|
"3X c #F6C9A0",
|
||||||
|
"4X c #F7D7A7",
|
||||||
|
"5X c #F0D4AC",
|
||||||
|
"6X c #FDD7A1",
|
||||||
|
"7X c #FAD7A9",
|
||||||
|
"8X c #FCD8A3",
|
||||||
|
"9X c #FDDCAC",
|
||||||
|
"0X c #F0D2BA",
|
||||||
|
"qX c #F4D8B0",
|
||||||
|
"wX c #F9DBB4",
|
||||||
|
"eX c #FDE2BA",
|
||||||
|
"rX c #C3C3C2",
|
||||||
|
"tX c #CBC7C4",
|
||||||
|
"yX c #CCCCCB",
|
||||||
|
"uX c #DCCFC4",
|
||||||
|
"iX c #D5D2CC",
|
||||||
|
"pX c #DFD3C0",
|
||||||
|
"aX c #DAD4CC",
|
||||||
|
"sX c #DCD8CD",
|
||||||
|
"dX c #D3D3D3",
|
||||||
|
"fX c #DBDBDA",
|
||||||
|
"gX c #E4DBCE",
|
||||||
|
"hX c #EBDBC4",
|
||||||
|
"jX c #E2DDD6",
|
||||||
|
"kX c #E3DDD9",
|
||||||
|
"lX c #F0DEC3",
|
||||||
|
"zX c #EFE2CE",
|
||||||
|
"xX c #E5E1DC",
|
||||||
|
"cX c #EBE1D2",
|
||||||
|
"vX c #EEE6DB",
|
||||||
|
"bX c #EEE8DE",
|
||||||
|
"nX c #F7E4C7",
|
||||||
|
"mX c #F7E6CE",
|
||||||
|
"MX c #FDE5C2",
|
||||||
|
"NX c #F9E7CD",
|
||||||
|
"BX c #FEE9CA",
|
||||||
|
"VX c #F0E5DC",
|
||||||
|
"CX c #F3EADD",
|
||||||
|
"ZX c #FDECD3",
|
||||||
|
"AX c #FEEFDA",
|
||||||
|
"SX c #FEF1DC",
|
||||||
|
"DX c #E4E4E4",
|
||||||
|
"FX c #EBEBEB",
|
||||||
|
"GX c #F5EFE5",
|
||||||
|
"HX c #FDF2E2",
|
||||||
|
"JX c #FDF6EB",
|
||||||
|
"KX c #FFF8ED",
|
||||||
|
"LX c #F3F3F3",
|
||||||
|
"PX c #F9F7F4",
|
||||||
|
"IX c #FEF9F3",
|
||||||
|
"UX c #FEFEFE",
|
||||||
|
"YX c None",
|
||||||
|
/* pixels */
|
||||||
|
"YXYXYXYXYXYXYXYXYXYXYXYX* * * w w g YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXYXYXYXYXr d 7 < M D ( A 1 4 y w , YXYXYXYXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXYXYXr p n *.m.MXIXIXUXUXJXwX*.m 7 w YXYXYXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXA.u 1 .XHXIXIXUXeX$XC.%XMXUXSX-Xi.4 a > YXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXg p G ZXUXSX-XKX6X+.O.+.O.+.C.UXUXIXCXx i 8 YXYXYXYXYXYX",
|
||||||
|
"YXYXYX8 p %.IXIX%X+.O.q.$XX...O. .+.8.8XMXeXIXUX:.3 2 YXYXYXYXYX",
|
||||||
|
"YXYXYXd D SXKXu.+.X.+. .-X .X.o. .+.8.wXt.y.v.HXIX@.a YXYXYXYXYX",
|
||||||
|
"YXYXw 1 9XUXZ.O.O.X... .6Xo.+.0.o.q.7X$Xb.b.b.C.KXPXs t YXYXYXYX",
|
||||||
|
"YXYX7 6.HXSX+.+.| +...+.v.b.q.t.e.V.NX@X@X@X@X@X4XPXuXl YXYXYXYX",
|
||||||
|
"YXt M 9XIXIX0.X.0.o.q.8.t.eXv.n.f.cX1X>X5X5X5X:X:XHXDX).h YXYXYX",
|
||||||
|
"YXa p.UXAX9X9XZ.X.t.t.v.b.ZXg._.+XCX<X<XhXhX2X,X<XbXFXfXH.YXYXYX",
|
||||||
|
", < HXHX0.+. .u.9XC.b.B.n.hXpX].DXkXdXaXaXaX{.d f ;.jXDXH.YXYXYX",
|
||||||
|
"9 S UX$XO.O.+...X.%XZX:X'.aXsX~.yXrXfX(.(.yXU.2.r.a.f aX/.A.YXYX",
|
||||||
|
"9 >.UXq.+... ...+.t.N.VXPXYXYXYXYXJ.E././.rXU.a.Y T l.f (.A.YXYX",
|
||||||
|
"5 .XUX+.X...X.+.q.x._.[.iXYXYXw.YXD.S.(./.rXU.5.Y Y } =.T.A.YXYX",
|
||||||
|
"5 ,.UXr.+.O.O.+.r.f.`.aXW.YXM.YXYXo o /./.}.I.3.n N ] 9.y A.YXYX",
|
||||||
|
"> ) UX-X+.O.+.q.j.hXjXdXQ.YXYXYX+ . F.!.!.rXI.2.5 I.7 U R & YXYX",
|
||||||
|
"> A BXUX8XB.4XnXcXOXtXdX!.S.o % # (.Q.!.(.P.1.y dX}.9 P ; O YX",
|
||||||
|
", 1 %XHXUXNX>X2XsXfXfXdXdX/.h k ).K.W.W./.rXP.&.0 yXiXiX8 @ + @ ",
|
||||||
|
"YX7 XIXKXqXhXvXFXDXdXdXyX}.u 0X0Xw E.W.(.rXK.&.y yXyXyXF.O O O ",
|
||||||
|
"YX5 f UXGXmXGXLXFXFXDXdXyX(.u XX5.R L./.(.(.P.K 0 yXyX/.A.YXYXYX",
|
||||||
|
"YX, 1 VXUXJXPXLXLXFXFXDXdXyXd } I H k (.(.(.P.K 0 tXyXF.YXYXYXYX",
|
||||||
|
"YXYX9 -.UXUXPXLXLXFXFXDXfXdXy L L c l (./.(.~ K 0 yXE.A.YXYXYXYX",
|
||||||
|
"YXYXc E uXUXUXPXLXLXFXDXfXfX{.u 5 u (.(.(./.! J 0 /.F.YXYXYXYXYX",
|
||||||
|
"YXYXYX7 G.FXPXUXLXLXFXFXDXfXfXdXyXyXrXrX(.(.! Z 8 F.A.YXYXYXYXYX",
|
||||||
|
"YXYXYXYXA.H.dXUXUXLXLXFXDXDXfXfXdXyXyXtXrX(.^ C $ A.YXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXA.H./.LXPXLXFXDXDXDXfXfXdXtXR.R.}.j B = YXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXYXYXA.H.rXFXLXFXFXDXfXQ Q <.|.s.$.p V = YXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXYXYXYXYXA.H.J./.(.tXW h.*X*X#Xc.4.} ] = YXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXYXYXYXYXYXYXYXA.A.A.$ *.oX*X&Xl.{ L b = YXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXO @ = - , , - = + O YXYXYXYXYXYXYX",
|
||||||
|
"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXO O O O YXYXYXYXYXYXYXYXYXYX"
|
||||||
|
};
|
1
media
Submodule
1
media
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 402e8375511470c61021956edad72e1080f51c8e
|
105
pyrip.py
Normal file
105
pyrip.py
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
import argparse
|
||||||
|
import config
|
||||||
|
import logging
|
||||||
|
import media
|
||||||
|
import report
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import fstools
|
||||||
|
|
||||||
|
try:
|
||||||
|
from config import APP_NAME as ROOT_LOGGER_NAME
|
||||||
|
except ImportError:
|
||||||
|
ROOT_LOGGER_NAME = 'root'
|
||||||
|
logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def progress_callback_rip(p: float):
|
||||||
|
bar_length = 40
|
||||||
|
progress = int(bar_length * p)
|
||||||
|
out = "\rRipping.... - [ "
|
||||||
|
out += "*" * progress
|
||||||
|
out += "-" * (bar_length - progress)
|
||||||
|
out += " ] %5.1f%%" % (p * 100)
|
||||||
|
sys.stdout.write(out)
|
||||||
|
|
||||||
|
|
||||||
|
def progress_callback_enc(p: float):
|
||||||
|
bar_length = 40
|
||||||
|
progress = int(bar_length * p)
|
||||||
|
out = "\rEncoding... - [ "
|
||||||
|
out += "*" * progress
|
||||||
|
out += "-" * (bar_length - progress)
|
||||||
|
out += " ] %5.1f%%" % (p * 100)
|
||||||
|
sys.stdout.write(out)
|
||||||
|
|
||||||
|
|
||||||
|
def cddb_user_callback(what: int, info: dict):
|
||||||
|
if what == media.CALLBACK_CDDB_CHOICE:
|
||||||
|
keys = tuple(info.keys())
|
||||||
|
print("Multiple cddb entries detected:")
|
||||||
|
print("-------------------------------")
|
||||||
|
for i in range(0, len(keys)):
|
||||||
|
print("%2d. %s" % (i + 1, info[keys[i]]))
|
||||||
|
n = None
|
||||||
|
while not n:
|
||||||
|
fb = input("Choose: ")
|
||||||
|
try:
|
||||||
|
fb = int(fb)
|
||||||
|
except ValueError:
|
||||||
|
n = None
|
||||||
|
else:
|
||||||
|
if fb > 0 and fb <= len(keys):
|
||||||
|
n = fb
|
||||||
|
if n is None:
|
||||||
|
print("Use a choice from above!")
|
||||||
|
print()
|
||||||
|
return keys[n - 1]
|
||||||
|
elif what == media.CALLBACK_MAN_INPUT:
|
||||||
|
print("No cddb entries detected:")
|
||||||
|
print("-------------------------")
|
||||||
|
for key in info:
|
||||||
|
info[key] = input(key[0].upper() + key[1:] + ": ")
|
||||||
|
return info
|
||||||
|
|
||||||
|
|
||||||
|
def main(**kwargs):
|
||||||
|
disc_data = media.get_media_data(media.get_disc_device(), cddb_user_callback)
|
||||||
|
|
||||||
|
if disc_data is None:
|
||||||
|
logger.error("Could not reading disc_data")
|
||||||
|
sys.exit(1)
|
||||||
|
print("Found Disc:")
|
||||||
|
print("===========")
|
||||||
|
print()
|
||||||
|
print(disc_data[media.common.KEY_ARTIST], "-", disc_data[media.common.KEY_ALBUM])
|
||||||
|
print("-" * (len(disc_data[media.common.KEY_ARTIST]) + len(disc_data[media.common.KEY_ALBUM]) + 3))
|
||||||
|
for track_info in disc_data["tracks"]:
|
||||||
|
i = track_info[media.common.KEY_TRACK]
|
||||||
|
print("%2d. %s" % (i, track_info[media.common.KEY_TITLE]))
|
||||||
|
wavfile = media.track_to_targetpath(kwargs.get("basepath"), track_info, 'wav')
|
||||||
|
try:
|
||||||
|
fstools.mkdir(os.path.dirname(wavfile))
|
||||||
|
except PermissionError:
|
||||||
|
logger.exception("Unable to create ripping target path: %s", os.path.dirname(wavfile))
|
||||||
|
sys.exit(1)
|
||||||
|
rv = media.disc_track_rip(i, wavfile, progress_callback_rip)
|
||||||
|
if rv == 0:
|
||||||
|
print()
|
||||||
|
rv = media.wav_to_mp3(wavfile, kwargs.get("basepath"), track_info, progress_callback_enc)
|
||||||
|
print()
|
||||||
|
os.remove(wavfile)
|
||||||
|
if rv != 0:
|
||||||
|
logger.error("Error while ripping or encoding...")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
default_baspath = os.path.join(os.getenv("HOME"), "rip")
|
||||||
|
parser = argparse.ArgumentParser(description='Description')
|
||||||
|
parser.add_argument('-v', '--verbose', help='Description for foo argument', action='store_true')
|
||||||
|
parser.add_argument('-b', '--basepath', help=f'The rip and encode basepath (default is {default_baspath})', default=default_baspath)
|
||||||
|
args = vars(parser.parse_args())
|
||||||
|
|
||||||
|
report.stdoutLoggingConfigure(log_name_lvl=((config.APP_NAME, logging.DEBUG if args.get('verbose') else logging.ERROR),))
|
||||||
|
|
||||||
|
main(**args)
|
384
pyrip.wxg
Normal file
384
pyrip.wxg
Normal file
@ -0,0 +1,384 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- generated by wxGlade 0.7.1 on Tue Jul 12 10:30:16 2016 -->
|
||||||
|
|
||||||
|
<application class="" encoding="UTF-8" for_version="3.0" header_extension=".h" indent_amount="4" indent_symbol="space" is_template="0" language="python" name="" option="0" overwrite="0" path="pyrip.py" source_extension=".cpp" top_window="frame_1" use_gettext="1" use_new_namespace="1">
|
||||||
|
<object class="MainFrame" name="frame_1" base="EditFrame">
|
||||||
|
<title>PyRip</title>
|
||||||
|
<size>1033, 761</size>
|
||||||
|
<object class="wxBoxSizer" name="sizer_main" base="EditBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>1</option>
|
||||||
|
<object class="wxNotebook" name="notebook_main" base="EditNotebook">
|
||||||
|
<tabs>
|
||||||
|
<tab window="notebook_main_rip">Rip</tab>
|
||||||
|
<tab window="notebook_main_config">Config</tab>
|
||||||
|
</tabs>
|
||||||
|
<object class="wxPanel" name="notebook_main_rip" base="EditPanel">
|
||||||
|
<style>wxTAB_TRAVERSAL</style>
|
||||||
|
<object class="wxBoxSizer" name="sizer_rip" base="EditBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>1</option>
|
||||||
|
<object class="wxBoxSizer" name="sizer_rip_cd_data" base="EditBoxSizer">
|
||||||
|
<orient>wxHORIZONTAL</orient>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>1</option>
|
||||||
|
<object class="wxListBox" name="track_list" base="EditListBox">
|
||||||
|
<style>wxLB_MULTIPLE</style>
|
||||||
|
<selection>0</selection>
|
||||||
|
<choices>
|
||||||
|
</choices>
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_LISTBOX">evt_tracklist</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>1</option>
|
||||||
|
<object class="wxBoxSizer" name="sizer_rip_track_data" base="EditBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_artist" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Artist</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_artist" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_artist_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_album" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Album</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_album" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_album_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_year" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Year</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_year" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_year_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_genre" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Genre</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_genre" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_genre_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_title" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Title</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_title" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_title_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_track_no" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Trucknumber</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_track_no" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_track_no_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_comment" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Comment</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_comment" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_comment_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<border>0</border>
|
||||||
|
<option>1</option>
|
||||||
|
<object class="spacer" name="spacer" base="EditSpacer">
|
||||||
|
<height>20</height>
|
||||||
|
<width>20</width>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_overall_progress" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Overall Progress</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxGauge" name="gauge_overall_progress" base="EditGauge">
|
||||||
|
<range>1000</range>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_rip_progress" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Rip Progress</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxGauge" name="gauge_rip_progress" base="EditGauge">
|
||||||
|
<range>1000</range>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_encode_progress" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Encode Progress</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxGauge" name="gauge_encode_progress" base="EditGauge">
|
||||||
|
<range>1000</range>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxBoxSizer" name="sizer_rip_buttons" base="EditBoxSizer">
|
||||||
|
<orient>wxHORIZONTAL</orient>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="spacer" name="spacer" base="EditSpacer">
|
||||||
|
<height>20</height>
|
||||||
|
<width>20</width>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxButton" name="button_rip" base="EditButton">
|
||||||
|
<label>Rip</label>
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_BUTTON">evt_rip</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="spacer" name="spacer" base="EditSpacer">
|
||||||
|
<height>20</height>
|
||||||
|
<width>20</width>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxButton" name="button_read_disc" base="EditButton">
|
||||||
|
<label>Read Disc</label>
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_BUTTON">evt_new_disc</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="spacer" name="spacer" base="EditSpacer">
|
||||||
|
<height>20</height>
|
||||||
|
<width>20</width>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="wxPanel" name="notebook_main_config" base="EditPanel">
|
||||||
|
<style>wxTAB_TRAVERSAL</style>
|
||||||
|
<object class="wxBoxSizer" name="sizer_notebook_main_config" base="EditBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_target_path" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Target Path</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_target_path" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_target_path_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_device" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Device</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_device" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_device_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_default_comment" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Default Comment</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_default_comment" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_default_comment_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxStaticBoxSizer" name="sizer_track_list_string" base="EditStaticBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
|
<label>Track List Sting</label>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<flag>wxEXPAND</flag>
|
||||||
|
<border>0</border>
|
||||||
|
<option>0</option>
|
||||||
|
<object class="wxTextCtrl" name="text_ctrl_track_list_string" base="EditTextCtrl">
|
||||||
|
<events>
|
||||||
|
<handler event="EVT_TEXT">evt_track_list_string_changed</handler>
|
||||||
|
</events>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</application>
|
1
report
Submodule
1
report
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 7003c13ef8c7e7c3a55a545cbbad4039cc024a9f
|
1
task
Submodule
1
task
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 7583bb5f3bd2420c901374ba95b678af6ce88433
|
Loading…
x
Reference in New Issue
Block a user