|
General Discussion General discussion about SageTV and related companies, products, and technologies. |
View Poll Results: How do you archive? | |||
I delete stuff to make space, or buy more hard disks. | 33 | 80.49% | |
I use mediashrink. | 3 | 7.32% | |
I use handbrake. | 5 | 12.20% | |
I use videoredo. | 3 | 7.32% | |
Other -- please elaborate. | 3 | 7.32% | |
Multiple Choice Poll. Voters: 41. You may not vote on this poll |
|
Thread Tools | Search this Thread | Display Modes |
#21
|
|||
|
|||
I can tell that most of you folks don't have kids as they don't care as much about the quality nor logos. But archiving kids' shows is one of the best functions of SageTV as well as the ability to move to different devices like laptops, iPad, etc.
__________________
New Server - Sage9 on unRAID 2xHD-PVR, HDHR for OTA Old Server - Sage7 on Win7Pro-i660CPU with 4.6TB, HD-PVR, HDHR OTA, HVR-1850 OTA Clients - 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server |
#22
|
|||
|
|||
For kids stuff, I just don't care about quality... my daughter is 6 and she can tell the difference if I ask her, but it's not important. And, most of the stuff we record for her comes off of the OTA sub-channels that are only broadcasting at 480P anyway.
|
#23
|
|||
|
|||
Is this script something that you can share? I've been thinking about installing sqj to do exactly this.
|
#24
|
|||
|
|||
I really wish someone would create a area just for SJQ code. Easy to find that way. I've looked at the code a few have shared, and it looks Greek to me! (Greek, not geek!)
__________________
Server #1= AMD A10-5800, 8G RAM, F2A85-M PRO, 12TB, HDHomerun Prime, HDHR, Colossus (Playback - HD-200) Server #2= AMD X2 3800+, 2G RAM, M2NPV-VM, 2TB, 3x HDHR OTA (Playback - HD-200) |
#25
|
|||
|
|||
Yes - I will post it over the next day or two. I may have already posted it in the SJQ thread but I will repost it here.
__________________
New Server - Sage9 on unRAID 2xHD-PVR, HDHR for OTA Old Server - Sage7 on Win7Pro-i660CPU with 4.6TB, HD-PVR, HDHR OTA, HVR-1850 OTA Clients - 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server |
#26
|
|||
|
|||
I agree, there should be a separate sub-form under plugins for SJQ.
__________________
New Server - Sage9 on unRAID 2xHD-PVR, HDHR for OTA Old Server - Sage7 on Win7Pro-i660CPU with 4.6TB, HD-PVR, HDHR OTA, HVR-1850 OTA Clients - 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server |
#27
|
|||
|
|||
Quote:
This groovy code does a few things. First it checks to see if it is a multi-segment file. If it is then it gives up since that causes too many programming issues and I am not a strong programmer. Then it renames to include the Series and Episode info (in case it doesn't have it) and moves it to a folder based on the filename - so the destination file after everything is done will look like this "\\carnoustie\Videos\Isabella's Shows\Dora the Explorer\Dora the Explorer-S05E01-Dora's Jack-in-the-Box-9350217-0.mp4". It then runs comskip and finally handrake. Note that it may take a while for your new files to show up in Sage since I don't trigger a media scan. If you want to you can do that manually. To change the Handbrake parameters change the line HBParams=... Also make sure that your paths to Handbrake and Comskip are specified correctly, especially is you are using the 64 bit version of windows. Also make sure that you have valid paths for your destination folder and your log file folder and that you but rename1.groovy in the correct folder and/or change the code that calls this script. This code is a little more complex since it handles the verbose output of comskip and Handbrake. If you don't do that the routine craps out as there is too much textual output from groovy to handle. The log file will show you how long it took to run all of these routines such as Comskip and Handbrake. Note that I have this process run automatically whenever a Kids' show has been recorded as a Favorite. Thanks to Slugger since a lot of this code was stolen form him or he wrote it for me after I begged him for help. Code:
import org.apache.commons.io.FileUtils import static groovy.io.FileType.* ComskipPath="C:\\comskip\\comskip.exe" //Put your comskip path here CSParams=" --verbose=0 " //Change to 1 or higher if you want output from comskip HBCLIPath='"C:\\Program Files\\Handbrake\\HandBrakeCLI.exe"' HBParams=" -f mp4 -4 --deinterlace=fast -w 720 --loose-anamorphic -e x264 -q 20 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0 --gain=0 --audio-copy-mask none --audio-fallback ffac3 " def LogFile= new File("c:\\temp\\ProcKidsShows.log") LogFile.append("===========================================================\r\n") LogFile.append("${new Date()}\r\n") NumSegs=MediaFileAPI.GetNumberOfSegments(mf) RetName ="New file name to be returned" DestFolder="\\\\carnoustie\\videos\\Kids' Shows\\" ShowName= ShowAPI.GetShowTitle(mf) run (new File("c:\\GroovyFiles\\Temp\\rename1.groovy")) //this routine finds the new filename SourceFile= MediaFileAPI.GetFileForSegment(mf, 0) SourceFileName=SourceFile.toString() LogFile.append("Log File for MediaFile $SourceFileName\r\n") if (NumSegs > 1) { LogFile.append("File has more than one segment so I am aborting the process!!!\r\n") return 2 } DestFileName=DestFolder+ShowName+"\\"+RetName DestFile = new File(DestFileName) LogFile.append("Moving $SourceFileName to $DestFileName\r\n") FileUtils.moveFile( SourceFile, DestFile) // This next section calls Comskip InputCSFile=DestFileName CSProc=ComskipPath+CSParams+'"'+InputCSFile+'"' println (CSProc) def initialSize = 8192 def outStream = new ByteArrayOutputStream(initialSize) def errStream = new ByteArrayOutputStream(initialSize) def command=CSProc LogFile.append("${new Date()} Running Comskip with command $CSProc\r\n") def proc=command.execute() proc.consumeProcessOutput(outStream, errStream) proc.waitFor() LogFile.append("${new Date()} Comskip is done\r\n") //This next section calls Handbrake FilePrefix = DestFileName.substring(0, DestFileName.lastIndexOf('.')) FileType= DestFileName.substring(DestFileName.lastIndexOf('.')+1, DestFileName.size()) InputVidFile=DestFileName OutputVidFile=FilePrefix+".mp4" HBProc=HBCLIPath+" -i "+'"'+InputVidFile+'"'+" -o "+'"'+OutputVidFile+'"'+HBParams outStream = new ByteArrayOutputStream(initialSize) errStream = new ByteArrayOutputStream(initialSize) LogFile.append("${new Date()} Running Handbrake with command $HBProc\r\n") def HBcommand=HBProc def HBproc=HBcommand.execute() HBproc.consumeProcessOutput(outStream, errStream) HBproc.waitFor() LogFile.append("${new Date()} Handbrake is finished\r\n") DestDeleted=DestFile.delete() LogFile.append("${new Date()} File $DestFileName is deleted? $DestDeleted\r\n") LogFile.append("${new Date()} Process is now complete\r\n") Code:
import org.apache.commons.io.FilenameUtils //This is originally from this post http://forums.sagetv.com/forums/showthread.php?p=523594&postcount=1072 //Object mf = MediaFileAPI.GetMediaFileForID(Integer.parseInt(SJQ4_METADATA.get("SJQ4_ID"))) //Object mf = MediaFileAPI.GetMediaFileForID(6037703) //\\carnoustie\media2\tv\FiremanSam-CatMagic-6987515-0.mpg //Object mf = MediaFileAPI.GetMediaFileForID(FileID) //\\carnoustie\media2\tv\FiremanSam-CatMagic-6987515-0.mpg static class Data { static final List ILLEGAL_CHARS = [34, 60, 62, 124, 47, 58, 42, 63, 92] } def sanitize(def input) { def output = input for(def i = 0; i < input.length(); ++i) { def val = (input[i] as char) as int if(val < 32 || val > 126 || Data.ILLEGAL_CHARS.contains(val)) output = output.replace(input[i], '_') } return output } def output = new StringBuilder() def MFType=MediaFileAPI.GetMediaFileMetadata(mf,"MediaType") def season = ShowAPI.GetShowSeasonNumber(mf) def episode = ShowAPI.GetShowEpisodeNumber(mf) def details if(season > 0 && episode > 0) details = String.format('%s-S%02dE%02d%s', ShowAPI.GetShowTitle(mf), season, episode, ShowAPI.GetShowEpisode(mf) ? "-${ShowAPI.GetShowEpisode(mf)}" : '') else if(ShowAPI.GetOriginalAiringDate(mf) > 0) details = String.format('%s %s %s', ShowAPI.GetShowTitle(mf), "- "+new Date(ShowAPI.GetOriginalAiringDate(mf)).format('yyyy-MM-dd'), ShowAPI.GetShowEpisode(mf) ? "- ${ShowAPI.GetShowEpisode(mf)}" : '') else if(ShowAPI.GetShowCategory(mf) == 'Movie') details = String.format('%s (%s)', ShowAPI.GetShowTitle(mf), ShowAPI.GetShowYear(mf)) else if(ShowAPI.GetShowCategory(mf) == 'Sports event' && ShowAPI.IsShowFirstRun(mf)) details = String.format('%s-%s-%s', ShowAPI.GetShowTitle(mf), ShowAPI.GetShowEpisode(mf), new Date(AiringAPI.GetAiringStartTime(mf)).format('yyyy.MM.dd')) else details = null if(details) { (0 .. MediaFileAPI.GetNumberOfSegments(mf) - 1).each { i -> def segFile = MediaFileAPI.GetFileForSegment(mf, i) def newName = sanitize(String.format('%s-%d-%d.%s', details, AiringAPI.GetAiringID(mf), i, FilenameUtils.getExtension(segFile.getName()))) output << "$segFile >> $newName\r\n" RetName=newName } } else output << "Skipped '${ShowAPI.GetShowTitle(mf)}'; not enough metadata to build new file name!\r\n" println output return 0
__________________
New Server - Sage9 on unRAID 2xHD-PVR, HDHR for OTA Old Server - Sage7 on Win7Pro-i660CPU with 4.6TB, HD-PVR, HDHR OTA, HVR-1850 OTA Clients - 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server |
#28
|
||||
|
||||
You could put a Media Scan command in your SJQ script.
To trigger a Media Scan (and continue processing without waiting). If one is already scheduled, it will not stack up. Code:
ServerClient sc = new ServerClient(); sc.scheduleMediaScan(); sc.close(); Code:
println("Core media scan triggered..."); Global.RunLibraryImportScan(true) println("Core media scan finished..."); |
#29
|
|||
|
|||
OK thanks, I was worried about stacking up multiple scans as I sometimes manually run this process after converting several files. Sage scans every few hours anyway so I wasn't too concerned about running a scan.
__________________
New Server - Sage9 on unRAID 2xHD-PVR, HDHR for OTA Old Server - Sage7 on Win7Pro-i660CPU with 4.6TB, HD-PVR, HDHR OTA, HVR-1850 OTA Clients - 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server |
#30
|
||||
|
||||
I use the Media Scan wait until finish in my move script. Before moving I check the various flags (watched, archived, etc) and save the values, then after the move, I get the new AiringID for the file then set the flags as they were.
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Auto Archive | Wakecrash | SageTV Beta Test Software | 0 | 07-17-2010 01:58 PM |
Moving from Archive, but still in archive | HeyGuy101 | SageTV Software | 2 | 09-09-2007 11:30 AM |
How to archive files on DVD? | KarylFStein | General Discussion | 5 | 07-21-2006 07:41 AM |
What are ppl using to archive shows!? | jimbobuk | SageTV Software | 0 | 05-17-2003 12:37 PM |