PageRenderTime 69ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Common/Settings/Preferences.vb

#
Visual Basic | 2712 lines | 2619 code | 66 blank | 27 comment | 0 complexity | 003d5408bb2373a1000ff0c9c0cc15f8 MD5 | raw file
Possible License(s): GPL-2.0
  1. Imports System.IO
  2. Imports System.Xml
  3. Imports System.Threading
  4. Imports System.ComponentModel
  5. 'Imports MediaInfoNET
  6. Imports System.Data.SQLite
  7. Imports System.Data
  8. Imports XBMC.JsonRpc
  9. Module Ext
  10. <System.Runtime.CompilerServices.Extension()> _
  11. Public Sub AppendChild(root As XmlElement, doc As XmlDocument, name As String, value As String)
  12. Dim child As XmlElement = doc.CreateElement(name)
  13. child.InnerText = value
  14. root.AppendChild(child)
  15. End Sub
  16. <System.Runtime.CompilerServices.Extension()> _
  17. Public Sub AppendChildList(root As XmlElement, doc As XmlDocument, name As String, value() As String, Optional separator As String="|")
  18. Dim child As XmlElement = doc.CreateElement(name)
  19. child.InnerText = If(value.Count>0, String.Join(separator,value), "")
  20. root.AppendChild(child)
  21. End Sub
  22. End Module
  23. Public Class Pref
  24. 'Shared Event PropertyChanged_MkvMergeGuiPath
  25. Public Const SetDefaults = True
  26. Public Const datePattern As String = "yyyyMMddHHmmss"
  27. Public Const nfoDatePattern As String = "yyyy-MM-dd"
  28. Public Const tv_EpRegexDate As String = "([0-9]{4})[.\-_]([0-9]{2})[.\-_]([0-9]{2})"
  29. 'Not saved items
  30. Public Shared fixnfoid As Boolean
  31. Public Shared tv_RegexScraper As New List(Of String)
  32. Public Shared tv_RegexRename As New List(Of String)
  33. Public Shared profiles As New List(Of ListOfProfiles)
  34. Public Shared workingProfile As New ListOfProfiles
  35. Public Shared commandlist As New List(Of str_ListOfCommands)
  36. Public Shared configpath As String
  37. Public Shared DoneAMov As Boolean = False
  38. Public Shared MusicVidScrape As Boolean = False
  39. Public Shared MusicVidConcertScrape As Boolean = False
  40. Public Shared DlMissingEpData As Boolean = False
  41. Public Shared googlecount As Integer = 0
  42. Public Shared engineno As Integer = 0
  43. Public Shared enginefront As New List(Of String)
  44. Public Shared engineend As New List(Of String)
  45. Public Shared proxysettings As New List(Of String)
  46. Public Shared applicationDatapath As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Media Companion\"
  47. 'Public Shared XbmcTmdbHDTrailer As String = "No"
  48. Public Shared MovieChangeKeepExistingArt As Boolean = True
  49. Public Shared MovieChangeMovie As Boolean = False
  50. Public Shared MovieDeleteNfoArtwork As Boolean = False
  51. Public Shared TvChgShowDlPoster As Boolean = False
  52. Public Shared TvChgShowDlFanart As Boolean = False
  53. Public Shared TvChgShowDlSeasonthumbs As Boolean = False
  54. Public Shared TvChgShowDlFanartTvArt As Boolean = False
  55. Public Shared TvChgShowOverwriteImgs As Boolean = False
  56. Public Shared ReadOnly Property EdenEnabled As Boolean
  57. Get
  58. Return Pref.XBMC_version<>2 '0=Eden only, 1=Both, 2=Frodo only
  59. End Get
  60. End Property
  61. Public Shared ReadOnly Property FrodoEnabled As Boolean
  62. Get
  63. Return Pref.XBMC_version<>0 '0=Eden only, 1=Both, 2=Frodo only
  64. End Get
  65. End Property
  66. Public Shared Property applicationPath As String
  67. Get
  68. Return Utilities.applicationPath
  69. End Get
  70. Set(ByVal value As String)
  71. Utilities.applicationPath = value
  72. End Set
  73. End Property
  74. Public Shared Property tvScraperLog As String
  75. Get
  76. Return Utilities.tvScraperLog
  77. End Get
  78. Set(ByVal value As String)
  79. Utilities.tvScraperLog = value
  80. End Set
  81. End Property
  82. 'Saved Folder Prefs
  83. Public Shared tvFolders As New List(Of String)
  84. Public Shared tvRootFolders As New List(Of str_RootPaths)
  85. Public Shared movieFolders As New List(Of str_RootPaths)
  86. Public Shared custtvFolders As New List(Of String)
  87. Public Shared offlinefolders As New List(Of String)
  88. Public Shared stubfolder As String
  89. Public Shared stubmessage As String = "Insert Media to Continue"
  90. Public Shared homemoviefolders As New List(Of str_RootPaths)
  91. Public Shared ExcludeFolders As New Excludes("Folders")
  92. Public Shared MVidFolders As New List(Of str_RootPaths)
  93. Public Shared MVConcertFolders As New List(Of str_RootPaths)
  94. 'Saved Form Prefs
  95. Public Shared backgroundcolour As String
  96. Public Shared forgroundcolour As String
  97. Public Shared remembersize As Boolean
  98. Public Shared locx As Integer
  99. Public Shared locy As Integer
  100. Public Shared formheight As Integer
  101. Public Shared formwidth As Integer
  102. Public Shared splt1 As Integer
  103. Public Shared splt2 As Integer
  104. Public Shared splt3 As Integer
  105. Public Shared splt4 As Integer
  106. Public Shared splt5 As Integer
  107. Public Shared splt6 As Integer 'Tv Banner Split distance - To be superceeded by tvbannersplit
  108. Public Shared tvbannersplit As Double ' Banner as Percentage
  109. Public Shared maximised As Boolean
  110. Public Shared startuptab As Byte
  111. Public Shared logview As Integer
  112. Public Shared LogScrapeTimes As Boolean = False
  113. Public Shared ScrapeTimingsLogThreshold As Integer = 100
  114. Public Shared lastpath As String
  115. Public Shared maximumthumbs As Integer
  116. Public Shared preferredscreen As Integer
  117. 'Saved General Prefs
  118. Public Shared startupCache As Boolean
  119. Public Shared renamenfofiles As Boolean
  120. Public Shared actorseasy As Boolean
  121. Public Shared overwritethumbs As Boolean
  122. Public Shared LocalActorImage As Boolean = True
  123. Public Shared videomode As Integer
  124. Public Shared selectedvideoplayer As String
  125. Public Shared externalbrowser As Boolean
  126. Public Shared selectedBrowser As String
  127. Public Shared altnfoeditor As String
  128. Public Shared ignorearticle As Boolean
  129. Public Shared ignoreAarticle As Boolean
  130. Public Shared ignoreAn As Boolean
  131. Public Shared sorttitleignorearticle As Boolean
  132. Public Shared MovSetTitleIgnArticle As Boolean
  133. Public Shared MovPosterTabTMDBSelect As Boolean = False
  134. Public Shared intruntime As Boolean
  135. Public Shared XBMC_version As Byte
  136. Public Shared ShowMovieGridToolTip As Boolean = False
  137. Public Shared ShowLogOnError As Boolean = True
  138. Public Shared AutoHideStatusBar As Boolean
  139. Public Shared DisplayRatingOverlay As Boolean
  140. Public Shared DisplayMediainfoOverlay As Boolean
  141. Public Shared DisplayMediaInfoFolderSize As Boolean
  142. Public Shared EnableFolderSize As Boolean
  143. Public Shared font As String
  144. Public Shared MultiMonitoEnabled As Boolean
  145. Public Shared ShowAllAudioTracks As Boolean
  146. Public Shared DisplayDefaultSubtitleLang As Boolean
  147. Public Shared DisplayAllSubtitleLang As Boolean
  148. 'Private Shared _MkvMergeGuiPath As String
  149. Public Shared MkvMergeGuiPath As String
  150. 'Shared Property MkvMergeGuiPath As String
  151. ' Get
  152. ' Return _MkvMergeGuiPath
  153. ' End Get
  154. ' Set (ByVal value As String)
  155. ' If IO.File.Exists(value) Then
  156. ' _MkvMergeGuiPath = value
  157. ' RaiseEvent PropertyChanged_MkvMergeGuiPath
  158. ' End If
  159. ' End Set
  160. 'End Property
  161. 'Saved General Proxy Prefs
  162. Public Shared prxyEnabled As String
  163. Public Shared prxyIp As String
  164. Public Shared prxyPort As String
  165. Public Shared prxyUsername As String
  166. Public Shared prxyPassword As String
  167. 'Saved Movie Prefs
  168. Public Shared DownloadTrailerDuringScrape As Boolean
  169. Public Shared NoAltTitle As Boolean
  170. Public Shared XtraFrodoUrls As Boolean
  171. Public Shared gettrailer As Boolean
  172. Public Shared ignoretrailers As Boolean
  173. Public Shared moviePreferredTrailerResolution As String
  174. Public Shared moviescraper As Integer
  175. Public Shared nfoposterscraper As Integer
  176. Public Shared ignoreactorthumbs As Boolean
  177. Public Shared maxactors As Integer
  178. Public Shared MovTagBlacklist As String
  179. Public Shared maxmoviegenre As Integer
  180. Public Shared enablehdtags As Boolean
  181. Public Shared MovDurationAsRuntine As Boolean
  182. Public Shared MovRuntimeAsDuration As Boolean
  183. Public Shared movieRuntimeDisplay As String
  184. Public Shared movieRuntimeFallbackToFile As Boolean = False
  185. Public Shared disablelogfiles As Boolean
  186. Public Shared incmissingmovies As Boolean
  187. Public Shared fanartnotstacked As Boolean
  188. Public Shared posternotstacked As Boolean
  189. Public Shared scrapemovieposters As Boolean
  190. Public Shared movrootfoldercheck As Boolean
  191. Public Shared posterjpg As Boolean
  192. Public Shared usefanart As Boolean
  193. Public Shared dontdisplayposter As Boolean
  194. Public Shared usefoldernames As Boolean
  195. Public Shared movxtrathumb As Boolean
  196. Public Shared movxtrafanart As Boolean
  197. Public Shared movxtrafanartqty As Integer
  198. Public Shared dlxtrafanart As Boolean
  199. Public Shared dlMovSetArtwork As Boolean
  200. Public Shared MovCustFolderjpgNoDelete As Boolean
  201. Public Shared MovCustPosterjpgNoDelete As Boolean
  202. Public Shared MovSetArtSetFolder As Boolean
  203. Public Shared MovSetArtCentralFolder As String
  204. Public Shared allfolders As Boolean
  205. Public Shared actorsave As Boolean
  206. Public Shared actorsavepath As String
  207. Public Shared actorsavealpha As Boolean
  208. Public Shared actornetworkpath As String
  209. Public Shared imdbmirror As String
  210. Public Shared createfolderjpg As Boolean
  211. Public Shared createfanartjpg As Boolean 'Use to create fanart.jpg if in a folder
  212. Public Shared basicsavemode As Boolean
  213. Public Shared namemode As String
  214. Public Shared usetransparency As Boolean
  215. Public Shared transparencyvalue As Integer
  216. Public Shared savefanart As Boolean
  217. Public Shared MovFanartTvscrape As Boolean 'cbMovFanartTvScrape
  218. Public Shared MovFanartNaming As Boolean 'cbMovFanartNaming
  219. Public Shared MovFanartTvDlClearArt As Boolean
  220. Public Shared MovFanartTvDlClearLogo As Boolean
  221. Public Shared MovFanartTvDlPoster As Boolean
  222. Public Shared MovFanartTvDlFanart As Boolean
  223. Public Shared MovFanartTvDlDisc As Boolean
  224. Public Shared MovFanartTvDlBanner As Boolean
  225. Public Shared MovFanartTvDlLandscape As Boolean
  226. Public Shared fanartjpg As Boolean 'Used to create fanart.jpg instead of movie-fanart.jpg
  227. Public Shared roundminutes As Boolean
  228. Public Shared moviedefaultlist As Byte
  229. Public Shared movies_useXBMC_Scraper As Boolean
  230. Public Shared TmdbActorsImdbScrape As Boolean
  231. Public Shared ImdbPrimaryPlot As Boolean
  232. Public Shared MovImdbFirstRunTime As Boolean
  233. Public Shared MovImdbAspectRatio As Boolean
  234. Public Shared XBMC_Scraper As String = "tmdb" 'Locked TMDb as XBMC Scraper.
  235. Public Shared XbmcTmdbRenameMovie As Boolean
  236. Public Shared XbmcTmdbMissingFromImdb As Boolean
  237. Public Shared XbmcTmdbTop250FromImdb As Boolean
  238. Public Shared XbmcTmdbVotesFromImdb As Boolean
  239. Public Shared XbmcTmdbCertFromImdb As Boolean
  240. Public Shared XbmcTmdbStarsFromImdb As Boolean
  241. Public Shared XbmcTmdbAkasFromImdb As Boolean
  242. Public Shared XbmcTmdbAspectFromImdb As Boolean
  243. Public Shared XbmcTmdbMetascoreFromImdb As Boolean
  244. Public Shared XbmcTmdbActorDL As Boolean
  245. Public Shared XbmcTmdbActorFromImdb As Boolean
  246. Public Shared XbmcTmdbGenreFromImdb As Boolean
  247. Public Shared scrapefullcert As Boolean
  248. Public Shared MovCertRemovePhrase As Boolean
  249. Public Shared OfflineDVDTitle As String
  250. Public Shared MovieManualRename As Boolean
  251. Public Shared MovieRenameEnable As Boolean
  252. Public Shared MovieRenameTemplate As String
  253. Public Shared MovFolderRename As Boolean
  254. Public Shared MovFolderRenameTemplate As String
  255. Public Shared MovNewFolderInRootFolder As String
  256. Public Shared MovRenameSpaceCharacter As Boolean
  257. Public Shared MovSetIgnArticle As Boolean
  258. Public Shared MovSortIgnArticle As Boolean
  259. Public Shared MovTitleIgnArticle As Boolean
  260. Public Shared MovTitleCase As Boolean
  261. Public Shared ExcludeMpaaRated As Boolean
  262. Public Shared IncludeMpaaRated As Boolean
  263. Public Shared MovThousSeparator As Boolean
  264. Public Shared MovieImdbGenreRegEx As String
  265. Public Shared showsortdate As Boolean
  266. Public Shared TMDbSelectedLanguageName As String = "English - US"
  267. Public Shared TMDbUseCustomLanguage As Boolean = False
  268. Public Shared TMDbCustomLanguageValue As String = ""
  269. Public Shared GetMovieSetFromTMDb As Boolean = True
  270. Public Shared ActorResolutionSI As Integer = 2 ' Height 768 SI = Selected Index
  271. Public Shared PosterResolutionSI As Integer = 9 ' Height 1080
  272. Public Shared BackDropResolutionSI As Integer = 15 ' Full HD 1920x1080
  273. Public Shared ActorsFilterMinFilms As Integer = 1
  274. Public Shared MaxActorsInFilter As Integer = 500
  275. Public Shared MovieFilters_Actors_Order As Integer = 0 ' 0=Number of films desc 1=A-Z
  276. Public Shared DirectorsFilterMinFilms As Integer = 1
  277. Public Shared MaxDirectorsInFilter As Integer = 500
  278. Public Shared MovieFilters_Directors_Order As Integer = 0 ' 0=Number of films desc 1=A-Z
  279. Public Shared SetsFilterMinFilms As Integer = 1
  280. Public Shared MaxSetsInFilter As Integer = 500
  281. Public Shared MovieFilters_Sets_Order As Integer = 0 ' 0=Number of films desc 1=A-Z
  282. Public Shared MinTagsInFilter As Integer = 1
  283. Public Shared MaxTagsInFilter As Integer = 500
  284. Public Shared MovFiltersTagsOrder As Integer = 0 ' 0=Number of films desc 1=A-Z
  285. Public Shared DateFormat As String = "YYYY-MM-DD" 'Valid tokens: YYYY MM DD HH MIN SS Used in Movie list
  286. Public Shared DateFormat2 As String = "yyyy-MM-dd HH:mm:ss" 'Valid tokens: YYYY MM DD HH MIN SS Used in Movie list
  287. Public Shared MovieList_ShowColPlot As Boolean = False
  288. Public Shared DisableNotMatchingRenamePattern As Boolean = True
  289. Public Shared MovieList_ShowColWatched As Boolean = False
  290. Public Shared MovieScraper_MaxStudios As Integer = 3 ' 9 = Max
  291. Public Shared moviesortorder As Integer
  292. Public Shared movieinvertorder As Boolean
  293. Public Shared moviesets As New List(Of String)
  294. Public Shared movietags As New List(Of String)
  295. Public Shared moviethumbpriority As New List(Of String)
  296. Public Shared certificatepriority() As String
  297. Public Shared releaseformat() As String
  298. Public Shared tableview As New List(Of String)
  299. Public Shared tablesortorder As String
  300. Public Shared MovSepLst As New List(Of String)
  301. Public Shared ThreeDKeyWords As New List(Of String)
  302. Public Shared MovFiltLastSize As Integer
  303. Public Shared RenameSpaceCharacter As String
  304. Public Shared Original_Title As Boolean=False
  305. Public Shared UseMultipleThreads As Boolean=False
  306. Public Shared XbmcTmdbScraperFanart As String = Nothing
  307. Public Shared XbmcTmdbScraperTrailerQ As String = Nothing
  308. Public Shared XbmcTmdbScraperTrailerQLB As New List(Of String)
  309. Public Shared XbmcTmdbScraperLanguage As String = Nothing
  310. Public Shared XbmcTmdbScraperLanguageLB As New List(Of String)
  311. Public Shared XbmcTmdbScraperRatings As String = Nothing
  312. Public Shared XbmcTmdbScraperCertCountry As String = Nothing
  313. Public Shared XbmcTmdbScraperCertCountryLB As New List(Of String)
  314. Public Shared movie_filters As MovieFilters = New MovieFilters
  315. Public Shared CheckForNewVersion As Boolean=False
  316. Public Shared CloseMCForDLNewVersion As Boolean = True
  317. Public Shared AllowUserTags As Boolean
  318. Public Shared keywordasTag As Boolean
  319. Public Shared keywordlimit As Integer
  320. Public Shared TagRes As Boolean
  321. Public Shared GenreCustomBefore As Boolean
  322. Public Shared CustomTmdbApiKey As String = ""
  323. Public Shared MovNfoWatchTag As Boolean
  324. Public Shared Property movieignorepart As Boolean
  325. Get
  326. Return Utilities.ignoreParts
  327. End Get
  328. Set(value As Boolean)
  329. Utilities.ignoreParts = value
  330. End Set
  331. End Property
  332. Public Shared Property moviecleanTags As String
  333. Get
  334. Return Utilities.userCleanTags
  335. End Get
  336. Set(value As String)
  337. Utilities.userCleanTags = value
  338. End Set
  339. End Property
  340. Public Shared Property rarsize As Integer
  341. Get
  342. Return Utilities.RARsize
  343. End Get
  344. Set(value As Integer)
  345. Utilities.RARsize = value
  346. End Set
  347. End Property
  348. Public Shared ReadOnly Property MovFanartTvDlAll As Boolean
  349. Get
  350. Return MovFanartTvDlBanner AndAlso MovFanartTvDlClearArt AndAlso MovFanartTvDlClearLogo AndAlso MovFanartTvDlDisc AndAlso MovFanartTvDlFanart AndAlso MovFanartTvDlLandscape AndAlso MovFanartTvDlPoster
  351. End Get
  352. End Property
  353. 'Saved TV Prefs
  354. Public Shared tvshowautoquick As Boolean
  355. Public Shared copytvactorthumbs As Boolean = False
  356. Public Shared tvdbIMDbRating As Boolean = False
  357. Public Shared displayMissingEpisodes As Boolean = False
  358. Public Shared ignoreMissingSpecials As Boolean = False
  359. Public Shared TvMissingEpOffset As Boolean = False
  360. Public Shared sortorder As String
  361. Public Shared tvdlposter As Boolean
  362. Public Shared tvdlfanart As Boolean
  363. Public Shared tvdlseasonthumbs As Boolean
  364. Public Shared TvDlFanartTvArt As Boolean
  365. Public Shared TvFanartTvFirst As Boolean
  366. Public Shared dlTVxtrafanart As Boolean
  367. Public Shared TvXtraFanartQty As Integer
  368. Public Shared tvfolderjpg As Boolean
  369. Public Shared seasonfolderjpg As Boolean
  370. Public Shared enabletvhdtags As Boolean
  371. Public Shared disabletvlogs As Boolean
  372. Public Shared postertype As String
  373. Public Shared TvdbActorScrape As Integer
  374. Public Shared seasonall As String
  375. Public Shared tvrename As Integer
  376. Public Shared ScrShtDelay As Integer
  377. Public Shared tvshowrefreshlog As Boolean
  378. Public Shared autoepisodescreenshot As Boolean
  379. Public Shared tvscrnshtTVDBResize As Boolean
  380. Public Shared tvshow_useXBMC_Scraper As Boolean
  381. Public Shared autorenameepisodes As Boolean
  382. Public Shared eprenamelowercase As Boolean
  383. Public Shared TvRenameReplaceSpace As Boolean
  384. Public Shared TvRenameReplaceSpaceDot As Boolean
  385. Public Shared TvdbLanguage As String = "English"
  386. Public Shared TvdbLanguageCode As String = "en"
  387. Public Shared lastrefreshmissingdate As String
  388. Public Shared excludefromshowfoldername As String
  389. Public Shared TvMaxGenres As Integer
  390. 'XBMC TVDB Scraper Options
  391. Public Shared XBMCTVDbDvdOrder As Boolean
  392. Public Shared XBMCTVDbAbsoluteNumber As Boolean
  393. Public Shared XBMCTVDbFanart As Boolean
  394. Public Shared XBMCTVDbPoster As Boolean
  395. Public Shared XBMCTVDbLanguage As String
  396. Public Shared XBMCTVDbLanguageLB As New List(Of String)
  397. Public Shared XBMCTVDbRatings As String = "IMDb" 'Assign a default to prevent frmPreferences crashing here: cbXBMCTvdbRatingImdb .Checked = If(Pref.XBMCTVDbRatings.ToLower = "imdb", True, False)
  398. Public Shared XBMCTVDbfallback As Boolean
  399. 'Saved Home Movie Prefs
  400. Public Shared HmFanartScrnShot As Boolean
  401. Public Shared HmFanartTime As Integer
  402. Public Shared HmPosterTime As Integer
  403. 'Saved Music Video Prefs
  404. Public Shared MVScraper As String
  405. Public Shared MVsortorder As Integer
  406. Public Shared MVdefaultlist As Integer
  407. Public Shared MVPrefScrnSht As Integer
  408. Public Shared MVPrefShowLog As Boolean
  409. '(Unsure)
  410. Public Shared maximagecount As Integer
  411. Public Shared episodeacrorsource As String
  412. Public Shared alwaysuseimdbid As Boolean
  413. 'XBMC Sync
  414. Public Shared XBMC_Active As Boolean = False
  415. Public Shared XBMC_Link As Boolean = False
  416. Public Shared XBMC_Address As String = "127.0.0.1"
  417. Public Shared XBMC_Port As String = "8080"
  418. Public Shared XBMC_Username As String = ""
  419. Public Shared XBMC_Password As String = ""
  420. Public Shared XBMC_UserdataFolder As String = ""
  421. Public Shared XBMC_TexturesDb As String = "Database\Textures13.db"
  422. Public Shared XBMC_ThumbnailsFolder As String = "Thumbnails"
  423. Public Shared XBMC_MC_MovieFolderMappings As New XBMC_MC_FolderMappings("Movie")
  424. Public Shared XBMC_MC_CompareFields As New XBMC_MC_CompareFields ("Movie")
  425. Public Shared XBMC_Link_Use_Forward_Slash As Boolean = False 'This property does not get persisted, it's assigned in XbmcController at runtime
  426. Public Shared XBMC_Delete_Cached_Images As Boolean = True
  427. Public Shared ShowExtraMovieFilters As Boolean = False
  428. Public Shared ExportXBMCPath As String = ""
  429. ReadOnly Shared Property AppPath As String
  430. Get
  431. Return My.Application.Info.DirectoryPath
  432. End Get
  433. End Property
  434. ReadOnly Shared Property XBMC_TestsPassed As Boolean
  435. Get
  436. 'Non-db tests...
  437. Dim result As Boolean = XBMC_Active AndAlso XBMC_MC_MovieFolderMappings.Initialised AndAlso FrodoEnabled AndAlso XBMC_CanPing AndAlso XBMC_CanConnect
  438. If Not result Then Return False
  439. 'Db tests...
  440. If XBMC_Delete_Cached_Images Then
  441. result = XBMC_UserdataFolder_Valid AndAlso XBMC_TexturesDbFile_Valid AndAlso XBMC_TexturesDb_Conn_Valid AndAlso
  442. XBMC_TexturesDb_Version_Valid AndAlso XBMC_ThumbnailsFolder_Valid
  443. End If
  444. Return result
  445. End Get
  446. End Property
  447. ReadOnly Shared Property XBMC_CanConnect As Boolean
  448. Get
  449. Dim xbmc As XbmcJsonRpcConnection
  450. Try
  451. xbmc = new XbmcJsonRpcConnection(XBMC_Address, XBMC_Port, XBMC_Username, XBMC_Password)
  452. xbmc.Open
  453. Dim result As Boolean = xbmc.IsAlive
  454. xbmc.Close
  455. Return result
  456. Catch
  457. End Try
  458. Return False
  459. End Get
  460. End Property
  461. ReadOnly Shared Property XBMC_CanPing As Boolean
  462. Get
  463. Dim result As Boolean = False
  464. Try
  465. result = My.Computer.Network.Ping(XBMC_Address,1000)
  466. Catch
  467. End Try
  468. Return result
  469. End Get
  470. End Property
  471. ReadOnly Shared Property XBMC_TexturesDb_Version_Valid As Boolean
  472. Get
  473. Return TexturesDbVersion = 13
  474. End Get
  475. End Property
  476. Public Shared Function TexturesDbVersion As Integer
  477. Try
  478. Dim conn As SQLiteConnection = new SQLiteConnection(XBMC_TexturesDb_ReadOnly_ConnectionStr)
  479. conn.Open
  480. Dim dt As DataTable = DbUtils.ExecuteReader(conn, "Select idVersion from version" )
  481. conn.Close
  482. Return dt.Rows(0)("idVersion").ToString
  483. Catch ex As Exception
  484. Return -1
  485. End Try
  486. End Function
  487. ReadOnly Shared Property XBMC_TexturesDb_Conn_Valid As Boolean
  488. Get
  489. Try
  490. Dim conn As SQLiteConnection = new SQLiteConnection(XBMC_TexturesDb_ReadOnly_ConnectionStr)
  491. conn.Open
  492. Dim dt As DataTable = DbUtils.ExecuteReader(conn, "Select idVersion from version" )
  493. conn.Close
  494. Return True
  495. Catch ex As Exception
  496. Return False
  497. End Try
  498. End Get
  499. End Property
  500. ReadOnly Shared Property XBMC_ThumbnailsFolder_Valid As Boolean
  501. Get
  502. Return Directory.Exists(XBMC_Thumbnails_Path)
  503. End Get
  504. End Property
  505. ReadOnly Shared Property XBMC_UserdataFolder_Valid As Boolean
  506. Get
  507. Return Directory.Exists(XBMC_UserdataFolder)
  508. End Get
  509. End Property
  510. ReadOnly Shared Property XBMC_TexturesDbFile_Valid As Boolean
  511. Get
  512. Return IO.File.Exists(XBMC_TexturesDb_Path)
  513. End Get
  514. End Property
  515. ReadOnly Shared Property XBMC_TexturesDb_ReadOnly_ConnectionStr As String
  516. Get
  517. Return XBMC_TexturesDb_ConnectionStr & "Read Only=True;"
  518. End Get
  519. End Property
  520. ReadOnly Shared Property XBMC_TexturesDb_ConnectionStr As String
  521. Get
  522. Return "Data Source=" + Pref.XBMC_TexturesDb_Path + ";Version=3;New=False;Compress=True;FailIfMissing=True;"
  523. End Get
  524. End Property
  525. ReadOnly Shared Property XBMC_Thumbnails_Path As String
  526. Get
  527. Return Path.Combine(XBMC_UserdataFolder,XBMC_ThumbnailsFolder)
  528. End Get
  529. End Property
  530. ReadOnly Shared Property XBMC_TexturesDb_Path As String
  531. Get
  532. Return Path.Combine(XBMC_UserdataFolder,XBMC_TexturesDb)
  533. End Get
  534. End Property
  535. ReadOnly Shared Property XbmcLinkReady As Boolean
  536. Get
  537. Return XBMC_Link And XBMC_TestsPassed
  538. End Get
  539. End Property
  540. Public Shared Sub SetUpPreferences()
  541. 'General
  542. ignorearticle = False
  543. ignoreAarticle = False
  544. ignoreAn = False
  545. sorttitleignorearticle = False
  546. MovSetTitleIgnArticle = False
  547. MovPosterTabTMDBSelect = False
  548. externalbrowser = False
  549. selectedBrowser = ""
  550. altnfoeditor = ""
  551. backgroundcolour = "Silver"
  552. forgroundcolour = "#D3D9DC"
  553. formheight = "600"
  554. formwidth = "800"
  555. disablelogfiles = False
  556. AutoHideStatusBar = True
  557. DisplayRatingOverlay = True
  558. DisplayMediainfoOverlay = True
  559. DisplayMediaInfoFolderSize = False
  560. EnableFolderSize = False
  561. ShowAllAudioTracks = False
  562. DisplayDefaultSubtitleLang = True
  563. DisplayAllSubtitleLang = False
  564. incmissingmovies = False
  565. startupCache = True
  566. rarsize = 8
  567. renamenfofiles = True
  568. scrapemovieposters = True
  569. movrootfoldercheck = True
  570. posterjpg = False
  571. dontdisplayposter = False
  572. usetransparency = False 'not used in gen2
  573. transparencyvalue = 255 'not used in gen2
  574. lastpath = applicationPath ' Application.StartupPath
  575. videomode = 1
  576. locx = 0
  577. locy = 0
  578. formheight = 725
  579. formwidth = 1060
  580. splt5 = 0
  581. splt6 = 230
  582. tvbannersplit = 0
  583. showsortdate = False
  584. MultiMonitoEnabled = False
  585. XBMC_version = 2
  586. 'Proxy settings
  587. prxyEnabled = "false"
  588. prxyIp = "127.0.0.1"
  589. prxyPort = "8099"
  590. prxyUsername = "username"
  591. prxyPassword = "password"
  592. 'Movies
  593. movies_useXBMC_Scraper = False
  594. TmdbActorsImdbScrape = False
  595. ImdbPrimaryPlot = False
  596. MovImdbFirstRunTime = False
  597. MovImdbAspectRatio = False
  598. XBMC_Scraper = "tmdb"
  599. XbmcTmdbRenameMovie = False
  600. XbmcTmdbMissingFromImdb = False
  601. XbmcTmdbTop250FromImdb = False
  602. XbmcTmdbVotesFromImdb = False
  603. XbmcTmdbCertFromImdb = False
  604. XbmcTmdbStarsFromImdb = False
  605. XbmcTmdbAkasFromImdb = False
  606. XbmcTmdbAspectFromImdb = False
  607. XbmcTmdbMetascoreFromImdb = False
  608. XbmcTmdbActorDL = False
  609. XbmcTmdbActorFromImdb = False
  610. XbmcTmdbGenreFromImdb = False
  611. scrapefullcert = False
  612. MovCertRemovePhrase = False
  613. moviedefaultlist = 0
  614. moviesortorder = 0
  615. 'movieinvertorder = 0
  616. imdbmirror = "http://www.imdb.com/"
  617. usefoldernames = False
  618. movxtrafanart = True
  619. movxtrafanartqty = 0
  620. movxtrathumb = False
  621. dlxtrafanart = False
  622. dlMovSetArtwork = False
  623. MovCustFolderjpgNoDelete = False
  624. MovCustPosterjpgNoDelete = False
  625. MovSetArtSetFolder = False
  626. MovSetArtCentralFolder = ""
  627. allfolders = False
  628. 'ReDim moviethumbpriority(3)
  629. maxmoviegenre = 99
  630. moviethumbpriority.Add("themoviedb.org")
  631. moviethumbpriority.Add("IMDB")
  632. 'moviethumbpriority.Add("Movie Poster DB")
  633. moviethumbpriority.Add("Internet Movie Poster Awards")
  634. MovSepLst.Add("3DSBS")
  635. MovSepLst.Add("3DTAB")
  636. MovSepLst.Add("3D")
  637. MovSepLst.Add("Directors-Cut")
  638. MovSepLst.Add("Extended-Edition")
  639. MovSepLst.Add("Theatrical-Version")
  640. MovSepLst.Add("Unrated-Version")
  641. ThreeDKeyWords.Clear()
  642. ThreeDKeyWords.Add("HSBS")
  643. ThreeDKeyWords.Add("SBS")
  644. ThreeDKeyWords.Add("TAB")
  645. ThreeDKeyWords.Add("MVC")
  646. movieRuntimeDisplay = "scraper"
  647. moviePreferredTrailerResolution = "720"
  648. MovieManualRename = True
  649. MovieRenameEnable = False
  650. MovieRenameTemplate = "%T (%Y)"
  651. MovFolderRename = False
  652. MovRenameSpaceCharacter = False
  653. MovSetIgnArticle = False
  654. MovSortIgnArticle = False
  655. MovTitleIgnArticle = False
  656. MovTitleCase = False
  657. ExcludeMpaaRated = False
  658. IncludeMpaaRated = False
  659. MovThousSeparator = False
  660. MovFolderRenameTemplate = "%N\%T (%Y)"
  661. MovNewFolderInRootFolder = False
  662. MovieImdbGenreRegEx = "/genre/.*?>(?<genre>.*?)</a>"
  663. MovFiltLastSize = 384
  664. RenameSpaceCharacter = "_"
  665. 'TV
  666. tvshow_useXBMC_Scraper = False
  667. autorenameepisodes = False
  668. eprenamelowercase = False
  669. TvRenameReplaceSpace = False
  670. TvRenameReplaceSpaceDot = False
  671. autoepisodescreenshot = False
  672. tvscrnshtTVDBResize = False
  673. tvshowautoquick = False
  674. copytvactorthumbs = True
  675. tvdbIMDbRating = False
  676. enabletvhdtags = True
  677. tvshowrefreshlog = False
  678. seasonall = "none"
  679. tvrename = 0
  680. tvdlfanart = True
  681. tvdlposter = True
  682. tvdlseasonthumbs = True
  683. TvDlFanartTvArt = False
  684. TvFanartTvFirst = False
  685. dlTVxtrafanart = False
  686. TvXtraFanartQty = 5
  687. tvfolderjpg = False
  688. seasonfolderjpg = False
  689. postertype = "poster"
  690. TvdbLanguage = "English"
  691. TvdbLanguageCode = "en"
  692. lastrefreshmissingdate = "" 'DateTime.Now.ToString("yyyy-MM-dd")
  693. sortorder = "default"
  694. TvdbActorScrape = 0
  695. OfflineDVDTitle = "Please Load '%T' Media To Play..."
  696. fixnfoid = False
  697. logview = "0" 'first entry in combobox is 'Full' (log view)
  698. displayMissingEpisodes = False
  699. ignoreMissingSpecials = False
  700. TvMissingEpOffset = False
  701. ScrShtDelay = 10
  702. excludefromshowfoldername = "[ended]"
  703. TvMaxGenres = 99
  704. 'Home Movie
  705. HmFanartScrnShot = True
  706. HmFanartTime = 10
  707. HmPosterTime = 10
  708. 'Music Video
  709. MVScraper = "wiki"
  710. MVsortorder = 0
  711. MVdefaultlist = 0
  712. MVPrefScrnSht = 10
  713. MVPrefShowLog = True
  714. 'Unknown - need to be sorted/named better
  715. GenreCustomBefore = False
  716. CustomTmdbApiKey = ""
  717. MovNfoWatchTag = False
  718. intruntime = False
  719. actorseasy = True
  720. startuptab = 0
  721. font = "Microsoft Sans Serif, 9pt"
  722. fanartnotstacked = False
  723. posternotstacked = False
  724. ignoreactorthumbs = False
  725. actorsave = False
  726. actorsavepath = ""
  727. actorsavealpha = False
  728. actornetworkpath = ""
  729. usefanart = True
  730. ignoretrailers = False
  731. enablehdtags = True
  732. MovDurationAsRuntine = False
  733. MovRuntimeAsDuration = False
  734. savefanart = True
  735. MovFanartTvscrape = False
  736. MovFanartNaming = False
  737. MovFanartTvDlClearArt = True
  738. MovFanartTvDlClearLogo = True
  739. MovFanartTvDlPoster = True
  740. MovFanartTvDlFanart = True
  741. MovFanartTvDldisc = True
  742. MovFanartTvDlBanner = True
  743. MovFanartTvDlLandscape = True
  744. fanartjpg = False
  745. overwritethumbs = False
  746. LocalActorImage = True
  747. maxactors = 9999
  748. AllowUserTags = True
  749. keywordasTag = False
  750. keywordlimit = 5
  751. TagRes = False
  752. MovTagBlacklist = ""
  753. createfolderjpg = False
  754. createfanartjpg = False
  755. basicsavemode = False 'movie.nfo, movie.tbn, fanart.jpg
  756. namemode = "1"
  757. maximumthumbs = 6
  758. preferredscreen = 0
  759. gettrailer = False
  760. DownloadTrailerDuringScrape = False
  761. NoAltTitle = False
  762. XtraFrodoUrls = True
  763. ExportXBMCPath = ""
  764. ReDim certificatepriority(33)
  765. certificatepriority(0) = "MPAA"
  766. certificatepriority(1) = "UK"
  767. certificatepriority(2) = "USA"
  768. certificatepriority(3) = "Ireland"
  769. certificatepriority(4) = "Australia"
  770. certificatepriority(5) = "New Zealand"
  771. certificatepriority(6) = "Norway"
  772. certificatepriority(7) = "Singapore"
  773. certificatepriority(8) = "South Korea"
  774. certificatepriority(9) = "Philippines"
  775. certificatepriority(10) = "Brazil"
  776. certificatepriority(11) = "Netherlands"
  777. certificatepriority(12) = "Malaysia"
  778. certificatepriority(13) = "Argentina"
  779. certificatepriority(14) = "Iceland"
  780. certificatepriority(15) = "Canada (Quebec)"
  781. certificatepriority(16) = "Canada (British Columbia/Ontario)"
  782. certificatepriority(17) = "Canada (Alberta/Manitoba/Nova Scotia)"
  783. certificatepriority(18) = "Peru"
  784. certificatepriority(19) = "Sweden"
  785. certificatepriority(20) = "Portugal"
  786. certificatepriority(21) = "South Africa"
  787. certificatepriority(22) = "Denmark"
  788. certificatepriority(23) = "Hong Kong"
  789. certificatepriority(24) = "Finland"
  790. certificatepriority(25) = "India"
  791. certificatepriority(26) = "Mexico"
  792. certificatepriority(27) = "France"
  793. certificatepriority(28) = "Italy"
  794. certificatepriority(29) = "Switzerland (canton of Vaud)"
  795. certificatepriority(30) = "Switzerland (canton of Geneva)"
  796. certificatepriority(31) = "Germany"
  797. certificatepriority(32) = "Greece"
  798. certificatepriority(33) = "Austria"
  799. maximagecount = 10
  800. ReDim releaseformat(14)
  801. releaseformat(0) = "Cam"
  802. releaseformat(1) = "Telesync"
  803. releaseformat(2) = "Workprint"
  804. releaseformat(3) = "Telecine"
  805. releaseformat(4) = "Pay-Per-View Rip"
  806. releaseformat(5) = "Screener"
  807. releaseformat(6) = "R5"
  808. releaseformat(7) = "DVD-Rip"
  809. releaseformat(8) = "DVD-R"
  810. releaseformat(9) = "HDTV"
  811. releaseformat(10) = "VODRip"
  812. releaseformat(11) = "BRRip"
  813. releaseformat(12) = "BDRip"
  814. releaseformat(13) = "Bluray"
  815. releaseformat(14) = "DVD"
  816. movieFolders .Clear()
  817. tvRootFolders .Clear()
  818. tvFolders .Clear()
  819. MVidFolders .Clear()
  820. MVConcertFolders .Clear()
  821. custtvFolders .Clear()
  822. End Sub
  823. Public Shared Sub resetmovthumblist
  824. moviethumbpriority.Clear()
  825. moviethumbpriority.Add("themoviedb.org")
  826. moviethumbpriority.Add("IMDB")
  827. 'moviethumbpriority.Add("Movie Poster DB")
  828. moviethumbpriority.Add("Internet Movie Poster Awards")
  829. End Sub
  830. Public Shared Sub ResetMovSepLst
  831. MovSepLst.Clear()
  832. MovSepLst.Add("3DSBS")
  833. MovSepLst.Add("3DTAB")
  834. MovSepLst.Add("3D")
  835. MovSepLst.Add("Directors-Cut")
  836. MovSepLst.Add("Extended-Edition")
  837. MovSepLst.Add("Theatrical-Version")
  838. MovSepLst.Add("Unrated-Version")
  839. MovSepLst.Add("DVD")
  840. MovSepLst.Add("Bluray")
  841. End Sub
  842. Public Shared Sub Proxyreload()
  843. proxysettings.Clear()
  844. proxysettings.Add(prxyEnabled)
  845. proxysettings.Add(prxyIp)
  846. proxysettings.Add(prxyPort)
  847. proxysettings.Add(prxyUsername)
  848. proxysettings.Add(prxyPassword)
  849. Utilities.MCProxy = proxysettings
  850. End Sub
  851. Public Shared Sub engineupdate
  852. enginefront.Clear()
  853. engineend.Clear()
  854. enginefront.Add("http://www.google.co.uk/search?hl=en-US&as_q=")
  855. engineend.Add("&as_sitesearch=www.imdb.com")
  856. enginefront.Add("https://duckduckgo.com/lite/?q=")
  857. engineend.Add("+site%3Aimdb.com&kp=-1&kaf=1&k1=-1&kac=-1&ia=web")
  858. 'enginefront.Add("http://www.bing.com/search?q=")
  859. 'engineend.Add("+movie+site%3Aimdb.com")
  860. 'enginefront.Add("http://www.ask.com/web?qsrc=1&o=0&l=dir&q=")
  861. 'engineend.Add("&qo=serpSearchTopBox")
  862. End Sub
  863. Public Shared Sub ConfigSave()
  864. Dim tempstring As String = String.Empty
  865. Dim doc As New XmlDocument
  866. Dim xmlproc As XmlDeclaration
  867. xmlproc = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes")
  868. doc.AppendChild(xmlproc)
  869. Dim root As XmlElement
  870. Dim child As XmlElement
  871. root = doc.CreateElement("xbmc_media_companion_config_v1.0")
  872. 'Folders In Use ------------------------------------------------------
  873. For Each path In tvFolders
  874. root.AppendChild(doc, "tvfolder", path)
  875. Next
  876. For Each path In tvRootFolders
  877. Dim t As String = path.rpath & "|" & path.selected
  878. root.AppendChild(doc, "tvrootfolder", t)
  879. Next
  880. For Each path In movieFolders
  881. Dim t As String = path.rpath & "|" & path.selected
  882. root.AppendChild(doc, "nfofolder", t)
  883. Next
  884. root.AppendChild(doc, "stubfolder", stubfolder)
  885. root.AppendChild(doc, "stubmessage", stubmessage)
  886. For Each path In offlinefolders
  887. root.AppendChild(doc, "offlinefolder", path)
  888. Next
  889. For Each path In homemoviefolders
  890. Dim t As String = path.rpath & "|" & path.selected
  891. root.AppendChild(doc, "homemoviefolder", t)
  892. Next
  893. For Each path In MVidFolders
  894. Dim t As String = path.rpath & "|" & path.selected
  895. root.AppendChild(doc, "MVidFolders", t)
  896. Next
  897. For Each path In MVConcertFolders
  898. Dim t As String = path.rpath & "|" & path.selected
  899. root.AppendChild(doc, "MVConcertFolders", t)
  900. Next
  901. For each path In custtvFolders
  902. root.AppendChild(doc, "custtvFolder", path)
  903. Next
  904. root.AppendChild(ExcludeFolders.GetChild(doc))
  905. 'Form Settings ------------------------------------------------------------
  906. root.AppendChild(doc, "backgroundcolour", backgroundcolour)
  907. root.AppendChild(doc, "forgroundcolour", forgroundcolour)
  908. root.AppendChild(doc, "remembersize", remembersize)
  909. root.AppendChild(doc, "locx", locx)
  910. root.AppendChild(doc, "locy", locy)
  911. root.AppendChild(doc, "formheight", formheight)
  912. root.AppendChild(doc, "formwidth", formwidth)
  913. root.AppendChild(doc, "splitcontainer1", splt1)
  914. root.AppendChild(doc, "splitcontainer2", splt2)
  915. root.AppendChild(doc, "splitcontainer3", splt3)
  916. root.AppendChild(doc, "splitcontainer4", splt4)
  917. root.AppendChild(doc, "splitcontainer5", splt5)
  918. root.AppendChild(doc, "splitcontainer6", splt6)
  919. root.AppendChild(doc, "tvbannersplit", tvbannersplit)
  920. root.AppendChild(doc, "maximised", maximised)
  921. root.AppendChild(doc, "startuptab", startuptab)
  922. root.AppendChild(doc, "logview", logview)
  923. root.AppendChild(doc, "LogScrapeTimes", LogScrapeTimes)
  924. root.AppendChild(doc, "ScrapeTimingsLogThreshold", ScrapeTimingsLogThreshold)
  925. root.AppendChild(doc, "maximumthumbs", maximumthumbs)
  926. root.AppendChild(doc, "preferredscreen", preferredscreen)
  927. root.AppendChild(doc, "lastpath", lastpath)
  928. root.AppendChild(doc, "MovieImdbGenreRegEx", MovieImdbGenreRegEx)
  929. root.AppendChild(doc, "moviedefaultlist", moviedefaultlist) 'RadioButtonFileName,RadioButtonTitleAndYear,RadioButtonFolder
  930. root.AppendChild(doc, "moviesortorder", moviesortorder) 'cbSort
  931. root.AppendChild(doc, "movieinvertorder", movieinvertorder) 'btnreverse
  932. root.AppendChild(doc, "displayMissingEpisodes", displayMissingEpisodes) 'SearchForMissingEpisodesToolStripMenuItem
  933. root.AppendChild(doc, "ignoreMissingSpecials", ignoreMissingSpecials) 'cbTvMissingSpecials
  934. root.AppendChild(doc, "TvMissingEpOffset", TvMissingEpOffset) 'cb_TvMissingEpOffset
  935. 'Still to do
  936. child = doc.CreateElement("moviesets")
  937. Dim childchild As XmlElement
  938. For Each movieset In moviesets
  939. If movieset <> "-None-" Then
  940. childchild = doc.CreateElement("set")
  941. childchild.InnerText = movieset
  942. child.AppendChild(childchild)
  943. End If
  944. Next
  945. root.AppendChild(child)
  946. child = doc.CreateElement("movietags") 'preparing new movie tags
  947. Dim childchild3 As XmlElement
  948. For Each movietag In movietags
  949. If movietag <> "" And Not IsNothing(movietag) Then
  950. childchild3 = doc.CreateElement("tag")
  951. childchild3.InnerText = movietag
  952. child.AppendChild(childchild3)
  953. End If
  954. Next
  955. root.AppendChild(child)
  956. child = doc.CreateElement("table")
  957. Dim childchild2 As XmlElement
  958. childchild2 = doc.CreateElement("sort")
  959. childchild2.InnerText = tablesortorder
  960. child.AppendChild(childchild2)
  961. For Each tabs In tableview
  962. childchild2 = doc.CreateElement("tab")
  963. childchild2.InnerText = tabs
  964. child.AppendChild(childchild2)
  965. Next
  966. root.AppendChild(child)
  967. 'General Prefs ------------------------------------------------------------
  968. root.AppendChild(doc, "startupcache" , startupCache ) 'chkbx_disablecache
  969. root.AppendChild(doc, "renamenfofiles" , renamenfofiles ) 'CheckBoxRenameNFOtoINFO
  970. root.AppendChild(doc, "actorseasy" , actorseasy ) 'CheckBox33
  971. root.AppendChild(doc, "rarsize" , rarsize ) 'txtbx_minrarsize
  972. root.AppendChild(doc, "overwritethumbs" , overwritethumbs )'cbOverwriteArtwork - does not appear to be used?
  973. root.AppendChild(doc, "LocalActorImage" , LocalActorImage ) 'cbDisplayLocalActor
  974. root.AppendChild(doc, "videomode" , videomode ) 'RadioButton36-38
  975. root.AppendChild(doc, "selectedvideoplayer" , selectedvideoplayer )'btn_custommediaplayer
  976. root.AppendChild(doc, "externalbrowser" , externalbrowser ) 'CheckBox12
  977. root.AppendChild(doc, "selectedBrowser" , selectedBrowser ) 'btnFindBrowser
  978. root.AppendChild(doc, "altnfoeditor" , altnfoeditor ) 'btnaltnfoeditor
  979. root.AppendChild(doc, "ignorearticle" , ignorearticle ) 'cb_IgnoreThe
  980. root.AppendChild(doc, "ignoreAarticle" , ignoreAarticle ) 'cb_IgnoreA
  981. root.AppendChild(doc, "ignoreAn" , ignoreAn ) 'cb_IgnoreAn
  982. root.AppendChild(doc, "sorttitleignorearticle" , sorttitleignorearticle ) 'cb_SorttitleIgnoreArticles
  983. root.AppendChild(doc, "MovSetTitleIgnArticle" , MovSetTitleIgnArticle ) 'cb_MovSetTitleIgnArticle
  984. root.AppendChild(doc, "MovPosterTabTMDBSelect" , MovPosterTabTMDBSelect ) 'cb_MovPosterTabTMDBSelect
  985. root.AppendChild(doc, "intruntime" , intruntime ) 'CheckBox38
  986. root.AppendChild(doc, "xbmcartwork" , XBMC_version ) 'rbXBMCv_pre,rbXBMCv_post,rbXBMCv_both
  987. root.AppendChild(doc, "ShowMovieGridToolTip" , ShowMovieGridToolTip ) 'cbShowMovieGridToolTip
  988. root.AppendChild(doc, "ShowLogOnError" , ShowLogOnError ) 'cbShowLogOnError
  989. root.AppendChild(doc, "CheckForNewVersion" , CheckForNewVersion )
  990. root.AppendChild(doc, "CloseMCForDLNewVersion" , CloseMCForDLNewVersion ) 'cbMcCloseMCForDLNewVersion
  991. root.AppendChild(doc, "MkvMergeGuiPath" , MkvMergeGuiPath ) 'tbMkvMergeGuiPath
  992. root.AppendChild(doc, "prxyEnabled" , prxyEnabled ) 'ucGenPref_Proxy.cb_prxyEnable
  993. root.AppendChild(doc, "prxyIp" , prxyIp ) 'ucGenPref_Proxy.tb_prxyIp
  994. root.AppendChild(doc, "prxyPort" , prxyPort ) 'ucGenPref_Proxy.prxyPort
  995. root.AppendChild(doc, "prxyUsername" , prxyUsername ) 'ucGenPref_Proxy.prxyUsername
  996. root.AppendChild(doc, "prxyPassword" , prxyPassword ) 'ucGenPref_Proxy.prxyPassword
  997. root.AppendChild(doc, "ShowAllAudioTracks" , ShowAllAudioTracks ) 'cbShowAllAudioTracks
  998. root.AppendChild(doc, "DisplayDefaultSubtitleLang" , DisplayDefaultSubtitleLang) 'cbDisplayDefaultSubtitleLang
  999. root.AppendChild(doc, "DisplayAllSubtitleLang" , DisplayAllSubtitleLang ) 'cbDisplayAllSubtitleLang
  1000. root.AppendChild(doc, "GenreCustomBefore" , GenreCustomBefore ) 'cbGenreCustomBefore
  1001. root.AppendChild(doc, "CustomTmdbApiKey" , CustomTmdbApiKey ) 'tbTMDbAPI
  1002. root.AppendChild(doc, "MovNfoWatchTag" , MovNfoWatchTag ) 'cbMovNfoWatchTag
  1003. If Not String.IsNullOrEmpty(font) Then
  1004. root.AppendChild(doc, "font", font) 'Button96
  1005. End If
  1006. For Each com In commandlist
  1007. If com.command <> "" And com.title <> "" Then
  1008. child = doc.CreateElement("comms")
  1009. childchild = doc.CreateElement("title")
  1010. childchild.InnerText = com.title
  1011. child.AppendChild(childchild)
  1012. childchild = doc.CreateElement("command")
  1013. childchild.InnerText = com.command
  1014. child.AppendChild(childchild)
  1015. root.AppendChild(child)
  1016. End If
  1017. Next
  1018. 'Movie Prefs ------------------------------------------------------------
  1019. root.AppendChild(doc, "DownloadTrailerDuringScrape", DownloadTrailerDuringScrape) 'cbDlTrailerDuringScrape
  1020. root.AppendChild(doc, "gettrailer", gettrailer) 'CheckBox11
  1021. root.AppendChild(doc, "ignoretrailers", ignoretrailers) 'set from frmOptions - obsolete
  1022. root.AppendChild(doc, "moviescraper", moviescraper) 'set from frmOptions - obsolete
  1023. root.AppendChild(doc, "nfoposterscraper", nfoposterscraper) 'IMPA_chk,mpdb_chk,tmdb_chk,imdb_chk
  1024. root.AppendChild(doc, "alwaysuseimdbid", alwaysuseimdbid) 'set from frmOptions - obsolete
  1025. root.AppendChild(doc, "ignoreactorthumbs", ignoreactorthumbs) 'set from frmOptions - obsolete
  1026. root.AppendChild(doc, "maxactors", maxactors) 'ComboBox7
  1027. root.AppendChild(doc, "MovTagBlacklist", MovTagBlacklist) 'tb_MovTagBlacklist
  1028. root.AppendChild(doc, "maxmoviegenre", maxmoviegenre) 'cmbxMovScraper_MaxGenres
  1029. root.AppendChild(doc, "enablehdtags", enablehdtags) 'CheckBox19
  1030. root.AppendChild(doc, "MovDurationAsRuntine", MovDurationAsRuntine) 'cb_MovDurationAsRuntine
  1031. root.AppendChild(doc, "MovRuntimeAsDuration", MovRuntimeAsDuration) 'cb_MovRuntimeAsDuration
  1032. root.AppendChild(doc, "movieruntimedisplay", movieRuntimeDisplay) 'rbRuntimeScraper
  1033. root.AppendChild(doc, "movieRuntimeFallbackToFile", movieRuntimeFallbackToFile) 'cbMovieRuntimeFallbackToFile
  1034. root.AppendChild(doc, "fanartnotstacked", fanartnotstacked) 'set from frmOptions - obsolete
  1035. root.AppendChild(doc, "posternotstacked", posternotstacked) 'set from frmOptions - obsolete
  1036. root.AppendChild(doc, "scrapemovieposters", scrapemovieposters) 'cbMoviePosterScrape
  1037. root.AppendChild(doc, "movrootfoldercheck", movrootfoldercheck) 'cbMovRootFolderCheck
  1038. root.AppendChild(doc, "posterjpg", posterjpg) 'cbMoviePosterInFolder
  1039. root.AppendChild(doc, "usefanart", usefanart) 'set from frmOptions - obsolete
  1040. root.AppendChild(doc, "dontdisplayposter", dontdisplayposter) 'set from frmOptions - obsolete
  1041. root.AppendChild(doc, "usefoldernames", usefoldernames) 'chkbx_usefoldernames
  1042. root.AppendChild(doc, "movxtrathumb", movxtrathumb) 'cbMovXtraThumb
  1043. root.AppendChild(doc, "movxtrafanart", movxtrafanart) 'cbMovXtraFanart
  1044. root.AppendChild(doc, "movxtrafanartqty", movxtrafanartqty) 'cbMovXtraFanartQty
  1045. root.AppendChild(doc, "dlxtrafanart", dlxtrafanart) 'cbDlXtraFanart
  1046. root.AppendChild(doc, "dlMovSetArtwork", dlMovSetArtwork) 'cbMovSetArtScrape
  1047. root.AppendChild(doc, "MovCustFolderjpgNoDelete", MovCustFolderjpgNoDelete) 'cbMovCustFolderjpgNoDelete
  1048. root.AppendChild(doc, "MovCustPosterjpgNoDelete", MovCustPosterjpgNoDelete) 'cbMovCustPosterjpgNoDelete
  1049. root.AppendChild(doc, "MovSetArtSetFolder", MovSetArtSetFolder) 'rbMovSetFolder
  1050. root.AppendChild(doc, "MovSetArtCentralFolder", MovSetArtCentralFolder) 'tbMovSetArtCentralFolder
  1051. root.AppendChild(doc, "allfolders", allfolders) 'chkbx_MovieAllFolders
  1052. root.AppendChild(doc, "actorsave", actorsave) 'saveactorchkbx
  1053. root.AppendChild(doc, "actorsavepath", actorsavepath) 'localactorpath
  1054. root.AppendChild(doc, "actorsavealpha", actorsavealpha) 'actorsavealpha
  1055. root.AppendChild(doc, "actornetworkpath", actornetworkpath) 'xbmcactorpath
  1056. root.AppendChild(doc, "imdbmirror", imdbmirror) 'ListBox9
  1057. root.AppendChild(doc, "createfolderjpg", createfolderjpg) 'cbMovCreateFolderjpg
  1058. root.AppendChild(doc, "createfanartjpg", createfanartjpg) 'cbMovCreateFanartjpg
  1059. root.AppendChild(doc, "basicsavemode", basicsavemode) 'chkbx_basicsave
  1060. root.AppendChild(doc, "namemode", namemode) 'cbxNameMode
  1061. root.AppendChild(doc, "usetransparency", usetransparency) 'set from frmOptions - obsolete
  1062. root.AppendChild(doc, "transparencyvalue", transparencyvalue) 'set from frmOptions - obsolete
  1063. root.AppendChild(doc, "NoAltTitle", NoAltTitle) 'cbNoAltTitle
  1064. root.AppendChild(doc, "XtraFrodoUrls", XtraFrodoUrls) 'cbXtraFrodoUrls
  1065. root.AppendChild(doc, "disablelogs", disablelogfiles) 'CheckBox16
  1066. root.AppendChild(doc, "AutoHideStatusBar", AutoHideStatusBar) 'cbAutoHideStatusBar
  1067. root.AppendChild(doc, "DisplayRatingOverlay", DisplayRatingOverlay) 'cbDisplayRatingOverlay
  1068. root.AppendChild(doc, "DisplayMediainfoOverlay", DisplayMediainfoOverlay) 'cbDisplayMediainfoOverlay
  1069. root.AppendChild(doc, "DisplayMediaInfoFolderSize", DisplayMediaInfoFolderSize) 'cbDisplayMediaInfoFolderSize
  1070. root.AppendChild(doc, "EnableFolderSize", EnableFolderSize) 'cbEnableFolderSize
  1071. root.AppendChild(doc, "incmissingmovies", incmissingmovies) 'cbMissingMovie
  1072. root.AppendChild(doc, "savefanart", savefanart) 'cbMovFanartScrape
  1073. root.AppendChild(doc, "movfanarttvscrape", MovFanartTvscrape) 'cbMovFanartTvScrape
  1074. root.AppendChild(doc, "MovFanartNaming", MovFanartNaming) 'cbMovFanartNaming
  1075. root.AppendChild(doc, "MovFanartTvDlClearArt", MovFanartTvDlClearArt)
  1076. root.AppendChild(doc, "MovFanartTvDlClearLogo", MovFanartTvDlClearLogo)
  1077. root.AppendChild(doc, "MovFanartTvDlPoster", MovFanartTvDlPoster)
  1078. root.AppendChild(doc, "MovFanartTvDlFanart", MovFanartTvDlFanart)
  1079. root.AppendChild(doc, "MovFanartTvDlDisc", MovFanartTvDlDisc)
  1080. root.AppendChild(doc, "MovFanartTvDlBanner", MovFanartTvDlBanner)
  1081. root.AppendChild(doc, "MovFanartTvDlLandscape", MovFanartTvDlLandscape)
  1082. root.AppendChild(doc, "fanartjpg", fanartjpg) 'cbMovieFanartInFolders
  1083. root.AppendChild(doc, "roundminutes", roundminutes) 'set from frmOptions - obsolete
  1084. root.AppendChild(doc, "ignoreparts", movieignorepart) 'cbxCleanFilenameIgnorePart
  1085. root.AppendChild(doc, "cleantags", moviecleanTags) 'btnCleanFilenameAdd,btnCleanFilenameRemove
  1086. root.AppendChild(doc, "moviesUseXBMCScraper", movies_useXBMC_Scraper) 'CheckBox_Use_XBMC_Scraper
  1087. root.AppendChild(doc, "TmdbActorsImdbScrape", TmdbActorsImdbScrape) 'cbImdbgetTMDBActor
  1088. root.AppendChild(doc, "ImdbPrimaryPlot", ImdbPrimaryPlot) 'cbImdbPrimaryPlot
  1089. root.AppendChild(doc, "MovImdbFirstRunTime", MovImdbFirstRunTime) 'cbMovImdbFirstRunTime
  1090. root.AppendChild(doc, "MovImdbAspectRatio", MovImdbAspectRatio) 'cbMovImdbAspectRatio
  1091. root.AppendChild(doc, "xbmcscraper", XBMC_Scraper)
  1092. root.AppendChild(doc, "XbmcTmdbRenameMovie", XbmcTmdbRenameMovie) 'cbXbmcTmdbRename
  1093. root.AppendChild(doc, "XbmcTmdbMissingFromImdb", XbmcTmdbMissingFromImdb) 'cbXbmcTmdbMissingFromImdb
  1094. root.AppendChild(doc, "XbmcTmdbTop250FromImdb", XbmcTmdbTop250FromImdb) 'cbXbmcTmdbMissingTop250FromImdb
  1095. root.AppendChild(doc, "XbmcTmdbVotesFromImdb", XbmcTmdbVotesFromImdb) 'cbXbmcTmdbImdbVotes
  1096. root.AppendChild(doc, "XbmcTmdbCertFromImdb", XbmcTmdbCertFromImdb) 'cbXbmcTmdbCertFromImdb
  1097. root.AppendChild(doc, "XbmcTmdbStarsFromImdb", XbmcTmdbStarsFromImdb) 'cbXbmcTmdbStarsFromImdb
  1098. root.AppendChild(doc, "XbmcTmdbAkasFromImdb", XbmcTmdbAkasFromImdb) 'cbXbmcTmdbAkasFromImdb
  1099. root.AppendChild(doc, "XbmcTmdbAspectFromImdb", XbmcTmdbAspectFromImdb) 'cbXbmcTmdbAspectFromImdb
  1100. root.AppendChild(doc, "XbmcTmdbMetascoreFromImdb", XbmcTmdbMetascoreFromImdb) 'cbXbmcTmdbMetascoreFromImdb
  1101. root.AppendChild(doc, "XbmcTmdbActorDL", XbmcTmdbActorDL) 'cbXbmcTmdbActorDL - To Delete after 01-03-2016
  1102. root.AppendChild(doc, "XbmcTmdbActorFromImdb", XbmcTmdbActorFromImdb) 'cbXbmcTmdbActorFromImdb
  1103. root.AppendChild(doc, "XbmcTmdbGenreFromImdb", XbmcTmdbGenreFromImdb) 'cbXbmcTmdbGenreFromImdb
  1104. root.AppendChild(doc, "scrapefullcert", scrapefullcert) 'ScrapeFullCertCheckBox
  1105. root.AppendChild(doc, "MovCertRemovePhrase", MovCertRemovePhrase) 'cb_MovCertRemovePhrase
  1106. root.AppendChild(doc, "offlinemovielabeltext", OfflineDVDTitle) 'TextBox_OfflineDVDTitle
  1107. root.AppendChild(doc, "moviemanualrename", MovieManualRename) 'MovieManualRename
  1108. root.AppendChild(doc, "MovieRenameEnable", MovieRenameEnable) 'cbMovieRenameEnable
  1109. root.AppendChild(doc, "movierenametemplate", MovieRenameTemplate) 'tb_MovieRenameEnable
  1110. root.AppendChild(doc, "MovFolderRename", MovFolderRename) 'cbMovFolderRename
  1111. root.AppendChild(doc, "MovFolderRenameTemplate", MovFolderRenameTemplate) 'tb_MovFolderRename
  1112. root.AppendChild(doc, "MovNewFolderInRootFolder", MovNewFolderInRootFolder) 'cbMovNewFolderInRootFolder
  1113. root.AppendChild(doc, "MovRenameUnderscore", MovRenameSpaceCharacter) 'cbRenameUnderscore
  1114. root.AppendChild(doc, "MovSetIgnArticle", MovSetIgnArticle) 'cbMovSetIgnArticle
  1115. root.AppendChild(doc, "MovSortIgnArticle", MovSortIgnArticle) 'cbMovSortIgnArticle
  1116. root.AppendChild(doc, "MovTitleIgnArticle", MovTitleIgnArticle) 'cbMovTitleIgnArticle
  1117. root.AppendChild(doc, "MovTitleCase", MovTitleCase) 'cbMovTitleCase
  1118. root.AppendChild(doc, "ExcludeMpaaRated", ExcludeMpaaRated) 'cbExcludeMpaaRated
  1119. root.AppendChild(doc, "IncludeMpaaRated", IncludeMpaaRated) 'cbIncludeMpaaRated
  1120. root.AppendChild(doc, "MovThousSeparator", MovThousSeparator) 'cbMovThousSeparator
  1121. root.AppendChild(doc, "showsortdate", showsortdate) 'CheckBox_ShowDateOnMovieList
  1122. root.AppendChild(doc, "moviePreferredHDTrailerResolution", moviePreferredTrailerResolution) 'cbPreferredTrailerResolution
  1123. root.AppendChild(doc, "GetMovieSetFromTMDb", GetMovieSetFromTMDb) 'cbGetMovieSetFromTMDb
  1124. root.AppendChild(doc, "TMDbSelectedLanguage", TMDbSelectedLanguageName) 'comboBoxTMDbSelectedLanguage
  1125. root.AppendChild(doc, "TMDbUseCustomLanguage", TMDbUseCustomLanguage) 'cbUseCustomLanguage
  1126. root.AppendChild(doc, "TMDbCustomLanguage", TMDbCustomLanguageValue) 'tbCustomLanguageValue
  1127. root.AppendChild(doc, "ActorResolution", ActorResolutionSI) 'comboActorResolutions
  1128. root.AppendChild(doc, "PosterResolution", PosterResolutionSI) 'comboPosterResolutions
  1129. root.AppendChild(doc, "BackDropResolution", BackDropResolutionSI) 'comboBackDropResolutions
  1130. root.AppendChild(doc, "DateFormat", DateFormat) 'tbDateFormat
  1131. root.AppendChild(doc, "MovieList_ShowColPlot", MovieList_ShowColPlot) 'cbMovieList_ShowColPlot
  1132. root.AppendChild(doc, "DisableNotMatchingRenamePattern", DisableNotMatchingRenamePattern) 'cDisableNotMatchingRenamePattern
  1133. root.AppendChild(doc, "MovieList_ShowColWatched", MovieList_ShowColWatched) 'cbMovieList_ShowColWatched
  1134. root.AppendChild(doc, "MovieScraper_MaxStudios", MovieScraper_MaxStudios) 'nudMovieScraper_MaxStudios
  1135. root.AppendChild(doc, "ActorsFilterMinFilms", ActorsFilterMinFilms) 'nudActorsFilterMinFilms
  1136. root.AppendChild(doc, "MaxActorsInFilter", MaxActorsInFilter) 'nudMaxActorsInFilter
  1137. root.AppendChild(doc, "MovieFilters_Actors_Order", MovieFilters_Actors_Order) 'cbMovieFilters_Actors_Order
  1138. root.AppendChild(doc, "DirectorsFilterMinFilms", DirectorsFilterMinFilms) 'nudDirectorsFilterMinFilms
  1139. root.AppendChild(doc, "MaxDirectorsInFilter", MaxDirectorsInFilter) 'nudMaxDirectorsInFilter
  1140. root.AppendChild(doc, "MovieFilters_Directors_Order", MovieFilters_Directors_Order) 'cbMovieFilters_Directors_Order
  1141. root.AppendChild(doc, "SetsFilterMinFilms", SetsFilterMinFilms) 'nudSetsFilterMinFilms
  1142. root.AppendChild(doc, "MaxSetsInFilter", MaxSetsInFilter) 'nudMaxSetsInFilter
  1143. root.AppendChild(doc, "MovieFilters_Sets_Order", MovieFilters_Sets_Order) 'cbMovieFilters_Sets_Order
  1144. root.AppendChild(doc, "MinTagsInFilter", MinTagsInFilter) 'nudMinTagsInFilter
  1145. root.AppendChild(doc, "MaxTagsInFilter", MaxTagsInFilter) 'nudMaxTagsInFilter
  1146. root.AppendChild(doc, "MovFiltersTagsOrder", MovFiltersTagsOrder) 'cmbxMovFiltersTagsOrder
  1147. root.AppendChild(doc, "Original_Title", Original_Title ) 'chkbOriginal_Title
  1148. root.AppendChild(doc, "UseMultipleThreads", UseMultipleThreads ) 'cbUseMultipleThreads
  1149. root.AppendChildList(doc, "moviethumbpriority" , moviethumbpriority.ToArray) 'Button61,Button73
  1150. root.AppendChildList(doc, "releaseformat" , releaseformat ) 'btnVideoSourceAdd,btnVideoSourceRemove
  1151. root.AppendChildList(doc, "certificatepriority" , certificatepriority ) 'Button74,Button75
  1152. root.AppendChildList(doc, "movseplst", MovSepLst.ToArray) 'lb_MovSepLst
  1153. root.AppendChild(doc, "MovFiltLastSize", MovFiltLastSize) 'Preference.MovFiltLastSize
  1154. root.AppendChild(doc, "RenameSpaceCharacter", RenameSpaceCharacter) 'Preference.RenameSpaceCharacter
  1155. root.AppendChild(doc, "XbmcTmdbScraperFanart", XbmcTmdbScraperFanart) 'cbXbmcTmdbFanart
  1156. root.AppendChild(doc, "XbmcTmdbScraperTrailerQ", XbmcTmdbScraperTrailerQ) 'cmbxXbmcTmdbHDTrailer
  1157. root.AppendChild(doc, "XbmcTmdbScraperLanguage", XbmcTmdbScraperLanguage) 'cmbxXbmcTmdbTitleLanguage
  1158. root.AppendChild(doc, "XbmcTmdbScraperRatings", XbmcTmdbScraperRatings) 'cbXbmcTmdbIMDBRatings
  1159. root.AppendChild(doc, "XbmcTmdbScraperCertCountry", XbmcTmdbScraperCertCountry) '
  1160. root.AppendChild(doc, "AllowUserTags", AllowUserTags) 'cbAllowUserTags
  1161. root.AppendChild(doc, "keywordasTag", keywordasTag) 'cb_keywordasTag
  1162. root.AppendChild(doc, "keywordlimit", keywordlimit) 'cb_keywordlimit
  1163. root.AppendChild(doc, "TagRes", TagRes) 'cbTagRes
  1164. root.AppendChild(movie_filters.GetChild(doc))
  1165. 'TV Prefs ------------------------------------------------------------
  1166. root.AppendChild(doc, "tvshowautoquick", tvshowautoquick) 'cbTvQuickAddShow
  1167. root.AppendChild(doc, "copytvactorthumbs", copytvactorthumbs) 'CheckBox34
  1168. root.AppendChild(doc, "tvdbIMDbRating", tvdbIMDbRating) 'cbtvdbIMDbRating
  1169. root.AppendChild(doc, "tvdbmode", sortorder) 'RadioButton42
  1170. root.AppendChild(doc, "tvdbactorscrape", TvdbActorScrape) 'ComboBox8
  1171. root.AppendChild(doc, "tvfolderjpg", tvfolderjpg) 'cb_TvFolderJpg
  1172. root.AppendChild(doc, "seasonfolderjpg", seasonfolderjpg) 'cbseasonfolderjpg
  1173. root.AppendChild(doc, "downloadtvfanart", tvdlfanart) 'cbTvDlFanart
  1174. root.AppendChild(doc, "downloadtvposter", tvdlposter) 'cbTvDlPosterArt
  1175. root.AppendChild(doc, "downloadtvseasonthumbs", tvdlseasonthumbs) 'cbTvDlSeasonArt
  1176. root.AppendChild(doc, "TvDlFanartTvArt", TvDlFanartTvArt) 'cbTvDlFanartTvArt
  1177. root.AppendChild(doc, "TvFanartTvFirst", TvFanartTvFirst) 'cbTvFanartTvFirst
  1178. root.AppendChild(doc, "dlTVxtrafanart", dlTVxtrafanart) 'cbDlTVxtrafanart
  1179. root.AppendChild(doc, "TvXtraFanartQty", TvXtraFanartQty) 'cmbxTvXtraFanartQty
  1180. root.AppendChild(doc, "hdtvtags", enabletvhdtags) 'CheckBox20
  1181. root.AppendChild(doc, "disabletvlogs", disabletvlogs) 'CheckBox17
  1182. root.AppendChild(doc, "postertype", postertype) 'posterbtn
  1183. root.AppendChild(doc, "seasonall", seasonall) 'RadioButton39-41
  1184. root.AppendChild(doc, "tvrename", tvrename) 'ComboBox_tv_EpisodeRename
  1185. root.AppendChild(doc, "eprenamelowercase", eprenamelowercase) 'CheckBox_tv_EpisodeRenameCase
  1186. root.AppendChild(doc, "tvshowrefreshlog", tvshowrefreshlog) 'set from frmOptions - obsolete
  1187. root.AppendChild(doc, "autoepisodescreenshot", autoepisodescreenshot) 'cbTvAutoScreenShot
  1188. root.AppendChild(doc, "tvscrnshtTVDBResize", tvscrnshtTVDBResize) 'cbTvScrnShtTVDBResize
  1189. root.AppendChild(doc, "TVShowUseXBMCScraper", tvshow_useXBMC_Scraper) 'CheckBox_Use_XBMC_TVDB_Scraper
  1190. root.AppendChild(doc, "autorenameepisodes", autorenameepisodes) 'CheckBox_tv_EpisodeRenameAuto
  1191. root.AppendChild(doc, "TvRenameReplaceSpace", TvRenameReplaceSpace) 'cb_TvRenameReplaceSpace
  1192. root.AppendChild(doc, "TvRenameReplaceSpaceDot", TvRenameReplaceSpaceDot) 'rb_TvRenameReplaceSpaceDot, rb_TvRenameReplaceSpaceUnderScore
  1193. root.AppendChild(doc, "ScrShtDelay", ScrShtDelay) 'AutoScrShtDelay
  1194. root.AppendChild(doc, "lastrefreshmissingdate", lastrefreshmissingdate)
  1195. root.AppendChild(doc, "excludefromshowfoldername", excludefromshowfoldername)
  1196. root.AppendChild(doc, "TvMaxGenres", TvMaxGenres) 'cmbxTvMaxGenres
  1197. root.AppendChild(doc, "XBMCTVDbDvdOrder", XBMCTVDbDvdOrder) 'rbXBMCTvdbDVDOrder
  1198. root.AppendChild(doc, "XBMCTVDbAbsoluteNumber", XBMCTVDbAbsoluteNumber) 'rbXBMCTvdbAbsoluteNumber
  1199. root.AppendChild(doc, "XBMCTVDbFanart", XBMCTVDbFanart) 'cbXBMCTvdbFanart
  1200. root.AppendChild(doc, "XBMCTVDbPoster", XBMCTVDbPoster) 'cbXBMCTvdbPosters
  1201. root.AppendChild(doc, "XBMCTVDbLanguage", XBMCTVDbLanguage) 'ComboBox_TVDB_Language.Text
  1202. root.AppendChild(doc, "XBMCTVDbRatings", XBMCTVDbRatings) 'cbXBMCTvdbRatingImdb
  1203. root.AppendChild(doc, "XBMCTVDbfallback", XBMCTVDbfallback) 'cbXBMCTvdbRatingFallback
  1204. root.AppendChild(doc, "HmFanartScrnShot", HmFanartScrnShot) 'cb_HmFanartScrnShot
  1205. root.AppendChild(doc, "HmFanartTime", HmFanartTime) 'cbHmFanartTime
  1206. root.AppendChild(doc, "HmPosterTime", HmPosterTime) 'cbHmPosterTime
  1207. root.AppendChild(doc, "MVScraper", MVScraper) 'ucMusicVideo.rbscraper
  1208. root.AppendChild(doc, "MVsortorder", MVsortorder)
  1209. root.AppendChild(doc, "MVdefaultlist", MVdefaultlist)
  1210. root.AppendChild(doc, "MVPrefScrnSht", MVPrefScrnSht) 'tb_MVPrefScrnSht
  1211. root.AppendChild(doc, "MVPrefShowLog", MVPrefShowLog) 'cb_MVPrefShowLog
  1212. tempstring = TvdbLanguageCode & "|" & TvdbLanguage
  1213. root.AppendChild(doc, "tvdblanguage", tempstring) 'ListBox12,Button91
  1214. root.AppendChild(doc, "XBMC_Active", XBMC_Active)
  1215. root.AppendChild( doc, "XBMC_Link" , XBMC_Link )
  1216. root.AppendChild( doc, "XBMC_Address" , XBMC_Address )
  1217. root.AppendChild( doc, "XBMC_Port" , XBMC_Port ) 'cbXBMC_Active
  1218. root.AppendChild( doc, "XBMC_Username" , XBMC_Username )
  1219. root.AppendChild( doc, "XBMC_Password" , XBMC_Password )
  1220. root.AppendChild( doc, "XBMC_UserdataFolder" , XBMC_UserdataFolder )
  1221. root.AppendChild( doc, "XBMC_TexturesDb" , XBMC_TexturesDb )
  1222. root.AppendChild( doc, "XBMC_ThumbnailFolders" , XBMC_ThumbnailsFolder )
  1223. root.AppendChild( doc, "XBMC_Delete_Cached_Images" , XBMC_Delete_Cached_Images )
  1224. root.AppendChild( doc, "ShowExtraMovieFilters" , ShowExtraMovieFilters )
  1225. root.AppendChild( doc, "ExportXBMCPath" , ExportXBMCPath )
  1226. root.AppendChild(XBMC_MC_MovieFolderMappings.GetChild(doc))
  1227. root.AppendChild(XBMC_MC_CompareFields .GetChild(doc))
  1228. doc.AppendChild(root)
  1229. If String.IsNullOrEmpty(workingProfile.Config) Then
  1230. workingProfile.Config = IO.Path.Combine(applicationPath, "settings\config.xml")
  1231. End If
  1232. Dim output As XmlTextWriter = Nothing
  1233. Try
  1234. output = New XmlTextWriter(workingProfile.Config, System.Text.Encoding.UTF8)
  1235. output.Formatting = Formatting.Indented
  1236. doc.WriteTo(output)
  1237. Catch ex As Exception
  1238. Dim x = ex
  1239. Finally
  1240. If Not IsNothing(output) Then output.Close
  1241. End Try
  1242. Proxyreload()
  1243. End Sub
  1244. Public Shared Sub ConfigLoad()
  1245. commandlist.Clear()
  1246. moviesets.Clear()
  1247. moviesets.Add("-None-")
  1248. movietags.Clear()
  1249. movieFolders.Clear()
  1250. offlinefolders.Clear()
  1251. stubfolder = ""
  1252. tvFolders.Clear()
  1253. tvRootFolders.Clear()
  1254. tableview.Clear()
  1255. moviethumbpriority.Clear()
  1256. 'MovSepLst.Clear()
  1257. homemoviefolders.Clear()
  1258. MVidFolders.Clear()
  1259. MVConcertFolders.Clear()
  1260. custtvFolders.Clear()
  1261. movie_filters.Reset()
  1262. engineupdate()
  1263. ExcludeFolders.Clear()
  1264. If Not IO.File.Exists(workingProfile.Config) Then
  1265. Exit Sub
  1266. End If
  1267. Dim prefs As New XmlDocument
  1268. Try
  1269. prefs.Load(workingProfile.Config)
  1270. Catch ex As Exception
  1271. MsgBox("Error : pr24")
  1272. End Try
  1273. For Each thisresult As XmlNode In prefs("xbmc_media_companion_config_v1.0")
  1274. ' If thisresult.InnerText <> "" Then 'If blank, preference remains at default value
  1275. If thisresult.InnerXml <> "" Then 'If blank, preference remains at default value
  1276. Select Case thisresult.Name
  1277. Case "moviesets"
  1278. For Each thisset In thisresult.ChildNodes
  1279. Select Case thisset.Name
  1280. Case "set"
  1281. If thisset.InnerText <> "" Then moviesets.Add(thisset.InnerText)
  1282. End Select
  1283. Next
  1284. Case "movietags"
  1285. For Each thisset In thisresult.ChildNodes
  1286. Select Case thisset.Name
  1287. Case "tag"
  1288. If thisset.InnerText <> "" Then movietags.Add(thisset.InnerText)
  1289. End Select
  1290. Next
  1291. Case "table"
  1292. For Each thistable In thisresult.ChildNodes
  1293. Select Case thistable.Name
  1294. Case "tab"
  1295. tableview.Add(thistable.InnerText)
  1296. Case "sort"
  1297. tablesortorder = thistable.InnerText
  1298. End Select
  1299. Next
  1300. Case "comms"
  1301. Dim newcom As New str_ListOfCommands(SetDefaults)
  1302. For Each thistable In thisresult.ChildNodes
  1303. Select Case thistable.Name
  1304. Case "title"
  1305. newcom.title = thistable.InnerText
  1306. Case "command"
  1307. newcom.command = thistable.InnerText
  1308. End Select
  1309. Next
  1310. If newcom.command <> "" And newcom.title <> "" Then
  1311. commandlist.Add(newcom)
  1312. End If
  1313. Case "nfofolder"
  1314. Dim decodestring As String = decxmlchars(thisresult.InnerText)
  1315. Dim t() As String = decodestring.Split("|")
  1316. Dim u As New str_RootPaths
  1317. u.rpath = t(0)
  1318. If t.Count > 1 Then u.selected = t(1)
  1319. movieFolders.Add(u)
  1320. Case "stubfolder"
  1321. stubfolder = thisresult.InnerText
  1322. Case "stubmessage"
  1323. stubmessage = thisresult.InnerText
  1324. Case "offlinefolder"
  1325. Dim decodestring As String = decxmlchars(thisresult.InnerText)
  1326. offlinefolders.Add(decodestring)
  1327. Case "tvfolder"
  1328. Dim decodestring As String = decxmlchars(thisresult.InnerText)
  1329. tvFolders.Add(decodestring)
  1330. Case "tvrootfolder"
  1331. Dim decodestring As String = decxmlchars(thisresult.InnerText)
  1332. Dim t() As String = decodestring.Split("|")
  1333. Dim u As New str_RootPaths
  1334. u.rpath = t(0)
  1335. If t.Count > 1 Then u.selected = t(1)
  1336. tvRootFolders.Add(u)
  1337. Case "homemoviefolder"
  1338. Dim decodestring As String = decxmlchars(thisresult.InnerText)
  1339. Dim t() As String = decodestring.Split("|")
  1340. Dim u As New str_RootPaths
  1341. u.rpath = t(0)
  1342. If t.Count > 1 Then u.selected = t(1)
  1343. homemoviefolders.Add(u)
  1344. Case "MVidFolders"
  1345. Dim decodestring As String = decxmlchars(thisresult.InnerText)
  1346. Dim t() As String = decodestring.Split("|")
  1347. Dim u As New str_RootPaths
  1348. u.rpath = t(0)
  1349. If t.Count > 1 Then u.selected = t(1)
  1350. MVidFolders.Add(u)
  1351. Case "MVConcertFolders"
  1352. Dim decodestring As String = decxmlchars(thisresult.InnerText)
  1353. Dim t() As String = decodestring.Split("|")
  1354. Dim u As New str_RootPaths
  1355. u.rpath = t(0)
  1356. If t.Count > 1 Then u.selected = t(1)
  1357. MVConcertFolders.Add(u)
  1358. Case "custtvFolder"
  1359. Dim decodestring As String = decxmlchars(thisresult.InnerText)
  1360. custtvFolders.Add(decodestring)
  1361. Case "ExcludeFolders"
  1362. ExcludeFolders.Load(thisresult)
  1363. Case "moviethumbpriority"
  1364. Dim tmp() As String = thisresult.InnerXml.Split("|")
  1365. For Each t In tmp
  1366. If t = "Movie Poster DB" Then Continue For 'remove movieposterdb from users config.xml.
  1367. moviethumbpriority.Add(t)
  1368. Next
  1369. Case "movseplst"
  1370. Dim tmp() As String = thisresult.InnerXml.Split("|")
  1371. MovSepLst.Clear()
  1372. For Each t In tmp
  1373. MovSepLst.Add(t)
  1374. Next
  1375. Case "certificatepriority"
  1376. ReDim certificatepriority(33)
  1377. certificatepriority = thisresult.InnerXml.Split("|")
  1378. Case "releaseformat"
  1379. Dim count As Integer = 0
  1380. Dim index As Integer = 0
  1381. Do Until index < 0
  1382. count += 1
  1383. index = thisresult.InnerText.IndexOf("|"c, index + 1)
  1384. Loop
  1385. ReDim releaseformat(count)
  1386. releaseformat = thisresult.InnerXml.Split("|")
  1387. Case "tvdblanguage"
  1388. Dim partone() As String
  1389. partone = thisresult.InnerXml.Split("|")
  1390. For f = 0 To 1
  1391. If partone(0).Length = 2 Then
  1392. TvdbLanguageCode = partone(0)
  1393. TvdbLanguage = partone(1)
  1394. Exit For
  1395. Else
  1396. TvdbLanguageCode = partone(1)
  1397. TvdbLanguage = partone(0)
  1398. End If
  1399. Next
  1400. Case "TmdbActorsImdbScrape" : TmdbActorsImdbScrape = thisresult.InnerXml
  1401. Case "ImdbPrimaryPlot" : ImdbPrimaryPlot = thisresult.InnerXml
  1402. Case "MovImdbFirstRunTime" : MovImdbFirstRunTime = thisresult.InnerXml
  1403. Case "MovImdbAspectRatio" : MovImdbAspectRatio = thisresult.InnerXml
  1404. 'Case "xbmcscraper" : XBMC_Scraper = thisresult.InnerText - locked at "tmdb"
  1405. Case "XbmcTmdbRenameMovie" : XbmcTmdbRenameMovie = thisresult.InnerText
  1406. Case "XbmcTmdbMissingFromImdb" : XbmcTmdbMissingFromImdb = thisresult.InnerText
  1407. Case "XbmcTmdbTop250FromImdb" : XbmcTmdbTop250FromImdb = thisresult.InnerText
  1408. Case "XbmcTmdbVotesFromImdb" : XbmcTmdbVotesFromImdb = thisresult.InnerText
  1409. Case "XbmcTmdbCertFromImdb" : XbmcTmdbCertFromImdb = thisresult.InnerText
  1410. Case "XbmcTmdbStarsFromImdb" : XbmcTmdbStarsFromImdb = thisresult.InnerText
  1411. Case "XbmcTmdbAkasFromImdb" : XbmcTmdbAkasFromImdb = thisresult.InnerText
  1412. Case "XbmcTmdbAspectFromImdb" : XbmcTmdbAspectFromImdb = thisresult.InnerXml
  1413. Case "XbmcTmdbMetascoreFromImdb" : XbmcTmdbMetascoreFromImdb = thisresult.InnerXml
  1414. Case "XbmcTmdbActorDL" : XbmcTmdbActorDL = thisresult.InnerText
  1415. Case "XbmcTmdbActorFromImdb" : XbmcTmdbActorFromImdb = thisresult.InnerText
  1416. Case "XbmcTmdbGenreFromImdb" : XbmcTmdbGenreFromImdb = thisresult.InnerXml
  1417. Case "seasonall" : seasonall = thisresult.InnerText
  1418. Case "splitcontainer1" : splt1 = Convert.ToInt32(thisresult.InnerText)
  1419. Case "splitcontainer2" : splt2 = Convert.ToInt32(thisresult.InnerText)
  1420. Case "splitcontainer3" : splt3 = Convert.ToInt32(thisresult.InnerText)
  1421. Case "splitcontainer4" : splt4 = Convert.ToInt32(thisresult.InnerText)
  1422. Case "splitcontainer5" : splt5 = Convert.ToInt32(thisresult.InnerText)
  1423. Case "splitcontainer6" : splt6 = Convert.ToInt32(thisresult.InnerText)
  1424. Case "tvbannersplit" : tvbannersplit = Convert.ToDouble(thisresult.InnerText)
  1425. Case "maximised" : maximised = thisresult.InnerXml
  1426. Case "locx" : locx = Convert.ToInt32(thisresult.InnerText)
  1427. Case "locy" : locy = Convert.ToInt32(thisresult.InnerText)
  1428. Case "gettrailer" : gettrailer = thisresult.InnerXml
  1429. Case "DownloadTrailerDuringScrape" : DownloadTrailerDuringScrape = thisresult.InnerXml
  1430. Case "tvshowautoquick" : tvshowautoquick = thisresult.InnerXml
  1431. Case "intruntime" : intruntime = thisresult.InnerXml
  1432. Case "GenreCustomBefore" : GenreCustomBefore = thisresult.InnerXml
  1433. Case "CustomTmdbApiKey" : CustomTmdbApiKey = thisresult.InnerText
  1434. Case "MovNfoWatchTag" : MovNfoWatchTag = thisresult.InnerXml
  1435. Case "startupcache" : startupCache = thisresult.InnerXml
  1436. Case "ignoretrailers" : ignoretrailers = thisresult.InnerXml
  1437. Case "ignoreactorthumbs" : ignoreactorthumbs = thisresult.InnerXml
  1438. Case "font" : font = thisresult.InnerXml
  1439. Case "maxactors" : maxactors = Convert.ToInt32(thisresult.InnerXml)
  1440. Case "MovTagBlacklist" : MovTagBlacklist = thisresult.InnerText
  1441. Case "maxmoviegenre" : maxmoviegenre = Convert.ToInt32(thisresult.InnerXml)
  1442. Case "enablehdtags" : enablehdtags = thisresult.InnerXml
  1443. Case "MovDurationAsRuntine" : MovDurationAsRuntine = thisresult.InnerXml
  1444. Case "MovRuntimeAsDuration" : MovRuntimeAsDuration = thisresult.InnerXml
  1445. Case "movieruntimedisplay" : movieRuntimeDisplay = thisresult.InnerXml
  1446. Case "movieRuntimeFallbackToFile" : movieRuntimeFallbackToFile = thisresult.InnerXml
  1447. Case "hdtvtags" : enabletvhdtags = thisresult.InnerXml
  1448. Case "renamenfofiles" : renamenfofiles = thisresult.InnerXml
  1449. Case "logview" : logview = thisresult.InnerXml
  1450. Case "fanartnotstacked" : fanartnotstacked = thisresult.InnerXml
  1451. Case "posternotstacked" : posternotstacked = thisresult.InnerXml
  1452. Case "scrapemovieposters" : scrapemovieposters = thisresult.InnerXml
  1453. Case "movrootfoldercheck" : movrootfoldercheck = thisresult.InnerXml
  1454. Case "posterjpg" : posterjpg = thisresult.InnerXml
  1455. Case "usefanart" : usefanart = thisresult.InnerXml
  1456. Case "dontdisplayposter" : dontdisplayposter = thisresult.InnerXml
  1457. Case "rarsize" : rarsize = Convert.ToInt32(thisresult.InnerXml)
  1458. Case "actorsave" : actorsave = thisresult.InnerXml
  1459. Case "actorseasy" : actorseasy = thisresult.InnerXml
  1460. Case "copytvactorthumbs" : copytvactorthumbs = thisresult.InnerXml
  1461. Case "tvdbIMDbRating" : tvdbIMDbRating = thisresult.InnerXml
  1462. Case "displayMissingEpisodes" : displayMissingEpisodes = thisresult.InnerXml
  1463. Case "ignoreMissingSpecials" : ignoreMissingSpecials = thisresult.InnerXml
  1464. Case "TvMissingEpOffset" : TvMissingEpOffset = thisresult.InnerXml
  1465. Case "actorsavepath" : actorsavepath = decxmlchars(thisresult.InnerText)
  1466. Case "actorsavealpha" : actorsavealpha = thisresult.InnerXml
  1467. Case "actornetworkpath" : actornetworkpath = decxmlchars(thisresult.InnerText)
  1468. Case "overwritethumbs" : overwritethumbs = thisresult.InnerXml
  1469. Case "LocalActorImage" : LocalActorImage = thisresult.InnerText
  1470. Case "imdbmirror" : imdbmirror = thisresult.InnerXml
  1471. Case "cleantags" : moviecleanTags = thisresult.InnerXml
  1472. Case "ignoreparts" : movieignorepart = thisresult.InnerXml
  1473. Case "backgroundcolour" : backgroundcolour = thisresult.InnerXml
  1474. Case "forgroundcolour" : forgroundcolour = thisresult.InnerXml
  1475. Case "remembersize" : remembersize = thisresult.InnerXml
  1476. Case "formheight" : formheight = Convert.ToInt32(thisresult.InnerXml)
  1477. Case "formwidth" : formwidth = Convert.ToInt32(thisresult.InnerXml)
  1478. Case "usefoldernames" : usefoldernames = thisresult.InnerXml
  1479. Case "movxtrathumb" : movxtrathumb = thisresult.InnerXml
  1480. Case "movxtrafanart" : movxtrafanart = thisresult.InnerXml
  1481. Case "movxtrafanartqty" : movxtrafanartqty = thisresult.InnerXml
  1482. Case "dlxtrafanart" : dlxtrafanart = thisresult.InnerXml
  1483. Case "dlMovSetArtwork" : dlMovSetArtwork = thisresult.InnerXml
  1484. Case "MovCustFolderjpgNoDelete" : MovCustFolderjpgNoDelete = thisresult.InnerXml
  1485. Case "MovCustPosterjpgNoDelete" : MovCustPosterjpgNoDelete = thisresult.InnerXml
  1486. Case "MovSetArtSetFolder" : MovSetArtSetFolder = thisresult.InnerXml
  1487. Case "MovSetArtCentralFolder" : MovSetArtCentralFolder = thisresult.InnerText
  1488. Case "dlTVxtrafanart" : dlTVxtrafanart = thisresult.InnerXml
  1489. Case "TvXtraFanartQty" : TvXtraFanartQty = thisresult.InnerXml
  1490. Case "TvDlFanartTvArt" : TvDlFanartTvArt = thisresult.InnerXml
  1491. Case "TvFanartTvFirst" : TvFanartTvFirst = thisresult.InnerXml
  1492. Case "allfolders" : allfolders = thisresult.InnerXml
  1493. Case "createfolderjpg" : createfolderjpg = thisresult.InnerXml
  1494. Case "createfanartjpg" : createfanartjpg = thisresult.InnerXml
  1495. Case "basicsavemode" : basicsavemode = thisresult.InnerXml
  1496. Case "namemode" : namemode = thisresult.InnerXml
  1497. Case "tvdbmode" : sortorder = thisresult.InnerXml
  1498. Case "tvdbactorscrape" : TvdbActorScrape = Convert.ToInt32(thisresult.InnerXml)
  1499. Case "usetransparency" : usetransparency = thisresult.InnerXml
  1500. Case "transparencyvalue" : transparencyvalue = Convert.ToInt32(thisresult.InnerXml)
  1501. Case "downloadtvfanart" : tvdlfanart = thisresult.InnerXml
  1502. Case "tvfolderjpg" : tvfolderjpg = thisresult.InnerXml
  1503. Case "seasonfolderjpg" : seasonfolderjpg = thisresult.InnerXml
  1504. Case "roundminutes" : roundminutes = thisresult.InnerXml
  1505. Case "autoepisodescreenshot" : autoepisodescreenshot = thisresult.InnerXml
  1506. Case "tvscrnshtTVDBResize" : tvscrnshtTVDBResize = thisresult.InnerXml
  1507. Case "ignorearticle" : ignorearticle = thisresult.InnerXml
  1508. Case "ignoreAarticle" : ignoreAarticle = thisresult.InnerXml
  1509. Case "ignoreAn" : ignoreAn = thisresult.InnerXml
  1510. Case "sorttitleignorearticle" : sorttitleignorearticle = thisresult.InnerXml
  1511. Case "MovSetTitleIgnArticle" : MovSetTitleIgnArticle = thisresult.InnerXml
  1512. Case "MovPosterTabTMDBSelect" : MovPosterTabTMDBSelect = thisresult.InnerXml
  1513. Case "TVShowUseXBMCScraper" : tvshow_useXBMC_Scraper = thisresult.InnerXml
  1514. Case "moviesUseXBMCScraper" : movies_useXBMC_Scraper = thisresult.InnerXml
  1515. Case "downloadtvposter" : tvdlposter = thisresult.InnerXml
  1516. Case "downloadtvseasonthumbs" : tvdlseasonthumbs = thisresult.InnerXml
  1517. Case "maximumthumbs" : maximumthumbs = Convert.ToInt32(thisresult.InnerXml)
  1518. Case "lastrefreshmissingdate" : lastrefreshmissingdate = thisresult.InnerText
  1519. Case "excludefromshowfoldername" : excludefromshowfoldername = thisresult.InnerText
  1520. Case "TvMaxGenres" : TvMaxGenres = Convert.ToInt32(thisresult.InnerXml)
  1521. Case "XBMCTVDbDvdOrder" : XBMCTVDbDvdOrder = thisresult.InnerXml
  1522. Case "XBMCTVDbAbsoluteNumber" : XBMCTVDbAbsoluteNumber = thisresult.InnerXml
  1523. Case "XBMCTVDbFanart" : XBMCTVDbFanart = thisresult.InnerXml
  1524. Case "XBMCTVDbPoster" : XBMCTVDbPoster = thisresult.InnerXml
  1525. Case "XBMCTVDbLanguage" : XBMCTVDbLanguage = thisresult.InnerText
  1526. Case "XBMCTVDbRatings" : XBMCTVDbRatings = thisresult.InnerText
  1527. Case "XBMCTVDbfallback" : XBMCTVDbfallback = thisresult.InnerXml
  1528. Case "HmFanartScrnShote" : HmFanartScrnShot = thisresult.InnerXml
  1529. Case "HmFanartTime" : HmFanartTime = thisresult.InnerText
  1530. Case "HmPosterTime" : HmPosterTime = thisresult.InnerText
  1531. Case "MVScraper" : MVScraper = thisresult.InnerText
  1532. Case "MVsortorder" : MVsortorder = thisresult.InnerXml
  1533. Case "MVdefaultlist" : MVdefaultlist = thisresult.InnerXml
  1534. Case "MVPrefScrnSht" : MVPrefScrnSht = thisresult.InnerXml
  1535. Case "MVPrefShowLog" : MVPrefShowLog = thisresult.InnerXml
  1536. Case "preferredscreen" : preferredscreen = Convert.ToInt32(thisresult.InnerXml)
  1537. Case "hdtags" : enablehdtags = thisresult.InnerXml
  1538. Case "NoAltTitle" : NoAltTitle = thisresult.InnerXml
  1539. Case "XtraFrodoUrls" : XtraFrodoUrls = thisresult.InnerXml
  1540. Case "disablelogs" : disablelogfiles = thisresult.InnerXml
  1541. Case "AutoHideStatusBar" : AutoHideStatusBar = thisresult.InnerXml
  1542. Case "DisplayRatingOverlay" : DisplayRatingOverlay = thisresult.InnerXml
  1543. Case "DisplayMediainfoOverlay" : DisplayMediainfoOverlay = thisresult.InnerXml
  1544. Case "DisplayMediaInfoFolderSize" : DisplayMediaInfoFolderSize = thisresult.InnerXml
  1545. Case "EnableFolderSize" : EnableFolderSize = thisresult.InnerXml
  1546. Case "incmissingmovies" : incmissingmovies = thisresult.InnerText
  1547. Case "disabletvlogs" : disabletvlogs = thisresult.InnerXml
  1548. Case "folderjpg" : createfolderjpg = thisresult.InnerXml
  1549. Case "savefanart" : savefanart = thisresult.InnerXml
  1550. Case "movfanarttvscrape" : MovFanartTvscrape = thisresult.InnerXml
  1551. Case "MovFanartNaming" : MovFanartNaming = thisresult.InnerXml
  1552. Case "MovFanartTvDlClearArt" : MovFanartTvDlClearArt = thisresult.InnerXml
  1553. Case "MovFanartTvDlClearLogo" : MovFanartTvDlClearLogo = thisresult.InnerXml
  1554. Case "MovFanartTvDlPoster" : MovFanartTvDlPoster = thisresult.InnerXml
  1555. Case "MovFanartTvDlFanart" : MovFanartTvDlFanart = thisresult.InnerXml
  1556. Case "MovFanartTvDlDisc" : MovFanartTvDlDisc = thisresult.InnerXml
  1557. Case "MovFanartTvDlBanner" : MovFanartTvDlBanner = thisresult.InnerXml
  1558. Case "MovFanartTvDlLandscape" : MovFanartTvDlLandscape = thisresult.InnerXml
  1559. Case "fanartjpg" : fanartjpg = thisresult.InnerXml
  1560. Case "postertype" : postertype = thisresult.InnerXml
  1561. Case "videomode" : videomode = Convert.ToInt32(thisresult.InnerXml)
  1562. Case "selectedvideoplayer" : selectedvideoplayer = thisresult.InnerXml
  1563. Case "maximagecount" : maximagecount = Convert.ToInt32(thisresult.InnerXml)
  1564. Case "lastpath" : lastpath = thisresult.InnerXml
  1565. Case "moviescraper" : moviescraper = thisresult.InnerXml
  1566. Case "nfoposterscraper" : nfoposterscraper = thisresult.InnerXml
  1567. Case "alwaysuseimdbid" : alwaysuseimdbid = thisresult.InnerXml
  1568. Case "externalbrowser" : externalbrowser = thisresult.InnerXml
  1569. Case "selectedBrowser" : selectedBrowser = thisresult.InnerXml
  1570. Case "altnfoeditor" : altnfoeditor = thisresult.InnerXml
  1571. Case "tvrename" : tvrename = Convert.ToInt32(thisresult.InnerText)
  1572. Case "tvshowrefreshlog" : tvshowrefreshlog = thisresult.InnerXml
  1573. Case "autorenameepisodes" : autorenameepisodes = thisresult.InnerXml
  1574. Case "eprenamelowercase" : eprenamelowercase = thisresult.InnerXml
  1575. Case "TvRenameReplaceSpace" : TvRenameReplaceSpace = thisresult.InnerXml
  1576. Case "TvRenameReplaceSpaceDot" :TvRenameReplaceSpaceDot = thisresult.InnerXml
  1577. Case "ScrShtDelay" : ScrShtDelay = Convert.ToInt32(thisresult.InnerXml)
  1578. Case "moviedefaultlist" : moviedefaultlist = Convert.ToByte(thisresult.InnerText)
  1579. Case "startuptab" : startuptab = Convert.ToByte(thisresult.InnerText)
  1580. Case "offlinemovielabeltext" : OfflineDVDTitle = thisresult.InnerText
  1581. Case "moviemanualrename" : MovieManualRename = thisresult.InnerXml
  1582. Case "MovieRenameEnable" : MovieRenameEnable = thisresult.InnerXml
  1583. Case "movierenametemplate" : MovieRenameTemplate = thisresult.InnerText
  1584. Case "MovFolderRename" : MovFolderRename = thisresult.InnerText
  1585. Case "MovFolderRenameTemplate" : MovFolderRenameTemplate = thisresult.InnerText
  1586. Case "MovNewFolderInRootFolder" : MovNewFolderInRootFolder = thisresult.InnerXml
  1587. Case "MovRenameUnderscore" : MovRenameSpaceCharacter = thisresult.InnerText
  1588. Case "MovSetIgnArticle" : MovSetIgnArticle = thisresult.InnerXml
  1589. Case "MovSortIgnArticle" : MovSortIgnArticle = thisresult.InnerXml
  1590. Case "MovTitleIgnArticle" : MovTitleIgnArticle = thisresult.InnerXml
  1591. Case "MovTitleCase" : MovTitleCase = thisresult.InnerXml
  1592. Case "ExcludeMpaaRated" : ExcludeMpaaRated = thisresult.InnerXml
  1593. Case "IncludeMpaaRated" : IncludeMpaaRated = thisresult.InnerXml
  1594. Case "MovThousSeparator" : MovThousSeparator = thisresult.InnerXml
  1595. Case "showsortdate" : showsortdate = thisresult.InnerText
  1596. Case "scrapefullcert" : scrapefullcert = thisresult.InnerXml
  1597. Case "MovCertRemovePhrase" : MovCertRemovePhrase = thisresult.InnerXml
  1598. Case "moviePreferredHDTrailerResolution" : moviePreferredTrailerResolution = thisresult.InnerXml.ToUpper()
  1599. Case "MovieImdbGenreRegEx" : MovieImdbGenreRegEx = decxmlchars(thisresult.InnerXml)
  1600. Case "xbmcartwork" : XBMC_version = Convert.ToByte(thisresult.InnerText)
  1601. Case "GetMovieSetFromTMDb" : GetMovieSetFromTMDb = thisresult.InnerXml
  1602. Case "LogScrapeTimes" : LogScrapeTimes = thisresult.InnerXml
  1603. Case "ScrapeTimingsLogThreshold" : ScrapeTimingsLogThreshold = thisresult.InnerXml
  1604. Case "TMDbSelectedLanguage" : TMDbSelectedLanguageName = thisresult.InnerXml
  1605. Case "TMDbUseCustomLanguage" : TMDbUseCustomLanguage = thisresult.InnerXml
  1606. Case "TMDbCustomLanguage" : TMDbCustomLanguageValue = thisresult.InnerXml
  1607. Case "ActorResolution" : ActorResolutionSI = thisresult.InnerXml
  1608. Case "PosterResolution" : PosterResolutionSI = thisresult.InnerXml
  1609. Case "BackDropResolution" : BackDropResolutionSI = thisresult.InnerXml
  1610. Case "ShowMovieGridToolTip" : ShowMovieGridToolTip = thisresult.InnerXml
  1611. Case "ShowLogOnError" : ShowLogOnError = thisresult.InnerXml
  1612. Case "DateFormat" : DateFormat = thisresult.InnerXml
  1613. Case "MovieList_ShowColPlot" : MovieList_ShowColPlot = thisresult.InnerXml
  1614. Case "DisableNotMatchingRenamePattern" : DisableNotMatchingRenamePattern = thisresult.InnerXml
  1615. Case "MovieList_ShowColWatched" : MovieList_ShowColWatched = thisresult.InnerXml
  1616. Case "moviesortorder" : moviesortorder = thisresult.InnerXml
  1617. Case "movieinvertorder" : movieinvertorder = thisresult.InnerXml
  1618. Case "MovieScraper_MaxStudios" : MovieScraper_MaxStudios = thisresult.InnerXml
  1619. Case "MovFiltLastSize" : MovFiltLastSize = thisresult.InnerXml
  1620. Case "RenameSpaceCharacter" : RenameSpaceCharacter = thisresult.InnerText
  1621. Case "XbmcTmdbScraperFanart" : XbmcTmdbScraperFanart = thisresult.InnerText
  1622. Case "XbmcTmdbScraperTrailerQ" : XbmcTmdbScraperTrailerQ = thisresult.InnerText
  1623. Case "XbmcTmdbScraperLanguage" : XbmcTmdbScraperLanguage = thisresult.InnerText
  1624. Case "XbmcTmdbScraperRatings" : XbmcTmdbScraperRatings = thisresult.InnerText
  1625. Case "XbmcTmdbScraperCertCountry" : XbmcTmdbScraperCertCountry = thisresult.InnerText
  1626. Case "AllowUserTags" : AllowUserTags = thisresult.InnerText
  1627. Case "keywordasTag" : keywordasTag = thisresult.InnerXml
  1628. Case "keywordlimit" : keywordlimit = Convert.ToInt32(thisresult.InnerXml)
  1629. Case "TagRes" : TagRes = thisresult.InnerXml
  1630. Case "ActorsFilterMinFilms" : ActorsFilterMinFilms = thisresult.InnerXml
  1631. Case "MaxActorsInFilter" : MaxActorsInFilter = thisresult.InnerXml
  1632. Case "MovieFilters_Actors_Order" : MovieFilters_Actors_Order = thisresult.InnerXml
  1633. Case "DirectorsFilterMinFilms" : DirectorsFilterMinFilms = thisresult.InnerXml
  1634. Case "MaxDirectorsInFilter" : MaxDirectorsInFilter = thisresult.InnerXml
  1635. Case "MovieFilters_Directors_Order" : MovieFilters_Directors_Order = thisresult.InnerXml
  1636. Case "SetsFilterMinFilms" : SetsFilterMinFilms = thisresult.InnerXml
  1637. Case "MaxSetsInFilter" : MaxSetsInFilter = thisresult.InnerXml
  1638. Case "MovieFilters_Sets_Order" : MovieFilters_Sets_Order = thisresult.InnerXml
  1639. Case "MinTagsInFilter" : MinTagsInFilter = thisresult.InnerXml
  1640. Case "MaxTagsInFilter" : MaxTagsInFilter = thisresult.InnerXml
  1641. Case "MovFiltersTagsOrder" : MovFiltersTagsOrder = thisresult.InnerXml
  1642. Case "Original_Title" : Original_Title = thisresult.InnerXml
  1643. Case "UseMultipleThreads" : UseMultipleThreads = thisresult.InnerXml
  1644. Case "movie_filters" : movie_filters.Load(thisresult)
  1645. Case "CheckForNewVersion" : CheckForNewVersion = thisresult.InnerXml
  1646. Case "CloseMCForDLNewVersion" : CloseMCForDLNewVersion = thisresult.InnerXml
  1647. Case "MkvMergeGuiPath" : MkvMergeGuiPath = thisresult.InnerXml
  1648. Case "prxyEnabled" : prxyEnabled = thisresult.InnerText.ToLower
  1649. Case "prxyIp" : prxyIp = thisresult.InnerText
  1650. Case "prxyPort" : prxyPort = thisresult.InnerText
  1651. Case "prxyUsername" : prxyUsername = thisresult.InnerText
  1652. Case "prxyPassword" : prxyPassword = thisresult.InnerText
  1653. 'Link properties
  1654. Case "XBMC_Active" : XBMC_Active = thisresult.InnerXml
  1655. Case "XBMC_Link" : XBMC_Link = thisresult.InnerXml
  1656. Case "XBMC_Address" : XBMC_Address = thisresult.InnerXml
  1657. Case "XBMC_Port" : XBMC_Port = thisresult.InnerXml
  1658. Case "XBMC_Username" : XBMC_Username = thisresult.InnerXml
  1659. Case "XBMC_Password" : XBMC_Password = thisresult.InnerXml
  1660. Case "XBMC_UserdataFolder" : XBMC_UserdataFolder = thisresult.InnerXml
  1661. Case "XBMC_TexturesDb" : XBMC_TexturesDb = thisresult.InnerXml
  1662. Case "XBMC_ThumbnailsFolder" : XBMC_ThumbnailsFolder = thisresult.InnerXml
  1663. Case "XBMC_Delete_Cached_Images" : XBMC_Delete_Cached_Images = thisresult.InnerXml
  1664. Case "XBMC_MC_MovieFolderMappings" : XBMC_MC_MovieFolderMappings.Load(thisresult)
  1665. Case "XBMC_MC_CompareFields" : XBMC_MC_CompareFields .Load(thisresult)
  1666. Case "ShowExtraMovieFilters" : ShowExtraMovieFilters = thisresult.InnerXml
  1667. Case "ShowAllAudioTracks" : ShowAllAudioTracks = thisresult.InnerXml
  1668. Case "DisplayDefaultSubtitleLang" : DisplayDefaultSubtitleLang = thisresult.InnerXml
  1669. Case "DisplayAllSubtitleLang" : DisplayAllSubtitleLang = thisresult.InnerXml
  1670. Case "ExportXBMCPath" : ExportXBMCPath = thisresult.InnerText
  1671. Case Else : Dim x = thisresult
  1672. End Select
  1673. End If
  1674. Next
  1675. If Not String.IsNullOrEmpty(MkvMergeGuiPath) Then
  1676. If Not IO.File.Exists(MkvMergeGuiPath) Then
  1677. MkvMergeGuiPath = ""
  1678. End If
  1679. End If
  1680. If Not MovSepLst.Contains("3DTAB") Then MovSepLst.Insert(0,"3DTAB")
  1681. If Not MovSepLst.Contains("3DSBS") Then MovSepLst.Insert(0,"3DSBS")
  1682. If maxmoviegenre > 99 Then maxmoviegenre = 99 'Fix original setting of maxmoviegenre All Available was 9999
  1683. Proxyreload()
  1684. XBMC_MC_MovieFolderMappings.IniFolders
  1685. Utilities.TMDBAPI = Pref.CustomTmdbApiKey
  1686. End Sub
  1687. Public Shared Sub util_RegexSetDefaultScraper()
  1688. tv_RegexScraper.Clear()
  1689. tv_RegexScraper.Add("[Ss]([\d]{1,4}).?[Ee]([\d]{1,4})")
  1690. tv_RegexScraper.Add("([\d]{1,4}).?[Ee]([\d]{1,4})")
  1691. tv_RegexScraper.Add("([\d]{1,4}) ?[xX] ?([\d]{1,4})")
  1692. tv_RegexScraper.Add("([0-9]+)([0-9][0-9])")
  1693. tv_RegexScraper.Add("([\d]{1,2})\.([\d]{2})")
  1694. End Sub
  1695. Public Shared Sub util_RegexSetDefaultRename()
  1696. tv_RegexRename.Clear()
  1697. tv_RegexRename.Add("Show Title - S01E01 - Episode Title.ext")
  1698. tv_RegexRename.Add("S01E01 - Episode Title.ext")
  1699. tv_RegexRename.Add("Show Title - 1x01 - Episode Title.ext")
  1700. tv_RegexRename.Add("1x01 - Episode Title.ext")
  1701. tv_RegexRename.Add("Show Title - 101 - Episode Title.ext")
  1702. tv_RegexRename.Add("101 - Episode Title.ext")
  1703. End Sub
  1704. Public Shared Function decxmlchars(ByVal line As String) As String
  1705. line = line.Replace("&amp;", "&")
  1706. line = line.Replace("&lt;", "<")
  1707. line = line.Replace("&gt;", ">")
  1708. line = line.Replace("&quot;", "Chr(34)")
  1709. line = line.Replace("&apos;", "'")
  1710. line = line.Replace("&#xA;", vbCrLf)
  1711. Return line
  1712. End Function
  1713. '
  1714. '' The IIF statements below are required because Pref.sorttitleignorearticle is assigned from cb_SorttitleIgnoreArticles
  1715. '' which has it's text property set to "Move Ignored articles to end of Sort Title" i.e. the variable names are misleading
  1716. '
  1717. 'Above ammended as removed Ignored Articles and not appended from Movie Title unless Pref.sorttitleignorearticle as Also True.
  1718. '
  1719. Public Shared Function RemoveIgnoredArticles(ByVal s As String, Optional Force As Boolean = False) As String
  1720. If String.IsNullOrEmpty(s) Then Return s
  1721. If (ignorearticle OrElse Force) AndAlso s.ToLower.IndexOf("the ") = 0 Then
  1722. s = s.Substring(4, s.Length - 4) & ", The" 'IIf(Pref.sorttitleignorearticle,", The","")
  1723. End If
  1724. If (ignoreAn OrElse Force) AndAlso s.ToLower.IndexOf("an ") = 0 Then
  1725. s = s.Substring(3, s.Length - 3) & ", An" 'IIf(Pref.sorttitleignorearticle,", An","")
  1726. End If
  1727. If (ignoreAarticle OrElse Force) AndAlso s.ToLower.IndexOf("a ") = 0 Then
  1728. s = s.Substring(2, s.Length - 2) & ", A" 'IIf(Pref.sorttitleignorearticle,", A","")
  1729. End If
  1730. Return s
  1731. End Function
  1732. Public Shared Function TrailerExists(NfoPathPrefName As String) As Boolean
  1733. Return IO.File.Exists(ActualTrailerPath(NfoPathPrefName))
  1734. End Function
  1735. Public Shared Function FanartExists(NfoPathPrefName As String) As Boolean
  1736. If Pref.FrodoEnabled AndAlso IO.Path.GetFileName(NfoPathPrefName).ToLower = "video_ts.nfo" Then
  1737. NfoPathPrefName = Utilities.RootVideoTsFolder(NfoPathPrefName)
  1738. Return IO.File.Exists(NfoPathPrefName + "fanart.jpg")
  1739. End If
  1740. Return IO.File.Exists(Pref.GetFanartPath(NfoPathPrefName))
  1741. End Function
  1742. Public Shared Function PosterExists(NfoPathPrefName As String) As Boolean
  1743. If Pref.FrodoEnabled AndAlso IO.Path.GetFileName(NfoPathPrefName).ToLower = "video_ts.nfo" Then
  1744. NfoPathPrefName = Utilities.RootVideoTsFolder(NfoPathPrefName)
  1745. Return IO.File.Exists(NfoPathPrefName + "poster.jpg")
  1746. End If
  1747. If Not Pref.EdenEnabled AndAlso Pref.posterjpg AndAlso Not GetRootFolderCheck(NfoPathPrefName) Then
  1748. Return IO.File.Exists(IO.Path.GetDirectoryName(NfoPathPrefName) & "\poster.jpg")
  1749. End If
  1750. Return IO.File.Exists(Pref.GetPosterPath(NfoPathPrefName))
  1751. End Function
  1752. Public Shared Function GetMissingData(NfoPathPrefName As String) As Byte
  1753. Dim MissingData As Byte = 0
  1754. If Not Pref.FanartExists (NfoPathPrefName) Then MissingData += 1
  1755. If Not Pref.PosterExists (NfoPathPrefName) Then MissingData += 2
  1756. If Not Pref.TrailerExists(NfoPathPrefName) Then MissingData += 4
  1757. Return MissingData
  1758. End Function
  1759. Public Shared Function ActualTrailerPath(NfoPathPrefName As String) As String
  1760. Dim s = NfoPathPrefName
  1761. Dim FileName As String = ""
  1762. For each tra In Utilities.acceptedtrailernaming
  1763. For each extn In Utilities.TrailerExtensions
  1764. FileName = IO.Path.Combine(s.Replace(IO.Path.GetFileName(s), ""), Path.GetFileNameWithoutExtension(s) & tra & extn)
  1765. If IO.File.Exists(FileName) Then Return FileName
  1766. Next
  1767. Next
  1768. 'For Each item In "mp4,flv,webm,mov,m4v".Split(",")
  1769. ' FileName = IO.Path.Combine(s.Replace(IO.Path.GetFileName(s), ""), Path.GetFileNameWithoutExtension(s) & "-trailer." & item)
  1770. ' If IO.File.Exists(FileName) Then Return FileName
  1771. 'Next
  1772. Return IO.Path.Combine(s.Replace(IO.Path.GetFileName(s), ""), Path.GetFileNameWithoutExtension(s) & "-trailer.flv")
  1773. End Function
  1774. Public Shared Function GetActorPath(ByVal FullPath As String, ByVal ActorName As String, ByVal actorid As String) As String
  1775. If String.IsNullOrEmpty(FullPath) or String.IsNullOrEmpty(ActorName) Then Return ""
  1776. Dim Path As String = FullPath.Replace(IO.Path.GetFileName(FullPath), "") & ".actors\" & ActorName.Replace(" ", "_")
  1777. Dim Path2 As String = ""
  1778. If Pref.actorsave AndAlso actorid <> "" Then
  1779. If Pref.actorsavealpha Then
  1780. Path2 = Pref.actorsavepath & "\" & ActorName.Substring(0,1) & "\" & ActorName.Replace(" ", "_") & "_" & actorid
  1781. Else
  1782. Path2 = Pref.actorsavepath & "\" & actorid.Substring(actorid.Length - 2, 2) & "\" & actorid
  1783. End If
  1784. If IO.File.Exists(Path2 & ".jpg") Then Return Path2 & ".jpg"
  1785. If IO.File.Exists(Path2 & ".tbn") Then Return Path2 & ".tbn"
  1786. End If
  1787. If Pref.FrodoEnabled And IO.File.Exists(Path & ".jpg") Then Return Path & ".jpg"
  1788. If Pref.EdenEnabled And IO.File.Exists(Path & ".tbn") Then Return Path & ".tbn"
  1789. If IO.File.Exists(Path & ".jpg") Then Return Path & ".jpg"
  1790. Return Path & ".tbn"
  1791. End Function
  1792. Public Shared Function GetPosterPath(ByVal FullPath As String, Optional ByVal MovFilePath As String = Nothing) As String
  1793. Dim posterpath As String = FullPath
  1794. If Not String.IsNullOrEmpty(MovFilePath) AndAlso (Pref.FrodoEnabled AndAlso MovFilePath.ToLower.Contains("video_ts.nfo") OrElse MovFilePath.ToLower.Contains("index.nfo")) Then
  1795. Dim dvdbdpath As String = Utilities.RootVideoTsFolder(FullPath)
  1796. If IO.File.Exists(dvdbdpath & "poster.jpg") Then Return dvdbdpath & "poster.jpg"
  1797. End If
  1798. If Not Utilities.findFileOfType(posterpath, "-poster.jpg", Pref.basicsavemode) Then
  1799. 'Check Frodo naming convention
  1800. If Not Utilities.findFileOfType(posterpath, ".tbn", Pref.basicsavemode) Then
  1801. If IO.File.Exists(IO.Path.GetDirectoryName(FullPath) & "\folder.jpg") Then
  1802. posterpath = IO.Path.GetDirectoryName(FullPath) & "\folder.jpg" 'where movie-per-folder may use folder.jpg
  1803. ElseIf IO.File.Exists(IO.Path.GetDirectoryName(FullPath) & "\poster.jpg") Then
  1804. posterpath = IO.Path.GetDirectoryName(FullPath) & "\poster.jpg"
  1805. Else
  1806. Dim postertype As String = ".tbn"
  1807. If Pref.FrodoEnabled Then postertype = "-poster.jpg"
  1808. posterpath = FullPath.Replace(IO.Path.GetExtension(FullPath), postertype)
  1809. End If
  1810. End If
  1811. End If
  1812. Try
  1813. If Pref.posterjpg AndAlso Not IsNothing(MovFilePath) AndAlso Not GetRootFolderCheck(FullPath) AndAlso MovFilePath.ToLower <> "video_ts.nfo" Then
  1814. Dim ispath As Boolean = IO.File.Exists(IO.Path.GetDirectoryName(FullPath) & "\poster.jpg")
  1815. If ispath Then posterpath = IO.Path.GetDirectoryName(FullPath) & "\poster.jpg"
  1816. End If
  1817. Catch
  1818. End Try
  1819. Return posterpath
  1820. End Function
  1821. Public Shared Function FrodoPosterExists(ByVal nfoFile As String) As Boolean
  1822. If IO.File.Exists(nfoFile.Replace(IO.Path.GetExtension(nfoFile), "-poster.jpg")) Then Return True
  1823. Dim dir As String = IO.Path.GetDirectoryName(nfoFile)
  1824. If IO.Path.GetFileName(nfoFile).ToLower = "video_ts.nfo" Or IO.Path.GetFileName(nfoFile).ToLower = "index.nfo" Then
  1825. dir = Utilities.RootVideoTsFolder(nfoFile)
  1826. dir = dir.Substring(0,dir.Length-1)
  1827. End If
  1828. If IO.File.Exists(dir & "\poster.jpg") Then Return True
  1829. If IO.File.Exists(dir & "\folder.jpg") Then Return True
  1830. Return False
  1831. End Function
  1832. Public Shared Function FrodoPosterPath(ByVal nfoFile As String) As String
  1833. If IO.File.Exists(nfoFile.Replace(IO.Path.GetExtension(nfoFile), "-poster.jpg")) Then Return nfoFile.Replace(IO.Path.GetExtension(nfoFile), "-poster.jpg")
  1834. Dim dir As String = IO.Path.GetDirectoryName(nfoFile)
  1835. If IO.Path.GetFileName(nfoFile).ToLower = "video_ts.nfo" Or IO.Path.GetFileName(nfoFile).ToLower = "index.nfo" Then
  1836. dir = Utilities.RootVideoTsFolder(nfoFile)
  1837. dir = dir.Substring(0,dir.Length-1)
  1838. End If
  1839. If IO.File.Exists(dir & "\poster.jpg") Then Return dir & "\poster.jpg"
  1840. If IO.File.Exists(dir & "\folder.jpg") Then Return dir & "\folder.jpg"
  1841. Return ""
  1842. End Function
  1843. Public Shared Function FrodoFanartPath(ByVal nfoFile As String) As String
  1844. If IO.File.Exists(nfoFile.Replace(IO.Path.GetExtension(nfoFile), "-fanart.jpg")) Then Return nfoFile.Replace(IO.Path.GetExtension(nfoFile), "-fanart.jpg")
  1845. Dim dir As String = IO.Path.GetDirectoryName(nfoFile)
  1846. If IO.Path.GetFileName(nfoFile).ToLower = "video_ts.nfo" Or IO.Path.GetFileName(nfoFile).ToLower = "index.nfo" Then
  1847. dir = Utilities.RootVideoTsFolder(nfoFile)
  1848. dir = dir.Substring(0,dir.Length-1)
  1849. End If
  1850. If IO.File.Exists(dir & "\fanart.jpg") Then Return dir & "\fanart.jpg"
  1851. Return ""
  1852. End Function
  1853. Public Shared Function PreFrodoPosterExists(ByVal nfoFile As String) As Boolean
  1854. Return IO.File.Exists(nfoFile.Replace(IO.Path.GetExtension(nfoFile), ".tbn"))
  1855. End Function
  1856. Public Shared Function GetAllPosters(ByVal nfoFile As String) As List(Of String)
  1857. Dim Results As List(Of String) = New List(Of String)
  1858. Dim dir As String = IO.Path.GetDirectoryName(nfoFile)
  1859. AddIfExistsAndNew( Results, dir & "\folder.jpg")
  1860. AddIfExistsAndNew( Results, dir & "\poster.jpg")
  1861. AddIfExistsAndNew( Results, nfoFile.Replace(IO.Path.GetExtension(nfoFile), "-poster.jpg") )
  1862. AddIfExistsAndNew( Results, nfoFile.Replace(IO.Path.GetExtension(nfoFile), ".tbn" ) )
  1863. Return Results
  1864. End Function
  1865. Public Shared Sub AddIfExistsAndNew( lst As List(Of String), fName As String)
  1866. If lst.Contains(fName) Then Return
  1867. If Not IO.File.Exists(fName) Then Return
  1868. lst.Add(fName)
  1869. End Sub
  1870. Public Shared Function GetPosterPaths(ByVal FullPath As String, Optional ByVal videots As String = "") As List(Of String)
  1871. Dim lst = New List(Of String)
  1872. Dim path As String = FullPath
  1873. Dim isroot As Boolean = Pref.GetRootFolderCheck(FullPath)
  1874. If (Pref.posterjpg Or Pref.basicsavemode) AndAlso Not isroot Then
  1875. If videots <> "" Then
  1876. If Pref.EdenEnabled Then
  1877. path = FullPath.Replace(IO.Path.GetExtension(FullPath), ".tbn")
  1878. lst.Add(path)
  1879. End If
  1880. If Pref.FrodoEnabled Then
  1881. path = videots + "poster.jpg"
  1882. lst.Add(path)
  1883. End If
  1884. Else
  1885. If (Pref.posterjpg Or Pref.basicsavemode) AndAlso Pref.FrodoEnabled Then
  1886. path = IO.Path.GetDirectoryName(FullPath) & "\poster.jpg"
  1887. lst.Add(path)
  1888. End If
  1889. If Pref.createfolderjpg Then
  1890. path = IO.Path.GetDirectoryName(FullPath) & "\folder.jpg" 'where movie-per-folder may use folder.jpg
  1891. lst.Add(path)
  1892. End If
  1893. If (Pref.EdenEnabled AndAlso Not Pref.basicsavemode) OrElse (Pref.basicsavemode AndAlso Not Pref.FrodoEnabled) Then
  1894. 'If Pref.EdenEnabled Or (Pref.basicsavemode AndAlso Not Pref.FrodoEnabled) Then
  1895. path = FullPath.Replace(IO.Path.GetExtension(FullPath), ".tbn")
  1896. lst.Add(path)
  1897. End If
  1898. End If
  1899. Else
  1900. If Pref.EdenEnabled Then
  1901. path = FullPath.Replace(IO.Path.GetExtension(FullPath), ".tbn")
  1902. lst.Add(path)
  1903. End If
  1904. If Pref.basicsavemode Or Pref.createfolderjpg And Not isroot Then
  1905. path = IO.Path.GetDirectoryName(FullPath) & "\folder.jpg" 'where movie-per-folder may use folder.jpg
  1906. lst.Add(path)
  1907. End If
  1908. If Pref.FrodoEnabled Then
  1909. If videots = "" Then
  1910. path = FullPath.Replace(IO.Path.GetExtension(FullPath), "-poster.jpg")
  1911. lst.Add(path)
  1912. Else
  1913. path = videots + "poster.jpg"
  1914. lst.Add(path)
  1915. End If
  1916. End If
  1917. End If
  1918. Return lst
  1919. End Function
  1920. Public Shared Function CheckmissingPoster(ByVal FullPath As String) As Boolean 'Return True if any missing Posters
  1921. Dim videotsrootpath As String = ""
  1922. If IO.Path.GetFileName(FullPath).ToLower = "video_ts.nfo" Or IO.Path.GetFileName(FullPath).ToLower = "index.nfo" Then
  1923. videotsrootpath = Utilities.RootVideoTsFolder(FullPath)
  1924. End If
  1925. Dim posterlist As New List(Of String)
  1926. posterlist = GetPosterPaths(FullPath, videotsrootpath)
  1927. For Each item In posterlist
  1928. If Not IO.File.Exists(item) Then CheckmissingPoster = True
  1929. Next
  1930. Return CheckmissingPoster
  1931. End Function
  1932. Public Shared Function GetFanartPaths(ByVal FullPath As String, Optional ByVal videots As String = "") As List(Of String)
  1933. Dim lst = New List(Of String)
  1934. Dim path As String = FullPath
  1935. Dim isroot As Boolean = Pref.GetRootFolderCheck(FullPath)
  1936. Dim fanartjpg As Boolean = Pref.fanartjpg
  1937. If (fanartjpg Or Pref.basicsavemode) AndAlso Not isroot Then
  1938. If videots <> "" Then
  1939. If Pref.EdenEnabled Then
  1940. path = FullPath.Replace(".nfo", "-fanart.jpg")
  1941. lst.Add(path)
  1942. End If
  1943. If Pref.FrodoEnabled Then
  1944. path = videots + "fanart.jpg"
  1945. lst.Add(path)
  1946. End If
  1947. Else
  1948. If (fanartjpg And Pref.FrodoEnabled) Or Pref.basicsavemode Or Pref.createfanartjpg Then
  1949. path = IO.Path.GetDirectoryName(FullPath) & "\fanart.jpg"
  1950. lst.Add(path)
  1951. End If
  1952. If Not Pref.basicsavemode AndAlso Pref.EdenEnabled Then
  1953. path = FullPath.Replace(".nfo", "-fanart.jpg")
  1954. lst.Add(path)
  1955. End If
  1956. End If
  1957. Else
  1958. If Pref.EdenEnabled Then
  1959. path = FullPath.Replace(IO.Path.GetExtension(FullPath), "-fanart.jpg")
  1960. lst.Add(path)
  1961. End If
  1962. If Pref.FrodoEnabled Then
  1963. If Not Pref.EdenEnabled Then
  1964. If Not videots = "" Then
  1965. path = videots + "fanart.jpg"
  1966. lst.Add(path)
  1967. Else
  1968. path = FullPath.Replace(IO.Path.GetExtension(FullPath), "-fanart.jpg")
  1969. lst.Add(path)
  1970. End If
  1971. Else
  1972. If Not videots = "" Then
  1973. path = videots + "fanart.jpg"
  1974. lst.Add(path)
  1975. End If
  1976. End If
  1977. End If
  1978. If Pref.basicsavemode OrElse Pref.createfanartjpg Then
  1979. path = IO.Path.GetDirectoryName(FullPath) & "\fanart.jpg"
  1980. lst.Add(path)
  1981. End If
  1982. End If
  1983. Return lst
  1984. End Function
  1985. Public Shared Function CheckmissingFanart(ByVal FullPath As String) As Boolean 'Return True if any missing Fanart
  1986. Dim videotsrootpath As String = ""
  1987. If IO.Path.GetFileName(FullPath).ToLower = "video_ts.nfo" Or IO.Path.GetFileName(FullPath).ToLower = "index.nfo" Then
  1988. videotsrootpath = Utilities.RootVideoTsFolder(FullPath)
  1989. End If
  1990. Dim fanartlist As New List(Of String)
  1991. fanartlist = GetFanartPaths(FullPath, videotsrootpath)
  1992. For Each item In fanartlist
  1993. If Not IO.File.Exists(item) Then CheckmissingFanart = True
  1994. Next
  1995. Return CheckmissingFanart
  1996. End Function
  1997. Public Shared Function GetFanartPath(ByVal FullPath As String, Optional ByVal MovFilePath As String = "") As String
  1998. Dim fanartPath As String = FullPath
  1999. If Pref.FrodoEnabled AndAlso MovFilePath.ToLower.Contains("video_ts.nfo") OrElse MovFilePath.ToLower.Contains("index.nfo") Then
  2000. Dim dvdbdpath As String = Utilities.RootVideoTsFolder(FullPath)
  2001. If IO.File.Exists(dvdbdpath & "fanart.jpg") Then Return dvdbdpath & "fanart.jpg"
  2002. End If
  2003. If Not Utilities.findFileOfType(fanartPath, "-fanart.jpg", Pref.basicsavemode, Pref.fanartjpg, False) Then
  2004. If Not GetRootFolderCheck(FullPath) AndAlso Pref.fanartjpg AndAlso MovFilePath <> "" Then
  2005. Dim MovPath As String = FullPath.Replace(MovFilePath, "") & "fanart.jpg"
  2006. Return MovPath
  2007. Else
  2008. fanartPath = FullPath.Replace(IO.Path.GetExtension(FullPath), "-fanart.jpg")
  2009. End If
  2010. Else
  2011. If Not GetRootFolderCheck(FullPath) AndAlso Pref.fanartjpg AndAlso MovFilePath <> "" AndAlso MovFilePath.ToLower <> "video_ts.nfo" Then
  2012. Dim MovPath As String = FullPath.Replace(MovFilePath, "") & "fanart.jpg"
  2013. If IO.File.Exists(MovPath) Then Return MovPath
  2014. End If
  2015. End If
  2016. Return fanartPath
  2017. End Function
  2018. Public Shared Function GetFanartTvMoviePath(ByVal FullPath As String, Optional ByVal MovFilePath As String = "") As String
  2019. Dim fanartTvPath As String = FullPath
  2020. Return fanartTvPath
  2021. End Function
  2022. Public Shared Function GetMovBasePath(ByVal path As String) As String
  2023. Dim basepath As String = ""
  2024. If path.ToLower.Contains("video_ts") or path.ToLower.Contains("bdmv") Then
  2025. If path.ToLower.Contains("video_ts") Then
  2026. basepath = path.substring(0, path.Length-9)
  2027. Else
  2028. basepath = path.substring(0, path.Length-5)
  2029. End If
  2030. Else
  2031. basepath = path
  2032. End If
  2033. Return basepath
  2034. End Function
  2035. Public Shared Function GetMovSetFanartPath(ByVal MovPath As String, ByVal MovSetName As String) As String
  2036. Dim movsetfanartpath As String = ""
  2037. If MovSetName = "" Then Return ""
  2038. MovSetName = Utilities.cleanFoldernameIllegalChars(MovSetName)
  2039. Dim foldername As String = Utilities.GetLastFolder(MovPath)
  2040. Dim filename As String = IO.Path.GetFileName(MovPath)
  2041. If Pref.MovSetArtSetFolder Then 'Central folder for all Movie Set Artwork
  2042. movsetfanartpath = Pref.MovSetArtCentralFolder & "\" & MovSetName & "-fanart.jpg"
  2043. Else 'or Save to movieset folder if exists.
  2044. If MovPath.Contains(MovSetName) AndAlso foldername = MovSetName Then
  2045. movsetfanartpath = MovPath.Replace(filename, "fanart.jpg")
  2046. ElseIf MovPath.Contains(MovSetName) Then
  2047. Dim splitpath() = MovPath.Split("\")
  2048. For Each p In splitpath
  2049. movsetfanartpath &= p & "\"
  2050. If p = MovSetName then
  2051. movsetfanartpath &="fanart.jpg"
  2052. Exit For
  2053. End If
  2054. Next
  2055. End If
  2056. End If
  2057. Return movsetfanartpath
  2058. End Function
  2059. Public Shared Function GetMovSetPosterPath(ByVal MovPath As String, ByVal MovSetName As String) As String
  2060. Dim movsetposterpath As String = ""
  2061. If MovSetName = "" Then Return ""
  2062. MovSetName = Utilities.cleanFoldernameIllegalChars(MovSetName)
  2063. Dim foldername As String = Utilities.GetLastFolder(MovPath)
  2064. Dim filename As String = IO.Path.GetFileName(MovPath)
  2065. If Pref.MovSetArtSetFolder Then 'Central folder for all Movie Set Artwork
  2066. movsetposterpath = Pref.MovSetArtCentralFolder & "\" & MovSetName & "-poster.jpg"
  2067. Else 'or Save to movieset folder if exists.
  2068. If MovPath.Contains(MovSetName) AndAlso foldername = MovSetName Then
  2069. movsetposterpath = MovPath.Replace(filename, "poster.jpg")
  2070. ElseIf MovPath.Contains(MovSetName) Then
  2071. Dim splitpath() = MovPath.Split("\")
  2072. For Each p In splitpath
  2073. movsetposterpath &= p & "\"
  2074. If p = MovSetName then
  2075. movsetposterpath &="poster.jpg"
  2076. Exit For
  2077. End If
  2078. Next
  2079. End If
  2080. End If
  2081. Return movsetposterpath
  2082. End Function
  2083. Public Shared Function GetActorThumbPath(Optional ByVal location As String = "")
  2084. Dim actualpath As String = ""
  2085. Try
  2086. If String.IsNullOrEmpty(location) Then Return "none"
  2087. If location.IndexOf("http") <> -1 Then Return location
  2088. If location.IndexOf(actornetworkpath) <> -1 Then
  2089. If Not String.IsNullOrEmpty(actornetworkpath) Or Not String.IsNullOrEmpty(actorsavepath) Then
  2090. Dim filename As String = IO.Path.GetFileName(location)
  2091. actualpath = IO.Path.Combine(actorsavepath, filename)
  2092. If Not IO.File.Exists(actualpath) Then
  2093. Dim extension As String = IO.Path.GetExtension(location)
  2094. Dim purename As String = IO.Path.GetFileName(location)
  2095. purename = purename.Replace(extension, "")
  2096. If actorsavealpha Then
  2097. actualpath = actorsavepath & "\" & purename.Substring(0,1) & "\" & filename
  2098. Else
  2099. actualpath = actorsavepath & "\" & purename.Substring(purename.Length - 2, 2) & "\" & filename
  2100. End If
  2101. End If
  2102. If Not IO.File.Exists(actualpath) Then
  2103. actualpath = "none"
  2104. End If
  2105. Else
  2106. actualpath = "none"
  2107. End If
  2108. Else
  2109. actualpath = "none"
  2110. End If
  2111. If String.IsNullOrEmpty(actualpath) Then actualpath = "none"
  2112. Return actualpath
  2113. Catch
  2114. Return "none"
  2115. Finally
  2116. End Try
  2117. End Function
  2118. Public Shared Function GetRootFolderCheck(ByVal fullpath) As Boolean
  2119. Dim isroot As Boolean = False
  2120. If Pref.movrootfoldercheck Then
  2121. Dim lastfolder As String = Utilities.GetLastFolder(fullpath)
  2122. Dim rtfolder As String = Nothing
  2123. For Each rfolder In Pref.movieFolders
  2124. rtfolder = Path.GetFileName(rfolder.rpath)
  2125. If rtfolder = lastfolder Then isroot = True
  2126. Next
  2127. End If
  2128. Return isroot
  2129. End Function
  2130. Public Shared Function GetRootFolder(ByVal Fullpath As String) As String
  2131. Try
  2132. For each movroot In Pref.movieFolders
  2133. If Fullpath.Contains(movroot.rpath & "\") Then Return movroot.rpath
  2134. Next
  2135. Catch
  2136. End Try
  2137. Return ""
  2138. End Function
  2139. Public Shared Function Get_HdTags(ByVal filename As String) As FullFileDetails
  2140. Try
  2141. If IO.Path.GetFileName(filename).ToLower = "video_ts.ifo" Then
  2142. Dim temppath As String = Utilities.GetDvdLargestVobSet(filename)
  2143. 'Dim temppath As String = filename.Replace(IO.Path.GetFileName(filename), "VTS_01_0.IFO")
  2144. If IO.File.Exists(temppath) Then
  2145. filename = temppath
  2146. End If
  2147. End If
  2148. Dim tmpaud As String = ""
  2149. Dim possibleISO As String = String.Empty
  2150. Dim workingfiledetails As New FullFileDetails
  2151. If IO.Path.GetExtension(filename).ToLower = ".iso" Then
  2152. possibleISO = Get_ISO_HDTags(filename)
  2153. If possibleISO <> "" AndAlso Not possibleISO.ToLower.Contains("unable to get image file") Then
  2154. Dim MInform As New XmlDocument
  2155. MInform.LoadXml(possibleISO)
  2156. For Each thisresult In MInform("File")
  2157. Select Case thisresult.name
  2158. Case "track"
  2159. Dim check As String = thisresult.outerxml.ToString
  2160. If check.Contains("""Video""") Then
  2161. For Each result In thisresult
  2162. Select Case result.name
  2163. Case "Format"
  2164. workingfiledetails.filedetails_video.Codec.Value = result.InnerText
  2165. Case "Format_version"
  2166. workingfiledetails.filedetails_video.FormatInfo.Value = result.InnerText
  2167. Case "Width"
  2168. workingfiledetails.filedetails_video.Width.Value = result.InnerText
  2169. Case "Height"
  2170. workingfiledetails.filedetails_video.Height.Value = result.InnerText
  2171. Case "Bit_rate_mode"
  2172. workingfiledetails.filedetails_video.BitrateMode.Value = result.InnerText
  2173. Case "Maximum_bit_rate"
  2174. workingfiledetails.filedetails_video.BitrateMax.Value = result.InnerText
  2175. Case "Display_aspect_ratio"
  2176. Dim Asp As String = result.InnerText
  2177. If Not Asp = "" Then
  2178. If Asp = "16:9" Then Asp = "1.56:1"
  2179. workingfiledetails.filedetails_video.Aspect.Value = Asp.Substring(0, Asp.IndexOf(":"))
  2180. End If
  2181. Case "Scan_type"
  2182. workingfiledetails.filedetails_video.ScanType.Value = result.InnerText
  2183. End Select
  2184. Next
  2185. If workingfiledetails.filedetails_video.Codec.Value.ToLower = "mpeg video" AndAlso workingfiledetails.filedetails_video.FormatInfo.Value.Contains("2") Then
  2186. workingfiledetails.filedetails_video.Codec.Value = "MPEG2VIDEO"
  2187. End If
  2188. If workingfiledetails.filedetails_video.Codec.Value.ToLower = "avc" Then workingfiledetails.filedetails_video.Codec.Value = "avc1"
  2189. workingfiledetails.filedetails_video.Width.Value = workingfiledetails.filedetails_video.Width.Value.Replace(" pixels", "").Replace(" ", "")
  2190. workingfiledetails.filedetails_video.Height.Value = workingfiledetails.filedetails_video.Height.Value.Replace(" pixels", "").Replace(" ", "")
  2191. workingfiledetails.filedetails_video.Container.Value = IO.Path.GetExtension(filename).ToLower
  2192. workingfiledetails.filedetails_video.DurationInSeconds.Value = -1 'unable to get duration from ISO
  2193. End If
  2194. If check.Contains("""Audio""") Then
  2195. tmpaud = ""
  2196. Dim audio As New AudioDetails
  2197. For Each result In thisresult
  2198. Select Case result.name
  2199. Case "Format"
  2200. audio.Codec.Value = result.InnerText
  2201. Case "Format_Info"
  2202. tmpaud = result.InnerText
  2203. tmpaud = tmpaud.ToLower
  2204. Case "Channel_s_"
  2205. audio.Channels.Value = result.InnerText
  2206. Case "Bit_rate"
  2207. audio.Bitrate.Value = result.InnerText
  2208. Case "Language"
  2209. audio.Language.Value = Utilities.GetLangCode(result.InnerText)
  2210. Case "Default"
  2211. audio.DefaultTrack.Value = result.InnerText
  2212. End Select
  2213. Next
  2214. If audio.Codec.Value.ToLower.IndexOf("truehd")>-1 Then audio.Codec.Value = "truehd"
  2215. If audio.Codec.Value = "DTS" Then
  2216. If tmpaud.ToLower = "dts ma / core" Then
  2217. audio.Codec.Value = "dtshd_ma"
  2218. ElseIf tmpaud.ToLower = "dts hra / core" Then
  2219. audio.Codec.Value = "dtshd_hra"
  2220. ElseIf tmpaud.ToLower = "dts es" Then
  2221. audio.Codec.Value = "dts"
  2222. Else
  2223. audio.Codec.Value = "dts"
  2224. End If
  2225. End If
  2226. If audio.Codec.Value = "AC-3" Then audio.Codec.Value = "AC3"
  2227. workingfiledetails.filedetails_audio.Add(audio)
  2228. End If
  2229. If check.Contains("""Text""") Then
  2230. Dim SubTitle As New SubtitleDetails
  2231. For each result In thisresult
  2232. Select Case result.name
  2233. Case "Language"
  2234. SubTitle.Language.Value = Utilities.GetLangCode(result.InnerText)
  2235. End Select
  2236. Next
  2237. workingfiledetails.filedetails_subtitles.Add(SubTitle)
  2238. End If
  2239. End Select
  2240. Next
  2241. If workingfiledetails.filedetails_audio.Count = 0 Then
  2242. Dim audio As New AudioDetails
  2243. workingfiledetails.filedetails_audio.Add(audio) 'Must have at least one audio track, even if it's blank
  2244. End If
  2245. Return workingfiledetails
  2246. Else
  2247. Return workingfiledetails
  2248. End If
  2249. End If
  2250. Dim playlist As New List(Of String)
  2251. Dim tempstring As String
  2252. tempstring = Utilities.GetFileName(filename)
  2253. playlist = Utilities.GetMediaList(tempstring)
  2254. If Not filename.ToLower.Contains("vts") AndAlso filename <> tempstring Then
  2255. filename = tempstring
  2256. End If
  2257. If Not IO.File.Exists(filename) Then
  2258. Return Nothing
  2259. End If
  2260. Dim MI As New mediainfo
  2261. MI.Open(filename)
  2262. Dim curVS As Integer = 0
  2263. Dim addVS As Boolean = False
  2264. Dim numOfVideoStreams As Integer = MI.Count_Get(StreamKind.Visual)
  2265. Dim aviFile As MediaFile = New MediaFile(filename)
  2266. Dim tmpstr As String = ""
  2267. Dim tempmediainfo As String
  2268. workingfiledetails.filedetails_video.Width.Value = If(aviFile.Video.Count = 0, "", aviFile.Video(0).Width)
  2269. workingfiledetails.filedetails_video.Height.Value = If(aviFile.Video.Count = 0, "", aviFile.Video(0).Height)
  2270. Try
  2271. Dim tmp As Double = If(aviFile.Video.Count = 0, 0, aviFile.Video(0).AspectRatio)
  2272. If tmp <> 0 AndAlso tmp < 4 Then
  2273. workingfiledetails.filedetails_video.Aspect.Value = tmp.ToString("F2")
  2274. Else
  2275. Dim DisplayAspectRatio As String = MI.Get_(StreamKind.Visual, curVS, "AspectRatio")
  2276. If Not DisplayAspectRatio = "" Then
  2277. workingfiledetails.filedetails_video.Aspect.Value = Convert.ToDouble(DisplayAspectRatio).ToString("F2")
  2278. End If
  2279. End If
  2280. Catch ex As Exception
  2281. Try
  2282. If workingfiledetails.filedetails_video.Width.Value <> "" AndAlso workingfiledetails.filedetails_video.Height.Value <> "" Then
  2283. Dim Aspect As Double = 0
  2284. Dim wi As Double = Convert.ToDouble(aviFile.Video(0).Width)
  2285. Dim he As Double = Convert.ToDouble(aviFile.Video(0).Height)
  2286. Aspect = wi/he
  2287. workingfiledetails.filedetails_video.Aspect.Value = Aspect.ToString("F2")
  2288. Else
  2289. workingfiledetails.filedetails_video.Aspect.Value = "Unknown"
  2290. End If
  2291. Catch exc As Exception
  2292. workingfiledetails.filedetails_video.Aspect.Value = "Unknown"
  2293. End Try
  2294. End Try
  2295. tempmediainfo = If(aviFile.Video.Count = 0, "", aviFile.Video(0).Format)
  2296. If tempmediainfo.ToLower = "mpeg video" Then
  2297. Dim Temp1 As String = If(aviFile.Video.Count = 0, 0, aviFile.Video(0).FormatID)
  2298. If Temp1 <> "" Then tempmediainfo = Temp1.ToLower
  2299. End If
  2300. If tempmediainfo.EndsWith("avc", StringComparison.CurrentCultureIgnoreCase) Then
  2301. tempmediainfo = "h264"
  2302. ElseIf tempmediainfo = "DX50" Then
  2303. tempmediainfo = "divx"
  2304. End If
  2305. workingfiledetails.filedetails_video.Codec.Value = tempmediainfo
  2306. tempmediainfo = If(aviFile.Video.Count = 0, "", aviFile.Video(0).CodecID)
  2307. If tempmediainfo.ToLower = "xvid" OrElse tempmediainfo.ToLower.Contains("div") OrElse tempmediainfo.ToLower = "dx50" Then
  2308. workingfiledetails.filedetails_video.FormatInfo.Value = workingfiledetails.filedetails_video.Codec.Value
  2309. workingfiledetails.filedetails_video.Codec.Value = tempmediainfo.ToLower
  2310. Else
  2311. If tempmediainfo.ToLower.Contains("mp4v") OrElse tempmediainfo.ToLower.Contains("20") Then
  2312. workingfiledetails.filedetails_video.FormatInfo.Value = "mp4v"
  2313. Else
  2314. workingfiledetails.filedetails_video.FormatInfo.Value = tempmediainfo
  2315. End If
  2316. End If
  2317. Try
  2318. If playlist.Count = 1 Then
  2319. Dim duration As String = MI.Get_(StreamKind.Visual, 0, "Duration")
  2320. If duration = "" Then
  2321. duration = MI.Get_(StreamKind.General, 0, "Duration")
  2322. End If
  2323. If Not String.IsNullOrEmpty(duration) Then
  2324. Dim Tempvar As Double = Nothing
  2325. If Double.TryParse(duration, Tempvar) Then
  2326. workingfiledetails.filedetails_video.DurationInSeconds.Value = Math.Round(Convert.ToInt32(Tempvar) / 1000)
  2327. Else
  2328. workingfiledetails.filedetails_video.DurationInSeconds.Value = Math.Round(Convert.ToInt32(duration) / 1000)
  2329. End If
  2330. Else
  2331. workingfiledetails.filedetails_video.DurationInSeconds.Value = -1
  2332. End If
  2333. ElseIf playlist.Count > 1 Then
  2334. Dim total As Integer = 0
  2335. For f = 0 To playlist.Count - 1
  2336. Dim M2 As mediainfo = New mediainfo
  2337. M2.Open(playlist(f))
  2338. Dim duration As String = M2.Get_(StreamKind.Visual, 0, "Duration")
  2339. If Not String.IsNullOrEmpty(duration) Then
  2340. total += Math.Round(Convert.ToInt32(duration) / 1000)
  2341. End If
  2342. Next
  2343. If total = 0 Then total = -1
  2344. workingfiledetails.filedetails_video.DurationInSeconds.Value = total
  2345. End If
  2346. Catch
  2347. workingfiledetails.filedetails_video.DurationInSeconds.Value = -1
  2348. End Try
  2349. workingfiledetails.filedetails_video.Bitrate.Value = MI.Get_(StreamKind.Visual, curVS, "BitRate/String")
  2350. workingfiledetails.filedetails_video.BitrateMode.Value = MI.Get_(StreamKind.Visual, curVS, "BitRate_Mode/String")
  2351. workingfiledetails.filedetails_video.BitrateMax.Value = MI.Get_(StreamKind.Visual, curVS, "BitRate_Maximum/String")
  2352. If filename.ToLower.Contains("\bdmv\stream\") Then
  2353. workingfiledetails.filedetails_video.Container.Value = ".bdmv" '"If bluray, set as .bdmv extension"
  2354. Else
  2355. workingfiledetails.filedetails_video.Container.Value = IO.Path.GetExtension(filename) '"else this is the extension of the file"
  2356. End If
  2357. workingfiledetails.filedetails_video.ScanType.Value = MI.Get_(StreamKind.Visual, curVS, "ScanType")
  2358. 'Video()
  2359. 'Format : MPEG-4 Visual
  2360. 'Format profile : Streaming Video@L1
  2361. 'Format(settings, BVOP) : Yes()
  2362. 'Format(settings, QPel) : No()
  2363. 'Format(settings, GMC) : No(warppoints)
  2364. 'Format(settings, Matrix) : Custom()
  2365. 'Codec(ID) : XVID()
  2366. 'Codec(ID / Hint) : XviD()
  2367. 'Duration : 1h 33mn
  2368. 'Bit rate : 903 Kbps
  2369. 'Width : 528 pixels
  2370. 'Height : 272 pixels
  2371. 'Display aspect ratio : 1.941
  2372. 'Frame rate : 25.000 fps
  2373. 'Resolution : 24 bits
  2374. 'Colorimetry : 4:2:0
  2375. 'Scan(Type) : Progressive()
  2376. 'Bits/(Pixel*Frame) : 0.252
  2377. 'Stream size : 604 MiB (86%)
  2378. 'Writing library : XviD 1.0.3 (UTC 2004-12-20)
  2379. Dim numOfAudioStreams As Integer = MI.Count_Get(StreamKind.Audio)
  2380. Dim curAS As Integer = 0
  2381. Dim addAS As Boolean = False
  2382. tmpaud = ""
  2383. 'get audio data
  2384. If numOfAudioStreams > 0 Then
  2385. While curAS < numOfAudioStreams
  2386. Dim audio As New AudioDetails
  2387. audio.Language.Value = Utilities.GetLangCode(MI.Get_(StreamKind.Audio, curAS, "Language/String"))
  2388. If MI.Get_(StreamKind.Audio, curAS, "Format") = "MPEG Audio" Then
  2389. audio.Codec.Value = "MP3"
  2390. Else
  2391. Try
  2392. tempmediainfo = aviFile.Audio(curAS).Format
  2393. Catch
  2394. tempmediainfo = ""
  2395. End Try
  2396. audio.Codec.Value = tempmediainfo
  2397. End If
  2398. If audio.Codec.Value = "AC-3" Then audio.Codec.Value = "ac3"
  2399. If audio.Codec.Value.ToLower.IndexOf("truehd") > -1 Then
  2400. If audio.Codec.Value.ToLower.IndexOf("atmos") > -1 Then
  2401. audio.Codec.Value = "atmos"
  2402. Else
  2403. audio.Codec.Value = "truehd"
  2404. End If
  2405. End If
  2406. tmpaud = aviFile.Audio(curAS).FormatID.ToLower()
  2407. If audio.Codec.Value = "DTS" Then
  2408. If tmpaud.ToLower.IndexOf("dts x") > -1 Then
  2409. audio.Codec.Value = "dts_x"
  2410. ElseIf tmpaud.ToLower.IndexOf("dts ma") > -1 Then ' tmpaud.ToLower = "dts ma / core" Then
  2411. audio.Codec.Value = "dtshd_ma"
  2412. ElseIf tmpaud.ToLower = "dts hra / core" Then
  2413. audio.Codec.Value = "dtshd_hra"
  2414. ElseIf tmpaud.ToLower = "dts es" Then
  2415. audio.Codec.Value = "dts"
  2416. End If
  2417. audio.Codec.Value = audio.Codec.Value.ToLower
  2418. End If
  2419. audio.Channels.Value = MI.Get_(StreamKind.Audio, curAS, "Channel(s)")
  2420. If audio.Channels.Value = "" AndAlso numOfAudioStreams = 1 Then
  2421. audio.Channels.Value = "1"
  2422. End If
  2423. audio.Bitrate.Value = MI.Get_(StreamKind.Audio, curAS, "BitRate/String")
  2424. If audio.Bitrate.Value = "" Then
  2425. Dim tmpaud1 As String = ""
  2426. tmpaud1 = MI.Get_ (StreamKind.Audio, curAS, "BitRate_Maximum/String")
  2427. If tmpaud1 <> "" Then audio.Bitrate.Value = tmpaud1
  2428. End If
  2429. audio.DefaultTrack.Value = MI.Get_(StreamKind.Audio, curAS, "Default")
  2430. workingfiledetails.filedetails_audio.Add(audio)
  2431. curAS += 1
  2432. End While
  2433. Else
  2434. Dim audio As New AudioDetails
  2435. workingfiledetails.filedetails_audio.Add(audio)
  2436. End If
  2437. Dim numOfSubtitleStreams As Integer = MI.Count_Get(StreamKind.Text)
  2438. Dim curSS As Integer = 0
  2439. If numOfSubtitleStreams > 0 Then
  2440. While curSS < numOfSubtitleStreams
  2441. Dim sublanguage As New SubtitleDetails
  2442. sublanguage.Language.Value = Utilities.GetLangCode(MI.Get_(StreamKind.Text, curSS, "Language/String"))
  2443. Dim DefaultSub As String = MI.Get_(StreamKind.Text, curSS, "Default")
  2444. sublanguage.Primary = If(DefaultSub = "Yes", True, False)
  2445. workingfiledetails.filedetails_subtitles.Add(sublanguage)
  2446. curSS += 1
  2447. End While
  2448. End If
  2449. Return workingfiledetails
  2450. Catch ex As Exception
  2451. Finally
  2452. End Try
  2453. Return Nothing
  2454. End Function
  2455. Public Shared Function Get_ISO_HDTags(ByVal filename As String) As String
  2456. Dim something As String = ""
  2457. Dim tempstring As String = String.Empty
  2458. If applicationPath.IndexOf("/") <> -1 Then tempstring = applicationPath & "/" & "mediainfo-rar.exe"
  2459. If applicationPath.IndexOf("\") <> -1 Then tempstring = applicationPath & "\" & "mediainfo-rar.exe"
  2460. If Not IO.File.Exists(tempstring) Then Return ""
  2461. Try
  2462. Dim NewProcess As New System.Diagnostics.Process()
  2463. With NewProcess.StartInfo
  2464. .FileName = tempstring
  2465. .Arguments = " --Output=XML """ & filename
  2466. .RedirectStandardOutput = True
  2467. .RedirectStandardError = True
  2468. .RedirectStandardInput = True
  2469. .UseShellExecute = False
  2470. .WindowStyle = ProcessWindowStyle.Hidden
  2471. .CreateNoWindow = True
  2472. End With
  2473. Dim To_Display As String = ""
  2474. NewProcess.Start()
  2475. something = NewProcess.StandardOutput.ReadToEnd
  2476. Catch ex As Exception
  2477. End Try
  2478. Return something
  2479. End Function
  2480. Shared Sub OpenFileInAppPath(file As String)
  2481. OpenFile( Path.Combine(AppPath,file) )
  2482. End Sub
  2483. Shared Sub OpenFile(file As String)
  2484. Try
  2485. System.Diagnostics.Process.Start(file)
  2486. Catch ex As Exception
  2487. MsgBox("Failed to open file [" & file & "] Error message [" & ex.Message & "]")
  2488. End Try
  2489. End Sub
  2490. Public Shared Function stubofflinefolder(ByVal isfolderinlist As String) As Boolean
  2491. Dim match As Boolean = False
  2492. Try
  2493. For Each folder In movieFolders
  2494. If isfolderinlist.ToLower = folder.rpath.ToLower Then
  2495. match = True
  2496. Return match
  2497. End If
  2498. Next
  2499. Dim t As New str_RootPaths
  2500. t.rpath = isfolderinlist
  2501. movieFolders.Add(t)
  2502. Return True
  2503. Catch ex As Exception
  2504. MsgBox("Problem adding [" & isfolderinlist &"] to MovieFolder List. Error Message [" & ex.Message & "]")
  2505. match = False
  2506. End Try
  2507. Return match
  2508. End Function
  2509. End Class