Dreams From My Computer

code

helper functions

In[]:=
getURLsByDate[historyCSV_String,dateString_String(*"mm/dd/yyyy"*)]:=With[​​ ​​ urls=Rest@Import[historyCSV,{"Data",All,6}],​​ dates=Rest@Import[historyCSV,{"Data",All,3}]​​ ,​​ Last/@Cases[Transpose[{dates,urls}],{dateString,_}]​​];
In[]:=
(*functionsforfilteringimages--couldaddtothislistand/orcleanitup*)​​$filters2Arg={"CommonestFilter","CornerFilter","CurvatureFlowFilter","DifferentiatorFilter","EntropyFilter","FourierDCTFilter","GaussianFilter","GeometricMeanFilter","GradientFilter","GradientOrientationFilter","HarmonicMeanFilter","HighpassFilter","HilbertFilter","KalmanFilter","KuwaharaFilter","LaplacianFilter","LaplacianGaussianFilter","LowpassFilter","MaxFilter","MeanFilter","MedianFilter","MinFilter","NonlocalMeansFilter","PeronaMalikFilter","PIDDerivativeFilter","RangeFilter","RidgeFilter","TotalVariationFilter","WienerFilter"};​​$filters3Arg={"ArrayFilter","BandpassFilter","BandstopFilter","BilateralFilter","CurvatureFlowFilter","DerivativeFilter","DifferentiatorFilter","GaborFilter","GaussianFilter","GuidedFilter","HighpassFilter","HilbertFilter","ImageFileFilter","ImageFilter","ImageSaliencyFilter","ITKConfidenceConnectedFilter","ITKConnectedThresholdFilter","ITKCurvatureAnisotropicDiffusionFilter","ITKCurvatureFlowFilter","ITKCurvesLevelSetFilter","ITKGeodesicActiveContourLevelSetFilter","ITKIsolatedConnectedFilter","ITKLevelSetFilter","ITKMeanDistanceRGBFilter","ITKMinMaxCurvatureFlowFilter","ITKMorphologicalWatershedFromMarkersImageFilter","ITKNarrowBandCurvesLevelSetFilter","ITKShapeDetectionLevelSetFilter","ITKWatershedImageFilter","LinearFilter","LowpassFilter","MeanShiftFilter","NonlocalMeansFilter","PeronaMalikFilter","PIDDerivativeFilter","RecurrenceFilter","StandardDeviationFilter","WienerFilter"};​​$filterFncs=​​ $filters2Arg/.(h_StringHold[Symbol[h][#,RandomInteger[{1,10}]]&]),​​ $filters3Arg/.(h_StringHold[Symbol[h][#,RandomInteger[{1,10}],RandomInteger[{1,10}]]&])​​//ReleaseHold;
In[]:=
$debugQ=True;​​debugPrint[args___]:=If[$debugQ,Print[args]];

dreaming function

In[]:=
(*maindreamingfunction*)​​ClearAll[dream]​​dream[historyCSV_String,dateString_:Automatic(*"mm/dd/yyyy"*)]:=Quiet@TimeConstrained[Module[​​ {urls,numUrls,urlImages,thumbnails,numThumbnails,filters,filteredThumbnails,startTime,endTime},​​ ​​ debugPrint["----------------"<>dateString<>"----------------"];​​ startTime=Now;(*importtheurlsinthecsvfilethatwerevisitedontheinputteddate(or,bydefault,today)*)​​ urls=getURLsByDate[historyCSV,dateString/.(AutomaticStringJoin[Riffle[RotateLeft[StringSplit[DateString[Today,"ISODate"],"-"]],"/"]])];​​ ​​ (*removesensitivesites(internalWolframstuff)*)​​ urls=Select[urls,StringFreeQ["internal.wolfram"|"bugs.wolfram"|"bizi.wolfram"|"ultipro"|"stash.wolfam"]];​​ ​​ If[MatchQ[urls,{__String}],​​ debugPrint["imported URLs"],​​ debugPrint["failed to import URLs"];​​ If[$debugQ,Echo[urls,"urls"]];​​ Return[$Failed]​​ ];​​ ​​ (*pullalltheimagesfromarandomselectionoftheurls*)​​ numUrls=RandomInteger[Floor[Length[urls]/4]];​​ urlImages=Flatten[Import[#,"Images"],numUrls]&/@RandomSample[urls];​​ ​​ (*cleanurlImagesbyremovingfailedimageimportsor(some)blankimages-mayneedtoaddmorehereasotherfailureshappen*)​​ urlImages=Cases[DeleteCases[Flatten[urlImages],_Flatten|_String|Image[RawArray["UnsignedInteger8",{{{255,255,255,0}}}],"Byte",ColorSpace"RGB",InterleavingTrue]],_Image];​​ ​​ If[$debugQ&&MatchQ[urlImages,{__Image}],​​ debugPrint["imported Images from URLs"],​​ debugPrint["failed to import Images from URLs"];​​ If[$debugQ,Echo[DeleteDuplicates[Head/@urlImages],"cleaned urlImages Heads"]];​​ Return[$Failed]​​ ];​​ ​​ (*convertimagestorandomlycroppedthumbnails*)​​ thumbnails=ImageCrop[Thumbnail[#,IncludeMetaInformationNone],RandomInteger[{50,100},2]]&/@urlImages;​​ ​​ (*getrandomsampleof(randomly-chosen)thumbnails-anotherlayerofrandomness*)​​ numThumbnails=RandomInteger[Length[thumbnails]];​​ thumbnails=RandomSample[thumbnails,numThumbnails];​​ ​​ If[$debugQ&&MatchQ[thumbnails,{__Image}],​​ debugPrint["converted Images to Thumbnails"],​​ debugPrint["failed to convert Images to Thumbnails"];​​ If[$debugQ,Echo[DeleteDuplicates[Head/@thumbnails],"thumbnails Heads"]];​​ Return[$Failed]​​ ];​​ ​​ (*getrandomselectionoffilters,paddingwithIdentityasnecessary*)​​ filters=PadRight[Flatten[RandomSample[$filterFncs,Min[numThumbnails,Length[$filterFncs]]]],numThumbnails,Identity];​​ ​​ (*applyrandomfilterstorandomthumbnails,excludinganythatdon'tapplynicely*)​​ filteredThumbnails=Cases[Quiet@Check[#1[#2],None]&@@@Transpose[{filters,thumbnails}],_Image];​​ ​​ If[$debugQ&&MatchQ[filteredThumbnails,{__Image}],​​ debugPrint["applied filters to Thumbnails"],​​ debugPrint["failed to apply filters to Thumbnails"];​​ If[$debugQ,Echo[DeleteDuplicates[Head/@filteredThumbnails],"filteredThumbnails Heads"]];​​ Return[$Failed]​​ ];​​ ​​ endTime=Now;​​ ​​ debugPrint[Row[{"Ellapsed time: ",DateDifference[startTime,endTime,"Minute"]}]];​​ ​​ (*displaythethumbnailsbyrandomlyplacingtheminagraphic*)​​ Graphics[Inset[#,RandomInteger[{-50,50},2]]&/@filteredThumbnails,ImageSizeLarge] ​​],1800,debugPrint["Timed out (30 min)"];$Failed]

examples

In[]:=
(*example:12/14/22-12/22/22*)​​dates=Flatten[StringJoin["12/",ToString[#],"/2022"]&/@Range[14,22]];​​dreams=dream["history.csv",#]&/@dates;
----------------12/14/2022----------------
imported URLs
imported Images from URLs
converted Images to Thumbnails
applied filters to Thumbnails
Ellapsed time:
1.17635
min
----------------12/15/2022----------------
imported URLs
imported Images from URLs
converted Images to Thumbnails

collected results

December 14

December 15

December 18

December 19

December 20