├── .gitattributes ├── .gitignore ├── M3U_to_STRM.sln ├── M3U_to_STRM ├── App.config ├── M3U_to_STRM.vbproj ├── Module1.vb ├── My Project │ ├── Application.Designer.vb │ ├── Application.myapp │ ├── AssemblyInfo.vb │ ├── Resources.Designer.vb │ ├── Resources.resx │ ├── Settings.Designer.vb │ ├── Settings.settings │ └── app.manifest ├── Reader.vb ├── Readme.MD ├── Screenshot.PNG └── favicon.ico ├── Readme.MD ├── Screenshot.PNG └── favicon.ico /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | [Aa][Rr][Mm]/ 24 | [Aa][Rr][Mm]64/ 25 | bld/ 26 | [Bb]in/ 27 | [Oo]bj/ 28 | [Ll]og/ 29 | 30 | # Visual Studio 2015/2017 cache/options directory 31 | .vs/ 32 | # Uncomment if you have tasks that create the project's static files in wwwroot 33 | #wwwroot/ 34 | 35 | # Visual Studio 2017 auto generated files 36 | Generated\ Files/ 37 | 38 | # MSTest test Results 39 | [Tt]est[Rr]esult*/ 40 | [Bb]uild[Ll]og.* 41 | 42 | # NUNIT 43 | *.VisualState.xml 44 | TestResult.xml 45 | 46 | # Build Results of an ATL Project 47 | [Dd]ebugPS/ 48 | [Rr]eleasePS/ 49 | dlldata.c 50 | 51 | # Benchmark Results 52 | BenchmarkDotNet.Artifacts/ 53 | 54 | # .NET Core 55 | project.lock.json 56 | project.fragment.lock.json 57 | artifacts/ 58 | 59 | # StyleCop 60 | StyleCopReport.xml 61 | 62 | # Files built by Visual Studio 63 | *_i.c 64 | *_p.c 65 | *_h.h 66 | *.ilk 67 | *.meta 68 | *.obj 69 | *.iobj 70 | *.pch 71 | *.pdb 72 | *.ipdb 73 | *.pgc 74 | *.pgd 75 | *.rsp 76 | *.sbr 77 | *.tlb 78 | *.tli 79 | *.tlh 80 | *.tmp 81 | *.tmp_proj 82 | *_wpftmp.csproj 83 | *.log 84 | *.vspscc 85 | *.vssscc 86 | .builds 87 | *.pidb 88 | *.svclog 89 | *.scc 90 | 91 | # Chutzpah Test files 92 | _Chutzpah* 93 | 94 | # Visual C++ cache files 95 | ipch/ 96 | *.aps 97 | *.ncb 98 | *.opendb 99 | *.opensdf 100 | *.sdf 101 | *.cachefile 102 | *.VC.db 103 | *.VC.VC.opendb 104 | 105 | # Visual Studio profiler 106 | *.psess 107 | *.vsp 108 | *.vspx 109 | *.sap 110 | 111 | # Visual Studio Trace Files 112 | *.e2e 113 | 114 | # TFS 2012 Local Workspace 115 | $tf/ 116 | 117 | # Guidance Automation Toolkit 118 | *.gpState 119 | 120 | # ReSharper is a .NET coding add-in 121 | _ReSharper*/ 122 | *.[Rr]e[Ss]harper 123 | *.DotSettings.user 124 | 125 | # JustCode is a .NET coding add-in 126 | .JustCode 127 | 128 | # TeamCity is a build add-in 129 | _TeamCity* 130 | 131 | # DotCover is a Code Coverage Tool 132 | *.dotCover 133 | 134 | # AxoCover is a Code Coverage Tool 135 | .axoCover/* 136 | !.axoCover/settings.json 137 | 138 | # Visual Studio code coverage results 139 | *.coverage 140 | *.coveragexml 141 | 142 | # NCrunch 143 | _NCrunch_* 144 | .*crunch*.local.xml 145 | nCrunchTemp_* 146 | 147 | # MightyMoose 148 | *.mm.* 149 | AutoTest.Net/ 150 | 151 | # Web workbench (sass) 152 | .sass-cache/ 153 | 154 | # Installshield output folder 155 | [Ee]xpress/ 156 | 157 | # DocProject is a documentation generator add-in 158 | DocProject/buildhelp/ 159 | DocProject/Help/*.HxT 160 | DocProject/Help/*.HxC 161 | DocProject/Help/*.hhc 162 | DocProject/Help/*.hhk 163 | DocProject/Help/*.hhp 164 | DocProject/Help/Html2 165 | DocProject/Help/html 166 | 167 | # Click-Once directory 168 | publish/ 169 | 170 | # Publish Web Output 171 | *.[Pp]ublish.xml 172 | *.azurePubxml 173 | # Note: Comment the next line if you want to checkin your web deploy settings, 174 | # but database connection strings (with potential passwords) will be unencrypted 175 | *.pubxml 176 | *.publishproj 177 | 178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 179 | # checkin your Azure Web App publish settings, but sensitive information contained 180 | # in these scripts will be unencrypted 181 | PublishScripts/ 182 | 183 | # NuGet Packages 184 | *.nupkg 185 | # The packages folder can be ignored because of Package Restore 186 | **/[Pp]ackages/* 187 | # except build/, which is used as an MSBuild target. 188 | !**/[Pp]ackages/build/ 189 | # Uncomment if necessary however generally it will be regenerated when needed 190 | #!**/[Pp]ackages/repositories.config 191 | # NuGet v3's project.json files produces more ignorable files 192 | *.nuget.props 193 | *.nuget.targets 194 | 195 | # Microsoft Azure Build Output 196 | csx/ 197 | *.build.csdef 198 | 199 | # Microsoft Azure Emulator 200 | ecf/ 201 | rcf/ 202 | 203 | # Windows Store app package directories and files 204 | AppPackages/ 205 | BundleArtifacts/ 206 | Package.StoreAssociation.xml 207 | _pkginfo.txt 208 | *.appx 209 | 210 | # Visual Studio cache files 211 | # files ending in .cache can be ignored 212 | *.[Cc]ache 213 | # but keep track of directories ending in .cache 214 | !?*.[Cc]ache/ 215 | 216 | # Others 217 | ClientBin/ 218 | ~$* 219 | *~ 220 | *.dbmdl 221 | *.dbproj.schemaview 222 | *.jfm 223 | *.pfx 224 | *.publishsettings 225 | orleans.codegen.cs 226 | 227 | # Including strong name files can present a security risk 228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 229 | #*.snk 230 | 231 | # Since there are multiple workflows, uncomment next line to ignore bower_components 232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 233 | #bower_components/ 234 | 235 | # RIA/Silverlight projects 236 | Generated_Code/ 237 | 238 | # Backup & report files from converting an old project file 239 | # to a newer Visual Studio version. Backup files are not needed, 240 | # because we have git ;-) 241 | _UpgradeReport_Files/ 242 | Backup*/ 243 | UpgradeLog*.XML 244 | UpgradeLog*.htm 245 | ServiceFabricBackup/ 246 | *.rptproj.bak 247 | 248 | # SQL Server files 249 | *.mdf 250 | *.ldf 251 | *.ndf 252 | 253 | # Business Intelligence projects 254 | *.rdl.data 255 | *.bim.layout 256 | *.bim_*.settings 257 | *.rptproj.rsuser 258 | *- Backup*.rdl 259 | 260 | # Microsoft Fakes 261 | FakesAssemblies/ 262 | 263 | # GhostDoc plugin setting file 264 | *.GhostDoc.xml 265 | 266 | # Node.js Tools for Visual Studio 267 | .ntvs_analysis.dat 268 | node_modules/ 269 | 270 | # Visual Studio 6 build log 271 | *.plg 272 | 273 | # Visual Studio 6 workspace options file 274 | *.opt 275 | 276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 277 | *.vbw 278 | 279 | # Visual Studio LightSwitch build output 280 | **/*.HTMLClient/GeneratedArtifacts 281 | **/*.DesktopClient/GeneratedArtifacts 282 | **/*.DesktopClient/ModelManifest.xml 283 | **/*.Server/GeneratedArtifacts 284 | **/*.Server/ModelManifest.xml 285 | _Pvt_Extensions 286 | 287 | # Paket dependency manager 288 | .paket/paket.exe 289 | paket-files/ 290 | 291 | # FAKE - F# Make 292 | .fake/ 293 | 294 | # JetBrains Rider 295 | .idea/ 296 | *.sln.iml 297 | 298 | # CodeRush personal settings 299 | .cr/personal 300 | 301 | # Python Tools for Visual Studio (PTVS) 302 | __pycache__/ 303 | *.pyc 304 | 305 | # Cake - Uncomment if you are using it 306 | # tools/** 307 | # !tools/packages.config 308 | 309 | # Tabs Studio 310 | *.tss 311 | 312 | # Telerik's JustMock configuration file 313 | *.jmconfig 314 | 315 | # BizTalk build output 316 | *.btp.cs 317 | *.btm.cs 318 | *.odx.cs 319 | *.xsd.cs 320 | 321 | # OpenCover UI analysis results 322 | OpenCover/ 323 | 324 | # Azure Stream Analytics local run output 325 | ASALocalRun/ 326 | 327 | # MSBuild Binary and Structured Log 328 | *.binlog 329 | 330 | # NVidia Nsight GPU debugger configuration file 331 | *.nvuser 332 | 333 | # MFractors (Xamarin productivity tool) working folder 334 | .mfractor/ 335 | 336 | # Local History for Visual Studio 337 | .localhistory/ 338 | 339 | # BeatPulse healthcheck temp database 340 | healthchecksdb -------------------------------------------------------------------------------- /M3U_to_STRM.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30621.155 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "M3U_to_STRM", "M3U_to_STRM\M3U_to_STRM.vbproj", "{9A695CA6-C0DC-4D79-88C2-1618FFA0DF17}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {9A695CA6-C0DC-4D79-88C2-1618FFA0DF17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {9A695CA6-C0DC-4D79-88C2-1618FFA0DF17}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {9A695CA6-C0DC-4D79-88C2-1618FFA0DF17}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {9A695CA6-C0DC-4D79-88C2-1618FFA0DF17}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {AC92B065-480A-4D05-9F7A-2179B86C0BA8} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /M3U_to_STRM/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /M3U_to_STRM/M3U_to_STRM.vbproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {429D1E4D-31B3-4C8B-8F5B-BA984AF784B4} 8 | Exe 9 | M3U_to_STRM.Module1 10 | M3U_to_STRM 11 | M3U_to_STRM 12 | 512 13 | Console 14 | v4.7.2 15 | true 16 | true 17 | 18 | 19 | AnyCPU 20 | true 21 | full 22 | true 23 | true 24 | bin\Debug\ 25 | M3U_to_STRM.xml 26 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 27 | 28 | 29 | AnyCPU 30 | pdbonly 31 | false 32 | true 33 | true 34 | bin\Release\ 35 | M3U_to_STRM.xml 36 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 37 | 38 | 39 | On 40 | 41 | 42 | Binary 43 | 44 | 45 | Off 46 | 47 | 48 | On 49 | 50 | 51 | favicon.ico 52 | 53 | 54 | My Project\app.manifest 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | True 82 | Application.myapp 83 | 84 | 85 | True 86 | True 87 | Resources.resx 88 | 89 | 90 | True 91 | Settings.settings 92 | True 93 | 94 | 95 | 96 | 97 | 98 | VbMyResourcesResXFileCodeGenerator 99 | Resources.Designer.vb 100 | My.Resources 101 | Designer 102 | 103 | 104 | 105 | 106 | 107 | MyApplicationCodeGenerator 108 | Application.Designer.vb 109 | 110 | 111 | SettingsSingleFileGenerator 112 | My 113 | Settings.Designer.vb 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /M3U_to_STRM/Module1.vb: -------------------------------------------------------------------------------- 1 | Imports System.IO 2 | Imports System.Net 3 | Imports System.Text.RegularExpressions 4 | 5 | Module Module1 6 | 7 | Sub Main() 8 | Try 9 | Console.WriteLine("© by TimTester visit https://IPTV-Oscam-Shop.com") 10 | 11 | Dim counter_Filme As Integer = 0 12 | Dim counter_Serien As Integer = 0 13 | Dim counter_TV As Integer = 0 14 | Dim counter_errors As Integer = 0 15 | 16 | Dim Main_folder As String = System.AppDomain.CurrentDomain.BaseDirectory 17 | Dim conf_file As String = Main_folder + "\M3U_to_STRM.conf" 18 | Dim local_m3u As String = Main_folder + "\M3U.m3u" 19 | 20 | Console.WriteLine("Reading config") 21 | If My.Computer.FileSystem.FileExists(conf_file) = False Then 22 | Console.ForegroundColor = ConsoleColor.Red 23 | Console.WriteLine("Config file missing!") 24 | Console.WriteLine("Please create the config file: " + conf_file) 25 | Console.WriteLine("And paste the M3U download URL in the config file") 26 | Console.ForegroundColor = ConsoleColor.White 27 | Else 28 | Console.WriteLine("Downloading M3U") 29 | Dim M3U_URL As String = My.Computer.FileSystem.ReadAllText(conf_file) 30 | If My.Computer.FileSystem.FileExists(local_m3u) Then 31 | My.Computer.FileSystem.DeleteFile(local_m3u) 32 | End If 33 | 34 | 'My.Computer.Network.DownloadFile(M3U_URL, local_m3u) 35 | 36 | Dim downloader_M3U As WebClient 37 | downloader_M3U = New WebClient 38 | downloader_M3U.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)") 39 | downloader_M3U.DownloadFile(New Uri(M3U_URL), local_m3u) 40 | 41 | 42 | Console.WriteLine("Download complete") 43 | End If 44 | 45 | 46 | 47 | 'Datei lesen 48 | Dim folder_Filme As String = Main_folder + "\Filme" 49 | Dim folder_Serien As String = Main_folder + "\Serien" 50 | Dim folder_TV As String = Main_folder + "\TV" 51 | 'Verzeichnisse vorher leeren 52 | Console.WriteLine("Delete (Y/N)?") 53 | Console.WriteLine("If no entry is made for 20 seconds, the system continues without deleting.") 54 | Console.WriteLine("Please enter Y or N.!") 55 | Dim del As String = Reader.ReadLine(20000) 56 | If del.ToLower = "y" Then 57 | Console.WriteLine("Deleting files and folders, this may takes a while!") 58 | If My.Computer.FileSystem.DirectoryExists(folder_Filme) Then 59 | My.Computer.FileSystem.DeleteDirectory(folder_Filme, FileIO.DeleteDirectoryOption.DeleteAllContents) 60 | End If 61 | If My.Computer.FileSystem.DirectoryExists(folder_Serien) Then 62 | My.Computer.FileSystem.DeleteDirectory(folder_Serien, FileIO.DeleteDirectoryOption.DeleteAllContents) 63 | End If 64 | If My.Computer.FileSystem.DirectoryExists(folder_TV) Then 65 | My.Computer.FileSystem.DeleteDirectory(folder_TV, FileIO.DeleteDirectoryOption.DeleteAllContents) 66 | End If 67 | End If 68 | 69 | 'Verzeichnisse erstellen 70 | My.Computer.FileSystem.CreateDirectory(folder_Filme) 71 | My.Computer.FileSystem.CreateDirectory(folder_Serien) 72 | My.Computer.FileSystem.CreateDirectory(folder_TV) 73 | 74 | 'For Each f As String In My.Computer.FileSystem.GetFiles(Main_folder) 75 | 'M3U 76 | If My.Computer.FileSystem.FileExists(local_m3u) Then 77 | Dim FileText As String = My.Computer.FileSystem.ReadAllText(local_m3u) 78 | 79 | 80 | Dim FileText_lines As String() = FileText.Split(vbLf) 81 | For index = 1 To FileText_lines.Length - 1 82 | Dim line1 As String = FileText_lines(index) 83 | If line1.ToLower.StartsWith("#extinf:") Then 84 | 85 | Dim line2 As String = FileText_lines(index + 1) 86 | Dim folder As String = "" 87 | Dim NAME As String = "" 88 | Dim URL As String = "" 89 | Try 90 | Dim Start_Name As Integer = line1.IndexOf("tvg-name=") + 10 91 | Dim Start_Logo As Integer = line1.IndexOf("tvg-logo=") + 10 92 | 'Name 93 | NAME = line1.Substring(Start_Name, Start_Logo - Start_Name - 12).Replace("&", "") 94 | 'URL 95 | URL = line2.Replace(vbCrLf, "").Replace(vbCr, "") 96 | URL = URL 97 | 98 | 'Illegale Charakter entfernen 99 | NAME = RemoveIllegalFileNameChars(NAME).Trim() 100 | 101 | 'Gruppe aus URL extrahieren 102 | Dim GROUP As String = "" 103 | If URL.ToLower.Contains("/serie") Then 104 | GROUP = "serien" 105 | End If 106 | If URL.ToLower.Contains("/movie") Then 107 | GROUP = "filme" 108 | End If 109 | 'Prüfen ob Serie oder Film 110 | If GROUP.ToLower.Contains("serien") Then 111 | 'Serien zusammenfassen 112 | folder = folder_Serien & "\" & NAME 113 | folder = Regex.Replace(folder, "s(\d+) e(\d+)", "", RegexOptions.IgnoreCase).Trim 114 | folder = Regex.Replace(folder, "s(\d+)e(\d+)", "", RegexOptions.IgnoreCase).Trim 115 | Console.WriteLine("series: " + NAME + " found") 116 | counter_Serien = counter_Serien + 1 117 | End If 118 | If GROUP.ToLower.Contains("filme") Then 119 | folder = folder_Filme & "\" & NAME 120 | Console.WriteLine("movie: " + NAME + " found") 121 | counter_Filme = counter_Filme + 1 122 | End If 123 | If folder = "" Then 124 | folder = folder_TV & "\" & counter_TV & " " & NAME 125 | NAME = counter_TV & " " & NAME 126 | Console.WriteLine("TV program: " & NAME & " found") 127 | counter_TV = counter_TV + 1 128 | End If 129 | 130 | folder = folder.Trim() 131 | Catch ex As Exception 132 | errHandler(ex, "Failed to parse line: " + line2) 133 | Continue For 134 | End Try 135 | 'Ordner erstellen 136 | Try 137 | If My.Computer.FileSystem.DirectoryExists(folder) = False Then 138 | My.Computer.FileSystem.CreateDirectory(folder) 139 | End If 140 | Catch ex As Exception 141 | errHandler(ex, "Failed to create folder: " + folder) 142 | Continue For 143 | End Try 144 | '.strm Datei erstellen 145 | Try 146 | If My.Computer.FileSystem.FileExists(folder & "\" & NAME & ".strm") = False Then 147 | My.Computer.FileSystem.WriteAllText(folder & "\" & NAME & ".strm", URL, False, Text.Encoding.ASCII) 148 | End If 149 | Catch ex As Exception 150 | errHandler(ex, "Failed to create .strm file: " + folder) 151 | Continue For 152 | End Try 153 | 154 | Else 155 | Continue For 156 | End If 157 | Next 158 | 159 | Console.WriteLine("") 160 | Console.WriteLine("") 161 | Console.WriteLine(counter_Filme & " movies found") 162 | Console.WriteLine(counter_Serien & " series found") 163 | Console.WriteLine(counter_TV & " TV programs found") 164 | Console.WriteLine(counter_errors & " errors") 165 | Console.WriteLine("") 166 | Console.WriteLine("") 167 | 168 | 169 | 170 | End If 171 | 'Next 172 | 173 | 174 | Console.WriteLine("© by TimTester visit https://IPTV-Oscam-Shop.com") 175 | 176 | Console.WriteLine("The program will automatically close in 20 seconds") 177 | Reader.ReadLine(20000) 178 | 179 | 180 | Catch ex As Exception 181 | Console.WriteLine("Fehler: " & ex.Message) 182 | Console.WriteLine("Fehler: " & ex.StackTrace) 183 | Console.ReadLine() 184 | End Try 185 | 186 | 187 | 188 | 189 | End Sub 190 | 191 | Public Function RemoveIllegalFileNameChars(input As String, Optional replacement As String = "") As String 192 | input = Left(input, 85) 193 | input = input.Replace("\", "") 194 | Dim regexSearch = New String(Path.GetInvalidFileNameChars()) & New String(Path.GetInvalidPathChars()) 195 | Dim r = New Regex(String.Format("[{0}]", Regex.Escape(regexSearch))) 196 | Return r.Replace(input, replacement).Replace(".", "").Replace("[", "").Replace("]", "") 197 | End Function 198 | 199 | 200 | 201 | 202 | Private Sub errHandler(ByVal ex As Exception, ByVal msg As String) 203 | Console.ForegroundColor = ConsoleColor.Red 204 | Console.WriteLine(msg) 205 | Console.WriteLine(ex.Message) 206 | Console.WriteLine(ex.StackTrace) 207 | Console.WriteLine(ex.Source) 208 | Console.ForegroundColor = ConsoleColor.White 209 | End Sub 210 | 211 | End Module 212 | -------------------------------------------------------------------------------- /M3U_to_STRM/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | -------------------------------------------------------------------------------- /M3U_to_STRM/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 |  2 | 3 | false 4 | false 5 | 0 6 | true 7 | 0 8 | 2 9 | true 10 | 11 | -------------------------------------------------------------------------------- /M3U_to_STRM/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' Allgemeine Informationen über eine Assembly werden über die folgenden 6 | ' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | ' die einer Assembly zugeordnet sind. 8 | 9 | ' Werte der Assemblyattribute überprüfen 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird. 21 | 22 | 23 | ' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 24 | ' 25 | ' Hauptversion 26 | ' Nebenversion 27 | ' Buildnummer 28 | ' Revision 29 | ' 30 | ' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, 31 | ' indem Sie "*" wie unten gezeigt eingeben: 32 | ' 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /M3U_to_STRM/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My.Resources 16 | 17 | 'This class was auto-generated by the StronglyTypedResourceBuilder 18 | 'class via a tool like ResGen or Visual Studio. 19 | 'To add or remove a member, edit your .ResX file then rerun ResGen 20 | 'with the /str option, or rebuild your VS project. 21 | ''' 22 | ''' A strongly-typed resource class, for looking up localized strings, etc. 23 | ''' 24 | _ 28 | Friend Module Resources 29 | 30 | Private resourceMan As Global.System.Resources.ResourceManager 31 | 32 | Private resourceCulture As Global.System.Globalization.CultureInfo 33 | 34 | ''' 35 | ''' Returns the cached ResourceManager instance used by this class. 36 | ''' 37 | _ 38 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 39 | Get 40 | If Object.ReferenceEquals(resourceMan, Nothing) Then 41 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("M3U_to_STRM.Resources", GetType(Resources).Assembly) 42 | resourceMan = temp 43 | End If 44 | Return resourceMan 45 | End Get 46 | End Property 47 | 48 | ''' 49 | ''' Overrides the current thread's CurrentUICulture property for all 50 | ''' resource lookups using this strongly typed resource class. 51 | ''' 52 | _ 53 | Friend Property Culture() As Global.System.Globalization.CultureInfo 54 | Get 55 | Return resourceCulture 56 | End Get 57 | Set(ByVal value As Global.System.Globalization.CultureInfo) 58 | resourceCulture = value 59 | End Set 60 | End Property 61 | End Module 62 | End Namespace 63 | -------------------------------------------------------------------------------- /M3U_to_STRM/My Project/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /M3U_to_STRM/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.M3U_to_STRM.My.MySettings 68 | Get 69 | Return Global.M3U_to_STRM.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /M3U_to_STRM/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /M3U_to_STRM/My Project/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 59 | 60 | 61 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /M3U_to_STRM/Reader.vb: -------------------------------------------------------------------------------- 1 | Imports System.Threading 2 | 3 | Class Reader 4 | Private Shared inputThread As Thread 5 | Private Shared getInput, gotInput As AutoResetEvent 6 | Private Shared input As String 7 | 8 | Shared Sub New() 9 | getInput = New AutoResetEvent(False) 10 | gotInput = New AutoResetEvent(False) 11 | inputThread = New Thread(AddressOf reader) 12 | inputThread.IsBackground = True 13 | inputThread.Start() 14 | End Sub 15 | 16 | Private Shared Sub reader() 17 | While True 18 | getInput.WaitOne() 19 | input = Console.ReadLine() 20 | gotInput.[Set]() 21 | End While 22 | End Sub 23 | 24 | Public Shared Function ReadLine(ByVal Optional timeOutMillisecs As Integer = Timeout.Infinite) As String 25 | getInput.[Set]() 26 | Dim success As Boolean = gotInput.WaitOne(timeOutMillisecs) 27 | 28 | If success Then 29 | Return input 30 | Else 31 | Return "" 32 | End If 33 | End Function 34 | End Class -------------------------------------------------------------------------------- /M3U_to_STRM/Readme.MD: -------------------------------------------------------------------------------- 1 | # M3U to STRM File for Emby / Jellyfin 2 | 3 | 4 | Import TV & VOD from your IPTV M3U File into Emby / Jellyfin. 5 | 6 | 7 | ### Website / Contact / HowTo / Screenshots 8 | ### [TimTester.in](https://timtester.in/programs/m3u-to-strm-file-for-emby-jellyfin/) 9 | 10 | -------------------------------------------------------------------------------- /M3U_to_STRM/Screenshot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timtester123/M3U_to_STRM/7f790eca088af69051810467bc7c3cfe6de69f0f/M3U_to_STRM/Screenshot.PNG -------------------------------------------------------------------------------- /M3U_to_STRM/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timtester123/M3U_to_STRM/7f790eca088af69051810467bc7c3cfe6de69f0f/M3U_to_STRM/favicon.ico -------------------------------------------------------------------------------- /Readme.MD: -------------------------------------------------------------------------------- 1 | # M3U to STRM File for Emby / Jellyfin 2 | 3 | 4 | Import TV & VOD from your IPTV M3U File into Emby / Jellyfin. 5 | 6 | 7 | ### Website / Contact / HowTo / Screenshots 8 | ### [iptv-oscam-shop.com](https://iptv-oscam-shop.com/index.php/m3u-to-strm-file-for-emby-jellyfin/) 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Screenshot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timtester123/M3U_to_STRM/7f790eca088af69051810467bc7c3cfe6de69f0f/Screenshot.PNG -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timtester123/M3U_to_STRM/7f790eca088af69051810467bc7c3cfe6de69f0f/favicon.ico --------------------------------------------------------------------------------