From 89051f0129845d61d2d1ca53ba9da2d63fee5ba4 Mon Sep 17 00:00:00 2001 From: lolcat Date: Thu, 27 Aug 2026 18:31:35 -0400 Subject: [PATCH] remove cara --- lib/frontend.php | 1 - scraper/cara.php | 847 ----------------------------------------------- settings.php | 4 - 3 files changed, 852 deletions(-) delete mode 100644 scraper/cara.php diff --git a/lib/frontend.php b/lib/frontend.php index f3e91d2..3f7e54a 100644 --- a/lib/frontend.php +++ b/lib/frontend.php @@ -674,7 +674,6 @@ class frontend{ "baidu" => "Baidu", "solofield" => "Solofield", "pinterest" => "Pinterest", - "cara" => "Cara", "flickr" => "Flickr", "pexels" => "Pexels", "pixabay" => "Pixabay", diff --git a/scraper/cara.php b/scraper/cara.php deleted file mode 100644 index ed3d0b5..0000000 --- a/scraper/cara.php +++ /dev/null @@ -1,847 +0,0 @@ -backend = new backend("cara"); - } - - public function getfilters($page){ - - return [ - "sort" => [ - "display" => "Sort by", - "option" => [ - "Top" => "Top", - "MostRecent" => "Most Recent" - ] - ], - "type" => [ - "display" => "Post type", - "option" => [ - "any" => "Any type", - "portfolio" => "Portfolio", // {"posts":["portfolio"]} - "timeline" => "Timeline" // {"posts":["timeline"]} - ] - ], - "fields" => [ - "display" => "Field/Medium", - "option" => [ - "any" => "Any field", - "2D" => "2D Work", - "3D" => "3D Work", - "3DPrinting" => "3D Printing", - "Acrylic" => "Acrylic", - "AlcoholMarkers" => "Alcohol Markers", - "Animation" => "Animation", - "Chalk" => "Chalk", - "Charcoal" => "Charcoal", - "Colored pencil" => "Colored pencil", - "Conte" => "Conte", - "Crayon" => "Crayon", - "Digital" => "Digital", - "Gouache" => "Gouache", - "Ink" => "Ink", - "MixedMedia" => "Mixed-Media", - "Oil" => "Oil", - "Oil-based Markers" => "Oil-based Markers", - "Other" => "Other", - "Pastels" => "Pastels", - "Photography" => "Photography", - "Sculpture" => "Sculpture", - "Sketches" => "Sketches", - "Tattoos" => "Tattoos", - "Traditional" => "Traditional", - "VFX" => "VFX", - "Watercolor" => "Watercolor" - ] - ], - "category" => [ - "display" => "Category", - "option" => [ - "any" => "Any category", - "3DScanning" => "3D Scanning", - "Abstract" => "Abstract", - "Adoptable" => "Adoptable", - "Anatomy" => "Anatomy", - "Animals" => "Animals", - "Anime" => "Anime", - "App" => "App", - "ArchitecturalConcepts" => "Architectural Concepts", - "ArchitecturalVisualization" => "Architectural Visualization", - "AugmentedReality" => "Augmented Reality", - "Automotive" => "Automotive", - "BoardGameArt" => "Board Game Art", - "BookIllustration" => "Book Illustration", - "CardGameArt" => "Card Game Art", - "CeramicsPottery" => "Ceramics/Pottery", - "CharacterAnimation" => "Character Animation", - "CharacterDesign" => "Character Design", - "CharacterModeling" => "Character Modeling", - "ChildrensArt" => "Children's Illustration", - "Collectibles" => "Collectibles", - "ColoringPage" => "Coloring Page", - "ComicArt" => "Comic Art", - "ConceptArt" => "Concept Art", - "Cosplay" => "Cosplay", - "CostumeDesign" => "Costume Design", - "CoverArt" => "Cover Art", - "Creatures" => "Creatures", - "Diorama" => "Diorama", - "EditorialIllustration" => "Editorial Illustration", - "EmbroiderySewing" => "Embroidery/Sewing", - "EnvironmentalConceptArt" => "Environmental Concept Art", - "EnvironmentalConceptDesign" => "Environmental Concept Design", - "FanArt" => "Fan Art", - "Fantasy" => "Fantasy", - "Fashion" => "Fashion", - "FashionStyling" => "Fashion Styling", - "FiberArts" => "Fiber Arts", - "Furry" => "Furry", - "GameArt" => "Game Art", - "GameplayDesign" => "Gameplay Design", - "GamesEnvironmentArt" => "Games Environment Art", - "Gem" => "Gem", - "GraphicDesign" => "Graphic Design", - "Handicraft" => "Handicraft", - "HairStyling" => "Hair Styling", - "HardSurface" => "Hard Surface", - "Horror" => "Horror", - "Illustration" => "Illustration", - "IllustrationVisualization" => "Illustration Visualization", - "IndustrialDesign" => "Industrial Design", - "Jewelry" => "Jewelry", - "KnittingCrochet" => "Knitting/Crochet", - "Landscape" => "Landscape", - "LevelDesign" => "Level Design", - "Lighting" => "Lighting", - "Makeup" => "Makeup", - "Manga" => "Manga", - "MapsCartography" => "Maps/Cartography", - "MattePainting" => "Matte Painting", - "Materials" => "Materials", - "MechanicalDesign" => "Mechanical Design", - "Medical" => "Medical", - "Mecha" => "Mecha", - "MiniatureArt" => "Miniature Art", - "MotionGraphics" => "Motion Graphics", - "FrescoMurals" => "Fresco/Murals", - "Natural" => "Natural", - "Original Character" => "Original Character", - "Overlay" => "Overlay", - "PleinAir" => "Plein Air", - "Photogrammetry" => "Photogrammetry", - "PixelArt" => "Pixel Art", - "Portraits" => "Portraits", - "Props" => "Props", - "ProductDesign" => "Product Design", - "PublicDomain" => "Public Domain or Royalty Free", - "Real-Time3DEnvironmentArt" => "Real-Time 3D Environment Art", - "Realism" => "Realism", - "ScienceFiction" => "Science Fiction", - "ScientificVisualization" => "Scientific Visualization", - "Scripts" => "Scripts", - "StillLife" => "Still Life", - "Storyboards" => "Storyboards", - "Stylized" => "Stylized", - "Surreal" => "Surreal", - "TechnicalArt" => "Technical Art", - "Textures" => "Textures", - "Tools" => "Tools", - "Toys" => "Toys", - "ToyPackaging" => "Toy Packaging", - "Tutorials" => "Tutorials", - "UIArt" => "User Interface (UI) Art", - "UrbanSketch" => "Urban Sketch", - "VFXforAnimation" => "VFX for Animation", - "VFXforFilm" => "VFX for Film", - "VFXforGames" => "VFX for Games", - "VFXforRealTime" => "VFX for Real-Time", - "VFXforTV" => "VFX for TV", - "Vehicles" => "Vehicles", - "VirtualReality" => "Virtual Reality", - "VisualDevelopment" => "Visual Development", - "VoxelArt" => "Voxel Art", - "Vtubers" => "Vtubers", - "WIP" => "WIP (Work in Progress)", - "Web" => "Web", - "Weapons" => "Weapons", - "Wildlife" => "Wildlife", - "Woodcutting" => "Woodcutting" - ] - ], - "software" => [ - "display" => "Software", - "option" => [ - "any" => "Any software", - "123D" => "123D", - "123DCatch" => "123D Catch", - "3DBee" => "3DBee", - "3DCoat" => "3DCoat", - "3DCoatPrint" => "3DCoatPrint", - "3DCoatTextura" => "3DCoatTextura", - "3DEqualizer" => "3DEqualizer", - "3DFZephyr" => "3DF Zephyr", - "3Delight" => "3Delight", - "3dpeople" => "3dpeople", - "3dsMax" => "3ds Max", - "3DSPaint" => "3DS Paint", - "ACDSeeCanvas" => "ACDSee Canvas", - "AbletonLive" => "Ableton Live", - "Acrobat" => "Acrobat", - "AdobeDraw" => "Adobe Draw", - "AdobeFlash" => "Adobe Flash", - "AdobeFresco" => "Adobe Fresco", - "AdobeSubstance3Dassets" => "Adobe Substance 3D assets", - "AdobeXD" => "Adobe XD", - "AffinityDesigner" => "Affinity Designer", - "AffinityPhoto" => "Affinity Photo", - "AfterEffects" => "After Effects", - "Akeytsu" => "Akeytsu", - "Alchemy" => "Alchemy", - "AliasDesign" => "Alias Design", - "AlightMotion" => "Alight Motion", - "Amadine" => "Amadine", - "Amberlight" => "Amberlight", - "Animate" => "Animate", - "AnimationMaster" => "Animation:Master", - "AnimeStudio" => "Anime Studio", - "Apophysis" => "Apophysis", - "ArchiCAD" => "ArchiCAD", - "Arion" => "Arion", - "ArionFX" => "ArionFX", - "Arnold" => "Arnold", - "ArtEngine" => "ArtEngine", - "ArtFlow" => "ArtFlow", - "ArtRage" => "ArtRage", - "ArtstudioPro" => "Artstudio Pro", - "Artweaver" => "Artweaver", - "Aseprite" => "Aseprite", - "Audition" => "Audition", - "AutoCAD" => "AutoCAD", - "AutodeskSketchBook" => "Autodesk SketchBook", - "AvidMediaComposer" => "Avid Media Composer", - "AzPainter" => "AzPainter", - "babylonjs" => "babylon.js", - "BalsamiqMockup" => "Balsamiq Mockup", - "Bforartists" => "Bforartists", - "BlackInk" => "Black Ink", - "BlackmagicDesignFusion" => "Blackmagic Design Fusion", - "Blender" => "Blender", - "Blender DeepPaint" => "Blender DeepPaint", - "BlenderGreasePencil" => "Blender Grease Pencil", - "Blockbench" => "Blockbench", - "BodyPaint" => "BodyPaint", - "Boxcutter" => "Boxcutter", - "BraidMaker" => "Braid Maker", - "BrickLinkStudio" => "BrickLink Studio", - "Bridge" => "Bridge", - "Brushifyio" => "Brushify.io", - "C" => "C", - "C#" => "C#", - "C++" => "C++", - "CACANi" => "CACANi", - "CLIPSTUDIOPAINT" => "CLIP STUDIO PAINT", - "CLO" => "CLO", - "CRYENGINE" => "CRYENGINE", - "Callipeg" => "Callipeg", - "Canva" => "Canva", - "CaptureOne" => "Capture One", - "CartoonAnimator" => "Cartoon Animator", - "Carveco" => "Carveco", - "Cavalry" => "Cavalry", - "Chaotica" => "Chaotica", - "CharacterAnimator" => "Character Animator", - "CharacterCreator" => "Character Creator", - "Cinema4D" => "Cinema 4D", - "ClarisseiFX" => "Clarisse iFX", - "Coiffure" => "Coiffure", - "ColorsLive" => "Colors Live", - "Combustion" => "Combustion", - "Construct2" => "Construct 2", - "Core" => "Core", - "CorelPainter" => "Corel Painter", - "CorelDRAWGraphicsSuite" => "CorelDRAW Graphics Suite", - "CoronaRenderer" => "Corona Renderer", - "ProMotionNG" => "Cosmigo Pro Motion NG", - "CrazyBump" => "CrazyBump", - "Crocotile3D" => "Crocotile 3D", - "Curvy3D" => "Curvy 3D", - "Cycles4D" => "Cycles 4D", - "Darkroom" => "Darkroom", - "DAZStudio" => "DAZ Studio", - "DDO" => "DDO", - "DECIMA" => "DECIMA", - "Darktable" => "Darktable", - "DaVinciResolve" => "DaVinci Resolve", - "Dimension" => "Dimension", - "DragonBones" => "DragonBones", - "Dragonframe" => "Dragonframe", - "Drawpile" => "Drawpile", - "Dreams" => "Dreams", - "Dreamweaver" => "Dreamweaver", - "DxOPhotoLab" => "DxO PhotoLab", - "ECycles" => "E-Cycles", - "EmberGen" => "EmberGen", - "Encore" => "Encore", - "Expresii" => "Expresii", - "FStorm" => "FStorm", - "FadeIn" => "FadeIn", - "Feather3D" => "Feather 3D", - "FiberShop" => "FiberShop", - "Figma" => "Figma", - "FilmoraWondershare" => "Filmora Wondershare", - "FilterForge" => "Filter Forge", - "FinalCutPro" => "Final Cut Pro", - "FinalDraft" => "Final Draft", - "finalRender" => "finalRender", - "FireAlpaca" => "FireAlpaca", - "Fireworks" => "Fireworks", - "FlamePainter" => "Flame Painter", - "Flash" => "Flash", - "FlipaClip" => "FlipaClip", - "FlipnoteStudio" => "Flipnote Studio", - "Fluent" => "Fluent", - "ForestPack" => "Forest Pack", - "FormZ" => "Form-Z", - "Fractorium" => "Fractorium", - "FreeCAD" => "FreeCAD", - "FreeHand" => "FreeHand", - "Forger" => "Forger", - "FrostbiteEngine" => "Frostbite Engine", - "fSpy" => "fSpy", - "FumeFX" => "FumeFX", - "Fusion360" => "Fusion 360", - "GIMP" => "GIMP", - "GSCurveTools" => "GS CurveTools", - "GSToolbox" => "GS Toolbox", - "Gaea" => "Gaea", - "GameTextures" => "Game Textures", - "GameMakerStudio" => "GameMaker: Studio", - "GarageFarmNET" => "GarageFarm.NET", - "GeoGlyph" => "GeoGlyph", - "GigapixelAl" => "Gigapixel Al", - "Glaxnimate" => "Glaxnimate", - "GnomePaint" => "Gnome Paint", - "Godot" => "Godot", - "Goxel" => "Goxel", - "Graphite" => "Graphite", - "Graswald" => "Graswald", - "GravitySketch" => "Gravity Sketch", - "GuerillaRender" => "GuerillaRender", - "HDRLightStudio" => "HDR Light Studio", - "HairStrandDesigner" => "Hair Strand Designer", - "HairTGHairFur" => "HairTG - Hair & Fur", - "HairTGSurfaceFeatherEdition" => "HairTG - Surface, Feather Edition", - "HairTGSurfaceHairEdition" => "HairTG - Surface, Hair Edition", - "Handplane" => "Handplane", - "Hansoft" => "Hansoft", - "HardOps" => "Hard Ops", - "HardMesh" => "HardMesh", - "Harmony" => "Harmony", - "HeavypaintWebbypaint" => "Heavypaint/Webbypaint", - "HelloPaint" => "HelloPaint", - "HeliconFocus" => "Helicon Focus", - "Hexels" => "Hexels", - "HiPaint" => "HiPaint", - "Houdini" => "Houdini", - "HydraRenderer" => "Hydra Renderer", - "iArtbook" => "iArtbook", - "IbisPaint" => "ibisPaint", - "Ideas" => "Ideas", - "IllustStudio" => "Illust Studio", - "Illustrator" => "Illustrator", - "IllustratorDraw" => "Illustrator Draw", - "InDesign" => "InDesign", - "Inochi2D" => "Inochi2D", - "InVision" => "InVision", - "InVisionCraft" => "InVision Craft", - "InfinitePainter" => "Infinite Painter", - "Inkscape" => "Inkscape", - "Inspirit" => "Inspirit", - "InstaLOD" => "InstaLOD", - "InstaMAT" => "InstaMAT", - "InstantLightRealtimePBR" => "Instant Light Realtime PBR", - "InstantMeshes" => "Instant Meshes", - "InstantTerra" => "Instant Terra", - "Inventor" => "Inventor", - "Iray" => "Iray", - "JWildfire" => "JWildfire", - "Java" => "Java", - "Jira" => "Jira", - "JumpPaint" => "Jump Paint by MediBang", - "JSPaint" => "JS Paint", - "Katana" => "Katana", - "Keyshot" => "Keyshot", - "KidPix" => "Kid Pix", - "KitBash3D" => "KitBash3D", - "Knald" => "Knald", - "Kodon" => "Kodon", - "KolourPaint" => "KolourPaint", - "Krakatoa" => "Krakatoa", - "KRESKA" => "KRESKA", - "Krita" => "Krita", - "LensStudio" => "Lens Studio", - "LibreSprite" => "LibreSprite", - "LightWave3D" => "LightWave 3D", - "Lightroom" => "Lightroom", - "Linearity" => "Linearity", - "LiquiGen" => "LiquiGen", - "Live2DCubism" => "Live2D Cubism", - "LookatmyHair" => "Look at my Hair", - "Lotpixel" => "Lotpixel", - "Lumion" => "Lumion", - "LuxRender" => "LuxRender", - "MacPaint" => "MacPaint", - "MagicaCSG" => "MagicaCSG", - "MagicaVoxel" => "MagicaVoxel", - "Magma" => "Magma", - "MakeHuman" => "MakeHuman", - "Malmal" => "Malmal", - "Mandelbulb3D" => "Mandelbulb 3D", - "Mandelbulber" => "Mandelbulber", - "MangaStudio" => "Manga Studio", - "Mari" => "Mari", - "MarmosetToolbag" => "Marmoset Toolbag", - "MarvelousDesigner" => "Marvelous Designer", - "MasterpieceStudioPro" => "Masterpiece Studio Pro", - "MasterpieceVR" => "MasterpieceVR", - "Maverick" => "Maverick", - "MaxwellRender" => "Maxwell Render", - "Maya" => "Maya", - "MediBangPaint" => "MediBang Paint", - "MediumbyAdobe" => "Medium by Adobe", - "Megascans" => "Megascans", - "mentalray" => "mental ray", - "MeshLab" => "MeshLab", - "Meshroom" => "Meshroom", - "MetaHumanCreator" => "MetaHuman Creator", - "Metashape" => "Metashape", - "MightyBake" => "MightyBake", - "MikuMikuDance" => "MikuMikuDance", - "Minecraft" => "Minecraft", - "Mischief" => "Mischief", - "Mixamo" => "Mixamo", - "Mixer" => "Mixer", - "MoI3D" => "MoI3D", - "Mocha" => "Mocha", - "Modo" => "Modo", - "Moho" => "Moho", - "MotionBuilder" => "MotionBuilder", - "Mudbox" => "Mudbox", - "Muse" => "Muse", - "MSPaint" => "MS Paint", - "MyPaint" => "MyPaint", - "NDO" => "NDO", - "NX" => "NX", - "NdotCAD" => "NdotCAD", - "NintendoNotes" => "Nintendo Notes", - "NomadSculpt" => "Nomad Sculpt", - "Notability" => "Notability", - "Nuke" => "Nuke", - "Nvil" => "Nvil", - "OctaneRender" => "Octane Render", - "Omniverse" => "Omniverse", - "OmniverseCreate" => "Omniverse Create", - "ON1PhotoRAW" => "ON1 Photo RAW", - "Open3DEngine" => "Open 3D Engine", - "OpenCanvas" => "OpenCanvas", - "OpenGL" => "OpenGL", - "OpenToonz" => "OpenToonz", - "Ornatrix" => "Ornatrix", - "OsciRender" => "Osci-Render", - "OurPaint" => "Our Paint", - "PBRMAX" => "PBRMAX", - "PFTrack" => "PFTrack", - "PTGui" => "PTGui", - "Paintbrush" => "Paintbrush", - "PaintNET" => "Paint.NET", - "PaintShopPro" => "PaintShop Pro", - "PaintToolSAI" => "Paint Tool SAI", - "PaintstormStudio" => "Paintstorm Studio", - "Paper" => "Paper", - "Pencil2D" => "Pencil2D", - "Penpot" => "Penpot", - "PhoenixFD" => "Phoenix FD", - "Phonto" => "Phonto", - "PhotoLab2" => "PhotoLab 2", - "Photopea" => "Photopea", - "Photoscan" => "Photoscan", - "Photoshop" => "Photoshop", - "PhotoshopElements" => "Photoshop Elements", - "PicoCAD" => "picoCAD", - "PicoCAD2" => "picoCAD 2", - "Pinta" => "Pinta", - "Piskel" => "Piskel", - "Pixilart" => "Pixilart", - "Pixelitor" => "Pixelitor", - "Pixelmator" => "Pixelmator", - "Pixelorama" => "Pixelorama", - "PixivSketch" => "pixiv Sketch", - "Pixquare" => "Pixquare", - "PlantCatalog" => "PlantCatalog", - "PlantFactory" => "PlantFactory", - "Plasticity" => "Plasticity", - "PNGtuberPlus" => "PNGtuber Plus", - "Poliigon" => "Poliigon", - "Polybrush" => "Polybrush", - "PopcornFx" => "PopcornFx", - "Poser" => "Poser", - "Premiere" => "Premiere", - "PremiereElements" => "Premiere Elements", - "PresagisCreator" => "Presagis Creator", - "ProTools" => "Pro Tools", - "Procreate" => "Procreate", - "ProcreateDreams" => "Procreate Dreams", - "Producer" => "Producer", - "PrometheanAI" => "Promethean AI", - "PureRef" => "PureRef", - "Python" => "Python", - "PyxelEdit" => "PyxelEdit", - "QuadRemesher" => "Quad Remesher", - "QuarkXPress" => "QuarkXPress", - "Qubicle" => "Qubicle", - "Quill" => "Quill", - "QuixelBridge" => "Quixel Bridge", - "QuixelMegascans" => "Quixel Megascans", - "QuixelMixer" => "Quixel Mixer", - "QuixelSuite" => "Quixel Suite", - "R3DSWrap" => "R3DS Wrap", - "R3DSZWRAP" => "R3DS ZWRAP", - "RDTextures" => "RD-Textures", - "RailClone" => "RailClone", - "RealFlow" => "RealFlow", - "RealisticPaintStudio" => "Realistic Paint Studio", - "RealityCapture" => "RealityCapture", - "RealityScan" => "RealityScan", - "RealtimeBoard" => "Realtime Board", - "Rebelle" => "Rebelle", - "Redshift" => "Redshift", - "RenderMan" => "RenderMan", - "RenderNetwork" => "Render Network", - "Revit" => "Revit", - "Rhino" => "Rhino", - "Rhinoceros" => "Rhinoceros", - "RizomUV" => "RizomUV", - "RoughAnimator" => "Rough Animator", - "SamsungNotes" => "Samsung Notes", - "SamsungPENUP" => "Samsung PENUP", - "ScansLibrary" => "ScansLibrary", - "Scrivener" => "Scrivener", - "Sculpt+" => "Sculpt+", - "Sculptris" => "Sculptris", - "ShaveandaHaircut" => "Shave and a Haircut", - "ShiVa3D" => "ShiVa3D", - "Shotgun" => "Shotgun", - "Silo" => "Silo", - "Silugen" => "Silugen", - "Sketch" => "Sketch", - "SketchApp" => "Sketch App", - "SketchBookPro" => "SketchBook Pro", - "SketchClub" => "SketchClub", - "SketchUp" => "SketchUp", - "Sketchable" => "Sketchable", - "Sketchfab" => "Sketchfab", - "Skyshop" => "Skyshop", - "Snapseed" => "Snapseed", - "Snowdrop" => "Snowdrop", - "Softimage" => "Softimage", - "SolidWorks" => "SolidWorks", - "SonySketch" => "Sony Sketch", - "Soundbooth" => "Soundbooth", - "Source2" => "Source 2", - "SourceControl" => "Source Control", - "SourceFilmmaker" => "Source Filmmaker", - "SpeedTree" => "SpeedTree", - "Speedgrade" => "Speedgrade", - "SpeedyPainter" => "SpeedyPainter", - "Spine2D" => "Spine 2D", - "Spriter" => "Spriter", - "Stingray" => "Stingray", - "Storyboarder" => "Storyboarder", - "StoryboardPro" => "Storyboard Pro", - "SublimeText" => "Sublime Text", - "Substance3DDesigner" => "Substance 3D Designer", - "Substance3DModeler" => "Substance 3D Modeler", - "Substance3DPainter" => "Substance 3D Painter", - "Substance3DSampler" => "Substance 3D Sampler", - "Substance3DStager" => "Substance 3D Stager", - "SubstanceB2M" => "Substance B2M", - "SweetHome3D" => "Sweet Home 3D", - "SynthEyes" => "SynthEyes", - "TTools" => "TTools", - "TVPaint" => "TVPaint", - "TVPaintAnimation" => "TVPaint Animation", - "TayasuiSketches" => "Tayasui Sketches", - "TayasuiSketchesMobileApp" => "Tayasui Sketches Mobile App", - "TayasuiSketchesPro" => "Tayasui Sketches Pro", - "Terragen" => "Terragen", - "Texturescom" => "Textures.com", - "Texturingxyz" => "Texturingxyz", - "TeyaConceptor" => "Teya Conceptor", - "TheGrove3D" => "The Grove 3D", - "TheaRender" => "Thea Render", - "Threejs" => "Three.js", - "Tiled" => "Tiled", - "TiltBrush" => "Tilt Brush", - "Tooll3" => "Tooll3", - "ToonBoomHarmony" => "Toon Boom Harmony", - "ToonBoomStudio" => "Toon Boom Studio", - "ToonSquid" => "ToonSquid", - "TopoGun" => "TopoGun", - "TuxPaint" => "Tux Paint", - "Tvori" => "Tvori", - "Twinmotion" => "Twinmotion", - "UNIGINEEngine" => "UNIGINE Engine", - "UVLayout" => "UVLayout", - "UltraFractal" => "Ultra Fractal", - "uMake" => "uMake", - "Unfold3D" => "Unfold 3D", - "Unity" => "Unity", - "UnrealEngine" => "Unreal Engine", - "Vengi" => "vengi", - "VRay" => "V-Ray", - "VRED" => "VRED", - "VTubeStudio" => "VTube Studio", - "Vectary" => "Vectary", - "VectorayGen" => "VectorayGen", - "Vectorworks" => "Vectorworks", - "VegasPro" => "Vegas Pro", - "VisualDesigner3D" => "Visual Designer 3D", - "VisualStudio" => "Visual Studio", - "VRoidStudio" => "VRoid Studio", - "Vue" => "Vue", - "Vuforia" => "Vuforia", - "WebGL" => "WebGL", - "WhiteboardFox" => "Whiteboard Fox", - "WickEditor" => "Wick Editor", - "Wings3D" => "Wings 3D", - "Word" => "Word", - "WorldCreator" => "World Creator", - "WorldMachine" => "World Machine", - "XParticles" => "X-Particles", - "Xfrog" => "Xfrog", - "Xgen" => "Xgen", - "xNormal" => "xNormal", - "xTex" => "xTex", - "XoliulShader" => "Xoliul Shader", - "Yafaray" => "Yafaray", - "Yeti" => "Yeti", - "ZBrush" => "ZBrush", - "ZBrushCore" => "ZBrushCore", - "ZenBrush" => "Zen Brush" - ] - ] - ]; - } - - private function get($proxy, $url, $get = [], $search){ - - $curlproc = curl_init(); - - if($get !== []){ - $get = http_build_query($get); - $url .= "?" . $get; - } - - curl_setopt($curlproc, CURLOPT_URL, $url); - - curl_setopt($curlproc, CURLOPT_ENCODING, ""); // default encoding - curl_setopt($curlproc, CURLOPT_HTTPHEADER, - ["User-Agent: " . config::USER_AGENT, - "Accept: application/json, text/plain, */*", - "Accept-Language: en-US,en;q=0.5", - "Accept-Encoding: gzip, deflate, br, zstd", - //"sentry-trace: 72b0318a7141fe18cbacbd905572eddf-a60de161b66b1e6f-1 - //"baggage: sentry-environment=vercel-production,sentry-release=251ff5179b4de94974f36d9b8659a487bbb8a819,sentry-public_key=2b87af2b44c84643a011838ad097735f,sentry-trace_id=72b0318a7141fe18cbacbd905572eddf,sentry-transaction=GET%20%2Fsearch,sentry-sampled=true,sentry-sample_rand=0.09967130764937493,sentry-sample_rate=0.5", - "DNT: 1", - "Sec-GPC: 1", - "Connection: keep-alive", - //"Referer: https://cara.app/search?q=jak+and+daxter&type=&sortBy=Top&filters=%7B%7D", - "Referer: https://cara.app/search?q=" . urlencode($search), - //"Cookie: __Host-next-auth.csrf-token=b752c4296375bccb7b480ff010e1e916c65c35c311a4a57ac6cd871468730578%7C4d3783cfb72a98f390e534abd149806432b6cf8d50555a52d00e99216a516911; __Secure-next-auth.callback-url=https%3A%2F%2Fcara.app; crumb=BV0HDt87G5+fOWE0ZDQ5MWM0ZTQ3YTZmMzM4MGU5MGNjNDNmMzY2", - "Sec-Fetch-Dest: empty", - "Sec-Fetch-Mode: cors", - "Sec-Fetch-Site: same-origin", - "TE: trailers"] - ); - - curl_setopt($curlproc, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curlproc, CURLOPT_SSL_VERIFYHOST, 2); - curl_setopt($curlproc, CURLOPT_SSL_VERIFYPEER, true); - curl_setopt($curlproc, CURLOPT_CONNECTTIMEOUT, 30); - curl_setopt($curlproc, CURLOPT_TIMEOUT, 30); - - $this->backend->assign_proxy($curlproc, $proxy); - - $data = curl_exec($curlproc); - - if(curl_errno($curlproc)){ - - throw new Exception(curl_error($curlproc)); - } - - curl_close($curlproc); - return $data; - } - - public function image($get){ - - if($get["npt"]){ - - [$npt, $proxy] = - $this->backend->get( - $get["npt"], - "images" - ); - - $npt = json_decode($npt, true); - }else{ - - $search = $get["s"]; - if(strlen($search) === 0){ - - throw new Exception("Search term is empty!"); - } - - $proxy = $this->backend->get_ip(); - - $npt = [ - "q" => $get["s"], - "sortBy" => $get["sort"], - "take" => 24, - "skip" => 0, - "filters" => [] - ]; - - // parse filters - if($get["type"] != "any"){ - - $npt["filters"]["posts"] = [$get["type"]]; - } - - if($get["fields"] != "any"){ - - $npt["filters"]["fields"] = [$get["fields"]]; - } - - if($get["category"] != "any"){ - - $npt["filters"]["categories"] = [$get["category"]]; - } - - if($get["software"] != "any"){ - - $npt["filters"]["softwares"] = [$get["software"]]; - } - - if($npt["filters"] == []){ - - $npt["filters"] = "{}"; - }else{ - - $npt["filters"] = json_encode($npt["filters"]); - } - } - - $out = [ - "status" => "ok", - "npt" => null, - "image" => [] - ]; - - // https://cara.app/api/search/portfolio-posts?q=jak+and+daxter&sortBy=Top&take=24&skip=0&filters=%7B%7D - try{ - $json = - $this->get( - $proxy, - "https://cara.app/api/search/posts", - $npt, - $npt["q"] - ); - - }catch(Exception $error){ - - throw new Exception("Failed to fetch JSON"); - } - - $json = json_decode($json, true); - - if($json === null){ - - throw new Exception("Failed to decode JSON"); - } - - $imagecount = 0; - foreach($json as $image){ - - if(count($image["images"]) === 0){ - - // sometimes the api returns no images for an object - $imagecount++; - continue; - } - - $cover = null; - $sources = []; - - foreach($image["images"] as $source){ - - if($source["isCoverImg"]){ - - $cover = [ - "url" => "https://images.cara.app/" . $this->fix_url($source["src"]), - "width" => 500, - "height" => 500 - ]; - }else{ - - $sources[] = [ - "url" => "https://images.cara.app/" . $this->fix_url($source["src"]), - "width" => null, - "height" => null - ]; - } - } - - if($cover !== null){ - - $sources[] = $cover; - } - - $out["image"][] = [ - "title" => str_replace("\n", " ", $image["content"]), - "source" => $sources, - "url" => "https://cara.app/post/" . $image["id"] - ]; - - $imagecount++; - } - - if($imagecount === 24){ - - $npt["skip"] += 24; - - $out["npt"] = - $this->backend->store( - json_encode($npt), - "images", - $proxy - ); - } - - return $out; - } - - private function fix_url($url){ - - return - str_replace( - [" "], - ["%20"], - $url - ); - } -} diff --git a/settings.php b/settings.php index 41401aa..8a24302 100644 --- a/settings.php +++ b/settings.php @@ -235,10 +235,6 @@ $settings = [ "value" => "pinterest", "text" => "Pinterest" ], - [ - "value" => "cara", - "text" => "Cara" - ], [ "value" => "flickr", "text" => "Flickr"