diff --git a/docs/_sources/usage/warnings.rst.txt b/docs/_sources/usage/warnings.rst.txt index e813fa6..c0d51fa 100644 --- a/docs/_sources/usage/warnings.rst.txt +++ b/docs/_sources/usage/warnings.rst.txt @@ -1,3 +1,35 @@ ======== Warnings -======== \ No newline at end of file +======== + +Before using the delete feature please run a few dry runs to get acquainted with MediaCurator as you it can irrirreparably damage your media library when not used properly. + +When using the -del flag here is the expected behavior: + +To delete all non-hd videos in a folder: + +.. code-block:: bash + + ./curator.py list -del -filters:lowres -dir/-files:"/mnt/media/" + +To delete all videos in a folder with encoding errors: + +.. code-block:: bash + + ./curator.py list -del -filters:fferror -dir/-files:"/mnt/media/" + +To convert (repair) then delete all videos in a folder with encoding errors: + +.. code-block:: bash + + ./curator.py convert -del -filters:fferror -dir/-files:"/mnt/media/" + +To delete all videos in a folder: + +.. code-block:: bash + + ./curator.py list -del -filters:lowres -dir/-files:"/mnt/media/" + +All these commands can have valuable use but are irrecoverable if done unintended. + +Again, please run a few dry runs until you are acquainted with MediaCurator. \ No newline at end of file diff --git a/docs/searchindex.js b/docs/searchindex.js index 1b96479..9b95b0d 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","usage/errors","usage/installation","usage/manual","usage/quickstart","usage/use_cases","usage/warnings"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","usage/errors.rst","usage/installation.rst","usage/manual.rst","usage/quickstart.rst","usage/use_cases.rst","usage/warnings.rst"],objects:{},objnames:{},objtypes:{},terms:{"1080p":[3,4],"720p":[3,4],"case":0,"default":[3,4],"try":1,"while":1,For:2,The:0,Use:0,activ:1,after:1,again:1,all:0,also:1,ani:[3,4],audio:1,av1:[0,3,4],avi:[3,4],base:0,bash:[],batch:0,big:1,big_valu:1,bug:0,can:[0,1],chapter:1,clean:1,clone:2,code:0,codec:0,com:2,comma:[3,4],command:0,content:0,convert:[0,3,4],curat:[3,4],damag:1,databas:0,decod:1,del:[3,4],depend:1,detect:1,dir:[3,4],distribut:[1,2],don:1,doubl:[3,4],download:2,encod:0,error:0,exampl:[1,3,4],experi:1,extent:0,fabquennevil:2,face:1,failur:1,featur:1,feel:1,few:1,fferror:[3,4],ffmpeg:0,file:[3,4],filenam:[3,4],filter:[0,3,4],find:0,flv:[3,4],format:[3,4],found:[0,1],frame:1,free:1,from:0,git:2,github:[0,1],gnu:2,happen:1,header:1,here:1,http:2,index:[],inform:[0,1],instal:0,issu:0,its:1,latest:1,like:1,line:0,linux:2,list:[0,3,4],lowr:[3,4],m4v:[3,4],mai:1,manag:0,manual:0,media2:[3,4],media:[0,3,4],mediacur:[1,2],medlist:[3,4],miss:1,mkv:[3,4],mnt:[3,4],modern:0,modul:[],more:0,most:1,move:1,movi:[3,4],mp4:[3,4],mpeg4:[3,4],mpeg:[1,3,4],mpg:[3,4],multipl:[3,4],necessarli:1,next:1,now:2,occur:1,old:[1,3,4],onli:2,open:1,option:[1,3,4],other:0,out:[3,4],output:1,packag:2,page:[],pip:2,possibl:1,print:[1,3,4],project:1,python:0,quickstart:0,quit:1,raw:1,recod:0,recur:1,referenc:1,repair:0,report:1,repositori:1,requir:2,resolut:0,run:1,search:[],segfault:1,sei:1,separ:[3,4],serv:1,some:1,sourc:[0,1],step:1,suggest:1,take:1,thi:2,too:1,tool:0,track:1,txt:[2,3,4],type:1,uhd:[3,4],updat:1,use:[3,4],used:1,using:1,valu:[3,4],verbos:[1,3,4],veri:1,version:1,vid:[3,4],video:[0,1],want:1,warn:0,when:1,wich:1,without:0,wmv3:[3,4],wmv:[3,4],work:2,x264:[3,4],x265:[0,3,4],you:1,your:1},titles:["Welcome to MediaCurator\u2019s documentation!","Errors","Installation","Manual","Quickstart","Use cases","Warnings"],titleterms:{"case":5,Use:5,bug:1,document:0,encod:1,error:1,ffmpeg:[1,2],from:2,github:2,indic:[],instal:2,issu:1,manual:3,mediacur:0,other:1,quickstart:4,repair:1,tabl:[],warn:6,welcom:0}}) \ No newline at end of file +Search.setIndex({docnames:["index","usage/errors","usage/installation","usage/manual","usage/quickstart","usage/use_cases","usage/warnings"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","usage/errors.rst","usage/installation.rst","usage/manual.rst","usage/quickstart.rst","usage/use_cases.rst","usage/warnings.rst"],objects:{},objnames:{},objtypes:{},terms:{"1080p":[3,4],"720p":[3,4],"case":0,"default":[3,4],"try":1,"while":1,For:2,The:0,Use:0,acquaint:6,activ:1,after:1,again:[1,6],all:[0,6],also:1,ani:[3,4],audio:1,av1:[0,3,4],avi:[3,4],base:0,bash:[],batch:0,befor:6,behavior:6,big:1,big_valu:1,bug:0,can:[0,1,6],chapter:1,clean:1,clone:2,code:0,codec:0,com:2,comma:[3,4],command:[0,6],content:0,convert:[0,3,4,6],curat:[3,4,6],damag:[1,6],databas:0,decod:1,del:[3,4,6],delet:6,depend:1,detect:1,dir:[3,4,6],distribut:[1,2],don:1,done:6,doubl:[3,4],download:2,dry:6,encod:[0,6],error:[0,6],exampl:[1,3,4],expect:6,experi:1,extent:0,fabquennevil:2,face:1,failur:1,featur:[1,6],feel:1,few:[1,6],fferror:[3,4,6],ffmpeg:0,file:[3,4,6],filenam:[3,4],filter:[0,3,4,6],find:0,flag:6,flv:[3,4],folder:6,format:[3,4],found:[0,1],frame:1,free:1,from:0,get:6,git:2,github:[0,1],gnu:2,happen:1,have:6,header:1,here:[1,6],http:2,index:[],inform:[0,1],instal:0,irrecover:6,irrirrepar:6,issu:0,its:1,latest:1,librari:6,like:1,line:0,linux:2,list:[0,3,4,6],lowr:[3,4,6],m4v:[3,4],mai:1,manag:0,manual:0,media2:[3,4],media:[0,3,4,6],mediacur:[1,2,6],medlist:[3,4],miss:1,mkv:[3,4],mnt:[3,4,6],modern:0,modul:[],more:0,most:1,move:1,movi:[3,4],mp4:[3,4],mpeg4:[3,4],mpeg:[1,3,4],mpg:[3,4],multipl:[3,4],necessarli:1,next:1,non:6,now:2,occur:1,old:[1,3,4],onli:2,open:1,option:[1,3,4],other:0,out:[3,4],output:1,packag:2,page:[],pip:2,pleas:6,possibl:1,print:[1,3,4],project:1,properli:6,python:0,quickstart:0,quit:1,raw:1,recod:0,recur:1,referenc:1,repair:[0,6],report:1,repositori:1,requir:2,resolut:0,run:[1,6],search:[],segfault:1,sei:1,separ:[3,4],serv:1,some:1,sourc:[0,1],step:1,suggest:1,take:1,thi:2,too:1,tool:0,track:1,txt:[2,3,4],type:1,uhd:[3,4],unintend:6,until:6,updat:1,use:[3,4,6],used:[1,6],using:[1,6],valu:[3,4],valuabl:6,verbos:[1,3,4],veri:1,version:1,vid:[3,4],video:[0,1,6],want:1,warn:0,when:[1,6],wich:1,without:0,wmv3:[3,4],wmv:[3,4],work:2,x264:[3,4],x265:[0,3,4],you:[1,6],your:[1,6]},titles:["Welcome to MediaCurator\u2019s documentation!","Errors","Installation","Manual","Quickstart","Use cases","Warnings"],titleterms:{"case":5,Use:5,bug:1,document:0,encod:1,error:1,ffmpeg:[1,2],from:2,github:2,indic:[],instal:2,issu:1,manual:3,mediacur:0,other:1,quickstart:4,repair:1,tabl:[],warn:6,welcom:0}}) \ No newline at end of file diff --git a/docs/usage/warnings.html b/docs/usage/warnings.html index 5591979..8d29e79 100644 --- a/docs/usage/warnings.html +++ b/docs/usage/warnings.html @@ -36,6 +36,26 @@

Warnings

+

Before using the delete feature please run a few dry runs to get acquainted with MediaCurator as you it can irrirreparably damage your media library when not used properly.

+

When using the -del flag here is the expected behavior:

+

To delete all non-hd videos in a folder:

+
./curator.py list -del -filters:lowres  -dir/-files:"/mnt/media/"
+
+
+

To delete all videos in a folder with encoding errors:

+
./curator.py list -del -filters:fferror  -dir/-files:"/mnt/media/"
+
+
+

To convert (repair) then delete all videos in a folder with encoding errors:

+
./curator.py convert -del -filters:fferror  -dir/-files:"/mnt/media/"
+
+
+

To delete all videos in a folder:

+
./curator.py list -del -filters:lowres  -dir/-files:"/mnt/media/"
+
+
+

All these commands can have valuable use but are irrecoverable if done unintended.

+

Again, please run a few dry runs until you are acquainted with MediaCurator.

diff --git a/docsource/build/doctrees/environment.pickle b/docsource/build/doctrees/environment.pickle index 6d4deb8..f41433a 100644 Binary files a/docsource/build/doctrees/environment.pickle and b/docsource/build/doctrees/environment.pickle differ diff --git a/docsource/build/doctrees/usage/warnings.doctree b/docsource/build/doctrees/usage/warnings.doctree index 42e3825..0ceede8 100644 Binary files a/docsource/build/doctrees/usage/warnings.doctree and b/docsource/build/doctrees/usage/warnings.doctree differ diff --git a/docsource/build/html/_sources/usage/warnings.rst.txt b/docsource/build/html/_sources/usage/warnings.rst.txt index e813fa6..c0d51fa 100644 --- a/docsource/build/html/_sources/usage/warnings.rst.txt +++ b/docsource/build/html/_sources/usage/warnings.rst.txt @@ -1,3 +1,35 @@ ======== Warnings -======== \ No newline at end of file +======== + +Before using the delete feature please run a few dry runs to get acquainted with MediaCurator as you it can irrirreparably damage your media library when not used properly. + +When using the -del flag here is the expected behavior: + +To delete all non-hd videos in a folder: + +.. code-block:: bash + + ./curator.py list -del -filters:lowres -dir/-files:"/mnt/media/" + +To delete all videos in a folder with encoding errors: + +.. code-block:: bash + + ./curator.py list -del -filters:fferror -dir/-files:"/mnt/media/" + +To convert (repair) then delete all videos in a folder with encoding errors: + +.. code-block:: bash + + ./curator.py convert -del -filters:fferror -dir/-files:"/mnt/media/" + +To delete all videos in a folder: + +.. code-block:: bash + + ./curator.py list -del -filters:lowres -dir/-files:"/mnt/media/" + +All these commands can have valuable use but are irrecoverable if done unintended. + +Again, please run a few dry runs until you are acquainted with MediaCurator. \ No newline at end of file diff --git a/docsource/build/html/searchindex.js b/docsource/build/html/searchindex.js index 1b96479..9b95b0d 100644 --- a/docsource/build/html/searchindex.js +++ b/docsource/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","usage/errors","usage/installation","usage/manual","usage/quickstart","usage/use_cases","usage/warnings"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","usage/errors.rst","usage/installation.rst","usage/manual.rst","usage/quickstart.rst","usage/use_cases.rst","usage/warnings.rst"],objects:{},objnames:{},objtypes:{},terms:{"1080p":[3,4],"720p":[3,4],"case":0,"default":[3,4],"try":1,"while":1,For:2,The:0,Use:0,activ:1,after:1,again:1,all:0,also:1,ani:[3,4],audio:1,av1:[0,3,4],avi:[3,4],base:0,bash:[],batch:0,big:1,big_valu:1,bug:0,can:[0,1],chapter:1,clean:1,clone:2,code:0,codec:0,com:2,comma:[3,4],command:0,content:0,convert:[0,3,4],curat:[3,4],damag:1,databas:0,decod:1,del:[3,4],depend:1,detect:1,dir:[3,4],distribut:[1,2],don:1,doubl:[3,4],download:2,encod:0,error:0,exampl:[1,3,4],experi:1,extent:0,fabquennevil:2,face:1,failur:1,featur:1,feel:1,few:1,fferror:[3,4],ffmpeg:0,file:[3,4],filenam:[3,4],filter:[0,3,4],find:0,flv:[3,4],format:[3,4],found:[0,1],frame:1,free:1,from:0,git:2,github:[0,1],gnu:2,happen:1,header:1,here:1,http:2,index:[],inform:[0,1],instal:0,issu:0,its:1,latest:1,like:1,line:0,linux:2,list:[0,3,4],lowr:[3,4],m4v:[3,4],mai:1,manag:0,manual:0,media2:[3,4],media:[0,3,4],mediacur:[1,2],medlist:[3,4],miss:1,mkv:[3,4],mnt:[3,4],modern:0,modul:[],more:0,most:1,move:1,movi:[3,4],mp4:[3,4],mpeg4:[3,4],mpeg:[1,3,4],mpg:[3,4],multipl:[3,4],necessarli:1,next:1,now:2,occur:1,old:[1,3,4],onli:2,open:1,option:[1,3,4],other:0,out:[3,4],output:1,packag:2,page:[],pip:2,possibl:1,print:[1,3,4],project:1,python:0,quickstart:0,quit:1,raw:1,recod:0,recur:1,referenc:1,repair:0,report:1,repositori:1,requir:2,resolut:0,run:1,search:[],segfault:1,sei:1,separ:[3,4],serv:1,some:1,sourc:[0,1],step:1,suggest:1,take:1,thi:2,too:1,tool:0,track:1,txt:[2,3,4],type:1,uhd:[3,4],updat:1,use:[3,4],used:1,using:1,valu:[3,4],verbos:[1,3,4],veri:1,version:1,vid:[3,4],video:[0,1],want:1,warn:0,when:1,wich:1,without:0,wmv3:[3,4],wmv:[3,4],work:2,x264:[3,4],x265:[0,3,4],you:1,your:1},titles:["Welcome to MediaCurator\u2019s documentation!","Errors","Installation","Manual","Quickstart","Use cases","Warnings"],titleterms:{"case":5,Use:5,bug:1,document:0,encod:1,error:1,ffmpeg:[1,2],from:2,github:2,indic:[],instal:2,issu:1,manual:3,mediacur:0,other:1,quickstart:4,repair:1,tabl:[],warn:6,welcom:0}}) \ No newline at end of file +Search.setIndex({docnames:["index","usage/errors","usage/installation","usage/manual","usage/quickstart","usage/use_cases","usage/warnings"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","usage/errors.rst","usage/installation.rst","usage/manual.rst","usage/quickstart.rst","usage/use_cases.rst","usage/warnings.rst"],objects:{},objnames:{},objtypes:{},terms:{"1080p":[3,4],"720p":[3,4],"case":0,"default":[3,4],"try":1,"while":1,For:2,The:0,Use:0,acquaint:6,activ:1,after:1,again:[1,6],all:[0,6],also:1,ani:[3,4],audio:1,av1:[0,3,4],avi:[3,4],base:0,bash:[],batch:0,befor:6,behavior:6,big:1,big_valu:1,bug:0,can:[0,1,6],chapter:1,clean:1,clone:2,code:0,codec:0,com:2,comma:[3,4],command:[0,6],content:0,convert:[0,3,4,6],curat:[3,4,6],damag:[1,6],databas:0,decod:1,del:[3,4,6],delet:6,depend:1,detect:1,dir:[3,4,6],distribut:[1,2],don:1,done:6,doubl:[3,4],download:2,dry:6,encod:[0,6],error:[0,6],exampl:[1,3,4],expect:6,experi:1,extent:0,fabquennevil:2,face:1,failur:1,featur:[1,6],feel:1,few:[1,6],fferror:[3,4,6],ffmpeg:0,file:[3,4,6],filenam:[3,4],filter:[0,3,4,6],find:0,flag:6,flv:[3,4],folder:6,format:[3,4],found:[0,1],frame:1,free:1,from:0,get:6,git:2,github:[0,1],gnu:2,happen:1,have:6,header:1,here:[1,6],http:2,index:[],inform:[0,1],instal:0,irrecover:6,irrirrepar:6,issu:0,its:1,latest:1,librari:6,like:1,line:0,linux:2,list:[0,3,4,6],lowr:[3,4,6],m4v:[3,4],mai:1,manag:0,manual:0,media2:[3,4],media:[0,3,4,6],mediacur:[1,2,6],medlist:[3,4],miss:1,mkv:[3,4],mnt:[3,4,6],modern:0,modul:[],more:0,most:1,move:1,movi:[3,4],mp4:[3,4],mpeg4:[3,4],mpeg:[1,3,4],mpg:[3,4],multipl:[3,4],necessarli:1,next:1,non:6,now:2,occur:1,old:[1,3,4],onli:2,open:1,option:[1,3,4],other:0,out:[3,4],output:1,packag:2,page:[],pip:2,pleas:6,possibl:1,print:[1,3,4],project:1,properli:6,python:0,quickstart:0,quit:1,raw:1,recod:0,recur:1,referenc:1,repair:[0,6],report:1,repositori:1,requir:2,resolut:0,run:[1,6],search:[],segfault:1,sei:1,separ:[3,4],serv:1,some:1,sourc:[0,1],step:1,suggest:1,take:1,thi:2,too:1,tool:0,track:1,txt:[2,3,4],type:1,uhd:[3,4],unintend:6,until:6,updat:1,use:[3,4,6],used:[1,6],using:[1,6],valu:[3,4],valuabl:6,verbos:[1,3,4],veri:1,version:1,vid:[3,4],video:[0,1,6],want:1,warn:0,when:[1,6],wich:1,without:0,wmv3:[3,4],wmv:[3,4],work:2,x264:[3,4],x265:[0,3,4],you:[1,6],your:[1,6]},titles:["Welcome to MediaCurator\u2019s documentation!","Errors","Installation","Manual","Quickstart","Use cases","Warnings"],titleterms:{"case":5,Use:5,bug:1,document:0,encod:1,error:1,ffmpeg:[1,2],from:2,github:2,indic:[],instal:2,issu:1,manual:3,mediacur:0,other:1,quickstart:4,repair:1,tabl:[],warn:6,welcom:0}}) \ No newline at end of file diff --git a/docsource/build/html/usage/warnings.html b/docsource/build/html/usage/warnings.html index 5591979..8d29e79 100644 --- a/docsource/build/html/usage/warnings.html +++ b/docsource/build/html/usage/warnings.html @@ -36,6 +36,26 @@

Warnings

+

Before using the delete feature please run a few dry runs to get acquainted with MediaCurator as you it can irrirreparably damage your media library when not used properly.

+

When using the -del flag here is the expected behavior:

+

To delete all non-hd videos in a folder:

+
./curator.py list -del -filters:lowres  -dir/-files:"/mnt/media/"
+
+
+

To delete all videos in a folder with encoding errors:

+
./curator.py list -del -filters:fferror  -dir/-files:"/mnt/media/"
+
+
+

To convert (repair) then delete all videos in a folder with encoding errors:

+
./curator.py convert -del -filters:fferror  -dir/-files:"/mnt/media/"
+
+
+

To delete all videos in a folder:

+
./curator.py list -del -filters:lowres  -dir/-files:"/mnt/media/"
+
+
+

All these commands can have valuable use but are irrecoverable if done unintended.

+

Again, please run a few dry runs until you are acquainted with MediaCurator.

diff --git a/docsource/source/_build/html/.doctrees/environment.pickle b/docsource/source/_build/html/.doctrees/environment.pickle index 3857a12..48b9ae4 100644 Binary files a/docsource/source/_build/html/.doctrees/environment.pickle and b/docsource/source/_build/html/.doctrees/environment.pickle differ diff --git a/docsource/source/_build/html/.doctrees/index.doctree b/docsource/source/_build/html/.doctrees/index.doctree index 8265f79..ffb012b 100644 Binary files a/docsource/source/_build/html/.doctrees/index.doctree and b/docsource/source/_build/html/.doctrees/index.doctree differ diff --git a/docsource/source/_build/html/.doctrees/usage/errors.doctree b/docsource/source/_build/html/.doctrees/usage/errors.doctree index 9140092..b681576 100644 Binary files a/docsource/source/_build/html/.doctrees/usage/errors.doctree and b/docsource/source/_build/html/.doctrees/usage/errors.doctree differ diff --git a/docsource/source/_build/html/.doctrees/usage/manual.doctree b/docsource/source/_build/html/.doctrees/usage/manual.doctree new file mode 100644 index 0000000..92a1cd0 Binary files /dev/null and b/docsource/source/_build/html/.doctrees/usage/manual.doctree differ diff --git a/docsource/source/_build/html/.doctrees/usage/quickstart.doctree b/docsource/source/_build/html/.doctrees/usage/quickstart.doctree index ccbf2a6..f0448a6 100644 Binary files a/docsource/source/_build/html/.doctrees/usage/quickstart.doctree and b/docsource/source/_build/html/.doctrees/usage/quickstart.doctree differ diff --git a/docsource/source/_build/html/.doctrees/usage/warnings.doctree b/docsource/source/_build/html/.doctrees/usage/warnings.doctree new file mode 100644 index 0000000..20bb0de Binary files /dev/null and b/docsource/source/_build/html/.doctrees/usage/warnings.doctree differ diff --git a/docsource/source/_build/html/_sources/index.rst.txt b/docsource/source/_build/html/_sources/index.rst.txt index 733d5da..337778a 100644 --- a/docsource/source/_build/html/_sources/index.rst.txt +++ b/docsource/source/_build/html/_sources/index.rst.txt @@ -2,25 +2,33 @@ sphinx-quickstart on Fri Nov 20 22:46:06 2020. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. - + ======================================== Welcome to MediaCurator's documentation! ======================================== +MediaCurator is a Python command line tool to manage a media database. + +* List all the video's and their information with or without filters +* Batch find and repair/convert videos with encoding errors +* Batch recode videos to more modern codecs (x265 / AV1) based on filters: extentions, codecs, resolutions ... + +The source code can be found on `GitHub `_ + .. toctree:: :maxdepth: 2 :caption: Contents: + usage/warnings usage/installation usage/quickstart + usage/manual usage/use_cases usage/errors +.. Indices and tables +.. ================== - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` +.. * :ref:`genindex` +.. * :ref:`modindex` +.. * :ref:`search` diff --git a/docsource/source/_build/html/_sources/usage/errors.rst.txt b/docsource/source/_build/html/_sources/usage/errors.rst.txt index c27ea6c..fa479e7 100644 --- a/docsource/source/_build/html/_sources/usage/errors.rst.txt +++ b/docsource/source/_build/html/_sources/usage/errors.rst.txt @@ -3,12 +3,35 @@ Errors ====== +FFmpeg can detect quite a few errors in the encoding of your source video's encoding. It can also be used to repair errors. + +Repairable encoding errors +-------------------------- + +Here are some example errors that mediacurator will print and can possibly repair by re-encoding: + +* "Referenced QT chapter track not found" +* "Error, header damaged or not MPEG-4 header" +* "Header missing" +* "SEI type" +* "no frame!" +* "Error while decoding MPEG audio frame." +* "big_values too big" +* ... + +FFmpeg issues +------------- + +While using FFmpeg depending on your version you may also face other errors like segfaults. MediaCurator will also print information when that occurs and move on to the next video after cleaning up after failure. + +If that happens there are a few steps you can take: -"Referenced QT chapter track not found", -"Error, header damaged or not MPEG-4 header", -"Header missing", -"SEI type", -"no frame!", -"Error while decoding MPEG audio frame.", -"big_values too big" \ No newline at end of file +* `Update FFmpeg `_ to its latest version as it is a very active project and most distributions serve old versions in their repositories +* Run MediaCurator with the verbose print option wich will print the raw FFmpeg output +* Try again: In my experience some errors don't necessarly recur... + +Other bugs +---------- + +If you face other bugs, issues or want to suggest features feel free to open a bug report on `GitHub `_ \ No newline at end of file diff --git a/docsource/source/_build/html/_sources/usage/manual.rst.txt b/docsource/source/_build/html/_sources/usage/manual.rst.txt new file mode 100644 index 0000000..cb3979f --- /dev/null +++ b/docsource/source/_build/html/_sources/usage/manual.rst.txt @@ -0,0 +1,31 @@ +====== +Manual +====== + +.. code-block:: bash + + ./curator.py [list,convert] [-del] + [-in:any,avi,mkv,wmv,mpg,mp4,m4v,flv,vid] + [-filters:fferror,old,lowres,hd,720p,1080p,uhd,mpeg,mpeg4,x264,wmv3,wmv] + [-out:mkv/mp4,x265/av1] + [-print:list,formated,verbose] + [-dir/-files:"/mnt/media/",,"/mnt/media2/"] + +**for multiple files or filenames use double comma separated values ",,"** + +default options are: + +.. code-block:: bash + + -in:any + -filters: + -out:mkv,x265 + -print:list + +Examples: + +.. code-block:: bash + + ./curator.py list -filters:old -print:formated -dir:/mnt/media/ >> ../medlist.txt + ./curator.py convert -del -filters:mpeg4 -out:av1,mp4 -dir:"/mnt/media/Movies/" + ./curator.py convert -del -in:avi,mpg -print:formated,verbose -dir:/mnt/media/ diff --git a/docsource/source/_build/html/_sources/usage/quickstart.rst.txt b/docsource/source/_build/html/_sources/usage/quickstart.rst.txt index f41ce4b..120587c 100644 --- a/docsource/source/_build/html/_sources/usage/quickstart.rst.txt +++ b/docsource/source/_build/html/_sources/usage/quickstart.rst.txt @@ -1,4 +1,31 @@ - ========== Quickstart -========== \ No newline at end of file +========== + +.. code-block:: bash + + ./curator.py [list,convert] [-del] + [-in:any,avi,mkv,wmv,mpg,mp4,m4v,flv,vid] + [-filters:fferror,old,lowres,hd,720p,1080p,uhd,mpeg,mpeg4,x264,wmv3,wmv] + [-out:mkv/mp4,x265/av1] + [-print:list,formated,verbose] + [-dir/-files:"/mnt/media/",,"/mnt/media2/"] + +**for multiple files or filenames use double comma separated values ",,"** + +default options are: + +.. code-block:: bash + + -in:any + -filters: + -out:mkv,x265 + -print:list + +Examples: + +.. code-block:: bash + + ./curator.py list -filters:old -print:formated -dir:/mnt/media/ >> ../medlist.txt + ./curator.py convert -del -filters:mpeg4 -out:av1,mp4 -dir:"/mnt/media/Movies/" + ./curator.py convert -del -in:avi,mpg -print:formated,verbose -dir:/mnt/media/ diff --git a/docsource/source/_build/html/_sources/usage/warnings.rst.txt b/docsource/source/_build/html/_sources/usage/warnings.rst.txt new file mode 100644 index 0000000..4b29656 --- /dev/null +++ b/docsource/source/_build/html/_sources/usage/warnings.rst.txt @@ -0,0 +1,7 @@ +======== +Warnings +======== + +Before using the delete feature please run a few dry runs to get acquainted with MediaCurator as you it can irrirreparably damage your media library when not used properly. + +When using the -del flag here is the expected behavior: diff --git a/docsource/source/_build/html/genindex.html b/docsource/source/_build/html/genindex.html index d22fdb9..e2d8fe9 100644 --- a/docsource/source/_build/html/genindex.html +++ b/docsource/source/_build/html/genindex.html @@ -61,8 +61,10 @@

Navigation

Contents:

diff --git a/docsource/source/_build/html/index.html b/docsource/source/_build/html/index.html index ddd2802..b0bbf4f 100644 --- a/docsource/source/_build/html/index.html +++ b/docsource/source/_build/html/index.html @@ -16,7 +16,7 @@ - + @@ -35,25 +35,31 @@

Welcome to MediaCurator’s documentation!

+

MediaCurator is a Python command line tool to manage a media database.

+
    +
  • List all the video’s and their information with or without filters

  • +
  • Batch find and repair/convert videos with encoding errors

  • +
  • Batch recode videos to more modern codecs (x265 / AV1) based on filters: extentions, codecs, resolutions …

  • +
+

The source code can be found on GitHub

-
-

Indices and tables

-
@@ -80,8 +86,10 @@

Navigation

Contents:

@@ -90,7 +98,7 @@

Related Topics

diff --git a/docsource/source/_build/html/objects.inv b/docsource/source/_build/html/objects.inv index 6dc8c73..4aa79d8 100644 Binary files a/docsource/source/_build/html/objects.inv and b/docsource/source/_build/html/objects.inv differ diff --git a/docsource/source/_build/html/search.html b/docsource/source/_build/html/search.html index cb71970..10a304c 100644 --- a/docsource/source/_build/html/search.html +++ b/docsource/source/_build/html/search.html @@ -80,8 +80,10 @@

Navigation

Contents:

diff --git a/docsource/source/_build/html/searchindex.js b/docsource/source/_build/html/searchindex.js index f6b4f4a..2699089 100644 --- a/docsource/source/_build/html/searchindex.js +++ b/docsource/source/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","usage/errors","usage/installation","usage/quickstart","usage/use_cases"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","usage/errors.rst","usage/installation.rst","usage/quickstart.rst","usage/use_cases.rst"],objects:{},objnames:{},objtypes:{},terms:{"case":0,"while":1,For:2,Use:0,audio:1,big:1,big_valu:1,chapter:1,clone:2,com:2,content:0,damag:1,decod:1,distribut:2,download:2,error:0,fabquennevil:2,ffmpeg:0,found:1,frame:1,from:0,git:2,github:0,gnu:2,header:1,http:2,index:0,instal:0,linux:2,mediacur:2,miss:1,modul:0,mpeg:1,now:2,onli:2,packag:2,page:0,pip:2,quickstart:0,referenc:1,requir:2,search:0,sei:1,thi:2,too:1,track:1,txt:2,type:1,work:2},titles:["Welcome to MediaCurator\u2019s documentation!","Errors","Installation","Quickstart","Use cases"],titleterms:{"case":4,For:[],Use:4,distribut:[],document:0,download:[],error:1,ffmpeg:2,from:2,github:2,gnu:[],indic:0,instal:2,linux:[],mediacur:0,now:[],onli:[],packag:[],quickstart:3,requir:[],tabl:0,thi:[],welcom:0,work:[]}}) \ No newline at end of file +Search.setIndex({docnames:["index","usage/errors","usage/installation","usage/manual","usage/quickstart","usage/use_cases","usage/warnings"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","usage/errors.rst","usage/installation.rst","usage/manual.rst","usage/quickstart.rst","usage/use_cases.rst","usage/warnings.rst"],objects:{},objnames:{},objtypes:{},terms:{"1080p":[3,4],"720p":[3,4],"case":0,"default":[3,4],"try":1,"while":1,For:2,The:0,Use:0,acquaint:6,activ:1,after:1,again:1,all:0,also:1,ani:[3,4],audio:1,av1:[0,3,4],avi:[3,4],base:0,batch:0,befor:6,behavior:6,big:1,big_valu:1,bug:0,can:[0,1,6],chapter:1,clean:1,clone:2,code:0,codec:0,com:2,comma:[3,4],command:0,content:0,convert:[0,3,4],curat:[3,4],damag:[1,6],databas:0,decod:1,del:[3,4,6],delet:6,depend:1,detect:1,dir:[3,4],distribut:[1,2],don:1,doubl:[3,4],download:2,dry:6,encod:0,error:0,exampl:[1,3,4],expect:6,experi:1,extent:0,fabquennevil:2,face:1,failur:1,featur:[1,6],feel:1,few:[1,6],fferror:[3,4],ffmpeg:0,file:[3,4],filenam:[3,4],filter:[0,3,4],find:0,flag:6,flv:[3,4],format:[3,4],found:[0,1],frame:1,free:1,from:0,get:6,git:2,github:[0,1],gnu:2,happen:1,header:1,here:[1,6],http:2,index:[],inform:[0,1],instal:0,irrirrepar:6,issu:0,its:1,latest:1,librari:6,like:1,line:0,linux:2,list:[0,3,4],lowr:[3,4],m4v:[3,4],mai:1,manag:0,manual:0,media2:[3,4],media:[0,3,4,6],mediacur:[1,2,6],medlist:[3,4],miss:1,mkv:[3,4],mnt:[3,4],modern:0,modul:[],more:0,most:1,move:1,movi:[3,4],mp4:[3,4],mpeg4:[3,4],mpeg:[1,3,4],mpg:[3,4],multipl:[3,4],necessarli:1,next:1,now:2,occur:1,old:[1,3,4],onli:2,open:1,option:[1,3,4],other:0,out:[3,4],output:1,packag:2,page:[],pip:2,pleas:6,possibl:1,print:[1,3,4],project:1,properli:6,python:0,quickstart:0,quit:1,raw:1,recod:0,recur:1,referenc:1,repair:0,report:1,repositori:1,requir:2,resolut:0,run:[1,6],search:[],segfault:1,sei:1,separ:[3,4],serv:1,some:1,sourc:[0,1],step:1,suggest:1,take:1,thi:2,too:1,tool:0,track:1,txt:[2,3,4],type:1,uhd:[3,4],updat:1,use:[3,4],used:[1,6],using:[1,6],valu:[3,4],verbos:[1,3,4],veri:1,version:1,vid:[3,4],video:[0,1],want:1,warn:0,when:[1,6],wich:1,without:0,wmv3:[3,4],wmv:[3,4],work:2,x264:[3,4],x265:[0,3,4],you:[1,6],your:[1,6]},titles:["Welcome to MediaCurator\u2019s documentation!","Errors","Installation","Manual","Quickstart","Use cases","Warnings"],titleterms:{"case":5,For:[],Use:5,bug:1,distribut:[],document:0,download:[],encod:1,error:1,ffmpeg:[1,2],from:2,github:2,gnu:[],indic:[],instal:2,issu:1,linux:[],manual:3,mediacur:0,now:[],onli:[],other:1,packag:[],quickstart:4,repair:1,requir:[],tabl:[],thi:[],warn:6,welcom:0,work:[]}}) \ No newline at end of file diff --git a/docsource/source/_build/html/usage/errors.html b/docsource/source/_build/html/usage/errors.html index e5993e4..1d230c6 100644 --- a/docsource/source/_build/html/usage/errors.html +++ b/docsource/source/_build/html/usage/errors.html @@ -35,13 +35,35 @@

Errors

-

“Referenced QT chapter track not found”, -“Error, header damaged or not MPEG-4 header”, -“Header missing”, -“SEI type”, -“no frame!”, -“Error while decoding MPEG audio frame.”, -“big_values too big”

+

FFmpeg can detect quite a few errors in the encoding of your source video’s encoding. It can also be used to repair errors.

+
+

Repairable encoding errors

+

Here are some example errors that mediacurator will print and can possibly repair by re-encoding:

+
    +
  • “Referenced QT chapter track not found”

  • +
  • “Error, header damaged or not MPEG-4 header”

  • +
  • “Header missing”

  • +
  • “SEI type”

  • +
  • “no frame!”

  • +
  • “Error while decoding MPEG audio frame.”

  • +
  • “big_values too big”

  • +
  • +
+
+
+

FFmpeg issues

+

While using FFmpeg depending on your version you may also face other errors like segfaults. MediaCurator will also print information when that occurs and move on to the next video after cleaning up after failure.

+

If that happens there are a few steps you can take:

+
    +
  • Update FFmpeg to its latest version as it is a very active project and most distributions serve old versions in their repositories

  • +
  • Run MediaCurator with the verbose print option wich will print the raw FFmpeg output

  • +
  • Try again: In my experience some errors don’t necessarly recur…

  • +
+
+
+

Other bugs

+

If you face other bugs, issues or want to suggest features feel free to open a bug report on GitHub

+
@@ -66,10 +88,17 @@

Navigation

Contents:

diff --git a/docsource/source/_build/html/usage/manual.html b/docsource/source/_build/html/usage/manual.html new file mode 100644 index 0000000..ee4728b --- /dev/null +++ b/docsource/source/_build/html/usage/manual.html @@ -0,0 +1,140 @@ + + + + + + + + Manual — MediaCurator documentation + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Manual

+
./curator.py [list,convert] [-del]
+    [-in:any,avi,mkv,wmv,mpg,mp4,m4v,flv,vid]
+    [-filters:fferror,old,lowres,hd,720p,1080p,uhd,mpeg,mpeg4,x264,wmv3,wmv]
+    [-out:mkv/mp4,x265/av1]
+    [-print:list,formated,verbose]
+    [-dir/-files:"/mnt/media/",,"/mnt/media2/"]
+
+
+

for multiple files or filenames use double comma separated values “,,”

+

default options are:

+
-in:any
+-filters:
+-out:mkv,x265
+-print:list
+
+
+

Examples:

+
./curator.py list -filters:old -print:formated -dir:/mnt/media/ >> ../medlist.txt
+./curator.py convert -del -filters:mpeg4 -out:av1,mp4 -dir:"/mnt/media/Movies/"
+./curator.py convert -del -in:avi,mpg -print:formated,verbose -dir:/mnt/media/
+
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docsource/source/_build/html/usage/quickstart.html b/docsource/source/_build/html/usage/quickstart.html index 294f664..a26bedb 100644 --- a/docsource/source/_build/html/usage/quickstart.html +++ b/docsource/source/_build/html/usage/quickstart.html @@ -16,7 +16,7 @@ - + @@ -36,6 +36,28 @@

Quickstart

+
./curator.py [list,convert] [-del]
+    [-in:any,avi,mkv,wmv,mpg,mp4,m4v,flv,vid]
+    [-filters:fferror,old,lowres,hd,720p,1080p,uhd,mpeg,mpeg4,x264,wmv3,wmv]
+    [-out:mkv/mp4,x265/av1]
+    [-print:list,formated,verbose]
+    [-dir/-files:"/mnt/media/",,"/mnt/media2/"]
+
+
+

for multiple files or filenames use double comma separated values “,,”

+

default options are:

+
-in:any
+-filters:
+-out:mkv,x265
+-print:list
+
+
+

Examples:

+
./curator.py list -filters:old -print:formated -dir:/mnt/media/ >> ../medlist.txt
+./curator.py convert -del -filters:mpeg4 -out:av1,mp4 -dir:"/mnt/media/Movies/"
+./curator.py convert -del -in:avi,mpg -print:formated,verbose -dir:/mnt/media/
+
+
@@ -60,8 +82,10 @@

Navigation

Contents:

@@ -71,7 +95,7 @@
diff --git a/docsource/source/_build/html/usage/warnings.html b/docsource/source/_build/html/usage/warnings.html new file mode 100644 index 0000000..a6f27de --- /dev/null +++ b/docsource/source/_build/html/usage/warnings.html @@ -0,0 +1,120 @@ + + + + + + + + Warnings — MediaCurator documentation + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Warnings

+

Before using the delete feature please run a few dry runs to get acquainted with MediaCurator as you it can irrirreparably damage your media library when not used properly.

+

When using the -del flag here is the expected behavior:

+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docsource/source/usage/warnings.rst b/docsource/source/usage/warnings.rst index e813fa6..c0d51fa 100644 --- a/docsource/source/usage/warnings.rst +++ b/docsource/source/usage/warnings.rst @@ -1,3 +1,35 @@ ======== Warnings -======== \ No newline at end of file +======== + +Before using the delete feature please run a few dry runs to get acquainted with MediaCurator as you it can irrirreparably damage your media library when not used properly. + +When using the -del flag here is the expected behavior: + +To delete all non-hd videos in a folder: + +.. code-block:: bash + + ./curator.py list -del -filters:lowres -dir/-files:"/mnt/media/" + +To delete all videos in a folder with encoding errors: + +.. code-block:: bash + + ./curator.py list -del -filters:fferror -dir/-files:"/mnt/media/" + +To convert (repair) then delete all videos in a folder with encoding errors: + +.. code-block:: bash + + ./curator.py convert -del -filters:fferror -dir/-files:"/mnt/media/" + +To delete all videos in a folder: + +.. code-block:: bash + + ./curator.py list -del -filters:lowres -dir/-files:"/mnt/media/" + +All these commands can have valuable use but are irrecoverable if done unintended. + +Again, please run a few dry runs until you are acquainted with MediaCurator. \ No newline at end of file diff --git a/mediacurator/library/medialibrary.py b/mediacurator/library/medialibrary.py index 20e2a7a..021849f 100644 --- a/mediacurator/library/medialibrary.py +++ b/mediacurator/library/medialibrary.py @@ -117,12 +117,12 @@ class MediaLibrary(): self.videos[filepath].useful = useful # keep video if useful and user wants to also filter by selected resolutions - if self.videos[filepath].useful and len([filtr for filtr in self.filters if filtr in ["lowres", "hd", "720p", "1080p", "uhd"]]) > 0: + if self.videos[filepath].useful and len([filtr for filtr in self.filters if filtr in ["lowres", "subsd", "hd", "sd", "720p", "1080p", "uhd"]]) > 0: useful = False - if "lowres" in self.filters and self.videos[filepath].definition in ["sd"]: + if "subsd" in self.filters and self.videos[filepath].definition in ["subsd"]: useful = True - if "hd" in self.filters and self.videos[filepath].definition in ["720p", "1080p", "uhd"]: + if "sd" in self.filters and self.videos[filepath].definition in ["sd"]: useful = True if "720p" in self.filters and self.videos[filepath].definition in ["720p"]: useful = True @@ -130,6 +130,10 @@ class MediaLibrary(): useful = True if "uhd" in self.filters and self.videos[filepath].definition in ["uhd"]: useful = True + if "lowres" in self.filters and self.videos[filepath].definition in ["subsd", "sd"]: + useful = True + if "hd" in self.filters and self.videos[filepath].definition in ["720p", "1080p", "uhd"]: + useful = True self.videos[filepath].useful = useful # keep video if useful and user wants to also filter when there is an ffmpeg errors diff --git a/mediacurator/library/video.py b/mediacurator/library/video.py index f17bb78..66453dd 100644 --- a/mediacurator/library/video.py +++ b/mediacurator/library/video.py @@ -231,7 +231,9 @@ class Video(): return "1080p" elif width >= 1280 or height >= 720: return "720p" - return "sd" + elif height >= 480: + return "sd" + return "subsd" @staticmethod def detect_filesize(filepath):