ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

DonationCoder.com Software > Post New Requests Here

Transfer all the opened urls to a folder

<< < (2/3) > >>

IainB:
Refer: Re: Firefox Extensions: Making use of OneTab

4wd:
I think what he wants is that all opened tabs are created as individual Internet shortcuts within a folder on the Desktop.

IainB:
^^ You could be correct!    :D

4wd:
Stupid me, this post should have been in this thread.

4wd:
An updated version of the script in this post, now handles Firefox, Pale Moon, IceDragon, Cyberfox, SeaMonkey, and K-Meleon (and more if you add the relevant code).

UPDATED: Generates text file URI list and/or folder with shortcuts.

Transfer all the opened urls to a folder

Requirements:
Powershell v3+


--- Code: PowerShell ---<#.SYNOPSIS   Reads Firefox compatible JSON session file and creates URI shortcuts in a folder on the Desktop..DESCRIPTION   See above..PARAMETER <paramName>   None.EXAMPLE   C:\> powershell.exe -sta -noprofile -executionpolicy bypass -File ".\JSON2Shortcut.ps1"#> Function Create-File {  $file = ("Tabs-" + "{0:yyyy}" -f (Get-Date)) + ("{0:MM}" -f (Get-Date)) + ("{0:dd}" -f (Get-Date)) `            + ('{0:hh}' -f (Get-Date)) + ('{0:mm}' -f (Get-Date)) + ('{0:ss}' -f (Get-Date)) + '.txt'  $desktop = [Environment]::GetFolderPath("Desktop") # Our new file path  $tFile = $desktop + '\' + $file# Create the file  New-Item -Path $tFile -ItemType File | Out-Null  Return $tFile} Function Create-Folder {# Create a folder on the Desktop based on current date/time  $folder = ("Tabs-" + "{0:yyyy}" -f (Get-Date)) + ("{0:MM}" -f (Get-Date)) + ("{0:dd}" -f (Get-Date)) `            + ('{0:hh}' -f (Get-Date)) + ('{0:mm}' -f (Get-Date)) + ('{0:ss}' -f (Get-Date))  $desktop = [Environment]::GetFolderPath("Desktop")   New-Item -Path $desktop -Name $folder -ItemType Directory | Out-Null # Our new folder path  Return $desktop + '\' + $folder} # Cycles through the Tab entries in Firefox compatible JSON files, (eg. Cyberfox, Pale Moon, IceDragon)Function Cycle-TabsFf {  Param(    [string]$tPath="",    [string]$uriFile=""  )# Cycle through the Tabs object only getting the Entries for non-Hidden ones  for($i=0; $i -lt $opentabs.windows.tabs.Count; $i++) {    if (!$opentabs.windows.tabs.hidden[$i]) {      if ($Cb_Shortcut.IsChecked) {        Create-Shortcut $tPath $opentabs.windows.tabs[$i].entries[-1].title.Trim() $opentabs.windows.tabs[$i].entries[-1].url      }      if ($Cb_File.IsChecked) {        Out-File -Encoding utf8 -FilePath $uriFile -InputObject $opentabs.windows.tabs[$i].entries[-1].url -Append      }    }  }} # Cycles through the Tab entries in K-Meleon compatible JSON filesFunction Cycle-TabsKm {  Param(    [string]$tPath="",    [string]$uriFile=""  )  $opentabs.sessions[-1].windows.tabs.Count# Cycle through the Tabs  for($i=0; $i -lt $opentabs.sessions[-1].windows.tabs.Count; $i++) {    if ($Cb_Shortcut.IsChecked) {      Create-Shortcut $tPath $opentabs.sessions[-1].windows.tabs[$i].entries[-1].title.Trim() $opentabs.sessions[-1].windows.tabs[$i].entries[-1].url    }    if ($Cb_File.IsChecked) {      Out-File -Encoding utf8 -FilePath $uriFile -InputObject $opentabs.sessions[-1].windows.tabs[$i].entries[-1].url -Append    }  }} Function Create-Shortcut {  Param(    [string]$Path,    [string]$Title,    [string]$url  )  if ($Title.Length -gt 15) { $Title = $Title.Substring(0, 15) }  $Title = $Path + '\' + $Title + '_' + (Get-Random -Maximum 1000) + '.url' # Create a Shortcut with Windows PowerShell using Windows Scripting interface  $WScriptShell = New-Object -ComObject WScript.Shell  $Shortcut = $WScriptShell.CreateShortcut($Title)  $Shortcut.TargetPath = $url  $Shortcut.Save()} Function Remove-InvalidFileNameChars {  param(    [Parameter(Mandatory=$true,      Position=0,      ValueFromPipeline=$true,      ValueFromPipelineByPropertyName=$true)]    [String]$Name  )   $invalidChars = [IO.Path]::GetInvalidFileNameChars() -join ''  $re = "[{0}]" -f [RegEx]::Escape($invalidChars)  return ($Name -replace $re)} Function Read-JSON {  Param(    [string]$file  )  if (!(Test-Path -Path $file)) { Exit }  $global:opentabs = (Get-Content $file) -join "`n" | ConvertFrom-Json} Function Load-Dialog {  Param(    [Parameter(Mandatory=$True,Position=1)]    [string]$XamlPath  )   [xml]$Global:xmlWPF = Get-Content -Path $XamlPath   #Add WPF and Windows Forms assemblies  try{    Add-Type -AssemblyName PresentationCore,PresentationFramework,WindowsBase,system.windows.forms  } catch {    Throw "Failed to load Windows Presentation Framework assemblies."  }   #Create the XAML reader using a new XML node reader  $Global:xamGUI = [Windows.Markup.XamlReader]::Load((new-object System.Xml.XmlNodeReader $xmlWPF))   #Create hooks to each named object in the XAML  $xmlWPF.SelectNodes("//*[@Name]") | %{    Set-Variable -Name ($_.Name) -Value $xamGUI.FindName($_.Name) -Scope Global  }} # Check Powershell version, ConvertFrom-JSON requires v3+If($PSVersionTable.PSVersion.Major -lt 3) {  (new-object -ComObject wscript.shell).Popup("Script requires Powershell V3",0,"OK")  Exit} # Read JSON2Shortcut.ini file for paths of JSON files for various browsersGet-Content "JSON2Shortcut.ini" | foreach-object -begin {$h=@{}} -process { $k = [regex]::split($_,'='); `  if(($k[0].CompareTo("") -ne 0) -and ($k[0].StartsWith("[") -ne $True)) { $h.Add($k[0], $k[1]) } }# $h.Get_Item("Firefox")  #Required to load the XAML form and create the PowerShell VariablesLoad-Dialog -XamlPath '.\JSON2Shortcut.xaml' #Events$Bt_Firefox.add_Click({  Read-Firefox $h.Get_Item("Firefox")  if ($Cb_Shortcut.IsChecked -or $Cb_File.IsChecked) {    if ($Cb_Shortcut.IsChecked) {$scPath = Create-Folder}    if ($Cb_File.IsChecked) {$scFile = Create-File}    Cycle-TabsFf $scPath $scFile  }}) $Bt_Palemoon.add_Click({  Read-JSON $h.Get_Item("Palemoon")  if ($Cb_Shortcut.IsChecked -or $Cb_File.IsChecked) {    if ($Cb_Shortcut.IsChecked) {$scPath = Create-Folder}    if ($Cb_File.IsChecked) {$scFile = Create-File}    Cycle-TabsFf $scPath $scFile  }}) $Bt_Cyberfox.add_Click({  Read-JSON $h.Get_Item("Cyberfox")  if ($Cb_Shortcut.IsChecked -or $Cb_File.IsChecked) {    if ($Cb_Shortcut.IsChecked) {$scPath = Create-Folder}    if ($Cb_File.IsChecked) {$scFile = Create-File}    Cycle-TabsFf $scPath $scFile  }}) $Bt_IceDragon.add_Click({  Read-JSON $h.Get_Item("IceDragon")  if ($Cb_Shortcut.IsChecked -or $Cb_File.IsChecked) {    if ($Cb_Shortcut.IsChecked) {$scPath = Create-Folder}    if ($Cb_File.IsChecked) {$scFile = Create-File}    Cycle-TabsFf $scPath $scFile  }}) $Bt_SeaMonkey.add_Click({  Read-JSON $h.Get_Item("SeaMonkey")  if ($Cb_Shortcut.IsChecked -or $Cb_File.IsChecked) {    if ($Cb_Shortcut.IsChecked) {$scPath = Create-Folder}    if ($Cb_File.IsChecked) {$scFile = Create-File}    Cycle-TabsFf $scPath $scFile  }}) $Bt_KMeleon.add_Click({  Read-JSON $h.Get_Item("Kmeleon")  if ($Cb_Shortcut.IsChecked -or $Cb_File.IsChecked) {    if ($Cb_Shortcut.IsChecked) {$scPath = Create-Folder}    if ($Cb_File.IsChecked) {$scFile = Create-File}    Cycle-TabsKm $scPath $scFile  }}) #Launch the window$xamGUI.ShowDialog() | out-null
Installation/Execution:

* Extract all files in the archive to a folder
* Edit JSON2Shortcut.ini so that it has the correct paths for each browser, (you can use full paths or wildcards as long as it can hit the right file)
* Double-click the shortcut icon to run
DISCLAIMER: Works for me.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version