Skip to content

Instantly share code, notes, and snippets.

View wfranck's full-sized avatar

Walter J. Franck wfranck

View GitHub Profile
@wfranck
wfranck / unified_m3u_list.m3u
Created April 4, 2026 02:17
unified m3u list
This file has been truncated, but you can view the full file.
#EXTM3U
#EXTINF:-1 tvg-id="156" tvg-name="+ Listas en M3U.CL" tvg-logo="https://cdn.m3u.cl/logo/156___Listas_en_M3U_CL.png" x-source="AR | BO | BR | CL | CO | DO | EC | ES | MX | PE | PY | VE | musica | total",+ Listas en M3U.CL ✪ | CL
https://scl.edge.grupoz.cl/transmision/live/playlist.m3u8?PlaylistM3UCL
#EXTINF:-1 tvg-id="858" tvg-name="Canal 5 del Pueblo" tvg-logo="https://cdn.m3u.cl/logo/858_Canal_5_del_Pueblo.png" x-source="AR | total",Canal 5 del Pueblo ✪ | AR
https://stmv4.voxtvhd.com.br/canal5pueblo/canal5pueblo/playlist.m3u8?PlaylistM3UCL
#EXTINF:-1 tvg-id="219" tvg-name="Crossing TV" tvg-logo="https://cdn.m3u.cl/logo/219_Crossing_TV.png" x-source="AR | telechancho-infinity | total",Crossing TV ✪ | AR
https://stmv6.voxtvhd.com.br/crossingtv/crossingtv/playlist.m3u8?PlaylistM3UCL
#EXTINF:-1 tvg-id="768" tvg-name="Milennio TV" tvg-logo="https://cdn.m3u.cl/logo/768_Milennio_TV.png" x-source="AR | total",Milennio TV ✪ | AR
https://stmvideo6.livecastv.com/milennio/milennio/playlist.m3u8?PlaylistM3UCL
@wfranck
wfranck / clonaci-n-de-voz-y-gpt-4-by-dotcsv.ipynb
Created September 21, 2023 14:35
Clonación de voz y GPT-4 | By DotCSV
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@wfranck
wfranck / MyLifecycleOwner.kt
Created May 18, 2023 16:43 — forked from handstandsam/MyLifecycleOwner.kt
Jetpack Compose OverlayService. You have to have all the correct permissions granted and in your manifest, but if you do, this this will show a green box with "Hello" in it!
import android.os.Bundle
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleRegistry
import androidx.savedstate.SavedStateRegistry
import androidx.savedstate.SavedStateRegistryController
import androidx.savedstate.SavedStateRegistryOwner
internal class MyLifecycleOwner : SavedStateRegistryOwner {
private var mLifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this)
private var mSavedStateRegistryController: SavedStateRegistryController = SavedStateRegistryController.create(this)
@wfranck
wfranck / SwipeableCards.kt
Created April 13, 2023 14:45
SwipeableCards.kt updated
package com.example.swipeablecards
import androidx.compose.animation.core.*
import androidx.compose.animation.splineBasedDecay
import androidx.compose.foundation.background
import androidx.compose.foundation.gestures.awaitFirstDown
import androidx.compose.foundation.gestures.verticalDrag
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
@wfranck
wfranck / ThisIsFineAnim.kt
Last active December 12, 2022 13:38
This Is Fine. using imageVector and RenderEffect. Based on https://t.ly/A4Z_
package com.example.testborrarbeta
import android.graphics.RenderEffect
import android.graphics.RuntimeShader
import android.os.Build
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.annotation.RequiresApi
import androidx.compose.animation.core.Animatable
@wfranck
wfranck / avd_loading_bar.xml
Created September 1, 2020 02:00 — forked from nickbutcher/avd_loading_bar.xml
A prototype of a loading indicator utilizing repeated gradients. See https://twitter.com/crafty/status/914830571196571648
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License
@wfranck
wfranck / androidScreenSize
Last active August 29, 2015 14:14
android size screen in inch
//detecta pulgadas para saber si es tablet
double size = 0;
DisplayMetrics metrics = getResources().getDisplayMetrics();
float screenWidth = metrics.widthPixels / metrics.xdpi;
float screenHeight = metrics.heightPixels / metrics.ydpi;
size = Math.sqrt(Math.pow(screenWidth, 2) + Math.pow(screenHeight, 2));
if (size > 6) {
Toast.makeText(this, "ES TABLET" , Toast.LENGTH_LONG).show();
}
private void enableHTML5AppCache() {
webView.getSettings().setDomStorageEnabled(true);
// Set cache size to 8 mb by default. should be more than enough
webView.getSettings().setAppCacheMaxSize(1024*1024*8);
// This next one is crazy. It's the DEFAULT location for your app's cache
// But it didn't work for me without this line
webView.getSettings().setAppCachePath("/data/data/"+ getPackageName() +"/cache");
@wfranck
wfranck / scalatronFramework.scala
Created June 24, 2012 21:51 — forked from jedws/scalatronFramework.scala
a skeleton start to scalatron framework code
// -------------------------------------------------------------------------------------------------
// Framework
// -------------------------------------------------------------------------------------------------
/** Simple typeclass for turning Strings into things */
trait Mapper[A] extends (String => A)
/** define all the Mapper typeclass instances and generators we need */
object Mapper {
implicit val StringMapper = new Mapper[String] {
def apply(s: String) = s