Skip to content

Instantly share code, notes, and snippets.

View pietrocaselani's full-sized avatar

Pietro Caselani pietrocaselani

View GitHub Profile
@pietrocaselani
pietrocaselani / main-strava-pedals-of-year.py
Created December 18, 2024 23:25
Get pedal activities from Strava
import requests
import os
from datetime import datetime, timezone
from dotenv import load_dotenv
from strava_oauth import get_tokens
# Carrega as variáveis do arquivo .env
load_dotenv()
# Lê os dados de configuração do app Strava do arquivo .env
@pietrocaselani
pietrocaselani / 1-subtitles-downloader-readme
Last active December 15, 2024 02:56
Script to download subtitles from all movies in a folder
# Subtitles Downloader
This script downloads subtitles for video files from various sources like OpenSubtitles and TheSubDB. It is designed to fetch the best subtitle available for a video file in your chosen language, specifically for **Portuguese (Brazil)** in this setup.
## Dependencies
This script requires the following Python libraries:
- **subliminal**: A Python library for subtitle downloading.
- **babelfish**: A library to handle language codes.
- **click**: A command-line utility to manage arguments (optional for advanced use).
import RxSwift
import RxTest
import XCTest
@testable import ExampleFramework
final class MoviesDefaultViewModelTests: XCTestCase {
private var scheduler: TestScheduler!
private var observer: TestableObserver<MovieViewState>!
private var disposeBag: DisposeBag!
@pietrocaselani
pietrocaselani / MovieDefaultViewModel.swift
Created June 3, 2018 18:44
Testes unitários no iOS sem medo de ser feliz
import RxSwift
public final class MoviesDefaultViewModel: MoviesViewModel {
private let viewStateSubject = BehaviorSubject<MovieViewState>(value: .loading)
private let disposeBag = DisposeBag()
private let repository: MoviesRepository
public init(repository: MoviesRepository) {
self.repository = repository
}
@pietrocaselani
pietrocaselani / MovieContract.swift
Created June 3, 2018 18:43
Testes unitários no iOS sem medo de ser feliz
import RxSwift
public enum MovieViewState: Hashable {
case loading
case error(error: Error)
case showingMovies(titles: [String])
case empty
public var hashValue: Int {
switch self {
@pietrocaselani
pietrocaselani / ThreadWithRunLoopScheduler.swift
Created February 18, 2018 16:54
RxSwift scheduler with run loop
final class ThreadWithRunLoopScheduler: ImmediateSchedulerType {
private let thread: ThreadWithRunLoop
init(name: String) {
thread = ThreadWithRunLoop()
thread.name = name
thread.start()
}
func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {
@pietrocaselani
pietrocaselani / ThreadWithRunLoop.swift
Created February 18, 2018 16:51
Thread + RunLoop to work with Realm and RxSwift
final class ThreadWithRunLoop: Thread {
var runLoop: RunLoop!
override func main() {
runLoop = RunLoop.current
runLoop.add(Port(), forMode: .commonModes)
runLoop.run()
}
}
@pietrocaselani
pietrocaselani / RealmSchedulerWrong.swift
Created February 18, 2018 16:17
Realm + RxSwift in the wrong way!
let realmQueue = DispatchQueue(label: "RealmQueue", qos: .background)
let realmScheduler = SerialDispatchQueueScheduler(queue: realmQueue, internalSerialQueueName: "RealmScheduler")
@pietrocaselani
pietrocaselani / Example.swift
Last active January 4, 2019 03:35
Carlos + Moya + Rx
func example() -> Single<String> {
let cache = MemoryCacheLevel()
.compose(DiskCacheLevel<GithubService, NSData>())
.compose(MoyaFetcher(provider: provider))
return cache.get(GithubService.zen)
.asObservable()
.map { data -> String in
guard let string = String(data: data as Data, encoding: .utf8) else {
throw MappingError.string(data)
<a id="url_install" href="itms-services://?action=download-manifest&url=https://ios.agilepromoter.com.br/_replace_me_/manifest.plist">
<script type="text/javascript">
window.onload = function() {
var path = window.location.pathname;
path = path.substring(1, path.length - 1);
var linkElement = document.getElementById("url_install");
var iOSURL = linkElement.getAttribute("href")